레이 트레이싱 기술은 라이트에 대한 소프트 섀도잉과 정확한 앰비언트 오클루전, 인터랙티브 글로벌 일루미네이션, 리플렉션 등을 통해 자연스러운 고퀄리티의 결과를 생성하기 때문에 영화와 TV, 시각화를 위한 오프라인 렌더링에 사용되어 왔습니다. 하지만, 그렇게 고퀄리티로 이미지를 렌더링하려면 단일 프레임을 렌더링하는 데에도 고성능의 컴퓨터로 오랜 시간 렌더링해야 할 때가 많았습니다.
언리얼 엔진에서는 지원되는 하드웨어를 통해 레이 트레이싱이 가능하므로 실시간으로 미묘한 라이팅 이펙트로 렌더링되는 인터랙티브한 경험을 구현할 수 있습니다. 언리얼 엔진의 하드웨어 레이 트레이싱 기능은 기존의 래스터 렌더링 기술과 결합되어 있습니다. 두 기술이 결합된 덕분에 픽셀당 더 적은 샘플로 레이 트레이싱을 구현하고 노이즈 제거 알고리즘을 활용하여 오프라인 렌더러의 결과와 거의 흡사한 결과를 얻을 수 있습니다.
에픽게임즈 런처에서 이용할 수 있는 건축 시각화 인테리어(ArchViz Interior) 샘플 프로젝트에 적용된 리얼타임 레이 트레이싱 렌더링입니다.
하드웨어 레이 트레이싱 활성화하기
프로젝트 세팅(Project Settings) 의 엔진(Engine) > 렌더링(Rendering) > 하드웨어 레이 트레이싱(Hardware Ray Tracing) 아래에서 하드웨어 레이 트레이싱 지원(Support Hardware Ray Tracing) 을 활성화하고 에디터를 재시작하여 변경사항을 적용합니다.

레이 트레이싱을 활성화화면, 아직 활성화되지 않은 경우 프로젝트의 스킨 캐시 계산 지원(Support Compute Skin Cache) 도 활성화됩니다.
레이 트레이싱된 섀도(Ray Traced Shadows) 및 레이 트레이싱된 스카이 라이트(Ray Traced Skylight) 같은 일부 하드웨어 레이 트레이싱 기능은 다른 레이 트레이싱 기능과 별도로 활성화할 수 있습니다. 프로젝트 세팅의 같은 하드웨어 레이 트레이싱 섹션에서 프로젝트에 필요한 기능을 활성화할 수 있습니다.

하드웨어 레이 트레이싱 기능
다음과 같은 하드웨어 레이 트레이싱 기능이 지원됩니다.
레이 트레이싱된 섀도
레이 트레이싱된 섀도(Ray Traced Shadows) 는 환경 내 오브젝트에 소프트 에어리어 라이팅 이펙트를 시뮬레이션합니다. 즉, 광원의 크기와 각도에 따라 물체의 그림자가 접촉면 근처에서 더 선명해지고, 멀어질수록 부드러워지고 넓어집니다.


레이 트레이싱된 앰비언트 오클루전
레이 트레이싱된 앰비언트 오클루전(Ray Traced Ambient Occlusion, RTAO) 은 벽이 만나는 구석 및 모서리에 그늘을 드리우거나 피부의 주름이나 틈새에 깊이를 더하는 등, 주변의 라이팅을 차단하는 영역에 정확하게 그림자를 처리하여 환경의 오브젝트를 더 자연스럽게 만듭니다.


스크린 스페이스 앰비언트 오클루전(Screen Space Ambient Occlusion, SSAO)과 비교하면, RTAO는 오브젝트를 더 자연스럽게 만들고 씬에 깊이를 더해서 간접 라이팅 영역의 섀도잉을 자연스럽게 연출합니다.


앰비언트 오클루전 이펙트의 강도(Intensity) 및 반경(Radius) 프로퍼티를 조정하여 크기와 강도를 제어할 수 있습니다.
레이 트레이싱된 리플렉션
이 레이 트레이싱 기능은 지원이 중단되었으므로 향후 출시에서 제거될 수 있습니다.
레이 트레이싱된 리플렉션(Ray Traced Reflections, RTR) 은 멀티 리플렉션 바운스를 지원하는 정확한 환경 표현을 시뮬레이션합니다.
아래 예시에서는 싱글 바운스 레이 트레이싱된 리플렉션을 멀티 바운스 레이 트레이싱된 리플렉션과 비교해서 보여줍니다. 멀티 바운스를 사용하면 씬 안의 반사 표면 간에 실시간 상호 리플렉션이 구현됩니다.


