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