title: Optimising the model-view transformation in GLSL for 2D
body: <p>So, the standard way to transform vertices and then pass to the fragment shader in GLSL is something like this:</p>
  
  <pre><code>uniform mat4 u_modelview;
  attribute vec4 a_position;
  
  void main() {
      gl_Position = u_modelview * a_position;
  }
  </code></pre>
  
  <p>However, I am working in 2D so there is redundancy in the 4x4 matrix. Would it be more efficient for me to do this?</p>
  
  <pre><code>uniform mat3 u_modelview;
  attribute vec3 a_position;
  
  void main() {
      gl_Position = vec4(u_modelview * a_position, 1.0);
  }
  </code></pre>
  
  <p>gl_Position requires a 4 component vector so an extra operation is required at output. However the matrix multiplication is for 9 elements instead of 16. Can I do any better?</p>