Revision control

++ #version 440
++
++ layout(location = 0) in vec4 position;
++ layout(location = 1) in vec3 normal;
++
++ // Instanced attributes to variate the translation of the model and the diffuse
++ // color of the material.
++ layout(location = 2) in vec3 instTranslate;
++ layout(location = 3) in vec3 instDiffuseAdjust;
++
++ out gl_PerVertex { vec4 gl_Position; };
++ layout(location = 0) out vec3 vECVertNormal;
++ layout(location = 1) out vec3 vECVertPos;
++ layout(location = 2) flat out vec3 vDiffuseAdjust;
++
++ layout(std140, binding = 0) uniform buf {
++ mat4 vp;
++ mat4 model;
++ mat3 modelNormal;
++ } ubuf;
++
++ void main()
++ {
++ vECVertNormal = normalize(ubuf.modelNormal * normal);
++ mat4 t = mat4(1, 0, 0, 0,
++ 0, 1, 0, 0,
++ 0, 0, 1, 0,
++ instTranslate.x, instTranslate.y, instTranslate.z, 1);
++ vECVertPos = vec3(t * ubuf.model * position);
++ vDiffuseAdjust = instDiffuseAdjust;
++ gl_Position = ubuf.vp * t * ubuf.model * position;
++ }