探索iOS之Metal标准库

Metal标准库包括:通用函数、整型函数、关系函数、数学函数、矩阵运算、SIMD运算、几何函数、纹理函数等。接下来让我们走进Metal标准库的世界。

1、通用函数

通用函数在<metal_common>头文件中,T为scalar或vector的浮点类型。如下表所示:

通用函数 描述
T clamp(T x, T minval, T maxval) 限制x取值范围在minval与maxval之间
T mix(T x, T y, T a) 纹理混合
T saturate(T x) 限制数值在[0.0, 1.0]
T sign(T x) 符号函数,x>0返回1.0,x<0返回-1.0
T smoothstep(T edge0, T edge1, T x) x<=edge0返回0.0,x>=edge1返回1.0
T step(T edge, T x) x<edge返回0.0,否则返回1.0

2、整型函数

整型函数在<metal_integer>头文件中,主要是位操作相关,如下表所示:

整型函数 描述
T abs(T x) 求绝对值
T clz(T x) 头部为0bit的个数
T ctz(T x) 尾部为0bit的个数

T hadd(T x, T y)

两者之和的一半
T max(T x, T y) 两者较大值
T min(T x, T y) 两者较小值
T popcount(T x) 非0位的个数
T reverse_bits(T x) 高低位反转

3、关系函数

关系函数在<metal_relational>头文件中,T为scalar或vector的浮点类型,Ti为整型,Tb为布尔类型。如下表所示:

4、数学函数

数学函数在<metal_math>头文件中, 如下表所示:

数学函数 描述
T cos(T x) 余弦函数
T sin(T x) 正弦函数
T ceil(T x) 向上取整
T floor(T x) 向下取整
T divide(T x, T y) 除法运算
T exp(T x) 指数运算
T fract(T x) 取小数部分
T log(T x) 对数运算

5、矩阵运算

矩阵运算在<metal_matrix>头文件中,T为float或half浮点类型,如下表所示:

矩阵函数 描述
float determinant(floatnxn) 求行列式
floatmxn transpose(floatnxm) 矩阵转置

6、SIMD运算

SIMD是单指令多数据的简称,操作寄存器并行运算,提高运算效率。SIMD组的矩阵运算定义在<metal_simdgroup_matrix>中,包括内存加载、存储,如下表所示:

7、 几何函数

几何函数定义在<metal_geometric>头文件中。T为vector浮点类型,Ts为scalar类型。如下表所示:

8、纹理函数

纹理函数定义在<metal_texture>头文件中, 支持1D纹理,2D纹理,3D纹理,如下表所示:

纹理函数 描述
atomic_load 加载纹理
atomic_store 存储纹理
atomic_exchange 交互纹理
atomic_min 比较纹理较大值
atomic_max 比较纹理较小值

猜你喜欢

转载自blog.csdn.net/u011686167/article/details/131204288