precision highp float;
varying highp vec2 v_TexCoordinate;
uniform sampler2D s_texture_y;
uniform sampler2D s_texture_u;
uniform sampler2D s_texture_v;
uniform sampler2D u_mask_Texture;
varying highp vec2 mask_v_texcoord;
uniform highp float     s_alpha;
uniform highp float  time;
uniform highp float  has_video;
float snoise(vec2 co){
  return 0.5+0.5*fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
void main()
{
  highp float mask_a  = texture2D(u_mask_Texture, mask_v_texcoord).a*s_alpha;
  if(has_video>0.0){
	highp float y = texture2D(s_texture_y, v_TexCoordinate).r - 0.0625;
	highp float u = texture2D(s_texture_u, v_TexCoordinate).r - 0.5;
	highp float v = texture2D(s_texture_v, v_TexCoordinate).r - 0.5;
	highp float r = 1.164 * y +               1.596   * v;
	highp float g = 1.164 * y - 0.392 * u - 0.813 * v;
	highp float b = 1.164 * y + 2.017   * u;
	gl_FragColor = vec4(r*mask_a,g*mask_a,b*mask_a,mask_a);
  }else{
  	 float n = snoise(vec2(gl_FragCoord.x/100.0*cos(time),gl_FragCoord.y/100.0*sin(time)))*mask_a;
     gl_FragColor = vec4(n,n,n,mask_a);
  }

}