1 uniform sampler2D PREFIX(tex_y);
2 uniform sampler2D PREFIX(tex_cb);
3 uniform sampler2D PREFIX(tex_cr);
5 #if YCBCR_ALSO_OUTPUT_RGBA
6 vec4[2] FUNCNAME(vec2 tc) {
8 vec4 FUNCNAME(vec2 tc) {
10 vec4 rgba = INPUT(tc);
13 ycbcr_a.rgb = PREFIX(ycbcr_matrix) * rgba.rgb + PREFIX(offset);
16 // If we use limited-range Y'CbCr, the card's usual 0–255 clamping
17 // won't be enough, so we need to clamp ourselves here.
19 // We clamp before dither, which is a bit unfortunate, since
20 // it means dither can take us out of the clamped range again.
21 // However, since DitherEffect never adds enough dither to change
22 // the quantized levels, we will be fine in practice.
23 ycbcr_a.rgb = clamp(ycbcr_a.rgb, PREFIX(ycbcr_min), PREFIX(ycbcr_max));
28 #if YCBCR_ALSO_OUTPUT_RGBA
29 return vec4[2](ycbcr_a, rgba);