The state of 3D before hardware acceleration
Doom (1993) and Quake (1996) ran their 3D rendering on the main processor. Carmack's engines were exceptional at extracting maximum performance from CPU-bound rendering — every optimisation in the Doom engine existed to ensure that the CPU spent its cycles on the rendering problem rather than overhead. A player with a fast 486 or Pentium processor could run Quake at reasonable frame rates. A player with a slower machine ran it in a smaller window at lower resolution, sacrificing screen real estate for speed. The machine's CPU was the bottleneck, and upgrading the CPU was the only way to improve 3D game performance.
This created a commercial problem. CPU upgrades were expensive. The gap between a machine that could run Quake well and a machine that couldn't was not always a gap that users could close cheaply. Software developers had to target the hardware that most players actually owned, which constrained graphical ambition. The most visually impressive 3D games of the software-rendering era were pushing the boundaries of what CPUs could do, and the boundaries were visible in pixelated textures, limited draw distances, and frame rates that dropped in complex scenes.
Dedicated 3D rendering hardware existed in specialised form — Silicon Graphics workstations used it for professional visualisation — but the price points were professional rather than consumer. The concept of a 3D accelerator card for personal computers existed as a category in the mid-1990s without an affordable, high-performance product to occupy it. Multiple companies were working on solutions. 3dfx Interactive, founded in 1994 by three former Silicon Graphics engineers — Gary Tarolli, Scott Sellers, and Ross Smith — was working on the one that shipped first and worked best.
The Voodoo Graphics card
The 3dfx Voodoo Graphics card, released in October 1996, was not a complete graphics card in the conventional sense — it could not display 2D output at all, and required a standard 2D graphics card to remain installed alongside it. The Voodoo connected to the existing graphics card through a pass-through cable: 2D output from the main graphics card passed through the Voodoo and was combined with the Voodoo's 3D rendering when a compatible game was running, or passed through unmodified for desktop operation and non-3D games.
The card's capabilities were specific to the 3D rendering tasks that game software needed: texture mapping (applying a 2D image to a polygon surface), bilinear filtering (smoothing textures to reduce pixelation), alpha blending (transparency effects), Z-buffering (depth testing to correctly determine which polygons appear in front of which others), and fogging (atmospheric depth effect). These operations, performed per-pixel on every polygon the game rendered, required enormous numbers of floating-point calculations per frame. A 68 MHz CPU performed these calculations serially. The Voodoo's dedicated hardware performed them in parallel, processing multiple pixels simultaneously.
Quake running in software mode on a Pentium 100 could achieve approximately thirty frames per second in a small window at 320×200 resolution. Quake running with Voodoo acceleration ran at sixty frames per second at 640×480 resolution with filtered textures that eliminated the blocky pixelation of software rendering — on the same machine, with the same processor, because the Voodoo's hardware was doing the 3D rendering work the CPU no longer had to. The demonstration was conclusive. The card retailed at $299 and sold 200,000 units in its first three months.
Glide, OpenGL, and the standards war
3dfx's software API — Glide — was a direct-to-hardware interface that game developers could use to access the Voodoo's capabilities. Glide was faster than OpenGL on 3dfx hardware because it made fewer abstraction layer calls and could be optimised specifically for the Voodoo's architecture. This created a problem: games written for Glide ran on 3dfx hardware and nothing else. Competitors producing their own 3D accelerators — S3, Matrox, ATI, and eventually Nvidia — all implemented different subsets of different standards, fragmenting the market for hardware-accelerated 3D.
Microsoft entered this situation with Direct3D, a 3D API included in DirectX that would provide a common interface across multiple hardware implementations. OpenGL, originally an SGI standard, was also available. The question of which API would become the standard for PC 3D gaming was fought throughout 1997 and 1998, with hardware vendors, game developers, and Microsoft all making choices that were partly technical and partly strategic bets on the market's direction. Id Software's choice to support OpenGL in Quake — and specifically to optimise for the Voodoo's OpenGL implementation — was commercially significant: Quake was the game that drove Voodoo sales, and id's API choice affected which API those sales demonstrated.
Nvidia's GeForce 256, released in August 1999, changed the architecture of the competition by introducing hardware transform and lighting — moving the geometric calculation stage of 3D rendering to the GPU itself, leaving only application logic on the CPU. 3dfx's response was compromised by the strategic error of acquiring STB Systems, their board manufacturer, in 1998: the move was intended to control manufacturing costs but instead alienated the OEM partners who made and sold 3dfx cards through their own brands. When Nvidia's superior architecture combined with better OEM relationships to dominate the market, 3dfx had no response. Nvidia acquired 3dfx's assets in December 2000 for $70 million. The company that had created the consumer 3D GPU market did not survive long enough to see the market it created mature.
What hardware 3D changed permanently
The transition from software-rendered to hardware-accelerated 3D happened between 1996 and 1999. By 2000, a game that rendered its 3D environments on the CPU rather than the GPU was a game with a technical problem, not a design choice. The consequences for what games looked like and what they could do were immediate and lasting.
The most visible change was texture filtering. Software-rendered games displayed textures as they were stored — each texel mapped to a screen pixel, producing visible blocky pixelation at close range. Hardware bilinear filtering blended adjacent texels, smoothing the texture surface and producing a result that was visually cleaner if technically blurrier. Players who had accepted pixelation as the aesthetic of 3D games found filtered textures dramatically preferable and were unwilling to return to software rendering once they had seen the difference. The aesthetic of early 3D gaming — the chunky polygons, the pixelated textures, the small rendering windows — is now read as retro style; at the time it was simply the boundary of what was technically possible.
The frame rate and resolution increases enabled by hardware acceleration changed what 3D game design could attempt. Games that required precise 3D aiming — first-person shooters particularly — were more playable at consistent sixty frames per second than at the variable twenty-to-thirty frames that software rendering produced. Higher resolutions allowed finer visual distinction at distance, which mattered for games with ranged combat or navigation. Level designers who had built for software rendering's performance constraints began designing environments with more visual complexity, more geometry, and longer draw distances than CPU-bound rendering could have handled. The GPU's introduction was not just an improvement in existing games. It created the conditions for a different kind of game.