Introduction to 3D graphics
Most people would agree that computer graphics are anything but simple. There are many points that must be learned when studying 3D graphics and associated technologies. Often it is found that for every new topic learned, branching points and topics are discovered that must be studied. With that in mind, however, there are some basic concepts to 3D graphics, and the hardware associated with it, that will allow for a general understanding of the technology. This article will explore some of the key points of graphics hardware and rendering technology, hopefully allowing for a general understanding of some of the technology.
The data bus
3D graphics accelerators that are not integrated onto the mainboard are built into expansion cards. The connection between the graphics hardware and the mainboard takes place across a bus interface. The bus is where power and data are sent to the graphics card, allowing it to function and processes data. These data types can range from general commands, to textures, to geometry. The level of scene complexity determines how much of each data type must be sent, with each data type requiring a certain amount of bandwidth.
3D accelerators will connect with either a PCI (Peripheral Component Interface) or AGP (Accelerated Graphics Port) interface/slot. A PCI slot operates at a clock speed of 33 MHz, and allows a transfer rate of 133 MB/sec. While 133 MB/sec might seem to be a lot of data, in all reality it is not. Considerably more data is required for every scene rendered and often times PCI does not supply the necessary bandwidth. This problem can be addressed by using a more advanced bus, in the form of the Accelerated Graphics Port (AGP).
The Accelerated Graphics Port operates at a clock speed of 66 MHz, but allows for a variety of high transfer rates, depending on the specific mode of operation. AGP currently allows for several different modes, of which are 1x, 2x, and 4x. These allow for transfer rates of 266, 534 and 1066 MB/sec, respectively. Even then, while nearly 1 GB/sec of bandwidth might seem to be sufficient for bus transfer rates, the truth of the matter is that it is not. Scene complexity is increasing with each new generation of graphics hardware and graphics engines. With that in mind, the AGP 8x specification is currently being finalized and should be available sometime in the near future, providing even more bandwidth.
AGP does allow for more than just additional throughput, however. There are a variety of different operation modes supported with AGP, each of which can provide performance advantages. DIME (Direct Memory Execute), otherwise known as AGP texturing, allows the hardware to use system memory for texture storage purposes. This, in effect, gives the graphics card a memory limitation only set by the maximum available system memory or AGP aperture size, depending on which is greater. Traditionally, when a texture must be fetched for a frame, it is accessed from system memory, written to local memory, and then accessed by the graphics chip for the scene.
With AGP texturing, the chip reads the texture data directly from system memory, removing the need to write it to local memory. Unfortunately, current AGP bandwidth is still very low and this can actually cause a performance slow down, depending on the quality of the accelerator's texture management and the amount of data being fetched across the bus. This slow down can often be seen when a new room or level is entered and there are moments of slow performance, such as a stutter.