449
like wood, rock, metal, plastic, cloth, skin, and so on. There’s no reason to du-
plicate these materials inside every mesh. Instead, many game teams build up
a library of materials from which to choose, and the individual meshes refer
to the materials in a loosely-coupled manner.
10.2.3. The Asset Conditioning Stage
The asset conditioning stage is itself a pipeline, sometimes called the asset
conditioning pipeline or ACP. As we saw in Section 6.2.1.4, its job is to export,
process, and link together multiple types of assets into a cohesive whole. For
example, a 3D model is comprised of geometry (vertex and index buff ers),
materials, textures, and an optional skeleton. The ACP ensures that all of the
individual assets referenced by a 3D model are available and ready to be load-
ed by the engine.
Geometric and material data is extracted from the DCC application and
is usually stored in a platform-independent intermediate format. The data is
then further processed into one or more platform-specifi c formats, depend-
ing on how many target platforms the engine supports. Ideally the platform-
specifi c assets produced by this stage are ready to load into memory and use
with litt le or no postprocessing at runtime. For example, mesh data targeted
for the Xbox 360 might be output as index and vertex buff ers that are ready
to be uploaded to video RAM; on the PS3, geometry might be produced in
compressed data streams that are ready to be DMA’d to the SPUs for decom-
pression. The ACP oft en takes the needs of the material/shader into account
when building assets. For example, a particular shader might require tangent
and bitangent vectors as well as a vertex normal; the ACP could generate these
vectors automatically.
High-level scene graph data structures may also be computed during the
asset conditioning stage. For example, static level geometry may be processed
in order to build a BSP tree. (As we’ll investigate in Section 10.2.7.4, scene
graph data structures help the rendering engine to very quickly determine
which objects should be rendered, given a particular camera position and ori-
entation.)
Expensive lighting calculations are oft en done offl ine as part of the as-
set conditioning stage. This is called static lighting ; it may include calcula-
tion of light colors at the vertices of a mesh (this is called “baked” vertex
lighting), construction of texture maps that encode per-pixel lighting in-
formation known as light maps , calculation of precomputed radiance transfer
(PRT) coeffi cients (usually represented by spherical harmonic functions),
and so on.
10.2. The Rendering Pipeline