루멘의 기술적 디테일

루멘 글로벌 일루미네이션과 리플렉션 시스템의 기술적 기능과 사양 개요입니다.

Windows
MacOS
Linux

루멘은 글로벌 일루미네이션과 리플렉션을 해결하기 위해 다수의 레이 트레이싱 방식들을 사용합니다. 스크린 트레이싱 먼저 완료된 후, 좀 더 안정적인 방식을 사용합니다.

루멘은 기본적으로 부호화된 디스턴스 필드를 통해 소프트웨어 레이 트레이싱(Software Ray Tracing) 을 사용하지만, 지원되는 그래픽 카드에서 하드웨어 레이 트레이싱(Hardware Ray Tracing) 을 활성화하면 더 높은 퀄리티를 달성할 수 있습니다.

루멘의 글로벌 일루미네이션과 리플렉션의 주요 목표는 차세대 콘솔에서 거대한 오픈 월드를 60fps로 실행할 수 있게 지원하는 것입니다. 엔진의 높음(High) 퀄리티 레벨은 루멘에서 60fps를 목표로 하는 세팅을 포함합니다.

루멘의 두 번째 목표는 차세대 콘솔에서 선명한 30fps 실내 라이팅을 실현하는 것입니다. 엔진의 에픽(Epic) 퀄리티 레벨은 차세대 콘솔에서 1080p 내부 해상도로 글로벌 일루미네이션과 리플렉션을 약 8ms로 생성하며, 템포럴 슈퍼 해상도(Temporal Super Resolution)를 통해 네이티브 4K에 근접한 퀄리티를 보여줍니다.

표면 캐시

루멘은 표면 캐시(Surface Cache) 라는 주변 씬의 표면에 대한 자동 파라미터화를 생성합니다. 씬에서 레이가 닿는 지점의 라이팅을 빠르게 확인할 때 사용합니다. 루멘은 각 메시의 머티리얼 프로퍼티를 여러 각도에서 캡처합니다. (카드(Cards) 로 불리는) 이 캡처 포지션은 각 메시에서 오프라인으로 생성됩니다. `r.Lumen.Visualize.CardPlacement 1`으로 시각화할 수 있습니다.

나나이트는 메시 캡처를 가속하여 표면 캐시와 트라이앵글 씬의 동기화를 유지합니다. 특히 하이 폴리 메시는 효율적인 캡처를 위해 나나이트를 사용해야 합니다.

표면 캐시가 머티리얼 프로퍼티로 채워진 뒤, 루멘이 해당 표면 위치의 직접광과 간접광을 계산합니다. 이러한 업데이트는 여러 프레임에 걸쳐 이뤄져서 여러 다이내믹 라이트와 여러 번 반사되는 글로벌 일루미네이션을 효율적으로 지원합니다.

언리얼 엔진에는 표면 캐시 및 카드 표현용 시각화 모드가 있습니다. 자세한 정보는 이 페이지의 루멘 시각화 옵션을 참조하세요.

인테리어가 단순한 메시만 지원되며 벽, 바닥, 천장은 별도의 메시여야 합니다. 대형 단일 메시 임포트에는 루멘을 사용할 수 없습니다.

스크린 트레이싱

루멘은 화면에 대한 레이 트레이싱(스크린 트레이싱(Screen Tracing) 또는 스크린 스페이스 트레이싱)부터 한 뒤, 히트가 발견되지 않거나 레이가 표면 뒤로 지나가는 경우 좀 더 안정적인 방식을 사용합니다. 스크린 트레이싱은 여러 지오메트리 유형을 지원하며 루멘 씬과 트라이앵글 씬 사이의 불일치를 가리는 데 유용합니다.

스크린 트레이싱의 단점은 간접광 스케일이나 이미시브 부스트의 라이팅 프로퍼티 같은 간접광에만 적용되므로 아트 디렉션의 제어를 크게 제한한다는 점입니다.

