nvidia rtx in remedy northlight -...
TRANSCRIPT
![Page 1: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/1.jpg)
Juha SjöholmSenior Devtech EngineerHelsinki
NVIDIA RTX inRemedy Northlight
![Page 2: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/2.jpg)
Remedy Entertainment
- Game studio based in Finland- Founded in 1995- 185 employees
- Best known for- Quantum Break- Alan Wake- Max Payne
- Upcoming- Control- CrossFire 2 (Story Mode)
- Northlight engine
![Page 3: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/3.jpg)
RTX Work at Remedy
- RTX ray tracing experiments started in 2017- Exploring new possibilities- Northlight RTX demo shown at GDC 2018
- https://www.remedygames.com/experiments-with-directx-raytracing-in-remedys-northlight-engine/
- DXR - DirectX Raytracing API- RTX support announced for Control at Gamescom 2018
- Details will follow- Work continues with Turing
![Page 4: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/4.jpg)
Agenda- RTX integration- Shadows
- Sun- Contact
- Reflections- G-buffer- Transparent surfaces
- Indirect Diffuse Illumination
![Page 5: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/5.jpg)
Hybrid Rendering
- Enhance an existing rasterization based rendering pipeline.- Resolve primary visibility through rasterization.- Evaluate one or more effects related to lighting through ray tracing.
- Reflections- Indirect Diffuse Illumination- Shadows- Ambient Occlusion
Combining Ray Tracing and Rasterization
![Page 6: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/6.jpg)
RTX Integration in Northlight
- Ray tracing acceleration structures- Ray tracing pipeline states- Ray tracing shader tables
![Page 7: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/7.jpg)
![Page 8: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/8.jpg)
Acceleration Structures
- Separate bottom level built for each geometry LOD.- LOD selection for ray tracing matches LOD selection for G-buffer.- Utilize existing mesh instancing logic.- Mesh piecWtg
![Page 9: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/9.jpg)
![Page 10: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/10.jpg)
![Page 11: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/11.jpg)
Acceleration Structures
- On each frame, run a CS that outputs the skinned vertex data.- Each vertex is processed once. Indices are not touched.
- Update bottom level structure. - Rebuild on every Nth frame.- Update always may work for non-destructibles.
- Skip update if skinning matrices have not been touched.
Skinned Meshes
![Page 12: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/12.jpg)
Bottom Level Build Flags
1. PREFER_FAST_TRACE - Non-deformable geometries2. PREFER_FAST_BUILD | ALLOW_UPDATE - Deformable objects
![Page 13: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/13.jpg)
Bottom Level Build Flags
1. PREFER_FAST_TRACE - Non-deformable geometries2. PREFER_FAST_BUILD | ALLOW_UPDATE - Deformable objects3. PREFER_FAST_TRACE | ALLOW_UPDATE - Hero characters4. PREFER_FAST_BUILD - Fully physics based deformables, unpredictable movement
![Page 14: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/14.jpg)
Bottom Level Build Flags
1. PREFER_FAST_TRACE - Non-deformable geometries2. PREFER_FAST_BUILD | ALLOW_UPDATE - Deformable objects3. PREFER_FAST_TRACE | ALLOW_UPDATE - Hero characters4. PREFER_FAST_BUILD - Fully physics based deformables, unpredictable movement
- If not alpha tested, FORCE_OPAQUE flag in top level instance- MINIMIZE_MEMORY not used
![Page 15: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/15.jpg)
Resource Barriers
Vertices modified?
For each deformable object
Add to list of modified meshes
YesNo
Continue using the same bottom level structure
Select LOD
![Page 16: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/16.jpg)
Resource Barriers
Write out triangle mesh
Vertices modified?
Transition barrier for vertex data
Transition barrier for vertex dataUAV barrier for bottom level acceleration structure
For each deformable object
Add to list of modified meshes
YesNo
Continue using the same bottom level structure
Select LOD
For each modified object
For each modified object
For each modified object
For each modified object Update/rebuild bottom level structure
For each modified object UAV barrier for bottom level acceleration structure
![Page 17: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/17.jpg)
Acceleration Structures
- Simply rebuild top level on each frame.- Best for ray tracing performance.
- Share a bottom level structure when possible.
Top Level Structure
BLAS [N]
Geometries
BLAS [N]
Geometries
Structure [N]
Geometries
Top Level Acceleration Structure
Instance 0 Instance 1 Instance 2 Instance 3 [...]
Bottom Level Structure 0 (Northlight Mesh)
Geometry 0 (Northlight Primitive)
Geometry 1(Northlight Primitive)
Structure 1
Geometry 0
![Page 18: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/18.jpg)
Pipeline States
- Small extension to engine effect file format.- Separate pipeline state for each DispatchRays().
- Optimal max values for recursion depth and payload size.- A handful of permutations only.
- No application side state object caching.- Shaders precompiled to DXIL.- Could still utilize collections.
New Concepts
![Page 19: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/19.jpg)
Pipeline States
- Ray tracing shaders compiled as libraries. (“lib_6_3” target)- Large existing shader codebase.
- “static” keyword not used -> Every function is an export.
Shader Libraries
![Page 20: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/20.jpg)
Pipeline States
- Ray tracing shaders compiled as libraries. (“lib_6_3” target)- Large existing shader codebase.
- “static” keyword not used -> Every function is an export.
- /exports to limit exports.- /auto-binding-space to enable automatic register assignment.
Shader Libraries
![Page 21: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/21.jpg)
Shader Tables
- Use the global root table for almost everything.- Compile all shaders in a pass as a single library.- Ray generation and miss shaders use only the global root table.- Hit groups use a couple special bindings through the local root table.
Global and Local Root Tables
Global root tableShared for all shaders in a pass
Sampler table
CBV tableSRV tableUAV table
Local root table for hit groupsExtends the global table
Root SRVs
Root constants
![Page 22: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/22.jpg)
Shader Tables
- Root SRVs to index and vertex buffers- Some root constants
- Strides for the root SRVs- Material id
- No references to descriptor heap
Local Bindings for Hit Shaders
![Page 23: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/23.jpg)
Shader Tables
- Root SRVs to index and vertex buffers- Some root constants
- Strides for the root SRVs- Material id
- No references to descriptor heap
- Root SRV issues- No check for out-of-bounds access- No format conversions- No check for base address alignment
Local Bindings for Hit Shaders
![Page 24: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/24.jpg)
Shader Tables
- Simple, fast- ByteAddressBuffers with dynamic attribute offsets -> no permutations
Root SRVs and Constants for Vertex Data
struct HitConstants {uint uVertexStride; uint uUVOffset; […]};
ConstantBuffer<HitConstants> g_bHitConstants : register(b0, space3);
ByteAddressBuffer g_bIndexBuffer : register(t0, space3);
ByteAddressBuffer g_bVertexBuffer : register(t1, space3);
![Page 25: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/25.jpg)
Shader Tables
Remedy already had “bindless” access to materials.
- Material constants in a structured buffer- Textures in an unbounded array
Bindless Access to Materials
struct HitConstants {[..], uint uMaterialID; };
ConstantBuffer<HitConstants> g_bHitConstants : register(b0, space3);
struct MaterialConstants {float fRoughnes;[…]};
StructuredBuffer<MaterialConstants> g_bMaterialConstants;
Texture2D g_tMaterialTextures[] : register(t0, space1);
![Page 26: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/26.jpg)
Shader Tables
- All other bindings come from the global root table.
Layout
Ray generation ID Ray type 0 Miss ID
Ray type 1Miss ID
Geometry 0Ray type 0
Hit ID
Geometry 0Ray type 1
Hit ID
Geometry 1Ray type 2
Hit ID
Geometry 1Ray type 2
Hit ID
[...]
Index SRV Index SRV Index SRV Index SRV [...]
Vertex SRV Vertex SRV Vertex SRV Vertex SRV [...]
Constants Constants Constants Constants [...]
![Page 27: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/27.jpg)
Shadows- Replacement for cascaded
shadow maps.- Very convenient when screen
space shadow mask is produced anyway.
Sun
- Alpha test in Any Hit Shader
- RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
GeForce RTX 2080 TI, 1920x1080
0.9 ms ( 2 rpp )
![Page 28: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/28.jpg)
Shadow Map Raytraced
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 29: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/29.jpg)
Shadows- Use ray tracing to enhance shadow maps.- Perfect details for the most influential
lights.
1. Select the lights for each pixel.2. Raytrace screen space shadow masks.
a. You can use short (fast) rays.3. Multiply with shadow map.
GeForce RTX 2080 TI, 1920x1080
1.4 ms ( 2 rpp, denoising )
Contact Shadows
![Page 30: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/30.jpg)
Reflections
- Reconstruct position from rasterized depth.
- Evaluate reflection direction based on surface normal.
- Randomize based on material properties (roughness).
- Direct replacement for screen space reflections.
G-Buffer
![Page 31: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/31.jpg)
Reflections
Screen SpaceScreen Space RaytracedRaytraced
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 32: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/32.jpg)
Screen
Reflections
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 33: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/33.jpg)
Screen
Reflections
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 34: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/34.jpg)
Screen
Reflections
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 35: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/35.jpg)
ReflectionsLighting Data
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 36: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/36.jpg)
Reflections
- Lots of lights- Reflected location can be anywhere
- View space clustering- Fast- Good speedup for reflection
Light Culling
![Page 37: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/37.jpg)
Reflections
- Most shadows with shadow maps- Sample precomputed GI on miss- Texture LOD 0.0f- Unified shading model
GeForce RTX 2080 TI, 1920x1080
4.4 ms ( 1 rpp, denoising )
![Page 38: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/38.jpg)
Reflections
- Primary rays to G-buffer depth- Select transparents with cull mask
- For N closest layers- Reflection ray from closest-hit- Continue the primary ray
- After N layers - Process layers in any-hit- No more reflections
- “Weighted, Blended Order-Independent Transparency”- https://developer.nvidia.com/content/transparency-or-translucency-rendering
Transparent objects
![Page 39: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/39.jpg)
Indirect Diffuse Illumination
- Pre-computed with path tracer- Voxel based- Resolution 25 cm / 10 inch
Starting Point - Global Illumination as in Quantum Break
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 40: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/40.jpg)
Indirect Diffuse Illumination
- Modulated with either screen space AO or raytraced AO- Raytraced AO is an improvement- Still obvious issues
Raytraced AO Applied to Precomputed GI
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 41: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/41.jpg)
Indirect Diffuse Illumination
- Each cell contains lighting data that has been pre-computed with a path tracer.
GI Data in Sparse Volume Texture
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 42: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/42.jpg)
Indirect Diffuse Illumination
- Each cell contains lighting data that has been pre-computed with a path tracer.
- Static objects and selected lights are included in the pre-computation.
Higher Resolution Near Static Geometry
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 43: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/43.jpg)
Indirect Diffuse Illumination
- Each cell contains lighting data that has been pre-computed with a path tracer
- Static objects and selected lights are included in the pre-computation
- Dynamic object can be in low resolution areas.
Dynamic Objects Excluded from Pre-computing
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 44: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/44.jpg)
Indirect Diffuse Illumination
- The dynamic objects are missed.- AO has been the method to tie the dynamic
geometry to the rest of the scene.- Filtering of low resolution data causes
banding.
- Light leaking through thin geometry.
Issues with Direct Sampling of GI Data
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 45: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/45.jpg)
Indirect Diffuse Illumination
- Run a raytracing pass to sample the global illumination.
- Short rays from GBuffer surface.- If miss, sample GI.
- Miss locations are less likely to contain leaked light.
- Cheapest option is to treat hits as black.- Works like ambient occlusion.
Sample GI in Miss Shader
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 46: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/46.jpg)
- Direct GI sampling on surface- Modulated with raytraced AO
GI sampling in Miss Shader
Hit = Black
GI modulated with raytrace AO
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 47: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/47.jpg)
- Banding with direct GI sampling
Sampling GI in Miss Shader
removes the banding.
Banding on the dome.
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 48: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/48.jpg)
Indirect Diffuse Illumination
- Evaluates single bounce near field dynamic GI.- Blend with the pre-computed GI result sampled
in Miss Shader.
Diffuse Lighting on Hit Shader
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 49: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/49.jpg)
Indirect Diffuse Illumination
- Evaluates single bounce near field dynamic GI.- Blend with the pre-computed GI result sampled
in Miss Shader.
- Lighting and material data to hit shader as in reflections.
- View space light clustering.
GeForce RTX 2080 TI, 1920x1080
2.5 ms ( 1 rpp, denoising )
Diffuse Lighting on Hit Shader
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 50: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/50.jpg)
- GI sampling in Miss Shader- Treat hits black
Evaluate diffuse illumination on hits.
Do nothing on hits.
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 51: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/51.jpg)
- Direct lighting
Direct and indirect diffuse illumination.
Direct illumination only.
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 52: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/52.jpg)
All lighting applied to materials.
Direct lighting, indirect diffuse lighting and specular reflection.
Reference: Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.
![Page 53: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/53.jpg)
Summary
- Some integration overhead- It gets more productive after the initial work is done
- Some obvious straightforward effects- Shadows- Ambient occlusion- Reflections
- Some more creative effects- Contact shadows- Indirect Diffuse
- Useful as reference too
Northlight RTX Is Work in Progress
![Page 54: NVIDIA RTX in Remedy Northlight - on-demand.gputechconf.comon-demand.gputechconf.com/gtc-eu/2018/pdf/e8530-nvidia-rtx-in-remedy... · - Randomize based on material properties (roughness)](https://reader036.vdocument.in/reader036/viewer/2022070616/5d1d326388c993d2288d6b4b/html5/thumbnails/54.jpg)
References
[1] Tatu Aalto. Experiments with DirectX Raytracing in Remedy’s Northlight Engine. GDC 2018.https://www.remedygames.com/experiments-with-directx-raytracing-in-remedys-northlight-engine/