Geometry Engine

The Geometry Engine contains four identical floating point processor datapaths.  Each
module, constructed around a Texas Instruments 74ACT8867 chip, is capable of 32
million floating point operations per second (MFLOPS), giving a peak aggregate rate
of 128 MFLOPS.  The Geometry Engine processes a stream of high-level graphics
commands mixed with single-precision floating point data.  Each GE module includes
local memory for temporary storage of data during processing.  The four modules act
together as a SIMD machine under control of a centralized microsequencer, operating
on Up to four vertices simultaneously.  The Geometry Engine is designed to have a
very short latency time for maximum throughput efficiency.

The first task is to perform matrix operations on incoming vertices.  The GE's use a 4x4
matrix stack to rotate, translate, and scale 2D and 3D homogeneous coordinates.  A 3x3
normal matrix stack is also used to transform surface normals.

The next task is to light the vertices.  The GE maintains the position, direction, and
intensity specifications for lighting calculations.  It supports up to eight independent
point-source lights or spotlights; material specifications including ambient, diffuse,
and specular reflectance parameters; and lighting model information.  The color
applied to each transformed vertex is a function of the vertex position, the surface
normal direction, the lighting model, the lights, and the characteristics of the surface.
The result of the lighting calculation is either a set of four eight-bit red, green, blue,
and alpha values (in RGBA niode) or a single 12-bit color index (in color index mode).

The third task is to clip coordinates to a 6-plane bounding box. (The ability to clip
against additional arbitrary planes is available as well).  A fast accept/reject clip-
checking algorithm eliminates the need for complex clipping calculations in most

The final steps of the vertex computation are to perform depth-cued color
calculations, to clip colors to the required eight-bit range, and to decompose polygons
with five or more vertices into triangular and quadrilateral segments.  Data leaving the
Geometry Subsystem is in the form of 2D screen space vertices (with retained Z values
for hidden surface removal).

3.1.5 Scan Conversion Subsystem

Screen coordinates sent from the Geometry Engine to the Scan Conversion Subsystem
specify points and the vertices of lines and polygons.  The Scan Conversion Subsystem
performs the calculations required to reduce vertex data to individual pixels.  Each
pixel is assigned an X, Y screen position, plus a number of parameters per pixel,
including Z, red, green, blue, alpha, and the texture parameters S and T. These
parameters are always linearly interpolated between vertices and between the edges
of polygons.

The task of scan-converting polygons is partitioned into four separate processors
within the Scan Conversion Subsvstem: the Vertex Reorganizer, the Poly Engine, the
Area Engine, and the Span Processor.