#version 450 core struct PosColBox { vec4 pos; vec4 col; vec4 box; }; layout (std430, binding = 12) readonly buffer Data { PosColBox data[]; }; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (location = 0) uniform int layoff; out vec4 vCol; out vec3 vPos; out vec3 vparams; void main() { vec4 p = data[gl_VertexID].pos; gl_Position = theMat * p; vCol = data[gl_VertexID].col; vparams = data[gl_VertexID].box.xyz; vPos = p.xyz; }