Presentation is loading. Please wait.

Presentation is loading. Please wait.

Shadows David Luebke University of Virginia. Shadows An important visual cue, traditionally hard to do in real-time rendering Outline: –Notation –Planar.

Similar presentations


Presentation on theme: "Shadows David Luebke University of Virginia. Shadows An important visual cue, traditionally hard to do in real-time rendering Outline: –Notation –Planar."— Presentation transcript:

1 Shadows David Luebke University of Virginia

2 Shadows An important visual cue, traditionally hard to do in real-time rendering Outline: –Notation –Planar shadows –Soft shadows –Projective shadows –Shadow volumes –Shadow maps –Shadow optimizations

3 Notation Light source –Point vs area Occluders & receivers –Identify ahead of time? –Self-shadowing? Shadow –Umbra –Penumbra Soft vs hard shadows

4 Planar Shadows Old trick: project the occluder geometry to a plane and render over ground plane –Can do with a matrix –Z-bias issues –Semiopaque shadows harder Stencil and Z-buffer tricks –Another option: generate textured rectangle Problems –Light source inside object (Antishadows) –Only planar receivers  no self-shadowing

5 Planar Soft Shadows Basic idea: –Sample light source multiple times, average results (accumulation buffer) into a texture Gooch et al: move plane up and down –Nested shadows  fewer passes

6 Projective Shadows Render scene from light’s point of view –Render all occluders as black –Can turn off depth buffer etc Project onto receiver polygons using projective texture mapping Works for curved surfaces Designer separates occluders and receivers  no self-shadowing

7 Shadow Volumes Basic idea: –Create polygonal objects to represent shadowed volumes –Make clever use of stencil buffer so that these objects affect what lighting is done

8 Stencil Buffer The stencil buffer has been around since OpenGL 1.0 –Basic idea: provide a per-pixel flag to indicate whether pixels are drawn or not –But… –Let that flag be an integer (usually 8 bits) Usually shared with depth buffer –And let drawing operations increment or decrement the stencil buffer based on different events Always, depth-pass, depth-fail, etc.

9 Shadow Volumes Details of the basic algorithm: –Compute shadow volumes View-independent! –Clear stencil buffer –Render the scene without diffuse/spec lighting –“Render” front faces of shadow volumes Turn off color, depth updates (but leave depth test on) Visible polygons increment pixel stencil buffer count –“Render” back faces of shadow volumes Turn off color, depth updates (but leave depth test on) Visible polygons decrement pixel stencil buffer count –Render scene with only diffuse/spec lighting Only update pixels where stencil = 0

10 Shadow Volumes Refinements (see book, next slides) –NV30, XBox supports signed stencil addition Two-sided lighting determines whether polygon adds or subtracts 1 from stencil buffer One-pass algorithm! But a little slower in practice? –What if you’re inside a shadow volume? Invert meaning of stencil test –What if near clip intersects shadow plane? Carmack, others: use z-fail test Clever extensions in NV2X help this idea out –Creating shadow volumes: vertex program! ATI: clever degenerate-edge trick again

11 Shadow Volumes Advantages: –Robust –Self-shadowing –GPU Disadvantages: –Can be geometry limited Stencil polys Multi-pass scene geometry –Can be fill limited –Stencil test – per pixel expense –Hard shadows

12 Shadow Volumes Will return to the gruesome details shortly

13 Shadow Maps Idea: –Render scene from light source, read Z-buffer –Result: discretized image (shadow map) telling distance of objects to light source –Render scene normally At each pixel, calculate distance D to light Compare to distance S stored in shadow map If D=S, surface lit by light, else in shadow

14 Shadow Maps The basic algorithm (w/o hardware) –Render scene with ambient lighting only –Read Z-buffer, transform values into coordinate system of light –Use comparison to set alpha buffer –Render w/ diffuse and specular components, multiplying by alpha

15 Shadow Maps Advantages: –Hardware-accelerated general shadow algorithm –Supports self-shadowing –Cost is linear in # lights and # polygons Disadvantages: –Self-shadow aliasing Biasing and other techniques can help, but not fix –Shadow map resolution critical! Solution: perspective shadow maps


Download ppt "Shadows David Luebke University of Virginia. Shadows An important visual cue, traditionally hard to do in real-time rendering Outline: –Notation –Planar."

Similar presentations


Ads by Google