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를 달성할 수 있는지 검증하세요.