#version 120
uniform sampler2D screen;
varying vec2 uv;

const float blurStep = 0.001;
const vec3 gray = vec3(0.50, 0.50, 0.50);
const float desaturateLevel = 0.6;

void main()
{
	//Blur the pixel
	vec4 color = texture2D(screen, uv);
	color += texture2D(screen, uv + vec2(-blurStep, -blurStep));
	color += texture2D(screen, uv + vec2(0, -blurStep));
	color += texture2D(screen, uv + vec2(+blurStep, -blurStep));

	color += texture2D(screen, uv + vec2(-blurStep, 0));
	color += texture2D(screen, uv + vec2(+blurStep, 0));

	color += texture2D(screen, uv + vec2(-blurStep, +blurStep));
	color += texture2D(screen, uv + vec2(0, +blurStep));
	color += texture2D(screen, uv + vec2(+blurStep, +blurStep));
	color /= 9.0;

	//Desaturate the pixel
	color.rgb = mix(vec3(dot(gray, color.rgb)), color.rgb, desaturateLevel);

	//Darkened edge
	float dist = length(uv - vec2(0.5, 0.5));
	if(dist > 0.4)
		color.rgb = mix(color.rgb, vec3(0.0, 0.0, 0.0), (dist - 0.4)/0.3);

	gl_FragColor = color * gl_Color;
}
