SuperAPI AI 工具集

axiom-metal-migration-ref

编程与开发

查看项目

更新于 10-15 20:11

技能介绍

用途:在把着色器或图形代码迁移到 Metal 时,用于查询 GLSL→MSL、HLSL→MSL 的等价写法,以及 OpenGL/DirectX API 到 Metal API 的对应关系,并参考 MTKView、CAMetalLayer 与渲染/计算管线的搭建代码。

主要能力:提供类型映射(如 vec4→float4、mat4→float4x4、sampler2D→texture2d<float>+sampler)、内置变量映射(gl_Position→[[position]]、gl_VertexID→[[vertex_id]])、函数映射(texture→tex.sample、mod→fmod、inversesqrt→rsqrt、atan→atan2、lerp→mix、frac→fract、ddx→dfdx);HLSL 语义映射(SV_Position→[[position]]、SV_DispatchThreadID→[[thread_position_in_grid]] 等);OpenGL 资源、状态、绘制命令与图元类型到 Metal 的对照;MTKView 与 CAMetalLayer 完整初始化示例;计算着色器管线示例;以及 Metal Shader Converter 的 DXIL→metallib 工作流。

使用方式:按需查阅对应映射表;DirectX 转换流程为先用 dxc 编译 HLSL 到 DXIL,再用 metal-shaderconverter 生成 metallib,例如 metal-shaderconverter vertex.dxil -o vertex.metallib,随后在 Swift 中用 device.makeLibrary(URL:) 加载。

适用场景:图形/游戏引擎从 OpenGL 或 DirectX 迁移到 Metal,编写 MSL 着色器,搭建 MTKView 或 CAMetalLayer 渲染循环,配置渲染管线与计算管线。

限制:资料未提供收费、价格、平台支持范围与效果保证等信息;MSL 无 64 位 float,double 需改用 float;GLSL 精度限定符无直接等价,需用 half/float 等显式类型;float3 需 16 字节对齐,CPU-GPU 共享结构建议用 simd 类型或 packed 类型;GL_TRIANGLE_FAN 在 Metal 中无对应,需拆分为三角形;Metal Shader Converter 要求 macOS 13+ 与 Xcode 15+,或 Windows 10+ 与 VS 2019+,目标设备需 Argument Buffers Tier 2(macOS 14+、iOS 17+),支持 SM 6.0–6.6 且 6.6 部分特性受限。