next up previous
Next: Implementation Up: A Flexible Framework Previous: Phase Functions

Participating Material

What kind of interface is needed to seamlessly incorporate a participating material into a general purpose rendering system. Of course this depends largely on the rendering system. However, some general guidelines can be outlined. Usually, a rendering system will already possess some kind of general material class, which has some basic properties like colour and refraction index. In addition, it will make available some kind of function used to communicate with the rendering algorithm. Given a segment of a ray, the basic functionality of such a function is usually to return a value which represents the illumination along the given segment, as well as a filter value, which is similar to the extinction in volume rendering and determines how much illumination is absorbed along the ray segment. In order to succesfully integrate a participating material into a rendering system, the material class ``simply'' has to implement all methods necessary to communicate with the rest of the rendering system. The core of the participating material class is an algorithm which is able to evaluate all material properties along a given ray. That means it has to determine the amount of absorption and emission (direct emission as well as in-scattered light). This can be done, for example, by ray-marching, which is simply an algorithm which integrates material properties along the ray using a Riemann approximation. The Ray Marching algorithm subdivides the ray into equal segments and takes a sample of the participating materials properties for each segment. The segments correspond to the segments used in the Riemann approximation. As a result, the integral of the participating materials properties along the viewing ray can be approximated by the sum of the sample values multiplied by the length of one segment (see Figure 1).

Figure 1: Ray-Marching
\includegraphics [width=12cm]{images/figure_raymarching.eps}


next up previous
Next: Implementation Up: A Flexible Framework Previous: Phase Functions

2000-04-06