TU-Clausthal-Rendering / ReSTIR-FG

ReSTIR FG: Real-Time Reservoir Resampled Photon Final Gathering
Other
45 stars 4 forks source link

ReSTIR FG: Real-Time Reservoir Resampled Photon Final Gathering

Introduction

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:

Contents:

Demo usage

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:

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 more Scenes

Testing with other scenes is possible. The following points should be noted when loading other scenes:

Falcor supports a variety of scene types:

Falcor Prerequisites

Optional:

Building Falcor

Falcor uses the CMake build system. Additional information on how to use Falcor with CMake is available in the CMake development documetation page.

Visual Studio

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.