#define KERNEL_SIZE 9

// Gaussian kernel
// 1 2 1
// 2 4 2
// 1 2 1	
float kernel[KERNEL_SIZE];

uniform sampler2D colorMap;
uniform float width;
uniform float height;

varying vec2 PixPos;

float step_w = 1.0/width;
float step_h = 1.0/height;
const float scale = 1./9.;
//obsolete const float step_w = 1.0 / 256.0;
//const float step_h = 1.0 / 256.0;

vec2 offset[KERNEL_SIZE];
						 
void main(void)
{
   int i = 0;
   vec4 sum = vec4(0.0);
   
   offset[0] = vec2(-step_w, -step_h);
   offset[1] = vec2(0.0, -step_h);
   offset[2] = vec2(step_w, -step_h);
   
   offset[3] = vec2(-step_w, 0.0);
   offset[4] = vec2(0.0, 0.0);
   offset[5] = vec2(step_w, 0.0);
   
   offset[6] = vec2(-step_w, step_h);
   offset[7] = vec2(0.0, step_h);
   offset[8] = vec2(step_w, step_h);
   
//   kernel[0] = 1.0/16.0; 	kernel[1] = 2.0/16.0;	kernel[2] = 1.0/16.0;
//   kernel[3] = 2.0/16.0;	kernel[4] = 4.0/16.0;	kernel[5] = 2.0/16.0;
//   kernel[6] = 1.0/16.0;   	kernel[7] = 2.0/16.0;	kernel[8] = 1.0/16.0;
   
   
   if(PixPos.s<0.495)
   {
	   for( i=0; i<KERNEL_SIZE; i++ )
	   {
			//vec4 tmp = texture2D(colorMap, PixPos.st + offset[i]);
			vec4 tmp = texture2D(colorMap, PixPos.xy + offset[i]);
			//sum += (tmp * kernel[i]);
			sum += (tmp * scale);
	   }
   }
   else if( PixPos.s>0.505 )
   {
		sum = texture2D(colorMap, PixPos.xy);
   }
   else
   {
		sum = vec4(1.0, 0.0, 0.0, 1.0);
	}

   gl_FragColor = sum;
}
