uniform sampler2D uTex0;
uniform float uTime;
uniform vec2 uFocusPos;
uniform vec2 uOffset;
void main()
{
	float len = length(gl_TexCoord[0].st - uFocusPos);
	len = min(len*2., 1.133) * smoothstep(.0, .6, uTime);
	vec4 currentSample = vec4(0.,0.,0.,0.);
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(6.0*len))	* 0.002216;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(5.0*len))	* 0.008764;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(4.0*len))	* 0.026995;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(3.0*len))	* 0.064759;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(2.0*len))	* 0.120985;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st - uOffset * vec2(len))		* 0.176033;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st)					* 0.199471;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(len))		* 0.176033;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(2.0*len))	* 0.120985;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(3.0*len))	* 0.064759;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(4.0*len))	* 0.026995;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(5.0*len))	* 0.008764;
	currentSample += texture2D(uTex0, gl_TexCoord[0].st + uOffset * vec2(6.0*len))	* 0.002216;
	gl_FragColor = currentSample;
}
