Real-Time Volumetric Shadows using 1D Min-Max Mipmaps

To compute single scattering in scenes with occluders (left) we compute a depth
image from the camera, and a shadow map from the light. After epipolar
rectification, each row of the shadow map is a 1D heightfield. We optimize the
computation of the scattering integral by using an efficient data structure (a
1D min-max mipmap, center) over this heightfield. This data structure helps
compute the scattering integral for all camera rays in parallel. Our method can
render complex high-quality scenes with textured lights (right) in real-time (55
FPS).

Abstract

Light scattering in a participating medium is responsible for several important
effects we see in the natural world. In the presence of occluders, computing
single scattering requires integrating the illumination scattered towards the
eye along the camera ray, modulated by the visibility towards the light at each
point. Unfortunately, incorporating volumetric shadows into this integral,
while maintaining real-time performance, remains challenging.

In this paper we present a new real-time algorithm for computing volumetric
shadows in single-scattering media on the GPU. This computation requires
evaluating the scattering integral over the intersections of camera rays with
the shadow map, expressed as a 2D height field. We observe that by applying
epipolar rectification to the shadow map, each camera ray only travels through a
single row of the shadow map (an epipolar slice), which allows us to find the
visible segments by considering only 1D height fields. At the core of our
algorithm is the use of an acceleration structure (a 1D min-max mipmap) which
allows us to quickly find the lit segments for all pixels in an epipolar slice
in parallel. The simplicity of this data structure and its traversal allows for
efficient implementation using only pixel shaders on the GPU.