- Real-Time 3D Graphics with WebGL 2
- Farhad Ghayour Diego Cantor
- 206字
- 2021-06-10 19:43:06
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 r, g, b, a 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