Indirect Illumination calculation for Irradiance Cache


The irradiance cache algorithm was implemented in our Photon Mapper. As is well known, Irradiance Cache is a method to accelerate the computation of indirect illumination in global illumination systems. This acceleration is achieved by computing indirect illumination only at some points in the image, and interpolating the rest of the image using the previously calculated points. The calculation of the sample points is expensive: Normally 200 - 5000 rays are used to compute each sample point. For each one of this rays we have to compute the color of the object that is intersected, and this color is used to compute the estimated irradiance that arrives at the sample point.
We experimented with the 4 available illumination techniques we have implemented in our system in order to try to accelerate this sample computation. The techniques we tried are:
  1. Luminance computation using the Photon Map directly
  2. Luminance computation using Hierarchic Illumination
  3. Luminance computation using Shirley method assisted by the Photon Map
  4. Luminance computation using simple Shirley method
The images that can be seen below were all rendered at 800x800 pixels, using only 1 sample per pixel. Only 100 rays were traced for each irradiance cache sample.

We also have some images that give a very good idea of how the irradiance cache samples increase as the allowed error is decreased.

Direct Photon Map

The results achieved using the Photon Map become increasingly better as the Irradiance Cache error is decremented, as is to be expected.

Photon Map 0.1
Photon Map 0.05
Photon Map method: Irradiance Cache error: 0.1
142.359 seconds to render.
Photon map method: Irradiance Cache error: 0.05
280 seconds to render.
Photon Map 0.01

Photon Map method: Irradiance Cache error: 0.01
1326.609 seconds to render.


Hierarchic Illumination

The results using Hierarchic illumination are very similar to the ones achieved using the Photon Map directly. We could even consider the results to be of better quality, if we take into account the fact that the edges of objects show some error in the previous images (this can be noted specially in the union between white walls). However, this edge error does not appear in this method, and the rendering times are also much better.

Hierarchic 0.1
Hierarchic 0.05
Hierarchic Illumination method: Irradiance cache error: 0.1
32.719 seconds to render
Hierarchic Illumination method: Irradiance cache error: 0.05
48.875 seconds to render
Hierarchic 0.01

Hierarchic Illumination method: Irradiance cache error: 0.01
71.531 seconds to render


Shirley method with Photon Map

We used in the following images the Shirley method for computing luminance with assistance from the Photon map. The photon map is used to estimate if a given point is in umbra, penumbra, or fully illuminated. This tells us if it is necessary or not to trace shadow rays from the point to the light sources. The rendering times are better than using the photon map directly, but the error in the resulting image is much greater. The error decreases as we increase the Irradiance cache samples.

Shirley 0.1
Shirley 0.05
Shirley w/Photon Map method: 0.1 error
86.984 seconds to render
Shirley w/Photon Map method: 0.05 error
171.796 seconds to render
Shirley 0.01

Shirley w/Photon Map method: 0.01 error
848.437 seconds to render


Simple Shirley Method

This method uses only the Shirley method, without using the Photon map for assistance in determining a given point's position in a shadow. Shadow rays are always used to obtain this information. The quality is practically the same as the previous images, as is to be expected, but the rendering times are much better. This is due to the fact that we only trace 10 shadow rays to the light sources. Tracing 10 rays is much faster than looking for 100 photons in the photon map.

Shirley simple 0.1
Shirley  simple  0.05
Simple Shirley method: 0.1 error
46 seconds to render
Simple Shirley method: 0.05 error
79.703 seconds to render
Shirley Simple 0.01

Simple Shirley method: 0.01 error
325 seconds to render


Irradiance Cache Samples

In the following images we can see graphically the irradiance cache samples used to render the images that can be seen above.

Irradiance Cache samples 0.1
Irradiance Cache samples 0.05
Here we can see the irradiance cache samples that are stored for images with an error of 0.1. In average, for all images around 20626 samples were stored, while 619374 pixels were interpolated.
Here we can see the irradiance cache samples that are stored for images with an error of 0.05. In average, for all images around 42705 samples were stored, while 597245 pixels where interpolated.
Irradiance Cache samples 0.01

Finally, here we can see the irradiance cache samples that are stored for images with an error of 0.01. In average, for all images around 204887 samples where stored, while 435113 pixels where interpolated.