varying highp vec2 vTextureCoord;
precision mediump float;

uniform sampler2D uSampler;
uniform vec2 singleStepOffset;
uniform float strength;

const highp vec3 W = vec3(0.299,0.587,0.114);


void main()
{
	float threshold = 0.0;
	//pic1
	vec4 oralColor = texture2D(uSampler, vTextureCoord);

	//pic2
	vec3 maxValue = vec3(0.,0.,0.);

	for(int i = -2; i<=1; i++)
	{
		for(int j = -2; j<=1; j++)
		{
			vec4 tempColor = texture2D(uSampler, vTextureCoord+vec2(0.00052, 0.000926)*vec2(i,j));
			maxValue.r = max(maxValue.r,tempColor.r);
			maxValue.g = max(maxValue.g,tempColor.g);
			maxValue.b = max(maxValue.b,tempColor.b);
			threshold += dot(tempColor.rgb, W);
		}
	}
	//pic3
	float gray1 = dot(oralColor.rgb, W);

	//pic4
	float gray2 = dot(maxValue, W);

	//pic5
	float contour = gray1 / gray2;

	threshold = threshold / 25.;
	float alpha = max(1.0,gray1>threshold?1.0:(gray1/threshold));

	float result = contour * alpha + (1.0-alpha)*gray1;

	gl_FragColor = vec4(vec3(result,result,result), oralColor.w);
} 