#version 450

struct Foo
{
	int a;
	int b;
	int c;
};

layout(std140, binding = 0) uniform UBO
{
	layout(offset = 4) int a;
	layout(offset = 8) int b;
	layout(offset = 16) Foo foo;
	layout(offset = 48) int c[8];
} ubo;

layout(std140, binding = 1) buffer SSBO1
{
	layout(offset = 4) int a;
	layout(offset = 8) int b;
	layout(offset = 16) Foo foo;
	layout(offset = 48) int c[8];
} ssbo1;

layout(std430, binding = 2) buffer SSBO2
{
	layout(offset = 4) int a;
	layout(offset = 8) int b;
	layout(offset = 16) Foo foo;
	layout(offset = 48) int c[8];
} ssbo2;

void main()
{
	ssbo1.a = ssbo2.a;
	ssbo1.b = ubo.b;
}