Dynamic Many-Light Sampling for Real-Time Ray Tracing
High-Performance Graphics, 2019
Abstract
Monte Carlo ray tracing offers the capability of rendering scenes with large numbers of area light sources---lights can be sampled stochastically and shadowing can be accounted for by tracing rays, rather than using shadow maps or other rasterization-based techniques that do not scale to many lights or work well with area lights. Current GPUs only afford the capability of tracing a few rays per pixel at real-time frame rates, making it necessary to focus sampling on important light sources. While state-of-the-art algorithms for offline rendering build hierarchical data structures over the light sources that enable sampling them according to their importance, they lack efficient support for dynamic scenes. We present a new algorithm for maintaining hierarchical light sampling data structures targeting real-time rendering. Our approach is based on a two-level BVH hierarchy that reduces the cost of partial hierarchy updates. Performance is further improved by updating lower-level BVHs via refitting, maintaining their original topology. We show that this approach can give error within 6% of recreating the entire hierarchy from scratch at each frame, while being two orders of magnitude faster, requiring less than 1 ms per frame for hierarchy updates for a scene with thousands of moving light sources on a modern GPU. Further, we show that with spatiotemporal filtering, our approach allows complex scenes with thousands of lights to be rendered with ray-traced shadows in 16.1 ms per frame.
News
- 2021-11-24: Tweaks to the BibTeX entry.
- 2020-01-30: Update comment about the code being available in Falcor 4.0, and link back to the Ray Tracing Gems article.
- 2019-07-17: Add slides and update author generated version with DigiLib link.
- 2019-07-15: Add DigiLib link and BibTeX entry.
- 2019-06-30: Initial upload.
Downloads
- Paper
- BibTeX entry
-
@inproceedings{ Moreau2019, author = {Moreau, Pierre and Pharr, Matt and Clarberg, Petrik}, title = {Dynamic Many-Light Sampling for Real-Time Ray Tracing}, DOI = {10.2312/hpg.20191191}, editor = {Steinberger, Markus and Foley, Tim}, publisher = {The Eurographics Association}, address = {Goslar, {DEU}}, booktitle = {High-Performance Graphics - Short Papers}, year = {2019}, ISSN = {2079-8687}, ISBN = {978-3-03868-092-5}, eventdate = {2019-07-08–2019-07-10}, venue = {Strasbourg, {FRA}} }
- Slides
- Presentation at HPG 2019 in Strasbourg (pdf) (pptx)
- Code
- Part of Falcor's 4.0 release.
- Videos
-
- Animation in Bistro Exterior, rendered using a 2-level BVH at 4 spp
- Animation in Bistro Exterior, rendered using a 2-level BVH at 4 spp and filtered using SVGF
- Reference animation in Bistro Exterior
- Animation in Emerald Square, rendered using a 2-level BVH at 4 spp
- Reference animation in Emerald Square
Videos
All videos were generated using the dumped frames of the animations (and not captured in real-time); it was run on a GeForce RTX 2080 Ti GPU (with 11 GB of VRAM).
See also
- Importance Sampling of Many Light on the GPU, Ray Tracing Gems, 2019, upon which this work is based.