BlurUse Compute Shader

intro dx11书中介绍的方法,将blur过程分成两部分,一部分作垂直方向blur,一部分做水平方向的blur,因而需要两个纹理缓冲区,一个输入的,一个输出的。

例如纹理A和纹理B。

步骤如下:

将纹理A绑定到SRV,作为compute shader的输入

将纹理B绑定到UAV,作为compute shader的输出 ---暂时存放第一次blur的结果

然后将thread groups分配为水平(也可以先垂直)的blur操作,纹理B存放的就是水平blur的结果BlurH(I),I是最初的输入纹理。

之后翻转,绑定B到SRV,作为输入---这时候B中存放的是之前水平blur后的结果

绑定A到UAV作为输出,然后将线程组执行垂直(水平)的blur操作,得到最后的结果 Blur(I) = BlurV(BlurH(I))。

原文地址:https://www.cnblogs.com/zhkza99c/p/2633094.html