Authour: James 'caveman-jim' Prior
Editor: Charles 'Lupine' Oliver
Date: September 23rd, 2009
DirectX 11 is Microsoft's newest version of the collection of Direct APIs, consisting of Direct3D, DXGI, DirectWrite and DirectCompute and several more now deprecated, such as DirectInput.
Unveiled in Seattle at Gamefest '08, DirectX 11 is a superset of DirectX 10.1 that supports Windows Vista, Windows 7 and future Microsoft Windows operating systems. Major new features include tessellation support, improved multi-threading support, and GPGPU - a.k.a. DirectCompute - for in-game physics, AI, order independent transparency and improved post processing.
While the current trendy term for these massively powerful GPUs doing something other than rendering a display images is 'General Purpose', a more correct term would be 'application-specific' processors. Although they are orders of magnitude more powerful for specific processing tasks, they are limited in their flexibility. Multi-tasking on a GPU is difficult and, while 1GB of RAM for a graphics processor is a massive amount, no reasonably educated computer user would dream of running their CPU with only 1GB of RAM (we will pause here for the Linux and Windows 98 crowd to express their objections. All done? OK.). There are still some challenges left to make the GPU truly general purpose, which are being addressed with each generation of hardware.
DirectX 11 expands on the feature level functionality introduced with DirectX 10.1 and allows developers to unify their rendering pipeline and use API improvements on all levels of hardware, with only the newer shader models and rendering stages exposed in capable hardware.
Shader power is often talked about, but what does that mean? In 2003 we talked of pixel pipelines, which transformed common geometry in terms of vertices and meshes into the rasterized polygons to be processed by pixel shaders that gave us our final image. With the advent of DirectX 10, this became a unified shader model, combining these three separate pieces of hardware into one. These unified shaders are now programmable, to perform different operations depending on need. This has been leveraged to accelerate many previously CPU-bound tasks, such as image editing, video transcoding, and physics processing.
Multi-threading support was introduced with Vista and DirectX10. It allows multiple CPU thread's to render to the same Direct3D device, to improve performance and quality. Notice this will scale depending on the number of CPU threads available - the developer doesn't need to query how many there are, just use as many as is needed and get future performance increases as each thread can be executed in it's own dedicated resource.
content not found