#version 450 #extension GL_EXT_buffer_reference : require #extension GL_EXT_buffer_reference_uvec2 : require layout(buffer_reference, buffer_reference_align = 4) buffer SSBO { vec3 a1; // Will be 12-byte packed float a2; }; layout(push_constant) uniform UBO { uvec2 b; }; void main() { SSBO(b).a1 = vec3(1.0, 2.0, 3.0); // uvec2 -> buff ref and assign to packed uvec2 v2 = uvec2(SSBO(b + 32)); // uvec2 -> buff ref -> uvec2 vec3 v3 = SSBO(v2).a1; // uvec2 -> buff ref and assign from packed SSBO(v2).a1 = v3 + 1.0; // uvec2 -> buff ref and assign to packed }