Microsoft announced today that it’s brought variable rate shading (VRS) to DirectX 12. The company said developers will be able to use VRS to improve performance, increase graphics quality and lower the system requirements for their games.
These aren't baseless claims. Microsoft asked video game developer Firaxis to implement VRS in one of its games to show how easy it is to use and how it could improve real titles. The image above shows VRS in action on the left one side. The sides look almost identical, but Microsoft said that Firaxis reported 14 percent increase in frame rate for that map at that zoom level with VRS.
The usual caveats about company-reported performance apply. We don't know what the test conditions were, we haven't tested VRS ourselves, and these could just be the figures that made Microsoft’s latest graphics technology look the best. We’ll reserve judgment on VRS for after our own tests.
But that doesn't change the fact that VRS is here, and many big-name companies plan to incorporate it into their products. That list includes developers like 343 Industries, Playground Games and Massive Entertainmen, publishers like Ubisoft and Activision and game engine makers like Unity and Epic Games, (which also makes the massively popular Fortnite).
How Does VRS Work?
So how does VRS work? Well, the name is pretty descriptive, actually. Rather than forcing shaders to be rendered at the same resolution--which is distinct from the overall resolution--VRS enables a variable shading rate. That way developers can "selectively reduce the shading rate in areas of the frame where it won’t affect visual quality," as Microsoft put it.
Developers can also choose to do the opposite by increasing the shading rate in "areas where it matters most" to enable better visual quality in their games. Combine those approaches, and you end up with a technology that Microsoft said can bring better performance and visual quality while also leading to "lower-spec’d hardware being able to run better games than ever before."
The VRS API lets developers set the shading rate in three ways: per draw, within a draw by using a screenspace image, or within a draw "per primitive." There are two tiers of VRS support. Tier 1 supports per-draw VRS. Tier 2 supports both per-draw and within-draw VRS. It also introduced "VRS combiners" to let them use per-draw and per-primitive VRS at the same time.
Microsoft said VRS is supported by "in-market Nvidia hardware" as well as "upcoming Intel hardware." It didn't get more specific about which Nvidia products support the technology but said "Intel's already started doing experiments with variable rate shading on prototype Gen11 hardware ... scheduled to come out this year." Maybe Intel's discrete GPU will also support it.
Microsoft will hold sponsored sessions on VRS at the 2019 Game Developers Conference (GDC) this week. For those who aren't attending GDC, Microsoft said it will "be updating the directxtech.com forums on Wednesday with a getting started guide, a link to the VRS spec and a link to a sample for developers to get started" as well as its slides from both of the sessions.