#version 450 core #extension GL_EXT_shader_16bit_storage: enable #extension GL_EXT_scalar_block_layout : enable // Block memory layout struct S { float16_t a; // offset 0 f16vec2 b; // offset 2 double c; // offset 8 float16_t d; // offset 16 f16vec3 e; // offset 18 float16_t f; // offset 24 // size = 26, align = 8 }; layout(column_major, scalar) uniform B1 { float16_t a; // offset = 0 f16vec2 b; // offset = 2 f16vec3 c; // offset = 6 float16_t d[2]; // offset = 12 stride = 2 float16_t g; // offset = 16 S h; // offset = 24 (aligned to multiple of 8) S i[2]; // offset = 56 (aligned to multiple of 8) stride = 32 }; void main() { }