Microsoft has announced Variable Rate Shading for DirectX 12 at the Game Developers Conference (GDC) 2019. This makes DirectX 12 the first graphics API to offer broad hardware support for Variable Rate Shading. Variable Rate Shading allows the GPU to selectively reduce the shading rate in areas of the frame where it won’t affect visual quality, thus improving the gaming performance. It can also do the opposite, using increased shading rate in areas where it matters the most, increasing the visual quality in games.
For each pixel in a screen, shaders are called to calculate the color this pixel should be. Shading rate refers to the resolution at which these shaders are called (which is different from the overall screen resolution). A higher shading rate means more visual fidelity, but more GPU cost; a lower shading rate means the opposite: lower visual fidelity that comes at a lower GPU cost.
VRS API lets developers set the shading rate in 3 different ways:
- Per draw (Tier 1)
- Within a draw by using a screenspace image (Tier 2)
- Or within a draw, per primitive (Tier 2)
This allows different draw calls to have different shading rates by allowing developers to specify the per-draw shading rate.
Tier 2 offers the same basic function as Tier 1, but with further allowing the developers to specify the shading rate withing a draw, with a screenspace image or per-primitive.
A draw call for a 3D engine is a set of traingles (vertices or indices) paired with either a shader program, textures, or properties.
Microsoft also said that they’re introducing combiners, which will allow the developers to combine per-draw, screenspace image and per-primitive VRS at the same time, so they won’t have to choose between techniques.
Microsoft partnered with Firaxis games to test out the performance results of VRS on NVIDIA hardware.
This testing was done using a GeForce RTX 2060 to draw at 4K resolution. Before adding VRS support, the scene they looked at ran at around 53 FPS.
Tier 1 support: Implementation of Tier 1 increased the FPS by about 20 percent, but there was a slight loss in details.
Tier 2 support: Using an edge detection filter to detect which high detail is required, Firaxis was able to gain performance without compromising on the details, and this method offered a 14 percent boost in FPS.
VRS support is available on in-market NVIDIA hardware and upcoming Intel hardware. Intel has already started the testing on its prototype Gen11 hardware coming later this year.
There are many game developers planning to add support for Variable Rate Shading to their gaming engines/games. Some of these developers are Unity, Activision, Epic Games, Ubisoft, etc.