| #version 450 core | |
| #extension GL_EXT_scalar_block_layout : enable | |
| // Block memory layout | |
| struct S | |
| { | |
| float a; // offset 0 | |
| vec2 b; // offset 4 | |
| double c; // offset 16 | |
| float d; // offset 24 | |
| vec3 e; // offset 28 | |
| float f; // offset 40 | |
| // size = 44, align = 8 | |
| }; | |
| layout(column_major, scalar) uniform B1 | |
| { | |
| float a; // offset = 0 | |
| vec2 b; // offset = 4 | |
| vec3 c; // offset = 12 | |
| float d[2]; // offset = 24 | |
| mat2x3 e; // offset = 32, takes 24 bytes, matrixstride = 12 | |
| mat2x3 f[2]; // offset = 56, takes 48 bytes, matrixstride = 12, arraystride = 24 | |
| float g; // offset = 104 | |
| S h; // offset = 112 (aligned to multiple of 8) | |
| S i[2]; // offset = 160 (aligned to multiple of 8) stride = 48 | |
| }; | |
| layout (std430) uniform; | |
| void main() | |
| { | |
| } |