uniform Transform { vec3 translation; float rotation; }; #pragma MSP stage(vertex) layout(location=0) in vec2 position; void main() { float c = cos(rotation); float s = sin(rotation); mat3 m = mat3(c, s, 0.0, -s, c, 0.0, translation); gl_Position = vec4((m*vec3(position, 1.0)).xy, 0.0, 1.0); } // Target API: Vulkan /* Expected output: vertex layout(set=0, binding=24) uniform Transform { vec3 translation; float rotation; }; layout(location=0) in vec2 position; void main() { float c = cos(rotation); float s = sin(rotation); gl_Position = vec4((mat3(vec3(c, s, 0.0), vec3(-s, c, 0.0), translation)*vec3(position, 1.0)).xy, 0.0, 1.0); } */