GLSL对象发光

时间:2011-01-13 10:33:22

标签: opengl glsl shader

是否可以创建一个GLSL着色器以使任何对象被发光效果包围? 假设我有一个3d立方体,如果它被选中,立方体应该被蓝色发光效果包围。任何提示?

1 个答案:

答案 0 :(得分:12)

有几种方法可以做到这一点。如果每个对象也以winged edge格式表示,则计算轮廓然后将其拉伸以生成光晕是微不足道的。然而,这是一种CPU方法。

对于GPU方法,您可以尝试渲染到屏幕缓冲区,并将模板设置为递增。如果然后在图像上执行模糊(虽然只写入模板不为零的像素),您将在图像边缘处获得模糊,然后可以使用Alpha混合将其绘制到主场景中。这更像是一种模糊而不是发光,但是重新设置亮度会相对容易,这样它就会产生光晕。

还有很多其他方法......这里有几个链接供您查看:

http://http.developer.nvidia.com/GPUGems/gpugems_ch21.html
http://www.codeproject.com/KB/directx/stencilbufferglowspart1.aspx?display=Mobile

在Google上进行搜索,因为有很多信息:)