Unity 검색

HDRP 및 URP의 새로운 Unity 터레인 데모 씬 살펴보기

2022년 2월 18일 게임 | 18 분 소요
Unity Terrain Glade
Unity Terrain Glade
다루는 주제
공유

Is this article helpful for you?

Thank you for your feedback!

테크니컬 아티스트가 공유하는 작업 과정을 읽고 유기적인 게임 환경을 저작하는 베스트 프랙티스를 알아보세요.

게임을 위한 고화질 환경을 제작하려면 막대한 작업이 필요합니다. 따라서 유니티는 2021.2 테크 스트림 릴리스에 다양한 업데이트를 도입하였습니다. 새로운 터레인 스탬프 브러시, 개선된 머티리얼 페인팅 관리, 터레인 디테일을 위한 GPU 인스턴싱 기능, SpeedTree 통합을 비롯하여 터레인 제작 경험에 여러 개선 사항이 포함되었습니다. 또한 빠르게 개발을 시작할 수 있도록 무료 Terrain Sample Asset Pack을 업데이트했습니다. 이번 업데이트를 위해 테크니컬 아티스트 팀은 PC와 고사양 콘솔용 Unity HDRP(고해상도 렌더 파이프라인)를 사용해 실감나는 환경 씬을 제작하고 최적화했으며, 크로스 플랫폼 퍼블리싱을 위해 Unity의 URP(유니버설 렌더 파이프라인)로 마이그레이션했습니다. 이제 새로운 Unity 터레인 URP 데모 씬HDRP 데모 씬에 더불어 개발 팁, 요령 및 베스트 프랙티스가 제공됩니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

테크니컬 아티스트 소개

Xiaoxi Liu

안녕하세요. 저는 Xiaoxi Liu입니다. 2018년에 유니티에 테크니컬 아티스트로 입사했으며, 터레인 시스템부터 셰이더 그래프까지 주로 Unity의 다양한 기능과 아티스트 워크플로를 개선하는 업무를 담당해 왔습니다. 여가 시간에는 주로, 매우 활동적인 4살짜리 아들과 야외 활동을 즐깁니다.

Barrington Campbell

안녕하세요. 저는 Barrington Campbell입니다. 2019년에 인턴으로 유니티에 입사했으며, 2020년에 정규직으로 전환되어 테크니컬 아티스트로 일하고 있습니다. 유니티에서는 툴 개발과 사용자 워크플로를 중심으로 터레인 시스템을 개선하는 데 주력하고 있습니다. 개인 시간에는 주로 타임어택 차량을 만들고 주말에 레이싱에 참가합니다.

유기적인 환경 씬 제작에 도움이 되는 유용한 팁

새로운 Terrain Tools로 월드 제작하기

Terrain Tools 패키지는 2021.2 테크 스트림 릴리스에서 처음 정식으로 출시되었으며, 이제 패키지 관리자와 월드 제작 기능 세트를 통해 프로젝트에 설치할 수 있습니다. 패키지에는 월드 제작을 빠르게 수행할 수 있는 예술적인 터레인 페인팅 브러시와 유틸리티 툴이 포함됩니다.

Unity Terrain Satellite

DCC와 함께 사용하기

유니티 테크니컬 아트 팀은 터레인 데모 프로젝트의 사전 제작 단계에서 강조해야 할 몇 가지 주요 요소를 추렸으며, 무엇보다도 세부적인 터레인 하이트맵과 무성한 잎 표현을 우선순위에 올렸습니다.

절차적 터레인 생성 툴인 Gaea를 사용해 고해상도 하이트맵과 스플랫맵을 생성한 다음, 생성된 맵을 Toolbox를 통해 에디터로 임포트했습니다. 터레인 하이트맵의 경우, Import Heightmap 툴을 사용하여 Unity의 4x4 타일 터레인에 4,000 유닛 크기로 적용했습니다. Import Splatmap 툴을 사용하여 타일 터레인에 스플랫맵을 적용했습니다. 이 과정은 프로젝트 초기에 결정되어 Gaea와 Unity 터레인을 함께 사용하는 워크플로를 형성하였습니다. 

Unity로 임포트한 후에는 작업을 바로 시작하기에 적합한 터레인 표면이 제공되었지만, 특정 영역에는 직접 페인팅이 필요했습니다.

하이트맵 스탬프로 페인팅하기

