Parallel-Split Shadow Maps for Large-scale Virtual Environments
Fan Zhang Hanqiu Sun Leilei Xu Lee Kit Lun
The Chinese University of Hong Kong
Refer to our latest project webpage for "Parallel-Split Shadow Maps on Programmable GPUs" in GPU Gems 3.
| Job-hunting Materials (Last Update: 12-July-2007) |
|
I'm expecting to graduate
September-2007, and currently looking for a graphics-related job or
post-doc position. Any helpful information and suggestion will be
appreciated. For your review, you may refer to the following
materials,
If you're interested with my background, please feel free to send me email at fzhang@cse.cuhk.edu.hk. I would like to provide all supplementary materials for your evaluation. |
Left: the scene shadows rendered by
standard shadow map (SSM), with the resolution of 1024x1024. Right: the
scene shadows rendered by PSSM(3; 512x512), in which three smaller shadow maps
with the same resolution of 512x512 are used.
Abstract
Shadowing effects dramatically enhance the realism of virtual environments by providing useful visual cues. Shadow mapping is an efficient algorithm for real-time shadow rendering, which is extensively adopted in real-time applications by its generality and efficiency. However, shadow mapping usually suffers from the inherent aliasing errors due to the image-based nature. In this paper, we present the Parallel-Split Shadow Maps (PSSMs) scheme, which splits the view frustum into different parts by using the planes parallel to the view plane and then generates multiple smaller shadow maps for the split parts. A fast and robust split strategy based on the analysis of shadow map aliasing has been proposed, which produces a moderate aliasing distribution over the whole depth range. By applying the geometry approximation procedure to each of the split parts instead of the whole scene, the tighter bounding shapes of visible objects enhance the utilization of the shadow map resolution. Hardware-acceleration is used to remove the extra rendering passes when synthesizing the scene-shadows. Our approach is intuitive to implement without using complex data structures, with real-time performance for dynamic and large-scale virtual environments.
Download:
2. DirectX implementation developed by Oskari Nyman. weblink
Or download the
local mirror of the source codes here.
3. OpenGL implementation developed by
Jeroen Put. weblink
Or download the
local mirror of the source codes here.
4.
OpenSceneGraph library based
implementation developed by Terry Welsh.
weblink
Or download the local mirror of the source
codes here.
5. A XNA-implementation
is found
here. (Many thanks to the author! All copyrights are reserved by the
original author.)
Or download the local mirror of the source
codes here.
Implementation Key Points:
1: View frustum is split into several parts
2: Render an independent shadow map for each of the split parts
3: Synthesize scene-shadows by using the pixel shader (hardware-accelerated)
4. Pseudo-code examples for both CPU and GPU sides
Images (click each image below to see more experimental results)
![]() |
![]() |
| Robot War (240K triangles) | Huge Chessboard (51K triangles) |
![]() |
![]() |
| Knights (1M triangles) | Mining Terrain (1.3M triangles) |