- Notifications
You must be signed in to change notification settings - Fork62
License
NVIDIA-RTX/RTXDI
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Version 2.3.0.
RTXDynamicIllumination is a framework that originally facilitated implementation of efficient direct light sampling in real-time renderers. It is based on theReSTIR algorithm published in the paper called "Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting" by B. Bitterli et al.
Starting with version 2.0, RTXDI also includesReSTIR GI functionality, which allows applications to apply importance resampling to indirect illumination rendered using path tracing. For more information about the indirect illumination algorithm, see the paper called "ReSTIR GI: Path Resampling for Real-Time Path Tracing" by Y. Ouyang et al. The feature is described in more detail inthis document.
For more information about RTXDI, see theNVIDIA Developer Page.
Libraries/Rtxdi
is a submodule that contains the integrable runtime sources that are meant to be included in the application build:
Rtxdi/Include/Rtxdi
has the include files, both for host code and for shaders.Rtxdi/Include/Rtxdi/DI/
andRtxdi/Include/Rtxdi/GI/
are the main shader include folders that contain the resampling implementations for their respective algorithms.Rtxdi/Source
has the host code with various utility functions for setting up the parameters and resources for resampling.
Samples
contains two sample projects,MinimalSample
andFullSample
. TheMinimalSample/Source
project implements ReSTIR DI in a single combined pass to show a minimum viable implementation. TheFullSample/Source
project implements ReSTIR DI in several passes integrated into a broader rendering pipeline to show a more standard implementation. The shaders for each project live in their respectiveMinimalSample/Shaders
andFullSample/Shaders
folders.
External
contains project dependencies both from Nvidia and third parties:
External/donut
is a Git submodule structure with the"Donut" rendering framework used to build the sample apps.External/NRD
is a Git submodule with the"NRD" denoiser library.External/DLSS
is a Git submodule with theDeep Learning Super-Sampling SDK.External/dxc
is a recent version of DirectX Shader Compiler. However, unlike the other dependencies, it is not a Git submodule but is instead fetched by CMake at project configuration time.
Assets/Media
is a Git submodule containing theRTXDI SDK Sample Assets.
Note that because thertxdi-assets
submodule that is cloned intoAssets/Media
uses LFS, cloning it withoutLFS installed will result in files containing LFS pointers instead of the actual assets.
Install LFS support by following the instructions ongit-lfs.com
Clone the repository with all submodules:
git clone --recursive https://github.com/NVIDIA-RTX/RTXDI.git
If the clone was made non-recursively and the submodules are missing, clone them separately:
git submodule update --init --recursive
Configure the solution with CMake. The easiest option is to useCMake GUI.
Assuming that the RTXDI SDK tree is located in
D:\RTXDI
, set the following parameters in the GUI:- "Where is the source code" to
D:\RTXDI
- "Where to build the binaries" to
D:\RTXDI\build
- "Where is the source code" to
Click "Configure", set "Generator" to the Visual Studio you're using (tested with VS 2019 version 16.8.2), set "Optional platform" to x64, click "Finish".
Click "Generate", then "Open Project".
Build the solution with Visual Studio
Run the
FullSample
orMinimalSample
projects.
Make sure the necessary build packages are installed on the target system. For Ubuntu 20.04 (amd64), the following command is sufficient:
sudo apt install build-essential cmake xorg-dev libtinfo5
Install LFS support by following the instructions ongit-lfs.com. Note that on Ubunutu 21.04+ you can simply:
sudo apt install git-lfs
Clone the repository with all submodules:
git clone --recursive https://github.com/NVIDIA-RTX/RTXDI.git
If the clone was made non-recursively and the submodules are missing, clone them separately:
git submodule update --init --recursive
Create a build folder:
mkdir build && cd build
Configure the project with CMake:
cmake ..
Build:
make -j8
(example for an 8-core CPU, or useNinja instead)
Run:
bin/FullSample
orbin/MinimalSample
The RTXDI sample applications can run using D3D12 or Vulkan, which is achieved through theNVRHI rendering API abstraction layer and HLSL shader compilation to SPIR-V through DXC (DirectX Shader Compiler). We deliver a compatible version of DXC through packman. If you wish to use a different (e.g. newer) version of DXC, it can be obtained fromMicrosoft/DirectXShaderCompiler on GitHub. The path to a custom version of DXC can be configured using theDXC_PATH
andDXC_SPIRV_PATH
CMake variables.
By default, the sample apps will run using D3D12 on Windows. To start them in Vulkan mode, add--vk
to the command line. To compile the sample apps without Vulkan support, set the CMake variableDONUT_WITH_VULKAN
toOFF
and re-generate the project.
To enable SPIV-V compilation tests, set theGLSLANG_PATH
variable in CMake to the path to glslangValidator.exe in your Vulkan installation.
See theIntegration Guide.