#version 450
layout(local_size_x = 1) in;

struct Sub
{
	float f[2];
	vec2 f2[2];
	vec3 f3[2];
	vec4 f4[2];
};

layout(std140, binding = 0) buffer SSBO
{
	Sub sub[2];
};

void main()
{
	Sub foo = sub[gl_WorkGroupID.x];

	foo.f[gl_GlobalInvocationID.x] += 1.0;
	foo.f2[gl_GlobalInvocationID.x] += 2.0;
	foo.f3[gl_GlobalInvocationID.x] += 3.0;
	foo.f4[gl_GlobalInvocationID.x] += 4.0;
	sub[gl_WorkGroupID.x] = foo;

	sub[0].f[0] += 5.0;
	sub[0].f2[1] += 5.0;
}

