segments. A point-based representation of the
reflected objects bypasses these challenges. As a
preprocess we sample the reflected geometry and
store the points in the kd-tree. At run time the points
are splatted using the C3RC to form the reflection.
The two phase backward-forward approach
produces quality reflections at interactive rates, see
Figure 1, 2, and 5, and the accompanying video. The
method has an efficiency advantage over ray tracing
because there are two orders of magnitude fewer
C3RCs than there are reflected rays, and because the
geometry within the view volume of a C3RC is
processed efficiently in feed-forward fashion.
Compared to a naïve feed-forward approach that
renders each triangle with each of the C3RCs, our
method benefits from the view volume culling
provided by the hierarchical scene subdivision.
2 PRIOR WORK
Image-based rendering
Light fields (Levoy and Hanrahan, 1996), are the
most powerful IBR primitive and they naturally
support reflections. Light fields can be used to
render reflections in one of several ways. The light
field can directly provide the desired view ray—it
does not matter whether the ray was reflected one or
several times on its path from the light source to the
eye. Another approach is to use a surface light field
(Miller, 1998), (Wood et al., 2000) attached to the
reflector in which to lookup the desired view rays
that intersect the reflector. A third possibility is to
surround the reflector with a conventionally
parameterized light field and to look up the reflected
ray, a technique called light field mapping (Yu and
McMillan, 2005). A fourth approach is based on
decoupling reflector properties from illumination.
This is achieved with a light field that maps incident
rays to reflected rays (Heidrich, 1999), or to a set of
radiance environment maps (Cabral and Olano,
1999).
Several techniques have been developed for
rendering reflective surfaces from 2D ray databases,
such as view dependent texture mapping (Debevec
et al., 1998), or parameterized environment maps
(Hakura, 2001). A disadvantage common to all IBR
reflection rendering techniques is the lack of support
for dynamic scenes: if the reflecting or reflected
objects move, or if the lighting conditions change,
the reference rays become obsolete. A second
disadvantage is limited support for highly reflective,
mirror-like surfaces, which require a high sampling
rate and generate impractically large ray databases.
Feed-forward methods
These methods set out to solve the reflected-point
projection problem, in order to make reflection
rendering tractable in the context of the feed-forward
pipeline. Projection is simple in the case of planar
reflectors (Diefenbach, 1996), but it does not have a
closed form solution in the case of curved reflectors.
Explosion maps (Ofek and Rappoport, 1998) and
sample-based cameras (Popescu et al., 2006) tackle
the projection problem for curved reflectors.
Explosion maps need to be recomputed for every
frame, which is inefficient, and the projection of
reflected vertices is approximate.
Sample-based cameras are similar to our method,
so we describe them in more detail. For each frame,
the set of reflected rays is partitioned recursively in
sets that are small enough such that they can be
approximated well with a planar pinhole camera. An
approximation is considered acceptable if the
projection error is below a user specified threshold,
typically 1 to 5 pixels. The planar pinhole cameras
are stored at the leafs of a binary space partitioning
tree (BSP), which is called a sample based camera
(SBC). The reflection is rendered with the SBC by
projecting scene vertices and then by rasterizing the
resulting triangles in pure feed-forward fashion. In
order to avoid excessive redundancy during the BSP
construction and inefficiency during projection, the
view frusta of the planar pinhole cameras need to be
disjoint. This condition is only satisfied by convex
reflectors, which is a severe limitation.
Our method does not require the view frusta of
the simple cameras (C3RCs in our case, planar
pinhole cameras in the case of SBCs) to be disjoint,
since, instead of partitioning the view frusta, we
partition the scene to be reflected. The SBC is a
compound camera which finds the simple camera
that contains a given point in logarithmic time. The
first phase of our method on the other hand is similar
to ray tracing in that it iterates over all simple
cameras and finds the geometry each of them sees in
logarithmic time. The advantage is lifting the
limiting condition that the reflector be convex.
Ray tracing
Ray tracing (Whitted, 1980), (Glassner, 1989) is a
general rendering technique that produces high
quality reflections. In the context of interactive
graphics, the challenge is performance. A wide
range of acceleration schemes have been proposed,
and ray tracing has been shown to run at interactive
rates on shared memory parallel computers (Parker,
1999), on special hardware (Hall, 2001), on a single
CPU (Wald, 2001), (Wald et al., 2001), (Reshetov et
GRAPP 2007 - International Conference on Computer Graphics Theory and Applications
286