반면에 스크린 스페이스 리플렉션(SSR)이나 플레이너 리플렉션 또는 리플렉션 캡처 액터는 전체 씬을 동적으로 캡처할 수도 없고, 이러한 다른 리플렉션 메서드에 존재하는 몇 가지 한계도 가지고 있습니다.
위의 비교에서 SSR은 싱글 바운스 리플렉션만 가능하며, 화면에 보이는 것만 표현합니다. 반면에 RTR은 멀티 바운스가 가능하고, 보이는 것만 표현하지 않습니다. 즉, 책의 측면, 카메라 뒤의 반사된 바닥, 창을 통해 들어오는 추가 라이팅이 표면에 반사되는 모습까지 볼 수 있습니다.


레이 트레이싱된 반투명
이 레이 트레이싱 기능은 지원이 중단되었으므로 향후 출시에서 제거될 수 있습니다.
레이 트레이싱된 반투명(Ray Traced Translucency) 은 반투명 표면에서 물리적으로 정확한 리플렉션, 흡수, 그리고 리프랙션으로 유리와 유체 머티리얼을 정확히 표현합니다.


레이 트레이싱된 글로벌 일루미네이션
이 레이 트레이싱 기능은 지원이 중단되었으므로 향후 출시에서 제거될 수 있습니다.
레이 트레이싱된 글로벌 일루미네이션(Ray Traced Global Illumination, RTGI) 은 주어진 라이트 소스가 간접 적용되는 씬 영역에 리얼타임 인터랙티브 바운스 라이팅을 추가합니다.


포스트 프로세스 볼륨(Post Process Volume)에서 두 가지 레이 트레이싱된 글로벌 일루미네이션 메서드를 선택할 수 있습니다.
- 브루트 포스(Brute Force) 방식은 오프라인 렌더러 간접 라이팅을 에뮬레이트하지만 렌더링 속도가 느립니다.
- 파이널 개더(Final Gather) 방식은 단일 바운스의 간접 라이팅을 제공하지만 렌더링 속도가 빠릅니다.
파이널 개더 메서드
이 기능은 실험단계에 있습니다.
파이널 개더 레이 트레이싱 글로벌 일루미네이션 방식은 파이널 개더 기반 기술을 사용하여 약간의 퀄리티를 희생하는 대신 런타임 퍼포먼스가 개선됩니다. 이 기술은 2단계 알고리즘을 바탕으로 하며, 1단계에서는 브루트 포스 메서드와 비슷하게 씬 전체에 셰이딩 포인트를 배포하지만, 픽셀당 하나의 샘플이라는 고정 비율로 배포합니다. 이 단계에서는 최대 16개 셰이딩 포인트 샘플의 히스토리가 스크린 스페이스에 저장됩니다. 2단계에서는 알고리즘이 셰이딩 포인트 히스토리에 재연결을 시도하여 해당 메서드의 비용을 상각합니다.
브루트 포스 알고리즘은 [패스 트레이서][building-virtual-worlds\lighting-and-shadows\ray-tracing-and-path-tracing\path-tracer] 비교 기준 레퍼런스를 에뮬레이트하기 위한 것으로, 결과 실행 방식이 유사합니다. 파이널 개더 메서드는 이 에뮬레이션 대신 퍼포먼스를 추구합니다. 이 메서드 자체적인 제한이 있는데, 현재는 싱글 바운스 간접 디퓨즈 글로벌 일루미네이션에 국한되며, 카메라가 빠르게 움직일 때 이전 프레임 샘플 데이터로 재투영 시 고스팅이 발생하기 쉽다는 점입니다.
템포럴 고스팅 아티팩트를 억제하려면 다음 명령을 사용하여 월드 스페이스 리젝션 기준을 수정하면 됩니다.
r.RayTracing.GlobalIllumination.FinalGatherDistance [유닛 수]
현재는 원래 셰이딩 포인트로부터 측정된 월드 거리를 기반으로 합니다. 이 리젝션 기준의 기본값은 10유닛입니다.
또한, 파이널 개더 메서드를 효율적으로 활용하려면 포스트 프로세스 볼륨에서 다음과 같은 세팅을 사용해야 합니다.
- 최대 바운스(Max Bounces): 1
- 픽셀당 샘플(Samples Per Pixel): 16
1을 넘는 모든 추가 최대 바운스는 자동으로 버려지며, 픽셀당 샘플값을 조정할 때는 2의 거듭제곱(예: 8, 16, 32, 64)으로 늘리는 것이 좋습니다.
레이 트레이싱 기능 사용하기
아래 섹션에서는 프로젝트에서 포스트 프로세스 볼륨 및 개별 라이트 프로퍼티를 통해 레이 트레이싱 기능을 사용하는 방법에 대해 자세하게 살펴봅니다.
포스트 프로세스 볼륨
포스트 프로세스 볼륨을 사용하면 다음과 같은 일부 레이 트레이싱 기능을 제어할 수 있습니다.
- 앰비언트 오클루전
- 글로벌 일루미네이션
- 리플렉션
- 반투명
전체 크기로 보려면 이미지를 클릭하세요.
사용할 수 있는 포스트 프로세스 세팅에 대한 자세한 내용은 레이 트레이싱 및 패스 트레이서 프로퍼티를 참조하세요.
라이트
라이트는 레이 트레이싱된 섀도 드리우기(Cast Ray Traced Shadows) 가 활성화된 경우 모든 라이트 타입에 대한 소프트 에어리어 섀도 드리우기를 지원합니다. 라이트의 소프트 섀도잉은 라이트 소스의 크기와 그림자를 드리우는 오브젝트로부터의 거리에 따라 달라집니다.


