2011-04-19 162 views
2

我正在写一个着色器,使场景中呈现的纹理产生模糊效果。 我需要在2场比赛中做到这一点,所以通过P0我做了一个水平模糊,并在通过P1的垂直。HLSL:多通道着色器?

的问题是:

  • 我怎样才能得到通P0从PS输出和发送输入上通P1的PS?

如果我把它写在一次通过我获得预期的结果,但我真的需要做2回合。

任何人都可以帮助我吗?

我的第一个方法是HLSL。

谢谢大家!

FOX_ITA

回答

5

你通常在应用程序逻辑的着色器代码的那个之外。

  • 获取渲染目标/渲染的纹理大到足以容纳的P0
  • 结果启用目标,使P0,运行第一遍
  • 获得另一个渲染目标持有P1的结果。如果您正在进行全屏模糊处理,并且不需要进一步的后处理,则这通常是backbuffer。
  • 启用新的渲染目标
  • 绑定第一渲染目标,以访问P1
  • 执行第二次

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

+0

THanks Alexander!我会尝试这种方式!感谢您的提示! :) – user714921 2011-04-19 10:13:53

+0

@AlexanderGessler切换纹理通常很慢,因为它需要绑定其他纹理。纠正我,如果我错了? – bluejamesbond 2014-02-18 07:48:51