WebGL发光效果

时间:2016-03-28 13:30:08

标签: glsl webgl shader fragment-shader

我开始学习着色器,在ShaderToy.com上玩游戏。对于我想要制作的项目,我需要在WebGL(而不是Bloom)上创建任意的发光滤镜。我想计算alpha,然后我可以用它来绘制颜色光晕或用于某些动画纹理,如火等。

到目前为止,我想到了一些想法:

  1. 在每个像素附近的某个区域平均α - 显然很慢
  2. 在一个循环中围绕每个像素绕圈,然后在另一个循环中绕过距离,根据形状与该像素的接近程度计算alpha - 可能就像慢一样
  3. 模糊整个形状 - 听起来有点矫枉过正,因为我只需要alpha
  4. 是否有其他想法接近这个?我所能找到的都是来自类似绽放的滤镜的高斯模糊技术。

1 个答案:

答案 0 :(得分:3)

请查看此nvidia document了解简单的发光效果。

的基本思路是
  1. 在后台缓冲区中渲染场景
  2. 激活效果
  3. 在FBO中渲染场景的一些元素
  4. 计算发光效果
  5. 将最终的FBO绑定为纹理,并将此效果与后备缓冲区中之前渲染的场景混合