您的位置:首页 > 编程语言

Metal 着色语言编程指南 八

2016-04-18 22:01 246 查看
构造矩阵对象

同矢量对象的构造相似, 矩阵对象也可以从标量或者矢量集合来构造,  当矩阵初始化时,其构造器参数决定了它是如何被创建的。 例如, 如果构造器参数仅仅是一个标量, 那么这个矩阵的对角线上的成员被初始化为这个标量,其他成员被初始化为0.0。  

下面的这个调用

float4x4(fval);
构造的矩阵为:

fval    0.0    0.0    0.0
0.0    fval    0.0    0.0
0.0    0.0    fval    0.0
0.0    0.0    0.0    fval


矩阵也可以从另一个相同维数的矩阵来构建:

float3x4(float3x4);
float3x4(half3x4);
这种构造方式,矩阵的成员是以列为顺序来初始化的, 参数矩阵的维数必须与目标矩阵相同, 否则(过多或者过少)都会引发编译错误。 

一个nxm的矩阵可以从n个m维的矢量来构造,例如:

float2x2(float2, float2);
float3x3(float3, float3, float3);
float3x2(float2, float2, float2);
矩阵不能从多个标量或者标量与矢量的组合来构造, 下面是一些非法的构造:

// both cases below are not supported
float2x2(float a00, float a01, float a10, float a11);
float2x3(float2 a, float b, float2 c, float d);


原子数据类型(Atomic Data Type)

原子类型只能在原子函数(Atomic Function)中使用, 关于原子函数会在下文讲述。 Metal 着色语言的原子函数就是C++11中的原子与同步函数的子集。 原子函数必须操作原子数据。 
Metal 着色语言的原子类型有:  atomic_int 和 atomic_uint。  

译自: 
https://developer.apple.com/library/ios/documentation/Metal/Reference/MetalShadingLanguageGuide/data-types/data-types.html#//apple_ref/doc/uid/TP40014364-CH2-SW1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Metal iOS shading