PART 5 - 강의 5/5
대규모 월드 최적화
Nanite 필수성, WPO 캐시 관리, Fortnite 사례
01
핵심 원칙
가장 중요
모든 것을 Nanite로!
Non-Nanite는 VSM에서 심각한 성능 문제 발생
02
Fortnite 사례
Fortnite 해결책
// 문제
1. 애니메이션 변형 (주로 나무)
2. 지속적으로 움직이는 태양
// 해결책: Directional Light 캐싱 포기
r.Shadow.Virtual.Cache.ForceInvalidateDirectional = 1
// 모든 것 Nanite화로 Raw 렌더링 성능 확보
03
최적화 체크리스트
VSM 최적화 체크리스트
- 모든 Static Mesh Nanite 활성화
- WPO Disable Distance 설정 (모든 폴리지)
- 정적 WPO에 Shadow Cache Invalidation = Rigid
- 불필요한 동적 그림자 비활성화
- 페이지 풀 크기 모니터링 (체커보드 패턴 = 부족)
- Stat ShadowRendering으로 프로파일링
04
페이지 풀 관리
대규모 월드에서의 메모리 전략
페이지 풀 최적화
// 대규모 월드 VSM 설정
r.Shadow.Virtual.MaxPhysicalPages = 4096 // 기본
// 라이트 수에 따라 조정
// Directional Light만: 2048 충분
// + 50개 Local Light: 4096
// + 100개+ Local Light: 8192
// 페이지 풀 모니터링
stat ShadowRendering
// Physical Pages Used / MaxPhysicalPages 비율 확인
// 90%+ = 부족 위험
// 페이지 풀 시각화
r.Shadow.Virtual.Visualize = 1
대규모 월드 주의사항
World Partition 기반 대규모 월드에서는 스트리밍되는 청크에 따라 활성 라이트 수가 동적으로 변합니다. 최악의 경우(가장 많은 라이트가 활성화되는 지점)에서도 페이지 풀이 충분한지 확인하세요.
SUMMARY
핵심 요약
- Non-Nanite는 VSM 성능의 주적
- 모든 것 Nanite화가 필수
- WPO Disable Distance로 캐시 효율 향상
- 페이지 풀 90% 미만 유지 필요
PRACTICE
도전 과제
배운 내용을 직접 실습해보세요
실습 1: Non-Nanite 영향 측정
씬의 모든 Static Mesh에 Nanite를 활성화한 상태와, 일부를 Non-Nanite로 전환한 상태에서 stat ShadowRendering 비용을 비교하세요. Non-Nanite 비율별 성능 영향을 그래프로 기록하세요.
실습 2: VSM 최적화 체크리스트 적용
대규모 씬에서 VSM 최적화 체크리스트를 순서대로 적용하세요: (1) 모든 메시 Nanite화, (2) WPO Disable Distance 설정, (3) Shadow Cache Invalidation = Rigid, (4) 페이지 풀 모니터링. 각 단계에서의 성능 개선을 측정하세요.
심화 과제
Fortnite 사례를 재현하세요: 움직이는 태양과 대량의 애니메이션 폴리지가 있는 씬에서 r.Shadow.Virtual.Cache.ForceInvalidateDirectional = 1로 Directional Light 캐싱을 포기하는 전략을 적용하고, Nanite의 Raw 렌더링 성능만으로 목표 FPS를 달성할 수 있는지 검증하세요.