패스 트레이서(Path Tracer)는 프로그레시브 하드웨어 가속 렌더링 모드로서, 리얼타임 기능의 단점을 완화하기 위해 물리적으로 올바르고 아무런 절충 없는 글로벌 일루미네이션과 머티리얼의 리플렉션/리프랙션 등을 사용합니다. 언리얼 엔진에 내장된 레이 트레이싱 아키텍처를 공유하며, 깔끔하고 포토리얼한 렌더링을 달성하는 데 있어 아무런 추가 설정이 필요 없거나 극히 적은 설정만 필요합니다.
패스 트레이서는 리얼타임 레이 트레이싱(Real-Time Ray Tracing) 및 GPU 라이트매스(GPU Lightmass) 등의 다른 레이 트레이싱 기능과 같은 레이 트레이싱 아키텍처를 사용하므로, 비교 기준 비교 및 프로덕션 렌더에 적합합니다. 패스 트레이서는 씬에 있는 지오메트리와 머티리얼만 사용하여 편향되지 않은 결과를 렌더링하며, 리얼타임 렌더링에 적합하도록 개발된 것과 동일한 레이 트레이싱 코드를 공유하지 않습니다.
패스 트레이서의 장점
패스 트레이서는 다른 렌더링 모드에 비해 다음과 같은 장점이 있습니다.
고퀄리티의 포토리얼한 렌더링을 물리적으로 정확한 결과로 생성할 수 있습니다.
다른 오프라인 렌더러와 비슷한 결과를 추가 설정 없이 또는 최소한의 구성만으로 달성할 수 있습니다.
비슷한 리얼타임 기능들과의 기능적 격차를 줄입니다. 예를 들어, 리플렉션과 리프랙션에서 보이는 머티리얼은 글로벌 일루미네이션 및 패스 트레이싱된 섀도를 갖는 등 아무 제한 없이 렌더링됩니다.
시퀀서(Sequencer) 및 무비 렌더 큐(Movie Render Queue)와 완벽하게 통합되므로 영화나 TV급 렌더 출력을 지원합니다.
패스 트레이싱 예시
다음 씬은 패스 트레이서를 사용하여 달성한 고퀄리티 렌더의 예시입니다.
프로젝트에서 패스 트레이서 활성화하기
패스 트레이서를 사용하려면 프로젝트에 하드웨어 레이 트레이싱(Hardware Ray Tracing)이 활성화되어 있어야 합니다. 다음 시스템 요구 사양을 충족하고 필요 세팅이 활성화되어야 합니다.
시스템 요구 사양:
운영체제: Windows 10 1809 이상
GPU: NVIDIA RTX 및 DXR 드라이버 지원 GTX 시리즈 그래픽 카드
프로젝트 세팅:
플랫폼(Platforms) > Windows > 타기팅된 RHI(Targeted RHIs) > 디폴트 RHI(Default RHI): DirectX 12
엔진(Engine) > 렌더링(Rendering) > 하드웨어 레이 트레이싱(Hardware Ray Tracing): 패스 트레이싱(Path Tracing) 활성화
엔진(Engine) > 렌더링(Rendering) > 하드웨어 레이 트레이싱(Hardware Ray Tracing): 하드웨어 레이 트레이싱 지원(Support Hardware Ray Tracing) 활성화
엔진(Engine) > 렌더링(Rendering) > 하드웨어 레이 트레이싱(Hardware Ray Tracing): 패스 트레이싱(Path Tracing) 활성화
언리얼 엔진 5에는 머티리얼을 위한 패스 트레이서별 셰이더 순열 생성을 제어하는 세팅이 도입되었습니다. 패스 트레이서를 전혀 사용하지 않는 프로젝트에서는 이 세팅을 비활성화함으로써 셰이더 컴파일 시간을 줄일 수 있습니다.
엔진(Engine) > 렌더링(Rendering) > 최적화(Optimizations): 스킨 캐시 계산 지원(Support Compute Skin Cache) 활성화
프로젝트에 하드웨어 레이 트레이싱 지원이 활성화되면, 스킨 캐시 계산 지원(Support Compute Skin Cache)이 아직 활성화되지 않은 경우 활성화할지 묻는 팝업 창이 표시됩니다. 스킨 캐시 계산 지원은 하드웨어 레이 트레이싱과 패스 트레이싱 기능을 지원하는 데 필요합니다.
엔진을 재시작하여 변경사항을 적용합니다.
레벨 에디터에서 패스 트레이서 사용하기
레벨 뷰포트(Level Viewport)에서 뷰 모드(View Modes) 드롭다운 메뉴를 통해 패스 트레이싱(Path Tracing)을 선택하면 패스 트레이서 뷰를 활성화할 수 있습니다.
패스 트레이서는 카메라가 움직이지 않을 때 꾸준히 샘플을 추가하는 프로그레시브 축적 방식을 사용합니다. 목표 샘플 수에 도달하면, 프레임에서 노이즈가 제거되면서(포스트 프로세스 세팅에서 노이즈 제거가 활성화된 경우) 렌더에 남아 있던 노이즈도 모두 사라집니다.
대부분의 경우, 씬이 변경되면 샘플이 무효화되고 프로세스가 다시 시작됩니다. 카메라를 이동하거나, 뷰를 변경하거나, 오브젝트에서 머티리얼을 변경/업데이트하거나, 씬에 오브젝트를 추가/이동하는 모든 경우에 씬의 샘플이 무효화됩니다.
패스 트레이서는 인터랙티브 방식으로 사용될 수 있으며, 샘플이 축적됨에 따라 곧 셰이딩된 색으로 픽셀을 표시하기 시작합니다. 렌더링에 소요되는 시간은 주로 씬의 복잡도와 샘플링되는 머티리얼에 따라 달라집니다. 야외 씬에서는 레이가 더 빠르고 적은 반사 횟수로 탈출할 수 있으므로 더 빨리 렌더링되는 편입니다. 인테리어 씬, 그중에서도 특히 알베도가 1.0에 가까운 머티리얼이 있는 인테리어 씬은 라이트 패스가 더 길기 때문에 렌더링 시간도 더 늘어납니다.
무비 렌더 큐와 함께 패스 트레이서 사용하기
이 섹션에서는 무비 렌더 큐를 사용하여 패스 트레이싱 렌더링 출력을 생성하는 방법을 자세하게 살펴봅니다. 진행하기 전에 무비 렌더 큐에서 일반적인 사용법과 워크플로 정보를 확인해 주세요.
무비 렌더 큐(MRQ)는 고퀄리티 렌더링 출력을 생성하는 프로덕션 파이프라인에 유용합니다. 패스 트레이서와 결합해서 사용하면 다른 방법으로 달성할 수 있는 것보다 훨씬 고퀄리티의 렌더링이 가능합니다.
패스 트레이서 모듈을 사용하면 패스 트레이서를 사용하여 렌더링된 프레임을 출력할 수 있으며, 해당 렌더링 패스에 관련된 몇 가지 세팅이 가능합니다.
포스트 프로세스 볼륨(Post Process Volumes)은 레벨에서 최대 레이 반사 횟수, 이미시브 머티리얼 지원, 노출 등의 특정한 패스 트레이싱 기능도 제어합니다.
MRQ에는 고퀄리티 렌더링을 달성하기 위한 추가적인 컨트롤과 옵션을 제공하는 다른 세팅 모듈도 있습니다.
고해상도(High Resolution) 모듈은 다른 방법보다 더 높은 단일 프레임 해상도를 렌더링하도록 결합 가능한 개별 타일로 프레임을 렌더링하는 세팅을 제공합니다. 개별 타일은 그래픽 카드에서 지원하는 최대 해상도(예: RTX 3080 카드의 경우 7680x4320)를 사용할 수 있습니다.
안티 에일리어싱(Anti-aliasing) 모듈은 픽셀당 샘플 수를 조정하고 모션 블러 퀄리티를 개선하기 위한 특정 세팅을 제공합니다. 이 모듈은 씬을 정확하게 렌더링하기 위해 비주얼 이펙트와 레벨 로딩에 필요할 수 있는 웜업 시간을 제공합니다.
템포럴 샘플 수(Temporal Sample Count)는 시간적으로 약간 오프셋된 인스턴스에서 여러 렌더링 프레임을 보간함으로써 모션 블러 퀄리티를 개선합니다. 이러한 샘플 축적은 노이즈 제거가 실행된 뒤에 발생하므로 개별 공간 패스의 잔여 아티팩트를 안정시킬 수 있습니다. 하지만, 레퍼런스 모션 블러(Reference Motion Blur)가 활성화된 경우, 노이즈 제거 전에 모든 템포럴 샘플을 취합니다. 이러한 경우 스페이셜 샘플(Spatial Sample)을 1로 두고 모든 샘플을 템포럴 샘플을 통해 구동하여 모션 블러 퀄리티를 극대화하는 것이 좋습니다.
스페이셜 샘플 수(Spatial Sample Count)는 템포럴 샘플당 사용할 픽셀당 샘플 수를 설정합니다. 픽셀당 샘플 수를 늘리면 각 렌더 패스에 있는 노이즈가 감소하지만 각 프레임 렌더링에 소요되는 시간은 늘어납니다. MRQ 사용 시 픽셀당 포스트 프로세스 볼륨 샘플 세팅은 무시됩니다.
픽셀당 사용되는 총 샘플 수는 공간 샘플 수와 시간 샘플 수의 곱입니다. 경우에 따라서는 공간과 시간 양쪽에 샘플을 분산하면 더 좋은 결과를 얻을 수 있습니다. 예를 들어, 픽셀당 16개 샘플을 사용하고 싶다면 스페이셜에 4개, 템포럴에 4개를 적용하거나 스페이셜에 16개, 템포럴에 1개, 또는 스페이셜에 1개 템포럴에 16개를 적용할 수 있습니다. 무엇이 최선인지는 대개 원하는 모션 블러 퀄리티에 따라 달라집니다. 스틸의 경우에는 모든 스페이셜 샘플(템포럴 1개)을 사용하는 것이 좋고, 애니메이션의 경우 레퍼런스 모션 블러가 켜진 많은 템포럴 샘플과 스페이셜 샘플 1개를 사용하는 것이 좋습니다.
콘솔 변수(Console Variables) 모듈을 사용하면 렌더링된 프레임과 관련된 모든 콘솔 변수를 추가할 수 있습니다. 여기에는 퀄리티를 위한 오버라이드나 패스 트레이서와 관련된 일부 세팅의 토글이 포함됩니다.
출력(Output) 모듈은 출력 디렉터리와 파일 이름, 이미지 해상도, 렌더링할 시작/끝 프레임을 환경설정하는 세팅을 제공합니다.
패스 트레이서 포스트 프로세스 볼륨 세팅
레벨에 포스트 프로세스 볼륨(Post Process Volumes)을 배치하면 패스 트레이서에 환경설정 가능 프로퍼티를 제공합니다. 여기에는 최대 라이트 바운스 횟수, 픽셀당 샘플, 안티 에일리어싱 퀄리티(필터 너비) 등의 세팅이 포함됩니다.
패스 트레이서 세팅은 패스 트레이싱(PathTracing) 카테고리의 포스트 프로세스 볼륨 디테일 패널에서 확인할 수 있습니다.
| Property | 설명 |
|---|---|
최대 바운스(Max. Bounces) | 최대 바운스 종료 전까지 레이가 이동해야 하는 라이트 바운스의 최대 수를 설정합니다. |
픽셀당 샘플(Samples Per Pixel) | 컨버전스에서 픽셀당 사용되는 샘플 수를 설정합니다. 샘플 수가 높으면 렌더링된 이미지의 노이즈가 줄어듭니다. |
최대 패스 강도(Max Path Intensity) | 패스 트레이싱에 허용되는 최대 노출을 설정하여 파이어플라이 아티팩트 발생을 줄입니다. 노출을 씬 노출보다 더 큰 값으로 조정하면 이러한 아티팩트를 완화할 수 있습니다. 이런 타입의 아티팩트에 대한 상세 정보와 예시를 보려면 이 페이지의 추가 정보 섹션을 참조하세요. |
이미시브 머티리얼(Emissive Materials) | 이미시브 컬러가 설정된 머티리얼이 씬의 라이팅에 기여해야 할까요? 비활성화하면 이러한 색은 카메라 레이에 여전히 표시되지만, 씬에 라이트를 방출하지는 않습니다. 이는 모델링된 지오메트리를 가지고 있지만 동시에 로컬 라이트 소스로도 표현되는 라이트 픽스처와 같이, 일부 기여가 이중으로 계산되었는지를 빠르게 판단하는 데 사용할 수 있습니다. 더 세밀하게 제어하려면 머티리얼 내부에 PathTracingRayTypeSwitch 노드를 사용할 수 있습니다. |
레퍼런스 뎁스 오브 필드(Reference Depth of Field) | 포스트 프로세스 이펙트를 대체하는 레퍼런스 퀄리티 뎁스 오브 필드를 활성화합니다. 이 모드는 반투명 표면, 볼류메트릭 및 헤어 지오메트리를 제대로 처리할 수 있습니다. |
레퍼런스 애트머스피어(Reference Atmosphere) | 스카이 라이트에 스카이 애트머스피어가 기여하는 부분을 굽지 않고 애트머스피어에서 패스 트레이싱을 활성화합니다. 이 세팅이 활성화되면 씬에 있는 모든 스카이 라이트 컴포넌트가 자동으로 무시됩니다. 이 페이지의 레퍼런스 애트머스피어 섹션을 참조하세요. |
디노이저(Denoiser) | 이 토글은 현재 로드된 디노이저 플러그인을 마지막 샘플에 사용하여 렌더링된 출력에서 노이즈를 제거합니다. 기본적으로 NNE 디노이저 플러그인을 사용합니다. 디노이저 플러그인이 활성화되지 않은 경우 이 토글은 렌더링된 출력에 아무 효과를 미치지 않습니다. |
라이팅 컴포넌트(Lighting Components) | 이 섹션에는 이미지를 선택적으로 출력할 수 있도록 특정 라이트 경로의 계산을 제한하는 데 사용할 수 있는 여러 체크박스가 포함되어 있습니다. 이를 사용하여 이미지를 여러 패스로 분해하여, 나중에 미적 요소를 추가할 수 있습니다. 간접 이미시브는 이미시브 머티리얼의 바운스 라이팅을 제어한다는 점에서 약간 특별합니다. 실제 라이트 소스로도 표현되는 표면의 일루미네이션이 이중으로 계산되는 것을 방지하거나 작은 이미터에서 발생하는 노이즈를 줄이기 위해 이 프로퍼티를 해제할 수 있습니다. 예를 들어 작은 전구를 표현하는 이미시브 머티리얼이 포인트 또는 스포트 라이트 소스도 사용하여 영역을 밝히는 경우 중복 일루미네이션이 됩니다. |
MRQ로 라이팅 컴포넌트 렌더링하기
패스 트레이서는 무비 렌더 큐로 호출할 수 있는 블루프린트 이벤트를 통해 디퓨즈와 스페큘러 같은 개별 라이팅 컴포넌트 렌더를 출력할 수 있습니다.
이를 위해서는 포스트 프로세스 볼륨(Post Process Volume)이 포함된 액터 블루프린트(Actor Blueprint)를 만들어야 합니다. 볼륨을 무한 규모(언바운드)(Infinite Extent(Unbound))로 설정하고 우선순위(Priority)를 높게 지정하여 항상 씬의 다른 모든 포스트 프로세스 볼륨보다 우선으로 선택되도록 합니다.
포스트 프로세스 볼륨의 목적은 블루프린트에서 커스텀 이벤트를 통해 원하는 라이팅 컴포넌트 구성을 설정하는 것입니다. 이러한 커스텀 이벤트는 무비 파이프라인 환경설정 파일을 통해 실행할 수 있는데, 시작 콘솔 명령 트랙(Start Console Command Track)을 사용하고 Ke * [커스텀 이벤트 이름] 구문을 사용하여 각 이벤트를 호출하면 됩니다.
아래 예시에서 RenderSpecular라는 커스텀 이벤트는 무비 파이프라인 환경설정에서 Ke * RenderSpecular 콘솔 명령을 통해 호출됩니다.
이 프로세스를 통해 프로젝트의 필요에 따라 고유한 라이팅 컴포넌트 환경설정을 보다 쉽게 구성할 수 있습니다.
여러 라이팅 컴포넌트 렌더를 실행하려면 MRQ에서 원하는 패스 환경설정마다 한 번씩, 해당 샷을 여러 번 호출해야 합니다. 큐에 있는 각 항목은 서로 다른 무비 파이프라인 환경설정을 참조해야 하며, 각 환경설정은 다른 커스텀 이벤트를 호출하여 라이팅 컴포넌트를 구성합니다(아래 예시 참조).
이 구성에서는 렌더를 여러 번 실행해야 하지만, 패스 트레이서에는 초기 출력이 있으므로 여러 라이팅 컴포넌트 환경설정을 렌더링하는 동안 렌더링 시간에 직접적인 선형 스케일이 없다는 점을 유의해야 합니다.
생성한 블루프린트에서 다음 이벤트를 구성해야 합니다.
Ray Component Split | Ray Path Split | Path Component Split |
이미지를 클릭하면 최대 크기로 볼 수 있습니다. | 이미지를 클릭하면 최대 크기로 볼 수 있습니다. | 이미지를 클릭하면 최대 크기로 볼 수 있습니다. |
패스 트레이서의 한계
다음은 언리얼 엔진에서 현재 패스 트레이싱이 보여주는 일부 한계입니다.
인테리어 렌더를 느리게 만드는 밝은 머티리얼
밝은 흰색처럼 알베도 값이 1.0에 근접한 머티리얼은 프레임 렌더링이 필요 이상으로 오래 걸립니다. 왜냐하면 패스 트레이서가 반사가 많은 라이트 패스를 시뮬레이션해야 하기 때문입니다. 특히 인테리어 씬이 이 부분에 민감한데, 라이트 레이가 종료 전까지 환경을 탈출하는 데 시간이 오래 걸릴 수 있기 때문입니다.
패스 트레이서는 러시안룰렛(Russian Roulette) 기법을 채택하여 씬에 기여할 가능성이 별로 없는 레이를 보다 일찍 종료합니다. 씬에서 계속해서 반사되는 레이가 발생할 가능성이 적어집니다. 왜냐하면 러시안룰렛 기법으로 종료 가능한 경우 이러한 레이가 종료되기 때문입니다. 머티리얼의 알베도 값이 1.0에 가까울수록 레이 패스가 종료될 가능성이 작아지고 해당 프레임 렌더링 시간이 길어집니다.
들어오는 모든 라이트를 반사하는 머티리얼은 실제 세계에서는 드물고 표면이 색바랜 모습인 경우가 많습니다. 이러한 연유로 모든 디퓨즈 머티리얼의 베이스 컬러를 0.8 미만으로 지정하는 것이 좋습니다.
다이내믹 씬 엘리먼트
패스 트레이서는 시간이 지남에 따라 렌더러가 샘플을 축적하도록 만드는 방식으로 작동합니다. 이는 스태틱 씬에 이상적입니다. 라이트 이동, 애니메이팅된 스킨 입힌 메시, 비주얼 이펙트와 같은 다이내믹 씬에는 별로 적합하지 않습니다. 이러한 유형의 엘리먼트는 에디터에서 패스 트레이싱을 무효화하지 않으며, 프레임에서 블러 처리되거나 줄무늬 형태의 아티팩트로 나타납니다. 이는 에디터에서 작업할 때만 나타나며, 무비 렌더 큐로 최종 엘리먼트를 렌더링하여 해결할 수 있습니다.
뷰포트와는 다른 해상도로 고해상도 스크린샷을 캡처(아래 참조)해서 이 문제를 해결할 수도 있는데, 이 경우 엔진 틱 시간 진행 없이 모든 샘플을 취하기 때문입니다.
Path Tracing Material Quality Switch 노드
패스 트레이싱 기능에 적합하게 머티리얼을 최적화하기 위해 PathTracingQualitySwitch 노드로 복잡도를 낮추면 표준 머티리얼에 사용되는 임시 해결책이나 복잡도가 줄어듭니다. 런타임은 문제가 아니므로 머티리얼을 절충할 필요는 없습니다. 이러한 노드를 사용하면 머티리얼을 복제하지 않고 절충 없는 결과를 제공할 수 있습니다.
Ray Tracing Material Quality Switch 노드
레이 트레이싱 기능에 적합하게 머티리얼을 최적화하기 위해 Ray Tracing Quality Switch 노드로 복잡도를 낮추면 런타임 시 비용을 줄이는 데 도움이 됩니다. 이 경우 언리얼 엔진의 레이 트레이싱 기능은 디퍼드 렌더러에 비해 더 단순한 머티리얼을 사용할 수 있습니다.
패스 트레이서는 고퀄리티 결과물을 내는 기능이므로 레이 트레이싱 기반임에도 불구하고 이러한 Switch 노드의 노멀(Normal) 포트를 사용합니다. 특히 패스 트레이서에 대한 머티리얼의 행동을 제어하려면, 대신 PathTracingQualitySwitch 노드를 사용합니다.
HDRIBackdrop이 패스 트레이서와 호환되지 않음
현재 HDRIBackdrop 컴포넌트를 구현하면 패스 트레이서에서 조도(일루미네이션)를 이중으로 계산하고 HDRI 라이팅의 임포턴스 샘플링을 비활성화하는 결과로 이어집니다. 지정된 텍스처와 함께 스카이 라이트를 사용하고 패스 트레이서 콘솔 변수
r.PathTracing.VisibleLights 2를 설정하여 백드롭이 나타나게 하는 것이 좋습니다.
이는 그림자가 드리워지는 지면을 제공하지 않습니다.
지원되는 패스 트레이서 기능
패스 트레이서의 한계는 현재 구현된 기능의 한계일 수도 있고, 지원 계획이 없는 기능일 수도 있습니다. 이 기능 목록은 현재 릴리즈에서 지원하는 기능에 대한 개념을 알려주려는 목적으로 작성되었습니다. 엔진에서 지원되는 기능과 프로퍼티를 전부 포함하는 목록은 아닙니다.
패스 트레이서는 언리얼 엔진의 리얼타임 레이 트레이싱(Real-Time Ray Tracing) 기능에서 사용된 것과 같은 코드를 사용합니다. 전반적으로 리얼타임 레이 트레이싱에서 지원되는 기능은 패스 트레이서에서도 지원됩니다.
| 기능 이름 | 지원 여부 | 추가 참고 사항 |
|---|---|---|
| 지오메트리 타입 | ||
나나이트(Nanite) | 테스트함 | 나나이트 활성화 메시에는 기본적으로 예비 메시가 사용됩니다. 스태틱 메시 에디터에서 예비 상대 오차(Fallback Relative Error) 파라미터를 낮추면 소스 메시의 트라이앵글을 더 많이 사용합니다. (실험단계) 나나이트 메시의 네이티브 패스 트레이싱에 대한 초기 지원은 |
스킨을 입힌 메시(Skinned Meshes) | 테스트함 | 애니메이션은 패스 트레이서를 무효화하지 않으므로 뷰포트에 블러 또는 줄무늬 형태가 보일 수 있습니다. 무비 렌더 큐는 최종 이미지 출력에 사용해야 합니다. |
월드 포지션 오프셋 기반 애니메이션(World Position Offset-driven Animation) | 테스트함 | 개별 씬 액터에서 월드 포지션 오프셋 평가(Evaluate World Position Offset)를 활성화해야 합니다. 패스 트레이서를 무효화하지 않으므로 뷰포트에 블러 또는 줄무늬 형태가 보일 수 있습니다. 무비 렌더 큐는 최종 이미지 출력에 사용해야 합니다. |
헤어 스트랜드(Hair Strands) | 테스트함 | 헤어 스트랜드 지원은 효과적인 가속 구조체 빌드에 많은 리소스가 필요할 수 있어, 여전히 실험단계로 간주되고 있습니다. 콘솔 변수 |
랜드스케이프(Landscape) | 테스트함 | |
스플라인 메시(Spline Meshes) | 테스트함 | |
인스턴스드 스태틱 메시(Instanced Static Mesh) | 테스트함 | |
계층형 인스턴스드 스태틱 메시(Hierarchical Instanced Static Mesh) | 테스트함 | |
워터 지오메트리(Water Geometry) | 테스트함 |
|
| Visual Effects | ||
나이아가라 파티클 시스템(Niagara Particle Systems) | 테스트함 | 파티클 시스템은 패스 트레이서를 무효화하지 않으므로 블러 또는 줄무늬 형태가 뷰포트에 보일 수 있습니다. 무비 렌더 큐는 최종 이미지 출력에 사용해야 합니다. |
| 라이트 타입 | ||
디렉셔널 라이트(Directional Light) | 테스트함 | |
스카이 라이트(Sky Light) | 테스트함 |
|
포인트 라이트(Point Light) | 테스트함 | |
스포트 라이트(Spot Light) | 테스트함 | |
렉트 라이트(Rect Light) | 테스트함 | |
| 라이팅 기능 및 프로퍼티 | ||
이미시브 머티리얼(Emissive Materials) | 테스트함 | 작은 이미시브 부분은 렌더링 씬에 많은 노이즈를 유발할 수 있습니다. 또한, 이미시브 부분에 라이트가 연관되어 있는 경우 라이팅이 중복 계산될 수 있습니다. 포스트 프로세스 볼륨 세팅에서 이미시브 머티리얼(Emissive Materials) 체크박스를 사용하여 비활성화하거나, |
스카이 애트머스피어(Sky Atmosphere) | 테스트함 | 컴포넌트에서 리얼타임 캡처(Real Time Capture)를 활성화한 씬에는 스카이 라이트가 필요합니다. 아니면 포스트 프로세스 볼륨 세팅인 레퍼런스 애트머스피어(Reference Atmosphere)를 활성화하여 스카이 애트머스피어 기여도를 스카이 라이트에 굽는 대신 애트머스피어를 패스 트레이싱할 수도 있습니다. 이 세팅이 활성화되면 씬에 있는 모든 스카이 라이트가 자동으로 무시됩니다. 이 페이지의 포그 및 애트머스피어 섹션을 참조하세요. |
볼류메트릭 클라우드(Volumetric Clouds) | 부분적 | 스카이 애트머스피어와 마찬가지로 스카이 라이트에 의해 캡처되거나, 패스 트레이서 세팅 섹션의 포스트 프로세스 세팅에서 레퍼런스 애트머스피어 모드를 사용할 때 네이티브로 표시됩니다. |
익스포넨셜 하이트 포그(Exponential Height Fog) | 테스트함 | 볼류메트릭 포그(Volumetric Fog) 세팅을 활성화해야 합니다. 일부 컨트롤은 물리적 의미가 없으므로 모든 컨트롤이 지원되지는 않습니다. 이 페이지의 포그 및 애트머스피어 섹션을 참조하세요. |
볼류메트릭 포그(Volumetric Fog) | 테스트함 | 익스포넨셜 하이트 포그 컴포넌트를 활성화해야 합니다. 이 페이지의 포그 및 애트머스피어 섹션을 참조하세요. |
IES 프로파일(IES Profiles) | 테스트함 | |
라이트 함수(Light Functions) | 테스트함 |
|
| 포스트 프로세싱 | ||
뎁스 오브 필드(Depth of Field) | 테스트함 | 패스 트레이서가 래스터라이저로 생성된 것을 사용하는 대신 자체 뎁스 패스를 렌더링합니다. 이를 통해 뎁스와 RGB 컬러 결과 사이에 일치 정확도가 높아져 뎁스에 의존하는 포스트 프로세싱 패스가 향상됩니다. 이는 포스트 프로세스 볼륨 세팅에서 활성화할 수 있는 레퍼런스 뎁스 오브 필드(Reference Depth of Field) 옵션에는 영향을 주지 않습니다. |
모션 블러(Motion Blur) | 부분적 | 패스 트레이싱(Path Tracing) 모듈에서 레퍼런스 모션 블러(Reference Motion Blur)를 활성화한 경우 무비 렌더 큐를 사용하면 가장 정확한 결과를 얻을 수 있습니다. 이 옵션을 사용하면 더 높은 퍼포먼스 비용으로 더 정확한 모션 블러를 구현하여 부드러운 결과를 얻을 수 있습니다. 이 모드에서는 포스트 프로세스 벡터 블러가 적용되지 않으며 모든 스페이셜/템포럴 샘플 축적 후 노이즈 제거가 적용됩니다. 퀄리티를 높이기 위해 더 높은 템포럴 샘플이 적용됩니다. 아주 높은 템포럴 샘플 수를 사용할 때는 시퀀서의 틱 해상도 한계를 주의하세요. |
| 머티리얼 셰이딩 모델 | ||
라이팅제외(Unlit) | 테스트함 | |
디폴트 라이팅포함(Default Lit) | 테스트함 | |
서브서피스(Subsurface) | 테스트함 | |
사전통합 스킨(Preintegrated Skin) | 테스트함 | 서브서피스 셰이딩 모델과 똑같이 렌더링됩니다. |
AlphaHoldout | 테스트함 | |
클리어 코트(Clear Coat) | 테스트함 | |
서브서피스 프로파일(Subsurface Profile) | 테스트함 | 벌리(Burley) 서브서피스 스캐터링이 활성화된 서브서피스 프로파일이 필요합니다. |
양면 폴리지(Two Sided Foliage) | 테스트함 | |
헤어(Hair) | 테스트함 | 이 셰이딩 모델 지원 기능은 여전히 실험단계로 간주되며 아직 라이팅포함(Lit) 셰이딩 모델의 행동을 대상으로는 보정되지 않았습니다. |
클로스(Cloth) | 테스트함 | |
눈(Eye) | 테스트함 | |
단일 레이어 물(SingleLayerWater) | 테스트함 | 이 셰이딩 모델을 지원하는 실험단계 기능이 추가되었습니다. 래스터 구현이 포스트 프로세싱에 크게 의존하므로 유사 일치는 현재 가능하지 않습니다. |
얇은 반투명(Thin Translucent) | 테스트함 | |
머티리얼 표현식에서(From Material Expression) | 테스트함 | |
| 머티리얼 기능 | ||
서브스트레이트 머티리얼(Substrate Materials) | 테스트함 | 초기 지원이 구현됩니다. 서브스트레이트(Substrate)는 실험단계 기능으로, 아직 개발 중입니다. |
스파스 볼륨 텍스처(Sparse Volume Textures) | 부분적 | 초기 지원이 추가되었습니다. 구성 및 사용에 대한 자세한 내용은 스파스 볼륨 텍스처를 참조하세요. |
불균질 볼륨(Heterogeneous Volumes) | 부분적 | 초기 지원이 Added 스카이 애트머스피어는 아직 지원되지 않습니다. 자세한 내용은 불균질 볼륨을 참조하세요. |
색상 있는 섀도(Colored Shadows) | 테스트함 | 얇은 반투명(Thin Translucent) 또는 솔리드 유리를 통해 구현할 수 있습니다. 이 페이지의 패스 트레이서를 통한 유리 렌더링 및 컬러 흡수 섹션을 참조하세요. |
반투명 섀도(Translucent Shadows) | 테스트함 | |
리프랙션(Refraction) | 테스트함 | |
데칼(Decals) | 테스트함 | DecalActors와 Mesh 데칼 둘 다 지원됩니다. |
애니소트로피(Anisotropy) | 테스트함 | |
| 시스템 지원 | ||
멀티 GPU(Multiple GPU) | 테스트함 | NVIDIA NvLink나 SLI를 지원하는 GPU가 필요합니다. 이 페이지의 멀티 GPU를 사용하여 렌더링 활성화하기 섹션을 참조하세요. |
시퀀서 무비 렌더 큐(Sequencer Movie Render Queue) | 테스트함 | |
직교 카메라(Orthographic Camera) | 테스트함 | |
인스턴스별 커스텀 데이터(Per Instance Custom Data) | 테스트함 | |
인스턴스별 랜덤 데이터(Per Instance Random Data) | 테스트함 |
추가 정보
패스 트레이싱 모드는 언리얼 엔진 내 다른 렌더링 메서드와는 다른 방식으로 작동합니다. 이는 리얼타임 렌더링에는 잘 작동하는 메서드가 패스 트레이싱 렌더링에는 잘 맞지 않을 수도 있다는 뜻입니다. 다음 섹션에서는 이러한 불일치와 일반적인 문제, 그리고 패스 트레이서로 결과를 개선하는 단계에 대해 설명합니다.
파이어플라이 아티팩트 줄이기
패스 트레이서는 라이트를 시뮬레이션하기 위해 머티리얼 프로퍼티에 따라 레이를 무작위로 트레이싱합니다. 씬의 밝은 영역이 발견될 확률이 낮으면, 결과 샘플이 지나치게 밝아질 수 있으며 프레임 내에서 나타났다 사라지는 빛 입자들(파이어플라이)이 생성될 수 있습니다. 패스 트레이싱은 이러한 효과를 일으키는 가장 일반적인 원인을 최소화하려고 시도하지만, 그래도 일부 시나리오에서는 여전히 발생할 수가 있습니다.
패스 트레이싱된 결과가 블룸 포스트 프로세스 패스와 결합되면, 그 결과로 픽셀이 나타났다 사라지는 방식이나 밝아졌다 어두워지는 방식 때문에 특히나 더 두드러져 보일 수 있습니다.
포스트 프로세스 세팅 최대 패스 강도(Max Path Intensity)는 렌더링된 패스 트레이싱된 씬에서 사용되는 최대 강도를 제어합니다. 디폴트 값이면 상당히 적극적으로 파이어플라이를 범위제한하므로 대부분의 경우 변경할 필요가 없습니다. 값을 높이면 더 많은 노이즈가 발생하는 대신 렌더링 결과가 더욱 정확해지고, 값을 낮추면 일부 에너지가 손실되는 대신 더 적극적으로 범위제한할 수 있습니다. 여기의 값은 현재 노출에 대한 상댓값이므로 모든 경우에 일정하게 유지할 수 있습니다.
노이즈 제거 옵션
뷰포트, 무비 렌더 그래프 또는 무비 렌더 큐를 통해 패스 트레이서를 사용해 인터랙티브 방식으로 프레임을 렌더링하면 모두 프레임에 약간의 노이즈가 나타납니다. 노이즈를 줄이는 한 가지 방법은 노이즈 제거 알고리즘을 사용하여 최종 결과물을 안정시키고 적은 노이즈로 더 깨끗한 이미지를 생성하는 것입니다.
패스 트레이서는 패스 트레이싱 섹션의 디노이저(Denoiser)가 활성화된 경우 포스트 프로세스 볼륨(Post Process Volume) 세팅을 통해 노이즈 제거를 활성화합니다.
기본적으로 두 가지 플러그인을 사용할 수 있습니다.
NNE 디노이저는 디폴트 구현입니다. Intel의 Open Image Denoise와 동일한 네트워크를 기반으로 하지만, 퍼포먼스 향상을 위해 GPU에서 실행합니다. 권장되는 디폴트 디노이저입니다.
NFOR 디노이저는 애니메이션 렌더링에 최적화된 디노이저입니다. 인접 프레임을 고려하며 무비 렌더 큐를 통해 애니메이션 시퀀스를 렌더링할 때 디폴트 디노이저보다 더 안정적인 결과를 얻을 수 있습니다.
또한 다음과 같은 서드 파티 디노이즈 라이브러리도 지원됩니다.
Intel의 Open Image Denoise 라이브러리는 CPU 기반 디노이저로, 마지막으로 가져온 샘플에서 노이즈를 제거하고 길게 실행되는 프레임의 퀄리티를 개선합니다. 내장된 NNE 디노이저와 동일한 결과를 생성합니다.
NVIDIA Optix AI-Accelerated Denoiser 라이브러리는 수만 개의 이미지로 훈련된 GPU 가속 인공 지능으로, 비주얼 노이즈를 줄이면서 더 빠르게 노이즈를 제거합니다. 디폴트 디노이저와는 다른 결과를 얻을 수 있지만, NVidia GPU가 필요합니다.
다음은 프레임에 노이즈 제거를 적용한 경우와 적용하지 않은 경우를 비교한 예시입니다.
NNE 디노이저
NNEDenoiser 플러그인은 기본적으로 활성화되어 있습니다.
이 디노이저는 임의의 신경망 디노이저를 임포트하고 다양한 NNE 런타임에서 실행할 수 있는 일반 디노이저 플러그인입니다. 이 플러그인은 CPU 또는 GPU에서 실행할 수 있는, 각각 알파가 포함되거나 포함되지 않은 빠르고 균형 잡힌 고퀄리티의 다양한 Intel Open Image Denoiser 버전과 함께 제공됩니다. 기본값은 GPU에서 실행되는 알파가 포함된 균형 잡힌 프리셋으로, 적절한 퀄리티의 인터랙티브 노이즈 제거를 제공합니다.
프리셋을 변경하거나 고유한 신경망 디노이저를 추가하고 활성화하는 방법에 대한 자세한 내용은 NNE 디노이저를 참조하세요.
Open Image Denoise 플러그인
이 노이즈 제거 툴은 CPU에서 실행되며, 인터랙티브 노이즈 제거 툴로 설계되지는 않았지만, 장기 실행 프레임의 퀄리티를 개선하는 데 도움이 됩니다. 이 노이즈 제거 툴은 템포럴 측면의 일관성을 항상 보장하지는 않으므로 안정적인 출력을 위해 픽셀당 많은 샘플이 필요할 수 있습니다. 템포럴 안정성은 무비 렌더 큐를 사용하여 안티 에일리어싱(Anti-Aliasing) 모듈 세팅에서 템포럴 샘플 수(Temporal Sample Count)를 늘리면 개선될 수 있습니다.
Optix Denoise 플러그인
실험단계의 플러그인입니다.
플러그인(Plugins) 브라우저에서 프로젝트에 OptixDenoise 플러그인을 활성화해야 합니다.
이 노이즈 제거 툴은 GPU 가속 인공 지능을 사용하여 더 빠르게 비주얼 노이즈를 줄입니다. 또한, 노이즈 제거 툴에는 노이즈가 제거된 애니메이션에서 플리커링을 줄이려고 시도하는 템포럴 컴포넌트가 포함되어 있습니다.
프로젝트에 여러 플러그인이 활성화되어 있는 경우, 콘솔 변수를 사용하여 포스트 프로세스 볼륨 세팅에서 디노이저(Denoiser)를 활성화할 때 사용할 디노이저를 선택해야 합니다. r.PathTracing.SpatialDenoiser.Type 콘솔 변수를 사용하여 스페이셜(0, 디폴트) 노이즈 제거를 사용할지 템포럴(1) 노이즈 제거를 사용할지 선택할 수 있습니다. r.PathTracing.Denoiser.Name을 NNEDenoiser(디폴트) 또는 OIDN 등으로 설정하여 스페이셜 노이즈 제거를 활성화할 때 사용할 디노이저를 선택할 수 있습니다. r.PathTracing.TemporalDenoiser.Name을 NFOR(디폴트), NNEDenoiser 또는 OptiX 등으로 설정하여 템포럴 노이즈 제거를 활성화할 때 사용할 디노이저를 선택할 수 있습니다.
패스 트레이서를 사용한 스카이 라이팅
스카이 라이팅은 두 가지 방식으로 처리됩니다. 적용된 스카이 머티리얼과 함께 전통적인 스카이박스를 사용하거나, 스카이 라이트(Sky Light)의 리얼타임 캡처(Real Time Capture) 모드를 사용하여 씬에서 스카이, 애트머스피어, 구름을 캡처하는 것입니다.
스카이박스를 사용하여 스카이를 표현하려면 메시와 머티리얼에서 몇 가지 설정을 해야 패스 트레이서와 원활히 작동합니다. 먼저, 스카이 머티리얼의 디테일(Details) 패널 세팅에서 하늘 여부(Is Sky) 플래그가 활성화되어 있어야 합니다. 그래야 씬에 스카이 라이트가 있을 때 스카이박스 머티리얼의 일루미네이션이 두 번 계산되지 않습니다. 또한, 스카이박스가 실제로 두 번 계산되는 경우 발생할 수 있는 노이즈 양을 줄일 수도 있습니다.
레벨에서 스카이박스 액터를 선택하고 디테일 패널을 통해 섀도 캐스트(Cast Shadows)를 비활성화함으로써 메시가 씬에 스카이 라이트와 디렉셔널 라이트가 기여하는 부분을 가리지 않게 합니다.
또는, 스카이 라이트에서 리얼타임 캡처(Real Time Capture) 모드를 활성화하여 스카이 애트머스피어와 볼류메트릭 클라우드 시스템의 라이팅 기여도를 캡처할 수도 있습니다. 이렇게 스카이 라이팅 표현을 위한 스카이박스 캡처, 스카이 애트머스피어, 볼류메트릭 클라우드에 가해지는 제한 때문에 그 해상도는 스카이 라이트 큐브맵 해상도(Cubemap Resolution)에 따라 달라집니다.
포그 및 애트머스피어 볼류메트릭
패스 트레이서는 스카이 애트머스피어 및 익스포넨셜 하이트 포그 컴포넌트의 볼류메트릭을 지원합니다.
레퍼런스 애트머스피어
포스트 프로세스 볼륨 세팅에 레퍼런스 애트머스피어(Reference Atmosphere)가 활성화되어 있으면 스카이 애트머스피어 라이팅은 볼류메트릭 방식으로 계산하여 더 현실적인 결과를 제공합니다. 이 모드에서는 씬의 모든 스카이 라이트가 자동으로 무시되는데, 이는 스카이 라이팅이 로컬 라이트 소스와 디렉셔널 라이트 소스의 영향만 받기 때문입니다. 패스 트레이서는 행성을 아주 큰 구체로 표현하여, 섀도잉이 정확하게 나타나고 색이 지면에서 모든 방향으로 반사된 후 하늘에 바운싱되는 라이팅에 적절하게 반영되도록 표현합니다.
레퍼런스 애트머스피어 사용 시 추가 참고 사항
스카이 애트머스피어를 의도한 대로 사용하려면 트랜스폼 모드(Transform Mode) 세팅을 컴포넌트 트랜스폼에 행성 상단(Planet Top at Component Transform)으로 조정하고 컴포넌트를 씬 아래로 이동합니다. 그러면 행성 지면이 씬에 간섭하지 않습니다.
언리얼 엔진 5.6부터는 이제 볼류메트릭 클라우드 컴포넌트(Volumetric Cloud components)를 지원합니다. 기본적으로 래스터화 파이프라인과의 호환성을 보장하고 퍼포먼스를 개선하기 위해 대략적인 형태의 다중 스캐터링이 사용됩니다. 클라우드에서 진정한 다중 스캐터링은
r.PathTracing.CloudMultipleScatterMode 2를 사용하여 활성화할 수 있지만, 렌더링 시간이 크게 늘어날 수 있습니다. 디폴트 값인 1은 클라우드 머티리얼의 Volumetric Advanced Output 노드에 환경설정된 파라미터를 사용합니다.레퍼런스 애트머스피어 모드를 사용할 때는 행성 애트머스피어 크기 이상으로 스케일을 조절하지 않는 한 스카이박스 지오메트리를 비활성화하는 것이 좋습니다. 행성 크기 이상으로 스케일을 조절하는 경우 달, 별 또는 행성 대기 밖에 존재하는 기타 오브젝트를 표현하는 데 사용할 수 있습니다. 패스 트레이서에 대해서만 스카이박스를 숨기려면 메시를 레이 트레이싱에 보이지 않도록 표시하는 것이 가장 간단합니다.
클라우드는 태양을 나타내는 디스턴트 라이트에서 이 옵션을 활성화한 경우에만 지오메트리에 섀도를 캐스트합니다.
볼류메트릭 포그
볼류메트릭 포그가 활성화된 익스포넨셜 하이트 포그 컴포넌트 사용 시 포그가 지원됩니다.
일부 파라미터는 물리적으로 의미가 없으므로 모든 컨트롤이 지원되지는 않습니다. 기본적으로 지원되는 파라미터는 다음과 같습니다.
포그 밀도(Fog Density) 및 포그 높이 감쇠(Fog Height Falloff)
스캐터링 분포
알베도
소멸 스케일
뷰 디스턴스
범위가 무한하면 렌더링 시간이 길어질 수 있으므로 하이트 포그의 영향력 영역을 제한하는 데 사용됩니다.
불균질 볼륨 렌더링
불균질 볼륨은 나이아가라 플루이드(Niagara Fluids) 플러그인을 사용하거나 씬에서 스파스 볼륨 텍스처 머티리얼을 사용하는 불균질 볼륨 액터를 인스턴스화하여 렌더링합니다.
패스 트레이서를 사용한 불균질 볼륨 렌더링에 대한 자세한 내용은 불균질 볼륨 및 스파스 볼륨 텍스처를 참조하세요.
라이트 소스의 직접적인 가시성
소스 반경이 있는 포인트 라이트, 렉트 라이트, 스카이 라이트와 같은 비규칙적 라이트는 기본적으로 직사 카메라 레이에 표시되지 않습니다. 리얼타임 캡처가 활성화된 스카이 라이트의 경우는 예외입니다.
일반적으로 카메라 레이에는 스카이박스 지오메트리 및 스태틱, 또는 지정된 큐브맵과 쌍을 이루는 스카이라이팅이 보이지 않습니다. r.PathTracing.VisibleLights 1 콘솔 변수를 설정하여 이 부분을 수정할 수 있습니다.
가시광 콘솔 변수가 활성화되었든 아니든 리플렉션과 리프랙션에 모든 라이트 소스가 보입니다. 이렇게 하면 가능한 모든 레이 패스가 이를 볼 수 있습니다. 하지만 어떤 경우에는 예상외의 동작을 일으킬 수 있습니다. 예를 들어, 유리창 바로 뒤에 배치한 렉트 라이트는 볼 수 있으며, 진정한 리프랙션의 경우 리프랙션 인덱스가 1이 아닐 때만 창을 통과해서 보지 못하도록 차단합니다.
패스 트레이서를 통한 유리 렌더링
기본 유리 머티리얼
패스 트레이서에서 유리의 기본 머티리얼 구성은 몇 가지 요소에 따라 달라집니다. 처음 해야 할 결정은 셰이딩될 메시가 두께로 모델링되었는지 여부입니다. 먼저 솔리드, 즉 '두꺼운' 셰이딩 모델을 살펴보겠습니다. 이 경우 머티리얼에 다음 세팅을 사용해야 합니다.
셰이딩 모델(Shading Model): 디폴트 라이팅포함(Default Lit)
블렌드 모드(Blending Mode): 반투명(Translucent)
라이팅 모드(Lighting Mode): 서피스 포워드 셰이딩(Surface Forward Shading)(모든 셰이더 파라미터에 대한 액세스 활성화)
리프랙션 메서드(Refraction Method): 굴절률(Index of Refraction)
이렇게 기본 환경설정을 하고 나면 이제 오파시티(Opacity)를 0으로 설정하여 머티리얼의 일부에서 라이트가 리프랙션되게 할 수 있습니다. 오파시티 파라미터는 디퓨즈 및 스페큘러가 포함된 '디폴트 라이팅포함(Default Lit)' 셰이딩 모델과 투명 유리를 표현하는 순수 리프랙션 셰이딩 모델 간의 블렌딩으로 볼 수 있습니다. 기본적으로 리프랙션 양은 스페큘러 컬러에서 자동으로 파생됩니다. 더 정교하게 제어하기 위해 머티리얼의 '굴절률(Index of Refraction)' 슬롯에 값을 연결하여 이를 오버라이드하고 IOR의 레이 블렌딩 이펙트와는 독립적으로 반사율을 제어할 수 있습니다. 다음은 가장 간단한 유리 머티리얼의 예시입니다.
이제 독립적인 IOR로 프레넬 이펙트와 리프랙션을 제어하여 유리 셰이딩을 더 잘 제어할 수 있는 방법을 살펴보겠습니다. 대략 IOR 1.8에 해당하는 최대 0.08의 스페큘러 컬러(SpecularColor)만 생성할 수 있는 스페큘러를 사용하는 대신, 메탈릭을 스페큘러 컬러와 베이스 컬러(BaseColor)를 같게 만들어 주는 1.0으로 설정하여 스페큘러 컬러를 보다 직접적으로 구동하겠습니다. 그런 다음 공식 SpecularColor=((IOR-1)/(IOR+1))^2를 사용하여 굴절률 값에 따라 적절한 스페큘러 컬러를 계산합니다. 다음은 예시 머티리얼입니다.
다음은 스페큘러와 리프랙션을 독립적으로 제어하는 예시입니다. 리프랙션:
슬라이더를 드래그하면 유리 머티리얼의 스페큘러 변화를 확인할 수 있습니다. 스페큘러 값은 0에서 1.0까지 0.1씩 증가합니다. 이러한 변화는 IOR 값 1.0에서 1.789에 해당합니다.
슬라이더를 드래그하면 유리 머티리얼의 스페큘러 변화를 확인할 수 있습니다. 스페큘러 값은 0에서 1.0까지 0.1씩 증가합니다.
얇은 반투명 셰이딩 모델
얇은 반투명(Thin Translucency) 셰이딩 모델은 유리창이 하나의 평면 폴리곤으로 표현되는 경우처럼 오브젝트에 두께가 전혀 없을 때 물리적으로 정확한 결과를 얻는 데 유용합니다. 얇은 유리 머티리얼에 대한 구성은 대체로 위와 같고 다음 세팅만 변경하면 됩니다.
셰이딩 모델(Shading Model): 얇은 반투명(Thin Translucent)
Thin Translucent Material 노드를 추가하여 컬러를 제어합니다(아래 컬러 흡수 섹션 참조).
솔리드와 얇은 머티리얼의 모든 다른 행동은 같습니다. 얇은 셰이딩 모델에서 한 가지 중요한 차이점은 러프니스가 낮을 때 굴절률로 인해 실제로 레이 방향이 바뀌지 않는다는 것입니다. 하지만, 리플렉션 러프니스와 트랜스미션(투과) 러프니스 사이의 비율을 제어할 뿐만 아니라 리플렉션 양과 트랜스미션 양에도 미묘한 영향을 미칩니다. 굴절률이 1에 가까워질수록 트랜스미션 러프니스는 감소하지만, 리플렉션 러프니스는 그대로 유지됩니다. 이 이펙트는 솔리드 유리 머티리얼을 사용한 결과와 얇은 유리판을 사용한 결과를 비교하면 확인할 수 있습니다.
두 경우 모두, 리프랙션 메서드가 굴절률(Index Of Refraction)로 설정되지 않았다면 패스 트레이서가 리프랙션 대신 투명을 사용합니다. 투명은 스캐터링 이벤트에 포함되지 않으므로 바운스 수에 포함되지 않습니다. 즉, 이러한 모드에서는 러프니스가 적용되지 않습니다.
컬러 흡수
'비어 법칙'으로 알려진 유리를 투과하는 컬러를 제어하려면 솔리드 유리 머티리얼에 대한 머티리얼 그래프에서 Absorption Medium 머티리얼 출력 노드를 사용하면 됩니다. 이 기능은 여러 번의 바운스를 통해 레이 컬러 상태를 트래킹해야 하므로 패스 트레이서에서만 사용할 수 있습니다.
위의 솔리드 유리 머티리얼 예시에 이 기능을 추가하려면 아래의 머티리얼 예시처럼 머티리얼에 약간의 노드 세트를 추가하면 됩니다.
RGB 컬러 설정 시, 값이 1에 가까우면 흡수 효과를 보여주지 않습니다.
위의 예시 머티리얼은 발생하는 흡수량을 제어하기 위해 트랜스미션 컬러(Transmittance Color)를 사용합니다. 지정된 컬러는 100 유닛의 거리를 지나 도달하도록 정규화됩니다. 이 거리를 변경하려면 Transmittance Color = Color^(100/Distance) 공식을 사용합니다.
얇은 유리를 통한 흡수 제어는 'Thin Translucent Output' 노드를 통해 이루어집니다. 여기서 트랜스미션 컬러는 가상 두께를 기준으로 하므로 디스턴스 제어를 기준 두께로 단순화할 수 있습니다.
에너지 보존
언리얼 엔진 5에서 구현한 에너지 보존은 메탈과 유리 머티리얼의 스페큘러 로브에서 에너지 손실을 줄이는 데 사용됩니다.
프로젝트 세팅의 엔진(Engine) > 렌더링(Rendering) > 머티리얼(Materials) 섹션에서 에너지 보존(Energy Conservation)을 켤 수 있습니다.
하위 호환성을 유지하기 위해 현재 이 기능은 기본적으로 비활성화되어 있습니다. 향후 출시되는 엔진에서는 이 기능이 기본적으로 활성화될 예정입니다.
근사치 굴절 반사
패스 트레이서는 특히 유리나 메탈 표면의 러프니스 값이 낮은 경우, 근사치 굴절 반사 패스를 사용하여 노이즈를 줄일 수 있습니다. 이러한 머티리얼 유형의 경우, 리플렉션 굴절 반사가 다양한 패턴을 생성할 수 있으며, 노이즈 없는 이미지를 만드는 데 비현실적인 양의 샘플이나 시간을 소모할 수 있습니다.
예를 들어, 이 이미지는 렌더링과 샘플 축적 과정에서 연속으로 포착하고 완료 후 노이즈를 제거한 최종 이미지입니다.
일반적으로 굴절 반사의 경우 노이즈 없는 결과를 수렴하는 데 긴 시간이 걸리므로 패스 트레이서는 콘솔 명령 r.PathTracing.ApproximateCaustics 1을 사용하여 이미지에 나타날 굴절 반사의 근사치를 통해 이미지 노이즈를 줄입니다. 이 변수는 기본적으로 활성화되어 있습니다.
또 다른 고려 요소는 리프랙션 굴절 반사와 근사치 굴절 반사 간의 차이입니다. 노이즈 반사 툴을 사용하면 충분한 융합 시간이 주어졌을 때 나타날 굴절 반사 모습을 프리뷰할 수 있지만, 근사치 굴절 반사를 사용하면 훨씬 짧은 시간에 실제 제작에 사용 가능한 이미지를 제공합니다.
거친 라이트 트랜스미션 및 리플렉션
패스 트레이서는 거친 리플렉션과 더불어 거친 투과 렌더링을 허용한다는 점에서 고유하며, 패스 트레이서의 경우 이러한 셰이더 파라미터들이 서로 결합됩니다.
아래 예시에서 유리 머티리얼은 다양한 범위의 러프니스 값으로 근사치 굴절 반사 및 리플렉션 러프니스와 그것이 드리워진 반투명 섀도에 미치는 영향을 보여줍니다.
슬라이더를 드래그하여 제로 러프니스부터 약간의 러프니스까지 글래스 머티리얼이 변화하는 모습을 확인하세요. 러프니스 값 범위는 0~0.2입니다.
Ray Type Switch 머티리얼 노드
Path Tracing Ray Type Switch 노드를 사용하여 섀도, 간접 스페큘러, 볼륨 및 디퓨즈 레이에 대한 머티리얼 정보를 대체할 수 있습니다.
| 입력 옵션 | 설명 |
|---|---|
Main | 카메라 레이 또는 패스 트레이싱되지 않은 셰이딩에 사용됩니다. |
Shadow | 섀도 레이에서 패스 트레이서에 의해 사용되며 불투명하지 않은 블렌드 모드를 사용하는 머티리얼에만 적용됩니다. |
IndirectDiffuse | 간접 디퓨즈 레이에서 패스 트레이서에 의해 컬러를 대체하는 데 사용됩니다. |
IndirectSpecular | 간접 스페큘러 레이에서 패스 트레이서에 의해 컬러를 대체하는 데 사용됩니다. |
IndirectVolume | 간접 볼륨 레이에서 패스 트레이서에 의해 컬러를 대체하는 데 사용됩니다. |
아래 씬 예시는 Path Tracing Ray Type Switch 노드를 사용하여 구성한 두 머티리얼, 즉 불투명 머티리얼과 반투명 머티리얼을 보여줍니다. 불투명 머티리얼은 스피어에 적용되며 그 머티리얼을 반사하는 간접 스페큘러는 파란색으로 표시되고, 이제 빨간색 스피어 주변의 간접광은 녹색으로 표시됩니다. 그리고 반투명 체크보드 머티리얼의 섀도는 마스크드 텍스처 샘플로 대체됩니다.
포스트 프로세스 머티리얼 버퍼
포스트 프로세스 머티리얼 버퍼에는 패스 트레이서에 사용할 수 있도록 추가 출력이 포함되어 있습니다. 이러한 버퍼는 패스 트레이싱 버퍼 텍스처(Path Tracing Buffer Texture) 머티리얼 표현식을 통해 액세스할 수 있습니다. 이 노드는 래디언스, 노이즈가 제거된 래디언스, 알베도, 노멀 및 편차에 대한 데이터를 제공합니다. 디테일 패널을 사용하여 머티리얼 그래프에서 노드에 적용할 버퍼 타입을 선택할 수 있습니다.
| Property | 설명 |
|---|---|
래디언스(Radiance) | 원시 래디언스입니다. |
노이즈가 제거된 래디언스(Denoised Radiance) | 패스 트레이서에 대한 포스트 프로세싱 세팅에서 노이즈 제거가 켜져 있고 현재 프레임에 대해 완료된 경우 노이즈가 제거된 래디언스를 저장하고, 그렇지 않으면 검은색으로 저장합니다. |
알베도(Albedo) | 현재 샘플 수에서의 평균 알베도입니다. |
노멀 | 현재 샘플 수에서의 평균 노멀입니다. |
편차(Variance) | 표준 편차로 저장된 패스 트레이싱 편차입니다. 편차는 패스 트레이싱 환경설정에 따라 채널별 편차 또는 휘도, 알베도, 노멀의 편차가 될 수 있습니다. 이 버퍼를 연결하면 추가 비용이 발생합니다. |
DBuffer 데칼 머티리얼 표현식
DBuffer 머티리얼 표현식은 단순한 반투명 및 알파 컴포짓 블렌드 모드보다 더 다양한 반응을 제공하는 데칼 머티리얼을 구성하는 데 유용합니다. 이러한 노드는 DBuffer에서 머티리얼 그래프로 바로 텍스처 데이터를 읽어서 레거시 행동의 근사치나 더 복잡한 라이팅 인터랙션을 재현하는 등, 데칼 머티리얼을 유연하게 커스터마이징할 수 있게 해 줍니다.
머티리얼에서 이러한 표현식을 사용하는 방법에 대한 자세한 내용은 데칼 머티리얼의 'DBuffer 머티리얼 표현식' 섹션을 참조하세요.
유용한 콘솔 변수
다음은 패스 트레이서 사용 시 활성화할 수 있는 몇 가지 유용한 콘솔 변수입니다.
| 콘솔 변수 | 설명 |
|---|---|
| 카메라 레이에 모든 라이트가 보이게 만듭니다. 이 옵션은 엔진의 래스터 기반 모드와 일치시키기 위해 기본적으로 비활성화되어 있지만, 라이트가 모델링되는 방식을 이해하고 라이트가 겹치는 경우를 찾을 때 유용할 수 있습니다. 이 변수를 2로 설정하면 스카이 라이트만 표시됩니다. |
| 픽셀당 환경설정된 샘플에 대한 진행률을 표시하는 작은 프로그레스 바를 뷰에 추가합니다. 프로그레스 바가 완전히 채워지면 자동으로 숨겨집니다. 무비 렌더 큐를 통한 렌더링에는 영향이 없으며 항상 활성화한 상태로 두어도 안전합니다. 이 옵션은 기본적으로 활성화됩니다. |
| 노이즈 제거 툴을 빠르게 토글하는 데 사용할 수 있습니다(현재 샘플 축적이 완료되었다는 가정하에). 포스트 프로세스 볼륨 세팅과는 달리 이 옵션은 변경해도 축적이 재시작되지 않으며 노이즈 제거가 활성화된 상태와 비활성화된 상태에서의 렌더링된 프레임을 빠르게 비교할 때 유용하게 사용할 수 있습니다. |
| 패스 트레이서와 함께 불균질 볼륨 렌더링을 사용할 수 있게 해 줍니다. 불균질 볼륨 및 패스 트레이서에 대한 자세한 사용 정보는 불균질 볼륨을 참조하세요. |
자주 묻는 질문
HighResShot을 사용하여 패스 트레이싱된 융합 이미지 캡처하기
씬에서 현재 활성화된 픽셀당 샘플(Samples Per Pixel)과 동일한 r.HighResScreenshotDelay 콘솔 변수를 사용합니다. 올바른 출력이 캡처되는지 확인하는 좋은 방법은 r.PathTracing.ProgressDisplay를 1로 설정하는 것입니다. 캡처된 이미지에 프로그레스 바가 보이지 않으면 샘플 축적이 완료된 것입니다.
런타임 시 패스 트레이서 활성화하기
패스 트레이서는 지원되는 하드웨어 및 플랫폼에서 Enable Path Tracing 블루프린트 노드를 사용하여 런타임 시 호출할 수 있습니다.
Windows에서 'D3D 디바이스 제거 크래시'로 인한 타임아웃 딜레이 방지하기
Windows에서는 GPU 커널이 차지할 수 있는 시간을 제한함으로써 시스템 응답성을 유지하려 합니다. 브루트 포스 패스 트레이싱 같은 리소스 집약적 프로세스의 경우 이러한 제한에 더 자주 직면할 수 있으며, 특히 저사양 GPU를 사용할 때나 라이트 시뮬레이션이 너무 복잡해 합당한 시간 안에 완료할 수 없을 때 더욱 그러합니다.
엔진은 몇 가지 콘솔 변수를 노출하여 한 번에 수행되는 작업량을 제어하지만, 콘솔 변수를 잘못 설정하면 전반적인 퍼포먼스가 저하될 수 있습니다. stat gpu 명령으로 전반적인 퍼포먼스를 계속 지켜보는 것이 좋습니다.
r.PathTracing.DispatchSize는 패스 트레이싱된 렌더링의 최대 너비와 높이를 픽셀 단위로 제어합니다. 이 값이 뷰포트 또는 이미지 해상도보다 낮으면 렌더링이 여러 단계로 수행될 수 있고, 그러면 Windows에서 GPU가 여전히 응답하는지 검증하는 횟수가 늘어납니다. 디폴트값은 2048입니다.r.PathTracing.FlushDispatch는 패스 트레이싱 프로세스 동안 명령 목록 플러싱 빈도를 제어합니다. 이 값을 1로 설정하면 Windows에서 GPU가 여전히 응답하는지 검증할 기회가 더욱 늘어납니다. 기본적으로 이 값은 2로 설정됩니다.
극단적인 경우에는 크래시를 피하면서 좋은 퍼포먼스를 유지하기가 어려울 수 있습니다. 그럴 때에는 Windows 타임아웃 제한 자체를 변경할 수 있습니다. GPU 드라이버 크래시 해결 방법을 참조하세요.
헤어가 포함된 씬의 경우, 가속 구조체(BLAS) 타임아웃이 발생할 수도 있습니다. 이러한 경우에는 r.HairStrands.RaytracingProceduralSplits의 값을 1 또는 2로 낮춥니다.
패스 트레이싱된 뷰에서 인스턴스 사라짐
하드웨어 레이 트레이싱의 기본 컬링 구현은 패스 트레이싱의 맥락에서 볼 때 지나치게 공격적일 수 있습니다. 그 이유는 레이 트레이싱이 카메라 비저빌리티에도 사용되기 때문입니다. 패스 트레이서 뷰로 전환할 때 인스턴스가 사라진 것으로 나타나면, r.RayTracing.Geometry.InstancedStaticMeshes.Culling을 0으로 설정해 보세요.
나나이트 지원 메시에 패스 트레이서 사용하기
r.RayTracing.Nanite.Mode 1로 활성화할 수 있는 나나이트 지원 메시의 네이티브 패스 트레이싱은 실험단계 기능으로 지원됩니다. 이 모드는 나나이트 스트리밍 시스템을 사용하여 레이 트레이싱된 메시를 즉석에서 준비하여 예비 메시에 비해 훨씬 많은 디테일을 보존합니다.
또한, 이 패스 트레이서는 표현을 위해 나나이트 지원 메시인 예비 메시도 지원합니다. 예비 메시는 표현을 위해 소스 메시 트라이앵글의 백분율을 사용하지만, 이 때문에 씬에 있는 나나이트 지원 메시의 디테일이 낮아질 수 있습니다. 나나이트 지원 메시의 디테일을 높이려면, 스태틱 메시 에디터에서 예비 트라이앵글 퍼센트(Fallback Triangle Percent) 파라미터와 예비 상대 오차(Fallback Relative Error) 파라미터를 조정합니다.
이러한 세팅 환경설정에 대한 자세한 내용은 나나이트 문서의 예비 메시 섹션을 참조하세요.
멀티 GPU 지원 활성화하기
여러 개의 GPU를 사용하려면 Windows 10 2004 이상의 버전이 필요합니다.
멀티 GPU(mGPU)를 사용한 라이팅 계산은 여러 NVIDIA GPU를 하나로 연결하는 NVIDIA의 스케일러블 링크 인터페이스(Scalable Link Interface, SLI) 기술을 통해 지원됩니다. 이는 패스 트레이서 및 GPU 라이트매스와 같은 핵심 하드웨어 레이 트레이싱 기능을 사용하여 씬을 렌더링하는 데 필요한 성능의 처리량을 높여줍니다.
멀티 GPU 지원을 활성화하는 방법은 다음과 같습니다.
GPU를 NVLink 브리지와 연결하고 NVIDIA 제어판에서 SLI를 활성화합니다.
명령줄 실행인자
-MaxGPUCount=N을 전달합니다. 여기서 N은 사용할 수 있는 GPU 수입니다. 예를 들어,-MaxGPUCount=2와 같이 작성할 수 있습니다.에디터가 열리면
r.PathTracing.MultiGPU 1콘솔 변수를 사용하여 멀티 GPU 지원을 활성화합니다. 이 콘솔 변수를 [언리얼 엔진 루트]/Engine/Config에 있는 DefaultEngine.ini 파일의[/Script/Engine.RendererSettings]아래에 추가할 수도 있습니다.
에디터가 열리면 출력 로그(Output Log)를 보고 멀티 GPU 모드가 활성화되었는지 확인할 수 있습니다. LogD3D12RHI: Enabling multi-GPU with 2 nodes를 찾아보면 됩니다.