Rendering Shadows
Hard Shadows
Hard shadows typically come from small (i.e. point) light sources.
Shadow mapping
For each light source, compute what the light hits by using the slight source as a camera and doing a render pass. This is typically only done for the primary light in the scene.
At render time, each object can sample into the shadow map to determine if it is occluded or not.
Shadow Volume
Soft Shadows
Soft shadows appear from large light sources such as the environment lighting.
Precomputed Radiance Transfer (PRT)
Spherical Harmonics
https://www.cs.columbia.edu/~bosun/images/research/sig06/download/shexp.pdf
The idea here is to approximate each blocker object as a set of spheres. For any receiver point and each spherical blocker, we can compute a SH approximation of the light blocked. Then the SH coefficients can be added together to get compute the non-occluded light.