GPU 라이트매스 글로벌 일루미네이션

프리컴퓨티드 라이팅 데이터를 생성하는 GPU 기반 시스템을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

GPU 라이트매스(GPULM)는 라이트를 굽는 솔루션으로, 모빌리티 세팅이 스테이셔너리 또는 스태틱으로 설정된 라이트의 복잡한 라이트 인터랙션을 미리 계산한 후 해당 데이터를 생성된 라이트맵 텍스처에 저장하여 씬 지오메트리에 적용합니다. 라이팅을 텍스처에 굽는 이 시스템은 CPU 기반 라이트매스 글로벌 일루미네이션 시스템과 비슷합니다. 그러나 GPU를 사용하여 라이팅 데이터를 생성하고 빌드한다는 것은 DirectX 12(DX12)와 Microsoft의 DXR 프레임워크를 통해 최신 레이 트레이싱 기능을 활용할 수 있다는 뜻입니다.

GPULM을 사용하면 복잡한 씬의 라이팅 데이터를 계산하고 빌드하고 생성하는 데 소요되는 시간을 크게 단축할 수 있으며, CPU 기반 라이트매스로 스웜(Swarm)을 사용하여 분산한 빌드에 필적하는 속도를 낼 수 있습니다. 또한, GPULM을 사용하면 씬을 편집한 다음 즉석에서 라이팅을 재계산하고 리빌드할 수 있는 인터랙티브 방식의 새 워크플로를 이용할 수도 있습니다. 이 워크플로는 CPU 기반 라이트매스 시스템에서는 이용할 수 없습니다.

GPU 라이트매스 활성화하기

다음 절차에 따라 프로젝트에서 GPU 라이트매스를 활성화할 수 있습니다.

  1. 편집(Edit) > 플러그인(Plugins) 메뉴에서 플러그인 탭을 엽니다. 내장 플러그인(BUILT-IN) > 에디터(Editor) 카테고리에서 GPU 라이트매스(GPU Lightmass) 를 찾아 활성화합니다.

    GPU 라이트매스 플러그인 활성화

    GPU 라이트매스를 활성화하면 언리얼 에디터를 재시작하라는 메시지가 표시됩니다. 에디터를 재시작하기 전에 다음과 같이 프로젝트 세팅을 수정하면 시간을 절약할 수 있습니다.

  2. 편집 > 프로젝트 세팅(Project Settings) 메뉴에서 프로젝트 세팅 창을 엽니다.

    1. 엔진(Engine) > 렌더링(Rendering) 카테고리에서 다음 항목을 활성화합니다.

      1. 하드웨어 레이 트레이싱(Hardware Ray Tracing) > 하드웨어 레이 트레이싱 지원(Support Hardware Ray Tracing)

        하드웨어 레이 트레이싱 지원 토글

        GPU 라이트매스를 작동하는 데 레이 트레이스된 섀도(Ray Traced Shadows)레이 트레이스된 스카이라이트(Ray Traced Skylight) 는 필요하지 않습니다. 프로젝트에 필요한 경우가 아니라면 이 기능들은 비활성 상태로 두세요.

      2. 버추얼 텍스처(Virtual Textures) > 버추얼 텍스처 지원 활성화(Enable Virtual Texture Support)

      3. 버추얼 텍스처 > 버추얼 텍스처 라이트맵 활성화(Enable Virtual Texture Lightmaps)

    2. 플랫폼(Platforms) > 창(Windows) 카테고리에서 다음 항목을 설정합니다.

      1. 타겟팅된 RHIs(Targeted RHIs) > 기본 RHI(Default RHI): DirectX 12

  3. 에디터를 재시작 하여 변경사항을 적용합니다.

GPU 라이트매스를 설정하기 위한 추가 요구 사항

다음은 프로젝트에서 GPU 라이트매스를 최적의 상태로 사용하기 위한 추가 제안입니다.

GPU 타임아웃 감지 및 복구 크래시 빈도 줄이기

GPU의 과부하를 유발할 수 있는 복잡한 씬이 있다면 타임아웃 지연(또는 TDR)이 발생할 수 있습니다. 이렇게 지연되는 경우 Windows 10에서 크래시가 발생할 수 있습니다. 이렇게 발생하는 크래시 유형은 언리얼 엔진뿐 아니라 컴퓨터에서 GPU를 사용하는 모든 요소에 영향을 줍니다. 크래시가 발생하면 일반적으로 다음과 같은 메시지가 표시됩니다:

GPU 드라이버 크래시 오류 메시지