다음 옵션을 조정하여 섀도의 소프트 정도를 제어합니다.
- 디렉셔널 라이트에서 소스 각도(Source Angle) 를 설정합니다.
- 포인트 및 스포트 라이트에서 소스 반경(Source Radius) 을 설정합니다.
- 렉트 라이트에서 반 도어 각도(Barn Door Angle) 및 반 도어 길이(Barn Door Length) 를 설정하여 라이트 형태와 섀도 소프트 정도를 조정합니다.
스카이 라이트
스카이 라이트(Sky Light)는 레이 트레이싱된 섀도 드리우기 가 활성화되어 있고 그 소스 타입(Source Type) 이 지정된 경우 소프트 앰비언트 섀도잉을 지원합니다. 스카이 라이트는 레벨의 거리 부분을 캡처하고 이를 라이트로 씬에 적용합니다.

레이 트레이싱된 글로벌 일루미네이션이 스카이 라이트와 함께 작동하려면 실험단계의 콘솔 변수인 r.RayTracing.GlobalIllumination.EvalSkyLight
를 활성화해야 합니다.
독립형 레이 트레이싱된 스카이 라이트는 더 이상 사용되지 않으며 프로젝트 세팅이 제거되었습니다. 콘솔 변수 r.RayTracing.SkyLight 1
을 설정하면 여전히 활성화할 수 있습니다.
퍼포먼스 및 디버깅
다음 섹션에서는 프로젝트에서 하드웨어 레이 트레이싱의 퍼포먼스를 디버그하고 조사하는 데 사용할 수 있는 시작 지점과 기본 툴을 제안합니다.
Stat GPU
통계 명령인 Stat GPU
를 사용하여 레이 트레이싱 기능과 관련된 GPU 퍼포먼스를 확인할 수 있습니다. 이 명령을 사용하면 활성화된 레이 트레이싱 기능에 대한 관련 정보와 각 기능으로 현재 씬 뷰를 렌더링하는 데 소요되고 있는 프레임 시간을 확인할 수 있습니다.

Stat D3D12RayTracing
통계 명령인 Stat D3D12RayTracing
을 사용하여 관련된 레이 트레이싱 리소스 사용 현황을 확인할 수 있습니다.

레이 트레이싱 디버그 뷰 모드
하드웨어 레이 트레이싱은 레이 트레이싱의 특정 영역과 기능을 살펴볼 수 있는 다양한 디버그 뷰 모드를 제공합니다. 레벨 뷰포트의 레이 트레이싱 디버그(Ray Tracing Debug) 아래 뷰 모드(View Modes) 드롭다운에서 이러한 디버그 뷰에 액세스할 수 있습니다.

