GLSL“缩放”就像模糊

时间:2014-03-01 21:58:12

标签: c# opengl zoom glsl

首先对不起我的英语,这不是我的母语,但我希望你能理解我想要的内容。

所以基本上我想模糊它周围的图像。 这是场景的图像:(蓝色的圆圈就像物体的中心一样)

enter image description here

在模糊和东西之后,我期待这样的事情:

enter image description here

目前我正在渲染矩形300次,每次比前一次大1px。但这种方法很慢......

使用GLSL着色器可以实现这种效果吗? (我尝试过径向模糊,但结果并不完全是我想要的。)

解决! 我认为这不是最好的方式,但它有效...... 这是片段着色器代码:

precision mediump float;

uniform float lightRadius;
uniform vec2 resolution;

uniform sampler2D Texture;
varying vec2 texCoord;

void main() 
{
    vec2 step = vec2(1.0 / resolution.x, 1.0 / resolution.y);

    vec2 cent = vec2(.5,.5);
    vec2 dir = texCoord - cent;
    dir = normalize(dir);

    float dist = length(texCoord - cent);

    bool s = false;
    vec3 col = vec3(1,1,1);
    for (float i=0.0; i< lightRadius.x;i+=1.0) 
    {
        vec2 pix = cent + (dir * i) * step;

        float dist2 = length(pix - cent);

        if(dist2>dist)
            break;

        vec4 color = texture2D(Texture, pix);

        if(color.a > 0.5)
        {
            s = true;
            break;
        }
    }

    if(s == true){
        gl_FragColor = vec4(0,0,0,1);
    }else{
        gl_FragColor = vec4(1,1,1,0);
    }
}

1 个答案:

答案 0 :(得分:1)

如果你想在某个中心点周围模糊图像,那么你真的在寻找径向模糊。

如果你想要某种“godray”效果,我建议你阅读 - this article

我希望它有所帮助。