#version 450 core layout(location = 0) in vec3 pos; layout(location = 1) in vec2 tex_coords; layout(location = 2) in vec4 color; layout(location = 3) in float tex_slot; layout(location = 4) in vec3 translation; layout(location = 5) in float angle; layout(location = 6) in vec3 scale; layout (location = 0) out vec2 f_tex_coords; layout (location = 1) out vec4 f_vert_color; layout (location = 2) flat out int f_tex_index; uniform mat4 projview; void main() { f_tex_index = int(tex_slot); f_tex_coords = tex_coords; f_vert_color = color; // mat4 ModelTrans = mat4( // vec4( scale.x * cos(angle), scale.x * -sin(angle), 0.0, 0.0), // vec4( scale.y * sin(angle), scale.y * cos(angle), 0.0, 0.0), // vec4( 0.0, 0.0, scale.z, 0.0), // vec4( translation.xyz, 1.0) // ); mat4 Translation = mat4( vec4( 1.0, 0.0, 0.0, 0.0), vec4( 0.0, 1.0, 0.0, 0.0), vec4( 0.0, 0.0, 1.0, 0.0), vec4( translation.xyz, 1.0)); mat4 Rotation = mat4( vec4( cos(angle), -sin(angle), 0.0, 0.0), vec4( sin(angle), cos(angle), 0.0, 0.0), vec4( 0.0, 0.0, 1.0, 0.0), vec4( 0.0, 0.0, 0.0, 1.0)); mat4 Scale = mat4( vec4(scale.x, 0.0, 0.0, 0.0), vec4(0.0, scale.y, 0.0, 0.0), vec4(0.0, 0.0,scale.z, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); // mat4 model = Translation * RotationScale; //gl_Position = Translation * vec4(pos, 1.0); mat4 model = mat4( vec4(1.0, 0.0, 0.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); model = model * Translation; model = model * Rotation; model = model * Scale; gl_Position = projview * model * vec4(pos, 1.0); }