At this year's Intel Developer Conference and Nvidia's Maxwell Editor's Day, Microsoft were busy banging the DirectX 12 drum. They were demonstrating its CPU efficiency boosts as well as talking up the new rendering features they're implementing to show off the latest GPU hardware around.
Microsoft also announced the new rendering features are also going to be part of the DirectX 11.3 API, which is being shipped at the same time as DirectX 12. That sounds great, but it also fills me with fear. Back in 2007, DirectX 10 was exclusive to Vista, leaving popular Windows XP in the dust. The same thing could happen with Windows 7 and DirectX 12.
Microsoft wasn't talking about which versions of Windows DirectX 12 would land on when it showed off the API, but it was talking about some impressive new features.
The principal development lead for Direct3D, Max Mullen, must have thought I was stalking him. Sat in the front row for his talk at IDF in San Francisco, I was scribbling down notes about frighteningly complex coding paths that my feeble mind could scarcely compute, and then the following day I'd tracked him down to Monterey at Nvidia's Editor's Day covering the new Maxwell graphics cards (opens in new tab) .
The new DirectX 12 API is set to really revolutionize the way developers code their games for the PC. The improvements to CPU overhead efficiency and boosted scalability across multiple cores are going to do great things for us folk with multi-core processors (y'know, all of us) and that's something Intel itself is eager to support.
Speaking to Intel representatives last week they told me: “It used to be pretty difficult to do multi-threading. It's been what, ten years now, we've been trying to drive multi-threading. The tools are a lot easier now, it's a lot easier to manage the different things going on in codes. DX12 is structured to allow easier segmentation of your code so that you can do multi-threading.”
DirectX 12's efficiency benefits are going to do great things for small form factor machines (a growing segment in PCs) and mobile gaming too.
The balancing act that DX12 can do between CPU and GPU load, demonstrated by the asteroid demo Intel and Microsoft were showing at both SIGGRAPH and IDF (opens in new tab) , means that the API is able to determine when the GPU needs the most power and can cut back the CPU when it's not being needed.
This means you can dial back the CPU cooling as the chip's not being so heavily used, greatly reducing fan noise, and that also means in the mobile world your processor isn't chewing through your precious battery life so quickly.
At Nvidia's Editor's Day though the focus, obviously, was on graphics performance. In particular on a set of new rendering techniques that are being introduced to the next generations of the Direct3D family of APIs.(opens in new tab)
McMullen introduced four new rendering features - rasterizer ordered views, typed UAV load, volume tiled resources and conservative rasterization. The reason these were being first spoken about at an event demonstrating Nvidia's latest graphics architecture is because they link directly in with new graphical effects they're both hoping developers take on board.
The first technique, rasterizer ordered views, is very much like the Direct3D extension Intel introduced last year, Pixel Sync (opens in new tab) . They both allow for order independent transparency, a tricky thing to reproduce in real-time gaming, and that means we'll get cheaper and more effective blended textures and complex transparent objects - hopefully including smoke effects.
Volume tiled resources and conservative rasterization both lead into the new voxel-based lighting system, VXGI (Voxel Global Illumination), that Nvidia has introduced with their new Maxwell GPU architecture.
That's a method of lighting a scene based on light rays bouncing off surfaces. To be able to function in real-time on a GPU it only calculates the first bounce, but it leads to incredibly accurate lighting models.
VXGI looks like being an important step on the path to genuine real-time ray-tracing. You can read more about it here .
It was first researched by Nvidia engineers back in 2011, but with the combination of work Microsoft has been doing with Direct3D 12 and the new hardware acceleration that the GTX 980 is going to enable, it's finally going to be usable on a desktop PC rather than a hulking great workstation.(opens in new tab) (opens in new tab)
VXGI basically converts a scene into voxels, surrounding the images in large boxes, and then calculates how light moves and reacts through those boxes. The twin benefits of volume tiled resources and conservative rasterization allow this voxelisation of a scene to be done quicker, cheaper and with a greater degree of accuracy.
This voxelisation isn't actually rendered out to the display though, so you wont see Witcher 3 rendered as a set of boxes for example, but it will use the lighting data to create incredibly accurate lighting models.
These new features aren't restricted to DirectX 12 though.
“The reason we're doing this really is Direct3D 12 is an awesome improvement in the ability to render rich, immersive scenes with lots of objects,” explained McMullen, “but not every game actually needs the CPU overhead reduction or the scalability across cores. Direct3D 11 has been, and is, a great API for a large number of games, and will be for the next few years.
"If you're not CPU limited, chances are you are GPU limited. If you look at the history of hardware features, they tend to do two things. They either enable new scenarios that were never possible before, or they greatly increase efficiency in what you're already rendering. That's exactly why we're bringing these new rendering features to 11. If your game still fits the CPU profile of D3D11, but you need more GPU perf you'll get it with the new hardware features.”
So we'll get all this new graphical goodness dropped into DirectX 11.3 when that's released alongside DirectX 12 next year. On the surface that sounds great and fingers crossed it's only happening so existing DirectX 11-coded games will be able to leverage their benefits.
But my concern is that it will more easily enable Microsoft to limit DirectX 12 support to either Windows 8 or 9, cutting out the hardcore Windows 7 fans, in order to encourage them to upgrade.
If Windows 7 is limited to DirectX 11.3 with DirectX 12 being restricted to later versions of Microsoft's operating system there's going to be a lot of upset PC gamers out there.
Here's hoping that's not the case.