The State of DirectX 11 - Image Quality & Performance
What's new in DirectX 11?
The DirectX 11 API is a superset of DirectX 10, including all of DirectX 10's features inside of it, in addition to a couple new ones. The new features are the addition of native support for tessellation, improved multi-threading support, two new texture compression algorithms, increased texture cache, Shader Model 5.0, and the DirectCompute API. Out of this list, the only features that will have any real impact on gamers are hardware tessellation, better multi-threading and the DirectCompute API. The rest will be welcomed by developers, but will have little direct impact on end users.
Support for multi-threaded processing has been implemented separately by ATI and NVIDIA for several years in their respective developer API's, allowing multi-core CPUs to communicate with the GPU in parallel. However, DirectX 11 takes this a step further, allowing for even more granular multi-threading. Now, the application, graphics driver and DirectX runtime can all run in separate threads. While this won't directly allow for any new image quality enhancements, it should result in better performance, especially moving into the future as processors become even more heavily multi-threaded.
The characters in modern games are essentially complex meshes that an artist creates using an authoring tool. The artists produce high resolution character meshes which are extremely complex. However with increased complexity comes high data and bandwidth requirements. The original high resolution characters meshes are simply too big, so the models are thinned out, reducing complexity, when they are imported into a game. This reduces the data requirements to a level that will fit within the bandwidth envelopes of currently available hardware, but at the cost of reduced detail. Tessellation is one method of getting some of that detail back. This is accomplished with procedural generation techniques right on the GPU, which neatly avoids the bandwidth problem.
The two tessellation example comparison images are from an AMD tech demo. It illustrates how tessellation can be used to greatly increase the geometry detail of a game character. In AMD's tech demo, the female character's head gear, armor and clothing are heavily tessellated, adding a significant amount of geometry detail, making the tessellated areas appear more defined with greater depth. However tessellation isn't limited to characters, it can be applied to any geometry objects in a game, including the terrain.
Tessellation has been implemented in hardware by ATI since 2001. However few developers chose to implement it in their games due to general lack of support from programming APIs and it didn't help that NVIDIA wasn't playing ball at the time. DirectX 11 changes all of that by making hardware tessellation support part of the standard. This takes away ATI's "edge" but at least there will be more titles actually implementing tessellation. It's worth noting that ATI's older hardware tessellator found in its older generation hardware is not compatible with DirectX 11, since the DX11 tessellator specification is a superset of ATI's approach.
Perhaps the biggest boon for gamers is the introduction of the DirectCompute API. Launched with DirectX 11 and now part of the DirectX family, this API provides support for general-purpose computing on graphics processing units (GPGPU). You've probably heard quite a bit about GPGPU already and perhaps know about NVIDIA's CUDA and AMD's Stream initiatives. DirectCompute is Microsoft's entry into this arena.
DirectCompute allows for more general computing processing to happen right on the GPU. This can both boost performance by offloading some processing from the CPU and allow for new graphics effects that were previously impossible or too performance intensive on a CPU. The list of applications for DirectCompute is lengthy, it currently includes artificial intelligence, ambient occlusion, physics, post-processing, ray tracing, and video transcoding, among many other possibilities. DirectCompute is also available on DirectX 10 and 10.1, though some of the features will be unavailable, reducing its effectiveness.
DirectCompute offers a lot of possibilities that will help make existing effects more efficient and new effects possible. One of the hot graphical features of the last two years is definitely screen-space ambient occlusion (SSAO). The effect has been a staple in 3D rendering for some time, but was first introduced in a game by Crysis. Ambient occlusion is a shading method that allows for more realistic light and reflection models. Another graphical effect we'll be seeing a lot of is depth of field, which attempts to approximate the way a camera lens focuses on objects. While both of these effects were possible before DirectCompute, they were very computationally expensive. Expect to see these effects, and others, much more often from now on.
Now that we've taken a look at the new features DirectX 11 has to offer, it's time to take a look at some currently available games on some currently available hardware and see if it delivers in practice.