对于运行时生成的着色器代码,我有兴趣探索是否可以直接自动生成编译过的 Metal Shader Language (MSL) 代码(在 .metallib
文件中找到,并且与 newLibraryWithData:error:
方法一起使用),而不是自动生成人类可读的 MSL 源代码(与 newLibraryWithSource:options:error:
方法一起使用)。
这样做的原因有两个:
- 根据编译代码格式,自动生成编译后的着色器代码可能更简单、更干净,而不必处理人类可读格式。
- 去除着色器编译阶段将加快运行时生成着色器的创建速度。
是否有关于编译后的 MSL 代码格式的文档,例如在 .metallib
文件中找到的格式?编译后的格式是否特定于 GPU,或者它存在作为中间语言格式,在 newLibraryWithData:error:
方法内进行最终编译阶段时被带到 GPU 级别?
metal
命令行工具的输出是中间表示形式这一事实保密。 - warrenm