Coder Social home page Coder Social logo

restir_pt's Introduction

ReSTIR Path Tracing (ReSTIR PT)

Introduction

  • This repo includes the source code for the following SIGGRAPH 2022 paper

Generalized Resampled Importance Sampling: Foundations of ReSTIR
Daqi Lin* (University of Utah), Markus Kettunen* (NVIDIA), Benedikt Bitterli (NVIDIA), Jacopo Pantaleoni (NVIDIA), Cem Yuksel (University of Utah), Chris Wyman (NVIDIA)
(*Joint first authors)
https://graphics.cs.utah.edu/research/projects/gris/ (with embedded interactive viewer and video) https://research.nvidia.com/publication/2022-07_generalized-resampled-importance-sampling-foundations-restir

ReSTIR Path Tracing (ReSTIR PT) is a resampling-based path tracing algorithm as the result of applying the GRIS theory to ReSTIR. Compared to ReSTIR GI [Ouyang et al. 2021], ReSTIR PT handles general types of light transport. The path reuse quality is significantly improved by a context-aware shift mapping, allowing interactive rendering of many-bounce diffuse and specular lighting with high quality.

  • The method is implemented as a render pass called "ReSTIRPTPass" (Source\RenderPasses\ReSTIRPass) in Falcor 4.4. See README_Falcor.md for the original README file provided by Falcor.
  • A script RunReSTIRPTDemo.bat is provided to show how the method works in an animated version of the VeachAjar scene (from Benedikt Bitterli's rendering resources) which is contained in the repo.
  • Before running the scripts, you need to compile the program and download the scene files following the instruction below.

Prerequisites

  • Windows 10 version 20H2 or newer
  • Visual Studio 2019
  • [Windows 10 SDK version 10.0.19041.1 Or Newer] (https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
  • NVIDIA driver 466.11 or newer
  • RTX 2060 or Higher (NVIDIA graphics card with raytracing support)
  • Get NVAPI, head over to https://developer.nvidia.com/nvapi and download the latest version of NVAPI. Create a folder called .packman under Source/Externals, Extract the content of the zip file into Source/Externals/.packman/ and rename Rxxx-developer to nvapi.

How to compile

  • Make sure you have NVAPI in Source/Externals/.packman/
  • Open Falcor.sln and Build Solution in configuration ReleaseD3D12

Run the demo

  • execute RunReSTIRPTDemo.bat
  • The GUI contains self-explanatory settings to turn on/off different components of ReSTIR PT or change its quality.

Test with more scenes

  • You can test your custom scene by running Bin\x64\Release\Mogwai.exe first, then load a scene file.
  • A Falcor pyscene is recommended. For how to create a pyscene, please check out the Source/RenderPasses/ReSTIRPTPass/Data/VeachAjar/VeachAjar.pyscene as a template. Details can be found in Falcor's documentation
  • Alternatively, if you have a scene file with well defined lighting, material, and camera information that is supported by Falocr (like FBX), you can also create a one-line pyscene file, e.g. sceneBuilder.importScene(YOUR_SCENE_FILE).

Offline rendering

  • ReSTIR PT is an unbiased algorithm and can be used for offline rendering. The recommended setting is to disable temporal reuse, use 32 candidate samples per pixel, and set the number of spatial reuse rounds, spatial neighbors, and spatial reuse radius to 3, 6, 10, respectively (more details in the paper).

An example screenshot (running on an RTX 3090)

restir_pt's People

Contributors

hchoi405 avatar dqlin avatar

Watchers

 avatar

restir_pt's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.