0% found this document useful (0 votes)
60 views59 pages

MIT6 837F12 Lec23

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views59 pages

MIT6 837F12 Lec23

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 59

MIT EECS 6.

837
Computer Graphics

Wojciech Matusik

A cartoon has been removed due to copyright restrictions.

Real-Time
Shadows
MIT EECS 6.837 – Durand
1
Why are Shadows Important?
• Depth cue
• Scene
Lighting
• Realism
• Contact Image removed due to copyright restrictions.

points

2
Shadows as a Depth Cue

© source unknown. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

3
Shadows as the Origin of Painting

© source unknown. All rights reserved. This content is excluded from our Creative This image is in the public domain. Author: David Allan (!744-1796).
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.
4
Shadow in Ray Tracing
• Trace secondary (shadow) rays towards each
light source
• If the closest hit point is smaller than the
distance to the light then the point is in shadow

5
Today
• Shadow Maps
– Shadow/View Duality
– Texture Mapping
• Shadow Volumes
• Deep Shadow Maps
• Alias-free Shadow Maps

6
Shadow Maps Are Important
• Both in high-end production software...
– Pixar’s RenderMan
• ... and in real-time rendering (e.g. games)

© source unknown. All rights reserved. This content is


© Pixar. All rights reserved. This content is excluded from our Creative Commons
excluded from our Creative Commons license. For more
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.
information, see http://ocw.mit.edu/help/faq-fair-use/.
7
Shadow/View Duality
• A point is lit if it
is visible from the
light source

• Shadow
computation
similar to view
computation

8
Shadow Mapping
• Texture mapping with
depth information
• 2 passes
– Compute shadow
map == depth from
light source
• You can think of
it as a z-buffer as
seen from the light
– Render final image,
check shadow map
© Addison-Wesley. All rights reserved. This content is excluded from our Creative
to see if points are Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

in shadow Foley et al. “Computer Graphics Principles and


