MegaLights 개요
수백 개의 동적 그림자 광원을 일정한 성능 비용으로
등장 배경
| 기존 Deferred Shading | MegaLights |
|---|---|
| 라이트 수 비례 GPU 비용 | 일정한 GPU 비용 |
| 품질 일정 | 품질 비례 조명 복잡도 |
| 개별 라이트 렌더링 | 단일 샘플링 패스 |
MegaLights는 스토캐스틱 직접 조명 시스템으로, 수백 개의 동적 그림자 광원을 일정한 성능 비용으로 처리합니다. "라이트의 Nanite"라고도 불립니다.
버전 히스토리
Experimental -> UE 5.6
Experimental -> UE 5.7
Beta
아키텍처 개요
MegaLights 렌더링 파이프라인
타일별 라이트 할당 -> Importance
중요도 샘플링 -> Ray Trace
VSM 가시성 확인 -> Denoise
시공간 필터링
- 기존 Deferred: 라이트 N개 x 전체 픽셀 = O(N x P) 비용
- MegaLights: 전체 픽셀 x 고정 샘플 수 = O(P x S) 비용
- 결과: 라이트 수가 증가해도 GPU 비용은 거의 일정
MegaLights의 가시성 테스트는 VSM을 활용합니다. VSM은 Nanite와 최적화되어 있으므로, MegaLights의 그림자 품질은 Nanite 메시에서 가장 좋습니다.
활성화 및 기본 설정
MegaLights 시작하기
// MegaLights 활성화 (프로젝트 설정 또는 콘솔)
r.MegaLights.Allow = 1
// 개별 라이트에서 MegaLights 사용
// Light 컴포넌트 -> Shadows -> Use MegaLights
// 기본 품질 설정
r.MegaLights.NumSamplesPerPixel = 8 // 기본
r.MegaLights.DownsampleMode = 0 // 풀 해상도
// 디노이저 설정
r.MegaLights.Denoiser = 1 // 시공간 디노이저
| 시나리오 | MegaLights | 기존 방식 | 권장 |
|---|---|---|---|
| 라이트 10개 미만 | 이점 적음 | 충분 | 기존 방식 |
| 라이트 50~100개 | 효율적 | 비용 증가 | MegaLights |
| 라이트 100개+ | 필수 | 비실용적 | MegaLights |
MegaLights는 VSM이 활성화되어 있어야 합니다. r.Shadow.Virtual.Enable = 1이 전제 조건입니다. 또한 Nanite 메시에서 그림자 품질이 가장 좋으므로 가능한 모든 메시를 Nanite화하세요.
핵심 요약
- MegaLights는 스토캐스틱 조명으로 일정한 GPU 비용
- 수백 개 동적 그림자 광원 처리 가능
- UE 5.5 Experimental -> 5.7 Beta
- VSM 활성화가 전제 조건, Nanite 메시에서 최적
도전 과제
배운 내용을 직접 실습해보세요
50개 이상의 Point Light가 있는 실내 씬에서 r.MegaLights.Allow를 0과 1로 전환하면서 ProfileGPU로 조명 패스 비용을 비교하세요.
라이트를 10, 50, 100, 200개로 증가시키면서 MegaLights ON/OFF 상태에서의 GPU 비용 변화를 측정하세요. MegaLights의 일정한 비용 특성을 직접 확인하세요.
대규모 도시 씬에서 건물 내부에 수백 개의 동적 그림자 광원을 배치하고, MegaLights + VSM + Nanite 조합으로 60fps를 달성하는 설정을 찾으세요. r.MegaLights.NumSamplesPerPixel과 r.MegaLights.DownsampleMode를 조절하여 품질과 성능의 최적점을 도출하세요.