在WebGL参考卡中,有关于Vector组件的文档。
虽然在我看来我也可以使用{x,y,z,w},但我无法理解从Textures读取时是否必须使用{s,t,p,q}。
访问表示纹理坐标的载体使用时
{s,t,p,q}字母的含义是什么?这仅仅是可读代码的约定问题,还是我想念的更多东西?
参见WebGL Specification Vesion 1.0:
4.3支持的GLSL构造
WebGL实现必须仅接受符合OpenGL ES着色语言1.00版的着色器...
5.5矢量分量
向量或标量的组成部分的名称用单个字母表示。为了符号上的方便,基于位置,颜色或纹理坐标矢量的常用用法,几个字母与每个组件相关联。可以通过在变量名后加上句点(。),然后选择组件名来选择各个组件。
支持的组件名称为:
{x, y, z, w}在访问代表点或法线的向量时很有用
{r, g, b, a}在访问代表颜色的矢量时很有用
{s, t, p, q}访问表示纹理坐标的矢量时很有用组件名称
x,r以及s是,例如,用于在矢量相同的(第一)部件的同义词。请注意,r在OpenGL ES中,纹理坐标集的第三部分已被重命名p,以避免与r颜色(对于红色)混淆。
这意味着对于vec4 v;,v.stpq与v.xyzw或完全相同v.rgba。
s,t的命名来自于Plane(几何),其中可以用参数R = R0 + s V + t W 形式表示所有点的集合(R和R0是点,V和W是点)。向量s和t是实数。