uniform sampler2D texture;
uniform float blur_radius;

varying vec4 texCoord;
varying vec4 frontColor;

void main()
{
    vec2 offx = vec2(blur_radius, 0.0);
    vec2 offy = vec2(0.0, blur_radius);

    vec4 pixel = texture2D(texture, texCoord.xy)               * 4.0 +
                 texture2D(texture, texCoord.xy - offx)        * 2.0 +
                 texture2D(texture, texCoord.xy + offx)        * 2.0 +
                 texture2D(texture, texCoord.xy - offy)        * 2.0 +
                 texture2D(texture, texCoord.xy + offy)        * 2.0 +
                 texture2D(texture, texCoord.xy - offx - offy) * 1.0 +
                 texture2D(texture, texCoord.xy - offx + offy) * 1.0 +
                 texture2D(texture, texCoord.xy + offx - offy) * 1.0 +
                 texture2D(texture, texCoord.xy + offx + offy) * 1.0;

    gl_FragColor =  frontColor * (pixel / 16.0);
}