Lumen GI 시스템
완전 동적 글로벌 일루미네이션과 리플렉션
Lumen이란?
완전 동적 글로벌 일루미네이션 시스템
Lumen은 UE5의 완전 동적 글로벌 일루미네이션(GI) 및 리플렉션 시스템입니다. 베이크 없이 실시간으로 간접광과 반사를 계산합니다.
/*
┌─────────────────────────────────────────────────────────────┐
│ LUMEN ARCHITECTURE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │Surface Cache│ --> │ Cards │ --> │ Ray Tracing │ │
│ │ (Material) │ │(Capture Pts)│ │(Screen/HW/SW)│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ Surface Cache: 표면 머티리얼 속성 캐싱 (색상, 러프니스) │
│ Cards: 메시별 자동 생성 캡처 포인트 (기본 12개) │
│ Ray Tracing: Screen > Software SDF > Hardware RT │
│ │
└─────────────────────────────────────────────────────────────┘
*/
Screen Traces
화면 공간에서 먼저 지오메트리 검사. 가장 빠르고 정확함.
Software RT (SDF)
Signed Distance Field 기반. GPU에서 실행, 대부분의 하드웨어 지원.
Hardware RT
실제 삼각형 기반. RTX 필요, 최고 품질, 높은 성능 비용.
Lumen 활성화 및 설정
프로젝트 및 레벨 설정
// Project Settings > Engine > Rendering
Global Illumination:
Dynamic Global Illumination Method: Lumen
Reflection Method: Lumen
Lumen:
Software Ray Tracing Mode: Detail Tracing // 또는 Global
Use Hardware Ray Tracing when available: true
// Hardware RT 사용 시
Hardware Ray Tracing:
Support Hardware Ray Tracing: true
Ray Tracing Shader: true
Post Process Volume 설정
// Post Process Volume > Global Illumination
Lumen Global Illumination:
Method: Lumen
Lumen Scene Detail: 1.0 // 0.25 ~ 4.0
Lumen Scene Lighting Quality: 1.0 // 0.5 ~ 4.0
Lumen Scene View Distance: 20000 // 최대 200m (기본)
Final Gather Quality: 1.0
Max Trace Distance: 20000
Lumen Reflections:
Method: Lumen
Reflection Quality: 1.0
Ray Lighting Mode: Surface Cache // 또는 Hit Lighting
Surface Cache와 Cards
Lumen의 핵심 데이터 구조
Surface Cache는 씬의 표면 머티리얼 속성을 캐싱하고, Cards는 각 메시의 간략화된 표현을 제공합니다.
// Surface Cache 시각화
r.Lumen.Visualize.Mode 1 // Surface Cache 보기
r.Lumen.Visualize.Mode 2 // Cards 보기
// 통계 확인
stat LumenScene // Lumen Scene 통계
stat LumenSceneRendering // 렌더링 통계
// 품질 조정
r.Lumen.ScreenProbeGather.ScreenSpaceWeight 0.5
r.Lumen.TraceMeshSDFs 1
메시 최적화 가이드라인
- 벽 두께 — 최소 10cm 이상 (빛 샘 방지)
- 모듈식 설계 — 벽, 바닥, 천장을 개별 메시로 분리
- 대형 모놀리식 피하기 — Distance Field 품질 저하
- Nanite 활용 — Nanite 메시는 Surface Cache 캡처 가속
C++ 프로그래밍
런타임에서 Lumen 제어하기
#include "Components/PostProcessComponent.h"
// Post Process 설정으로 Lumen 품질 조절
void AMyGameMode::SetLumenQuality(float Quality)
{
// 0.0 = Low, 1.0 = High
APlayerController* PC = GetWorld()->GetFirstPlayerController();
if (!PC) return;
APlayerCameraManager* CamManager = PC->PlayerCameraManager;
if (!CamManager) return;
// 콘솔 변수로 품질 조절
static IConsoleVariable* SceneDetail =
IConsoleManager::Get().FindConsoleVariable(
TEXT("r.Lumen.ScreenProbeGather.ScreenSpaceWeight"));
static IConsoleVariable* FinalGatherQuality =
IConsoleManager::Get().FindConsoleVariable(
TEXT("r.Lumen.FinalGatherQuality"));
if (SceneDetail)
{
SceneDetail->Set(FMath::Lerp(0.25f, 1.0f, Quality));
}
if (FinalGatherQuality)
{
FinalGatherQuality->Set(FMath::Lerp(0.5f, 2.0f, Quality));
}
}
// Hardware/Software RT 전환
void AMyGameMode::SetHardwareRayTracing(bool bEnable)
{
static IConsoleVariable* HWRTCVar =
IConsoleManager::Get().FindConsoleVariable(
TEXT("r.Lumen.HardwareRayTracing"));
if (HWRTCVar)
{
HWRTCVar->Set(bEnable ? 1 : 0);
}
}
Emissive 라이트 제어
// Emissive 머티리얼의 Lumen 영향
void AEmissiveActor::SetEmissiveIntensity(float Intensity)
{
if (UMaterialInstanceDynamic* MID = DynamicMaterial)
{
// Emissive 강도 변경 - Lumen이 자동으로 반영
MID->SetScalarParameterValue(TEXT("EmissiveIntensity"), Intensity);
// 매우 밝은 Emissive는 Lumen GI에 영향
// 단, 너무 작은 면적은 노이즈 발생 가능
}
}
성능 최적화
Lumen 성능 튜닝
| 스케일러빌리티 | 목표 성능 | 대상 |
|---|---|---|
| High | 60 FPS | 대규모 오픈월드, 차세대 콘솔 |
| Epic | ~8ms @ 1080p | 실내 씬, 고품질 |
| Cinematic | 비실시간 | 오프라인 렌더링 |
// 품질 vs 성능 트레이드오프
// Final Gather 품질 (0.5 ~ 4.0)
r.Lumen.FinalGatherQuality 1.0
// 씬 디테일 (0.25 ~ 4.0)
r.Lumen.ScreenProbeGather.ScreenSpaceWeight 0.5
// 최대 트레이스 거리
r.Lumen.MaxTraceDistance 20000
// Software RT 해상도
r.Lumen.ScreenProbeGather.RadianceCache.NumProbesToTraceBudget 200
// 리플렉션 품질
r.Lumen.Reflections.ScreenSpaceWeight 0.5
Hardware Ray Tracing은 최고 품질을 제공하지만, RTX 3070 이상급 GPU가 권장됩니다. 대규모 오픈월드에서는 Software RT + 최적화된 설정이 더 실용적일 수 있습니다.
핵심 요약
- Lumen — 완전 동적 GI/리플렉션, 베이크 불필요
- 트레이싱 계층 — Screen > Software SDF > Hardware RT
- Surface Cache — 표면 속성 캐싱, Cards로 간략화
- 메시 설계 — 벽 두께 10cm+, 모듈식, Nanite 활용
- 성능 튜닝 — Final Gather Quality, Scene Detail 조절
도전 과제
배운 내용을 직접 실습해보세요
Project Settings > Rendering에서 Global Illumination Method를 Lumen으로 설정하세요. RPG 던전 내부에 Point Light를 배치하고, Lumen의 실시간 GI 바운스가 간접광을 생성하는 것을 확인하세요.
금속 갑옷과 물웅덩이에 Lumen Reflection을 적용하세요. Reflection Method를 Lumen으로 설정하고, 머티리얼의 Roughness/Metallic 값에 따른 반사 품질 차이를 확인하세요.
stat Lumen 명령으로 GI와 리플렉션의 GPU 비용을 분석하세요. r.Lumen.TraceMeshSDFs.Allow, r.Lumen.ScreenProbeGather.ScreenSpaceTracingStepCount를 조정하여 오픈월드에서의 최적 설정을 찾으세요.