Although it is difficult to prove in general, our empirical tests show that the average cost of ray intersection using this technique grows as a fractional power of the total number of surfaces, i.e.Figure 10. Plot showing sublinear relationship of intersection time to number of surfaces in a scene. The best fit for the exponent in this test was 0.245, meaning the ray intersection time grew more slowly than the fourth root ofN. The spheres were kept small enough so that a random ray sent from the field's interior had about a 50% chance of hitting something. (I.e. the sphere radii were proportional toN^1/3.) This guarantees that we are really seeing the cost of complicated geometry, since each ray goes by many surfaces.

The basic surface primitives supported in
*Radiance*
are polygons, spheres and cones.
Generator programs provide conversion from arbitrary shape
definitions (e.g. surfaces of revolution, prisms, height fields,
parametric patches) to these basic types.
Additional scene complexity is modeled using hierarchical
*instancing*,
similar to the method proposed by Snyder [21].
In our application of instancing,
objects to be instanced are stored in a separate octree, then
this octree is instanced along with other surfaces to create a second,
enclosing octree.
This process is repeated as many times and in as many layers as
desired to produce the combined scene.
It is possible to model scenes with a virtually
unlimited number of surfaces using this method.

Figure 11 shows a cabin in a forest. We began with a simple spray of 150 needles, which were put into an octree and instanced many times and combined with twigs to form a branch, which was in turn instanced and combined with larger branches and a trunk to form a pine tree. This pine tree was then put in another octree and instanced in different sizes and orientations to make a small stand of trees, which was combined with a terrain and cabin model to make this scene. Thus, four hierarchical octrees were used together to create this scene, which contains over a million surfaces in all. Despite its complexity, the scene still renders in a couple of hours, and the total data structure takes less than 10 Mbytes of RAM.