#version 440 layout (local_size_x = 256) in; struct Stuff { vec2 a; vec2 b; }; layout(std140, binding = 0) buffer StuffSsbo { vec4 whatever; Stuff stuff[]; } buf; void main() { uint index = gl_GlobalInvocationID.x; vec2 a = buf.stuff[index].a; vec2 b = buf.stuff[index].b; a.x += 1.0; buf.stuff[index].a = a; b.y += 1.0; buf.stuff[index].b = b; }