矢量和矩阵类型
Metal Shading 语言的矢量数学库提供了对矢量和矩阵类型表示和运算的支持。
矢量的命名规则如下所示:
booln,
charn, shortn, intn, uncharn, ushortn, uintn
halfn, floatn
这里 n 可以是 2, 3, 4 的其中一个数字, 表示 2-, 3-, 4- 维矢量。
矩阵的命名规则如下:
halfnxm, floatnxm
这里的n和m也是2,3, 4的其中一个数字, 表示矩阵的列数和行数, 矩阵也可以被视为多个矢量的组合, 比如floatnx3 可以被看作是n个float3的矢量, half4xn可以被看作是4个halfn的矢量。
访问矢量的成员 (Accessing Vector Components)
矢量成员的访问就如同访问数组成员这么简单, 可以用数字下标来表示访问哪个成员。 比如 Index 0 表示矢量中的第一个成员, index 1 表示矢量中的第二个成员, 依次类推。 下面的代码就是一些例子。
pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
float x = pos[0]; // x = 1.0
float z = pos[2]; // z = 3.0
float4 vA = float4(1.0f, 2.0f, 3.0f, 4.0f);
float4 vB;
for (int i=0; i<4; i++)
vB[i] = vA[i] * 2.0f // vB = (2.0, 4.0, 6.0, 8.0);