HLOD와 Nanite는 언리얼 엔진에서 메쉬 최적화를 위한 강력한 도구이지만, UE5에서 Nanite가 있다고 해서 HLOD가 완전히 불필요해지는 것은 아닙니다. 오히려 상호 보완적인 관계를 가집니다.
각각의 역할과 왜 상호 보완적인지 설명해 드리겠습니다.
1. Nanite (나나이트)
- 주요 역할: 개별 스태틱 메쉬의 폴리곤 밀도를 무제한으로 높이면서도 성능을 효율적으로 유지하는 데 중점을 둡니다.
- 작동 방식: 메시를 마이크로 트라이앵글 클러스터로 나누고, 카메라에서 보이는 부분만 필요한 수준의 디테일로 실시간 스트리밍 및 렌더링합니다. 컬링, LOD, 텍스처 스트리밍 등을 자동으로 처리합니다.
- 장점:
- 수백만 개의 폴리곤을 가진 고품질 에셋을 쉽게 사용할 수 있습니다.
- 수동 LOD 생성 및 관리의 필요성을 줄여줍니다.
- 드로우콜을 효율적으로 관리합니다.
- 카메라와 가까운 오브젝트의 디테일이 매우 뛰어납니다.
- 단점/제한 사항:
- 스태틱 메쉬에만 적용됩니다. (스켈레탈 메쉬, 월드 파티션 스트리밍 볼륨, 트랜스루슨트 머티리얼, 와이어프레임 렌더링 등에는 적용되지 않습니다.)
- Nanite도 VRAM을 사용하며, 복잡한 씬에서는 VRAM 사용량이 늘어날 수 있습니다.
- 작은 오브젝트나 매우 멀리 있는 오브젝트에는 Nanite 오버헤드가 LOD보다 클 수 있습니다.
- 일부 특정 렌더링 기능(예: 커스텀 뎁스, 픽셀 뎁스 오프셋)과 호환되지 않을 수 있습니다.
2. HLOD (Hierarchical Level of Detail)
- 주요 역할: 멀리 떨어진 수많은 오브젝트들의 렌더링 성능을 최적화하는 데 중점을 둡니다. 개별 메쉬보다는 그룹화된 메쉬(클러스터) 단위로 작동합니다.
- 작동 방식: 멀리 떨어진 여러 스태틱 메쉬들을 하나의 통합된 메쉬와 텍스처로 자동 병합(Bake)하거나, 하나의 프록시 메쉬로 대체합니다. 이를 통해 드로우콜을 크게 줄이고 VRAM 및 CPU 오버헤드를 감소시킵니다.
- 장점:
- 드로우콜 최적화에 매우 효과적입니다. (수많은 작은 오브젝트들이 멀리서 보일 때 하나의 큰 오브젝트로 렌더링)
- CPU 렌더링 쓰레드의 부하를 줄입니다.
- 전체적인 씬의 퍼포먼스를 향상시킵니다.
- 월드 파티션(World Partition) 시스템과 함께 사용될 때 특히 강력합니다. (언리얼 5의 대규모 월드 스트리밍에 필수적인 기능)
- 단점:
- Nanite와 달리 LOD의 품질 손실이 있을 수 있습니다 (특히 베이크된 텍스처의 품질).
- 설정 및 베이킹 프로세스가 필요하며, 결과물을 수동으로 조정해야 할 수도 있습니다.
- 주로 스태틱 메쉬에 적용됩니다.
Nanite와 HLOD의 상호 보완 관계
Nanite는 "각 오브젝트의 디테일 수준을 조절"하는 데 탁월하고, HLOD는 "멀리 있는 수많은 오브젝트를 묶어서 효율적으로 렌더링"하는 데 탁월합니다.
따라서 UE5에서 Nanite가 있어도 HLOD가 필요한 이유는 다음과 같습니다.
- 드로우콜 최적화: Nanite는 개별 메쉬의 드로우콜을 줄이는 데는 효과적이지만, 수백 또는 수천 개의 독립적인 Nanite 메쉬가 멀리 떨어진 곳에 산재해 있을 때는 여전히 많은 드로우콜을 발생시킬 수 있습니다. HLOD는 이 수많은 Nanite 메쉬들을 하나의 덩어리로 묶어 하나의 드로우콜로 처리함으로써 CPU 렌더링 쓰레드의 병목 현상을 해결하는 데 결정적인 역할을 합니다.
- 월드 파티션 시스템과의 시너지: UE5의 대규모 월드를 위한 월드 파티션 시스템은 맵을 그리드로 나누어 스트리밍하는데, 이때 HLOD는 각 그리드의 데이터를 효율적으로 요약하고 관리하는 데 필수적입니다. HLOD 없이는 멀리 있는 그리드의 수많은 오브젝트들을 모두 개별 Nanite 메쉬로 처리해야 하므로 성능 문제가 발생합니다.
- VRAM 및 성능 최적화: HLOD는 베이킹된 낮은 해상도의 텍스처와 단순화된 메쉬를 사용하므로, 멀리서 볼 때 Nanite 메쉬가 가지는 고유의 VRAM 및 연산 오버헤드를 줄일 수 있습니다. (예: 숲 전체가 Nanite로 구성되어 있다면 엄청난 VRAM을 소모할 수 있지만, HLOD로 처리하면 훨씬 효율적입니다.)
- 비-Nanite 오브젝트 처리: HLOD는 Nanite가 적용되지 않는 스켈레탈 메쉬나 다른 유형의 오브젝트(예: 볼류메트릭 클라우드, 파티클 시스템)와 함께 작동하여 씬 전체의 시각적 연속성을 유지하면서도 최적화를 제공합니다.
결론
- 가까운 거리에 있는 고품질 스태틱 메쉬: Nanite를 사용하는 것이 가장 좋습니다.
- 멀리 떨어진 수많은 스태틱 메쉬 (특히 월드 파티션 사용하는 대규모 월드): HLOD를 사용하여 드로우콜을 줄이고 CPU 성능을 최적화하는 것이 필수적입니다. HLOD는 Nanite가 적용된 메쉬들도 그룹화하여 더 효율적으로 처리할 수 있습니다.
따라서 언리얼 엔진 5에서 대규모 환경을 만들고 최적의 성능을 목표로 한다면, Nanite와 HLOD를 함께, 그리고 적절한 상황에 맞춰 사용하는 것이 매우 중요합니다. HLOD는 특히 대규모 오픈 월드의 비저빌리티(visibility) 및 성능 최적화에 여전히 핵심적인 역할을 합니다.
https://www.youtube.com/watch?v=IxBQojuemyE
https://www.youtube.com/watch?v=yyaY_Q7EIUM&t=124s
'언리얼러닝 > 최적화' 카테고리의 다른 글
Unreal 프로젝트 에셋 대량 편집 최적화 (0) | 2025.05.22 |
---|---|
언리얼 최적화 Gemini질문 (0) | 2025.05.22 |
HLOD vs Nanite (0) | 2025.05.22 |
언리얼 엔진이라서 할 수 있는 폴리곤 최적화 (실무 꿀팁) (1) | 2025.05.22 |
최적화 배경모델러 라면 필수로 알아야 하는 최적화 (아틀라스) (0) | 2025.05.22 |