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 maps, aliasing, real-time rendering
(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.
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