Use when converting shaders or looking up API equivalents - GLSL to MSL, HLSL to MSL, GL/DirectX to Metal mappings, MTKView setup code
View on GitHubSelect agents to install to:
npx add-skill https://github.com/CharlesWiltgen/Axiom/blob/main/.claude-plugin/plugins/axiom/skills/axiom-metal-migration-ref/SKILL.md -a claude-code --skill axiom-metal-migration-refInstallation paths:
.claude/skills/axiom-metal-migration-ref/# Metal Migration Reference Complete reference for converting OpenGL/DirectX code to Metal. ## When to Use This Reference Use this reference when: - Converting GLSL shaders to Metal Shading Language (MSL) - Converting HLSL shaders to MSL - Looking up GL/D3D API equivalents in Metal - Setting up MTKView or CAMetalLayer - Building render pipelines - Using Metal Shader Converter for DirectX ## Part 1: GLSL to MSL Conversion ### Type Mappings | GLSL | MSL | Notes | |------|-----|-------| | `void` | `void` | | | `bool` | `bool` | | | `int` | `int` | 32-bit signed | | `uint` | `uint` | 32-bit unsigned | | `float` | `float` | 32-bit | | `double` | N/A | Use `float` (no 64-bit float in MSL) | | `vec2` | `float2` | | | `vec3` | `float3` | | | `vec4` | `float4` | | | `ivec2` | `int2` | | | `ivec3` | `int3` | | | `ivec4` | `int4` | | | `uvec2` | `uint2` | | | `uvec3` | `uint3` | | | `uvec4` | `uint4` | | | `bvec2` | `bool2` | | | `bvec3` | `bool3` | | | `bvec4` | `bool4` | | | `mat2` | `float2x2` | | | `mat3` | `float3x3` | | | `mat4` | `float4x4` | | | `mat2x3` | `float2x3` | Columns x Rows | | `mat3x4` | `float3x4` | | | `sampler2D` | `texture2d<float>` + `sampler` | Separate in MSL | | `sampler3D` | `texture3d<float>` + `sampler` | | | `samplerCube` | `texturecube<float>` + `sampler` | | | `sampler2DArray` | `texture2d_array<float>` + `sampler` | | | `sampler2DShadow` | `depth2d<float>` + `sampler` | | ### Built-in Variable Mappings | GLSL | MSL | Stage | |------|-----|-------| | `gl_Position` | Return `[[position]]` | Vertex | | `gl_PointSize` | Return `[[point_size]]` | Vertex | | `gl_VertexID` | `[[vertex_id]]` parameter | Vertex | | `gl_InstanceID` | `[[instance_id]]` parameter | Vertex | | `gl_FragCoord` | `[[position]]` parameter | Fragment | | `gl_FrontFacing` | `[[front_facing]]` parameter | Fragment | | `gl_PointCoord` | `[[point_coord]]` parameter | Fragment | | `gl_FragDepth` | Return `[[depth(any)]]` | Fragment | | `gl_SampleID` | `[[sample_id]]` paramet