Systems and methods for providing multi-pass rendering of three-dimensional
objects. A rendering pipeline that includes (N) physical texture units and one
or more associated buffers emulates a rendering pipeline containing more texture
units (M) than are physically present (N). Multiple rendering passes are performed
for each pixel. During each texture pass only N sets of texture coordinates are
passed to the texture units. The number of passes required through the pipeline
to emulate M texture units is M/N, rounded up to the next integer. The N texture
units of the rendering pipeline perform look-ups on a given pass for the corresponding
N texture maps. The texture values obtained during the texture passes are blended
by texture blenders to provide composite texture values. In successive passes,
the buffers are used for temporary data and the most current composite texture
values. The process is repeated until all desired texture maps are applied.