In addition to raw hardware specifications, different generations and models of graphics processors may sport entirely different feature sets. For example, it is often mentioned that the ATI Radeon X800 XT-based graphics cards are "Shader model 2.0b" compliant, while the Nvidia GeForce 6800 Ultra is "Shader Model 3.0" compliant, even though they have similar hardware specifications (a 16-pipeline architecture). Many people will base a purchasing decision on this information without knowing what this difference actually means. Let's explore some visual features and their implications for the end-user.
Microsoft's DirectX And Shader Model Versions
These terms are probably some of the most often quoted and least often understood. To grasp their significance, a short explanation and history of Graphics APIs is in order. DirectX and OpenGL are graphics API's. The acronym API stands for Application Programming Interface, which essentially means a programming standard that is accessible to everyone.
Before 3D graphics APIs, each graphics card company had its own proprietary method of making their graphics card work with games. Developers were forced to program games with vendor-specific paths for each and every type of graphics card they wished to support. This was a very costly and inefficient approach. To solve this problem, 3D graphics APIs were created, so that developers could program their software to be compliant with the API, and not with each and every piece of hardware. The responsibility of compatibility was then shifted to the graphics card manufacturers, who had to make sure their drivers were compatible with the API.
The only complication is that there emerged two different APIs, both of which are used today. The two APIs that matter are Microsoft DirectX and the OpenGL standard, where GL stands for Graphics Library. Because the DirectX API has a much stronger influence on graphics processor hardware technology as far as games are concerned, we'll concentrate on DirectX. Also, it is more important for games these days.
DirectX is Microsoft's creation. In reality, DirectX is a collection of APIs, only one of which is for 3D graphics. DirectX includes APIs for sound, music, input devices and media, to name a few. The specific DirectX API that applies to 3D graphics is called Direct3D, but when referring specifically to graphics cards, it is generally understood that the terms DirectX and Direct3D are used interchangeably.
DirectX is periodically updated as graphics hardware technology moves forward and game developers evolve the methods they use to program games. As DirectX quickly increased in popularity and use, graphics processor manufacturers began to design their graphics processors to sync up with the newest DirectX capabilities. For this reason, graphics cards will often be described by their DirectX model version (DirectX versions 8, 9.0, or the latest version 9.0c) .
To further complicate the matter, pieces of the Direct3D API can change in smaller steps than the DirectX collection as a whole. For example, the DirectX 9.0 specification contains support for Pixel Shader 2.0. However, DirectX 9.0c contains the Pixel Shader 3.0 specification. This means that not all DirectX 9-class graphics cards support the same features; the Radeon 9700 supports Shader Model 2.0, and the Radeon X1800 supports Shader Model 3.0, even though both could accurately be described as "DirectX 9 graphics cards."
Keep in mind that developers will almost always keep owners of older hardware in mind when creating their games, because to ignore older hardware would severely limit their market. Therefore, developers usually program separate "paths" into a game to support older hardware. A DirectX 9 class game might have a DirectX 8 path, and even a DirectX 7 path, to allow compatibility. Typically, these older paths will miss visual features that newer graphics cards can display, but at least it allows older graphics cards to play the game.
Many new games will require the newest DirectX version installed to run, even if the graphics card on which the game will be run is older. A brand new game that uses only DirectX 8 technology might need the newest version of DirectX 9 to run, even on DirectX 8 class hardware.
Now that you have a basic background of what DirectX is, what are the differences between the different versions of the Direct3D API in DirectX? The early versions of DirectX - 3,5, 6 and 7 - were relatively simple affairs when it came to the Direct3D API. Developers had to mix-and-match visual effects from an unchanging list of pre-programmed effects. The biggest leap to contemporary-style graphics programming came with DirectX 8. DirectX 8 introduced custom shader programming, which allowed developers to create truly custom visual effects for the first time. DirectX 8 supported Pixel Shaders 1.0 to 1.3 and Vertex Shader 1.0. DirectX 8.1 is an updated version of DirectX 8, which supports Pixel Shader 1.4 and Vertex Shader 1.1.
In DirectX 9, the shader complexity was expanded. DirectX 9 supports Pixel Shader 2.0 and Vertex Shader 2.0. DirectX 9c is an updated version of DirectX 9 that includes the Pixel Shader 3.0 specification.
DirectX 10 is the upcoming version that will be married to the next version of windows, Windows Vista. It will not be compatible with Windows XP.