#version 440 layout(location = 0) in vec4 position; // Instanced attributes to variate the translation and color of the cube layout(location = 1) in vec3 instTranslate; layout(location = 2) in vec3 instColor; layout(location = 0) out vec3 vColor; out gl_PerVertex { vec4 gl_Position; }; layout(std140, binding = 0) uniform buf { mat4 mvp; } ubuf; void main() { vColor = instColor; mat4 t = mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, instTranslate.x, instTranslate.y, instTranslate.z, 1); gl_Position = ubuf.mvp * t * position; }