Stamp Terrain 브러시는 터레인 높이 정보를 빠르게 조정하여 사실적인 결과를 얻을 수 있는 뛰어난 툴입니다. Terrain Sample Asset Pack에서 즉시 사용할 수 있는 하이트맵도 릴리스되었으며, DCC에서 직접 하이트맵을 제작할 수도 있습니다.

Terrain Layer 머티리얼로 페인팅하기

Unity의 터레인 머티리얼은 아시다시피 Terrain Layer 에셋으로 구성됩니다. Paint Texture 브러시를 사용하여 씬(Scene) 뷰에서 머티리얼을 선택하고 전환할 수 있으며, Brush Mask Filters와 최근 개선된 Terrain Tools 패키지의 사용자 인터페이스를 사용하여 보다 간편하게 놀라운 결과물을 얻을 수 있습니다. 

예를 들면 Slope 필터를 추가하여 페인팅 영역을 제한할 수 있습니다. 먼저 잔디 머티리얼 레이어를 터레인의 측면에 적용한 다음, Concavity 필터를 사용하여 곡률에 맞게 토양 레이어를 제한합니다. 다른 필터를 비활성화하여 원하는 필터를 분리할 수도 있고, 필요한 경우 필터를 결합할 수도 있습니다.

패키지에는 침식, 노이즈 효과 등의 조형 브러시가 추가로 준비되어 있으며, 최적의 결과물을 얻기 위해 해당 효과를 터레인 제작 플로에 통합할 수 있습니다.

터레인을 무성한 잎으로 덮기

2021.2 릴리스부터 Unity Terrain은 GPU 성능을 활용하여 나뭇잎을 대규모로 렌더링할 수 있으며, 인스턴싱된 디테일을 지원합니다. 잔디나 덤불처럼 빽빽하게 채워야 하는 영역에 유용하게 사용할 수 있습니다.

Unity Terrain Lake

대부분의 PC 플랫폼에서는 수백만 개의 인스턴싱된 디테일을 60fps가 훨씬 넘는 속도로 렌더링할 수 있습니다. 예를 들어 데모 씬의 경우 5,000만 개 이상의 삼각형이 여러 시야각으로 렌더링되어 있습니다. 인스턴싱을 활성화하려면 Edit Details Mesh로 이동해서 Use GPU Instancing박스를 체크합니다.

인스턴싱된 디테일로 고급 셰이딩 제작하기

인스턴싱된 디테일을 사용하면 커스텀 머티리얼을 제작할 수 있으며, 이는 HDRP 또는 URP 작업 시 모두 큰 이점을 제공합니다. 최고 수준의 경험을 구현하려면 셰이더 그래프를 사용하여 잔디 머티리얼을 제작하는 것이 좋습니다. TerrainGrass.shadergraph를 자세히 살펴보겠습니다. 

최근 셰이더 그래프에 추가된 커스텀 인터폴레이터의 지원으로 이제 버텍스 스테이지에서 전반적으로 더 뛰어난 성능으로 버텍스 작업을 완료할 수 있습니다. 이 프로젝트에서는 바람 애니메이션뿐만 아니라, 컬러와 앰비언트 오클루전을 통해 카메라와의 거리에 따른 잔디 페이드 효과에서도 버텍스 스테이지를 활용했습니다. 무작위화로 인한 높은 인스턴스 수를 비롯하여 개별 잔디 오브젝트를 선택하고 배치할 수 있는 기능을 고려해 볼 때, 바람의 흔들림이나 그 아래 위치한 터레인과의 컬러 블렌딩 같은 멋진 위치 기반 효과를 셰이더에서 생성할 수 있습니다.

한 가지 주목할 점은 LOD Group 컴포넌트가 터레인 디테일과 호환되지 않는다는 점입니다. 하지만 디테일을 위해 프리팹을 사용할 수 있으며 셰이더 그래프의 셰이더나 터레인의 Detail Distance 설정을 통해 컬링 거리를 조정할 수 있습니다.

SpeedTree 사용하기

Unity Terrain Forest

