Table of Contents
<aside> 📌 Final Project for UCSD CSE 272 (Prof. Tzu-Mao Li)
Paper Authors: Benedikt Bitterli et al.
Paper Link: Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting
Group Member: Kangming Yu, Zimu Guan
Github Link: LajollaPlus
</aside>
When it comes to real-time rendering, using path tracing for rendering may only allow for a smaller number of samples per pixel (spp). However, if dealing with large scenes that include millions of area light sources, complex objects (complex BSDF materials), and complex occlusion relationships, using traditional path tracing methods can result in a lot of noise, as the light sources sampled through Next Event Estimation (NEE) will likely contribute very little. To sample light sources with larger contributions through NEE, a more accurate probability distribution function, such as an approximation of the rendering equation, is necessary. Obtaining such a probability distribution function can be a challenge, especially for complex rendering equations.
To better sample light sources that contribute more to shading points, we need a more accurate probability distribution function. The proposed solution of ReSTIR is to introduce the RIS sampling method, which eliminates the requirement for sampling based on a normalized probability distribution function. This allows us to directly use the rendering equation as the probability distribution function. With the introduction of the RIS sampling method, we aim to achieve low-noise images with very small spp using the path tracing algorithm. We also aim to maintain the RIS algorithm's superiority in terms of time and space complexity. Furthermore, we hope that the new sampling method can be parallelized so that the algorithm can be implemented on the GPU through graphics APIs in the future.
We have currently incorporated spatial reuse into our implementation of the ReSTIR algorithm, with both unbiased and biased versions available. The unbiased version uses the average weight (MIS) with visibility check (shadow rays), while the biased version has options with and without tricks. Multiple spatial reuses are supported by our spatial reuse. The number of reused samples can be adjusted in the scene input. Additionally, our implementation includes MIS version (using average weights) and regular version for direct illumination, which can be toggled using the scene input. For indirect lighting, we also use the MIS method, which is based on power heuristic weights (NEE and BSDF sampling).
For time and space complexity, we maintain the RIS algorithm's superiority in terms of time ($O(m)$, $m$ is initialResampleNum
) and space complexity ($O(1)$).
*All implementation is in the src/restir
directory.
Example of ReSTIR setting:
Complete ReSTIR algorithm: