XFX GeForce 8800 GTX Video Card Review :: DirectX 10 and Shader Model 4

11-08-2006 · Category: Hardware - Video Cards

By Doc Overclock

The GeForce 8800 GTX is the first video card on the market to fully support Microsoft's new DirectX 10 Shader Model 4 in Microsoft Vista, as there will not be a DirectX 10 for Windows XP unfortunately. Microsoft will hopefully launch Vista early next year and the 8800GTX will be ready for it. DirectX 10 is a new API for Microsoft that is brand new and radically different than the last iteration DirectX 9 in a few key ways.

Early versions of DirectX had to check to see what hardware was capable of a feature like Pixel Shaders, or Hardware Transformation and Lighting, or other features, as the first iteration of DirectX didn't support these features and the hardware was limited at the time to simple texturing. To determine if hardware supported a feature, DirectX checked the hardware's "Capability bits" or Cap bits. DirectX 10 has gotten rid of caps bits, shortening the process entirely.

DirectX 10 delivers new features including a texture array, predicated draw, and stream out. Texture arrays allow the graphics card to process up to 512 textures in an array at one time. Previously this was done on the processor, thus this frees up the CPU for other tasks. Predicated draw is what was known as an occlusion query in earlier DirectX models. Basically, if an object overlaps another in a scene, the area that is covered by the other object is not rendered, saving power and enhancing performance. Stream out allows the graphics card to output the pixel or vertex shader information directly to the memory, allowing faster access times.

Constants are predefined values used as parameters in shader programs. For example, the total number of lights in a scene, along with their intensity color and position are all defined by constants. As a scene changes the constants need continuous updating. Constant Buffers allow for up to 4096 constants to be stored in a buffer that can be updated in one call saving overall computation time. State Objects have been redefined for DirectX 10 architecture. In DirectX 9, State Objects were defined for virtually every stage of the graphics pipeline. In DirectX 10, there are five state objects: Input-Lay-Out (vertex buffer layout), Sampler, Rasterizer, Depth-Stencil and Blend. These take the place of various pipeline stages, allowing one draw call when many were required before.

The High Level Shading Language of DirectX 10 has a few new features as well support for constant buffers, view constructs, Integer and Bitwise instructions, and the switch statement. DirectX 10 also adds support for Transparency anti-aliasing, shadow map filtering and using MSAA (Multi-Sample Anti-aliasing) in deferred graphics engines. The Geometry Shader is a shader that allows the graphics card to create geometry effects. Effects like stencil shadows, dynamic cube maps, and displacement mapping which in previous hardware relied on the CPU or on multi-pass rendering can be done faster with the Geometry Shader. Two new features, vertex amplification and vertex minimization are introduced. Vertex amplification allows the Geometry Shader to output 1024 vertices for every vertex fed into it. Vertex minimization outputs a lower number of vertices than input into it.

Here is a chart of the resources in Direct-X 9 and 10

Resources DirectX 9 DirectX 10
Temporary Registers 32 4096
Constant Registers 256 16x4096
Textures 16 128
Render Targets 4 8
Maximum Texture Size 4048x4048 8096x8096

DirectX 10 hardware can also do Physics Shading. Physics though is something normally done on the CPU. With most CPUs, the number of onscreen objects bouncing around and being shown, as well as the number of particles being displayed on the screen etc is limited by the CPU and its abilities. The GeForce 8800 can do Physics Shading to alleviate the burden on the CPU and move it to the graphics card. The High Level Shading Language of DirectX 10 has a few new features as well support for constant buffers, view constructs, Integer and Bitwise instructions, and the switch statement. DirectX 10 also adds support for Transparency anti-aliasing, shadow map filtering and using MSAA (Multi-Sample Anti-aliasing) in deferred graphics engines. Playing game likes Rome Total War, Act Of War and other RTS games that field a bunch of objects at one time will be able to take advantage of this new feature. I can't wait for this as my games always bog down when I have a huge army on the screen fighting a huge army of enemies. If it helps to fix that I am very eager to upgrade my OS.