PART 2 · 강의 3/7

Lumen GI 시스템

완전 동적 글로벌 일루미네이션과 리플렉션

01

Lumen이란?

완전 동적 글로벌 일루미네이션 시스템

Lumen은 UE5의 완전 동적 글로벌 일루미네이션(GI) 및 리플렉션 시스템입니다. 베이크 없이 실시간으로 간접광과 반사를 계산합니다.

Lumen 아키텍처 /* ┌─────────────────────────────────────────────────────────────┐ │ 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 필요, 최고 품질, 높은 성능 비용.

02

Lumen 활성화 및 설정

프로젝트 및 레벨 설정

Project Settings // 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 // 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
03

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

메시 최적화 가이드라인

💡 Lumen 친화적 메시 설계
  • 벽 두께 — 최소 10cm 이상 (빛 샘 방지)
  • 모듈식 설계 — 벽, 바닥, 천장을 개별 메시로 분리
  • 대형 모놀리식 피하기 — Distance Field 품질 저하
  • Nanite 활용 — Nanite 메시는 Surface Cache 캡처 가속
04

C++ 프로그래밍

런타임에서 Lumen 제어하기

C++ #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 라이트 제어

C++ // Emissive 머티리얼의 Lumen 영향 void AEmissiveActor::SetEmissiveIntensity(float Intensity) { if (UMaterialInstanceDynamic* MID = DynamicMaterial) { // Emissive 강도 변경 - Lumen이 자동으로 반영 MID->SetScalarParameterValue(TEXT("EmissiveIntensity"), Intensity); // 매우 밝은 Emissive는 Lumen GI에 영향 // 단, 너무 작은 면적은 노이즈 발생 가능 } }
05

성능 최적화

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 + 최적화된 설정이 더 실용적일 수 있습니다.

SUMMARY

핵심 요약

  • Lumen — 완전 동적 GI/리플렉션, 베이크 불필요
  • 트레이싱 계층 — Screen > Software SDF > Hardware RT
  • Surface Cache — 표면 속성 캐싱, Cards로 간략화
  • 메시 설계 — 벽 두께 10cm+, 모듈식, Nanite 활용
  • 성능 튜닝 — Final Gather Quality, Scene Detail 조절
PRACTICE

도전 과제

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

실습 1: Lumen GI 기본 설정

Project Settings > Rendering에서 Global Illumination Method를 Lumen으로 설정하세요. RPG 던전 내부에 Point Light를 배치하고, Lumen의 실시간 GI 바운스가 간접광을 생성하는 것을 확인하세요.

실습 2: Lumen 리플렉션 및 머티리얼 설정

금속 갑옷과 물웅덩이에 Lumen Reflection을 적용하세요. Reflection Method를 Lumen으로 설정하고, 머티리얼의 Roughness/Metallic 값에 따른 반사 품질 차이를 확인하세요.

심화 과제: Lumen 성능 프로파일링

stat Lumen 명령으로 GI와 리플렉션의 GPU 비용을 분석하세요. r.Lumen.TraceMeshSDFs.Allow, r.Lumen.ScreenProbeGather.ScreenSpaceTracingStepCount를 조정하여 오픈월드에서의 최적 설정을 찾으세요.