Next: Implementation
Up: A Flexible Framework
Previous: Phase Functions
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).
Next: Implementation
Up: A Flexible Framework
Previous: Phase Functions
2000-04-06