3D Accelerator Information
What is a 3D Accelerator?
Just as a graphics accelerator is optimized for making graphics appear on your screen as quickly as possible, and a multimedia accelerator contains specialized hardware for making video playback smooth and realistic, a 3D accelerator is designed to enhance performance when using software that presents a three-dimensional environment on your display.
Although affordable 3D accelerators are new, people have been displaying three dimensional environments on two dimensional (flat) displays for years. Architects and engineers have used computers to create 3D projections of plans and models since the late 1960's. On the entertainment front, Atari's Battlezone, with its abstract geometrical shapes and cold green lines, was unleashed in 1982, and 3D charts and graphs have been a staple of spreadsheets and financial programs for years. The benchmark for quality is continually raised -- Doom was revolutionary when it was released in 1993, but today's 3D games like Duke Nukem 3D and MechWarrior II have advanced even further. Still, the large amount of computing work necessary to perform the mathematical calculations needed to draw complex 3D scenes has kept the level of graphics quality lower than that of non-3D games. Just compare the image quality of Doom to that of Myst for an example. As far as computing technology has gone, 3D games and applications have lots of potential to look even better.
This is where 3D accelerators come in. They can render a 3D scene much faster than the processor on your motherboard can. And, by performing this processor-intensive work, they free up the processor on your motherboard to work on other things. As a result, 3D games and applications can run at higher screen resolutions, with more colors, more realistically shaded and textured objects, all at more frames per second.
The results can be phenomenal. Imagine a first-person game with the speed and response of Doom but with the gorgeous, high resolution detail of Myst. Imagine arcade-quality graphics on your PC. Imagine workstation-level architectural rendering speed. Imagine using a VRML browser to cruise through staggeringly realistic virtual cyberspace worlds that come alive with liquid-smooth response.
Simply put, 3D accelerators represent a quantum leap in affordable computing technology -- in the words of PC Gamer in their March, 1996 issue, "The potential is exciting. 3D acceleration technology actually gives game developers a way to develop superior games with far less time wasted worrying about hardware. It's a watershed event, comparable to the introduction of sound cards, CD-ROMs, or the original VGA card."
Several 3D APIs are coming into maturity, making it easier than ever to write a powerful 3D game or application. Some existing APIs are Intel's 3DR, Criterion's RenderWare, Argonaut's BRender, QuickDraw 3D Rave, 3Dfx's Glide, Microsoft's Direct3D.
Which one is best? It depends on what sort of 3D program you're going to develop. Some are better for simulation and engineering; others are aimed at game developers. Some are attractive because they're cross-platform -- for example, BRender is useful for development on the PC and porting to the Sony PlayStation and other consoles. Direct3D has become the de facto standard for 3D development under Windows 95, but Glide and OpenGL have a large following that is growing stronger.
A Quick Course In 3D Terminology
3D accelerators bring with them a whole new vocabulary. Here are brief definitions of the terms you'll find on a spec sheet or advertisement for a 3D accelerator:
API stands for application programming interface. It's a collection of routines, or a "cookbook," for writing a program that supports a particular type of hardware or operating system. A 3D API allows a programmer to create 3D software that automatically utilizes a 3D accelerator's powerful features. 3D engines can be very different when you program them at a low level by talking directly to registers and memory, so without an API that offered support for multiple 3D accelerators, it would be hard for a software developer to port their game or application to a lot of cards.
Alpha blending is a technique which provides for transparent objects. A 3D object on your screen normally has red, green and blue values for each pixel. If the 3D environment allows for an alpha value for each pixel, it is said to have an alpha channel. The alpha value specifies the transparency of the pixel. An object can have different levels of transparency: for example, a clear glass window would have a very high transparency (or, in 3D parlance, a very low alpha value), while a cube of gelatin might have a midrange alpha value. Alpha blending is the process of "combining" two objects on the screen while taking the alpha channels into consideration – for example, a monster half-hidden behind a large cube of strawberry gelatin (hey, it could happen!) would be tinted red and blurred where it was behind the gelatin.
Depth Cueing and Fogging
Fogging is just what it sounds like: the limits of the virtual world are covered with a haze. The amount of fog, color, and other particulars are set by the programmer.
Depth cueing is reducing an object's color and intensity as a function of its distance from the observer. For example, a bright, shiny red ball might look duller and darker the farther away it is from the observer.
Both of these tools are useful for determining what the "horizon" will look like. They allow the developer to set up a 3D virtual world (for a game, interactive walk-through, and so on) without having to worry about extending it infinitely in all directions, or far-away items appearing as bright points that confuse the user -- features can fade away into the distance for a natural effect.
Shading: Flat, Gouraud, and Texture Mapping
Most 3D objects are made up of polygons, which must be "colored in" in some fashion so they don't look like wire frames. Flat shading is the simplest method and the fastest. A uniform color is assigned to each polygon. This yields unrealistic results, and is best for quick rendering and other environments where speed is more important than detail. Gouraud shading is slightly better. Each point of the polygon is assigned a hue, and a smooth color gradient is drawn on the polygon. This is a quick way of generating lighting effects -- for example, a polygon might be colored with a gradient that goes from bright red to dark red.
Texture mapping is the most compelling and realistic method of drawing an object, and the version that most modern games like Doom require. A picture (this can be a digitized image, a pattern, or any bitmap image) is mapped onto the polygon. A developer designing a racing game might use this technology to draw realistic rubber tires or to place decals on cars.
Video texture mapping is a particularly exciting form of texture mapping that fits in well with a product like the Hercules Terminator 3D which employs high-speed video processing. A video stream (either live, or from an AVI or MPEG file) is treated like a texture, and is mapped to a 3D surface.
This process is necessary for texture mapped objects to truly look realistic. It’s a mathematical calculation that ensures that a bitmap correctly converges on the portions of the object that are "farther away" from the viewer. This is a processor-intensive task, so it’s vital for a state-of-the-art 3D accelerator to offer this feature. Just as importantly, the 3D accelerator must do this in a robust way in order to preserve realism. The quality of a 3D accelerator’s perspective correction is an excellent overall quality indicator.
Bilinear and Trilinear Texture Filtering
These are methods employed in texture mapping. Trilinear filtering is more sophisticated and requires MIP-mapping (see below) as well.
This texture mapping technique uses multiple versions of each texture map, each at a different detail. As the object moves closer to or farther from the user, the appropriate texture map is applied. This results in objects with a very high degree of realism. It also speeds processing time by allowing the program to map more simple, less detailed texture maps to objects that are farther away.
Z-Buffering is a technique for performing "hidden surface removal" – the act of drawing objects so that items which are "behind" others aren’t shown. Performing Z-buffering in hardware frees software applications from having to perform the intensive hidden surface removal algorithm.