shadows - tu wienradiosity ray tracingradiosity, ray tracing Ælightmaps approximate shadows...
TRANSCRIPT
![Page 1: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/1.jpg)
ShadowsShadows
![Page 2: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/2.jpg)
What for?
Shadows tell us about the relative locations and motions of objectsand motions of objects
Vienna University of Technology 2
![Page 3: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/3.jpg)
What for?
Shadows tell us about the relative locations and motions of objectsand motions of objectsAnd about light positions
Vienna University of Technology 3
![Page 4: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/4.jpg)
What for?
Objects look like they are “floating”Shadows can fix that!
Vienna University of Technology 4
Shadows can fix that!
![Page 5: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/5.jpg)
Motivation
Shadows contribute significantly to realism of rendered imagesrendered images
Anchors objects in sceneGlobal effect expensive!Global effect expensive!Light source behaves very similar to camera
Is a point visible from the light source?shadows are “hidden” regionsg
Shadow is a projection of caster on receiverprojection methodsprojection methods
Best done completely in hardware through shaders
Vienna University of Technology 5
![Page 6: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/6.jpg)
Shadow Algorithms
Static shadow algorithms (lights + objects)Radiosity ray tracing lightmapsRadiosity, ray tracing lightmaps
Approximate shadowsProjected shadows (Blinn 88)Shadow volumes (Crow 77)
Object-space algorithmShadow maps (Williams 78)Shadow maps (Williams 78)
Projective image-space algorithmS f h d i f ll b l i hSoft shadow extensions for all above algorithms
Still hot research topic (500+ shadow publications)
Vienna University of Technology 6
![Page 7: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/7.jpg)
Shadow Terms
li htlight source
creator(occluder, blocker, caster) creator and( )
receiver
receiver(occludee)
Vienna University of Technology 7
( )
![Page 8: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/8.jpg)
Hard vs. Soft Shadowspoint sourcepoint source area sourcearea source
hard shadowhard shadow umbraumbra
penumbrapenumbra penumbrapenumbra+fast+fast pp pp--only good for localized lights only good for localized lights (sun, projectors)(sun, projectors)+fake soft shadow through+fake soft shadow through
+ very realistic+ very realistic-- very expensivevery expensive
Vienna University of Technology 8
+fake soft shadow through +fake soft shadow through filteringfiltering
+ becomes more and more + becomes more and more usableusable
![Page 9: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/9.jpg)
Static Shadows
Glue to surface whatever we wantId i t h d i t li htIdea: incorporate shadows into light maps
For each texel, cast ray to each light sourceBake soft shadows in light maps
Not by texture filtering alone but:Not by texture filtering alone, but:Sample area light sources
Vienna University of Technology 9
![Page 10: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/10.jpg)
Static Soft Shadow Example
no filteringno filtering filteringfiltering
1 l1 l1 sample1 sample
n samplesn samples
Vienna University of Technology 10
![Page 11: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/11.jpg)
Approximate Shadows
Hand-drawn approximate geometryPerceptual studies suggest:Perceptual studies suggest:shape not so importantMinimal cost
Vienna University of Technology 11
![Page 12: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/12.jpg)
Approximate Shadows
Dark polygon (maybe with texture)Cast ray from light source through object centerCast ray from light source through object centerBlend polygon into frame buffer at location of hit May apply additional rotation/scale/translationMay apply additional rotation/scale/translation
Incorporate distance and receiver orientationP bl ith ti tiProblem with z-quantization:
viewerlight
Blend at hit polygonBlend at hit polygon
viewerlight
p ygp ygZZ--test equaltest equal
zz--buffer quantization errors!buffer quantization errors!
Vienna University of Technology 12
![Page 13: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/13.jpg)
Approximate Shadows
viewerviewerlightlight viewerviewerlightlightElevate above hit polygonElevate above hit polygonZZ--test less or equaltest less or equal
h d t bih d t bishadow too bigshadow too bigmay appear floatingmay appear floating
No zNo z--test, only one eye raytest, only one eye rayshadow too bigshadow too bigshadow too big, shadow too big, maybe in wrong placemaybe in wrong place
Vienna University of Technology 13
![Page 14: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/14.jpg)
Projection Shadows (Blinn 88)
Shadows for selected large planar receiversGround planeGround planeWalls
Projective geometry:flatten 3D model ontoflatten 3D model ontoplane
“ ”and “darken” using framebuffer blend
Vienna University of Technology 14
![Page 15: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/15.jpg)
Projection for Ground Plane
Use similar-triangle tricks llyy llpllyy
−=
−−
yy
y
xx
xxvl
llvlp
yyxx
llvv −
−=
yy
yxxyx vl
vlvlp
y=0y=0 −= yzzy
yy
vlvlp
pp
0=
−yy
z
p
vlp
Vienna University of Technology 15
0y
p
![Page 16: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/16.jpg)
Projection Matrix
Projective 4x4 matrix:ll ⎞⎛ 00
ll
ll
M
xy
⎟⎟⎞
⎜⎜⎜⎛ −
000000
vv
lll
Myz ⎟
⎠⎜⎜⎜
⎝ −−
=
01000
pp
Arbitrary plane:
ly ⎠⎝ 010
nny pIntersect line p = l – α (v – l)
ith l d 0with plane n x + d = 0Express result as a 4x4 matrix
Vienna University of Technology 16
pAppend this matrix to view transform
![Page 17: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/17.jpg)
Projection Shadow Algorithm
Render scene (full lighting)F h i lFor each receiver polygon
Compute projection matrix MAppend to view matrixRender selected shadow casterRender selected shadow caster
With framebuffer blending enabled
Vienna University of Technology 17
![Page 18: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/18.jpg)
Projection Shadow Artifacts
Bad GoodBad Good
t d ffextends offground region
Vienna University of Technology 18
Z fighting double blending
![Page 19: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/19.jpg)
Stencil Buffer Projection Shadows
Stencil can solve all of these problemsSeparate 8 bit frame buffer for numeric opsSeparate 8-bit frame buffer for numeric ops
Stencil buffer algorithm (requires 1 bit):Clear stencil to 0Draw ground polygon last and withDraw ground polygon last and with
glStencilOp(GL_KEEP, GL_KEEP, GL_ONE);
f ilf il f ilf il
Draw shadow caster with no depth test butfail fail zfail zfail passpass
glStencilFunc(GL_EQUAL, 1, 0xFF); glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO);
Vienna University of Technology 19
Every plane pixel is touched at most once
![Page 20: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/20.jpg)
Stencil Buffer Planar ReflectionsDraw object twice, second time with:
glScalef(1, -1, 1)glScalef(1, 1, 1)
Reflects through floor
Good stencilBad
Vienna University of Technology 20
Good, stencilused to limit reflection.
Bad
![Page 21: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/21.jpg)
Projection Shadow Summary
Easy to implementGLQuake first game to implement itGLQuake first game to implement it
Only practical for very few, large receiversNo self shadowing
Possible remaining artifacts: wrong shadowsg gObjects behind light sourceObjects behind recei erObjects behind receiver
Vienna University of Technology 21
![Page 22: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/22.jpg)
Shadow Volumes (Crow 1977)
Occluders and light source cast out a 3D shadow volumeshadow volume
Shadow through new geometryResults in Pixel correct shadows Light
source
Visualization ofVisualization ofShadowed sceneShadowed scene
Vienna University of Technology 22
Visualization of Visualization of shadow volumeshadow volume
Shadowed sceneShadowed scene
![Page 23: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/23.jpg)
Shadow Volumes (Crow 1977)
Heavily used in Doom3
Vienna University of Technology 23
![Page 24: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/24.jpg)
2D Cutaway of Shadow Volume
Occluder polygons extruded to semi-infinite volumesvolumes
shadowingsurface outsideshadow volume
object
shadowlightsource
(illuminated)
shadowvolume(infinite extent)
source
eye
partiallyshadowed object
eyeposition surface inside
shadow volume
Vienna University of Technology 24
object (shadowed)
![Page 25: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/25.jpg)
Shadow Volume Algorithm
3D point-in-polyhedron indide-outside testPrinciple similar to 2D point-in-polygon testPrinciple similar to 2D point-in-polygon test
Choose a point known to be outside the volumeC t i t ti f t t i t t kCount intersection on ray from test point to known point with polyhedron faces
F t f 1Front face +1Back face -1
Lik i di l !Like non-zero winding rule!Known point will distinguish algorithms:
Infinity: “Z-fail” algorithmEye-point: “Z-pass” algorithm
Vienna University of Technology 25
y p p g
![Page 26: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/26.jpg)
Enter/Leave Approach
Increment on enter, decrement on leaveSi lt l t t ll i ibl i lSimultaneously test all visible pixels
Stop when hitting object nearest to viewer
shadowing objectlightsource
zero +1
zero
eye +1+2 +2
+3
Vienna University of Technology 26
yposition
+3
![Page 27: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/27.jpg)
Shadow Volume Algorithm
Shadow volumes in object precisionCalculated by CPU/Vertex ShadersCalculated by CPU/Vertex Shaders
Shadow test in image precisionUsing stencil buffer as counter!
Vienna University of Technology 27
![Page 28: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/28.jpg)
Shadow Volume Algorithm
Vienna University of Technology 28
Step 1: Render scene ⇒ Z-values
![Page 29: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/29.jpg)
Shadow Volume Algorithm
Front face: +1 Back face: -1
Vienna University of Technology 29
Step 2: Render shadow volume faces
![Page 30: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/30.jpg)
Shadow Volume Algorithm
Front face: ±0 (Depth test)Front face: ±0 (Depth test)Back face: ±0 (Depth test)Σ = ±0
Vienna University of Technology 30
![Page 31: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/31.jpg)
Shadow Volume Algorithm
±0
Front face: +1Front face: +1Back face: ±0 (Depth test)Σ = +1
Vienna University of Technology 31
![Page 32: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/32.jpg)
Shadow Volume Algorithm
±0+1
Front face: +1Front face: +1Back face: -1Σ = ±0
Vienna University of Technology 32
![Page 33: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/33.jpg)
Shadow Volume Algorithm
±0
±0+1
Vienna University of Technology 33
Step 3: Apply shadow mask to scene
![Page 34: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/34.jpg)
Shadow Volume Algorithm (Zpass)
Render scene to establish z-bufferCan also do ambient illuminationCan also do ambient illumination
For each lightClear stencilDraw shadow volume twice using cullingDraw shadow volume twice using culling
Render front faces and increment stencilRender back faces and decrement stencil
Illuminate all pixels not in shadow volumeIlluminate all pixels not in shadow volumeRender testing stencil = 0Use additi e blend
Vienna University of Technology 34
Use additive blend
![Page 35: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/35.jpg)
Zpass Technique (Before Shadow)
h d i bjLight Shadowing objectLightsource
zero
zero
+1
zero
Eye +1+2 +2
+3
Unshadowedobjecty
position +3
Shadow Volume Count = 0 (no depth tests passes)
Vienna University of Technology 35
Shadow Volume Count = 0 (no depth tests passes)
![Page 36: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/36.jpg)
Zpass Technique (In Shadow)
Light Shadowing objectLightsource
zero
zero
+1
zero
+ -+ +
Eye +1+2 +2
+3
Shadowedobjecty
position +3j
Shadow Volume Count = +1+1+1 1 = 2
Vienna University of Technology 36
Shadow Volume Count = +1+1+1-1 = 2
![Page 37: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/37.jpg)
Zpass Technique (Behind Shadow)
Li h Shadowing objectLightsource
zero +1
zero
Unshadowed+ ---+ +
Eye +1+2 +2
object
Eyeposition
+1 +3
Sh d V l C t 1 1 1 1 1 1 0
Vienna University of Technology 37
Shadow Volume Count = +1+1+1-1-1-1 = 0
![Page 38: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/38.jpg)
Zpass Near Plane Problem
Missed shadow volume intersection due to
ero
Far clipplane
near clip plane clipping; leads to mistaken count
zero
+1+1
zero
+1+2
3+2
+3
Near clipplane
Vienna University of Technology 38
![Page 39: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/39.jpg)
Alternative: Zfail Technique
Zpass near plane problem difficult to solveHave to “cap” shadow volume at near planeHave to cap shadow volume at near planeExpensive and not robust, many special cases
T i t t d Zf il t h iTry reversing test order Zfail technique(also known as Carmack’s reverse)
Start from infinity and stop at nearest intersectionRender shadow volume fragments only whend th t t f ildepth test fails
Render back faces first and incrementThen front faces and decrementNeed to cap shadow volume at infinity or light
Vienna University of Technology 39
extent
![Page 40: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/40.jpg)
Zfail, Behind Shadow
Li ht Shadowing objectLightsource
zero +1
zero
Unshadowed
Eye +1+2 +2
3
object
Eyeposition
1 +3
Sh d V l C t 0 ( d th t t f il)
Vienna University of Technology 40
Shadow Volume Count = 0 (zero depth tests fail)
![Page 41: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/41.jpg)
Zfail, in Shadow
Shadowing objectLightsource
zero +1
zero
+ +
Eye +1+2 +2
+
ShadowedobjectEye
position +1 +3 object
Vienna University of Technology 41
Shadow Volume Count = +1+1 = 2
![Page 42: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/42.jpg)
Zfail, before Shadow
Light Shadowing objectLightsource
zero
zero
+1
zero
- +- - + +
Eye +1+2 +2
+3
Unshadowedobjecty
position +3j
Shadow Volume Count = 1 1 1+1+1+1 = 0
Vienna University of Technology 42
Shadow Volume Count = -1-1-1+1+1+1 = 0
![Page 43: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/43.jpg)
Shadow Volumes
Shadow volume = closed polyhedronA t ll 3 t f l !Actually 3 sets of polygons!
1. Object polygons facing the light (“light cap”)2. Object polygons facing away from the light
and projected to infinity (with w = 0) (“darkand projected to infinity (with w 0) ( dark cap”)A t l h d l l ( t d d3. Actual shadow volume polygons (extruded object edges) (“sides”)
b hi h d ?but which edges?
Vienna University of Technology 43
![Page 44: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/44.jpg)
Zpass vs. Zfail
Equivalent, but reversedZpassZpass
Faster (light cap and dark cap not needed)Li ht i id bj t l f il t tLight cap inside object always fails z-testDark cap infinitely far away either fails or falls on backgroundbackground
Problem at near clip plane (no robust solution)Zf ilZfail
Slower (need to render dark and light caps!)Problem at far clip plane when light extends farther than far clip plane
Vienna University of Technology 44
Robust solution with infinite shadow volumes!
![Page 45: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/45.jpg)
Zpass vs. Zfail
Idea: Combine techniques!Test whether viewport in shadow ZfailTest whether viewport in shadow ZfailOtherwise Zpass
Idea: avoid far plane clipping in Zfail!Send far plane to infinity in projection matrixSend far plane to infinity in projection matrix
Easy, but loses some depth buffer precisionDraw infinite vertices using homogeneous coordinates: project to infinity w = 0p j yrobust solution!
Vienna University of Technology 45
![Page 46: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/46.jpg)
W=0 Rasterization
At infinity, vertices become vectors
(-3,-1,z1,1)(2,-2,z2,1)
(2,-2,z2,0)(-1,-3,z1,0) (2,-2,z2,0)
Vienna University of Technology 46
( 1, 3,z1,0)
![Page 47: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/47.jpg)
Computing Actual SV Polygons
Trivial but bad: one volume per triangle3 shadow volume polygons per triangle3 shadow volume polygons per triangle
Better: find exact silhouetteExpensive on CPU
Even better: possible silhouette edgesEven better: possible silhouette edgesEdge shared by a back-facing and front-facing polygon (with respect to light source!), extended to infinityyActual extrusion can be done by vertex shader
Vienna University of Technology 47
shader
![Page 48: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/48.jpg)
Possible Silhouette Edges
Vienna University of Technology 48
![Page 49: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/49.jpg)
Shadow Volumes Summary
AdvantagesArbitrary receiversyFully dynamicOmnidirectional lights (unlike shadow maps!)O d ect o a g ts (u e s ado aps )Exact shadow boundaries (pixel-accurate)Automatic self shadowingAutomatic self shadowingBroad hardware support (stencil)
DisadvantagesDisadvantagesFill-rate intensiveDifficult to get right (Zfail vs Zpass)Difficult to get right (Zfail vs. Zpass)Silhouette computation requiredDoesn’t work for arbitrary casters (smoke fog )
Vienna University of Technology 49
Doesn t work for arbitrary casters (smoke, fog…)
![Page 50: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/50.jpg)
Shadow Volume Issues
Stencil buffering fast and present in all cardsWith 8 bits of stencil maximum shadow depthWith 8 bits of stencil, maximum shadow depth is 255
EXT t il overcomes thisEXT_stencil_wrap overcomes thisTwo-sided stencil tests can test front- and back triangles simultaneously
Saves one pass – available on NV30+pNV_depth_clamp (hardware capping)
Regain depth precision with normal projectionRegain depth precision with normal projectionRequires watertight models with connectivity,
d t ti ht t i tiVienna University of Technology 50
and watertight rasterization
![Page 51: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/51.jpg)
Shadow Maps
Casting curved shadows on curved surfacesImage space algorithm 2 passesImage-space algorithm, 2 passes
Fi lFinal scene
Sh dShadow map
Vienna University of Technology 51
![Page 52: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/52.jpg)
Shadow Map AlgorithmLi ht
EyeLight
Shadow mapEye view
Render from light; save depth valuesRender from light; save depth valuesRender from eye
Transform all fragments to light spaceCompare zeye and zlight (both in light space!!!)
Vienna University of Technology 52
y g
zeye > zLicht fragment in shadow
![Page 53: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/53.jpg)
Shadow Maps in Hardware
Render scene to z-buffer (from light source)Copy depth buffer to textureCopy depth buffer to textureRender to depth texture + pbuffer
Project shadow map into scene (remember projective texturing!)(remember projective texturing!)Hardware shadow test (ARB_shadow)
Use homogeneous texture coordinatesCompare r/q with texel at (s/q t/q)Compare r/q with texel at (s/q, t/q)Output 1 for lit and 0 for shadow
Vienna University of Technology 53
Blend fragment color with shadow test result
![Page 54: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/54.jpg)
Shadow Maps in Hardware
Shadow extension available since GeForce3Requires high precision texture formatRequires high precision texture format(ARB_depth_texture)
On modern hardware:Render lightspace depth into textureRender lightspace depth into textureIn vertex shader:
Calculate texture coordinates as in projective texturing
In fragment shader:Depth compare
Vienna University of Technology 54
Depth compare
![Page 55: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/55.jpg)
Problem: Perspective Aliasing
Sufficient resolution far from eyeeyeInsufficient resolution near eye
Vienna University of Technology 55 aliasedokay
![Page 56: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/56.jpg)
Problem: Projection Aliasing
Shadow receiver ~ orthogonal toShadow Map - viewplaneShadow Map viewplane
Vienna University of Technology 56
![Page 57: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/57.jpg)
Problem: Incorrect Self-Shadowing
Polygon
Vienna University of Technology 57
![Page 58: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/58.jpg)
Problem: Incorrect Self-Shadowing
Polygon
zeye > zlight Incorrect Self-shadowing
Vienna University of Technology 58
y g
![Page 59: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/59.jpg)
Solution for Perspective Aliasing
Insufficient resolution near eye
Vienna University of Technology 59
aliasedokay
![Page 60: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/60.jpg)
Solution for Perspective Aliasing
Insufficient resolution near eyeyRedistribute values in shadow map
Vienna University of Technology 60
![Page 61: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/61.jpg)
Solution for Perspective Aliasing
Sufficient resolution near eyeyRedistribute values in shadow map
Vienna University of Technology 61
okay okay
![Page 62: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/62.jpg)
Solution for Perspective AliasingHow to redistribute?Use perspective transform p pAdditional perspective matrix, used in both:
Light passLight pass
Eye pass
More details:[WSP2004][WSP2004]
[WSP2004] M. Wimmer, D. Scherzer, and W. Purgathofer; Light space perspective shadow maps; In Proceedings of Eurographics Symposium on Rendering 2004
Vienna University of Technology 62
g p y p g
![Page 63: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/63.jpg)
Solution for Projection AliasingShadow receiver ~ orthogonal to Shadow Map planeRedistribution does not workButBut...
Vienna University of Technology 63
![Page 64: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/64.jpg)
Solution for Projection Aliasing
Diffuse lighting: I = IL max( dot( L, N ), 0 )Almost orthogonal receivers have small IAlmost orthogonal receivers have small IDark artifacts not very visible!
LN
Vienna University of Technology 64
![Page 65: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/65.jpg)
Solution for Projection Aliasing
RecommendationsSmall ambient termSmall ambient termDiffuse term hides artifactsSpecular term notSpecular term not problematic
Light and view directionLight and view direction almost identicalShadow Map resolutionShadow Map resolution sufficient
Vienna University of Technology 65
![Page 66: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/66.jpg)
Solution for Projection Aliasing
Blur shadowsHides artifactsHides artifactsSoft shadow borders
Render shadowRender shadow result values to separate texture and blur
Vienna University of Technology 66
![Page 67: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/67.jpg)
Solution for Incorrect Self-Shadowing
PolygonShifted PolygonShifted Polygon
zAug > zLicht Incorrect Self-shadowing
Vienna University of Technology 67
gzAug < zLicht No Self-shadowing
![Page 68: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/68.jpg)
Solution for Incorrect Self-Shadowing
How to choose bias?
Constant BiasNo Bias
Vienna University of Technology 68Slope-Scale BiasConstant Bias
![Page 69: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/69.jpg)
Depth Bias
glPolygonOffset(1.1,4.0) works wellWorks in window coordinatesWorks in window coordinates
Too little bias,Too little bias,everything begins toeverything begins toshadowshadow
Too much bias, shadowToo much bias, shadowstarts too far backstarts too far back
Vienna University of Technology 69
![Page 70: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/70.jpg)
Solution for Incorrect Self-Shadowing
Other possibility:
Previous: render front faces into Shadow MapNow: render back faces into Shadow Map: Back-
Vienna University of Technology 70
pSide Rendering
![Page 71: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/71.jpg)
Problem: Aliasing Artifacts
Resolution mismatch image/shadow map!Use perspective shadow mapsUse perspective shadow maps
Use “percentage closer” filteringNormal color filtering cannot be usedFilter lookup result not depth map values!Filter lookup result, not depth map values!2x2 PCF in hardware for NVIDIABetter: Poisson-disk distributed samples (e.g., 6 averaged samples)6 a e aged sa p es)
Vienna University of Technology 71
![Page 72: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/72.jpg)
Shadow Map Filtering
GL NEAREST GL LINEARGL_NEAREST GL_LINEAR
Vienna University of Technology 72
![Page 73: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/73.jpg)
Shadow Map Summary
AdvantagesFast only one additional passFast – only one additional pass Independent of scene complexity (no additional shadow polygons!)Self shadowing (but beware bias)Self shadowing (but beware bias)Can sometimes reuse depth map
DisadvantagesProblematic for omnidirectional lightsob e a c o o d ec o a g sBiasing tweak (light leaks, surface acne)J d d ( li i )
Vienna University of Technology 73
Jagged edges (aliasing)
![Page 74: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/74.jpg)
OGRE shadow demoOGRE shadow demo
Vienna University of Technology 74
![Page 75: Shadows - TU WienRadiosity ray tracingRadiosity, ray tracing Ælightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) ... +fake soft shadow through + very](https://reader034.vdocument.in/reader034/viewer/2022050107/5f4593431faee97bfb61d3e9/html5/thumbnails/75.jpg)
Conclusions
Shadows are very important but still difficult
Many variations based on shadow yvolumes/shadow maps to do shadowing:
Variance shadow mapping (VSM)Variance shadow mapping (VSM)Perspective shadow mapping (PSM)Hierarchical shadow volumeSubdivided shadow mapsSubdivided shadow maps…
Vienna University of Technology 75