DirectX is an often-misunderstood platform. Introduced in 1995 as a way to convince DOS game developers to move over to Windows, DirectX provided an application programming interface (API) that developers could use to access many different aspects of the graphics, sound, and input hardware, without having to program directly to the “bare metal” of each individual card or chipset. DirectX incorporated many different subsets of these APIs, including DirectSound, DirectInput, and DirectMusic, but the component that received the most changes over the years was Direct3D, which followed the rise of powerful gaming graphics cards for the PC.
Extremetech has an interview up with a couple of Microsoft developers discussing DirectX 10, the very latest in the evolution of the framework, currently scheduled for inclusion with the release of Windows Vista. The article answers many questions and paints a very exciting picture for the future of PC game development.
A few changes have been made to DirectInput in order to support the Xbox 360 controllers and peripherals. Essentially, XInput, the API used for the Xbox, was converted and now works on Windows. Apart from this and minor changes in DirectSound, the biggest changes involve Direct3D. Expanded memory and texture limits (up to 8192×8192 textures, from 2048×2048 in DX9) are just the beginning. The biggest improvements are a unified shader model, which will hopefully free developers from having to write separate code paths for ATI and NVIDIA hardware, and new features such as the Geometry Shader that can add complexity to a scene procedurally. The Geometry Shader is integrated into the drawing pipeline, and allows the programmer to take simple shapes (such as triangles or even points) and generate complex shapes around them.
Microsoft has been a big fan of procedurally-generated graphics, including features on the Xbox 360 to specifically handle these items. However, DirectX 10 goes far beyond these ideas and adds features that, according to the interview, can’t easily be done on the next-generation of consoles:
The things that we had mentioned in terms of being able to do much more data generation inside the pipeline is something that can’t be done well [on next-gen consoles], even though the consoles sort of have their unique capabilities. And then there are things like the integer instruction set that neither of the two console [graphics] processors have available.
The developers were asked if the fact that DirectX 10 will only be available on Windows Vista was merely a marketing decision. It turns out that there were actually some good technological reasons for this requirement, mostly involving Vista’s new driver model, which takes some elements out of kernel mode and into user mode for greater stability. The developers admitted that games requiring DirectX 10 (and therefore Vista) are probably still a few years away, although Microsoft is going to get the ball rolling with their Halo 2 port.
Definitely in the long term there’s a vision in how we think the applications and the runtime and the hardware need to work together. What we’ve done in Vista was to make some major changes to try to improve that. We’ve got a number of additional things we wanted to do over the next few years to try to make that even better, and it’s just hard to say, “oh well we’ll just retrofit all that into Windows XP.” That kind of put us in this position of saying, do we really want to get all these big improvements, and what do we have to give up in order to do it?
Overall it was an interesting and technically detailed article. If anyone was questioning Microsoft’s commitment to the PC gaming platform in the future, these fears should be well put to rest after reading it.