Download presentation
Presentation is loading. Please wait.
Published byClinton Roland Poole Modified over 9 years ago
1
1 A Hierarchical Shadow Volume Algorithm Timo Aila 1,2 Tomas Akenine-Möller 3 1 Helsinki University of Technology 2 Hybrid Graphics 3 Lund University
2
2 Outline Brief intro to shadow volumes fillrate problem, existing solutions Our solution idea implementation Results Q&A
3
3 Shadow volumes [Crow77] Shadow volumes define closed volumes of space that are in shadow infinitesimal light source shadow caster = light cap extruded side quads dark cap
4
4 Is point inside shadow volume? 1. Pick reference point R outside shadow volume any such point is OK 2. Span line from R to point to be classified 3. Compute sum of enter (+1) and exit (-1) events R P2 P3 P1 2D illustration: shadow volume
5
5 Using graphics hardware R at ∞ behind pixel (z-fail) [Bilodeau&Songy, Carmack] infinity always outside SVs – robust must not clip to far plane of view frustum sum hidden events to stencil buffer, sign from backface culling 2D illustration: camera R visible samples (or pixels) view frustum + + + - - shadow volume
6
6 Amount of pixel processing Adapted from [Chan and Durand 2004]
7
7 Fillrate problem 50+ fps without shadows on ATI Radeon 9800XT at 1280x1024, 1 sample/pixel 1 fps when shadow volumes rasterized 2.2 billion pixels per frame
8
8 Existing solutions (1/2) CC shadow volumes [Lloyd et al. 2004] draw SVs only where receivers exist good when lots of empty space Hybrid shadow maps and volumes [Chan&Durand 2004] use SVs only at shadow boundaries boundary pixels determined using shadow map artifacts due to limited shadow map resolution
9
9 Existing solutions (2/2) Depth bounds [Nvidia 2003] application supplies min & max depth values separately for each shadow volume rasterize shadow volume only when visible geometry between [min,max] optimal bounds hard to compute camera minmax 2D illustration: shadow volume visible pixels
10
10 Outline Brief intro to shadow volumes fillrate problem, existing solutions Our solution idea implementation Results Q&A
11
11 Reference image
12
12 Shadow volume algorithm executed once per 8x8 pixel tile
13
13 Green tiles may contain shadow boundary - other tiles were correct
14
14 Low-res (gray) + per-pixel computed boundaries (dark)
15
15 How to detect shadow boundaries? Two facts about shadow volumes 1. always closed 2. SV triangles mark potential shadow boundaries If 3D volume in scene not intersected by shadow volume triangles fully lit or fully in shadow single sample classifies entire volume
16
16 Outline Brief intro to shadow volumes fillrate problem, existing solutions Our solution idea implementation Results Q&A
17
17 Detecting boundary tiles Bound tile with axis-aligned bounding box 8x8 pixel region Z min, Z max Triangle vs. AA Box intersection test 1. low-resolution rasterization 2. Z min and Z max tests 8 8 pixels Z ma x Z min
18
18 Fast update of non-boundary tiles Copy low-res shadows to stencil buffer writing 64 per-pixel values would be slow Two-level stencil buffer saves the day maintain [S min, S max ] per tile always test the higher level first often no need to validate per-pixel values stencil values of non-boundary tiles are constant
19
19 Implementation – Stage 1 Buffers built separately for each shadow volume Classifications ready when entire SV processed application marks begin/end of shadow volumes Low-res shadows Low-resolution rasterizer Boundary? Per-tile operations SV triangles
20
20 Implementation – Stage 2 Low-res shadows Per-pixel rasterizer Copy to 2-level stencil Stencil ops Yes No Low-resolution rasterizer Boundary? SV triangles boundary tile? Update 2-level stencil
21
21 Alternative implementations Two pass Pass 1 = Stage 1 Pass 2 = Stage 2 How to keep pixel units busy during Stage 1? maybe assign per-tile operations to pixel shaders? Single pass Separate stages using delay stream [Aila et al. 2003] Stage 2 of current SV executes simultaneously with next SV’s Stage 1
22
22 Hardware resources Two-level stencil buffer Per-tile operations Optionally delay stream * duplicate low-res rasterizer & Zmin/Zmax units * cache for per shadow volume buffers multiple buffers for pipelined operation allocate from external memory * If not already there for occlusion culling purposes
23
23 Outline Brief intro to shadow volumes fillrate problem, existing solutions Our solution idea implementation Results Q&A
24
24 Results – Simple scene (1280x1024) Depth boundsHierarchicalImprovement Ratio in #pixels1.112.711.5 Ratio in bandwidth1.0317.617.2
25
25 Results – Knights (1280x1024) Depth boundsHierarchicalImprovement Ratio in #pixels2.67.42.8 Ratio in bandwidth2.45.62.4
26
26 Results – Powerplant (1280x1024) Depth boundsHierarchicalImprovement Ratio in #pixels2.422.99.5 Ratio in bandwidth2.316.06.9
27
27 Summary Hierarchical rendering method for shadow volumes significant fillrate savings compared to other hardware methods also works for soft shadow volumes Future work would it make sense to extend programmability to per-tile operations? how many pipeline bubbles are created? requires chip-level simulations
28
28 Thank you! Questions? Acknowledgements Ville Miettinen, Jacob Ström, Eric Haines, Ulf Assarsson, Lauri Savioja, Jonas Svensson, Ulf Borgenstam, Karl Schultz, 3DR group at Helsinki University of Technology The National Technology Agency of Finland, Hybrid Graphics, Bitboys, Nokia and Remedy Entertainment ATI for granting fellowship to Timo (2004-2005)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.