#version 450 layout(local_size_x = 3, local_size_y = 3, local_size_z = 2) in; layout(set = 0, binding = 0) uniform Foo { int a; int b; }; layout(set = 0, binding = 1) uniform Bar { int c; int d; }; layout(set = 1, binding = 2) buffer Baz { int e; int f; } baz[3][3][2]; void main() { uvec3 coords = gl_GlobalInvocationID; baz[coords.x][coords.y][coords.z].e = a + c; baz[coords.x][coords.y][coords.z].f = b * d; }