You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
#extension GL_OES_EGL_image_external : require
|
|
|
|
precision mediump float;
|
|
|
|
varying highp vec2 textureCoordinate;
|
|
|
|
uniform samplerExternalOES inputImageTexture;
|
|
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(inputImageTexture, textureCoordinate);
|
|
|
|
//pic2
|
|
vec3 maxValue = vec3(0.,0.,0.);
|
|
|
|
for(int i = -2; i<=2; i++)
|
|
{
|
|
for(int j = -2; j<=2; j++)
|
|
{
|
|
vec4 tempColor = texture2D(inputImageTexture, textureCoordinate+singleStepOffset*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);
|
|
} |