이러한 유형의 크래시 발생을 방지하거나 줄이려면 GPU 타임아웃에 걸리는 시간을 늘리면 됩니다. 그러면 GPU가 복구에 필요한 시간을 확보할 수 있으므로 에디터가 강제 종료되지 않습니다.

타임아웃 딜레이를 조정하는 방법과 Windows 10 내에서 복구하는 방법에 대한 자세한 내용은 무비 렌더 큐의 시스템 환경설정 단계를 확인하세요.

리얼타임 레이 트레이싱 기능 비활성화하기

레이 트레이싱 기능을 사용하려면 DirectX 12를 실행하는 Windows 10 개발 환경과 레이 트레이싱을 지원하는 NVIDIA GPU가 필요합니다. 자세한 내용과 전체 요구 사항 목록은 레이 트레이싱 문서를 확인하세요.

GPU 라이트매스는 레이 트레이싱에 Microsoft의 DXR API를 활용하며, 여기에는 DirectX 12가 필요합니다. GPU 라이트매스가 작동하려면 레이 트레이싱이 필요하지만 레이 트레이스된 섀도나 앰비언트 오클루전, 리플렉션 같은 추가적인 레이 트레이싱 기능을 요구하지는 않습니다.

오히려 추가적인 레이 트레이싱 기능을 명백히 베이크드 라이팅에 같이 사용할 것이 아니라면 이러한 추가 기능은 모두 비활성화하는 것이 좋습니다. 레이 트레이싱 기능을 사용하는 베이크드 라이팅이 필요한 경우, 스태틱 라이트와 다이내믹 라이트를 모두 포함하는 씬을 가지면 됩니다. 다음 콘솔 명령으로 레이 트레이싱 이펙트를 비활성화할 수 있습니다.

r.RayTracing.ForceAllRayTracingEffects 0 

아니면 이를 프로젝트에 설정할 수도 있습니다. 프로젝트의 Config 폴더에 있는 프로젝트 DefaultEngine.ini 환경설정 파일에 추가하면 로드 시 모든 레이 트레이싱 기능이 비활성화됩니다. [/Script/Engine.RendererSettings] 섹션 아래에 다음과 같은 내용을 추가합니다.

[/Script/Engine.RendererSettings]
r.RayTracing.ForceAllRayTracingEffects=0

GPU 메모리 환경설정하기

GPULM을 사용하려면 오버헤드를 처리할 GPU 메모리가 충분히 필요합니다. 그러므로 GPULM으로 복잡한 씬을 무사히 구우려면 다음 사항을 잘 고려해야 합니다.

  • 가장 낮은 레벨 오브 디테일(LOD), 즉 가장 고퀄리티 LOD 메시로 전체 씬을 메모리에 저장할 만큼의 GPU 메모리가 반드시 있어야 합니다.

    현재 GPULM은 구울 때 LOD들을 고려하지 않습니다. 자세한 내용은 이 페이지의 GPU 라이트매스의 한계 섹션을 확인하세요.

  • 버추얼 텍스처 시스템은 라이트를 빌드할 때 상당한 메모리를 사용할 수 있습니다. 이때 메모리 사용량은 대부분 씬의 복잡도와 규모에 따라 달라집니다.

  • 생성된 모든 라이트맵을 RAM에 저장하려면 CPU 메모리가 충분해야 합니다. GPU는 라이트맵을 CPU의 RAM으로 전환할 수 있지만, 라이트맵은 전체 라이트 굽기가 완료되기 전까지는 디스크에 저장되지 않습니다.

  • DX12는 일반적으로 DX11보다 GPU 메모리를 더 사용합니다. DX11에서 GPU 메모리를 한계까지 사용했던 씬이 있다면, 레이 트레이싱과 버추얼 텍스처 요구 사항으로 인한 오버헤드 증가 때문에 어느 정도 절충하지 않으면 DX12에서 씬을 사용하기 어려울 수 있습니다.

  • GPULM의 복사도 캐시(Irradiance Cache) 와 같은 선택적 세팅은 자체적인 메모리 사용량 요구 사항을 가지고 있습니다.

CPU 기반 라이트매스 시스템은 대규모 씬에 상당히 많은 메모리를 사용해야 하는데, 이는 라이트 굽기에 문제가 될 수 있습니다. 스웜으로 분산한 빌드를 사용하면 이러한 유형의 문제가 완화되기도 합니다. GPULM을 사용할 때 메모리 부족 현상이 나타나는 경우의 해결법은 현재로서는 지오메트릭 디테일이나 텍스처 디테일을 줄여 씬을 최적화하는 방법 아니면 메모리가 더 많은 GPU로 업그레이드하는 방법밖에 없습니다.

에디터 내 프리뷰에 버추얼 텍스처 라이트맵 사용하기

