flowchart TB hlsl["HLSL compute shader
ddx(), Sample(), CalculateLevelOfDetail()"] --> dxil["dxil-spirv
2D group → linear quads
(lanes 4k..4k+3)"] dxil --> spirv["SPIR-V OpDPdx / implicit-LOD sample"] spirv --> before["stock SPIRV-Cross: dfdx() in a kernel"] before -->|"Metal: unsupported builtin"| fail["pipeline creation fails"] spirv --> patched["patch 0018"] patched --> shuffle["ddx = quad_shuffle(v, 1) − quad_shuffle(v, 0)
ddy = quad_shuffle(v, 2) − quad_shuffle(v, 0)"] patched --> grad["sample(..., gradient2d(ddx, ddy))"]