Dav*_*age 2 graphics directx-11 compute-shader
我正在将全屏效果转换为计算着色器,以便我可以利用片段着色器无法完成的一些计算功能。现在,这种全屏效果使用模板来避免写入它不应该影响的像素,我想用我的计算着色器来模仿这种行为。
我知道我可以将此信息写入某处的颜色通道,但我希望避免这种情况,而是直接在计算着色器中读取模板位。但是,我找不到任何方法将 D24S8 缓冲区绑定到计算着色器,以便我可以实际读取模板位。它似乎只提供深度信息。
有什么办法可以做到这一点吗?谷歌让我失望了,因为在谈论采样深度值时每个人都将其称为深度/模板缓冲区。
这个有可能。
确保在 HLSL 中声明您的模板 SRV,以便Texture2D<uint2>您可以访问绿色通道 (G8),这是模板数据的来源。
请注意,由于 Depth 和 Stencil 是独立的 SRV,因此您需要在 HLSL 中声明两个 Texture2D,每个一个。例如:
Texture2D<float> depthBuffer; // Red contains depth.
Texture2D<uint2> stencilBuffer; // Green contains stencil. Red is unused.
Run Code Online (Sandbox Code Playgroud)