#version 330 core layout (location=0) in vec3 aPos; layout (location=1) in vec2 aTexCoords; layout (location=2) in mat4 aInstancedModel; out vec2 texCoords; flat out int id; uniform mat4 proj; uniform mat4 view; //uniform mat4 model[4]; uniform vec3 trans[507]; uniform vec2 size[507]; void main(){ vec3 camLeft=vec3(view[0][0],view[1][0],view[2][0]); vec3 camUp=vec3(view[0][1],view[1][1],view[2][1]); vec2 s=size[gl_InstanceID]; vec3 v=camLeft*s.x*aPos.x+camUp*s.y*aPos.y; mat4 model=aInstancedModel; model[3][0]=trans[gl_InstanceID].x; model[3][1]=trans[gl_InstanceID].y; model[3][2]=trans[gl_InstanceID].z; /* */ gl_Position=proj*view*model*vec4(v,1); //gl_Position=proj*view*model[gl_InstanceID]*vec4(s.x*aPos.x,s.y*aPos.y,aPos.z,1); texCoords=aTexCoords; }