#version 450 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; struct A { int a; int b; }; struct A_1 { int a; int b; }; layout(binding = 1, std430) buffer C1 { A Data[]; } C1_1; layout(binding = 2, std140) uniform C2 { A_1 Data[1024]; } C2_1; layout(binding = 0, std430) buffer B { A Data[]; } C3; layout(binding = 3, std140) uniform B { A_1 Data[1024]; } C4; void main() { C1_1.Data[gl_GlobalInvocationID.x].a = C2_1.Data[gl_GlobalInvocationID.x].a; C1_1.Data[gl_GlobalInvocationID.x].b = C2_1.Data[gl_GlobalInvocationID.x].b; C3.Data[gl_GlobalInvocationID.x].a = C4.Data[gl_GlobalInvocationID.x].a; C3.Data[gl_GlobalInvocationID.x].b = C4.Data[gl_GlobalInvocationID.x].b; }