Graphics Reference
In-Depth Information
In path tracing, rays are again cast from the eye, and direct illumination is
again computed, but a single recursive ray is also cast, not necessarily in the spec-
ular direction: The direction for the recursive ray is determined by some proba-
bility distribution on possible directions. The result is to effectively compute the
contributions of all paths of the form L(S|D) * E . Because of the probabilistic
nature of the algorithm, we get noise in the resultant image. To reduce the noise,
a great many rays must be cast. The schematic representation (see Figure 31.19)
of path tracing is similar to that for ray tracing, except that the branching factor
for each tree is one . There are, however, many more trees associated to each pixel
(although we only draw one).
Figure 31.19: In path tracing,
each path from the eye either
terminates with some probabil-
ity or traces a single recur-
sive ray. In the version of the
algorithm schematically depicted
here, direct-light contributions to
light transport along the path are
computed at every scattering or
absorption point, and then trans-
ported back along the path.
In bidirectional path tracing, one path is traced from the eye and another
path is traced from a light source. By splicing together these paths (say, the third
point on the light path gets joined to the second point on the eye path), we create
paths that may carry light all the way from the source to the eye. If the splice
segment meets an occluder, we get no light transport at all, however. Each spliced
path gives information about light going to the eye (or camera), and we take the
information from multiple paths and splicings to estimate the color of each pixel.
Bidirectional path tracing drastically improves the handling of caustics (bright
regions arising from paths of the form LS + DE , i.e., light focused in various ways
on a diffuse surface). When caustics are seen only in reflection (e.g., with paths of
the form LS + DSE ), or when they arise not directly from a light source, but from
its reflection in a small diffuse object ( LDS + DE ), they are once again difficult to
compute, however.
The schematic representation of bidirectional path tracing (see Figure 31.20)
consists of two trees, one starting from a light and one starting from the eye, with
splices between all pairs of interior nodes. Again, we have to understand that there
are many paths for each image pixel and many paths emanating from each light
source, so a more accurate schematic would consist of two forests with many
possible splices.
Figure 31.20: In bidirectional
path tracing, we compute many
eye paths (green) and many light
paths (red), and then consider
all possible “splices” (orange)
between the two sets.
In photon mapping, the forest of paths starting at lights is treated differently:
Rather than joining an eye path, the nodes of this forest—each node represents
light that arrives at some point of the scene—are used to estimate the light arriving
at any point. The light conducted by an eye path can then be evaluated by summing
up the light arriving at each of its nodes, that arriving light being estimated from
the forest of light paths. One very simple way to estimate the incident light at a
point is to look for the nearest point for which the incident light is known and use
that. This “nearest neighbor interpolation” is not quite what the photon mapping
algorithm uses, but it's related. The schematic representation (see Figure 31.21)
contains a cloud of estimated incident light into which eye paths reach.
Figure 31.21: In photon map-
ping, the forest of light paths
is used to estimate the incident
light at every surface point by a
kind of local interpolation. Eye
paths then get incoming radiance
values from this estimate, which
we draw as a cloud around the
leaves of the light-path trees.
One last algorithmwe'll discuss—Metropolis light transport—doesn't directly
fit into this schematization. It does involve bidirectional path tracing, but the paths
are chosen and used in a rather different way.
As described informally above, we'll be recursively tracing lots of rays, form-
ing paths in a scene. In Monte Carlo methods, these paths are generated through
a randomized process, usually by sampling from some distribution related to the
BRDF.
The two main forms of sampling we tend to do are very similar.
In ray tracing, we take a ray from the eye to a point P on some surface, and
ask, “Which rays arriving at P contribute light that will reach the eye?” For
 
Search WWH ::




Custom Search