and halos of light appear everywhere in the world,
and they provide powerful visual cues about brightness
and atmosphere. In viewing computer graphics, film,
and print, the intensity of light reaching the eye
is limited, so the only way to distinguish intense
sources of light is by their surrounding glow and
halos (Nakamae et al. 1990). These glows reproduce
the visual effects of intense light and fool the observer
into perceiving very bright sources. Even a subtle
glow around an object gives the perception that it
is brighter than an object with no glow. In everyday
life, these glows and halos are caused by light scattering
in the atmosphere or within our eyes (Spencer 1995).
With modern graphics hardware, the effects can be
reproduced with a few simple rendering operations.
This allows us to fill real-time rendered scenes with
bright, interesting objects that appear more realistic
or more fantastic, and it is an elegant means to overcome
the traditionally low-dynamic-range, flat look of
real-time graphics. Several games are now using various
techniques to produce glows and halos of light.
Among these are Splinter Cell, Project Gotham
Racing, Wreckless (Kawase 2003), and Halo 2. Another
notable and widespread use of glow can be seen in Pixar's film Finding
Nemo, where glows convey the murkiness of seawater and help
to set the mood for various scenes. This chapter focuses on a particular
technique developed for the recently released Tron 2.0 game,
produced by Buena Vista Interactive and developed by Monolith Productions.
The technique was designed to produce large-area glows over the
entire screen, to be easily authored and controlled for a large
set of game assets, and to be fast enough for a first-person shooter
game running at more than 60 frames per second. The results are
shown in Figures 1 and 2. Here, the effect conveys the vibrancy
and electronic power of the Tron 2.0 computer universe, though
the technique can also be applied to create other effects, including
depth of field, light scattering, edge detection, and image processing.
Overview of the Technique
There are several approaches to creating glow
in a scene. For small point-like objects, a smooth, "glowy"
texture can be applied to billboard geometry that follows the objects
around the screen. In Tron 2.0, this is used for the Bit
character. For large sources of glow or complex glowing shapes,
it is best to post-process a 2D rendering of the scene in order
to create the glow. This chapter focuses on the post-processing
approach, whose steps are outlined in Figure 3.
First, the parts of a scene or model that glow
have to be designated by some means that will allow them to be isolated
and processed separately from the nonglowing parts. The scene is
rendered normally, as it would be with no glow, but it is also rendered
using the glow source information to create a texture map that is
black everywhere except where the glow sources can be seen. An example
of this rendered texture map is shown in Figure 3b. This rendered
texture map can be used as an ordinary texture in later rendering.
It is applied to simple geometry that causes it to be sampled many
times at each pixel in a two-step image convolution operation, which
blurs the glow source points out into the soft, broad-area glow
pattern. Finally, the soft glow is applied on top of the ordinary
rendering using additive alpha blending. In this way, the sources
of glow are spread out into convincing auras of glow using hardware
rendering and texture mapping.
Each of these steps can be done efficiently
and quickly on a broad range of graphics hardware. The technique
is best suited to hardware that supports Microsoft's Direct3D 8
Vertex and Pixel Shaders 1.1 or later, but a convenient fallback
exists for hardware that supports only fixed-function Direct3D 7
rendering. For the older Direct3D 7–era hardware, which has
lower fill-rate and texturing performance, the resolution of the
render-target textures can be reduced to improve performance while
not sacrificing much in terms of image quality. Because the blurred
glow texture typically contains only low-frequency features, its
resolution can be reduced with little loss in quality. In fact,
as explained later, reducing the resolution of the texture render
targets is a good way to create larger glows at no additional performance