PART 6 - 강의 3/4

VSM 통합

MegaLights와 Virtual Shadow Maps 연동

01

MegaLights + VSM

VSM 보조 섀도잉 // VSM을 보조 섀도잉 방법으로 사용 가능 장점: - 전체 Nanite 디테일 캡처 - 면적 그림자 근사 단점: - 라이트당 추가 비용 (메모리, CPU, GPU) - 섀도우 맵 생성 오버헤드
02

VSM 가시성 테스트

MegaLights의 그림자 판정 메커니즘

MegaLights는 각 샘플 레이의 가시성 테스트에 VSM을 활용합니다. 레이가 광원을 향해 발사될 때 VSM에서 해당 방향의 깊이를 조회하여 차폐 여부를 결정합니다.

VSM 가시성 테스트 흐름
[픽셀] -> 중요 광원 선택 -> VSM 깊이 조회 -> 차폐 여부 판정 -> 조명 기여 계산 VSM에 해당 페이지가 없으면: -> 가시성 = 1 (보수적 판정) -> 다음 프레임에 페이지 할당 요청
VSM 페이지 할당과 MegaLights

MegaLights가 많은 라이트를 처리할수록 VSM 페이지 수요도 증가합니다. 각 라이트는 자체 VSM을 가지므로, 활성 라이트 수에 비례하여 물리 페이지 풀이 필요합니다.

03

성능 균형 전략

VSM 비용과 MegaLights 품질 조절

VSM + MegaLights 통합 설정 // MegaLights + VSM 통합 최적화 // 1. VSM 페이지 풀 확보 (라이트 수에 비례) r.Shadow.Virtual.MaxPhysicalPages = 4096 // 50+ 라이트 r.Shadow.Virtual.MaxPhysicalPages = 8192 // 100+ 라이트 // 2. 로컬 라이트 VSM 제한 r.Shadow.Virtual.MaxPhysicalPagesLocal = 512 // 3. 그림자 거리 제한 (먼 라이트는 그림자 비활성화) // Light 컴포넌트 -> Shadow Max Distance 활용 // 4. 캐싱 적극 활용 r.Shadow.Virtual.Cache = 1 r.Shadow.Virtual.Cache.StaticSeparate = 1
라이트 수 권장 MaxPhysicalPages 예상 VRAM
~50 4096 ~256MB
~100 6144 ~384MB
200+ 8192 ~512MB
04

프로파일링 및 디버깅

MegaLights + VSM 통합 성능 분석

프로파일링 명령어 // MegaLights GPU 비용 확인 ProfileGPU // MegaLights 패스 확인: Sampling, Denoising // VSM 페이지 사용량 확인 stat ShadowRendering // Physical Pages Used가 MaxPhysicalPages에 근접하면 부족 // VSM 시각화 r.Shadow.Virtual.Visualize = 1 // 조명 복잡도 시각화 // 뷰모드 -> Lighting Complexity // 빨간색 영역 = 높은 조명 비용
흔한 문제와 해결책

그림자 깜빡임: 샘플 수 부족 -> NumSamplesPerPixel 증가
체커보드 패턴: VSM 페이지 부족 -> MaxPhysicalPages 증가
조명 노이즈: 디노이저 설정 확인 -> r.MegaLights.Denoiser = 1

SUMMARY

핵심 요약

  • MegaLights는 VSM을 가시성 테스트에 활용
  • Nanite 디테일 완전 캡처로 정밀한 그림자
  • 라이트 수 증가에 따라 VSM 페이지 풀 확대 필요
  • ProfileGPU + stat ShadowRendering으로 통합 프로파일링
PRACTICE

도전 과제

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

실습 1: VSM 페이지 풀 모니터링

MegaLights가 활성화된 씬에서 라이트를 추가하면서 stat ShadowRendering의 Physical Pages Used 변화를 모니터링하세요. 체커보드 패턴이 발생하는 라이트 수를 확인하세요.

실습 2: 그림자 거리 최적화

MegaLights 라이트에 Shadow Max Distance를 설정하여 먼 거리의 그림자를 비활성화하고, VSM 페이지 사용량과 GPU 비용의 감소를 측정하세요.

심화 과제

100개 이상의 동적 그림자 광원이 있는 씬에서 r.Shadow.Virtual.MaxPhysicalPages를 2048, 4096, 8192로 변경하면서 그림자 품질과 VRAM 사용량의 트레이드오프를 분석하세요. 프로젝트의 VRAM 예산에 맞는 최적의 페이지 풀 크기를 결정하세요.