Efficiently rendering direct lighting from millions of dynamic light sources using Monte Carlo integration remains a challenging problem, even for off-line rendering systems. We introduce a new algorithm—ReSTIR—that renders such lighting interactively, at high quality, and without needing to maintain complex data structures. We repeatedly resample a set of candidate light samples and apply further spatial and temporal resampling to leverage information from relevant nearby samples. We derive an unbiased Monte Carlo estimator for this approach, and show that it achieves equal-error 6×-60× faster than state-of-the-art methods. A biased estimator reduces noise further and is 35×-65× faster, at the cost of some energy loss. We implemented our approach on the GPU, rendering complex scenes containing up to 3.4 million dynamic, emissive triangles in under 50 ms per frame while tracing at most 8 rays per pixel.
We thank Jacopo Pantaleoni for useful discussions during this project, and Jan Novák and Marco Salvi for their insightful feedback. This work was generously supported by a NVIDIA Research Professor Partnership and NSF grant 1844538.
@article{bitterli20spatiotemporal, author = {Bitterli, Benedikt and Wyman, Chris and Pharr, Matt and Shirley, Peter and Lefohn, Aaron and Jarosz, Wojciech}, title = {Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting}, journal = {ACM Transactions on Graphics (Proceedings of SIGGRAPH)}, volume = {39}, number = {4}, year = {2020}, month = jul, doi = {10/gg8xc7}, keywords = {reservoir sampling, streaming algorithm, resampled importance sampling, RIS, rendering} }