Microsoft has added Variable Rate Shading to its DirectX 12 API, making it the first graphics API to offer the tech across different hardware. Variable Rate Shading (VRS) is something Nvidia has been keen to talk up as it continues to extol the virtues of its Turing GPU architecture, and with VRS now being baked into the ubiquitous Microsoft API it will be a lot easier for game developers to implement the performance-boosting feature into their games.
The announcement has come around the Game Developers Conference in San Francisco, with both an introductory session and a further deep dive by Microsoft being presented at the show.
When Nvidia originally showed off the feature, the motion adaptive and content adaptive shading features of VRS made complete sense, but required the developers to specifically code it into their games. With a DirectX 12-based version, however, we’re more likely to see it actually feature across a broad range of games and game engines. There are multiple levels of hardware support, however, with two different levels, or tiers, of the graphics tech being offered via the DX12 VRS.
Tier 1 hardware support allows developers to choose a per-draw shading rate, where different draw calls can have different shading rates. The example that Microsoft gives in its recent VRS blog post suggests a game dev could choose to have the large environmental gameworld assets, faraway assets, or assets hidden or obscured behind semi-transparencies shaded at a lower shading rate than more detailed assets in a scene.
Read more: These are the best graphics cards around today
This will boost performance, as shown by Microsoft’s collaboration with Firaxis in getting the different tiers of VRS working with Civilization VI.
This is the most basic level of Variable Rate Shading and, though we don’t yet have specifics of which GPUs support which tier, it looks like it could still be supported in AMD’s Polaris architectures. It may not be able to work with the more detailed tier 2 of VRS, but AMD had mentioned a level of VRS support back at the introduction of the architecture. That, however, is pure speculation right now as Microsoft only talks about Nvidia and Intel GPUs in the introductory VRS blog post.
Nvidia’s Turing, and in the future Intel’s Gen11 GPUs, definitely both support the top tier 2 level of VRS, however. This tier allows a more fine grain control over the shading rate actually within a draw call itself. This is what allows the developer to specify which specific pixels get different levels of detail, by offering different rates inside the same draw call.
Tier 2 offers the ability to adjust the shading rate based on either a screenspace image or on a per-primitive basis. Operating on the screenspace image means that parts of a draw that don’t need a high level of detail – the sky, far off sea texture, or a wall, for example – can be shaded at a lower rate without affecting observed image quality, while more complex parts of a scene can retain the full detail level.
The per-primitive version of VRS means devs can change the rate of shading for different triangles, and it’s this method which is used for motion adaptive shading. This is where the blurred edges of the screen in a racing game, for example, don’t need the same level of detail as the central portion of the screen.
There is some image degradation visible when just using the first tier of Microsoft’s VRS implementation. If you zoom into the tier 1 image further above you can see where the right hand side of the picture looks a little fuzzier than the left, especially on the border lines.
But it becomes almost impossible to see any difference when the full tier 2 methods are used. The Firaxis demo showed a 20% performance boost when using the more basic tier 1 setting, but still offered a 14% frame rate hike using the tier 2 techniques.
While Microsoft does only mention Intel and Nvidia in its blog post, it’s hard to believe that it hasn’t also been working with AMD. We do know that AMD has published a patent for its own Variable Rate Shading implementation, so it’s a pretty strong bet that the AMD Navi GPUs will launch with the feature when they launch later this year and that should open up the full range of DX12 VRS to Radeon users too.
And when that happens VRS will be available for all three of the main GPU manufacturers and developers would be fools not to take advantage of the obvious performance boosts on offer to them.