버추얼 텍스처 라이트맵이 있는 버추얼 텍스처 시스템을 활성화하면 라이트맵을 생성해서 버추얼 텍스처로 저장할 수 있습니다. 이렇게 하면 라이트 빌드가 레벨 뷰포트에서 실시간으로 업데이트되는 이점도 생깁니다. 또한, 씬을 빌드하는 동안 취소하거나 빌드 완료를 기다리지 않고도 편집할 수 있습니다.

GPULM 사용 시, 단순히 라이팅을 빌드할 때는 버추얼 텍스처 시스템을 활성화하지 않아도 되지만 인터랙티브 편집 기능과 리얼타임 편집 기능을 사용하려면 버추얼 텍스쳐 시스템을 활성화해야 합니다. 프로젝트에서 버추얼 텍스처를 사용할 생각이 없거나 인터랙티브 프리뷰가 필요 없는 경우 이러한 시스템을 활성화하지 않음으로써 에디터에서 작업할 때 오버헤드를 일부 줄일 수 있습니다.

라이팅 빌드를 위한 멀티 GPU 활성화하기

멀티 GPU를 지원하려면 Windows 10 버전 2004 이후 버전이 필요합니다.

레이 트레이싱도 지원하는 NVIDIA SLI 기반 GPU를 사용하면 멀티 GPU를 사용하여 프로젝트의 라이팅을 계산할 수 있습니다. 다음과 같은 절차에 따라 멀티 GPU 지원을 활성화할 수 있습니다.

  • GPU는 NVLink 브리지에 연결되어야 하며 NVIDIA 제어판에서 SLI를 활성화해야 합니다.

  • 언리얼 엔진의 DefaultEngine.ini 파일에서 자신의 [엔진 설치 경로]/Engine/Config 폴더를 찾은 다음, [/Script/Engine.RendererSettings] 섹션 아래에 r.AllowMultiGPUInEditor=1 을 추가합니다.

  • 에디터 실행 시 명령줄 실행인자 -MaxGPUCount=[n] 을 전달합니다. 여기서 n 은 SLI를 통해 사용할 수 있는 GPU 수를 나타냅니다. 예를 들어, -MaxGPUCount=2 이면, 멀티 GPU 모드에서 두 개의 GPU를 사용하여 라이팅을 계산합니다.

    UE4Editor.exe의 바로 가기를 만들고 속성 설정의 대상 줄에 -MaxGPUCount=[n] 을 설정하는 방법도 있습니다. UnrealEditor.exe 속성 설정

에디터가 시작되면 출력 로그(Output Log) 에서 다음과 같은 로그 메시지를 검색하여 멀티 GPU 모드를 사용 중인지 확인할 수 있습니다.

 LogD3D12RHI: Enabling multi-GPU with 2 nodes

퍼포먼스 측면에서 멀티 GPU를 사용하면 빌드 완료까지 걸리는 시간이 평균적으로 빨라집니다. 예를 들어, 볼류메트릭 라이트맵을 많이 사용하지 않는 중간 규모의 테스트 씬을 두 개의 RTX-2080Ti로 빌드하는 경우, 빌드 시간이 평균 1.7배 빨랐습니다. 빌드 완료 시간이 개선되는 정도는 씬 규모와 복잡도, 엔진 기능 멀티 GPU 지원, GPU 사용 수 등 여러 가지 요인에 따라 달라집니다.

GPU 라이트매스 멀티 GPU 지원 기능은 한 개의 영역을 사용하는 건축이나 버추얼 프로덕션 유형의 환경에 가장 적합합니다. 대규모 게임급 레벨은 그 복잡도와 GPU에서 사용 가능한 VRAM 크기에 따라 메모리 및 버추얼 텍스처의 한계에 도달할 수 있습니다. 건축 및 버추얼 프로덕션 환경에 사용할 때도 환경 디자인과 셋업이 복잡한 경우 게임 규모의 레벨과 같은 한계에 도달할 수 있습니다. 다음은 멀티 GPU의 한계 사항입니다.

  • 볼류메트릭 라이트맵 계산은 아직 지원되지 않습니다. 볼류메트릭 라이트맵 계산량이 많은 씬은 퍼포먼스가 전반적으로 크게 개선되지 않습니다.

  • 복사도 캐시는 각 GPU에서 로컬로 생성됩니다. 콘텐츠에 따라 구운 타일마다 약간씩 셰이딩의 차이가 있을 수 있습니다. 이는 복사도 캐시 퀄리티(Irradiance Cache Quality) 를 높이거나 복사도 캐싱 사용(Use Irradiance Caching) 을 완전히 비활성화하면 해결할 수 있습니다.

  • 텍스처 인코딩 및 노이즈 제거는 CPU에서 실행되며, 멀티 GPU의 영향을 받지 않습니다.

