Physically Based Rendering
Irradiance Caching (IC) is a technique used in Physically Based Rendering to speed up rendering of the indirect diffuse component of the global illumination solution. IC stores irradiance computed sparsely via hemisphere sampling and uses it to interpolate at nearby locations.
- A Ray Tracing Solution to Diffuse Interreflection [Ward et al. 1988] - the original paper on Irradiance Caching
- Irradiance Gradients [Ward and Heckbert 1992] - a technique to improve results at little additional cost
- Making Radiance and Irradiance Caching Practical: Adaptive Caching and Neighbor Clamping [PDF] [Krivanek et al. 2006] - further improvements to the irradiance caching rendering quality
- SIGGRAPH 2008 Class provides both background about Irradiance Caching as well as insight into practical issues.
- Practical Global Illumination with Irradiance Caching [Krivanek and Gautron 2009] - the best book around about IC
- Irradiance Caching overview by Rory Driscoll: Part 1 (basic implementation), Part 2 (gradients)
An effective irradiance cache requires records to be stored in an acceleration structure that allows efficient insertion and fast lookup. An octree is most often used for this. This is a data structure which recursively divides regions of space into eight cubes of equal dimensions. This allows records with varying areas of influence to be stored at different depth levels of the octree.
For an overview of how it works in an IC, see [Ward et al. 1988] or [Krivanek and Gautron 2009] above. Some octree implementations are available online - look for those in PBRT and Mitsuba.