Microsoft introduces Variable Rate Shading to DirectX 12 bringing significant performance benefits
Why it matters: As higher resolution gaming becomes more realistic, careful use of resources is critical to achieving desirable frame rates consistently. Variable Rate Shading allows for 4K (and higher) resolution gaming to be far more practical with hardware that currently exists.
Microsoft has some exciting news to share from GDC 2019 that will improve gaming performance. In DirectX 12, Microsoft is introducing Variable Rate Shading. The new API allows for more effective use of GPU resources so that high detail areas are rendered clearly and less time can be spent on screen areas that have less need for fine tuning.
When calculating pixel colors in DirectX, shaders are the workhorse element doing that process. The shading rate is how quickly shaders can be called upon to produce more pixel data. Up until now, the shading rate has been set for all pixels inside of a frame, meaning that low detail patterns have required the same amount of shading, and thus resource usage, as highly detailed regions.
Clearly, not all objects in games need the same visual fidelity. While seeing lifelike water, trees, and repetitive textures in extreme detail is pretty cool, you probably cannot tell if some pixels are not exactly the right color so long as they are “close enough”. Also think of objects at the outer limits of your field of view. There is little need to go for maximum detail on objects that are barely on screen and mostly unimportant to overall user experience.
Of course there are exceptions, but developers hold the power to selectively choose where to make use of greater detail settings. Variable Rate Shading, or VRS, can be applied on a per draw basis, inside of a draw operation using a screenspace image, or even within a draw for each primitive, allowing for extremely fine tuning.
Looking up to the header image, you probably cannot tell which side has been rendered with VRS and which was done with standard shading, and that is completely the point. The left is the original and the right is using VRS. Blue regions were shaded with a 2×2 rate whereas red portions were 1×1.
In an unnamed version of Civilization, an RTX 2060 could run the scene at 53FPS before any optimizations. A 20 percent improvement was observed by rendering terrain at the lower 2×2 rate and keeping buildings, vehicles, and UI controls at the higher 1×1 rate. For maximum quality settings using screenspace images, there is still a 14 percent bump in performance with VRS on.
Hardware support exists for VRS in Nvidia’s current generation of graphics cards and will also be coming to Intel hardware later this year as part of its 11th generation.
Support from Unity, Activision, Ubisort, Epic Games, and other reasonably well known companies have already committed to using VRS in at least some capacity. From here on, time will tell just how beneficial Microsoft’s innovations will be in practice.