#version 430 core layout (location = 0) in vec3 position; layout (location = 1) in vec4 color; out vec4 vColor; uniform vec2 winSize; uniform float zoom; uniform float rotation; uniform vec2 translation; vec2 tran(vec2 v) { return (v - translation); } vec2 rot(vec2 v) { return vec2 ( v.x * cos(-rotation) - v.y * sin(-rotation) , v.x * sin(-rotation) + v.y * cos(-rotation) ); } vec2 scal(vec2 v) { return vec2 ( 2 * v.x * zoom / winSize.x , 2 * v.y * zoom / winSize.y ); } void main() { gl_Position = vec4(scal(rot(tran(position.xy))),position.z,1); vColor = color; }