X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr_input.frag;fp=ycbcr_input.frag;h=c57c6d184441445d57b1d0892f83dfc059383eec;hp=b84499d4408b4c1a97ce41785f4e7104573b7ebb;hb=ae634b4c9fd1a8275b36458862ada71a44063108;hpb=8bb071c7d0f0b03ffd15b3919f4e6afded57d1ea diff --git a/ycbcr_input.frag b/ycbcr_input.frag index b84499d..c57c6d1 100644 --- a/ycbcr_input.frag +++ b/ycbcr_input.frag @@ -1,7 +1,8 @@ // Implicit uniforms: // uniform sampler2D PREFIX(tex_y); -// uniform sampler2D PREFIX(tex_cb); -// uniform sampler2D PREFIX(tex_cr); +// uniform sampler2D PREFIX(tex_cbcr); // If CB_CR_SAME_TEXTURE. +// uniform sampler2D PREFIX(tex_cb); // If not CB_CR_SAME_TEXTURE. +// uniform sampler2D PREFIX(tex_cr); // If not CB_CR_SAME_TEXTURE. vec4 FUNCNAME(vec2 tc) { // OpenGL's origin is bottom-left, but most graphics software assumes @@ -11,8 +12,17 @@ vec4 FUNCNAME(vec2 tc) { vec3 ycbcr; ycbcr.x = tex2D(PREFIX(tex_y), tc).x; +#if CB_CR_SAME_TEXTURE +#if CB_CR_OFFSETS_EQUAL + ycbcr.yz = tex2D(PREFIX(tex_cbcr), tc + PREFIX(cb_offset)).xy; +#else + ycbcr.y = tex2D(PREFIX(tex_cbcr), tc + PREFIX(cb_offset)).x; + ycbcr.z = tex2D(PREFIX(tex_cbcr), tc + PREFIX(cr_offset)).x; +#endif +#else ycbcr.y = tex2D(PREFIX(tex_cb), tc + PREFIX(cb_offset)).x; ycbcr.z = tex2D(PREFIX(tex_cr), tc + PREFIX(cr_offset)).x; +#endif ycbcr -= PREFIX(offset);