As the release of DirectX 11 application programming interface (API) and supporting hardware and software approaches, more details regarding the benefits they both bring as well as certain peculiarities transpire. While no people involved into development of next-generation games would disclose which features next-generation titles utilize, educated guesses may shed some light onto some usage models of DX11 API.
The First Three Things to Do with DirectX 11
According to Richard Huddy, senior manager of software developer relations at ATI, graphics business unit of Advanced Micro Devices, game developers can easily boost performance of their next-generation titles by implementing certain DirectX 11 capabilities. In addition, by utilizing some of the features of the new API, they can tangibly improve visual appeal of their future games.
“If I was making a decision about [which DirectX 11 features to implement first], I would go for three things fairly quickly,” said Mr. Huddy.
Those things are, apparently, multi-threading support, compute shaders and tessellation.
Multi-Threading: +20% Performance
“As soon as I got hold of DirectX 11 API from Microsoft and Windows 7 beta, which they’ve had for a considerable amount of months now, I would add multi-threading support through the use of Display Lists because that can guarantee me a speed up in almost any application I can think of. Typical benefit is going to be around 20%, but I expect a large variation of that; the variation it can be north of 50%,” explained the developer relations specialist.
What is even more important, software developed with DirectX 11 Display Lists in mind would work faster on every hardware that is compatible with Windows 7, provided that there are appropriate drivers for graphics cards.
“That would be attractive to game developers since that would not require that I have DirectX 11 hardware at hand: the use of Display Lists will give a benefit on any Windows 7 hardware, which includes DirectX 9, DirectX 10, DirectX 11 hardware, once AMD, Nvidia and others ship appropriate drivers that offer the acceleration,” said Richard Huddy.
Post Processing: +25% Performance
“Then I would go for compute shaders, for the low-hanging fruit: I would do things like post-processing, physics, AI, or maybe running particle systems. But the easiest thing to do is to take all the post-processing and bundle it all up into a compute shader, the way it handles [data] transactions is more efficient, said the developer relations chief.
Presently post-processing effects, such as motion blur or depth of field, are done using pixel shader, which may not be very efficient in terms of performance since pixel shaders still depend on the graphics pipeline and require data transfer, usage of texture instructions loads of memory reads and so on. Since compute shaders are independent of the rendering pipeline and require far less of data transactions, texture reads, etc., implementation of post-effects using them may be substantially faster.
“At the moment post-processing is done using pixel shaders and it can be quite hard to get the efficiency out of the hardware. So, we think compute shaders are going to give significant performance win in that specific area of code. Typically we see that post-processing costs from 10% to 25% of frame time (depends on post-processing),” explained Mr. Huddy.
It should be noted that compute shaders 4.0 and 4.1 supported by existing ATI Radeon and Nvidia GeForce graphics cards, therefore, as they have many limitations, may not work as fine as compute shaders 5.0 when it comes to post-processing and similar usage. Therefore, Richard Huddy does not expect CS 4.x to become popular, especially keeping in mind that those, who buy leading-edge hardware, are more likely to acquire the latest game.
ATI has already demonstrated DirectX 11-capable hardware, therefore, at least select game developers already have ATI Radeon HD 5000-series graphics cards at hands.
Tessellation: When Performance Meets Quality
Tessellation is not exactly a performance boosting feature, but it can generate highly-detailed objects using less resources than using traditional technology; therefore, either game developers will be able to offer better graphics, or they will be able to render existing graphics with higher speed.
“After the post-processing work, I would probably switch to tessellation. I would use […] patch approximation to smooth out jagged objects, things like pipes, which are supposed to have smooth form, use N-patches there. Or I will be even more aggressive and take something like parallax occlusion mapping, which is a rather attractive kind of trick for improving the quality of pixels within an object. I would instead extrude the geometry and load a parallax occlusion height map and then would generate much improved silhouettes using the tessellator,” said Mr. Huddy.
Obviously, to use tessellation, developers will have to rely on DirectX 11 or, at least, hardware with tessellation support. Still, tessellation is a yet another advantage of DX11.
More to Come!
There are a lot more things to implement, though, to boost performance of future games. One of them is HDR compression.
“If I had a spare day and HDR, then I would conduct HDR effects into Microsoft’s new format because that be twice compact that way.
Important notice: Richard Huddy is a specialist who recommends game developers to implement certain features and helps programmers to implement those technologies in the most efficient way. Nevertheless, by no mean should his answers be considered as opinion of game developers in general and should be treated as his own outlook.