Although DirectX 11 is scheduled for release in conjunction with the next-generation Windows operating system, it’s not as far away as you’d first think. Kev Gee said the company is planning to release a preview of the new API as early as November this year – that’s just a few short months away. When that arrives, the playing field will be a lot clearer and the specs will be much closer to being finalised.
Gee gave a quick glimpse at some of the other improvements scheduled to make it into DirectX 11, but there’s every chance that some of these might be removed. I think it’s safe to say the main features we’ve talked about today will
be in D3D11, but those that we haven’t discussed in detail are probably still on the waiting list.
Because of this, it’s hard to make any sweeping judgements on those additional features at this early stage. However, we can talk about the features that are all but 100 percent confirmed – things like Tessellation, the Compute Shader, and multi-threading in particular.
Collectively, these are big plusses for DirectX 11 and they will enable developers to take games to the next level
. Tessellation has the potential to help remove things like pop up, where characters and terrain constantly switch from low detail models in the distance, to medium detail and then to high detail when they’re very close to your character. It will allow developers to calculate a continuous level of detail with many incremental steps right from immediate surroundings to a long way into the distance – this will inevitably help to make games feel more immersive once developers have started to get to grips with using tessellation.
The good thing is that developers already have tessellation hardware available to them in the Xbox 360 and they can use it in shipping titles. It’s not quite that simple with the tessellation unit in AMD’s discrete GPUs though – but it’s not through fault of AMD, it’s more down to the fact developers would only be developing for part of the market, and we’ve already seen how hard it has been for AMD to get developers to use DirectX 10.1 in their games. What the Radeon’s tessellation unit does do though is enable developers to play around with tessellation on the PC and it will also give them an idea of how code is going to port from Xbox 360 to PC, as commercial reality dictates that the Xbox is more than likely the primary platform for most developers these days. The fact of the matter is that it also strengthens Microsoft's foothold in the next generation
of consoles too, because the likelihood is that it will further strongly correlate the Windows gaming platform to the Xbox one and allow for even easier cross-platform development and great cost efficiency for developers.
Multi-threading is also a welcome and much-needed addition to the API – the best thing about it though has to be the backwards compatibility, subject to driver updates from the hardware vendors, with DirectX 10 hardware. This will likely really benefit multi-GPU setups, because they’re often CPU limited – being able to queue up draw calls on multiple CPU cores makes a lot of sense in that respect. However, what’s worrying about that is the potential for even more
multi-GPU products – I really hope that, at some point, we can get the scaling we as customers deserve from these double-chipped cards all the time
The Compute Shader, on the other hand, is something we’ve seen already in both AMD’s and Nvidia’s hardware – it’s basically the ‘other’ mode that today’s GPUs can operate in. However, what DirectX 11 does is formalise and standardise the industry’s push towards using the GPU to accelerate massively parallel applications, while also adding the next level of realism into 3D games.
We’re already starting to see that with middleware like PhysX and Havok and the work that companies like Natural Motion are doing to improve character physics and AI also has the potential to be ported into the Compute Shader. Realistically, although CUDA in particular has raised GPU computing’s awareness, it’s APIs like DirectX and OpenCL that are likely to stand the test of time. Of course, CUDA—and AMD’s CAL—will still remain, as the APIs will likely just sit on top of the current architectures.
Speaking to Richard Huddy, AMD’s Worldwide Head of Developer Relations, last week prompted me to quiz him about how he felt industry standards like DirectX 11 and OpenCL would be accepted by the scientific market (and the wider market as a whole).
“I think that once DX11 arrives it will be perfectly practical for scientific apps to be based on the Compute Shader – and I’d guess quite a lot of work will take place there,” said Huddy. “But (at present) my personal view is that OpenCL is likely to be the most useful place for this work. I think games developers will almost exclusively use the CS in DX11 since inter-operability will likely never prove to be a problem.”
“It seems likely that OpenCL will arrive maybe as much as a year ahead of DX11 and for engineering work that doesn’t need simultaneous access to a 3D graphics API it should be a great place to develop,” he continued. “OpenCL is so close now that our Stream SDK, CUDA and any other proprietary solutions will start to take a back seat very soon. Open standards are always a better place for developers to be...”
“Both [DirectX 11 and OpenCL] will allow portable code – and, at the current rates of hardware advancement, portability has to be a huge issue for anyone spending significant sums on development. It doesn’t make much sense to me to write an app for one specific GPU knowing that this GPU will be seriously superceded in only a few months or at most a year,” Huddy added.
Although I didn’t manage to get a specific response from Nvidia, the sources I spoke to about DirectX 11 seemed to agree with Huddy’s assessment – they believe it is a case of Microsoft (and technically the industry as a whole) legitimising the effort put into developing CUDA.
With that said, it’s worth bearing in mind that some industry luminaries, including Epic’s Tim Sweeney
, believe that the API is dying. Sweeney, for example, wants a C++ compiler for each hardware platform with full programmability – he wants a full software renderer that runs on multiple platforms. Some of his reasoning behind this is undoubtedly related to his ability to write a great 3D graphics engine – we all know that Epic’s engines are probably the most
widely licensed 3D engines in this day and age, but it’s nevertheless interesting to see someone thinking in a different way to the rest of the industry.
An industry without APIs could be an interesting one and full developer freedom would deliver the potential for some incredible creations, but it could also harbour the potential for some incredibly bad creations as well. For now, there’s every reason to believe that DirectX 11 will become the next de-facto
programming environment for PC games.