我想创建一个效果,在我的角色被杀之后,角色精灵的红色,蓝色,绿色通道分成不同的方向。
我将如何做到这一点?
答案 0 :(得分:1)
在片段着色器中查找单个颜色时,您可以添加不同的偏移量。为了提高效率,您可能应首先渲染到中间缓冲区。
以下是如何操作的示例:
vec4 mainOld( vec2 offset ) {
... (gl_FragCoord.xy + offset) ...
}
void main( void ) {
vec4 foo;
foo.r = mainOld(vec2(-3.0, 0.0)).r;
foo.g = mainOld(vec2(0.0, 5.0)).g;
foo.b = mainOld(vec2(0.0, 0.0)).b;
foo.a = mainOld(vec2(0.0, 0.0)).a;
gl_FragColor = foo;
}
基本上,原始着色器现在被调用三次,因此效率有点低,这就是为什么我建议使用缓冲区,但这可能是过早优化。
您可以在此处查看实际着色器中上述代码的结果: http://glsl.heroku.com/e#7971.0(不确定这些链接有多久,抱歉)