Regardless, the final DX9 specification determines, in large part, the actual capabilities of the two truly DX9-compliant chips due on the market this year: ATI's R300 and NVIDIA's NV30. In fact, the DX9 spec is so specific and calls for so much added computational power, there are vast areas of overlap in the new capabilities of these two chips. I've spent a fair amount of time combing through both public and non-public presentations from ATI and NVIDIA and quizzing engineers from both companies, and I have been able to pinpoint some key differences between R300 and NV30. But it wasn't easy. Nearly every time I thought I found a chink in the armor of the R300, an additional clarification from an ATI engineer would assuage my concerns. The NV30 is a little tougher to gauge. NVIDIA has been helpful in answering my questions, but they aren't talking about all the chip's specifics just yet. For the most part, these chips will differ in implementation more than in features. Likely common features I want to talk about the differences between the chips, because they aren't entirely trivial, but we should start with a look at DX9-class capabilities the chips ought to—at least as a baseline, if all goes as planned—have in common. DirectX 9 is a complex beast, but its highlights include: More precision everywhere — The watchword for DX9 is precision, as you might have gathered by now. DX9 calls for larger, floating-point datatypes throughout the rendering pipeline, from texture storage to pixel shaders, from the Z-buffers to the frame buffers. 128-bit floating-point color precision is the most complex color mode, but the DX9 spec calls for a range of color formats, including 32, 40, and 64-bit integer modes (with red, green, blue, and alpha channels of 8:8:8:8, 10:10:10:10, and 16:16:16:16), plus 16 and 32-bit floating-point modes. The additional precision will, of course, help with color fidelity and dynamic range, but it will also help with visual quality in other ways. For example, depth-handling errors will be dramatically reduced with the addition of floating-point Z buffers. Bump mapping elevations will increase (and quantization error will be reduced) with added precision for normal maps. Pixel shader 2.0 — DX9 pixel shaders will take steps toward general programmability while exposing more detail about a chip's underlying capabilities. Since high-level shader languages may compile to DX9 API calls, these changes make sense. At the same time, DX9 pixel shaders will offer floating-point precision. These new pixel shaders incorporate a number of powerful vector and scalar instructions, including log, exponent, power, and reciprocal. DX9 pixel shaders should be able to intermix as many as 32 texture address operations and 64 math operations arbitrarily. That is, they will be able to execute 32 address and 64 math operations in a single rendering pass, without having to resort to multipass rendering. With this kind of power, reasonably complex shader effects should be possible in only one or two passes. Vertex shader 2.0 — Vertex shaders aren't as dramatically improved in DX9 as pixel shaders, but they do gain one powerful improvement: flow control. In this iteration, vertex shaders gain the ability to handle vertex programs with jumps, loops, and subroutines. Vertex shader units will add more registers and constants in order to make that happen. Improved flow control will allow for much more efficient vertex programs that reuse code and the like. Higher-order surface handling improvements — DX9 adds several new tricks to its arsenal here. Displacement mapping is similar to bump mapping, but it actually modifies the geometry of an object, adding real polygon detail. Bump mapping just fakes it with lighting. Microsoft is working on tools to take a high polygon model (say, for a game character) and generate a a low-poly model and a displacement map for it. When mated up again on the other side of the AGP bus, these two elements could create a high-poly model yet again—much more efficient than sending the whole high-poly model over the bus. DX9 also brings adaptive tessellation to displacement maps and other models, and does so with floating-point precision. This ability to cut out unneeded polygon detail as objects move away from the viewer will allow more complex scenes to be rendered faster. Multiple render targets — Chips should be able to perform pixel shader operations on multiple color buffers at once. ATI has demonstrated this ability on the R300, rendering several copies of a race car model with several different colors of paint but the same, shiny gloss. Improved gamma correction — Now that the pixel pipeline is more precise, DX9 includes some provisions for handling gamma correction properly, at least in the pixel shaders. Better gamma handling will help with tuning output brightness while preserving dynamic range. All of these impressive capabilities should be present in DX9-class graphics chips. Individual implementations, of course, will vary in their scope, quality, and performance. ATI demonstrated many of these features live on the Radeon 9700 at its launch. Contents copyright © 1999-2002 by The Tech Report, LLC. All rights reserved. All trademarks used are property of their respective owners. News comments and forum posts remain property of posters.