光栅器顺序视图

光栅器有序视图(ROV)允许像素着色器代码使用声明标记 UAV 绑定,以改变 UAV 图形管道结果顺序的正常要求。 这使顺序独立透明度(OIT)算法能够正常工作,当多个透明对象在视图中相互对齐时,这可以提供更好的呈现结果。

概述

标准图形管道可能无法正确组合包含透明度的多个纹理。 铁丝网、烟雾、火灾、植被和彩色玻璃等对象使用透明度来获得所需的效果。 当包含透明度的多个纹理彼此对齐时,会出现问题(例如,在玻璃建筑前的栅栏前冒烟,以植被为例)。 光栅器有序视图(ROV)使基础 OIT 算法能够使用硬件的功能来尝试正确解析透明度顺序。 透明度由像素着色器处理。

光栅器有序视图(ROV)允许像素着色器代码使用声明标记 UAV 绑定,以改变 UAV 图形管道结果顺序的正常要求。

ROV 保证对重叠像素着色器调用的 UAV 访问顺序。 在这种情况下,“重叠”表示调用由相同的绘图调用生成,并在像素频率执行模式下共享相同的像素坐标,在采样频率模式下生成相同的像素和样本坐标。

执行像素着色器调用的重叠 ROV 访问的顺序与提交几何图形的顺序相同。 这意味着,对于重叠的像素着色器调用,像素着色器调用执行的 ROV 写入必须可供后续调用读取,并且不能影响上一次调用的读取。 像素着色器调用执行的 ROV 读取必须反映先前调用的写入,并且不能反映后续调用的写入。 对于 UAV 来说,这一点很重要,因为它们从输出不变保证中显式省略,这通常由图形管道结果的固定顺序设置。

实现详细信息

光栅器有序视图(ROV)使用以下新的高级着色器语言(HLSL)对象声明,并且仅适用于像素着色器:

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

以与其他 UAV 对象(如 RWBuffer 等)相同的方式使用这些对象。

API 摘要

ROV 是一种仅限 HLSL 的构造,用于将不同的行为语义应用于 UAV。 与 UAV 相关的所有 API 也与 ROV 相关。 请注意,以下方法、结构和帮助程序类引用光栅器:

Direct3D 11.3 功能

着色器模型 5.1