In this paper, we present a new shadow mapping technique that improves the quality of perspective and uniform shadow maps. Our technique uses a perspective transform specified in light space which allows treating all lights as directional lights and does not change the direction of the light sources. This gives all the benefits of the perspective mapping but avoids the problems inherent in perspective shadow mapping like singularities in post-perspective space, missed shadow casters etc. Furthermore, we show that both uniform and perspective shadow maps distribute the perspective aliasing error that occurs in shadow mapping unequally over the available z-range. We therefore propose a transform that equalizes this error and gives equally pleasing results for near and far viewing distances. Our method is simple to implement, requires no scene analysis and is therefore as fast as uniform shadow mapping.

Keywords: shadow maps, aliasing, real-time rendering


Uniform (left), light space perspective (middle) and perspective (right) shadow maps. The second row shows images rendered from the warped light views, which also include the eye frusta (shaded transparently). Uniform shadow maps capture the distant shadow best, perspective shadow maps the near shadow, and LiSPSM work well for both. Models courtesy of www.3dcafe.com.


More samples

Source Code

A sample-implementation in C using GLUT for Windows/Linux is available for download
Readme of the program for a quick overview
Note: code last updated at 14. Oct. 2004
Changes: solved problem with certain special cases with a low sun setting. the solution is to use the "body vector" of the intersection body B as up vector for the shadow matrix calculation.

Source Code 2

A sample-implementation in C++ using GLUT OGLSL for Windows/Linux is available for download
Note: code last updated at 9. Mar. 2006


Walkthrough through our test-scenes (46MB, 512x512, MPG-1)

More Pictures and Videos

More Pictures and Videos