//attributs attribute vec2 vertex_position; attribute vec3 vertex_color; //transformations uniform vec2 translation; uniform float scale; uniform float rotation; //valeurs a passer au fragment varying vec3 vColor; void main() { //d'abord, on applique la rotation //ce qui donne une nouvelle position float rX = vertex_position.x * cos(rotation) - vertex_position.y * sin(rotation); float rY = vertex_position.y * cos(rotation) + vertex_position.x * sin(rotation); //maintenant, le scale vec2 position = vec2(rX,rY) * scale; //et enfin, la translation position += translation; gl_Position = vec4(position,0.0,1.0); //passage de la couleur au fragment //la couleur sera interpolee entre les sommets vColor = vertex_color; }