#extension GL_EXT_gpu_shader4 : enable

#if __VERSION__ >= 130
  #define varying in
  out vec4 mgl_FragColor;
  #define texture2D texture
  #define gl_FragColor mgl_FragColor
#endif

#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif

varying vec2 			v_texCoord ;
uniform sampler2D 		s_texture0 ;
uniform sampler2D 		s_LUT ;

uniform sampler2D 		s_mask ;
uniform vec2 			s_mask_offset ;
uniform vec2 			s_mask_scale ;
uniform float			s_mask_min ;

uniform vec4 			baseColor ;
//uniform mat4 			colorMatrix ;

const float ALPHA_THRESHOLD = 0.05 ;

void main (void)
{
	vec4 src = texture2D(s_texture0 , v_texCoord) * baseColor ;

	float cmax = max( src.r , max( src.g , src.b ) ) / src.a ;
	float cmin = min( src.r , min( src.g , src.b ) ) / src.a ;
	float light = 0.5 * ( cmax + cmin ) ;

	vec4 col = texture2D( s_LUT , vec2(light,0.5) ) ;
	col.rgb = col.rgb * src.a ;
	col.a = src.a ;

//	gl_FragColor = col ;
	vec4 mask = texture2D(s_mask , gl_FragCoord.xy * s_mask_scale + s_mask_offset ) ;
	col = clamp(col , 0.0 , src.a) ;

	gl_FragColor = col * max( s_mask_min , mask.r );

} 
