You are on page 1of 2

RAY TRACING TERMS

SUGGESTED TERMS
Occlusion/Visibility. These are two opposing terms that are used
inconsistently in the literature. Either can be a boolean, scalar, or color depending on
context, and no specific aspect of that context should be assumed when describing an
operation using those terms. Most functions in programs compute visibility (true = 1
= fully visible) in practice even when they use opacity to describe them.
Ray Packet. This is a set of rays that are processed that the same time. The
term "ray bundle" is also often used. Packet is to be preferred only because its use is
somewhat more common.
Viewing/Camera Rays. These are rays from the pinhole/eye or lens area and
traced into the scene. This term has the advantage of sounding like the viewing
calculation in GPU graphics.
Radiance Rays. These return a radiance value (i.e., a color rather than a
fractional occlusion/visibility). Viewing, reflection, and refraction rays are radiance
rays while shadow and ambient occlusion rays are not.
Shadow Rays. These return an occlusion value for a point to be shaded from a
light. Without further modifiers, it should not be assumed which of a boolean, scalar,
or color value it computes.
Occlusion Rays. A more general from of shadow rays in that they are sent to
directions that may or may not include lights. Occlusion rays may return booleans or
may return some fraction. The distinction between "shadow" and "occlusion" rays may
be a bad one, as it is not clear which term is better for sampling an HDR environment
map. If one term must be chosen I would suggest "occlusion ray" to encompass
shadow rays.
Specular Reflection Ray. A ray that is reflected from a mirror-like surface.
There is some ambiguity on whether there is any randomness allowed in direction.
This ambiguity can be mitigated by using the expanded terms "ideal specular
reflection ray" and "glossy specular reflection ray" when needed, in context. Because
the short-hand "reflection ray" is sometimes used to include diffuse as well as
specular rays, it should be used only when its meaning is clear from context.
Distribution Ray Tracing. A method that allows viewing, reflection, refraction,
and shadow rays to be randomly perturbed to implicitly sample integrals as described
by Cook. Sometimes called "Cook ray tracing" or "Distributed ray tracing", with the
latter term to be avoided. Heckbert was the original advocate of replacing
"distributed" with "distribution" to avoid confusion with parallel (distributed)
computing, and this suggestion has been adopted in many papers.
Path Tracing. Differs from Distribution Ray Tracing in that random rays are
traced from diffuse surfaces as well as imperfect mirrors. Also called "Kajiya ray
tracing" or "Monte Carlo path tracing".
Binary Space Partitioning (BSP) Tree. This term is often used in ray tracing to
refer to kd-trees or particular variants of kd-trees. However, most of the graphics
communities assume that potentially non-axis-aligned dividing planes are allowed in a
BSP tree. The conventional graphics term is preferable because we lack a term in ray
tracing other than BSP trees to account for arbitrary dividing plane orientation.
Ironically I think the origin of the ray tracing community's non-standard usage may
stem from a paper I did with Kelvin Sung called "Ray tracing with the BSP tree", which
used a k-d tree.
K-d Tree. This is a k-dimensional tree whose nodes divide along one of the
Cartesian axes. In practice in ray tracing k=3.
Ambient Occlusion. This is the average cosine-weighted visibility of the
background (usually the ambient occlusion is one if nothing is occluded and 0 if
everything is). It is often visibility out to a point, and more generally with a function of
distance decreasing from 1 to 0 rather than a boolean. In practice the ambient
occlusion is often dampened by averaging it with a constant.
Gather. This is an average radiance of directional samples, usually but not
always cosine-weighted samples. Unlike ambient occlusion, when a gather ray hits a
surface some illumination model such as photon mapping is evaluated and a radiance
rather than an occlusion value is returned. One suggestion is to call this a "gathering"
to distinguish it from "scatter-gather". I think that might be a good idea.
Surface Area Heuristic (SAH). Goldsmith and Salmon introduced a cost
function to approximate the expected time to intersect a uniformly random ray with a
set of primitives stored in a bounding volume hierarchy (BVH). They also introduced a
greedy bottom-up construction algorithm which has since not been found to be
competitive. MacDonald and Booth adapted that cost function to k-d trees and they
called their cost function the "surface area heuristic". They also introduced a greedy
top-down build which took each node in isolation and decided whether to subdivide it
based on the unsubdivided SAH and the SAH of creating exactly two new leaves
(ignoring the potential for further subdivisions). Since that time, BVHs have been
shown to benefit from this top-down greedy build as well. Although not exactly
consistent with McDonald and Booth's original paper, in practice both cost functions
are called the SAH, and this has not led to much confusion because it is usually clear
from context whether a k-d tree or BVH is being used. So it is recommended that this
practice of letting the SAH encompass a family of cost functions continue. The top-
down greedy algorithm should not be called the SAH; rather it is a particular empirical
method to let the SAH drive tree construction.

You might also like