4.5 Graphics Interface

The N64 uses a display list hierarchy to describe what to render. 3D geometry transformation and rasterization are accelerated by RSP and RDP respectively. The CPU generates the display list in memory, then the RCP fetches the display list and renders the graphics.


4.5.1 Graphics Binary Interface (GBI)

Nintendo 64 renders graphics using a display list interface called graphics binary interface (GBI). The CPU assembles the GBI structure in RDRAM for the RSP/RDP to render. The RSP must first be downloaded with graphics microcode to perform geometry transformation. The RDP performs polygon rasterization. RSP and RDP state machines are described in detail in Chapter 11, "RSP Graphics Programming" and Chapter 12, "RDP Programming".

Figure 4-3 Graphics Pipeline
[Figure 4-3]


4.5.2 GBI Geometry and Attribute Hierarchy

The GBI structure describes a hierarchy of geometry and its attributes. This tree is traversed depth first and the graphics pipeline attributes are sequentially modified during traversal. Both geometry (RSP) and raster (RDP) attributes are contained in a GBI structure.

Figure 4-4 Graphics Binary Interface (GBI) of an Airplane
[Figure 4-4]


4.5.3 GBI Feature Set

The graphics binary interface (GBI) contains many 3D graphics features. An algorithmic description of many of these features can be found in the "OpenGL Programmer's Guide." Table 4-1 below, lists the basic features of the GBI pipeline.

Table 4-1 GBI Feature Set
CPUGBI Assembly
RSPmatrix stack operations
3D transformations
clipping and back-face rejection to viewing frustum
lighting and reflection mapping
setup for polygon and line rasterization
RDPpolygon rasterization
Z buffer process
antialiasing process


4.5.4 RSP Geometry Microcode

There are three different versions of RSP geometry microcode: gspFast3D, gspLine3D, and gspTurbo3D. The gspFast3D microcode is the optimized, full-featured 3D polygonal geometry microcode. The gspLine3D is the optimized, full-featured 3D line geometry microcode, and the gspTurbo3D is the optimized, reduced-featured 3D polygonal geometry microcode. Each of these microcode types come in two versions. One version of the microcode has the RSP output the rasterization and attribute commands directly to the RDP. The other version outputs RDP commands to DRAM. Writing the RDP commands to DRAM could be used to overlap graphics and audio. For example, you could use the RSP for audio processing while the RDP is processing commands stored in DRAM. Storing the RDP commands in DRAM may also be useful for debugging.