GPU 라이트매스 사용하기

GPULM에는 자체 패널이 있으며 레벨 에디터의 툴바를 통해 접근할 수 있습니다. 빌드(Build) 드롭다운 메뉴에서 GPU 라이트매스 를 선택합니다.

GPU 라이트매스 옵션이 표시된 툴바 빌드 드롭다운

다른 패널과 마찬가지로 에디터 안에 GPU 라이트매스 패널을 도킹할 수 있습니다.

GPU 라이트매스 패널 도킹

세팅을 환경설정하고 나면 라이팅 빌드(Build Lighting) 를 눌러 굽기 시작합니다.

GPU 라이트매스 패널 라이팅 빌드 버튼

뷰포트 실시간(Viewport Realtime) 체크박스를 사용하여 뷰포트 실시간 모드를 토글합니다. 뷰포트의 실시간 모드를 비활성화하면 GPU 라이트매스의 라이팅 빌드 속도가 상당히 빨라집니다. 자세한 내용은 이 페이지의 GPU 라이트매스 스피드 모드 사용하기 섹션을 확인하세요.

GPU 라이트매스 패널 실시간 뷰포트 토글

GPU 라이트매스 굽기 모드

GPULM에는 라이팅을 굽는 모드가 두 가지 있는데 바로 전체 굽기(Full Bake)보이는 것만 굽기(Bake What You See, BWYS) 입니다.

GPU 라이트매스 굽기 모드 드롭다운

  • 전체 굽기 모드는 조명을 계산하고 빌드하면서 씬에 있는 모든 오브젝트를 전체 라이트맵 해상도로 렌더링합니다. 렌더링 결과는 빌드가 완료되어야 볼 수 있습니다.

  • 보이는 것만 굽기 모드는 전체 씬이 아니라 뷰포트에 보이는 오브젝트의 라이팅만 빌드하므로 더 유연하게 사용할 수 있습니다. 또한, 뷰포트 실시간 모드가 활성화되어 있으면 라이트 빌드 프로세스 동안 변경사항이 있을 때 인터랙티브 방식으로 라이트를 재계산할 수도 있습니다.

이러한 두 가지 굽기 모드는 둘 다 뷰에 종속적입니다. 즉, 뷰 안의 오브젝트부터 처리한 후 씬의 다른 오브젝트로 이동한다는 뜻입니다.

전체 굽기 모드에서 GPULM은 다음과 같은 절차를 따릅니다.

  • 씬 내의 모든 오브젝트를 고려하며, 현재 뷰 안의 오브젝트부터 먼저 처리합니다.

  • 라이팅은 오브젝트의 전체 라이트맵 해상도로 텍스처 스페이스에서 구워지며, 완료된 라이트맵 타일은 버추얼 텍스처 시스템으로 전송되어 디스플레이를 업데이트합니다.

  • 모든 오브젝트를 계산하고 라이트맵을 렌더링하고 나면 인코딩이 진행되고 데이터를 자동으로 저장합니다.

보이는 것만 굽기 모드는 실시간으로 계산이 이뤄지며 씬 내에서 라이팅 결과를 인터랙티브하게 확인하는 비파괴적(변경 유지) 방식을 사용합니다. 라이팅을 작업 중인 씬 영역에서 바로바로 조정하는 작업 방식을 지원합니다. BWYS 라이트 빌드 워크플로는 이러한 인터랙션 때문에 전체 굽기 워크플로와는 다음과 같은 부분이 다릅니다.

  • 런타임 버추얼 텍스처(Runtime Virtual Texture) 시스템은 화면에서 처리하는 데 필요한 밉맵 레벨에 표시할 타일을 결정합니다.

  • 라이팅은 카메라 뷰 안에서 각 타일을 처리한 밉맵 해상도로 텍스처 스페이스에 구워집니다.

  • 모든 화면 내 타일이 완료되면 BWYS는 씬이나 뷰포트 카메라가 업데이트될 때까지 무한정 대기합니다.

  • 저장(Save) 버튼을 누르면 최종 라이트맵을 인코딩하기 시작합니다. 결과를 저장하기로 선택하면 씬의 완료된 라이팅 빌드가 생성되지 않습니다. 화면에 보이는 씬의 일부만 라이팅 데이터를 보관하고 저장할 준비가 됩니다.

  • 저장을 눌러도 라이트 굽기가 종료되지 않으며, 지금까지 생성한 인코딩된 라이트맵 데이터만 저장됩니다. 취소(Cancel) 를 눌러야 프로세스가 중지됩니다.

