#version 450 core //struct PosColNorm { vec4 pos; vec4 norm;uint col; uint dummy; }; struct PosColNorm { vec4 pos; uint norm;uint col; }; // I don't know if the dummy is necessary layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (std430, binding = 3) readonly buffer Data { PosColNorm data[]; }; layout (std430, binding = 4) readonly buffer Indices { uint indices[]; }; out vec4 vCol; out vec4 vPos; out vec4 vNorm; void main() { vPos = data[indices[gl_VertexID]].pos; vCol = unpackUnorm4x8(data[indices[gl_VertexID]].col); vNorm = unpackSnorm4x8(data[indices[gl_VertexID]].norm); //vNorm = n *2 - vec4(1,1,1,1); gl_Position = theMat * vec4(vPos.xyz,1); } //layout (location = 0) in vec4 pos; //layout (location = 1) in vec4 col; //layout (location = 2) in vec4 norm; //layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; //out vec4 vCol; //out vec4 vPos; //out vec4 vNorm; //void main() { // gl_Position = theMat * vec4(pos.xyz,1); // vCol = col; // vPos = pos; // vNorm = norm; //}