The Main Differences
In the previous page we listed all DirectX versions that have already been launched, but we did not explain the difference among them. For instance, what makes the DirectX 7 better than the DirectX 6?
In general a new version is launched to permit the system to recognize the most modern features of the graphic chips, so it can use these features in case your video card have them, increasing both the 3D performance of the machine and the image quality.
DirectX 6 brought as its main innovation the resource of environment mapped bump mapping. With this resource it is possible to create imperfections on the surface of 3D object more easily, making them more realistic.
Since the GeForce256, graphic chips started to make part of the necessary calculations for the generation of three-dimensional objects, a task that was previously exclusive of the system processor. These stages are for transformation and lightning, abbreviated as T&L. DirectX 7 was launched to recognize this feature and to transfer the stages of transformation and lightning from the system processor to the graphics chip. DirectX 7 graphic chips include all GeForce 2, GeForce 4 MX, GeForce MX, GeForce PCX 4300, Radeon 7000, Radeon 7200, and Radeon 7500 series.
With DirectX 8 two new features now very well-known became available, making 3D images much more realistic: Pixel Shader and Vertex Shader. 3D Objects are created using hundreds or even thousands of polygons, such as triangles and squares. Over those triangles or squares texture are applied (surfaces) or colors, forming the three-dimensional object. With Vertex Shader the 3D program is capable of changing the characteristics of each vertex of each object polygon. With Pixel Shader the program is capable of changing the characteristics of each pixel (dot) of each polygon. Before those resources existed, the change of those characteristics was not possible, in other words, it was only possible to change the characteristics of the whole polygon, which affected all its points at the same time. Thus, with these two new features the images became much more realistic, for each point of each polygon became programmable.
DirectX 8.0 allowed Pixel Shader to be programmed with up to 12 instructions at a time. This limit was considered insufficient and soon DirectX was reviewed for the 8.1 version, to allow the use of 22 instructions at a time. Graphic chips based on this model include GeForce 3, GeForce 4 Ti, and Radeon 8500, Radeon 9000, Radeon 9100, Radeon 9200 and Radeon 9250.
To enhance the performance and the increase the quality of three-dimensional objects, DirectX 9.0 was launched supporting Shader 2.0, where Pixel Shader can use up to 96 instructions at a time. Several graphics chips use this model, as those from the GeForce FX series and the ones from the Radeon 9500 through 9800 series and Radeon X300 through X800 series.
Shader 3.0 was introduced with DirectX 9.0c and permits the use of up to 65,535 instructions at a time. Graphics chips that are based on this version are GeForce series 6 (e.g., GeForce 6600, 6800, etc) and 7 (e.g., GeForce 7600, 7800, etc) and Radeon series X1000 (e.g., Radeon X1600, X1900, etc).
DirectX 10 brought Shader 4.0 model. This model brought an important change in the architecture of graphics chips. Up to DirectX 9.0c-based graphics chips, the chip has separated processing units for processing pixel shaders and vertex shaders. In some circumstances all pixel shader units were being used, the vertex shader units were idle and new pixel shader instructions needed to wait, because all pixel shader processors were busy, even though the vertex shader processors were idle. On DirectX 10-based graphics chips the processing units are generic and can be used to process any kind of information, solving the problem we’ve just explained: on DirectX 10-based video cards instructions need to wait only when all processors are busy, regardless of the kind of instruction. This architecture is called Unified Shader Architecture. DirectX 10 also introduced a new shader type, geometry, and other features to transfer more processing from the system CPU to the graphics chip. An in-depth explanation of all main new features introduced by DirectX 10 can be found in NVIDIA’s DirectX 10 technical brief.
Graphics chips that are based on this architecture include GeForce series 8 (e.g., GeForce 8600, 8800, etc), 9 (e.g., GeForce 9600, 9800, etc) and 200 (e.g., GeForce GTX 260, GTX 280) and Radeon HD 2000 series (e.g., Radeon HD 2600, HD 2900).
You can see below the main differences between DirectX 9 and DirectX 10.
|Resources||DirectX 9||DirectX 10|
|Constant Registers||256||16 x 4,096|
|Maximum Texture Size||4,048 x 4,048||8,096 x 8,096|
In the table below you see a comparison between shader models 1.0 (DirectX 8.1), 2.0 (DirectX 9.0), 3.0 (DirectX 9.0c) and 4.0 (DirectX 10).
|Shader 1.x||Shader 2.0||Shader 3.0||Shader 4.0|
|Vertex Instructions||128||256||512||65,536 *|
|Pixel Instructions||4+8||32+64||512||65,536 *|
|Vertex Constants||96||256||256||16 x 4,096 *|
|Pixel Constants||8||32||224||16 x 4,096 *|
|Vertex Temps||16||16||16||4,096 *|
|Pixel Temps||2||12||32||4,096 *|
|Vertex Textures||–||–||4||128 *|
|Pixel Textures||8||16||16||128 *|
|2D Texture Size||–||–||2,048 x 2,048||8,192 x 8,192|
|Vertex Flow Control||–||Static||Static/Dynamic||Dynamic *|
|Pixel Flow Control||–||–||Static/Dynamic||Dynamic *|
* As DirectX 10 implements unfied architecture, this number is the total for the whole unified architecture and not for this individual spec.
DirectX 10.1 brought small enhancements. Currently only video cards from Radeon HD 3000 (e.g., Radeon HD 3450, HD 3870, etc) and HD 4000 (e.g., Radeon HD 4850, HD 4870, etc) families are based on DirectX 10.1. The slide below summarizes the differences between DirectX 10 and DirectX 10.1. Further information can be found on AMD’s DirectX 10.1 whitepaper.
We summarize all DirectX versions in the table below.
|DirectX 6||Environment mapped Bump Mapping|
|DirectX 7||Transformation and Lightning in the graphic chip|
|DirectX 8||Shader 1.0, 1.1 and 1.2|
|DirectX 8.1||Shader 1.3 and 1.4|
|DirectX 9.0||Shader 2.0|
|DirectX 9.0c||Shader 3.0|
|DirectX 10||Shader 4.0, Unified Shader Architecture|
|DirectX 10.1||Shader 4.1|
You can learn what DirectX version your video card is based on by taking a look at these two other tutorials: