#version 460 core layout(std430, binding = 3) buffer layoutName { float data_SSBO[]; }; layout(location = 0) uniform mat4 viewMatrix; layout(location = 1) uniform mat4 projectionMatrix; vec3 unpack(uint index) { return vec3(data_SSBO[index * 3], data_SSBO[index * 3 + 1], data_SSBO[index * 3 + 2]); } void main() { gl_Position = projectionMatrix * viewMatrix * vec4(unpack(gl_InstanceID), 1.0); }