这些天我正在尝试Apple'Metal。
似乎金属着色语言与vulkan glsl
非常相似。
一些问题:
1.有没有开源编译器来编译Metal着色语言?或者它可以翻译成另一种着色语言? glsl
或spirv
?
Apple'Metal编译器的输出格式是什么?我看到有人提到它是LLVM IR,但我找不到任何文档。
金属游戏必须将已编译的IR发送给驱动程序进行渲染,对吗?他们可以使用高级金属着色语言,例如opengl
游戏直接使用glsl
吗?
想知道是否有一些文档描述了Apple的Metal IR?
谢谢!
答案 0 :(得分:2)
编译MSL的metal
工具是clang
的修改版本,但我不认为这些修改是开源的。它接受许多与clang
相同的命令行选项来生成各种输出文件。
默认情况下,它会生成.air
个文件,这些文件是LLVM bitcode。您可以使用llvm-dis
之类的工具来反汇编它们。
Metal应用程序可以使用预编译着色器,也可以在运行时从MSL源编译。应用会针对后者使用-newLibraryWithSource:...
MTLDevice
方法之一。
答案 1 :(得分:0)
发件人:https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf
Metal使用clang和LLVM,因此开发人员可以使用编译器,为在GPU上执行的代码提供接近金属性能的编译器
有关在此处构建的更多信息:
使用命令行实用程序构建库文件
xcrun -sdk macosx metal MyLibrary.metal -o MyLibrary.air
xcrun -sdk macosx metallib MyLibrary.air -o MyLibrary.metallib