Adaptive Un­der­sam­pling With DACS

High-Level Motivation and Context

In standard raster contexts, the most-expensive part of rendering is usually fragment shading, with every pixel requiring at-least one shaded fragment. However, shaded color often does not vary significantly within localized regions on the screen, and in-theory we could reuse some of the shading work among nearby pixels without incurring much error.

Unfortunately, GPUs are not amenable to shading pixels in this way: pixels are shaded in blocks. One cannot choose pixels to shade at a fine granularity, let-alone make that choice dynamically. Very-recent GPUs, notably the NVIDIA Turing architecture, relaxed these limitations somewhat with so-called variable-rate shading; however, the pixels are still shaded in blocks, and the available shading granularities of those blocks are limited.

Deferred Adaptive Compute Shading (DACS) is an implementation of shading within a compute shader instead of the standard raster pipeline. By using a compute shader, there is no-longer any hardware limitation on shading pixels in blocks, although considerable care is necessary to schedule pixel shading ourselves. Pixels are progressively filled in from coarser to finer, interpolating when possible instead of shading. DACS is capable of accelerating shading several factors with negligible loss of quality.

We extended this work at HPG 2020 by describing a possible hardware implementation.

Deferred Adaptive Compute Shading

Ian Mallett ,   Cem Yuksel

HPG '18 Proceedings of High Performance Graphics, 2018

Deferred Adaptive Compute Shading vs. checkerboard rendering. See also Figure 1 in the paper.

Pixel shading order for Deferred Adaptive Compute Shading. See also Figure 2 in the paper.


A primary advantage of deferred shading is eliminating wasted shading operations due to overdraw. We present a new algorithm that we call Deferred Adaptive Compute Shading, for providing further reduction in shading computations. Our method hierarchically shades the image while reducing the number of required shading operations to below one shading computation per pixel on average. We determine whether to shade a pixel or approximate it using previously shaded pixels around it, based on an estimate of the image variance at the pixel location. The algorithm is designed to dynamically reconfigure itself to achieve optimal warp coherence and measurable performance gain. We extensively evaluate our algorithm, demonstrating that it produces high-quality results and is robust and highly scalable while providing significant performance improvements in complex scenes.


Presentation Slides
Presentation Slides&Notes
Supplementary Video
Shader Pseudocode