title: Why is 'gl_Position' a different data type than 'position'
body: <p>I'm learning about GLSL shaders from code examples and I'm confused about the following thing: <em>gl_Position</em> is vec4 data type and <em>position</em> is a vec3 data type, why? what exactly is this 'position' variable and where can I find some kind of documentation on this? all I can find is gl_Position reference, same for gl_projectionMatrix vs projectionMatrix. <em>projectionMatrix</em> is not defined even in GLSL cheat sheets.</p>
  
  <pre><code>&lt;script type="x-shader/x-vertex" id="vertexshader"&gt;
  
      varying vec3 col;
  
      void main()
      {
          col         = vec3( uv, 1.0 );
          gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
      }
  
  &lt;/script&gt;
  
  &lt;script type="x-shader/x-fragment" id="fragmentshader"&gt;
  
      varying vec3 col;
  
      void main()
      {
          gl_FragColor = vec4(col, 1);
      }
  
  &lt;/script&gt;
  </code></pre>