Some illumination situations cause problem due to the large number of light sources.
The large number of light sources can result from simulation of complex lighting by point light sources (e.g. flames, neons).
Our technique takes advantage of the fact that for distant points, we do not need to sample each light sources. A cluster of light sources could be replaced by a simpler representation of the illumination it contains.
Since the visibility problem is extremely complex (the trees scene is a very good example), we decided to experiment with scenes without any light sources occlusion. These are our test scenes:
Here is an example of the kind of light hierarchies we construct:
Using information kept in each voxel of our octree of lights, we can compute an exact bound on the error introduced when using the virtual light source instead of all the light sources it represents.
Using a threshold of 1% error (~2.5RGB), speedups of up to 90 can be reached as the number of light sources present grows.
The threshold gives an adequate tradeoff between speed and accuracy. With a large threshold, artifacts appear in the images.
The image on the left is the actual rendering and the one on the right is the difference image (compared to the classical ray-tracing). The intensity levels of the difference image have been adjusted to clearly show the artifacts caused by a large threshold. The error is still below the user defined threshold. Since the bound is fairly conservative, the maximal error is around ten times lower than the user threshold.