아래 씬에서는 소프트웨어 레이 트레이싱이 스크린 트레이싱을 먼저 사용한 뒤, 비용이 높은 다른 트레이싱 옵션으로 넘어갔습니다. 글로벌 일루미네이션 및 리플렉션에서 스크린 트레이싱이 비활성화됐으면 루멘 씬만 보입니다. 스크린 트레이싱은 트라이앵글 씬과 루멘 씬의 불일치를 해소하는 데 도움이 됩니다.

비교를 위해 스크린 트레이싱을 비활성화하려면 콘솔을 통해 r.Lumen.ScreenProbeGather.ScreenTraces 0`과 r.Lumen.Reflections.ScreenTraces 0** 을 설정합니다.

스크린 트레이싱 활성화 | (디폴트)

스크린 트레이싱 비활성화

루멘 레이 트레이싱

언리얼 엔진 5에서 루멘에는 두 가지 레이 트레이싱 방식이 있습니다. 소프트웨어 레이 트레이싱 은 가장 다양한 하드웨어와 플랫폼에서 작동하며, 하드웨어 레이 트레이싱 은 지원되는 그래픽 카드와 시스템이 필요합니다.

소프트웨어 레이 트레이싱

루멘은 기본으로 부호화된 디스턴스 필드에 소프트웨어 레이 트레이싱을 사용합니다 이 트레이싱 표현은 셰이더 모델 5(SM5)를 지원하는 모든 하드웨어에서 지원되며, 프로젝트 세팅에서 메시 디스턴스 필드 생성(Generate Mesh Distance Fields) 만 활성화하면 됩니다.

렌더러가 메시 디스턴스 필드를 글로벌 디스턴스 필드와 병합하여 트레이싱을 가속합니다. 기본적으로 루멘은 첫 2미터에서 정확도를 위해 각 메시의 디스턴스 필드를 트레이싱하며, 나머지 레이는 병합된 글로벌 디스턴스 필드를 트레이싱합니다. 프로젝트에서 겹치는 인스턴스가 많다면, 프로젝트 세팅에서 루멘이 사용하는 방식을 소프트웨어 레이 트레이싱 모드 로 바꾸면 됩니다.

루멘의 소프트웨어 레이 트레이싱에는 두 가지 트레이싱 옵션이 있습니다.

  • 디테일 트레이싱(Detail Tracing) 은 기본 트레이싱 방식입니다. 첫 2미터에서는 높은 퀄리티를 위해 개별 메시의 디스턴스 필드를 트레이싱하고, 나머지 레이에서는 글로벌 디스턴스 필드를 트레이싱합니다.

  • 글로벌 트레이싱(Global Tracing) 가장 빠른 트레이싱을 위해 글로벌 디스턴스 필드를 트레이싱합니다.

메시 디스턴스 필드는 카메라가 월드 내에서 움직일 때 거리에 따라 스트리밍 인, 아웃됩니다. 메시 디스턴스 필드는 단일 아틀라스로 압축되어 레이 트레이싱을 가능하게 하고, 이 통계는 `r.DistanceFields.LogAtlasStats 1`로 로그에 출력할 수 있습니다.

루멘의 소프트웨어 레이 트레이싱 퀄리티는 메시의 디스턴스 필드 표현 퀄리티에 의존할 때가 있습니다. 메시 디스턴스 필드(Mesh Distance Field)글로벌 디스턴스 필드(Global Distance Field) 의 두 시각화 옵션은 뷰포트의 표시(Show) > 시각화(Visualize) 메뉴에 있습니다.

메시 디스턴스 필드 | 시각화

글로벌 디스턴스 필드 | 시각화

일부 메시는 얇은 표면의 디스턴스 필드 표현이 좋지 않아서 라이트 누수 문제를 유발할 수 있습니다. 메시 디스턴스 필드 시각화는 이러한 문제를 찾아내는 데 도움이 됩니다.

mdfresolution-chandelier.png

(왼쪽에서 오른쪽으로) 트라이앵글 메시, 디스턴스 필드 해상도 스케일 1.0(디폴트), 1.5, 2.0

디스턴스 필드 표현을 향상하는 방법은 두 가지입니다. 프로젝트 전체에 영향을 미치는 프로젝트 세팅 디스턴스 필드 복셀 밀집도(Distance Field Voxel Density) 로 향상할 수 있습니다. 더 나은 방법은 소프트웨어 레이 트레이싱에서 문제를 일으키는 메시만 스태틱 메시 데이터의 디스턴스 필드 해상도 스케일(Distance Field Resolution Scale) 세팅을 조절하는 것입니다. 디스턴스 필드 해상도나 밀집도를 높이면 프로젝트의 디스크 크기가 늘어납니다.

프로젝트 세팅: 디스턴스 필드 복셀 밀집도

스태틱 메시 에디터: 디스턴스 필드 해상도 스케일

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

소프트웨어 레이 트레이싱의 제한사항

소프트웨어 레이 트레이싱은 프로젝트에서 활용하는 방식, 현재 지원되는 지오메트리, 머티리얼과 관련된 몇 가지 제한사항이 있습니다.

알려진 문제와 제한사항을 전부 나열한 것은 아니지만, 언리얼 엔진 5 얼리 액세스에서 루멘 소프트웨어 레이 트레이싱으로 작업할 때 예상할 수 있는 것은 다음과 같습니다.

지오메트리 제한사항

  • 스태틱 메시, 인스턴스된 스태틱 메시, 계층구조 인스턴스드 스태틱 메시만 루멘 씬에서 표현됩니다.

  • 랜드스케이프 지오메트리는 현재 루멘 씬에서 표현되지 않고 라이팅을 반사하지도 않습니다. 엔진의 향후 릴리즈에서 지원될 예정입니다.

머티리얼 제한사항
  • 월드 포지션 오프셋(WPO)은 지원되지 않습니다.

  • 디스턴스 필드는 반투명 머티리얼을 무시하며 마스크드 머티리얼을 불투명으로 취급합니다. 이는 폴리지에 막대한 오버 섀도잉을 유발하여 잎의 상당 부분을 마스크 처리할 수 있습니다.

  • 디스턴스 필드는 컴포넌트를 오버라이드하지 않고 스태틱 메시 에셋에 할당된 머티리얼 프로터리에서 빌드됩니다. 블렌드 모드가 다르거나 양면 프로퍼티가 있는 머티리얼로 오버라이드하면 트라이앵글 표현과 디스턴스 필드 사이에 불일치가 일어납니다.

워크플로 제한사항

  • 소프트웨어 레이 트레이싱은 모듈식으로 제작된 레벨을 필요로 합니다. 벽, 바닥, 천장이 별도의 메시여야 합니다. 산 같은 대형 메시는 제대로 표현되지 않고, 셀프 오클루전 문제를 유발할 수 있습니다.

  • 라이트 누수를 피하려면 벽 두께가 10cm 이상이어야 합니다.

  • 메시 디스턴스 필드 해상도는 스태틱 메시의 임포트 스케일에 따라 할당됩니다. 아주 작게 임포트된 뒤에 컴포넌트에서 스케일 업된 메시는 충분한 디스턴스 필드 해상도를 갖지 못합니다. 레벨에 배치된 인스턴스의 스케일을 크게 조절할 때는 디스턴스 필드 해상도 스케일로 보완하세요.

  • 디스턴스 필드는 아주 얇은 피처나 뒤에서 보이는 단면 메시를 나타낼 수 없습니다. 시청자가 단면 메시의 뒷면 트라이앵글을 보지 못하게 해서 문제를 방지하세요.

하드웨어 레이 트레이싱

하드웨어 레이 트레이싱은 소프트웨어 레이 트레이싱보다 넓은 범위의 지오메트리 유형을 지원하며, 특히 스킨을 입힌 메시에 트레이싱을 지원합니다. 하드웨어 레이 트레이싱은 더 높은 퀄리티로 스케일을 올리기도 수월합니다. 실제 트라이앵글과 교차하며 낮은 퀄리티의 표면 캐시 대신 레이 히트에서 라이팅을 평가하는 옵션이 있습니다. 그러나 하드웨어 레이 트레이싱은 씬 구성 비용이 상당하고, 현재 인스턴스가 10만 개를 초과하는 스케일의 씬에서는 사용이 어렵습니다. 스킨을 입힌 메시처럼 다이내믹하게 디폼되는 메시도 레이 트레이싱 가속 구조를 프레임마다 업데이트할 때 스킨을 입힌 트라이앵글 수에 비례하여 막대한 비용을 초래합니다.

나나이트를 사용하는 스태틱 메시의 경우, 하드웨어 레이 트레이싱은 스태틱 메시 에디터 세팅에서 나나이트의 프록시 트라이앵글 퍼센트(Proxy Triangle Percent) 로부터 생성되는 프록시 메시에서만 작동합니다. 이 프록시 메시는 r.Nanite 0 콘솔 명령으로 시각화할 수 있습니다.

스크린 트레이스는 나나이트로 렌더링된 풀 트라이앵글 메시와 루멘으로 레이 트레이싱된 프록시 메시 사이의 불일치를 숨기는 데 사용합니다. 그런데 불일치가 숨기기에는 너무 클 때도 있습니다. 그럴 때는 프록시 트라이앵글 퍼센트를 높이면 정확하지 않은 셀프 인터섹션 문제가 줄어듭니다.

풀 디테일 트라이앵글 메시

나나이트 생성 프록시 메시

루멘은 다음과 같은 경우에 하드웨어 레이 트레이싱을 사용합니다.

  • 프로젝트에서 하드웨어 레이 트레이싱 지원 이 활성화되고 루멘의 프로젝트 세팅 가능한 경우 하드웨어 레이 트레이싱 사용(se Hardware Ray Tracing when available) 이 활성화되었습니다. 이 세팅은 프로젝트 세팅의 렌더링(Rendering) 카테고리에서 설정합니다. 이 세팅을 바꾸면 엔진을 재시작해야 합니다.

  • 프로젝트는 지원되는 운영 체제, RHI, 그래픽 카드에서 실행됩니다. 현재는 다음 플랫폼에서만 하드웨어 레이 트레이싱을 원활하게 지원합니다.

  • DirectX 12가 설치된 Windows 10

    • PlayStation 5

    • Xbox Series S / X

    • 그래픽 카드는 NVIDIA RTX 2000 시리즈 이상 또는 AMD RX 6000 시리즈 이상이어야 합니다.

거대 월드

루멘 씬은 전체가 아니라 카메라 주변에서만 실행되어 거대 월드와 스트리밍을 가능하게 합니다. 루멘은 빠른 씬 캡처로 표면 캐시를 유지하기 위해 나나이트의 레벨 오브 디테일(LOD)과 멀티뷰 래스터화에 의존하고, 끊김 현상을 방지하기 위해 모든 동작을 쓰로틀링 해서 낮춥니다. 루멘이 작동하는 데 나나이트가 필수는 아니지만, 나나이트를 활성화하지 않으면 하이 폴리 메시가 많은 씬에서 루멘 씬 캡처가 매우 느려집니다. 특히 에셋에 LOD가 제대로 설정되어 있지 않은 씬은 더 그렇습니다.

카메라를 빠르게 움직이면 루멘 씬의 업데이트가 카메라 시점을 따라잡지 못하고 뒤늦게 따라가면서 간접광이 튀는 현상이 발생합니다.

루멘 표면 캐시는 카메라 위치로부터 200미터를 커버합니다. 200미터를 넘으면 글로벌 일루미네이션에서 스크린 트레이스만 활성화됩니다.

루멘의 실험 단계 기능인 디스턴스 씬(Distance Scene) 표현은 표면 캐시 너머를 트레이스 할 수 있습니다. 언리얼 엔진 5 기술 데모 '나나이트 세계의 루멘'에서 이 기능으로 협곡의 간접광을 달성했습니다. 디스턴스 씬 표현의 범위는 카메라로부터 200미터에서 1킬로미터입니다(아래 이미지 참조). 이 기능은 나나이트를 통해 태양으로부터 저해상도 리플렉티브 섀도맵을 렌더링함으로써 작동하며, 파이널 개더 도중에 이 하이트 필드를 트레이싱하여 태양의 간접광 바운스 하나를 획득합니다. 디스턴스 씬 표현은 유망한 기능이지만, 프로젝트에서 활용할 수 있는 수준이 되려면 훨씬 더 개발해야 합니다.

ue5techdemolargeworldscene.png

언리얼 엔진 5 테크 데모 '나나이트 세계의 루멘'은 거대한 월드의 글로벌 일루미네이션과 리플렉션을 시연합니다.

루멘의 기타 제한 사항

  • 루멘 글로벌 일루미네이션은 라이트맵의 스태틱 라이팅과 사용할 수 없습니다. 루멘 리플렉션은 향후 라이트맵의 글로벌 일루미네이션과 사용할 수 있도록 확장될 예정입니다. 이를 통해 렌더링 퀄리티를 한층 높일 수 있을 것입니다.

  • 이 얼리 액세스 빌드에서는 다운샘플링된 렌더링과 임시 필터에 크게 의존하므로 폴리지가 제대로 지원되지 않습니다. 루멘의 파이널 개더는 움직이는 오브젝트에 상당한 노이즈를 더할 수 있고, 아직 개발 중입니다.

  • 반투명 머티리얼은 루멘 리플렉션에서 아직 지원되지 않습니다.

  • 반투명 머티리얼에는 고퀄리티 다이내믹 글로벌 일루미네이션이 적용되지 않습니다.

퍼포먼스

루멘의 에픽 퀄리티 레벨 기본값은 차세대 콘솔 1080p 기준 30fps 예산(8ms 글로벌 일루미네이션 및 리플렉션)으로 설정됩니다. 루멘은 4K 출력을 위해 언리얼 엔진 4의 템포럴 업샘플링과 새로운 UE5 템포럴 슈퍼 해상도 알고리즘에 크게 의존합니다. 높음 엔진 퀄리티 레벨에서 루멘의 기본 목표는 60fps입니다. 낮음중간 퀄리티 레벨에서는 루멘이 비활성화됩니다.

러프니스가 0.4 미만인 머티리얼은 루멘 리플렉션 트레이싱에 추가 레이가 필요하므로, 루멘의 라이팅 솔브 비용이 가장 높습니다.

루멘 플랫폼 지원

  • 루멘은 PlayStation 4, Xbox One 등 현세대 콘솔을 지원하지 않습니다.

  • 소프트웨어 레이 트레이싱:

    • DirectX11을 사용하고 Shader Model 5를 지원하는 그래픽 카드.

    현재 얼리 액세스의 퍼포먼스를 위해서는 NVIDIA GeForce GTX 1070 이상의 그래픽 카드가 필요합니다. 루멘에는 여러 스케일 다운 옵션이 있지만, 사용을 권장할 수준이 되려면 더 개발해야 합니다.

  • 하드웨어 레이 트레이싱:

    • DirectX 12를 지원하는 Windows 10.

    • 그래픽 카드는 NVIDIA RTX 2000 시리즈 이상 또는 AMD RX 6000 시리즈 이상이어야 합니다.

  • 루멘은 모바일 플랫폼을 지원하지 않으며, 향후 모바일 렌더러용 다이내믹 글로벌 일루미네이션 시스템을 개발할 계획은 없습니다. 다이내믹 라이팅을 사용하는 게임은 모바일에서 섀도 처리되지 않은 스카이 라이트를 사용해야 합니다.

루멘 시각화 옵션

루멘에는 언리얼 에디터에서 데이터를 시각화하는 여러 방법이 있으며, 루멘이 씬을 라이팅하는 방법을 알아보고 문제를 해결하는 데 도움이 됩니다.

주요 시각화 옵션은 레벨 뷰포트의 표시(Show) > 시각화(Visualize) 메뉴에 있습니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

프로퍼티

설명

뷰포트 시각화 모드

루멘 씬(Lumen Scene)

루멘의 표면 캐시가 적용된 씬을 시각화합니다.

루멘 글로벌 일루미네이션(Lumen Global Illumination)

루멘 글로벌 일루미네이션과 리플렉션 기능만 적용된 씬을 시각화합니다.

소프트웨어/하드웨어 레이 트레이싱

메시 디스턴스 필드(Mesh Distance Fields)

씬을 구성하는 개별 메시의 부호화 디스턴스 필드 표현을 시각화합니다.

글로벌 디스턴스 필드(Global Distance Fields)

렌더러 씬 뷰에 따라 더 크고 디테일이 낮은 디스턴스 필드 표현으로 병합된 개별 메시 디스턴스 필드를 시각화합니다.

콘솔 명령으로 루멘이 사용하는 다른 데이터를 시각화할 수도 있습니다.

  • 루멘의 카드 배치(Card Placement) 는 씬에서 카드로 불리는 캡처 위치가 어떻게 사용되는지 봅니다. 카드는 각 메시에서 오프라인으로 생성되며, 여러 각도에서 각 메시의 머티리얼 프로퍼티를 캡처하는 데 사용됩니다. `r.Lumen.Visualize.CardPlacement 1`로 활성화합니다.

  • 하드웨어 레이 트레이싱은 스태틱 메시 에셋의 프록시 트라이앵글 퍼센트 프로퍼티에서 생성된 나나이트 프록시 메시(Nanite Proxy Mesh) 를 사용합니다. 프록시 메시는 스크린 트레이싱과 나나이트 레이 트레이싱된 씬 사이의 불일치를 가리는 데 사용됩니다. `r.Nanite 0`로 나나이트 렌더링을 비활성화하고 루멘에서 사용되는 프록시 메시를 확인하세요.

문제 해결

씬에서 루멘 관련 문제를 해결하려면 먼저 뷰포트의 표시 > 시각화 메뉴의 루멘 씬 시각화부터 시작하는 게 좋습니다.

이 뷰는 간접광에 눈에 띄게 영향을 미치는 부분에서 메인 씬 뷰와 일치해야 합니다. 예를 들어 루멘 씬에서 건물의 금속 문과 버스는 씬에서 눈에 띄는 방식으로 일부 색을 반사할 확률이 높습니다.

TestScene_LumenEnabled.png

TestScene_LumenSceneCardsRepresentation.png

문제를 유발하는 메시

간접광에 문제를 유발하는 메시가 있으면 레벨 인스턴스의 디테일 패널에서 제거할 수 있습니다.

소프트웨어 레이 트레이싱의 경우, 디스턴스 필드 라이팅 영향(Affect Distance Field Lighting) 박스를 체크 해제하여 제거합니다.

하드웨어 레이 트레이싱의 경우, 다이내믹 간접광 영향(Affect Dynamic Indirect Lighting) 박스를 체크 해제하여 제거합니다.

섀도 맵과 레이 트레이스드 섀도의 불일치

루멘은 루멘 씬 섀도잉에 렌더러의 섀도맵을 재사용합니다. 하지만 섀도맵은 화면상의 위치에서만 사용할 수 있습니다. 화면 밖 표면의 경우, 루멘은 섀도잉에 레이 트레이싱을 사용합니다. 두 기법 사이에 심각한 불일치가 있을 때 루멘 글로벌 일루미네이션은 스크린 스페이스 글로벌 일루미네이션 등 스크린 스페이스 기술과 마찬가지로 뷰에 크게 의존합니다.

이 문제는 불일치를 일으키는 원인을 알아내면 해결할 수 있을 때가 많습니다. 콘솔에서 `r.Lumen.DirectLighting.ForceOffscreenShadowing 1`을 입력하고, **루멘 씬(Lumen Scene)** 시각화 모드에서 레이 트레이스드 섀도를 확인하세요.