#version 310 es layout(local_size_x = 1) in; layout(std430, binding = 0) buffer SSBO0 { vec4 as[]; }; layout(std430, binding = 1) buffer SSBO1 { vec4 bs[]; }; struct Composite { vec4 a; vec4 b; }; const vec4 const_values[2] = vec4[](vec4(20.0), vec4(40.0)); void main() { vec4 values[2] = vec4[](as[gl_GlobalInvocationID.x], bs[gl_GlobalInvocationID.x]); vec4 copy_values[2]; copy_values = const_values; Composite c = Composite(values[0], copy_values[1]); as[0] = values[gl_LocalInvocationIndex]; bs[1] = c.b; }