【问题标题】:DirectX 9 HLSL Glow EffectDirectX 9 HLSL 发光效果
【发布时间】:2012-11-05 06:12:49
【问题描述】:

如图所示,屏幕上有多个响铃。 要求说用户可以选择任何一个环,并且选中的环应该有发光效果(发光几秒钟然后变成绿色)。 所有图形渲染都是使用 DirectX 9 + HLSL 完成的。我面临的问题:

  • 如何在着色器代码中将选定的环与其他环区分开来,以便只能将发光效果应用于该环。

【问题讨论】:

  • 如何渲染你的戒指?它只是一个纹理还是你渲染了几个对象?
  • 不是纹理,所有顶点/点集合。

标签: hlsl directx-9


【解决方案1】:

您应该使用不同的渲染目标 (Documentation of SetRenderTarget)。首先,您将所有未选择的环渲染到后缓冲区。然后将选定的环绘制到一个额外的纹理作为渲染目标。你的光晕着色器使这个纹理发光,最后你将纹理渲染到后台缓冲区。因此,您的绿色环会发光,而其他环不受发光着色器的影响。

【讨论】:

  • 开始实施测试样本。 glowshader 需要好的算法/链接/代码源。
  • @ppu: http.developer.nvidia.com/GPUGems/gpugems_ch21.html,但也许为此目的使用光晕着色器有点矫枉过正。带有发光纹理的纹理线怎么样?这更简单,并且会达到相同的结果。
  • 我有点糊涂了。我会在backbuffer_1上渲染红线,然后在backbuffer_2上渲染带有发光效果的线。如何将它们合并在一个框架中?我只使用顶点信息,线条没有纹理坐标。
  • 您将全屏四边形渲染到 backbuffer_1 上,并将 backbuffer_2 作为四边形的纹理。您应该使用 ADD 作为混合运算符。
【解决方案2】:

如果您想要有发光的线条并且不使用发光着色器进行其他任何操作,您可以使用“粗”线条和适当的纹理使线条发光,如下图所示:

这将比其他方法更容易实现并且更快:)

【讨论】:

  • :尝试使用高斯模糊的各种参考来实现模糊着色器,但是在着色器代码中的多个通道中没有发生垂直和水平模糊的合并。然后拿了2个后缓冲区并尝试使用它们由于 2 个纹理一个水平模糊另一个垂直模糊仍然在最终输出中合并这两个是不正确的。需要一些参考来合并到纹理后处理。我不能使用任何纹理资源。在 DirectX9 中需要像 Dx10 Glow 这样的效果。非常困惑。
  • 我用 2 个纹理和交替的水平和垂直模糊实现了一个模糊效果,渲染目标像 1。使用场景纹理水平模糊渲染到纹理 1 2。使用纹理 1 垂直模糊渲染到纹理 2 3。像 1 . 但有纹理 2 等等
猜你喜欢
  • 2012-08-30
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多