Microsoft's DirectX 12 Ultimate Standardizes Technologies Introduced in Nvidia's GeForce RTX Graphics Cards
Microsoft is bringing gamers DirectX 12 Ultimate, a new version of the graphics technology underpinning both Windows and the upcoming Xbox Series X.
When gamers purchase PC graphics hardware with the DX12 Ultimate logo or an Xbox Series X, they can do so with the confidence that their hardware is guaranteed to support all next generation graphics hardware features, including DirectX Raytracing, Variable Rate Shading, Mesh Shaders and Sampler Feedback.
To further empower game developers to create games with stunning visuals, Microsoft enhanced features that are already beginning to transform gaming such as DirectX Raytracing and Variable Rate Shading, and has added new major features such as Mesh Shaders and Sampler Feedback. DX12 Ultimate brings them all together in one common bundle, providing developers with a single key to unlock next generation graphics on PC and Xbox Series X.
Microsoft also announced that its PIX graphics optimization tool and its open-source HLSL compiler will provide game developers with the ability to squeeze every last drop of performance out of an entire ecosystem of DX12 Ultimate hardware.
Microsoft says that DX12 Ultimate will not impact game compatibility with existing hardware which does not support the entire breath of DX12 Ultimate features. In fact, next-generation games which use DX12 Ultimate features will continue to run on non-DX12 Ultimate hardware. Though such hardware won’t provide the visual benefits of the new features, Microsoft says that it can still provide "a very compelling gaming experience on next generation games, depending on the specifics of the hardware."
By unifying the graphics platform across PC and Xbox Series X, DX12 Ultimate serves as a force multiplier for the entire gaming ecosystem: when Xbox Series X releases, Microsoft says there will already be many millions of DX12 Ultimate PC graphics cards in the world with the same feature set, catalyzing a rapid adoption of new features.
AMD support
AMD, in partnership with Microsoft we will provide full support for DirectX 12 Ultimate in the upcoming AMD RDNA 2 gaming architecture.
With this architecture powering both the next generation of AMD Radeon graphics cards and the forthcoming Xbox Series X gaming console, AMD has been working with Microsoft to help move gaming graphics to a new level of photorealism and smoothness thanks to the four key DirectX 12 Ultimate graphics features -- DirectX Raytracing (DXR), Variable Rate Shading (VRS), Mesh Shaders, and Sampler Feedback.
AMD says that DXR adds a new level of graphics realism to video games previously only available in movies, and AMD has collaborated with Microsoft on the design of DXR 1.1, an update to DXR that can deliver better efficiency and performance in many raytracing effects.
Support for hardware-accelerated DXR 1.1 raytracing with AMD RDNA 2 architecture will allow both PC and console gamers to experience next-level visuals in games that support DirectX 12 Ultimate. To give you a taste of the photorealistic realism DXR raytracing will enable, AMD put together a preview of what you can expect:
With this new common graphics standard for both PC and consoles, gamers can expect to see advanced effects like raytracing come to more games sooner. In addition, DirectX 12 Ultimate will make developers’ lives easier, allowing them to develop games using the same common graphics API and graphics architecture for both PCs and consoles.
Nvidia's support
In 2018, GeForce RTX graphics cards launched with numerous ‘world’s first’ graphics technologies: hardware-accelerated ray tracing, Variable Rate Shading, Mesh Shading, and more. Microsoft's new graphics API codifies GeForce RTX’s technologies as the standard for multi-platform, next-gen games.
Many developers have already crafted next-gen experiences featuring these technologies--there are over 30 DirectX Ray Tracing games shipping or announced--and now with the launch of DirectX 12 Ultimate, adoption of them is set to increase rapidly.
At the heart of DirectX 12 Ultimate is ray tracing, which realistically simulates the path of light in a scene, enabling lighting, shadow, and reflection effects only previously possible in blockbuster movies. DirectX 12 Ultimate brings with it a new update to DirectX Raytracing (DXR), version 1.1, which makes ray tracing even more efficient for developers to implement.
With hardware and software pioneered by Nvidia, the company has helped bring ray tracing to Battlefield V, Call of Duty: Modern Warfare, Control, Metro Exodus, Shadow of the Tomb Raider, and others. And Nvidia is working to bring ray tracing to anticipated blockbusters such as Cyberpunk 2077, Minecraft with RTX, Watch Dogs: Legion, and Vampire: The Masquerade - Bloodlines 2, to name a few.
Nvidia says that the new games will look and run best on GeForce RTX GPUs due to dedicated ray tracing hardware called RT Cores, and Nvidia's performance-boosting DLSS technology.
Variable Rate Shading (VRS) allows developers to selectively vary a game’s shading rate. This lets them ‘dial up’ the GPU power in more importance parts of the game for better visuals and ‘dial back’ the GPU power in less important areas of a game for better speed. Variable Rate Shading also has the advantage of being relatively low cost to implement for developers.
In the Vulkan-powered Wolfenstein: Youngblood, NVIDIA's Adaptive Shading implementation of VRS boosted performance by up to 15%, without a perceptible loss of image quality. By bringing Variable Rate Shading to DirectX 12 Ultimate, many more developers can easily add this win-win tech to their games.
Nvidia built the Asteroids tech demo, in which Mesh Shaders render and dynamically adjust the detail of up to 350,000 individual asteroids with a level of sub-pixel geometric detail and performance that is otherwise impossible to achieve.
With DirectX 12 Ultimate, Mesh Shaders will be faster and easier for developers to implement.Mesh Shaders give developers more programmability than ever before. By bringing the full power of generalized GPU compute to the geometry pipeline, mesh shaders allow developers to build more detailed and dynamic worlds than ever before.
Prior to mesh shader, the GPU geometry pipeline hid the parallel nature of GPU hardware execution behind a simplified programming abstraction which only gave developers access to seemingly linear shader functions. For instance, the developer writes a vertex shader function that is called once for each vertex in a model, implying serial execution. However, behind the scenes, the hardware packs adjacent vertices to fill a SIMD wave, then executes 32 or 64 vertex shader functions in parallel on a single shader core. This model has worked extremely well for many years, but it is leaving performance and flexibility on the table by hiding the details of what the hardware is really doing from developers.
Mesh shaders change this by making geometry processing behave more like compute shaders. Rather than a single function that shades one vertex or one primitive, mesh shaders operate across an entire compute thread group, with access to group shared memory and advanced compute features such as cross-lane wave intrinsics that provide even more fine grained control over actual hardware execution. All these threads work together to shade a small indexed triangle list, called a ‘meshlet’. Typically there will be a phase of the mesh shader where each thread is working on a separate vertex, then another phase where each thread works on a separate primitive – but this model is completely flexible allowing data to be shared across threads, new vertices or primitives created as needed, existing primitives clipped or culled, etc.
Along with this new flexibility of thread allocation comes a flexibility of input data formats. Mesh shader no longer uses the Input Assembler block, which was previously responsible for fetching index and vertex data from memory. Instead, shader code is free to read whatever data is needed from any format it likes. This enables novel new techniques such as index buffer compression, or the use of multiple different index buffers for different channels of vertex data. Such approaches can reduce memory usage and also reduce the memory bandwidth used during rendering, thus boosting performance.
Although more flexible than the previous geometry pipeline, the mesh shader model is also much simpler.
Sampler Feedback shares the same philosophy as Variable Rate Shading: work smarter to reduce GPU load and improve performance. It is enabled by a hardware capability in Nvidia's GeForce RTX architecture called Texture Space Shading.
Virtually all of today’s games render new frames “from scratch”, meaning that they generally don’t use calculations made prior to that frame (except for temporal anti-aliasing, NVIDIA DLSS, and the occasional post processing technique). But in most games - as in the real world - relatively little changes from frame to frame. If you look outside your window, you might see trees blowing in the wind, pedestrians passing by, or birds flying in the distance. But the majority of the scene is unchanged. The main thing that changes is your point of view.
Some objects will indeed change appearance as you change your point of view - notably those which are glossy or shiny. But most objects will actually change very little as you move your head, and as such, it’s a waste of precious GPU cycles to keep recalculating the same exact colors that make up those objects every frame. Picture, for example, a wooden telephone pole - regardless of your head and eye position, it looks essentially the same.
By using Sampler Feedback, Nvidia says it can more efficiently shade those objects at a lower rate (say, every third frame, or perhaps even lower than that) and reuse the object’s colors (or “texels” as they’re referred to) as calculated in previous frames. This notion of work reuse can be used for ray tracing, especially in the case of global illumination, which is a common example of a slow-changing and very expensive shading computation.
While DirectX Ray Tracing and Variable Rate Shading are supported in Windows 10 today, Microsoft’s Windows 10 ‘20H1’ update will add DirectX support for Mesh Shading and Sampler Feedback, as well as update DXR to version 1.1. NVIDIA says it will be ready on the day of Windows 10 20H1 release with full driver support for all the new and updated DirectX 12 Ultimate capabilities.