HLSL:多通道着色器?

use*_*921 3 shader blur hlsl

我正在编写一个着色器,对从场景渲染的纹理产生模糊效果.我需要在2过去做到这一点,所以通过P0我做一个水平模糊,而在P1传递垂直模糊.

问题是:

  • 如何在通过P0时从PS获得输出并在通过P1上的PS上作为输入发送?

如果我在单次传球上写下我获得了预期的结果,但我真的需要在2次传球中完成.

有人可以帮我吗?

是我的第一个接近HLSL的方法.

谢谢大家!

FOX_ITA

Ale*_*ler 7

您通常在应用程序逻辑中的着色器代码之外执行此操作.

  • 获取足够大的渲染目标/可渲染纹理以保存P0的结果
  • 启用目标,启用P0,运行第一遍
  • 获取另一个渲染目标以保存P1的结果.如果你正在进行全屏模糊并且不需要进一步的后期处理,那么这通常是后备缓冲区.
  • 启用新的渲染目标
  • 将第一个渲染目标绑定到P1可访问的纹理索引/槽
  • 做第二遍

(当然,你不会每帧重新创建一次渲染目标.我宁愿使用渲染目标的中央池来满足所有后期处理需求).