[] - оператор является оператором выбора элемента массива и может также использоваться для доступа к вектору.
Эквивалентный код glsl
red = texture.Sample(sampler, uv)[x];
is
float red = texture(sampler, uv)[x];
texture
возвращает значение типа vec4
(например, для sampler2D
). Компоненты вектора могут быть доступны с помощью оператора индекса. Поскольку x
является индексом, он должен быть переменной или константой с целочисленным типом данных. Вектор имеет 4 компонента (.x
, .y
, .z
, .w
соответственно .r
, .g
, .b
, .a
), поэтому значение x
должно быть 0 , 1, 2 или 3.
texture(sampler, uv)[0]
совпадает с texture(sampler, uv).r
. Смотрите также GLSL- Swizzling .