Subtractive Shadows: A Flexible Framework for Shadow Level of Detail

We explore the implications of reversing the process of shadow computation for real-time applications that model complex reflectance and lighting (such as that specified by an environment map). Instead of adding illumination contributions at each pixel across various lights, we compute the complete, unshadowed local illumination at each pixel using approximations, then subtract the lighting contribution from each light for which the pixel is in shadow. This provides flexible level of detail for shadow computation in ways that standard additive shadows do not, such as permitting the use of fast methods for accurate direct illumination combined with a small number of shadow-casting lights, and allowing for downsampled shadows to reduce fill cost. This technique preserves that portion of the scene with the greatest visual importance—the direct illumination—and allows shadows to be presented with lower fidelity in exchange for improvements in speed. With subtractive shadows, we are able to interactively manipulate and render arbitrary BRDFs and environment maps applied to complex, dynamic scenes with shadows, achieving in real time effects that previously required offline computation or preprocessing.