光栅器顺序视图
光栅器有序视图(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 相关。 请注意,以下方法、结构和帮助程序类引用光栅器:
- D3D11_RASTERIZER_DESC2:保存光栅器说明的结构,指出用于创建光栅器说明的CD3D12_RASTERIZER_DESC2帮助程序类。
-
D3D11_FEATURE_DATA_D3D11_OPTIONS2:包含布尔
ROVsSupported
的结构,指示支持。 - ID3D11Device::CheckFeatureSupport:访问支持的功能的方法。
相关主题