shadows what for shadows tell us about the relative
play

Shadows What for? Shadows tell us about the relative locations and - PowerPoint PPT Presentation

Shadows What for? Shadows tell us about the relative locations and motions of objects Vienna University of Technology 2 What for? Shadows tell us about the relative locations and motions of objects And about light positions Vienna


  1. Shadows

  2. What for? Shadows tell us about the relative locations and motions of objects Vienna University of Technology 2

  3. What for? Shadows tell us about the relative locations and motions of objects And about light positions Vienna University of Technology 3

  4. What for? Objects look like they are “floating”  Shadows can fix that! Vienna University of Technology 4

  5. Motivation Shadows contribute significantly to realism of rendered images Anchors objects in scene Global effect  expensive! Light source behaves very similar to camera Is a point visible from the light source?  shadows are “hidden” regions Shadow is a projection of caster on receiver  projection methods Best done completely in hardware through shaders Vienna University of Technology 5

  6. Shadow Algorithms Static shadow algorithms (lights + objects) Radiosity, ray tracing  lightmaps Approximate shadows Projected shadows (Blinn 88) Shadow volumes (Crow 77) Object-space algorithm Shadow maps (Williams 78) Projective image-space algorithm Soft shadow extensions for all above algorithms Still hot research topic (500+ shadow publications) Vienna University of Technology 6

  7. Shadow Terms light source creator (occluder, blocker, caster) creator and receiver receiver (occludee) Vienna University of Technology 7

  8. Hard vs. Soft Shadows point source area source umbra hard shadow +fast penumbra penumbra -only good for localized lights + very realistic (sun, projectors) - very expensive +fake soft shadow through + becomes more and more filtering usable Vienna University of Technology 8

  9. Static Shadows Glue to surface whatever we want Idea: incorporate shadows into light maps For each texel, cast ray to each light source Bake soft shadows in light maps Not by texture filtering alone, but: Sample area light sources Vienna University of Technology 9

  10. Static Soft Shadow Example no filtering filtering 1 sample n samples Vienna University of Technology 10

  11. Approximate Shadows Handdrawn approximate geometry Perceptual studies suggest: shape not so important Minimal cost Vienna University of Technology 11

  12. Approximate Shadows Dark polygon (maybe with texture) Cast ray from light source through object center Blend polygon into frame buffer at location of hit May apply additional rotation/scale/translation Incorporate distance and receiver orientation Problem with zquantization: light viewer Blend at hit polygon Z-test equal  z-buffer quantization errors! Vienna University of Technology 12

  13. Approximate Shadows light viewer Elevate above hit polygon Z-test less or equal  shadow too big  may appear floating No z-test, only one eye ray  shadow too big, maybe in wrong place Vienna University of Technology 13

  14. Projection Shadows (Blinn 88) Shadows for selected large planar receivers Ground plane Walls Projective geometry: flatten 3D model onto plane and “darken” using framebuffer blend Vienna University of Technology 14

  15. Projection for Ground Plane Use similar-triangle tricks - l l y p l = y x x - - v l l v x x y y - l v l v = y x x y p - v x l v y y - l v l v = y=0 y z z y p - z p l v y y = p 0 y Vienna University of Technology 15

  16. Projection Matrix l Projective 4x4 matrix: -   l l 0 0   y x   0 0 0 0 v =   M - 0 l l 0   p z y   -   l 0 1 0 y Arbitrary plane: n Intersect line p = l –  ( v – l ) with plane n x + d = 0 Express result as a 4x4 matrix Append this matrix to view transform Vienna University of Technology 16

  17. Projection Shadow Algorithm Render scene (full lighting) For each receiver polygon Compute projection matrix M Append to view matrix Render selected shadow caster With framebuffer blending enabled Vienna University of Technology 17

  18. Projection Shadow Artifacts Bad Good extends off ground region Z fighting double blending Vienna University of Technology 18

  19. Stencil Buffer Projection Shadows Stencil can solve all of these problems Separate 8-bit frame buffer for numeric ops Stencil buffer algorithm (requires 1 bit): Clear stencil to 0 Draw ground polygon last and with glStencilOp(GL_KEEP, GL_KEEP, GL_ONE); fail zfail pass Draw shadow caster with no depth test but glStencilFunc(GL_EQUAL, 1, 0xFF); glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); Every plane pixel is touched at most once Vienna University of Technology 19

  20. Stencil Buffer Planar Reflections Draw object twice, second time with: glScalef(1, -1, 1) Reflects through floor Bad Good, stencil used to limit reflection. Vienna University of Technology 20

  21. Projection Shadow Summary Easy to implement GLQuake first game to implement it Only practical for very few, large receivers No self shadowing Possible remaining artifacts: wrong shadows Objects behind light source Objects behind receiver Vienna University of Technology 21

  22. Shadow Volumes (Crow 1977) Occluders and light source cast out a 3D shadow volume Shadow through new geometry Results in Pixel correct shadows Light source Visualization of Shadowed scene shadow volume Vienna University of Technology 22

  23. Shadow Volumes (Crow 1977) Heavily used in Doom3 Vienna University of Technology 23

  24. 2D Cutaway of Shadow Volume Occluder polygons extruded to semi-infinite volumes surface outside shadow volume shadowing object (illuminated) light source shadow volume ( infinite extent ) eye position surface inside partially shadowed shadow volume object (shadowed) Vienna University of Technology 24

  25. Shadow Volume Algorithm 3D point-in-polyhedron inside-outside test Principle similar to 2D point-in-polygon test Choose a point known to be outside the volume Count intersection on ray from test point to known point with polyhedron faces Front face +1 Back face -1 Like non-zero winding rule! Known point will distinguish algorithms: Infinity: “Z - fail” algorithm Eye- point: “Z - pass” algorithm Vienna University of Technology 25

  26. Enter/Leave Approach Increment on enter, decrement on leave Simultaneously test all visible pixels  Stop when hitting object nearest to viewer light shadowing object source zero +1 zero +2 +2 eye +1 +3 position Vienna University of Technology 26

  27. Shadow Volume Algorithm Shadow volumes in object precision Calculated by CPU/Vertex Shaders Shadow test in image precision Using stencil buffer as counter! Vienna University of Technology 27

  28. Shadow Volume Algorithm Step 1: Render scene  Z-values Vienna University of Technology 28

  29. Shadow Volume Algorithm Front face: +1 Back face: -1 Step 2: Render shadow volume faces Vienna University of Technology 29

  30. Shadow Volume Algorithm Front face: ±0 (Depth test) Back face: ±0 (Depth test)  = ±0 Vienna University of Technology 30

  31. Shadow Volume Algorithm ±0 Front face: +1 Back face: ±0 (Depth test)  = +1 Vienna University of Technology 31

  32. Shadow Volume Algorithm +1 ±0 Front face: +1 Back face: -1  = ±0 Vienna University of Technology 32

  33. Shadow Volume Algorithm ±0 +1 ±0 Step 3: Apply shadow mask to scene Vienna University of Technology 33

  34. Shadow Volume Algorithm (Zpass) Render scene to establish z-buffer Can also do ambient illumination For each light Clear stencil Draw shadow volume twice using culling Render front faces and increment stencil Render back faces and decrement stencil Illuminate all pixels not in shadow volume Render testing stencil = 0 Use additive blend Vienna University of Technology 34

  35. Zpass Technique (Before Shadow) Light Shadowing object source zero +1 zero Unshadowed +2 +2 object Eye +1 +3 position Shadow Volume Count = 0 (no depth tests passes) Vienna University of Technology 35

  36. Zpass Technique (In Shadow) Light Shadowing object source zero +1 zero + + - + Shadowed +2 +2 object Eye +1 +3 position Shadow Volume Count = +1+1+1-1 = 2 Vienna University of Technology 36

  37. Zpass Technique (Behind Shadow) Light Shadowing object source zero +1 zero + + - + - - Unshadowed object +2 +2 Eye +1 +3 position Shadow Volume Count = +1+1+1-1-1-1 = 0 Vienna University of Technology 37

  38. Zpass Near Plane Problem Missed shadow volume intersection due to near clip plane Far clip clipping; leads to plane mistaken count zero +1 +1 +2 zero +3 +2 Near clip plane Vienna University of Technology 38

  39. Alternative: Zfail Technique Zpass near plane problem difficult to solve Have to “cap” shadow volume at near plane Expensive and not robust, many special cases Try reversing test order  Zfail technique (also known as Carmack’s reverse) Start from infinity and stop at nearest intersection  Render shadow volume fragments only when depth test fails Render back faces first and increment Then front faces and decrement Need to cap shadow volume at infinity or light extent Vienna University of Technology 39

  40. Zfail, Behind Shadow Light Shadowing object source zero +1 zero Unshadowed object +2 +2 Eye +1 +3 position Shadow Volume Count = 0 (zero depth tests fail) Vienna University of Technology 40

Recommend


More recommend