You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+50-29Lines changed: 50 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,25 +1,48 @@
1
1
# NRD SAMPLE
2
2
3
-
All-in-one repository including all relevant pieces to see [*NRD (NVIDIA Real-time Denoisers)*](https://github.com/NVIDIA-RTX/NRD) in action. The sample is cross-platform, it's based on [*NRI (NVIDIA Rendering Interface)*](https://github.com/NVIDIA-RTX/NRI) to bring cross-GraphicsAPI support.
4
-
5
-
*NRD sample* is a land for high performance path tracing for games. Some features to highlight:
6
-
- minimalistic path tracer utilizing *Trace Ray Inline*
7
-
- HALF resolution (checkerboard), FULL resolution and FULL resolution tracing with PROBABILISTIC diffuse / specular selection at the primary hit
8
-
- NRD denoising, including occlusion-only and spherical harmonics (spherical gaussians) modes
9
-
- overhead-free multi-bounce propagation (even in case of a single bounce) based on reusing the previously denoised frame
10
-
- SHARC radiance cache
11
-
- reference accumulation
12
-
- several rays per pixel and bounces
13
-
- realistic glass with multi-bounce reflections and refractions
14
-
- mip level calculation
15
-
- curvature estimation
16
-
- native integration of DLSS-SR and DLSS-RR via NGX API (not StreamLine)
3
+
NRD Sample is a high-performance playground and reference implementation for path tracing in games. It provides a comprehensive environment to see [*NRD (NVIDIA Real-time Denoisers)*](https://github.com/NVIDIA-RTX/NRD) in action across all possible use cases and compare it directly with *DLSS-RR*. While *NRD* and *DLSS-RR* are highly competitive today, effective comparison requires enabling *NRD* "SH" mode (set via the `NRD_MODE` macro in `Shared.hlsli`). The sample is designed to demonstrate production-ready path tracing best practices suitable for real-time gaming that balance visual fidelity with high performance. A core focus of the project is high-performance glass and transparency rendering. Built on the [*NRI (NVIDIA Rendering Interface)*](https://github.com/NVIDIA-RTX/NRI), the sample is natively cross-platform, supporting both *D3D12* and *Vulkan*. The ideas from the sample are already used in several *AAA* games and game mods.
4
+
5
+
Features:
6
+
- best-in-class performance:
7
+
- RTX 4080 @ 1440p (native) shows ~150 FPS at day time and ~110 FPS at night time in *Bistro* scene (when the importance sampling comes into play)
8
+
- fast path tracing based on *Trace Ray Inline* supporting:
9
+
- tracing variants:
10
+
- full resolution: probabilistic diffuse or specular lobe selection at the primary hit (recommended main use case)
11
+
- half resolution: 0.5 diffuse ray + 0.5 specular ray (checkerboard rendering)
12
+
- full resolution: 1 diffuse ray + 1 specular ray
13
+
- material models:
14
+
- "base color - metalness"
15
+
- RTXCR hair and skin
16
+
- smart levels of radiance caching, allowing to do only 1 bounce:
17
+
- L1 radiance cache: previously denoised frame (essential for refractions)
- simple and robust importance sampling scheme designed to work with generic emissive pixels, i.e. not analytical lights (not RESTIR)
20
+
- realistic fast and robust glass with multi-bounce reflections and refractions not requiring denoising
21
+
- several rays per pixel and bounces (mostly for comparison)
22
+
- extremely fast implementation of Ray Cones for mip level calculation
23
+
- curvature estimation
24
+
-*NRD* denoising:
25
+
- simple integration based on [*NRD Integration*](https://github.com/NVIDIA-RTX/NRD/tree/master/Integration) layer
26
+
-*RELAX* and *REBLUR* for radiance
27
+
-*SIGMA* for sun shadows
28
+
- Spherical Harmonics (Gaussians) mode essential for upscalers
29
+
- history confidence bumping IQ of dynamic lighting to a new level
30
+
-*NRD* debug validation layer
31
+
- denoising best practices including hair denoising
32
+
- occlusion-only modes
33
+
- reference accumulation
34
+
- NRD unit tests
35
+
- NRD special tests
36
+
- native integration of *DLSS-SR*, *DLSS-RR*, *FSR* and *XeSS* via *NRIUpscaler* extension (not StreamLine)
37
+
- NOTE: don't forget to modify `NRD_MODE` in `Shared.hlsli` to `SH` to unclock Spherical Harmonics (Gaussians) resolve mode essential for image quality!
17
38
18
39
GitHub branches:
19
-
-`main` - "all-in-one" branch: all possible options and settings are there. Since this branch covers all aspects, it's for NRD development and maintenance mostly
20
-
-`simplex` - "best practices" branch: optimized for the recommended usage (the path tracer does a probabilistic split at the primary hit, `HitDistanceReconstructionMode::AREA_3X3` enabled in NRD). This branch is recommended to borrow best practices of path tracing and NRD usage. It offers better performance and has less code
40
+
- "best practices" `simplex` branch
41
+
- optimized for recommended usage (probabilistic split, `HitDistanceReconstructionMode::AREA_3X3` reconstruction). Recommended for learning NRD integration and borrowing PT code. It offers better performance and has less code
42
+
- "all-in-one" `main` branch
43
+
- contains every possible option and setting, used primarily for NRD development and maintenance.
-`RTXCR_INTEGRATION` - use RTXCR for hair and skin rendering, download sample scene
36
60
37
-
# HOW TO RUN
61
+
##HOW TO RUN
38
62
39
-
- Run `3-Run NRD sample` script and answer the cmdline questions to set the runtime parameters
63
+
- Run `3-Run` script and answer the cmdline questions to set the runtime parameters
40
64
- If [Smart Command Line Arguments extension for Visual Studio](https://marketplace.visualstudio.com/items?itemName=MBulli.SmartCommandlineArguments) is installed, all command line arguments will be loaded into corresponding window
41
-
- The executables can be found in `_Bin`. The executable loads resources from `_Data`, therefore please run the samples with working directory set to the project root folder (needed pieces of the command line can be found in `3-Run NRD sample` script)
65
+
- The executables can be found in `_Bin`. The executable loads resources from `_Data`, therefore please run the samples with working directory set to the project root folder (needed pieces of the command line can be found in `3-Run` script)
42
66
43
-
### REQUIREMENTS
67
+
Requirements:
68
+
- any GPU supporting "trace ray inline"
44
69
45
-
Any ray tracing compatible GPU.
70
+
## USAGE
46
71
47
-
### USAGE
72
+
By default, NRD is used in common mode. To switch to "SH" or "occlusion-only" modes, modify the `NRD_MODE` macro in `Shared.hlsli` to one of the following: `NORMAL`, `OCCLUSION`, `SH`, or `DIRECTIONAL_OCCLUSION`. RELAX doesn't support AO / SO denoising. If RELAX is the current denoiser, ambient term will be flat.
48
73
74
+
Controls:
49
75
- Right mouse button + W/S/A/D - move camera
50
76
- Mouse scroll - accelerate / decelerate
51
77
- F1 - toggle "gDebug" (can be useful for debugging and experiments)
@@ -54,8 +80,3 @@ Any ray tracing compatible GPU.
54
80
- Tab - UI toggle
55
81
- Space - animation toggle
56
82
- PgUp/PgDown - switch between denoisers
57
-
58
-
By default *NRD* is used in common mode. But it can also be used in occlusion-only (including directional) and SH (spherical harmonics) modes in the sample. To change the behavior `NRD_MODE` macro needs to be changed from `NORMAL` to `OCCLUSION`, `SH` or `DIRECTIONAL_OCCLUSION` in `Shared.hlsli`.
59
-
60
-
Notes:
61
-
- RELAX doesn't support AO / SO denoising. If RELAX is the current denoiser, ambient term will be flat, but energy correct.
0 commit comments