0

我想创建一个效果,在我的角色被杀死后,角色精灵的红色、蓝色、绿色通道会分成不同的方向。

类似的东西> http://active.tutsplus.com/tutorials/effects/create-a-retro-crt-distortion-effect-using-rgb-shifting/

我该怎么做呢?

4

1 回答 1

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;
}

基本上,原来的着色器现在被调用了 3 次,所以效率有点低,这就是我建议使用缓冲区的原因,但这可能是过早的优化。

您可以在此处的实际着色器中查看上述代码的结果:http: //glsl.heroku.com/e#7971.0(不确定这些链接的持久性,抱歉)

于 2013-04-05T16:14:59.673 回答