我想创建一个效果,在我的角色被杀死后,角色精灵的红色、蓝色、绿色通道会分成不同的方向。
我该怎么做呢?
我想创建一个效果,在我的角色被杀死后,角色精灵的红色、蓝色、绿色通道会分成不同的方向。
我该怎么做呢?
在片段着色器中查找各个颜色时,您可以添加不同的偏移量。为了提高效率,您可能应该首先渲染到中间缓冲区。
以下是如何执行此操作的示例:
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;
}
基本上,原来的着色器现在被调用了 3 次,所以效率有点低,这就是我建议使用缓冲区的原因,但这可能是过早的优化。
您可以在此处的实际着色器中查看上述代码的结果:http: //glsl.heroku.com/e#7971.0(不确定这些链接的持久性,抱歉)