Photon Mapping

Photon Mapping and the other renderers

Ray tracing

Ray tracing works by shooting rays from the eye through each pixels and determine the color of the first surface hit by the ray by computing how it is illuminated by each lights in the scene. With ray-tracing, an object receives light only where its surface sees the light directly and is non obstructed from the light source by other objects. Because ray tracing starts from the eye and not from the lights, it can't compute light reflection. It can only compute image reflection. There have been several adaptations of the ray-tracing rendering engine to compute indirect illumination coming from the other objects in the scene, but those ray-tracing engine are typically excessively slow and produce excessive noise in the final render.

Radiosity

Radiosity includes the first algorithms that where developed to compute direct and indirect illumination. Those algorithm worked by subdividing the whole scene in smaller patches until each patch had a uniform illumination. The illumination was then computed between each two patches in the scene starting from the lights.

There are two main shortcomings to the radiosity type of algorithms. First they can only compute direct and indirect illumination on rough surfaces. Radiosity cannot render glossy, reflective or transparent refractive surfaces nor caustics caused by those surfaces. Second, it works only on objects which can easily be subdivided into smaller and smaller patches thus excluding any procedurally defined objects. And, of course, storing the information about lighting information between evert two patches in the scene required huge memory requirements as well as long processing time.

Global Illumination

Global Illumination, or GI for short, refers to the class of algorithms which can potentially render all known illumination phenomena, e.g. direct and indirect illumination falling on and coming from rough, dull, glossy, reflective, transparent and translucent surfaces and can also produce caustics.

All GI algorithms are based on Monte-Carlo estimations. That is they use large number of random samples in order to compute an estimate of a solution which is as close as possible to reality. And this is the main disadvantage of most of the GI algorithms. Because it uses random samples, it produces noisy renders unless a huge number of samples is used. So it is not uncommon to have GI renders compute billions of samples and illumination interactions for a render thus resulting in days, even weeks of render time.

Biased GI

GI takes so much time because it tries to compute an exact solution through the use of thousand of samples per pixels, each of those samples can bounce several tens of times in the scene. Exact solutions are called unbiased estimates. They may be interesting for research purposes but not very interesting for entertainment purposes where render time is of primary concern.

Biased GI algorithms have been developed which does not try to compute an exact solution but rather an approximate or good enough solution. Biased GI algorithms still use Monte-Carlo sampling but with much less samples and fills in the rest of the estimate through statistical techniques. Those algorithms usually work in two passes where the first pass computes a rough estimate of the global illumination and the second pass uses a step called final gathering where the illumination at each pixel is estimated by sampling the previously computed rough global illumination. The rough global illumination estimate works because it is never viewed directly as is the case for unbiased GI.

Photon Mapping is a member of the biased GI algorithms.