인터랙티브 굽기

인터랙티브 굽기는 전체 굽기 모드와 BWYS 모드 둘 다에서 쉽게 사용할 수 있습니다. 현재 카메라 뷰에 매핑된 보이는 버추얼 텍스처 타일부터 우선 처리합니다. 카메라가 이동하면 현재 뷰에 맞춰 타일 우선순위가 변경됩니다. 인터랙티브 굽기는 라이트 굽기 모드 둘 다에서 사용되지만, BWYS 모드에서 사용하는 것이 가장 유용합니다.

BWYS 모드를 시작하면 라이팅 빌드가 시작되며, 이는 수동으로 중지하는 경우에만 완료됩니다. 이 모드는 카메라 뷰 안에 있는 오브젝트의 라이팅만 고려하고 빌드합니다. 씬에서 카메라를 이동하면 위치를 변경하거나 씬에 오브젝트를 추가/제거하거나 씬 액터의 프로퍼티를 변경하여 실시간으로 라이팅을 재계산합니다. 이 모드에서는 라이팅 결과를 수동으로 저장해야 하기 때문에 씬의 라이팅을 빌드한 적이 있다면 비파괴적(변경 유지) 방식으로 작업이 진행됩니다.

GPU 라이트매스 스피드 모드 사용

GPULM의 장점 중 하나는 라이트를 구울 때 버추얼 텍스처링을 활용한다는 것입니다. 덕분에 에디터 뷰포트에서 실시간으로 라이팅을 빌드하고 표시할 수 있습니다. 또한, 씬이 동시에 편집되는 경우 점진적으로 작동하면서 그에 맞춰 씬 라이팅을 업데이트합니다. 실시간으로 에디터 내에서 프리뷰할 때의 단점은 보이는 결과를 업데이트하기 위해 씬에서 프레임을 다시 렌더링하면서 오버헤드가 추가로 발생한다는 점입니다. 이 오버헤드를 비활성화하면 GPU가 확보되므로 더 효율적이고 빠르게 작동할 수 있습니다.

레벨 뷰포트의 실시간 모드 상태는 GPULM의 두 작동 속도를 제어합니다. 실시간 모드에 따라 작동 방식이 달라집니다.

  • 켜짐(On) 이면 실시간으로 프레임을 렌더링할 때 오버헤드가 늘어나기 때문에 느린 모드를 사용합니다.

  • 꺼짐(Off) 이면 씬을 실시간으로 렌더링할 때 발생하는 오버헤드가 없어지므로 라이팅 빌드 속도가 상당히 빨라집니다.

레벨 뷰포트 실시간 모드는 다음과 같은 방법으로 토글할 수 있습니다.

  • GPU 라이트매스 패널의 실시간 뷰포트 체크박스를 뷰포트 실시간 모드로 토글합니다.

    GPU 라이트매스 패널 실시간 뷰포트 토글

  • 레벨 뷰포트의 드롭다운 메뉴에서 실시간 모드를 토글합니다.

    레벨 뷰포트 실시간 토글

  • 키보드 단축키 Ctrl + R 을 사용합니다.

뷰포트의 실시간 모드 토글 외에도 GPULM에는 몇몇 내장 파라미터를 사용하여 라이팅 빌드 속도를 높이는 세팅이 포함되어 있습니다.

GPU 라이트매스 빌드 속도 세팅

  • 실시간 워크로드 인수(Realtime Workload Factor) 는 뷰포트에서 실시간 모드가 켜짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다. 이 값이 너무 높으면 지오메트리가 많은 씬에서 에디터가 응답하지 않을 수 있습니다.

  • 비실시간 워크로드 인수(Non-Realtime Workload Factor)실시간 모드가 꺼짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다.

워크로드 인수 옵션을 사용한다고 반드시 빌드 속도가 즉시 빨라지는 것은 아니므로 신중히 사용해야 합니다. 이러한 배수는 GPU로 전송하는 작업 청크 크기를 결정하며, 이 크기의 효율성은 GPU의 최종 속도를 결정하는 수많은 인수 중 하나입니다. 예를 들어, 비실시간 워크로드 인수 를 사용하면 어떤 프로젝트에서는 빠른 굽기의 속도가 더 느려질 수 있습니다. 모든 상황에 맞는 만능 세팅은 없습니다.

GPU 라이트매스 세팅

GPU 라이트매스의 세팅은 대부분 자체 패널 안에 있습니다.

GPU 라이트매스 패널

프로퍼티

설명

일반

프로그레스 바 표시(Show Progress Bars)

