Я думаю, что вы, возможно, неправильно прочитали спецификацию - вполне допустимо читать отдельные компоненты.GLSL даже допускает неявные перестановки и комбинации исходных компонентов, например
lowp vec4 someVector;
// someVector.xy is a lowp vec2 containing the first two scalars from someVector
// someVector.zwx is a lowp vec3 containing the third, fourth and first scalars in that order
// someVector.w is a lowp float containing the fourth scalar
Например, я использовал фрагментный шейдер:
void main()
{
lowp vec4 srcPixel = texture2D(tex2D, texCoordVarying);
lowp vec4 yuvPixel = rgbToYuv * srcPixel;
yuvPixel.r *= 3.0;
gl_FragColor = yuvToRgb * yuvPixel;
}
С подходящими матрицами и вариациями для усиленияЯркость текстуры в три раза.