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).
Paper: PDF (i3D 2011)
Video: MP4 (174MB, 1280x960p24, no sound)
Slides from i3D 2011: PPTX (36 MB)
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.
This is a followup to our SIGGRAPH Asia paper.