With the GTX 400 series graphics cards, NVIDIA supports DirectX 11. It's interesting how most game developers skipped DX10 really. Face it, if there are not enough changes over DX9, then why should software houses invest in a new code path and thus spend extra money on development? This literally was a problem with DX generation 10.
Next to that add the stupendous limitation from Microsoft to limit DX10 to Windows Vista only. Probably the most horrendous call Microsoft ever made for an operating system.
Good news though, DirectX 11 is an extensive step upwards for both developers and gamers. Developers can speed up their games and improve them with more complex shaders and a few new tricks like tessellation. Gamers on their side can have faster running games with some really cool new eye candy. This is the new shader palette for developers to use: Vertex, Hull, Domain, Geometry, Pixel and Compute Shaders. With the compute shader comes DirectCompute as well, allowing Windows Vista or Windows 7 to utilize the GPU directly from within Windows. It's a first step but quite a number of applications that would benefit from GPU computing, can now make use of it. This really is a revolutionary step in development, as parallel processing can be really helpful in specific situations and software.
Here are the most prominent new features of DirectX 11 (and I'm keeping this as simple as possible) that will effect you directly:
- Shader model 5.0
- DirectCompute 11 - Physics and AI
- Hardware Tessellation
- Better shadows
- HDR Texture compression
Let's highlight and discuss the five more important features that will effect you the most.
Multi-threaded renderingThough not a totally new feature, much like modern day applications and processors, it is now possible to fire off code and datasets directly towards the GPU multi-threaded, we call this multi-threaded rendering. Your gain here is efficiency. If an instruction or shader has to be queued up (single threaded) that creates latency, a delay. The GPU as such can handle all the data completely threaded. And that means better overall performance and efficiency.
Think of a hundred cars that have to move over a single lane road from point A to B.
Now imagine a hundred lane road where all hundred cars have a lane available.
Which approach do you think would get all cars to point B the quickest? Exactly. I'll probably receive a few emails from programmers and developers for this oversimplified explanation though. Fact is, and this you need to remember with multi-threaded rendering, DirectX 10 and 11 will take much better advantage of all the available processing cores.
Another new feature in DirectX 11 I find very exciting is DirectCompute. It allows Windows 7 and Vista developers to make use of the parallel processing power of modern video cards; software developers will have access to the GPU and can use it to help out the system processor with tasks that involve say, high-quality video playback or high performance transcoding.
In its most simple explanatory form, DirectCompute allows access to the GPU for Stream Computing (acceleration, post processing, whatever). As such, DirectCompute allows for more easy access to the GPUs many cores for parallel processing, thus utilizing the GPU for stuff other than gaming. Examples here are Stream Computing, transcoding videos over the GPU (which is something we'll be testing today as well later on, in this review).
What about games you ask? Well, you could implement and use DirectCompute 11 for image processing and filtering (post processing), order independent transparency (really cool feature where you could see through an object like it was made out of glass), shadows rendering, physics, Artificial Intelligence and sure... Ray Tracing as well (though very limited).
Where will DirectX Compute Shaders be used first? Well, it seems like the optimization and enhancement of post processing routines may well be an area that sees an immediate benefit. Compute Shaders is another area of functionality where DirectX 10 and DirectX 10.1 graphics processors will gain benefits under the DirectX 11 runtime.
The DirectX 11 API doesn't just have specifications for Compute Shaders 5.0, but also 4.1 and 4.0 and as such last generation graphics cards will actually fall into the Compute Shader 4.1 profile, bringing more functionality to developers, these are DirectX 10.1 class products.
Shader model 5.0
DirectX 11 also introduces Shader Model 5 for High Level Shader Language (HLSL), providing a better way for graphics programmers to implement shader programs. It adds double-precision support, which allows programmers to tackle shader specialization with polymorphism, objects, and interfaces.
We could go horribly in-depth on Shader Model 5.0 but it would be too far-fetched. Better, more and longer shaders is what you need to remember.
But let's talk about what probably is one of the most exciting features of DirectX 11, Hardware Tessellation.