Post on 16-Apr-2022
언리얼엔진 4.22 RTX드래곤하운드 GDC 2019 데모 분석과 포스트모템
그리고 NVIDIA DLSS
UNREAL SUMMIT 2019
Rendering�Equation
Ray Origin𝐿 𝜔# = 𝐿% 𝜔# + '(𝐿 𝜔) 𝑓 𝜔#, 𝜔) |𝜔) - 𝑛|𝑑𝜔)
https://en.wikipedia.org/wiki/Rendering_equation
UNREAL SUMMIT 2019
RAYTRACING
● 특정위치/방향에서뭐가보이나?
● 빛의이동을시뮬레이션
Ray Origin
Ray D
irecti
on
Hit ‘t’ = ~1.8
https://en.wikipedia.org/wiki/Ray_tracing_(graphics)
UNREAL SUMMIT 2019
RASTERIZATION
● 현재 Realtime�rendering�의 표준
● 3D�Primitive�->�Pixel
● 매우 빠른 HW�가속
● 수십년간 발전
● 고품질 그래픽을 위해 많은 꼼수
https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation
UNREAL SUMMIT 2019
Modern�rendering�engine
Battlefield 1 by EA DICE
UNREAL SUMMIT 2019
RAYTRACING�or PATHTRACING
● Pathtracing :�Rendering�equation�을 Monte-carlo 방식으로 푸는 것
● Monte-carlo 란?�->�랜덤으로 여러번 샘플링하여 문제를 푸는 것
● 반구상위의 한 위치로 들어오는 모든 빛을 계산
● 직관적으로 Global�Illumination�/�Soft�Shadow�등을 자연적으로 시뮬레이션
● 높은 퀄리티를 위해 Pixel�당 수천개의 Ray�필요● 실시간 Path�tracing?�->�NO
● 실제로관심있는것
● Raytracing 을이용하여기존렌더링효과의품질을향상혹은성능개선Ray Origin
UNREAL SUMMIT 2019
HYBRID�RENDERING
Screenspace Reflection Shadowmap Screnspace AO Lightmap / Probe GI
Raytracing 으로더좋아질수있다!
Raytraced Reflection / Shadow / AO / GI
UNREAL SUMMIT 2019
BVH
UNREAL SUMMIT 2019
SHADER�TABLE
UNREAL SUMMIT 2019
● Streaming multi processor● Raygen/Closest/Miss/Anihit shader�실행
● RTCore● Ray�Traversal
● RayGeneration shader● ClosestHit shader● Miss shader● Anyhit shader
RAY�DISPATCH
UNREAL SUMMIT 2019
DENOISER● RTCore 자체는 굉장히 빠름
● 수백만개의 프레임당 Ray�가능
● Glossy�Reflection�/�Soft�shadow● 높은 퀄리티를 위해서는 Pixel�당 수천개의 Ray�가 필요함
● 현실적으로 Pixel�당 1�개 이하의 ray�● Denoiser�가 필요함
● Gameworks Denoiser�/�Epic�자체 Denoiser● 실시간 Raytracing�의 가장 중요한 요소중 하나
UNREAL SUMMIT 2019
REFLECTION
● SSR 에 비해
● 보이지 않는 물체에 대한 처리가 정확
● Mirror�reflection
● Glossy reflection
● Multi bounce Ray Traced Reflections, 1spp Denoised
UNREAL SUMMIT 2019
1spp Ray Traced Reflections
UNREAL SUMMIT 2019
1spp Ray Traced Reflections + Denoising
UNREAL SUMMIT 2019
Ground Truth
UNREAL SUMMIT 2019
SHADOW
● Area�light�shadow
● 고품질의 Soft�shadow
● Pixel�당 1�Ray
● Sun�light�shadow
● Open world 에서는 Shadow map 에 비해 성능우위 가능성
● Pixel 당 Geometry 복잡도가 높은 경우는 Raytracing 이 Rasterization 에 비해 유리● Material evaluation 이 필요 없기 때문에 RT core 활용률이 높다!
Ray Traced Shadows, 1spp Denoised
UNREAL SUMMIT 2019
1spp Ray Traced Shadows
UNREAL SUMMIT 2019
1spp Ray Traced Shadows + Denoising
UNREAL SUMMIT 2019
Ray Traced Shadow Ground Truth
UNREAL SUMMIT 2019
AMBIENT�OCCLUSION
● SSAO�에 비해
● 보이지 않는 물체에 대한 처리
● 보다 먼거리 차폐 검사
● Pixel�당 2ray
Ray Traced Ambient Occlusion, 2spp Denoised
UNREAL SUMMIT 2019Ambient Occlusion with 2spp
UNREAL SUMMIT 2019Ambient Occlusion 2spp Denoised
UNREAL SUMMIT 2019Ambient Occlusion Ground Truth
UNREAL SUMMIT 2019
Global�Illumination
Lightmap● Lightmap
● Irradiance�volume�(�Probe�)
UNREAL SUMMIT 2019
GI(METRO�EXODUS)
● Screenspace 에서
● Temporal Monte-carlo Ray Accumulation● Hit shader 에서 실제 Material evaluation 하지 않음● 오브젝트의평균 Albedo 값을대신사용● Noise 줄어듬● Texture read/Shader 실행줄어듬● 실제사용가능한성능
4A and NVIDIA - Exploring Raytraced Future in Metro Exodus
UNREAL SUMMIT 2019
UNREAL SUMMIT 2019
UNREAL SUMMIT 2019
GI(NVIDIA?)● 전통적인Probe(Irradiance�volume)�방식
● Probe 방식의 단점인 Light leak
● Probe 당 VSM shadow map 으로 해결
● VSM 생성을 Raytracing 으로 하게 되어 Realtime 이 가능해짐!
● Pixel당 Geometry 복잡도가높으면 Raytracing 이 Raster 보다유리
● Probe Occlusion 을위한 VSM 은매우저해상도
● RTX 그래픽카드에서 1ms 로 GI 처리
R11G11B10F Irradiance RG16F Depth: (radius, radius2)
4A and NVIDIA - Exploring Raytraced Future in Metro Exodus
UNREAL SUMMIT 2019
GI
● Raytraced Reflection / Shadow는퀄리티향상
● Raytraced GI 가일반화된다면
● 게임제작프로세스단순화
● 동적인시간/날씨변화를쉽게구현
● 게임제작패러다임의변화
● UE4 에도 Raytracing GI 기능
UNREAL SUMMIT 2019
DRAGONHOUND�GDC/GTC�DEMO
● Nexon devcat 이 개발중인 액션 RPG
● GDC�Demo/GTC�Keynote
● UE4�4.22�Preview�기반
● Raytracing Reflection/Shadow 사용
● 향후 AmbientOcclusion/GI/Caustics�등 사용 계획
UNREAL SUMMIT 2019
Demo
UNREAL SUMMIT 2019
Performance�Issues
● BVH 부하
● Ray Divergence
● BVH Missing bug
● ALPHA TRIANGLE
● Light culling
● Half resolution reflection
UNREAL SUMMIT 2019
OPTIMIZATION(BVH)
● 너무 많은 Static�mesh
● Drawcall 많아짐
● TLAS Traversal 부하
● Devcat 의 애셋 최적화● Ray treversal 부하인 경우에만
● 많은 경우 Tex/SM Occupancy 등이 원인
UNREAL SUMMIT 2019
OPTIMIZATION(Ray�Divergence)
● 높은 Rougness
● 인접한 Ray 의 방향이 분산됨
● 하나의 SM 에서 Evaluation 해야 할Material 이 많아짐
● Too many hit shaders -> SM Warp Occupancy 낮아짐
● Instruction cache thrashing
● Random Texture Read -> L2 Cache hit ratio 낮아짐
Physics and Math of Shading(Natty Hoffman)
UNREAL SUMMIT 2019
OPTIMIZATION(Reflection�Multi�bounce)● Multiple bounce
● 퀄리티를 위해 3 bounce 까지 요구● Ray divergence 유발● PostProcessVolume 에서 씬
복잡도에 따라 1 ~3 유동적으로사용
● 최종 데모에서는 퀄리티를 위해 2 bounce 로 고정
● 메모리 최적화로 충분한 퍼포먼스 확보
● 일반적으로는 1 bounce 추천Physics and Math of Shading(Natty Hoffman)
UNREAL SUMMIT 2019
OPTIMIZATION(Reflection�Shadow�Ray�)
● 반사되는 물체에도 그림자가 드리워져야 한다.
● Shadow ray 를 사용 -> 역시 Ray divergence 유발
● BFV 에서는 Reflection Raytracing 에서 Shadowmap 사용
● UE4 에서도 구현할만한 최적화
UNREAL SUMMIT 2019
OPTIMIZATION(Sort�Optimzation)● 실제 Reflection Pass 실행전에 별도 패스
● Hit Material buffer 에 hit 된 material id 기록
● 16x16, 64x64 등의 tile 단위에서 material sorting
● 실제 reflection ray 는 Sorting 된 순서대로 TraceRay!
● Coherency 가 올라감!
● 4.22 버전에 포함됨
● r.RayTracing.Reflections.SortMaterials 1● 높은 Rougness / 1 bounce / No Shadow ray 인 경우 성능 향상 큼!
1 223 2 5
25 2 1
12 4 5
41 2 3 1 222 2 2
42 3 3
54 5 5
21 1 1
Hit Material ID Ray launch order
UNREAL SUMMIT 2019
OPTIMIZATION(Shadow�DisableMaterial)● Material evaluation 이 없는 Shadow ray 는 원래 빠름
● Shadow 에 Alpha 를 고려하게 되면?
● Reflection 처럼 느려짐
● Disable Shadow Materials
● Shadow ray 에서 hit Shader 실행 X● r.RayTracing.Shadows.EnableMaterials 0
UNREAL SUMMIT 2019
OPTIMIZATION(Alpha�triangle)● Masked Material / Particle 등
● 레이트레이싱에서도 느리다
● Anyhit shader 가 실행됨● RTCore Interrupt● 더 많은 Material evaluation
● Ray divergence !● Force OPAQUE
● BFV 에서 사용한 방식● 부정확하지만 크게 눈에 띄지 않음● 오브젝트 별로 셋팅 가능
UNREAL SUMMIT 2019
OPTIMIZATION(Light�culling)
● 반사되는 물체에서도 라이팅 계산은 필요함.
● UE4 는 Reflection 에서 라이팅 계산을 for loop 에서 하고 있었음● Scene 에 있는 모든 라이트
● Radius 와 Atteunation 을 고려하여 cull
● 라이트가 많은 장면에서 5~10 fps 빨라짐
● 일반 Deferred/Forward 렌더러는 tiled/clustered 등의 효율적인 culling
● 향후 최적화 여지 있음● RT Reflection 부하가 큰 Scene 에서는 Light 개수 관리에 유의 필요
UNREAL SUMMIT 2019
OPTIMIZATION(MEMORY)
● Multi bounce 사용 등으로 L2 메모리 접근량이 많음
● 런타임 메모리 압축 관련 Cache trashing
● 드라이버 최적화!
● 모든 상황에서 20% 이상 성능 향상● 2 sample reflection/2 bounce 등이 가능해짐(+DLSS)
● GPU 분석/최적화의 중요성!
UNREAL SUMMIT 2019
OPTIMIZATION(Half�Resolution)
● UE4 는 Reflection 을 Half resolution 에서 처리 가능
● 당시 UE4 4.22 Preview 버전은 50% 에서 Temporal noise
● TAA 를 위해 Gbuffer 렌더링시 jitter
● Ray direction 에 노이즈
● 50% 이하 해상도에서 심함
● Dragonhound GDC DEMO 는 100% 를 사용
● 드라이버최적화/DLSS 사용으로성능확보● 향후노이즈문제가해결되면매우큰성능향상가능
UNREAL SUMMIT 2019
BVH�Bug• BVH 에 랜덤하게 일정 비율의 Static Mesh 가
빠지는 버그• Dev-rendering 브랜치에서 발생• UE4 4.22 pre-view 까지 고쳐지지 않음• 원인
• BVH 생성시과 SceneProxy 생성이 멀티스레드에서동시에 실행될 가능성
• Proxy 가 가지고 있는 BVH 오브젝트포인터 NULL• 두 코드 실행을 한스레드에서 동기화하여 해결
• Epic 에 Notice!
UNREAL SUMMIT 2019
Final�Raytracing�Configuration
● r.raytracing.reflections.screenpercentage 100
● r.Raytracing.Reflections.SamplesperPixel 2
● r.Raytracing.Reflections.MaxBounces 2
● r.RayTacing.Reflections.SortMaterials 1
● r.RayTracing.Shadows.EnableMaterials 0
● DLSS�80%
● FHD�60fps�가능하였지만,�퀄리티를 높여 FHD�30fps�로 DEMO!
UNREAL SUMMIT 2019
GEFORCE�RTX
Turing SM
RT Cores
Tensor Cores
New Architecture
Real-time Ray Tracing
Accelerated AI
UNREAL SUMMIT 2019
Raytracing�GPU
UNREAL SUMMIT 2019
SW�Raytracing
● Pascal/Volta 등에서 SW�Raytracing
● 많은 Ray�를 쓰는 효과● HWRT�에서
● 적은 수의 Ray를 쓰는 효과
● SWRT�에서도 가능
DX12
Windows 10 RS5
RTXon1920x1080
SWRTGTX 1060 6GB 2.2GTX 1080 5.3GTX 1080 TI 7.6
No support to SWRT
GTX 1650 100.6
SWRT GTX 1660 7.6GTX 1660 TI 8.2
HWRT
RTX 2060 23.7RTX 2070 25.9RTX 2080 36.6RTX 2080 TI 42.1TITAN RTX 46.5Analysis
RTX 2080 / GTX 1080 TI (%) 381.6RTX 2070 / GTX 1080 (%) 385.9
UNREAL SUMMIT 2019
Realtime Raytracing�은이미현실
● 타사/콘솔에서도지원할것
● 막연하게느릴것이다라고생각 -> NO
● 기존렌더링테크닉퀄리티개선/성능향상측면에서보자
● 이제시작일뿐이며퀄리티/성능에서발전가능성이많이남아있음
● UE4 를쓰면복잡한구현없이바로 Raytracing 사용가능!
DLSS
UNREAL SUMMIT 2019
Deep Learning Super SamplingWhat�is�it?● 게임 그래픽 향상을 위한 실시간 딥러닝 기술
● 고화질 그래픽스 게임의 경험향상● 그래픽 화질 개선을 위한 딥러닝 활용● 게임 출시 후 지속적인 학습으로 인한 화질 개선● 새로운 학습 모델 연구
● DL의 실시간 게임그래픽스 적용의 첫 사례● 픽셀양의 지속적 증가에 대한 GPU�부담 경감
UNREAL SUMMIT 2019
Advantages of DLSS• 10~50%의 FPS�향상
• 장면/해상도에 따라 다름• 성능-화질의 tradeoff
• NGX sdk를 통해 코드 수정 없이 지속적 개선/update가능• 고정 비용의 DNN 추론
• 학습을 통해서 weight값을 향상• 고정비용의 post-processing
UNREAL SUMMIT 2019
Deep Learning Super Sampling
Low Resolution Final Resolution
Engine Rendering
Post Processing
UNREAL SUMMIT 2019
Training Overview
1spp color
1spp motion
Target64spp
UNREAL SUMMIT 2019
DLSS Lifecycle
TrainBuild Dataset QA Release
Bug
Evaluate
Enhance Training
Enhance Data
Fix
Game Code Fix
Data Fix
Capture Data from Game
UNREAL SUMMIT 2019 Research by Jon Hasselgren and Jacob Munkberg, NVIDIA
Input (1spp)
UNREAL SUMMIT 2019
1Kspp Reference vs. DL-based
Research by Jon Hasselgren and Jacob Munkberg, NVIDIA
UNREAL SUMMIT 2019
Summary● DLSS
● Graphics�pipeline�에적용한실시간 deep�learning의최초시도● DL network의지속적인학습을통한성능/화질개선● 고품질Network 학습을위한Dataset capture● 학습/추론구현을위한개발사-NVIDIA와협업
Thank youQnA