attribute vec2 a_TexCoord; uniform mat3 u_TextureMatrix; varying vec2 v_TexCoord; vec4 calculatePosition(); void main() { gl_Position = calculatePosition(); v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; } attribute vec2 a_Vertex; uniform mat3 u_TransformMatrix; uniform mat3 u_ProjectionMatrix; vec4 calculatePosition() { return vec4(u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0), 1.0); }