Microsoft’s flight emulator
Call of Juarez
It’s pretty clear who the winner is in each category. DirectX 10 not only looks better, but also performs faster and makes everything a heck of a lot easier for developers! If you don’t think DirectX 10 is that much better than DirectX 9, just stay with DirectX 9 for a while, it’s still mostly used. Even the newest games support DirectX 9.
So why use DirectX10?
From a gamers point of view. It looks better and performs better. From a technical point of view... There are a lot of reasons.
1. DirectX 10 features a highly optimized runtime, powerful geometry shaders, texture arrays and numerous other features.
A big problem with DirectX is that is uses up a lot of CPU power. DirectX 10 really did a wonderful job in using much less CPU power.
DirectX 9 validates resources for every use. So it is validated several times at the end of the day. DirectX 10 only validates resources once. Not millions of times like DirectX 9, only once.
2. Switching between multiple textures incurred a high state-change cost.
What artist done was stitched together several small textures in one huge texture, this is known as a texture atlas. This allowed developers to use multiple textures without paying the cost of creating and managing multiple textures. The problem was that DirectX 9 only permitted a texture whose size was no bigger than 4048 x 4048. So this made that approach fairly limited. DirectX 10 has a solution for this problem. It has a new construct called a texture array. It allows up to 512 textures to be stored in an array structure. Included is an instruction that allows a shader program to dynamically index into the texture array.
3. Predicated draw no longer requires CPU intervention.
In most 3D scenes, many objects are entirely overlapped by other objects. This will mean that while the object is still calculated and drawn, it will have no effect on what you see on the screen. This is defiantly a huge waste! Advanced GPU’s have methods to detect and avoid processing of those pixels, but, like most things in life, it does not always work so great. So to avoid such a big waste, developers use a technique called predicated draw. With this technique, complex objects are drawn using a simple box approximation. If drawing this simple box has no effect on the final image, that object is simply not drawn. Previously, this was done using the CPU and the GPU. Now with DirectX 10 this process is done entirely on the GPU. Meaning less strain on the CPU.
4. More than 100 times the amount of resources available
In previous versions of DirectX, Developers had to carefully manage register resources. Thanks to the Shader Model 4.0, DirectX 10 provides much much more resources.
The amount of temporary registers has increased from 32 to 4096.
Constant registers from 256 to 65 536.
Textures from 16 to 128.
Render targets from 4 to 8.
Maximum texture size from 4048 x 4048 to 8096 x 8096.
Now what does this mean? It means better graphics ofcourse! With much less trouble!
5. Speed is also greatly increased.
Some features could be more than 10, or even 100 times faster. And I’m not exaggerating!
6. New High Dynamic-range rendering formats
HDR became popular thanks to the support of floating point color formats in DirectX 9. This however, does take up more space than integer representation. DirectX 10 has two new HDR formats that offers this at half the storage! Won’t go into that too much, that’s getting way to technical!
High Dynamic Range formats, new algorithms and many many more which is sure to make the programmers life much easier and the result hundreds of times better.
I think I said enough to make you consider using DirectX 10 over DirectX 9!
With technology growing as fast as it is, there might not be that much more of a future. Research shows that computers average speed doubles every 12 – 18 months. We are only a few years away from photorealistic real time graphics. We are pretty damn close to it! Photorealistic images can be rendered in less than half a second on professionals PC. Actually, it is speculated, that there might only be nine generations of consoles. We are currently in the eight. Technology is growing so fast that at this rate, in 5 or 6 years when new console models are released, the technology will be so good that there will be no need for upgrading! That would be really interesting to see!
I think that’s too far in the future! The above is 5 – 8 years in the future. 1 – 3 years in the future, we have, bigger, better, faster games. DirectX 11 is already released! Though it is not that popular, I think we are still migrating to that. I won’t go in detail with DirectX 11 though. Maby in a later article I might talk about DirectX 11.
As far as I have heard, DirectX 12 isn’t even in development yet. So it looks like we are going to have to wait a while to see what the future holds.
In the previous article I have explained to you what DirectX is, it’s main components and it’s history. In this article I gave you a technical brief of DirectX from a developers point of view, comparison shots and finally some information about DirectX 11. You now have a wealth of information, so go out there and show off your superior smartitude!
DirectX 10 Technical brief from Nvida
Several professional game programmers