Aah finally, a new DirectX. It's funny 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 it with more complex shaders and a few new tricks like tesselation. 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 now can make use of it. This really is a revolutionary step in development, as parallel processing can be really helpful in specific situations and this 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 renderingMuch 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 now handle all the data completely threaded. And that means better overall performance.
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 will take 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).
I just touched order independent transparency (OID) and quickly wanted to show you that feature through a little video.
Now ATI will very likely release this footage at high quality somewhere this week, but I made a recording of an OTD technology demo. The quality is poor as it is recorded HD camera footage from a regular monitor. But you'll get the idea, in this demo we'll use a "Mech" and apply the OID technology (Proper rendering of sorted transparent geometry). Look closely at how you can see through objects like that Mech as it where a 3D X-ray. You can actually use this feature in smoke, fire, hair, foliage, fences, grates and so on. In this particular demo DirectCompute is utilized to enable single pass transparent pixel sorting
Some stats: the environments is build out of of 343 thousand triangles, the Mech is built out of 262 thousand triangles.
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 ATI Radeon HD 4000 Series graphics cards will actually fall into the Compute Shader 4.1 profile, bringing more functionality to developers, these are DirectX 10.1 class products.
NVIDIA will benefit from DirectCompute model 4.0 only as their GPUs are DX class 10.0.
|DirectX 11 Feature||DX10||DX 10.1||DX 11|
|Shader Model 5.0||No||No||Yes|
|HDR Texture compression||No||No||Yes|
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.