True인 경우, 렌더링이 진행되는 동안 각 타일 안에 초록색 프로그레스 바가 표시됩니다. 빨간색 표시줄은 첫 바운스 레이 가이딩(First Bounce Ray Guiding) 을 진행 중이라는 뜻입니다. 너무 밝아서 프로그레스 바가 잘 보이지 않는 씬에서는 검은색으로 표시될 수도 있습니다.

모드(Mode)

개발 목적에 가장 잘 맞는 굽기 모드를 선택합니다.

  • 전체 굽기: 씬의 모든 오브젝트를 전체 라이트맵 해상도로 렌더링하는 모드입니다.

  • 보이는 것만 굽기: 버추얼 텍스처 시스템에서 결정한 밉 레벨에서 보이는 오브젝트의 버추얼 텍스처만 렌더링하는 모드입니다. 카메라를 움직여 더 많은 타일을 렌더링할 수 있습니다. 이 모드에서는 저장 버튼을 눌러야 그 결과가 저장됩니다.

노이즈 제거(Denoise)

활성화되면 렌더링 후 CPU에서 노이즈를 제거합니다. 라이트맵 굽기의 노이즈를 제거할 시점은 다음 옵션을 선택하여 결정합니다:

  • 없음(None): 라이트맵에서 아무런 노이즈도 제거하지 않습니다.

  • 완료 시(On Completion): 굽기가 완료되면 전체 라이트맵에 노이즈 제거가 적용됩니다.

  • 인터랙티브 프리뷰 시(During Interactive Preview): 각 타일을 완료하는 대로 노이즈를 제거합니다. 씬의 일부분을 프리뷰하기에는 용이하지만 효율은 떨어집니다.

글로벌 일루미네이션

GI 샘플(GI Samples)

표면에 반사된 모든 바운스에서 텍셀당 실행된 총 레이 패스 수입니다. 이 값은 노이즈 제거 툴로 아티팩트 없는 결과를 제공하는 최솟값으로 설정해야 합니다.

스테이셔너리 라이트 섀도 샘플(Stationary Light Shadow Samples)

모빌리티를 스테이셔너리(Stationary) 로 설정한 라이트에 사용되는 샘플 수입니다. 이 섀도는 글로벌 일루미네이션과 별도로 계산되고 저장됩니다.

복사도 캐싱 사용(Use Irradiance Caching)

인테리어 씬에서 이 프로퍼티를 활성화하면 물리적으로 더 정확한 글로벌 일루미네이션 강도(일부 바이어스 포함)를 달성할 수 있습니다. 활성화하지 않으면 결과가 예상보다 어둡게 나타날 수 있습니다. 야외 씬에서는 비활성화됩니다.

첫 바운스 레이 가이딩 사용(Use First Bounce Ray Guiding)

복사도 캐싱 사용 이 활성화되어 있을 때, 이 옵션은 각 첫 번째 바운스 샘플에서 반구를 검색하여 나머지 샘플의 웨이트가 향할 가장 밝은 방향을 찾습니다. 이 옵션을 사용하면 창문과 같은 특정 광원이 있는 인테리어 씬의 결과가 개선됩니다. 이 패스의 퀄리티는 트라이얼 샘플(Trial Samples) 세팅으로 제어됩니다.

복사도 캐싱

퀄리티(Quality)

복사도 캐시 셀당 샘플 수입니다.

크기(Size)

각 복사도 캐시 셀의 크기입니다. 크기가 작을수록 느리지만 더 정확합니다.

모서리 거부(Corner Rejection)

모서리 주변의 복사도 캐시 항목 거부를 더 잘 제어할 수 있으며, 라이트 누출 감소와 아티팩트 감소에 도움이 됩니다.

디버그: 시각화(Debug: Visualize)

활성화되면 복사도 캐시 셀이 표시됩니다. 복사도 캐시 셀 크기와 퀄리티를 설정할 때 유용합니다. 너무 밝아서 시각화가 잘 보이지 않는 씬에서는 검은색으로 표시될 수도 있습니다.

첫 바운스 레이 가이딩

트라이얼 샘플

라이팅 샘플링 전에 폐기되는 첫 바운스 레이 가이딩 에 사용된 샘플 수입니다.

시스템

실시간 워크로드 인수

뷰포트에 실시간 모드가 활성화되었을 때 이 배수를 사용하여 굽기 속도를 제어합니다.

비실시간 워크로드 인수

뷰포트에 실시간 모드가 비활성화되었을 때 이 배수를 사용하여 굽기 속도를 제어합니다.

라이트맵 타일 풀 크기(Lightmap Tile Pool Size)

