#version 450 core layout(location = 0) in vec3 a_position; layout(location = 1) in vec3 a_normal; layout(location = 2) in vec4 a_color; layout(location = 3) in vec2 a_textureCoordinates; layout(location = 4) in uint a_textureIndex; out vec3 v_position; out vec3 v_normal; out vec4 v_color; out vec2 v_textureCoordinates; out flat uint v_textureIndex; layout(std140, binding = 0) uniform Camera { mat4 u_projectionView; vec3 u_position; }; void main() { v_position = a_position; v_normal = a_normal; v_color = a_color; v_textureCoordinates = a_textureCoordinates; v_textureIndex = a_textureIndex; // Vclip = Camera projection * Camera view * Model transform * Vlocal gl_Position = u_projectionView * vec4(a_position, 1.0f); }