#version 450 layout(local_size_x = 1) in; layout(set = 0, binding = 0, std430) writeonly buffer SSBO { mat2 m22; mat2x3 m23; mat2x4 m24; mat3x2 m32; mat3 m33; mat3x4 m34; mat4x2 m42; mat4x3 m43; mat4 m44; }; layout(set = 0, binding = 1, std430) readonly buffer ReadSSBO { vec2 v2; vec3 v3; vec4 v4; }; void main() { m22 = outerProduct(v2, v2); m23 = outerProduct(v3, v2); m24 = outerProduct(v4, v2); m32 = outerProduct(v2, v3); m33 = outerProduct(v3, v3); m34 = outerProduct(v4, v3); m42 = outerProduct(v2, v4); m43 = outerProduct(v3, v4); m44 = outerProduct(v4, v4); }