Scene lit with direct illumination only. Render time: 11 minutesThe indirect component of illumination could have been rendered with Monte-Carlo path tracing, but for this image I used 'final gathering', a variation on the photon mapping technique. The first stage of computing the indirect illumination is to trace some photons through the scene and store them in a fast-lookup structure, namely a kd-tree. I used 5000 photon launches for this render (probably 10000-20000 stored hits). The reason the number of photons is so low is that photon map lookups during the final gathering stage can take a large percentage of the computation time, and keeping the number of photons low keeps the photon map lookups nice and fast.
Visualisation of photon map
Instead of using the photon map directly to approximate incident radiance at a given surface point, the final gathering algorithm traces out a few rays into the hemisphere surrounding the point. The photon map is then used to find the incident radiance at the ray intersection points. The benefit of the final gathering algorithm is that it eliminates the blotchiness resulting from using the photon map directly. The main drawback is the increase in number of rays traced, number of photon map lookups, and hence in total computation time.
Scene lit with indirect illumination only. Render time: 74 minutesThe area light and hemisphere for final gathering were sampled with 400 rays each, in a 20x20 stratified sampling pattern.
The final rendering, with both direct and indirect illumination. Render time: 80 Minutes
The Sponza atrium scene was modelled by Marko Dabrovic, you can get it here.
Mat Pharr has a doc on some advanced final gathering techniques here.