2016-03-28 129 views
0

我开始学习着色器,在ShaderToy.com上玩耍。对于我想要制作的项目,我需要在WebGL上创建一个任意的辉光过滤器(不是Bloom)。我想计算阿尔法,我可以再使用绘制彩色光晕或使用一段动画纹理像火等WebGL发光效果

到目前为止,我想到了一些想法:横跨附近的一些区域

  1. 平均化的α-每个像素 - 显然会慢
  2. 将在圆的每个像素周围的一个循环在距离另一个基于形状如何接近这个像素计算α - 可能只是缓慢
  3. 模糊整个形状 - 听起来像一个矫枉过正,因为我只需要阿尔法

是否有其他想法来解决这个问题?我能找到的所有高斯模糊技术都来自类似Bloom的滤镜。

+0

您的问题不是很清楚。什么是你的输入,你的输出是什么?你想从什么来计算一个alpha?最后你想要什么?模糊的阿尔法纹理?图像的平均alpha值?还有别的吗?请澄清你的问题 – Zouch

+0

@ Zouch,我想围绕我可以自定义的任意对象(颜色,距离,强度等)创建一个光晕。花了一整天google搜索和阅读一些文章,我想我会尝试这种方法: http://xissburg.com/faster-gaussian-blur-in-glsl/ 我可能会用一个Codepen回答我自己的问题时间做出来,但感谢你的兴趣。 – pokrishka

回答

3

请发现这个nvidia document为简单的发光效果。 的基本思想是

  1. 呈现在后缓冲器
  2. 激活
  3. 渲染场景的一些元件在FBO
  4. 计算Glow效果
  5. 绑定最终效果的场景FBO作为纹理并将此效果与以前渲染的场景混合在后缓冲区中