모든 레이 트레이싱 이펙트 강제 비활성화
콘솔 변수인 r.RayTracing.ForceAllRayTracingEffects
를 사용하여 씬의 모든 레이 트레이싱 기능을 빠르게 활성화하거나 비활성화할 수 있습니다.
- 0 - 모든 레이 트레이싱 기능을 비활성화합니다.
- 1 - 모든 레이 트레이싱 기능을 활성화합니다.
- -1 - 이전에 콘솔 변수로 설정한 스테이트를 사용하며 포스트 프로세스 볼륨에 설정된 값을 사용합니다. (기본값)
런타임 시 레이 트레이싱 토글
이 기능은 실험단계에 있습니다.
WindowsEngine.ini 환경설정 파일에 다음과 같은 내용을 추가하여 PC에서 게임을 재시작하지 않고도 하드웨어 레이 트레이싱을 동적으로 켜고 끌 수 있습니다.
r.RayTracing.EnabledOnDemand=1
r.RayTracing.Enable=1
- 이전의 읽기 전용 스테이트와 일치하도록 엔진에 대해 적절한 기본값을 설정합니다.
r.RayTracing
은 이제 다음과 같은 값을 가질 수 있습니다.
- 0 - 비활성화됨
- 1 - 항상 활성화됨
- 2 - 동적으로 활성화됨
지원되는 레이 트레이싱 기능
이 목록은 현재 지원되는 기능에 대한 개념을 제공하기 위한 용도이며, 지원되는 레이 트레이싱 기능을 포괄하는 목록이 아닙니다.
기능 | 지원 여부(예/아니요/부분 지원) | 추가 참고 사항 |
---|---|---|
렌더링 경로 | ||
디퍼드(Deferred) | 예 | |
포워드(Forward) | 아니요 | |
라이트 타입 | ||
디렉셔널 라이트(Directional Light) | 예 | |
스카이 라이트(Sky Light) | 예 | |
포인트 라이트(Point Light) | 예 | |
스포트 라이트(Spot Light) | 예 | |
렉트 라이트(Sky Light) | 예 | |
라이팅 기능 | ||
이미시브 표면(Emissive Surfaces) | 부분 지원 | 표면의 리플렉션은 지원하지만, 라이트를 발산하거나 섀도를 드리우지는 않습니다. |
라이트 투과(Light Transmission) | 아니요 | 반투명 섀도는 불투명으로 처리합니다. 즉, 색이 있는 섀도나 라이트는 머티리얼을 투과하지 않습니다. |
에어리어 섀도잉(Area Shadowing) | 예 | |
IES 프로파일(IES Profiles) | 예 | |
라이트 함수(Light Functions) | 예 | |
볼류메트릭 포그(Volumetric Fog) | 아니요 | |
이미지 기반 라이팅(Image Based Lighting, IBL) | 예 | 스카이 라이트를 적용한 HDRI를 지원합니다. |
루멘 하드웨어 레이 트레이싱(Lumen Hardware Ray Tracing) | 예 | |
머티리얼: 블렌드 모드 | ||
불투명(Opaque) | 예 | |
마스크드(Masked) | 예 | |
반투명(Translucent) | 예 | |
애니소트로픽(Anisotropic) | 예 | |
머티리얼: 셰이딩 모델 | ||
기본 릿(Default Lit) | 예 | |
라이팅제외(Unlit) | 부분 지원 | |
마스크드(Masked) | 부분 지원 | 마스크드 섀도 드리우기를 지원합니다. |
서브서피스 및 서브서피스 프로파일(SubSurface and SubSurface Profile) | 예 | |
사전통합 스킨(Preintegrated Skin) | 부분 지원 | 작동은 하지만 결과가 제대로 레이 트레이싱되지 않습니다. 래스터 파이프라인을 사용합니다. |
클리어 코트(Clear Coat) | 예 | |
양면 폴리지(TwoSided Foliage) | 예 | |
헤어(Hair) | 부분 지원 | 작동은 하지만 결과가 제대로 레이 트레이싱되지 않습니다. 래스터 파이프라인을 사용합니다. |
클로스(Cloth) | 부분 지원 | 작동은 하지만 결과가 제대로 레이 트레이싱되지 않습니다. 래스터 파이프라인을 사용합니다. |
머티리얼 함수(Material Functions) | 예 | |
양면(Two-Sided) | 예 | |
월드 포지션 오프셋(World Position Offset) | 예 | 디테일 패널에서 월드 포지션 오프셋 평가(Evaluate World Position Offset) 프로퍼티를 사용하여 액터별로 활성화합니다. 스태틱 메시, 인스턴스드 스태틱 메시 및 계층형 인스턴스드 스태틱 메시를 지원합니다. |
지오메트리 타입 | ||
스켈레탈 메시(Skeletal Mesh) | 예 | |
스태틱 메시(Static Mesh) | 예 | |
나나이트 가상화 지오메트리(Nanite Virtualized Geometry) | 예 | |
지오메트리 캐시(Geometry Cache)(Alembic) | 예 | |
랜드스케이프(Landscape) | 예 | |
계층형 인스턴스드 스태틱 메시(Hierarchical Instanced Static Mesh, HISM) | 예 | |
인스턴스드 스태틱 메시(Instanced Static Mesh, ISM) | 예 | |
스플라인(Splines) | 예 | |
프로시저럴 메시(Procedural Mesh) | 예 | 이 지오메트리 타입은 레이 트레이싱으로 렌더링하는 비용이 클 수 있습니다. |
레벨 오브 디테일(Levels of Detail, LOD) | 예 | 디더링된 LOD 트랜지션은 아직 지원되지 않습니다. |
비주얼 이펙트(VFX) | ||
나이아가라(Niagara) | 부분 지원 | 현재 스프라이트, 리본 및 메시 이미터를 지원합니다. |
플랫폼 지원 | ||
멀티 뷰(VR 및 분할 화면) | 예 |