This repository contains the source code and an interactive demo for the following EGSR paper:
ReSTIR FG: Real-Time Reservoir Resampled Photon Final Gathering
René Kern, Felix Brüll, Thorsten Grosch
TU Clausthal
This prototype implements ReSTIR FG, an efficient real-time global illumination algorithm that combines photon final gaterhing with reservoir resampling (ReSTIR). Additionally, our ReSTIR FG is able to display caustics in real-time. For direct light, RTXDI is used. This prototype also contains a denoised prototype using DLSS and NRD
This project was implemented using NVIDIA's Falcor rendering framework. See README_Falcor.md for the readme provided with Falcor.
You can download the executable demo from the Releases Page, or build the project by following the instructions in Building Falcor or the build instructions in the original readme.
Teaser:
After downloading the demo from the release page, you can execute it using either the ReSTIRFGDemo_[SceneName].bat
file or the ReSTIRFGDemoNRD_[SceneName].bat
file. We provide four scenes with the Demo, two are included in the git repo in the Models
folder (VeachAjar and Sibernik). The other two scenes need to be downloaded separately (Kitchen and Bistro) from the Releases Page and unziped into the Models
folder. For more scenes, see the Testing with more Scenes section.
To change the settings of our algorithm, navigate to the ReSTIR_FG
group in the UI. In addition to ReSTIR FG
, we have implemented Final Gather
and ReSTIR GI
, which can be switched in the UI. For more information about a setting, hover over the (?)
.
Controls:
WASD
- Camera movementLeft Click
+ Mouse movement
- Change camera directionShift
- Speed up camera movementQ, E
- Camera Down / UPP
- Opens the profiler that shows the Rendertime for each Pass ('ShadowPass' is ours).F9
- Opens the time menu. Animation and camera path speed can be changed here (Scale).F6
- Toggels Graphs UI menu (Enabled by default)Note: We use the Lambertian diffuse BRDF to enable direct comparison with the ReSTIR PT and Suffix ReSTIR prototypes. To switch to Falcors's default diffuse BRDF, disable ReSTIR_FG -> Material Options -> Use Lambertian Diffuse BRDF
.
Testing with other scenes is possible. The following points should be noted when loading other scenes:
ReSTIR_FG
renderscript:
.bat
file (ReSTIRFGDemo_NoScene.bat
)File->Load Script
. The render pass scripts are in the scripts
folder (Data/scripts
in demo).File->Load Scene
.Falcor supports a variety of scene types:
.pyscene
format (more details)
Optional:
Optional Features
, in the window that opens click Add a feature
and select Graphics Tools
.Falcor uses the CMake build system. Additional information on how to use Falcor with CMake is available in the CMake development documetation page.
If you are working with Visual Studio 2022, you can setup a native Visual Studio solution by running setup_vs2022.bat
after cloning this repository. The solution files are written to build/windows-vs2022
and the binary output is located in build/windows-vs2022/bin
.