***API

Intel Outlines Preferred Directions for 3D API and Developer Support

Intel, in charting its future direction in 3D technology, recently
disclosed directions it feels the industry should move. Part of this is
motivated by how the hardware platform is to evolve but many of the
suggestions clearly benefit the industry as a whole. These
recommendations are not only helpful to developers but also could impact
the evolution of 3D API's. Intel's recommendations include the following.

Early Culling

One of the first steps in the 3D geometry pipeline should be backface
surface culling before the transform. This would require pre-computed
triangle normals and the inverse transform of the camera into object
space to determine the backfaces. An advantage of this would be early
elimination of the backfaces with the transform only happening on the
visible faces.

Minimization of Vertex Copying

It is common practice to move the vertex list multiple times before it is
finally processed and copied into AGP memory. Intel suggests that the
most direct step of vertex handling would maximize the utility of AGP.
That is, they suggest that the pipeline be set up so that raw vertices be
taken directly from main memory once, they be transformed and lit and
then written directly to AGP memory. This would eliminate the use of a
temporary buffer for transform and lit vertices.

Efficient Use of Strips

Many developers pass individual triangles to the rasterization engine.
This creates a number of burdens, one of which is the independent
transform and lighting of each vertex of the triangle. Intel encourages
developers to take advantage of triangle strips to improve performance.
In the case of a 3 triangle strip the number of vertices goes from 9 to 5
and Intel has measured a performance improvement in processing the
vertices of 2X compared to a theoretical of 3X.

SOA Vertex Format

Traditionally vertices are stored in an array where all the attributes of
the vertex lie in a linear array which includes XYZ, UV, etc. They
suggest that when these structures are processed by an SIMD engine (hint)
the processing will be inefficient. A better approach is to make
independent linear arrays of X, Y, Z so that multiple vertices can be
processed concurrently.

Wave Issue 9734 1/22/98 Article 5-01