Metal Shading Language 简介

2020-08-28  本文已影响0人  AndyGF

简介:

Metal Shading Language(以下简称 MSL) 很明显是用于 Metal 程序中的着色语言, 是⼀个⽤来编写 3D 图形渲染逻辑和并行计算核⼼逻辑的编程语言, 编写 Metal 框架的 APP 需要使⽤ MSL程序.MSL 与 Metal 框架配合使⽤, Metal 框架管理 MSL的运行和可选编译选项. MSL使用 Clang 和 LLVM, 编译器对于在 GPU 上的代行效率有更好的控制.

由于 GPU 的擅长的是高并发的数学运算, 而不是逻辑运算, 所以MSL的语法相比较常用的编程语言还是比较简单的, 没有那么多复杂的语法, 比如 Lambda表达式, 动态转换操作符, 递归函数调⽤ 等等, 更多的是基本数据类型 标量 , 向量 , 矩阵 ......

MSL 数据类型 :

Metal 标量数据类型
Metal 数据类型
Metal 向量和矩阵数据类型
----------- 向量

向量中的 n, 指的是维度.

----------- 矩阵

nxm 分别指的是矩阵的行数和列数.

缓存 buffer

在 Metal 中实现缓存靠的是一个指针.它指向一个在 Device 或者 constant 地址空间中的内建或是开发者自定义的数据块.缓存可以被定在程序域中, 或是当做函数的参数传递.

纹理Textures

纹理Textures

采样器 Samplers

采样器 Samplers

函数修饰符

MSL 支持下列的函数修饰符:

变量与参数的地址空间修饰符

MSL 使用 "地址空间修饰符号", 来表示一个函数变量或是参数被分于那块内存区域. 下面这些修饰符描述了不相交叠地址空间:

函数参数和变量

图形绘制 或是 并行计算着色函数 的输入/输出都需要通过参数传递(除了常量地址空间变量和程序域中定义的采样器以外). 参数可以是如下之一:

用于寻址缓存,纹理,采样器属性修饰符

device 和 constant buffers — [[ buffer ( index ) ]]
texture —[[ texture ( index ) ]]
sampler — [[ sampler ( index ) ]]
threadgroup buffer — [[ threadgroup ( index ) ]]

上一篇 下一篇

猜你喜欢

热点阅读