Vector Components

We can refer to each one of the components of an ESSL vector by its index. For example, uLightColor[3] will refer to the fourth element of the vector (zero-based vectors). However, we can also refer to each component by a letter, as demonstrated in the following table:

For example, if we want to set the alpha channel (fourth component) of our uLightColor variable to 1.0, we can do so by writing in any of the following formats:

uLightColor[3] = 1.0;
uLightColor.w = 1.0;
uLightColor.a = 1.0;
uLightColor.q = 1.0;

In all these of cases, we are referring to the same fourth component. However, given that uLightColor represents a color, it makes more sense to use the rgba notation.

It’s also possible to use the vector component notation to refer to subsets inside a vector. For example (taken from GLSL ES specification):

vec4 v4;

v4.rgba; // is a vec4 and the same as just using v4
v4.rgb; // is a vec3
v4.b; // is a float
v4.xy; // is a vec2
v4.xgba; // is illegal - the component names do not come from the same set