LYSC STUDIO

LIST
Cover

루멘(Lumen) 글로벌 일루미네이션 완벽 가이드: 실시간 빛 반사와 하드웨어 레이트레이싱의 융합 및 실무 적용

·UE5 Engine

완전한 동적 라이팅 시대를 연 언리얼 엔진 5의 루멘(Lumen). 소프트웨어 레이트레이싱과 하드웨어 레이트레이싱의 하이브리드 구조를 분석하고, 실시간 글로벌 일루미네이션을 프로젝트에 효과적으로 도입하는 방법을 알아봅니다.

루멘(Lumen)의 핵심 철학: 베이킹(Baking) 시대의 종말

과거 게임 개발 파이프라인에서 '라이트맵 굽기(Lightmap Baking)'는 가장 지루하고 고통스러운 작업 중 하나였습니다. 라이트의 위치를 조금만 옮겨도 수십 분에서 수 시간 동안 맵을 다시 구워야 했고, 동적 객체에는 볼류메트릭 라이트맵을 사용해야만 간접광(Indirect Lighting)을 적용할 수 있었습니다. 루멘(Lumen)은 이러한 제약을 완전히 박살 낸 실시간 글로벌 일루미네이션 및 리플렉션 시스템입니다.

루멘은 태양광의 각도가 변하거나, 벽이 무너지거나, 문이 열리는 등의 모든 동적 변화에 실시간으로 반응하여 간접광을 재계산합니다. 이는 단순히 그래픽 퀄리티의 향상뿐만 아니라, 레벨 디자이너와 라이팅 아티스트가 에디터에서 결과를 즉각적으로 확인하며 작업할 수 있는 '이터레이션 속도의 혁신'을 의미합니다.

루멘의 두 가지 추적 방식: 소프트웨어 레이트레이싱 vs 하드웨어 레이트레이싱

루멘은 폭넓은 하드웨어 호환성과 최고의 품질을 동시에 달성하기 위해 하이브리드 접근 방식을 취합니다.

1. 소프트웨어 레이트레이싱 (Software Ray Tracing)

루멘의 기본 모드인 소프트웨어 레이트레이싱은 전용 RT 코어가 없는 환경에서도 작동합니다. 이를 가능하게 하는 기술적 기반은 거리장(Distance Fields)입니다. 언리얼 엔진은 씬의 각 메시에 대해 메시 디스턴스 필드(Mesh Distance Field, MDF)를 생성하고, 이들을 병합하여 글로벌 디스턴스 필드(Global Distance Field)를 만듭니다.

빛이 반사될 때, 루멘은 이 거리장을 이용해 빛의 경로(Ray)가 씬의 표면과 부딪히는 지점을 매우 빠르게 교차 테스트(Intersection Test)합니다. 그리고 서페이스 캐시(Surface Cache)라는 시스템을 통해 표면의 머티리얼 속성(Albedo, Roughness 등)을 낮은 해상도로 저장해두고, 교차 지점의 색상과 빛 정보를 신속하게 가져옵니다.

2. 하드웨어 레이트레이싱 (Hardware Ray Tracing)

RTX 3000 시리즈 이상과 같은 최신 GPU에서는 하드웨어 레이트레이싱을 활성화하여 루멘의 품질을 극대화할 수 있습니다. 이 모드에서는 거리장 대신 실제 트라이앵글 지오메트리를 대상으로 광선을 추적합니다. 나나이트 씬과 결합될 때는 약간의 꼼수가 필요한데, 나나이트가 렌더링하는 초고해상도 메시를 그대로 광선 추적에 사용하기엔 비용이 너무 크기 때문에 '프록시(Proxy) 메시'를 사용하여 교차 테스트를 진행합니다.

하드웨어 RT는 유리, 거울과 같은 반사율이 높은 표면(Specular Reflection)과 반투명(Translucency) 재질에서의 간접광을 처리할 때 소프트웨어 모드보다 훨씬 뛰어나고 정확한 결과를 보여줍니다.

서페이스 캐시(Surface Cache)와 화면 공간 추적(Screen Traces)

루멘 퍼포먼스의 핵심은 '어디까지 정밀하게 계산할 것인가'에 있습니다. 화면에 직접 보이는 요소는 디테일이 중요하지만, 보이지 않는 곳에서 반사되는 빛은 어느 정도 근사치로 처리해도 인간의 눈은 쉽게 알아차리지 못합니다.

루멘은 스크린 트레이스(Screen Traces)를 우선적으로 사용합니다. 카메라에 렌더링된 현재 프레임의 버퍼를 활용하여 빛의 첫 번째 튕김(Bounce)을 계산합니다. 이는 SSR(Screen Space Reflection)과 유사한 원리입니다. 스크린 트레이스가 실패하는 영역(화면 밖이나 가려진 부분)에 대해서만 앞서 설명한 거리장 추적이나 하드웨어 추적을 수행하고 서페이스 캐시에서 값을 읽어옵니다.

이 서페이스 캐시는 씬을 감싸는 복셀(Voxel) 형태의 카드(Cards)로 구성됩니다. 복잡한 형태의 메시는 여러 장의 카드로 나뉘어 표면 정보가 캡처됩니다. 개발자는 r.Lumen.Visualize.CardPlacement를 통해 카드가 올바르게 생성되었는지 확인하고 최적화해야 합니다.

실무 최적화 팁

  • 내부 공간 라이팅(Interior Lighting): 루멘은 하늘이 열려있는 실외 공간에서는 매우 빠르지만, 좁은 창문 하나로 빛이 들어오는 어두운 실내 공간에서는 노이즈가 발생하고 성능이 저하될 수 있습니다. 이때는 스카이라이트의 강도를 조절하거나, 창문에 디렉셔널 라이트 외에도 보조 라이트를 배치하여 루멘의 연산 부담을 줄여주는 것이 좋습니다.
  • 루멘 씬 뷰포트 활용: Show -> Lumen -> Lumen Scene 뷰모드를 주기적으로 확인하세요. 씬이 서페이스 캐시로 어떻게 표현되고 있는지 확인하여, 분홍색/노란색으로 표시되는 문제 있는 메시를 수정해야 합니다. 보통 메시의 두께가 너무 얇거나 구조가 비정상적으로 복잡할 때 발생합니다.
Implementation C++ / UE5
// 루멘 성능 및 퀄리티 조절 콘솔 커맨드 (PostProcessVolume 설정과 병행)
r.DynamicGlobalIlluminationMethod=1  // 1: Lumen
r.ReflectionMethod=1                 // 1: Lumen
r.Lumen.HardwareRayTracing=1         // 하드웨어 RT 활성화 (지원 GPU 핅요)
r.Lumen.TraceMeshSDFs=1              // 메시 디스턴스 필드 트레이싱 활성화
r.LumenScene.SurfaceCache.CardResolutionScale=0.5 // 서페이스 캐시 텍스처 해상도 조절로 VRAM 확보
루멘을 통해 개발자는 더 이상 라이트맵 굽기에 시간을 낭비할 필요가 없습니다. 동적 환경이 주는 시각적 이점을 최대한 활용해 보세요.