PART 2 - 강의 2/5

머티리얼 제한과 우회

Raster Bin 시스템과 Nanite 머티리얼 최적화 전략을 학습합니다

01

머티리얼 성능 계층

Nanite에서 머티리얼 유형별 성능 차이

성능 순위 (좋음 -> 나쁨)
1. Opaque, No Offsets (최고) -- 기본 래스터화 2. Opaque, Minimal WPO (좋음) -- 제한적 프로그래머블 3. Masked (적게 사용) (보통) -- 알파 테스트 필요 4. Complex Deformed (Heavy WPO) (최악) -- 풀 프로그래머블
핵심 원칙

Nanite에서 최고의 성능을 위해서는 Opaque, 단면, 비마스크 머티리얼을 사용하세요. 프로그래머블 래스터화가 필요한 머티리얼은 추가 비용이 발생합니다.

02

Raster Bin 시스템

머티리얼 특성별 그룹화

Nanite는 머티리얼 특성에 따라 Raster Bin으로 그룹화합니다. 각 고유 조합마다 별도 패스가 필요하여 오버헤드가 증가합니다.

C++ // Raster Bin 결정 요소 struct RasterBin { bool bOpaque; // 불투명 여부 bool bTwoSided; // 양면 여부 bool bMasked; // 마스크드 여부 bool bWPO; // World Position Offset bool bPDO; // Pixel Depth Offset MaterialID; // 머티리얼 식별자 }; // 각 고유 조합마다 별도 패스 필요 -> 오버헤드 증가
Raster Bin 최적화 전략
  • 유사 머티리얼 그룹화 - 같은 Bin의 메시를 가깝게 배치
  • Bin 수 최소화 - 불필요한 머티리얼 변형 피하기
  • 아틀라스 사용 - 여러 텍스처를 하나로 합치기
  • 버텍스 컬러 활용 - 머티리얼 인스턴스 대신 버텍스 데이터
03

지원되지 않는 기능

Nanite 제한사항과 대안

기능 상태 대안
Tessellation 미지원 Nanite Tessellation (5.3+)
Translucency 부분 지원 (5.6+) Masked 또는 Dithered
Vertex Animation WPO로 제한적 Nanite Skinning (5.7)
Skeletal Mesh 실험적 (5.4+) Static Mesh로 변환
UE 5.7 Nanite Skinning

Nanite Skinning은 WPO를 대체하는 시스템으로, 더 정확한 클러스터 바운드 계산과 고정 함수 래스터라이저 사용이 가능합니다. 100,000 본 업데이트가 ~0.1ms(GPU)에 처리됩니다.

04

최적화 체크리스트

머티리얼 최적화 가이드

머티리얼 최적화 체크리스트
  • Opaque 선호 - 불투명 머티리얼이 가장 효율적
  • 단면 사용 - Two-Sided 필요시에만 활성화
  • Masked 최소화 - 정말 필요한 경우만 사용
  • WPO 거리 제한 - WPO Disable Distance 설정 필수
  • 복잡 머티리얼 거리 LOD - 먼 거리에서 단순 머티리얼
  • Raster Bin 모니터링 - r.nanite.showmeshdrawevents 1
프로파일링 // Raster Bin 분포 확인 r.Nanite.ShowMeshDrawEvents = 1 // 머티리얼별 성능 분석 ProfileGPU // Nanite 통계에서 Programmable Raster 확인 NaniteStats
SUMMARY

핵심 요약

  • Opaque + 단면 + 비마스크가 최고 성능
  • Raster Bin은 머티리얼 특성별로 별도 패스 생성
  • Bin 수 최소화를 위해 유사 머티리얼 그룹화
  • Translucency는 5.6+에서 부분 지원, Masked/Dithered 권장
  • Nanite Skinning (5.7)이 WPO의 효율적 대안
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Raster Bin 분석

r.Nanite.ShowMeshDrawEvents = 1을 활성화하고 씬의 Raster Bin 분포를 확인하세요. Opaque, Masked, Two-Sided, WPO 등 각 유형별 Bin 수를 기록하고, 유사 머티리얼을 그룹화하여 Bin 수를 줄이는 실험을 해보세요.

실습 2: Masked 머티리얼 최적화

나뭇잎 등 Masked 머티리얼을 사용하는 폴리지를 배치하고, Dithered Opacity로 대체했을 때의 성능 차이를 ProfileGPU로 비교하세요. NaniteRasterize 패스의 시간 변화에 주목하세요.

심화 과제

텍스처 아틀라스를 사용하여 여러 머티리얼을 단일 머티리얼로 통합하는 실험을 해보세요. 통합 전후의 Raster Bin 수와 NaniteBasePass 비용을 비교하고, 대규모 씬에서의 성능 개선 효과를 측정하세요.