uniform sampler2D y_tex;
uniform sampler2D u_tex;
uniform sampler2D v_tex;

varying vec2 v_vTexcoord;

void main()
{
	const vec3 offset = vec3(-0.0625, -0.5, -0.5);
	
	/* ITU-R BT.709 */
	const vec3 Rcoeff = vec3(1.164,  0.000,  1.793);
	const vec3 Gcoeff = vec3(1.164, -0.213, -0.533);
	const vec3 Bcoeff = vec3(1.164,  2.112,  0.000);
	
	vec3 yuv;
	
	yuv.x = texture2D(y_tex, v_vTexcoord).r;
	yuv.y = texture2D(u_tex, v_vTexcoord).r;
	yuv.z = texture2D(v_tex, v_vTexcoord).r;
	yuv += offset;
	
	vec4 color;
	color.x = dot(yuv, Rcoeff);
	color.y = dot(yuv, Gcoeff);
	color.z = dot(yuv, Bcoeff);
	color.w = 1.0;
	
    gl_FragColor = color;
}
