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