…the shadow knows Shadow Algorithms Who knows what evil lurks in the hearts of men? Why shadows? Anatomy of a shadow � Increase realism � Umbra � Area completely obscured by object � Shows relationships between objects. � “Hard” shadows � Penumbra � Area partially obscured by object � “Soft” shadows Anatomy of a shadow Anatomy of a Shadow Learner.org Learner.org 1
Anatomy of a shadow Shadows and Computer Graphics � Notes about shadows in computer graphics � Still an area of active research � Soft shadows � Real time / efficient techniques � In Global illumination algorithms shadows, even soft shadows, come “for free”. � Precalculated and “mapped” shadows. Watt / Policarpo Classic Shadow Algorithms Scan Line Algorithm � [Appel 1968][Kelley 1970] � Projecting Polygons / scan line � Object space algorithm � Shadow volumes � Uses aux data structure that records, for each � Shadow Z-Buffer (Shadow Map) polygon pair, if one polygon shadows another. � Projection from light source onto a sphere � Number of possible entries = n(n-1) � Used in conjunction with a scan line algorithm Scan Line Algorithm Scan Line Algorithm � Projection (a) A is visible (b) B is visible (c) B is shadowed by A (d) B is visible Watt / Policarpo 2
Shadow Volumes Shadow volumes � [Crow 1977] � Object space � Calculate volume swept out by shadow of an object � Intersect this volume with view volume Watt / Policarpo Shadow Volumes Shadow Volumes � Advantages � Can shadow anything (including self- shadowing) � Disadvantages � Must construct the shadow volumes � Counting problem Watt / Policarpo Shadow Map Shadow z-buffer (Shadow Map) � [Williams 1978] � Step 1 (Construct shadow map) � Image space � The view of the scene is constructed from the light source’s point of view. � Use a Z buffer (depth buffer) from light � The depth values (Z) for the objects source point of view and use as a closest to the light source are stored to the texture onto scene rendered from depth map for each point. viewpoint 3
Shadow Map Shadow Map � Step 2 – Use Shadow Map � Render scene from viewpoint � use the saved depth buffer as a texture which is projected from the light's position � compare the value from the texture projected onto the point to the distance from the point to the light http://www-sop.inria.fr/reves/personnel/Marc.Stamminger/psm/ Shadow Map Shadow Map � Basic Z buffer algorithm � Modified Z buffer algorithm Initialize frame buffer (to background) Initialize frame buffer (to background) Initialize Z-buffer (to 0) Initialize Z-buffer (to 0) For each polygon P { For each polygon P { For each pixel p in polygon’s projection { For each pixel p in polygon’s projection { z = P’s z at pixel p z = P’s z at pixel p if (z > Zbuffer at that pixel) { if (z > Zbuffer at that pixel) { zBuffer at pixel = z zBuffer at pixel = z Frame buffer at pixel = calcColor() Frame buffer at pixel = calcColor() } if ( z > shadow depth) place in shadow } } } Shadow Map Building a Better Shadow Map � Filtering � Advantages � Z-buffer, projection supported in hardware � Disadvantages � Aliasing � Self shadowing difficult 4
Building a Better Shadow Map Building a Better Shadow Map � Deep Shadow Maps � shadow maps store visibility functions for every pixel. � function describes how the light passes from the shadow camera origin to the desired pixel. � 0 – 1 rather than 0 or 1. Lokovic/Veach 2000 Summary Wednesday � Shadows…the shadow knows � Peter Anderson… � Classic Shadow Algorithms � Linear Pixel Shuffling � Scan line � Don’t forget 1 page summary! � Shadow volumes � Shadow maps � Shadow algorithms are still an active research area. � Questions? 5
Recommend
More recommend