보이는 타일의 풀로, GPU 라이트매스가 계산용으로 관리합니다. 이 풀 크기는 뷰포트 크기와 한 번에 화면에 표시될 타일 수를 기반으로 설정해야 합니다. 풀 크기를 키우면 GPU 메모리 사용이 증가합니다.

GPU 라이트매스 패널 월드 세팅

볼류메트릭 라이트맵 디테일 셀 크기(Volumetric Lightmap Detail Cell Size) 는 씬에서 밀도가 가장 높은 볼류메트릭 라이트맵 지오메트리의 크기를 설정합니다. 복셀의 크기를 줄이면 라이팅을 빌드하는 데 소요되는 시간과 메모리 사용량이 증가합니다. 경우에 따라서는 메모리 사용량이 최대 8배까지 증가할 수 있습니다.

라이트맵 UV 및 해상도 설정하기

라이팅을 구우려면 각 스태틱 메시에 자체적인 라이트맵 UV가 있어야 합니다. 그리고 UV 아일랜드라고도 부르는 UV 차트들이 모두 0~1 텍스처 스페이스 안에 있어야 하며 겹치거나(오버랩) 접힌(래핑) 조각이 없어야 합니다. 그래야 라이팅 계산 시 잘못된 라이트맵 UV로 인한 아티팩트가 발생하지 않습니다.

라이트맵 UV 세팅과 언리얼 엔진 내에서 라이트맵 UV를 생성하는 방법에 대한 자세한 내용은 아래 페이지를 확인하세요.

라이트맵 UV를 적절히 설정하는 작업은 오브젝트의 지오메트리에 고퀄리티 라이트를 굽는 첫 단계입니다. 다음으로 중요한 것은 지오메트리에 적용된 라이트맵 텍스처의 해상도가 모든 필수 라이트와 섀도 디테일을 캡처하기에 충분한지 확인하는 것입니다. 이는 각 오브젝트의 라이트맵 해상도를 필요한 만큼 변경한다는 뜻입니다. 해상도는 두 가지 방법으로 변경할 수 있습니다.

  • 스태틱 메시 에디터(Static Mesh Editor) 를 사용하여 오브젝트의 라이트맵 해상도(Light Map Resolution) 를 설정합니다.

    스태틱 메시 에디터 라이트맵 해상도 세팅

  • 씬에서 스태틱 메시 액터(Static Mesh Actor) 를 선택하고 라이팅(Lighting) 카테고리의 디테일(Details) 패널에서 오버라이드된 라이트맵 해상도(Overridden Light Map Res) 프로퍼티를 사용하여 개별 액터에 새 라이트맵 해상도를 설정합니다.

    디테일 패널의 오버라이드된 라이트맵 해상도 프로퍼티

라이트 바운스 수 제어하기

어느 씬이 주어지든 그 안의 라이트 바운스 수는 제어할 수 없습니다. 대신, GPULM은 다양한 가능성과 웨이트 계산을 고려하여 캐스팅 중인 지정 레이가 얼마나 바운스될지 그 수를 결정하는 러시안룰렛 알고리즘을 사용합니다. 이는 해당 라이트 바운스가 간접 라이팅에 기여할 가능성이 낮고 씬의 일루미네이션 종료 가능성이 더 높다는 의미이기도 합니다.

GPULM의 GI 샘플 프로퍼티는 공간 샘플과 바운스 세그먼트를 포함한 각 텍셀 또는 텍스처 맵 내 픽셀의 총 패스 트레이싱된 세그먼트 수를 제어합니다. GI 샘플 수를 늘리면 공간 샘플과 잠재적인 뎁스 샘플의 수가 증가합니다.

노이즈 제거 옵션 선택하기

GPULM은 Intel의 오픈 이미지 노이즈 제거 라이브러리에서 제공하는 노이즈 제거 방법을 사용하여 노이즈를 제거하고 최종 라이트맵 렌더링의 결과를 매끄럽게 출력합니다.

라이트 굽기 노이즈 제거 방법을 고려할 때 선택할 수 있는 세 가지 옵션이 있습니다. 세 옵션은 노이즈 제거(Denoising) 드롭다운 메뉴에서 선택할 수 있습니다.

