uniform			sampler2DRect sampler;

// k2vuyPixelFormat

vec4 rgb_to_2vuy(
				vec4					colour1,
				vec4					colour2)
{
	vec4		yuvPixel;

//	BT.709
	const vec4				y_values	=	vec4( 0.182585882352941,	 0.614230588235294,		 0.0620070588235294,	0.0);
	const vec4				u_values	=	vec4(-0.100643732379781,	-0.338571953894729,		 0.43921568627451,		0.0);
	const vec4				v_values	=	vec4( 0.43921568627451,		-0.398942162590207,		-0.0402735236843023,	0.0);
	const vec4				norm_values	=	vec4(128.0/255.0,	16.0/255.0,		128.0/255.0,	16.0/255.0);

	// Intel endian
	yuvPixel.b	=			(dot(u_values, colour2) + dot(u_values, colour1)) * 0.5;
	yuvPixel.g	=			dot(y_values, colour1);
	yuvPixel.r	=			(dot(v_values, colour2) + dot(v_values, colour1)) * 0.5;
	yuvPixel.a	=			dot(y_values, colour2);
	yuvPixel	+=			norm_values;

	return yuvPixel;
}

void main()
{
	vec4			yuvPixel	=	rgb_to_2vuy(	texture2DRect(sampler, vec2(gl_TexCoord[0])),
													texture2DRect(sampler, vec2(gl_TexCoord[1])));
	gl_FragColor	=	yuvPixel;
}
