- ycbcr.x = texture2D(PREFIX(tex_y), tc).x;
- ycbcr.y = texture2D(PREFIX(tex_cb), tc + PREFIX(chroma_offset)).x;
- ycbcr.z = texture2D(PREFIX(tex_cr), tc + PREFIX(chroma_offset)).x;
+#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
+ 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
+#endif