Practice”
9
Shadow Map Look Up
• We have a 3D point (x,y,z)WS
• How do we look up
the depth from the
shadow map?
(x',y',z')LS (x,y,z)WS

• Use the 4x4


perspective projection
matrix from the light
source to get (x',y',z')LS
• ShadowMap(x',y') < z'?
© Addison-Wesley. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

Foley et al. “Computer Graphics Principles and


Practice” 10
Shadow Map Look Up Questions?
• We have a 3D point (x,y,z)WS
• How do we look up
the depth from the
shadow map?
(x',y',z')LS (x,y,z)WS

• Use the 4x4


perspective projection
matrix from the light
source to get (x',y',z')LS
• ShadowMap(x',y') < z'?
© Addison-Wesley. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

Foley et al. “Computer Graphics Principles and


Practice” 11
Limitations of Shadow Maps
1. Field of View
2. Bias (Epsilon)
3. Aliasing

© Addison-Wesley. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

12
1. Field of View Problem
• What if point to
shadow is outside
field of view of
shadow map?
– Use 6 shadow maps
on the faces of a cube
– ... or use only
spot lights

© Addison-Wesley. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

13
2. The Bias (Epsilon) Nightmare
• For a point visible
from the light source
ShadowMap(x’,y’)  z’
– But due to rounding
errors the depths
never agree exactly
• How can we
avoid erroneous
self-shadowing?
– Add bias (epsilon)
© Addison-Wesley. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

14
2. Bias (Epsilon) for Shadow Maps
ShadowMap(x’,y’) + bias < z’
Choosing a good bias value can be very tricky

Correct image Not enough bias Way too much bias


(“surface acne”)

15
3. Shadow Map Aliasing
• Under-sampling of the shadow map
– Jagged shadow edges

16
3. Shadow Map Filtering
• Should we filter the depth?
(weighted average of neighboring depth values)
• No... filtering depth is not meaningful
Surface at z = 49.8

50.2 50.0 50.0


<49.8?
X
50.1 1.2 1.1
Filter 22.9 Compare 1

1.3 1.4 1.2

Ordinary texture map filtering. Does not work for depth maps.
Image by MIT OpenCourseWare.

17
3. Percentage Closer Filtering
• Instead we need to filter the result of the shadow test
(weighted average of comparison results)
Surface at z = 49.8

50.2 50.0 50.0


0 0 0
<49.8?
X
50.1 1.2 1.1
Compare
0 1 1 Filter 0.55

1 1 1
1.3 1.4 1.2

Sample transform step

Image by MIT OpenCourseWare.

18
3. Percentage Closer Filtering
• 5x5 samples
• Nice antialiased
shadow
• Using a bigger
filter produces
fake soft shadows
• Setting bias
is tricky

19
3. Percentage Closer Filtering
• 5x5 samples
• Nice antialiased
shadow
• Using a bigger
filter produces
fake soft shadows
• Setting bias
is tricky

Questions?
20
Shadows in Production
• Often use
shadow maps
• Ray casting as
fallback in case
of robustness
issues

© source unknown. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.
21
Hardware Shadow Maps
• Can be done with hardware texture mapping
– Texture coordinates u,v,w generated using 4x4 matrix
– Modern hardware permits tests on texture values

22
Hardware Shadow Maps Questions?
• Can be done with hardware texture mapping
– Texture coordinates u,v,w generated using 4x4 matrix
– Modern hardware permits tests on texture values

23
Today
• Shadow Maps
• Shadow Volumes
– (The Stencil Buffer)
• Deep Shadow Maps
• Alias-free Shadow Maps

24
Shadow Volumes
• Explicitly represent the volume
of space in shadow
• For each polygon
– Pyramid with point
light as apex
– Include polygon to cap

25
Shadow Volumes
• If a point is inside a shadow
volume cast by a particular light,
the point does not receive any
illumination from that light

• Cost of naive
implementation:
#polygons * #lights

26
Shadow Volumes Questions?
• If a point is inside a shadow
volume cast by a particular light,
the point does not receive any
illumination from that light

• Cost of naive
implementation:
#polygons * #lights

27
Better Shadow Volumes
• Shoot a ray from the eye to
the visible point
• Increment/decrement a
counter each time we
intersect a shadow
volume polygon
-1 +1
• If the counter ≠ 0,
the point is +1
in shadow

28
Stencil Buffer
• Tag pixels in one rendering pass to
control their update in subsequent frame buffer
rendering passes
– "For all pixels in the frame buffer" →
"For all tagged pixels in the frame buffer"
• Can specify different rendering
operations for each case: depth buffer
– stencil test fails
– stencil test passes & depth test fails
– stencil test passes & depth test passes

stencil buffer
29
Stencil Buffer – Real-time Mirror
• Clear frame, depth & stencil buffers
• Draw all non-mirror geometry to
frame & depth buffers
• Draw mirror to stencil buffer, where
depth buffer passes
• Set depth to infinity, where stencil
buffer passes
• Draw reflected geometry to without reflected
frame & depth buffer, where stencil geometry
buffer:
stencil buffer passes
See NVIDIA's stencil buffer tutorial
http://developer.nvidia.com
also discusses blending, multiple © NVIDIA. All rights reserved. This content is excluded from our Creative Commons
mirrors, objects behind mirror, etc… license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

30
Shadow Volumes w/ the Stencil Buffer
Initialize stencil buffer to 0
Draw scene with ambient light only
Turn off frame buffer & z-buffer updates
Draw front-facing shadow polygons
If z-pass → increment counter
Draw back-facing shadow polygons +1
If z-pass → decrement counter
Turn on frame buffer updates
Turn on lighting and
0
redraw pixels with +2
counter = 0

31
Shadow Volumes w/ the Stencil Buffer
Initialize stencil buffer to 0
Draw scene with ambient light only
Turn off frame buffer & z-buffer updates
Draw front-facing shadow polygons
If z-pass → increment counter
Draw back-facing shadow polygons +1
If z-pass → decrement counter
Turn on frame buffer updates
Turn on lighting and
0
redraw pixels with +2
counter = 0

Questions?
32
If the Eye is in Shadow...
• ... then a counter of 0 does
not necessarily mean lit
• 3 Possible Solutions:
1. Explicitly test eye
point with respect
to all shadow volumes -1
2. Clip the shadow
volumes to the
view frustum
-1
3. "Z-Fail" shadow 0
volumes

33
1. Test Eye with Respect to Volumes
• Adjust initial
counter value

Expensive
0

+1
0
+1

34
2. Clip the Shadow Volumes
• Clip the shadow volumes to the view frustum
and include these new polygons
• Messy CSG

35
3. "Z-Fail" Shadow Volumes
Start at infinity

...

Draw front-facing shadow polygons


If z-fail, decrement counter
0
Draw back-facing shadow polygons
If z-fail, increment counter

... 0
+1

36
3. "Z-Fail" Shadow Volumes

• Introduces problems
with far clipping plane
• Solved by clamping the 0
depth during clipping

0
+1

37
3. "Z-Fail" Shadow Volumes

• Introduces problems
with far clipping plane
• Solved by clamping the 0
depth during clipping

0
+1

Questions?
38
Optimizing Shadow Volumes
• Use silhouette edges only (edge where
a back-facing & front-facing polygon meet)

39
Shadow Volumes Are Sort of Passé
• It is possible to implement shadow volumes rather
efficiently using the stencil buffer
– John Carmack’s Doom 3 engine did this very well
– Shadow volumes had their 15 minutes of popularity around that
time Id Software
– NVIDIA even came up with
hardware acceleration
(“UltraShadow”)
• Further info Screenshot from video game Doom 4 removed due to copyright restrictions.

– Wikipedia
– Aila & Akenine-Möller:
Hierarchical Shadow Volumes,
Proc. Graphics Hardware 2004 40
Shadow Volumes Are Sort of Passé
• The need to extract
silhouette edges and
rasterize the resulting
shadow polygons is just
too much work when
scene complexities and
image resolutions grow
• Still, such use of the
stencil buffer can be
useful for other tricks ???
© source unknown. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

41
Shadow Volumes Are Sort of Passé
• The need to extract
silhouette edges and
rasterize the resulting
shadow polygons is just
too much work when
scene complexities and
image resolutions grow
• Shadow maps are bad,
but they’re the best
we’ve got! ???
© source unknown. All rights reserved. This content is excluded from our Creative
Commons license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

42
Further Reading on Shadows
• Some recent techniques allow filtering the shadow
map instead of just the tests (percentage closer)
– Works pretty well in some situations, although not general
– Variance Shadow Maps (Donnelly, Lauritzen I3D 2006)
– Convolution Shadow Maps Annen et al. 2008

• Annen et al., SIGGRAPH 2008


• Annen et al., EGSR 2007
• An interesting hybrid between
shadow maps and ray tracing
– Aila and Laine, Alias-Free
Shadow Maps, EGSR 2004 © ACM. All rights reserved. This content is excluded from
our Creative Commons license. For more information, see
http://ocw.mit.edu/help/faq-fair-use/.
43
Today
• Shadow Maps
• Shadow Volumes
– (The Stencil Buffer)
• Deep Shadow Maps
• Alias-free Shadow Maps

44
Deep shadow maps
• Lokovic & Veach, Pixar
• Shadows in participating media like smoke, inside
hair, etc.
– They represent not
just depth of the
first occluding
surface, but the
attenuation
along the light rays
• Note: shadowing
only, no scattering
© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.
45
Visibility function along depth
• Fraction of a pixel occluded, as a function of depth
• Due to
– small occluders, semi-transparent objects, smoke &
volumetric effects

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

46
Deep shadow maps
• Preprocess:
Compute dense visibility function for each pixel of
shadow map
– send lots of rays or rasterize at a high resolution
– compress visibility function at each pixel
• to reduce memory cost
• At render time, shadow query
– Transform visible point into light coordinates
• just like shadow maps
– Read visibility value from compressed function

47
Compression algorithm
• Approximation:
Piecewise linear
• Set an error bound
• Decide which vertices
to keep
• Greedy from zero do far

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

48
Deep shadow map results

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.
49
Deep shadow map results

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

50
Deep shadow map results
• Advantage of deep shadow map over higher-
resolution normal shadow map:
Pre-filtering for shadow antialiasing

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

51
Enables motion blur in shadows

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

52
Enables motion blur in shadows

© ACM. All rights reserved. This content is excluded from our Creative Commons
license. For more information, see http://ocw.mit.edu/help/faq-fair-use/.

Questions? 53
Today
• Shadow Maps
• Shadow Volumes
– (The Stencil Buffer)
• Deep Shadow Maps
• Alias-free Shadow Maps

54
Alias-free shadow maps
• Aila and Laine,
http://www.tml.tkk.fi/~timo/
• aka Irregular z-buffer by Johnson et al.
http://pl887.pairlitesite.com/papers/tog05-izb/

• Following slides by Aila and Laine

55
Content removed due to copyright restrictions -- please see slide 4,6-14 from Timo Aila and Samuli Laine's talk slides on "Alias-
Free Shadow Maps." available at https://research.nvidia.com/publication/alias-free-shadow-maps for further details.

56
Irregular z buffer results

A video clip demonstrating the irregular z buffer results has been removed due to copyright restrictions.

57
That’s All For Today!

Image removed due to copyright restrictions -- please see Fig. 4 in S. Laine and T. Aila, ”Hierarchical
Penumbra Casting.” Computer Graphics Forum 24(3) (Eurographics 2005) for further details.

Image: Laineand Aila, EG 2005


58
MIT OpenCourseWare
http://ocw.mit.edu

6.837 Computer Graphics


Fall 2012

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

You might also like