#ifdef GL_ES
precision highp float;
#endif

// Samplers
varying vec2 vUV;
uniform sampler2D textureSampler;

// Parameters
uniform vec2 screenSize;
uniform vec2 direction;
uniform float blurWidth;

void main(void)
{
	float weights[7];
	weights[0] = 0.05;
	weights[1] = 0.1;
	weights[2] = 0.2;
	weights[3] = 0.3;
	weights[4] = 0.2;
	weights[5] = 0.1;
	weights[6] = 0.05;

	vec2 texelSize = vec2(1.0 / screenSize.x, 1.0 / screenSize.y);
	vec2 texelStep = texelSize * direction * blurWidth;
	vec2 start = vUV - 3.0 * texelStep;

	vec4 baseColor = vec4(0., 0., 0., 0.);
	vec2 texelOffset = vec2(0., 0.);

	for (int i = 0; i < 7; i++)
	{
		baseColor += texture2D(textureSampler, start + texelOffset) * weights[i];
		texelOffset += texelStep;
	}

	gl_FragColor = baseColor;
}