Parallel-Split Shadow Maps on Programmable GPUs
(To appear in GPU Gems 3)
Oskari Nyman2 1. Dept. of Computer Science & Engineering
2. Dept. of Computer Science & Engineering The Chinese University of Hong Kong
Helsinki University Of Technology Email: {fzhang, hanqiu}@cse.cuhk.edu.hk
Email: oskari.nyman@hut.fi
Disclaimer: Due to the copyright issue, we didn't disclose our GPU Gems 3 paper (including the accompanying source codes) yet. Please check this page later for updates. This page is maintained by Fan Zhang. If you have any question or suggestion, please contact me at fzhang@cse.cuhk.edu.hk. This page contains a few HTML background images (just for good-looking:) downloaded from NVidia.com. If you find any information conflicting with your copyright, please let me know at your convenience. Personal Advertisement:) 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,
Curriculum Vitae .pdf version .doc version
Personal Profile weblink to my profile at Monster.com
Research Statement (upon request)
3D Arts in my publications (upon request)
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.
| PSSM(3; 1Kx1K) v.s. SSM(2Kx2K) | ||
| Overview |
|
|
| Shadow Qualities |
|
|
| Shadow Maps |
|
|
|
Dawnspire: Prelude. |
||
| Abstract |
|
Shadow mapping is well known for its generality and efficiency, thus it has been extensively employed for real-time shadow rendering in diverse applications. However, it suffers from an inherent aliasing problem due to its image-based nature. In this paper, we present the implementation details of Parallel-Split Shadow Maps (PSSMs) on programmable GPUs. PSSMs split the view frustum into parts using planes parallel to the view plane, and then generate a shadow map for each part. A fast and robust splitting strategy based on the analysis of shadow map aliasing is proposed, which results in a moderate aliasing distribution over the whole depth range. By applying a geometry approximation to each of the split parts instead of the entire scene, tighter bounding shapes of visible objects enhance the utilization of the shadow map resolution. Hardware accelerated processing on DirectX-9 level GPUs is developed to eliminate extra rendering passes which surpass that of standard shadow mapping when synthesizing scene-shadows. Fully GPU-based implementation on DirectX-10 level hardware is proposed as well, in which only a single rendering pass is required for both generating PSSMs and rendering the scene-shadows. |
|
Download (continuously updated) |
||||||||||||
|
Related Papers
1. "Parallel-split shadow maps for large-scale virtual environments". Project Page. In ACM VRCIA'06. 2."Hardware-accelerated parallel-split shadow maps". To appear in International Journal of Image and Graphics. (coming soon...) 3. "Parallel-Split Shadow Maps on Programmable GPUs". To appear in GPU Gems 3. (will be posted later due to the copyright issue)
Related Implementations
1. DirectX9 implementation, documents, developed by Oskari Nyman. (***Strongly recommended!***)
2. OpenGL Implementation, documents, developed by Jeroen Put.
3. XNA Implementation, refer to here for more details. (Many thanks to the author and all copyrights are reserved by the original author.)
4. OpenSceneGraph-based implementation (weblink)
Terry Welsh's implementation,
documents,
extra documents
5. DirectX10 Implementation (will be posted later...)
6. See how PSSM+VSM (Variance Shadow Maps) produces fantastic soft shadows, refer to here for more details. Download Demo, developed by Andrew Lauritzen. (***Strongly recommended!***)
7. The demo from the Engine
GODZ developed by Richard Osborne.
8. The
ORGE 3D based PSSM implementation.
Weblink to the implementation details, developed by Rvkennedy.
Related Demos & Images
1.
errata: "PSSM(2; 512x512)" in the video should be corrected to "PSSM(3;512x512)".
2.
3.
4.
5. Check the "VPSSM Shadows" on the page
at
here.
6. Video from Dawnspire: Prelude (http://www.dawnspire.com).
More images included in our GPU Gems 3 paper will be posted later... |
||||||||||||
|
Games/Projects/Engines using PSSMs (please contact me if you want to be the next one!) |
||
|
|
![]() |
![]() |
|
Dawnspire: Prelude courtesy of Silent Grove Studios. |
The most
popular DX9 PSSM demo courtesy of Oskari Nyman |
OpenGL PSSM demo courtesy of Jeroen Put |
![]() |
![]() |
![]() |
|
VSM+PSSM on
DX10 courtesy of Andrew Lauritzen. |
Hammer Engine
courtesy of Sepehr Taghdissian |
GODZ Engine courtesy of Richard Osborne |
![]() |
![]() |
![]() |
|
Blade3D PSSM Shadows courtesy of Blade3D. |
Killzone 2
a talk on the PSSMs implementation in Killzone 2, presented by Michal Valient |
Phoenix Engine
|
|
Further Research & Miscs |
|
Question: What are the
differences between PSSM and CSM (Cascaded Shadow Maps)? Answer: Everything doesn't come from nowhere. PSSMs are not an exception as
well. The idea of using multiple shadow maps was introduced in Tadamura
et al. ("Rendering optimal solar
shadows with plural sunlight depth buffers")
2001 and further studied in Lloyd et al. ( "Warping
and Partitioning for Low Error Shadow Maps
") 2006, and it was also implemented as
cascaded shadow mapping in Futuremark's benchmark application 3DMark
2006. Furthermore, I list other few differences here. This part will be continuously updated due to the progress of our research. First of all, the construction of the light frustum for each split is not that trivial. We use a consistent way to do that for both spot and directional lights. Everyone knows the basic idea, but the implementation of this step should be careful and optimized. Second, we proposed the "geometry approximation" (it's called "scene-dependent projection" in GPU Gems 3) to optimize the usage of each shadow map. Question: In which directions,
we can further improve PSSMs? Answer: PSSM+VSM
(variance shadow maps) and PSSM/CSM+LiSPSM (light space perspective
shadow maps) might be better ways to further improve PSSMs. A good
example for PSSM/CSM+LiSPSM is the professional game
Lost Planet,
refer to the discussion
here for more information (just use Ctrl+F to find "Fan
Zhang" on the page). For your convenience, I post the PSSM/CSM
related part in the discussion below, |
|
Acknowlegements |
|
All screenshots are from Dawnspire: Prelude (http://www.dawnspire.com) courtesy of Silent Grove Studios®. Thanks to Anders Hammervald (anders@hammervald.com) for his sincere help during preparing all images. Many thanks to the volunteers who implement and further research our PSSMs algorithm. |
|
Last update:
04-May-2007
|