i
i
i
i
i
i
i
i
10.2. Fixed-View Effects 441
the color and Z-buffers stored away. Each frame, these buffers are copied
over to the displayable color and Z-buffer. The horse itself is then all that
needs to be rendered to obtain the final image. If the horse is behind the
fence, the z-depth values stored and copied will obscure the horse. Note
that under this scenario, the horse cannot cast a shadow, since the scene is
unchanging. Further elaboration can be performed, e.g., the area of effect
of the horse’s shadow could be determined, and then only this small area of
the static scene would need to be rerendered atop the stored buffers. The
key point is that there are no limits on when or how the color gets set in
an image to be displayed. For a fixed view, much time can be saved by
converting a complex geometric model into a simple set of buffers that can
be reused for a number of frames.
It is common in computer-aided design (CAD) applications that all
modeled objects are static and the view does not change while the user
performs various operations. Once the user has moved to a desired view, the
color and Z-buffers can be stored for immediate reuse, with user interface
and highlighted elements then drawn per frame. This allows the user to
rapidly annotate, measure, or otherwise interact with a complex static
model. By storing additional information in G-buffers, similar to deferred
shading (Section 7.9.2), other operations can be performed. For example, a
three-dimensional paint program can be implemented by also storing object
IDs, normals, and texture coordinates for a given view and converting the
user’s interactions into changes to the textures themselves.
A concept related to the static scene is golden thread or adaptive refine-
ment
1
rendering [83, 1044]. The idea is that while the viewer and scene are
not moving, the computer can produce a better and better image as time
goes on. Objects in the scene can be made to look more realistic. Such
higher-quality renderings can be swapped in abruptly or blended in over
a series of frames. This technique is particularly useful in CAD and visu-
alization applications. There are many different types of refinement that
can be done. One possibility is to use an accumulation buffer to do anti-
aliasing (see Section 5.6.2) and show various accumulated images along the
way [894]. Another is to perform slower per-pixel shading (e.g., ray trac-
ing, ambient occlusion, radiosity) off screen and then fade in this improved
image.
Some applications take the idea of a fixed view and static geometry a
step further in order to allow interactive editing of lighting within a film-
quality image. The idea is that the user chooses a view in a scene, then uses
this data for offline processing, which in turn produces a representation of
the scene as a set of G-buffers or more elaborate structures. Such techniques
1
This idea is also known as “progressive refinement.” We reserve this term for the
radiosity algorithm by the same name.