3.11.3使用无序访问视图
2024-06-25
7
0
前面的示例演示了如何使用像素着色器来实现渲染模型。在本节中,我们将考虑通过将无序访问视图包含到像素着色器中,可以提供哪些额外的可能性。UAV允许通过调用像素着色器在任何位置读取或写入各种资源类型。
在添加UAV之前,像素着色器阶段仅限于从资源中读取,将其输出颜色和深度写入碎片位置除外。这种写入资源任何位置的新能力可用于从渲染过程中提取附加信息。例如,直方图的生成可以与场景的渲染同时执行。直方图提供了多个bin,其中每个bin表示具有特定范围内的值的像素数。直方图提供了图像中值分布的指示。通过检查像素着色器的输出颜色,可以确定颜色所属的直方图仓。然后,可以使用UAV访问资源,并且可以增加适当的bin值。在引进UAV之前,这是不可能的。使用UAC可以实现更复杂的渲染算法。
由于可以对资源进行读写访问,所以可以使用UAV来实现通用数据结构。这种能力已经被用于在GPU资源中构建链表实现,然后可以将其用作其他算法的构建块。