const int KernelSize = 9;

//texture offsets
uniform vec2 Offset[KernelSize];
//convolution kernel
uniform vec4 KernelValue[KernelSize];
uniform sampler2D srcTex;
uniform vec4 ScaleFactor;
uniform vec4 BaseColor;

void main(void)
{
    int i;
    vec4 sum = vec4(0.0);
    for (i = 0; i < KernelSize; ++i) {
        vec4 tmp = texture2D(srcTex, gl_TexCoord[0].st + Offset[i]);
        sum += tmp * KernelValue[i];
    }
    gl_FragColor = sum * ScaleFactor + BaseColor;
}