Your SlideShare is downloading. ×
CS 354 Shadows
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

CS 354 Shadows

2,044
views

Published on

CS 354 Shadow Generation; University of Texas at Austin; March 20, 2012

CS 354 Shadow Generation; University of Texas at Austin; March 20, 2012

Published in: Technology, Art & Photos

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,044
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
178
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CS 354ShadowsMark KilgardUniversity of TexasMarch 20, 2012
  • 2. CS 354 2 Today’s material  In-class quiz  On GPU architecture lecture  Lecture topic  Shadow Algorithms  Course status  Mid-term graded, but not yet recorded  Project #2 on texturing, shading, & lighting is coming
  • 3. CS 354 3 My Office Hours  Tuesday, before class  Painter (PAI) 5.35  8:45 a.m. to 9:15  Thursday, after class  ACE 6.302  11:00 a.m. to 12  Randy’s office hours  Monday & Wednesday  11 a.m. to 12:00  Painter (PAI) 5.33
  • 4. CS 354 4 Last time, this time  Last lecture, we  Took the mid-term  This lecture  Shadow generation algorithms  How can we efficiently determine when and how much light is occluded by other objects during shading?
  • 5. CS 354 5 On a sheet of paper Daily Quiz • Write your EID, name, and date • Write #1, #2 followed by its answer  Multiple choice: The effective  Multiple choice: Programmable memory bandwidth of a tessellation is good for graphics processor can be higher than its raw memory a) displacement mapping bandwidth due to: b) per-pixel lighting a) more multiply-add operations per clock c) increasing the appearance of surface curvature b) not showing pixels when they are opaque d) feeding more triangles to the graphics pipeline c) domain-specific compression techniques e) a, c, and d d) off-loading work to the f) a, b, c, and d network g) b, c, and d
  • 6. CS 354 6 Shadows  Important visual cue  All real world scenes have shadows  Lack of shadows = big clue that an image is computer generated!  Occlusion from light’s point-of-view instead of viewer’s  Cue for light-object-object relationships  Artistic effect  Soft vs. hard feel, dramatic or spooky feel
  • 7. CS 354 7 Shadows Provide Cues About Depth  Two scenes  Difference is in shadows Balls resting on ground Balls floating off surface
  • 8. CS 354 8 Computed Shadows aren’t Necessarily Realistic Shadows of Past – Lyubomir Bukov
  • 9. CS 354 9 Shadows in Gaming Shading + Shadows = More Drama + Bump mapping + Specular Only Shadows + Shading Diffuse + Decal Combined + Shadows
  • 10. CS 354 10 Ray Tracing Approach to Shadows  Shadows = global lighting effect  Involves more than light + surface
  • 11. CS 354 11 Ray Tracing Shadow Algorithm  Cast primary rays from eye  Determine surface intersection  Then, cast a secondary (shadow) ray  From surface  To each light source
  • 12. CS 354 12 Interactive Lighting Models  Typically lack shadow support  So-called “local” lighting models ignore occlusion of light sources that create shadows  Except trivial self-shadowing (i.e., clamping L•N)  Global lighting models account for shadows  Examples: radiosity, ray tracing  But too expensive for interactive use  Interactive shadow algorithms typically operate independent of local lighting models
  • 13. CS 354 13 Interactive Shadow Simplications  True shadows are expensive, cut corners  Simple geometry tricks  Projection  Volume intersection  Pre-compute static shadow results where possible  Make simplifying assumptions  Treat area light sources as points  Exploit hardware features such as stencil and depth textures
  • 14. CS 354 14 Interactive Shadow Rendering Techniques  Different approaches, different tradeoffs  Shadow maps  Planar projected shadows  Stenciled shadow volumes  Pre-computed shadow textures (light maps)
  • 15. CS 354 15 Common Real-time Shadow Techniques Projected Shadow planar volumes shadows Hybrid approaches Light maps
  • 16. CS 354 16 Projective Texturing Shadow Maps Visualized Without Shadows Projected Shadow Map With Shadows Light’s View Light’s View Depth
  • 17. CS 354 17 Shadow Mapping  Image-space shadow determination  Lance Williams published the basic idea in 1978  By coincidence, same year Jim Blinn invented bump mapping (a great vintage year for graphics)  Completely image-space algorithm  means no knowledge of scene’s geometry is required  must deal with aliasing artifacts  Well known software rendering technique  Pixar’s RenderMan uses the algorithm  Leverages GPU hardware  Depth buffering + texture mapping  Multi-pass algorithm: render depth maps, then project depth maps as textures for eye view
  • 18. CS 354 18 Shadow Mapping References  Important SIGGRAPH papers  Lance Williams, “Casting Curved Shadows on Curved Surfaces,” SIGGRAPH 78  William Reeves, David Salesin, and Robert Cook (Pixar), “Rendering antialiased shadows with depth maps,” SIGGRAPH 87  Mark Segal, et. al. (SGI), “Fast Shadows and Lighting Effects Using Texture Mapping,” SIGGRAPH 92  OpenGL extensions  ARB_shadow, ARB_depth_texture  Standardized in OpenGL 1.4 (2002)
  • 19. CS 354 19 Shadow Map Example  Pixar’s Luxo Jr. – state-of-the-art for 1986  Running in real-time – GeForce3 in Japan, 2001 3 light sources = 3 depth map renders per frame
  • 20. CS 354 20 Shadow Maps for Fine Shadows Chain-link fence is shadow volume nightmare! Chain-link fence’s shadow appears on truck & ground with shadow maps
  • 21. CS 354 21 The Shadow Mapping Concept (1)  Depth testing from the light’s point-of-view  Two pass algorithm  First, render depth buffer from the light’s point-of-view  the result is a “depth map” or “shadow map”  essentially a 2D function indicating the depth of the closest pixels to the light  This depth map is used in the second pass
  • 22. CS 354 22 The Shadow Mapping Concept (2)  Shadow determination with the depth map  Second, render scene from the eye’s point-of- view  For each rasterized fragment  determine fragment’s XYZ position relative to the light  this light position should be setup to match the frustum used to create the depth map  compare the depth value at light position XY in the depth map to fragment’s light position Z
  • 23. CS 354 23 The Shadow Mapping Concept (3)  The Shadow Map Comparison  Two values  A = Z value from depth map at fragment’s light XY position  B = Z value of fragment’s XYZ light position  If B is greater than A, then there must be something closer to the light than the fragment  then the fragment is shadowed  If A and B are approximately equal, the fragment is lit
  • 24. CS 354 24 Shadow Mapping with a picture in 2D  The A < B shadowed fragment case depth map image plane depth map Z = A light source eye position eye view image plane, aka the frame buffer fragment’s light Z = B
  • 25. 25 Shadow MappingCS 354 with a picture in 2D  The A ≅ B unshadowed fragment case depth map image plane depth map Z = A light source eye position eye view image plane, aka the frame buffer fragment’s light Z = B
  • 26. CS 354 26 Shadow Mapping with a picture in 2D  Note image precision mismatch! The depth map could be at a different resolution from the framebuffer This mismatch can lead to artifacts
  • 27. 27 Avoiding Artifacts withCS 354 Depth Map Bias  OpenGL supports glPolygonOffset that provides window-space depth bias  Used during shadow map construction  How much polygon offset bias depends Too little bias, Too much bias, shadow everything begins to starts too far back shadow Just right
  • 28. CS 354 28 Visualizing the Shadow Mapping Technique (1)  A fairly complex scene with shadows the point light source
  • 29. CS 354 29 Visualizing the Shadow Mapping Technique (2)  Compare with and without shadows with shadows without shadows
  • 30. CS 354 30 Visualizing the Shadow Mapping Technique (3)  The scene from the light’s point-of-view FYI: from the eye’s point-of-view again
  • 31. CS 354 31 Visualizing the Shadow Mapping Technique (4)  The depth buffer from the light’s point-of-view FYI: from the light’s point-of-view again
  • 32. CS 354 32 Visualizing the Shadow Mapping Technique (5)  Projecting the depth map onto the eye’s view FYI: depth map for light’s point-of-view again
  • 33. CS 354 33 Shadow Map Eye Linear Texture Coordinate Transform glTexGen automatically xe xo applies this when modelview Eye matrix contains just the eye ye view Modeling yo view transform ze = (look at) matrix zo matrix we wo s 1/2 1/2 Inverse xe Light Light t 1/2 1/2 frustum view eye ye r = (projection) (look at) view ze 1/2 1/2 (look at) matrix matrix q matrix we 1 Supply this combined transform to glTexGen or shader
  • 34. CS 354 34 Projective Texturing  Mimic perspective divide but for texture  (s,t,r,q) → (s/q,t/q,r/q)  Light’s view frustum needs perspective  An intuition for projective texturing  The slide projector analogy Source: Wolfgang Heidrich [99]
  • 35. CS 354 35 Visualizing the Shadow Mapping Technique (5)  Projecting the depth map onto the eye’s view FYI: depth map for light’s point-of-view again
  • 36. CS 354 36 Visualizing the Shadow Mapping Technique (6)  Projecting light’s planar distance onto eye’s view  Essentially r/q in the [0,1] range  Analogous to window-space depth for depth buffering
  • 37. CS 354 37 Visualizing the Shadow Mapping Technique (7)  Comparing light distance to light depth map Green is where the light planar distance and Non-green is the light depth where shadows map are should be approximately equal
  • 38. CS 354 38 Visualizing the Shadow Mapping Technique (8)  Scene with shadows Notice how Notice how specular curved highlights surfaces cast never appear shadows on in shadows each other
  • 39. CS 354 39 More Examples  Smooth surfaces with object self- shadowing Note object self-shadowing
  • 40. CS 354 40 More Examples  Complex objects all shadow
  • 41. CS 354 41 Shadow Mapping Artifacts  Even the floor casts shadow, but… Note shadow leakage due to infinitely thin floor Could be fixed by giving floor thickness
  • 42. CS 354 42 Shadow Map Precision Artifacts  Resolution of rendered depth map determines shadow mapping precision low-resolution sufficient shadow map blockiness shadow map resolution
  • 43. CS 354 43 Four Images of Dueling Frusta Case Eye’s View with projection of color-coded Eye’s mipmap levels View from light: Red = minification Blue = magnification Light’s Light’s View with View re-projection of above image from the eye
  • 44. CS 354 44 Interpretation of the Images of the Dueling Frusta Case Region that is smallest in the light’s view is a region Eye’s that is very large in the View eye’s view. This implies that it would require a very high-resolution shadow map to avoid obvious blocky shadow edge artifacts. Light’s View
  • 45. CS 354 45 Dueling Frusta Blocky Shadow Edge Artifacts Notice that shadow edge is well defined in the distance. Light position out here pointing towards the viewer. Blocky shadow edge artifacts.
  • 46. CS 354 46 Shadow Acne  Ambiguous shadow map comparisons cause very unsightly artifacts  Moiré patterns form; animates poorly “shadow acne” polygon offset depth comparison is provides sufficient depth offset ambiguous for unambiguous depth comparisons
  • 47. CS 354 47 Planar Projected Shadows  So-called “fake” shadows  Uses projective geometry trick  Flattens 3D model into ground plane  Shadow effect only can be applied to planes  Supports either positional or directional lights
  • 48. CS 354 48 Projected Planar Shadow Example
  • 49. CS 354 49 Projected Planar Shadows  Classic computer graphics trick  Given  Ground plane equation, Ax + By + Cz + D = 0  Light position (x, y, z, w)  Construct projective transform that “squishes” vertices into ground plane based on light position  Concatenate this with view transform  Rendering 3D object creates shadow-like pile of polygons in ground plane
  • 50. CS 354 50 Projected Planar Shadow Matrix  4x4 Projective Matrix P - Lx A -Ly A -Lz A -Lw A -Lx B P - Ly B -Lz B -Lw B -Lx C -Ly C P - Lz C -Lw C -Lx D -Ly D -Lz D P - Lw D where P = Lx A + Ly B + Lz C + Lw D
  • 51. CS 354 51 Careful about Reverse Projection  Projection can cast a shadow of an object “behind” the light w.r.t. the plane  Make sure occluders are between light and ground plane Good Bad, reverse projection
  • 52. CS 354 52 Projected Planar Shadow Issues  Shadow must be cast on infinite planes  Stencil can limit shadow to finite planar region  “Pile of polygons” creates Z-fighting artifacts  Polygon offset fixes this, but disturbs Z values  Stencil testing is better solution  Difficult to blend shadow with ground texture  Just blending creates “double blends”  But stencil testing can eliminate “double blends”  Specular highlights can show in shadow
  • 53. CS 354 53 Planar Projected Shadow Artifacts Bad Good extends off ground region Z fighting double blending
  • 54. CS 354 54 Quick Tutorial on Stencil Testing  An extra test for fine-grain pixel control  Standard OpenGL and Direct3D feature  Per-pixel test similar to depth buffering  Tests fragment against pixel’s stencil value, rejects fragments that fail  Also, can modify pixel’s stencil buffer value based on stencil/ depth test results  Hardware accelerates stencil testing  Typically allocated with depth buffer  8-bit stencil value paired with 24-bit depth value  Invented by Kurt Akeley and Jim Foran (SGI)
  • 55. CS 354 55 Stencil Testing in the Fragment Pipeline Fragment Pixel + Scissor Alpha Ownership Test Test Associated Test Data Depth Stencil Test Test Blending Dithering Logic Frame Op buffer
  • 56. CS 354 56 Stencil Testing  Similar to Depth Testing but  Compares current reference value to pixel’s stencil buffer value  Same comparison functions as depth test:  NEVER, ALWAYS  LESS, LEQUAL  GREATER, GEQUAL  EQUAL, NOTEQUAL  Stencil bit mask controls comparison  (( ref & mask ) op ( svalue & mask )
  • 57. CS 354 57 Stencil Operations  Way stencil buffer values are controlled  Stencil side effects of  Stencil test fails  Depth test fails  Depth test passes  Possible operations  Increment, Decrement (saturates)  Increment Wrap, Decrement Wrap (a.k.a. modulo)  Keep, Replace, Zero, Invert
  • 58. CS 354 58 OpenGL API  Stencil function  Controls when stencil test passes or fails  glStencilFunc(GLenum stencil_function, GLint reference_value, GLuint read_mask)  Stencil operations  Controls how the stencil buffer is updated  glStencilOp(GLenum stencil_fail, GLenum depth_fail, GLenum depth_pass)  Stencil mask  Controls bit-mask for writing stencil  glStencilMask(GLuint write_mask)  Also two-sided stencil API  Provides different stencil operations for front- and back-facing polygons  glStencilFuncSeparate, glStencilOpSeparate, glStencilMaskSeparate
  • 59. CS 354 59 The Shadow Volume Concept  Volumetric shadows, not just planar  A single point light source splits the world in two  shadowed regions  unshadowed regions  A shadow volume is the boundary between these shadowed and unshadowed regions  First described by [Crow 77]  Professor at University of Texas!  Discrete framebuffer support  Shadow count in the framebuffer from Fournier and Dr. Fussell (1988)  Translates natrually to the stencil buffer…
  • 60. CS 354 60 Visualizing Shadow Volumes  Occluder and light projects a shadow volume
  • 61. CS 354 61 Shadow Volume Result  Objects within the volume are shadowed
  • 62. CS 354 62 Shadow Volume Algorithm  High-level view of the algorithm  Given the scene and a light source position, determine the shadow volume (harder than it sounds)  Render the scene in two passes  Draw scene with the light enabled, updating only fragments in unshadowed region  Draw scene with the light disabled, updated only fragments in shadowed region  But how to control update of regions?
  • 63. CS 354 63 2D Cutaway of a Shadow Volume surface outside shadowing shadow volume object (illuminated) light source shadow volume (infinite extent) eye position surface inside partially shadowed shadow volume object (shadowed)
  • 64. CS 354 64 Tagging Pixels as Shadowed or Unshadowed  Using stencil testing  High-level algorithm does not say how to update only either pixels in or out of the shadow volume!  The stenciling approach  Clear stencil buffer to zero and depth buffer to 1.0  Render scene to leave depth buffer with closest Zs  Render shadow volume into frame buffer with depth testing but without updating color and depth, but inverting a stencil bit  This leaves stencil bit set within shadow!
  • 65. CS 354 65 Stencil Inverting of Shadow Volume  Why it works shadowing light object source two inverts, left zero one invert, left one eye zero inverts, left zero position
  • 66. CS 354 66 Visualizing Stenciled Shadow Volume Tagging Shadowed scene Stencil buffer red = stencil value of 1 green = stencil value of 0
  • 67. CS 354 67 Computing Shadow Volumes  Harder than you might think  Easy for a single triangle, just project out three infinite polygons from the triangle, opposite the light position  But shadow volume polygons should not intersect each other for invert trick to work  This makes things hard  For complex objects, projecting object’s 2D silhouette is a good approximation (flat objects are easy)  Static shadow volumes can be pre-compiled
  • 68. CS 354 68 For Shadow Volumes With Intersecting Polygons  Use a stencil enter/leave counting approach  Draw shadow volume twice using face culling  1st pass: render front faces and increment when depth test passes  2nd pass: render back faces and decrement when depth test passes  This two-pass way is more expensive than invert  And burns more fill rate drawing shadow volumes  Inverting is better if no polygon intersections
  • 69. CS 354 69 Why Eye-to-Object Stencil Counting Approach Works Light Shadowing object source zero +1 zero Example in 2D +2 +2 Eye +1 +3 position
  • 70. CS 354 70 Illuminated, Behind Shadow Volumes (Zpass) 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
  • 71. CS 354 71 Shadowed, Nested in Shadow Volumes (Zpass) Light Shadowing object source zero +1 zero + + + - +2 +2 Shadowed Eye +1 object +3 position Shadow Volume Count = +1+1+1-1 = 2
  • 72. CS 354 72 Illuminated, In Front of Shadow Volumes (Zpass) Light Shadowing object source zero +1 zero +2 +2 Shadowed Eye +1 object +3 position Shadow Volume Count = 0 (no depth tests pass)
  • 73. CS 354 73 Shadow Volume Issues  Practical considerations [Bergeron 86]  If eye is in shadow volume, need to determine this and flip enabled & disabled lighting passes  Shadow volume only as good as its tessellation  Shadows tend to magnify limited tessellation of curved surfaces  Open models and non-planar polygons  Must cap the shadow volume’s intersection with the near clipping plane
  • 74. CS 354 74 Problem Created by Near Clip Plane (Zpass) Missed shadow volume intersection due to near clip plane clipping; leads to mistaken count Far clip plane zero +1 +1 +2 zero +3 +2 Near clip plane
  • 75. CS 354 75 Alternative Approach: Zfail  Render scene to initialize depth buffer  Depth values indicate the closest visible fragments  Use a stencil enter/leave counting approach  Draw shadow volume twice using face culling  1st pass: render back faces and increment when depth test fails  2nd pass: render front faces and decrement when depth test fails
  • 76. CS 354 76 Illuminated, Behind Shadow Volumes (Zfail) Light Shadowing object source zero +1 zero Unshadowed object +2 +2 Eye +1 +3 position Shadow Volume Count = 0 (zero depth tests fail)
  • 77. CS 354 77 Shadowed, Nested in Shadow Volumes (Zfail) Light Shadowing object source zero +1 zero + + +2 +2 Shadowed Eye +1 object +3 position Shadow Volume Count = +1+1 = 2
  • 78. CS 354 78 Illuminated, In Front of Shadow Volumes (Zfail) Light Shadowing object source zero +1 zero - - - + + + +2 +2 Shadowed Eye +1 object +3 position Shadow Volume Count = -1-1-1+1+1+1 = 0
  • 79. CS 354 79 Problem Created by Far Clip Plane (Zfail) Far clip plane Missed shadow volume intersection due to far clip plane clipping; zero leads to mistaken count +1 zero +1 +2 +2 +3 Near clip plane
  • 80. CS 354 80 Problem Solved by Eliminating Far Clip zero +1 +1 +2 +2 +3 Near clip plane
  • 81. CS 354 81 Avoiding Far Plane Clipping  Usual practice for perspective GL projection matrix  Use glFrustum (or gluPerspective)  Requires two values for near & far clip planes  Near plane’s distance from the eye  Far plane’s distance from the eye  Assumes a finite far plane distance  Alternative projection matrix  Still requires near plane’s distance from the eye  But assume far plane is at infinity  What is the limit of the projection matrix when the far plane distance goes to infinity?
  • 82. CS 354 82 Standard glFrustum Projection Matrix  2 × Near Right + Left   Right − Left 0 0  Right − Left    2 × Near Top + Bottom  0 0 P= Top − Bottom Top − Bottom   Far + Near 2 × Far × Near   0 0 − −   Far − Near Far − Near    0 0 −1 0    Only third row depends on Far and Near
  • 83. CS 354 83 Limit of glFrustum Matrix as Far Plane is Moved to Infinity  2 × Near Right + Left   Right − Left 0 0  Right − Left   2 × Near Top + Bottom lim P = Pinf = 0 0 Far →∞  Top − Bottom Top − Bottom   0 0 −1 − 2 × Near      0 0 −1 0    First, second, and fourth rows are the same as in P  But third row no longer depends on Far  Effectively, Far equals ∞
  • 84. 84 Verifying Pinf Will Not ClipCS 354 Infinitely Far Away Vertices (1)  What is the most distant possible vertex in front of the eye?  Ok to use homogeneous coordinates  OpenGL convention looks down the negative Z axis  So most distant vertex is (0,0,-D,0) where D>0  Transform (0,0,-D,0) to window space  Is such a vertex clipped by Pinf?  No, it is not clipped, as explained on the next slide
  • 85. 85 Verifying Pinf Will Not ClipCS 354 Infinitely Far Away Vertices (2)  Transform eye-space (0,0,-D,0) to clip-space  2 × Near Right + Left  0 0  xc   xc   Right − Left Right − Left   0   y  y   2 × Near Top + Bottom   0   c  =  c =  0 0    − D   zc   Top − Bottom Top − Bottom  − D       0 0 −1 − 2 × Near     − D   wc     0    0 0 −1 0    Then, assuming glDepthRange(0,1), transform clip- space position to window-space position zc −D z w = 0.5 × + 0.5 = 0.5 × + 0.5 = 1 wc −D  So ∞ in front of eye transforms to the maximum window-space Z value, but is still within the valid depth range (i.e., not clipped)
  • 86. CS 354 86 Robust Shadow Volumes sans Near (or Far) Plane Capping  Use Zfail Stenciling Approach  Must render geometry to close shadow volume extrusion on the model and at infinity (explained later)  Use the Pinf Projection Matrix  No worries about far plane clipping  Losses some depth buffer precision (but not much)  Draw the infinite vertices of the shadow volume using homogeneous coordinates (w=0)
  • 87. CS 354 87 Visualize Net Stencil Rendering  Non-zero stencil state marks shadowed pixels w.r.t. the light source Fully shaded scene Final stencil state
  • 88. CS 354 88 Stencil Volume Rendering Animation
  • 89. CS 354 89 Shadow Volumes Add “Invisible” Geometric Complexity Visible geometry Scene with multiple light sources Shadow volume geometry Abducted game images courtesy Joe Riedel at Contraband Entertainment
  • 90. CS 354 90 Examples of Possible Silhouette Edges for Quake2 Models An object viewed from the same basic direction that the light is shining on the object has an identifiable light-view silhouette An object’s light-view silhouette appears quite jumbled when viewed form a point-of-view that does not correspond well with the light’s point-of-view
  • 91. CS 354 91 Multiple Lights and Shadow Volumes  Requires still more rendering passes, but can work! Shadows from different light sources overlap correctly
  • 92. CS 354 92 Shadow Volumes from Area Light Sources  Make soft shadows  Shadow volumes work for point light sources  Area light sources are common and make soft shadows  Model an area light source as a collection of point light sources [Brotman & Badler 84]  Use accumulation buffer or additive blending to accumulate soft shadow  Linear cost per shadow volume sample
  • 93. CS 354 93 Area Light Sources Cast Soft Shadows area light source umbra
  • 94. CS 354 94 Soft Shadow Example  Eight samples (more would be better) Note the banding artifacts
  • 95. CS 354 95 Combined Shadow Approaches  Two Approaches at Once just logo shadow volume logo lacks shadow on the teapot just planar projected teapot lacks shadows shadow on the floor combined approach
  • 96. CS 354 96 Pre-computed Shadow Textures  Lightmaps are static shadow textures  Compute lightmaps off-line with radiosity solver  local lighting models evaluated on tight grid can work well too  Lightmaps with soft shadows can be built faster with convolution approach, accelerated using the Fast Fourier Transform [Soler & Silion 98]  Pre-computed shadow textures work well for building interior with lots of diffuse surfaces
  • 97. CS 354 97 Light maps can encode Static Pre-computed Shadows decal only × (modulate)light maps only = * Id Software’s Quake 2 combined scene circa 1997
  • 98. CS 354 98 Rendering Soft Shadow Textures  Fast soft shadows [Heckbert & Herf 96]  Render a shadow texture  For each shadowed polygon, project all light-source- occluding polygons into the shadowed polygon’s plane * Similar to projected planar shadows * Model area light sources as multiple jittered points * Use additive blending to accumulate all contributions  Copy resulting image to the shadow texture  Draw polygon in final scene with shadow texture
  • 99. CS 354 99 Rendered Soft Shadow Texture Example  Shadow Texture and Final Result Shadow texture, accumulation Final resulting scene, shadow of nine jittered occluder texture modulated with projections wooden floor
  • 100. CS 354 100 Next Class  Mid-term  Return graded mid-term  Review class statistics  Project 2 assigned  On texturing, shading, & lighting  Study GLSL  Next lecture  Scene graphs  How do applications organize data structures for efficient rendering of scenes?