Robust Soft Shadow Mapping with Backprojection and Depth Peeling
Louis Bavoil, Steven P. Callahan, and Cláudio T. Silva
Scientific Computing and Imaging Institute, University of Utah
This paper appears in issue Volume 13, Number 1.
An electronic version of this article is available.
Abstract
Soft shadow mapping is an attractive solution to the problem of real-time soft shadows because it works with any kind of rasterizable geometry (in particular alpha-transparent textures and hair), it does not require any precomputation, and it is simple to implement on the GPU. However, state-of-the-art approaches have several limitations that prevent them from being practical for all scenes. First, parameter tuning is required to avoid surface acne. Second, gaps between shadow-map pixels are either ignored, which results in light bleeding, or handled using gap filling, which results in overshadowing.
We present a more robust soft shadow mapping technique, based on a recent backprojection algorithm, that uses depth peeling to address the problems of surface acne and light bleeding. Our algorithm uses a multi-layer shadow map to reduce light bleeding, and midpoint shadow maps to handle self-shadowing more robustly. It provides high-quality soft shadowing for complex scenes, while still maintaining interactive rendering rates. Source code is available online.
Author Information
Louis Bavoil, Scientific Computing and Imaging Institute, University of Utah, 50 S. Central Campus Drive, Room 3490, Salt Lake City, UT 84112 bavoil@sci.utah.edu
Steven P. Callahan, Scientific Computing and Imaging Institute, University of Utah, 50 S. Central Campus Drive, Room 3490, Salt Lake City, UT 84112 stevec@sci.utah.edu
Cláudio T. Silva, Scientific Computing and Imaging Institute, University of Utah, 50 S. Central Campus Drive, Room 3490, Salt Lake City, UT 84112 csilva@sci.utah.edu
Source Code
melissa-cg-demo.zip - A demo for GeForce 6 and above. The demo includes a simple test scene with three quads. The Cg code of the shaders is available in the shaders subdirectory. The number of layers used by the shadowing shader can be changed in shaders/config.h.BibTeX Entry
@article{BavoilEtAl08,
author = "Louis Bavoil and Steven P. Callahan and Cláudio T. Silva",
title = "Robust Soft Shadow Mapping with Backprojection and Depth Peeling",
journal = "journal of graphics, gpu, and game tools",
volume = "13",
number = "1",
pages = "19-30",
year = "2008",
}
