rendering-textured-shape.frag 932 Bytes
uniform sampler2D uTexture;
uniform mediump float uBrightness;
varying mediump vec2 vTexCoord;
varying mediump vec3 vIllumination;

mediump vec3 redistribute_rgb(mediump vec3 color)
{
    mediump float threshold = 0.9999999;
    mediump float m = max(max(color.r, color.g), color.b);
    if(m <= threshold)
    {
        return color;
    }
    mediump float total = color.r + color.g + color.b;
    if( total >= 3.0 * threshold)
    {
        return vec3(threshold);
    }
    mediump float x = (3.0 * threshold - total) / (3.0 * m - total);
    mediump float gray = threshold - x * m;
    return vec3(gray) + vec3(x)*color;
}

void main()
{
  mediump vec4 texColor = texture2D( uTexture, vTexCoord );
  //mediump vec4 texColor = vec4(0.5,0.5,0.5,1.0);
  //gl_FragColor = vec4(texColor.rgb, 1.0);

  mediump vec3 pcol=vec3(vIllumination.rgb * texColor.rgb)*(1.0+uBrightness);
  gl_FragColor = vec4( redistribute_rgb(pcol), 1.0);
}