|
The GeForce 8800 GTX and GTS are the first video cards on the market to fully support DirectX 10 Shader Model 4 in Microsoft Vista, as there will not be a DirectX 10 for Windows XP. Microsoft will 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.
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.
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. Stream out allows the graphics card to output the pixel or vertex shader information directly to the memory, allowing faster access time.
State Objects have been redefined for DirectX 10. In DirectX 9, state objects were defined for virtually every stage of the graphics pipeline. In DirectX 10, there are five state objects: InputLayOut (vertex buffer layout), Sampler, Rasterizer, DepthStencil and Blend. These take the place of various pipeline stages, allowing one draw call when many were required before.
Constants are predefined values used as parameters in shader programs. For example, the 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 updating. Constant Buffers allow for up to 4096 constants to be stored in a buffer that can be updated in one call saving computation time.
Here’s a chart of the resources in DirectX 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 |
The Geometry Shader is a shader that allows the graphics card to create geometry. 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.
DirectX 10 hardware can also do Physics Shading. Physics is normally done on the CPU. With most CPUs, the number of onscreen objects bouncing around, the number of particles being displayed on the screen etc is limited by the CPU. The GeForce 8800 can do Physics Shading to alleviate the burden on the CPU and move it to the graphics card. The Havok Physics engine and the Physics Shader in DirectX 10 allow the physics to be done on the graphics card and the CPU together. 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. |