Secondary Light Sources in Radiance

Radiance now supports secondary light sources in planar surfaces such as mirrors. The method of virtual sources is used to create the appearance of a new source in a virtual world on the other side of the transferring surface, or "relay object." Shadow rays are then sent to these virtual sources along with the regular sources, testing not only for occlusion but also for the geometric boundaries of the secondary source path. This is necessary to yield the correct light patch shape.

The method used for specifying secondary sources in Radiance is quite simple. Certain materials possess the "secondary source" attribute. When such a material modifies a planar surface, secondary light sources are created. It is an error to use a secondary source material on a non-planar surface such as a sphere. Currently, the materials "mirror," "prism1" and "prism2" have the secondary light source attribute.

If multiple facing mirrors appear in a scene, the number of secondary sources can multiply quite rapidly. We therefore introduce a limit to the number of secondary source "relays" allowed, with the rendering option -dr. A setting of -dr 0 means that secondary sources will not be considered at all. Another technique that can limit the growth of secondary sources is called "virtual source presampling," which is controlled with the -dp option. Presampling tests a secondary source for visibility before adding it to the calculation, thus avoiding the inclusion of secondary sources that would never appear and the shadow testing of secondary sources that are never occluded. A presampling density of -dp 0 means that all secondary sources will be included and fully tested for shadows. This is potentially much more expensive, but it is the only way to guarantee absolute shadow accuracy at any resolution.

Even without presampling, Radiance performs many checks of secondary sources before including them in the calculation. In addition to the obvious tests to insure that a source is on the correct side of the relay object, facing the proper direction and so on, Radiance also computes the solid angle that corresponds to the maximum influence of each secondary source. This greatly speeds up the direct calculation by avoiding secondary source shadow tests that could not possibly pay off.

Nevertheless, secondary light sources can be quite costly, especially if there are many mirror surfaces that see each other. Presampling avoids most of the costs associated with fruitless testing, but in scenes with mutual reflections, there may still be hundreds or even thousands of virtual light sources created. Even with the solid angle limits, each virtual source must be considered at least briefly before it is rejected. It is therefore very important for efficiency to minimize the number of mirror surfaces in a scene as much as possible. In particular, do not make relay objects from many small mirror elements. Such elements should be consolidated into the largest polygons possible.