X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr_input.frag;h=170e412314ebeb9e5434bcce3d78f8d25db42f4f;hp=c57c6d184441445d57b1d0892f83dfc059383eec;hb=919101c59390dbbe380af7cc77102819e515a632;hpb=ae634b4c9fd1a8275b36458862ada71a44063108 diff --git a/ycbcr_input.frag b/ycbcr_input.frag index c57c6d1..170e412 100644 --- a/ycbcr_input.frag +++ b/ycbcr_input.frag @@ -3,6 +3,10 @@ // 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. +// uniform mat3 PREFIX(ycbcr_matrix); +// uniform vec3 PREFIX(offset); +// uniform vec2 PREFIX(cb_offset); +// uniform vec2 PREFIX(cr_offset); vec4 FUNCNAME(vec2 tc) { // OpenGL's origin is bottom-left, but most graphics software assumes @@ -11,17 +15,21 @@ vec4 FUNCNAME(vec2 tc) { tc.y = 1.0 - tc.y; vec3 ycbcr; +#if Y_CB_CR_SAME_TEXTURE + ycbcr = tex2D(PREFIX(tex_y), tc).xyz; +#else ycbcr.x = tex2D(PREFIX(tex_y), tc).x; -#if CB_CR_SAME_TEXTURE -#if CB_CR_OFFSETS_EQUAL + #if CB_CR_SAME_TEXTURE + #if CB_CR_OFFSETS_EQUAL ycbcr.yz = tex2D(PREFIX(tex_cbcr), tc + PREFIX(cb_offset)).xy; -#else + #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 + #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 #endif ycbcr -= PREFIX(offset);