The Visibility Buffer: A Cache-Friendly Approach to Deferred Shading
The Visibility Buffer: A Cache-Friendly Approach to Deferred Shading
复制标题
可见性缓冲区:一种缓存友好的延迟着色方法
DOI:
--
复制
发表时间:
2013
期刊:
影响因子:
--
通讯作者:
W. Hunt
中科院分区:
文献类型:
--
作者:
Christopher A. Burns;W. Hunt
Forward rendering pipelines shade fragments in triangle-submission order. Consequently, non-visible fragments are often wastefully shaded before being subsequently occluded—a phenomenon known as over-shading. A popular way to avoid over-shading is to only compute surface attributes for each fragment during a forward pass and store them in a buffer. Lighting is performed in a subsequent pass, consuming the attributes buffer. This strategy is commonly known as deferred shading. We identify two notable deficits. First, the buffer for the geometric surface attributes— the g-buffer—is large, often 20+ bytes per visibility sample. The bandwidth required to read and write large g-buffers can be prohibitive on mobile or integrated GPUs. Second, the separation of shading work and visibility is incomplete. Surface attributes are eagerly computed in the forward pass on occluded fragments, wasting texture bandwidth and compute resources. To address these problems, we propose to replace the g-buffer with a simple visibility buffer that only stores a triangle index and instance ID per sample, encoded in as few as four bytes. This significantly reduces storage and bandwidth requirements. Generating a visibility buffer is cheaper than generating a g-buffer and does not require texture reads or any