Open
Description
metal-support 分支中的 ShaderModuleMTL.mm 使用了 glsl_optimizer 这个库。glsl_optimizer 在将 GLSL 转换成 MSL 时,有些问题。
- glsl-optimizer 将 mod 直接转换成 MSL 的 fmod。但两者实际是不等价的。
- glsl-optimizer 在转换 varying vec3 thing[4]; 这种语法时,没有将数组展开,导致转换后的 MSL 编译不过。
- glsl-optimizer 分别独立转换 vertex shader 和 fragment shader, 假如 varying 定义变量顺序不一致,转换后的 MSL 就会出问题。
详细情况见 GL 移植到 Metal 的小细节 一文最后的备注。