#version 450 core struct MyStruct { vec2 foo[2]; bool sb; }; layout(binding = 0, std430) buffer SSBO0 { MyStruct a; } inBuf; layout(binding = 1, std430) buffer SSBO1 { MyStruct b; } outBuf; layout(binding = 2, std140) uniform UBO { MyStruct c; } uBuf; struct Nested { float f; MyStruct S[2]; }; layout(binding = 2, std140) uniform UBON { Nested N1; } uBufN; layout(binding = 1, std430) buffer SSBO1N { Nested N2; } outBufN; void main() { MyStruct t = inBuf.a; outBuf.b = t; t = uBuf.c; outBuf.b = t; Nested n = uBufN.N1; outBufN.N2 = n; }