=
R"lang=glsl(
#version 330 core
uniform sampler2D tex;
uniform mat3 yuvToRgb;
uniform vec3 yuvRange;
in vec2 position;
out vec4 fragColor;
void main() {
ivec2 size = textureSize(tex, 0) * ivec2(2, 1);
ivec2 pix = ivec2((0.5 + 0.5 * position) * size);
vec4 yuyv = texelFetch(tex, pix / ivec2(2, 1), 0);
vec3 yuv;
if (pix.x % 2 == 0) {
yuv = yuvRange * (yuyv.xyw * vec3(1, 2, 2) - vec3(0, 1, 1));
} else {
yuv = yuvRange * (yuyv.zyw * vec3(1, 2, 2) - vec3(0, 1, 1));
}
vec3 rgb = yuvToRgb * yuv;
fragColor = vec4(rgb, 1);
}
)lang=glsl"