#version 330 core layout(location = 0) in vec3 aPos; layout(location = 1) in vec3 aColor; layout(location = 2) in vec2 aTextCoord; out vec3 TexColor; out vec2 TexCoord; uniform vec3 color; void main() { float as = color.z-0.5; float ac = sqrt(1 - as * as); mat4x4 rotation = mat4x4( ac,-as,0,0, as,ac,0,0, 0,0,1,0, 0,0,0,1 ); gl_Position = rotation * (vec4(aPos.xyz,1.0) + vec4(color.xy-vec2(0.5,0.5),0.0,-2.0)); TexColor = color; TexCoord = aTextCoord; }