Original Post
I've been trying to put together the various techniques for rendering shadows, thier cost, inaccuracies, and the required hardware support to make them viable. For the moment, I'm focusing just on shadows, so something like bump-mapping isn't listed. Any corrections or additional techniques? And does the double-fail (Carmack's Reverse) stencil-buffer technique perform self-shadowing? Technique Implementation Inaccuracy Hardware Cost Ground-Plane Shadows Rerender using grey [color] and plane-projection matrix Only cast shadows onto flat axis-aligned planes Hardware z-buffer Additional rendering of shadow-casting objects Light Maps Pre-calculated textures Pre-computed, not dynamic Alpha-blending w/multiple-passes or multi-texturing One additional texture/pass (for all lights) Attenuation Maps Pre-calculated LUT textures Basic dynamic shadow, only works well for point-sources Alpha-blending w/multiple-passes or multi-texturing Additional texture/pass per light Shadow Volume "Carmack's Reverse" Produces correct shadows Stencil Buffer (how many bits? 8+?) Extra scene render per 'shadow' (light) source, plus additional pass for viewed scene Shadow Volume Projected shadow mapping Requires sufficent vertex density to produce correct shadows Hardware texture matrix accel, render-to-texture Additional texture w/ multi-texruting or multiple-passes with subtractive blending plus computational-intensive CPU-based shadow-volume/target-vertex "collision" test Soft Shadows ? ? Pixel-shader ?
