HLSL:多通道着色器?

时间:2011-04-19 09:41:26

标签: shader blur hlsl

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

问题是:

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

如果我在单次传球中写下我获得了预期的结果,但我确实需要在2次传球中进行。

有人可以帮我吗?

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

感谢大家!

FOX_ITA

1 个答案:

答案 0 :(得分:6)

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

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

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