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:

{ x, y, z, w } Useful when accessing vectors that represent points or vectors.
{ r, g, b, a } Useful when accessing vectors that represent colors.

{ s, t, p, q }

Useful when accessing vectors that represent texture coordinates.

 

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
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.149.243.32