#version 450 core struct PosCol { vec4 pospos; vec4 col; }; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (std430, binding = 1) readonly buffer Pos { PosCol data[]; }; out vec4 vCol; out vec4 vPos; int indices[6] = {0,1,2,2,3,0}; vec4 iface[6] = { vec4 (-1,-1,0,1) , vec4 (-1,1,0,1) , vec4 (1,1,0,1) , vec4 (1,1,0,1) , vec4 (1,-1,0,1) , vec4 (-1,-1,0,1) }; void main() { //const struct PosCol pc = data[gl_VertexID / 6]; vec4 pp = data[gl_VertexID / 6].pospos; vCol = data[gl_VertexID / 6].col; //vCol = vec4(1,0.5,0,0.5); int j = indices[gl_VertexID % 6]; float z = (j / 2 > 0 ? 5000 : 0); //vec2 xy = (j % 2 > 0 ? pc.pospos.xy : pc.pospos.zw); vec2 xy = (j % 2 > 0 ? pp.xy : pp.zw); vPos = vec4( xy, z, 1); // vPos = vec4( 0,0,0, 1); //vCol = pc.col; gl_Position = theMat * vPos; //gl_Position = iface[gl_VertexID % 6]; }