Microsoft Announces Variable Rate Shading Support for DX12

Posted by cageymaru 7:07 PM (CDT)

Monday March 18, 2019

Variable Rate Shading (VRS) is a powerful new API that gives the developers the ability to use GPUs more intelligently. Shaders are used to calculate the color of each pixel in a screen. 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 better visual fidelity at the cost of using more GPU power. All pixels in a frame are affected by the game's shading rate. VSR allows developers to choose which areas of the frame are more important and increase the visual fidelity, or set parts of the frame to have lower fidelity and gain extra performance. Lowering the fidelity of parts of the scene can help low spec machines to run faster.

There are two tiers of support for VRS. First of all the VRS API lets developers set the shading rate in 3 different ways: per draw, within a draw by using a screenspace image, or within a draw, per primitive. The hardware that can support per-draw VRS hardware are Tier 1. There's also a Tier 2, the hardware that can support both per-draw and within-draw variable rate shading. VRS support exists today on in-market NVIDIA hardware and on upcoming Intel hardware. AMD is rumored to be working on support for the feature.

For example, foveated rendering, rendering the most detail in the area where the user is paying attention, and gradually decreasing the shading rate outside this area to save on performance. In a first-person shooter, the user is likely paying most attention to their crosshairs, and not much attention to the far edges of the screen, making FPS games an ideal candidate for this technique. Another use case for a screenspace image is using an edge detection filter to determine the areas that need a higher shading rate, since edges are where aliasing happens. Once the locations of the edges are known, a developer can set the screenspace image based on that, shading the areas where the edges are with high detail, and reducing the shading rate in other areas of the screen.