나무는 사실적인 환경을 만드는 데 필수적인 요소입니다. 데모 씬에는 규모와 관계없이 거의 모든 프로젝트에서 절차적 제너레이터로 고성능 초목을 생성할 수 있는 모델러인 SpeedTree로 생성된 다양한 커스텀 나무가 포함되어 있습니다. 셰이더 그래프가 통합됨에 따라, Unity에서 SpeedTree의 바람과 색조 배리에이션, 빌보드 렌더링 등 모든 기능이 포함된 셰이더를 즉시 활용할 수 있습니다. 편집 가능한 머티리얼 인스턴스와 유사하게 셰이더 그래프의 셰이더는 커스터마이즈가 가능하므로, 새로운 셰이더를 프로젝트에 저장하고 원하는 대로 편집할 수 있습니다. 커스터마이즈하려면 Import SettingsExtract Materials로 이동합니다.

나무와 디테일은 기존 페인팅 워크플로와 유사하게 일반적으로 Paint TreesPaint Details 브러시를 각각 사용해 페인팅합니다. Terrain Tools에서 제공하는 브러시 API를 사용하여 커스텀 브러시를 제작해도 됩니다. 그런 다음 프로젝트에 Terrain Module을 레퍼런스합니다.

인스턴싱된 디테일 지원과 SpeedTree 통합 덕분에, 셰이더 그래프에서 고급 커스터마이징을 활용하여 터레인 나뭇잎을 제작할 수 있습니다. 이 내용은 작년에 Siggraph에서 다룬 바 있으며, 여기에서 여러 추가 정보를 확인할 수 있습니다.

HDRP에서 광원 정확도 높이기

Unity Terrain Hillside

Unity 2021.2의 HDRP를 사용하면 새로운 볼류메트릭 구름 시스템을 사용해 사실적이고 역동적인 하늘을 제작할 수 있습니다. 특히 HDRP의 Physical Sky 시스템은 물리적으로 정확한 하늘 광원을 생성할 수 있는 표준 파라미터를 제공합니다. 

씬에서 제작하려는 낮 환경을 보면, 태양의 강도는 대기의 감쇠 효과를 제외하고 예상되는 값(13만 럭스)으로 설정되어 있으며, 색 온도는 5,800K의 흑체에 가까운 값으로 설정되어 있습니다. 포스트 프로세싱을 통해 물리적 카메라에서와 마찬가지로 색온도를 보정할 수 있습니다.

카펫처럼 깔린 잔디에는 그림자를 추가하지 않는 것이 좋습니다. 그림자를 추가하면 렌더링 스레드에서 리소스를 많이 소모할 뿐 아니라, 실제 잔디와 다른 느낌을 줍니다. 따라서 데모에서는 더 적은 리소스로 훨씬 뛰어난 비주얼을 제작하기 위해 Terrain Detail 오브젝트에 컨택트 섀도우 등 적절한 조명과 그림자를 구현하는 몇 가지 기술을 사용했습니다.

잔디나 키가 작은 식물 등의 Terrain Detail 오브젝트는 모두 렌더링 성능을 높이기 위해 씬의 앰비언트 프로브를 공유합니다. 이러한 오브젝트는 하늘에서 직사광선을 받기 때문에 결과물이 너무 밝게 나올 수 있습니다. 이 문제를 해결하기 위해 별도의 '베이킹 스카이(baking sky)' 볼륨을 사용했습니다. 덕분에 앰비언트 프로브를 생성할 때 사용되는 하늘의 노출을 줄여 씬에서 하늘의 모습을 시각적으로 수정하지 않고도 잔디가 받는 조명의 강도를 줄일 수 있었습니다.

HDRP에서 URP로 터레인 마이그레이션하기

스크립터블 렌더 파이프라인 모두에서 터레인 데모를 만드는 것이 목표였으며, 결과적으로 팀은 훌륭한 학습 기회를 가질 수 있었습니다. 

앞서 살펴본 것처럼 TerrainData 에셋은 HDRP 프로젝트와 URP 프로젝트에서 공유할 수 있습니다. HDRP 프로젝트에서 터레인을 먼저 구성했으며, 머티리얼 및 나뭇잎 매스아웃(foliage massout) 단계에 이어 TerrainData 에셋을 URP 프로젝트로 가져왔습니다. 터레인 타일을 프리팹으로 전환하여 URP 통합에 걸리는 시간을 줄였습니다.

터레인의 스케일과 해상도는 두 프로젝트에서 같은 값으로 설정되어 있지만, 최적의 화질을 위해 HDRP에서는 높이 기반 머티리얼 블렌딩 모드를, URP에서는 기본 알파 블렌딩 모드를 사용했습니다. 참고로 HDRP에서는 최대 8개의 터레인 레이어를 블렌딩할 수 있습니다. 

