jan novák

Virtual Ray Lights for Rendering Scenes with Participating Media

Jan Novák, Derek Nowrouzezahrai, Carsten Dachsbacher, and Wojciech Jarosz

ACM Transactions on Graphics (Proceedings of SIGGRAPH 2012), vol. 31, no. 4

2nd place in CGF Cover Contest 2014

Virtual Ray Lights for Rendering Scenes with Participating Media - teaser

The FRUIT JUICE scene featuring both single and multiple scattering (left). We evaluate the quality of multiple scattering. Our approach can compute the multiple scattering within the media in about a minute (middle-left), while in equal time, both the previous stateof-the-art approaches for general media (progressive photon beams, middle-right; virtual point lights, right) contain significant artifacts.


We present an efficient many-light algorithm for simulating indirect illumination in, and from, participating media. Instead of creating discrete virtual point lights (VPLs) at vertices of random-walk paths, we present a continuous generalization that places virtual ray lights (VRLs) along each path segment in the medium. Furthermore, instead of evaluating the lighting independently at discrete points in the medium, we calculate the contribution of each VRL to entire camera rays through the medium using an efficient Monte Carlo product sampling technique. We prove that by spreading the energy of virtual lights along both light and camera rays, the singularities that typically plague VPL methods are significantly diminished. This greatly reduces the need to clamp energy contributions in the medium, leading to robust and unbiased volumetric lighting not possible with current many-light techniques. Furthermore, by acting as a form of final gather, we obtain higher-quality multiple-scattering than existing density estimation techniques like progressive photon beams.








    author      = {Nov\'{a}k, Jan and Nowrouzezahrai, Derek and Dachsbacher, Carsten and Jarosz, Wojciech},
    title       = {Virtual ray lights for rendering scenes with participating media},
    journal     = {ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH 2012)},
    volume      = {31},
    number      = {4},
    pages       = {60:1--60:11},
    year        = {2012},
    month       = jul,
    publisher   = {ACM},
    address     = {New York, NY, USA},