GPU 라이트매스 노이즈 제거 세팅 옵션 드롭다운

  • 없음: 라이팅 렌더에 노이즈 제거를 적용하지 않습니다. 주어진 씬에 사용할 GI 샘플 수를 결정할 때 유용합니다. 예를 들어, 노이즈 제거 툴 때문에 아티팩트가 발생한 것을 발견한 경우 샘플과 다른 세팅(예: 복사도 캐시, 첫 바운스 레이 가이딩)을 늘리면 노이즈 제거 툴에 더 고퀄리티 입력이 제공됩니다.

  • 완료 시: 렌더링 후 CPU에서 라이트 빌드 결과로부터 노이즈를 제거합니다. 라이트 빌드가 완료되면 씬의 전체 라이트맵에서 노이즈가 제거됩니다.

  • 인터랙티브 프리뷰 시: 각 버추얼 텍스처를 완료하는 대로 노이즈를 제거합니다. 최종 결과를 더 빠르게 확인할 수 있지만 GPU에서 각 타일을 전송하여 CPU에서 노이즈를 제거한 후 다시 표시하기 위해 GPU로 전송해야 하므로 효율은 떨어집니다.

아래 이미지는 노이즈 제거를 적용하여 완료한 라이트 빌드와 적용하지 않고 완료한 라이트 빌드를 비교합니다.

노이즈 제거 비활성화

최종 결과에 노이즈 제거 적용

GPU 라이트매스의 한계

아래 목록은 현재 구현된 GPULM의 알려진 일부 한계를 정리한 것입니다. 이는 전체 목록이 아니며, 핵심 기능 지원에 대한 대략적인 개념을 전달할 목적으로 작성되었습니다. 향후 엔진 릴리즈에서 많은 한계점이 해결되겠지만 이 목록의 일부 기능은 향후에도 지원되지 않을 수 있습니다.

기능

지원 여부(예/아니요/일부)

설명

분산 굽기(Distributed Baking)

아니요

현재 GPULM용 스웜 에이전트를 통한 분산 빌드를 지원할 계획은 없습니다. 현재 전략은 멀티 GPU에 집중하고 GPU 성능과 메모리 용량에 의존하는 것입니다.

멀티 GPU(Multiple GPU)

NVLink나 SLI를 지원하는 NVIDIA 카드가 필요합니다.

반투명 섀도(Translucent Shadows)

반투명 섀도와 채색된 반투명 섀도는 이제 지원됩니다.

월드 포지션 오프셋(World Position Offset)

아니요

픽셀 뎁스 오프셋(Pixel Depth Offset)

아니요

GPULM은 라이팅 불연속으로 이어질 수 있는 PDO를 고려하지 않습니다.

스테이셔너리 스카이 라이트(Stationary Sky Light)

아니요

향후 엔진 릴리즈에서 지원할 계획입니다.

라이팅 채널(Lighting Channels)

아니요

라이팅 시나리오(Lighting Scenarios)

라이트의 커스텀 세팅 및 프로퍼티

아니요

다음 라이트 세팅은 아직 GPULM에서 지원되지 않습니다.

  • 간접 라이팅 강도(Indirect Lighting Intensity)

  • 소스 텍스처(렉트 라이트 제외)(Source Texture (with exception of Rect Lights))

이러한 세팅 중 일부는 스테이셔너리 라이트에 부분적으로 사용 가능합니다. 구워진 GI는 이 기능을 고려하지 않지만 라이트 소스의 다이내믹 직사광은 고려합니다.

프리컴퓨티드 앰비언트 오클루전(Precomputed Ambient Occlusion)

아니요

라이트매스 포털(Lightmass Portals)

아니요

GPULM의 첫 바운스 레이 가이딩 프로퍼티에서 부분적으로 처리됩니다.

라이트매스 임포턴스 볼륨(Lightmass Importance Volume)

일부

이러한 볼륨은 퀄리티 제어에 있어 씬의 영역 구분에 사용되지 않습니다. 대신, 볼류메트릭 라이트맵의 배치를 결정하는 데 사용됩니다.

볼류메트릭 라이트맵(Volumetric Lightmaps)

GPULM에서 고려합니다. 레벨 주위의 라이트매스 임포턴스 볼륨을 사용하여 볼류메트릭 라이트맵을 배치할 수 있지만 필수는 아닙니다. 월드 세팅(World Settings) > 볼류메트릭 라이트맵 디테일 셀 크기를 위한 라이트매스(Lightmass for Volumetric Lightmap Detail Cell Size)의 세팅은 GPULM에서 사용됩니다. 볼류메트릭 라이트맵은 보이는 것만 굽기 모드를 사용할 때도 항상 전체 굽기로 렌더링됩니다.

레벨 오브 디테일 메시(Level of Detail Meshes)

라이트매스 월드 세팅 및 오브젝트별 세팅(Lightmass World Settings and Per-Object Settings)

아니요

CPU 기반 워크플로에서 라이트매스 결과를 조정할 수 있는 세팅이 많습니다. 이러한 세팅의 대부분은 GPULM에서 사용되지 않으며 상응하는 기능이나 세팅도 없습니다.