가장 최신의 렌더링 기능을 최대한 활용하기 위해 두 프로젝트 모두에서 조명과 포스트 프로세싱을 정교하게 설정했습니다. HDRP 프로젝트에서는 앞서 언급한 것처럼 볼류메트릭 구름과 절차적 하늘을 설정했습니다. URP 프로젝트에서는 절차적 하늘을 텍스처로 베이킹하여 HDRI 하늘로 사용했습니다.

안개는 각각 다르게 처리했습니다. 호수 주변에 낮게 깔린 안개의 경우, HDRP에서는 볼류메트릭 포그를 사용했지만, URP에서는 비주얼 이펙트 그래프로 커스텀 파티클 효과를 제작했습니다.

다음은 각 렌더 파이프라인에 사용한 기능을 비교한 표입니다.

Unity Terrain comparison table

Unity 터레인 프로젝트의 성능 극대화하기

실시간 인터랙티브 3D 경험에서 성능은 매우 중요한 요소입니다. 이 프로젝트에서는 성능 개선을 위해 여러 방법을 사용했습니다. HDRPURP의 렌더 파이프라인 에셋을 사용하면 다양한 타겟 플랫폼에 대해 커스텀 설정을 지정할 수 있습니다. URP 터레인 씬을 예로 들면, 고품질 에셋과 저품질 에셋을 제작했으며, 고해상도 섀도우 맵과 HDR 기능은 고품질 버전에서만 적용됩니다. 이렇게 하면 Project Settings 창Quality 설정에서 각 타겟 플랫폼에 따라 쉽게 설정할 수 있습니다. 실제로 에디터에서 작업 중인 씬의 다양한 설정을 바로 변경하거나 미리 볼 수 있습니다. Graphics 설정에서 렌더 파이프라인 에셋만 바꾸면 됩니다.

성능 확보를 위한 Project Level 설정 외에도 터레인에서 여러 콘텐츠를 최적화했습니다. HDRP 터레인 씬에서 멀리 있는 외부 터레인 타일의 해상도를 낮춘 것이 한 예입니다. 하지만 이러한 해상도 변경은 터레인 페인팅 작업이 완료된 이후에 해야 합니다. 페인팅을 완료하기 전에 해상도를 변경할 경우, 주변 타일과 함께 해당 타일을 페인팅하면 해상도 차이로 인해 타일이 균일하지 않게 보일 수 있습니다.

빽빽하게 표현된 디테일은 보통 저사양 플랫폼에서 성능 문제를 일으키는 주범입니다. 메시 버텍스 수를 낮게 유지하는 것이 중요합니다. HDRP 씬에서는 디테일 밀도를 0.75로 설정하고 중앙 터레인 타일의 컬링 거리를 145m로 가까이 설정했습니다. 밀도나 컬링 거리 파라미터를 조절하면 적당한 수치를 찾을 수 있습니다. 또한, 일부 성능 향상을 위해 LOD와 빌보드가 더 빠르게 렌더링되도록 나무의 LOD 거리를 미세 조정할 수도 있습니다.

URP를 사용하고 있고 GPU 인스턴싱을 지원하지 않거나 하드웨어 대역폭이 매우 제한된 플랫폼을 대상으로 개발 중이라면, 터레인 디테일 렌더링에 Vertex Lit 모드를 사용할 수도 있습니다. 하지만 인스턴싱된 디테일과 달리, Vertex Lit 모드는 그림자나 양면 렌더링, 알파 클리핑을 지원하지 않습니다.

더 자세한 내용을 알아보려면 이 블로그 포스팅과 Unite Now 동영상(한국어 자막)에서 더 많은 성능 최적화 팁을 확인해 보세요.

지금 시작하기

에셋 스토어로 이동해 데모 씬을 Unity 2021.2 프로젝트로 임포트하면, HDRPURP를 위한 최신 Unity 터레인 데모 씬에 액세스할 수 있습니다. 씬을 충분히 살펴본 다음 Worldbuilding 포럼에서 의견을 공유해 주세요. 

앞으로 출시될 기능에 대해 미리 알고 싶다면 Unity 로드맵을 참고하세요.

마지막으로, 유니티의 테크니컬 아트 팀은 현재 채용 중에 있습니다. 유니티 웹사이트에서 채용 공고를 확인하세요. 많은 지원 부탁드립니다.

2022년 2월 18일 게임 | 18 분 소요

Is this article helpful for you?

Thank you for your feedback!

다루는 주제