    attribute vec3 aVertexPosition;
    attribute vec4 aVertexColour;
    attribute vec3 aNormalVector;
    attribute vec3 aModAmbLight;
    attribute vec3 aModPntLight;

    uniform mat4 uMVMatrix;
    uniform mat4 uPMatrix;
    uniform mat3 uNMatrix;
    uniform vec3 uAmbLightCol;
    uniform vec4 uPntLightPos;
    uniform vec4 uPntEyePos;

    varying vec3 vNormalVector;
    varying vec4 vPosition;
    varying vec4 vColour;
    varying vec3 vLightAmb;
    varying vec4 vLightPos;
    varying vec4 vEyePos;

    void main(void)
    { vPosition     = uMVMatrix * vec4(aVertexPosition, 1.0);
      vColour       = aVertexColour;
      vNormalVector = uNMatrix * aNormalVector;

      /**
       * Move the Point Light position around to enhance the effect.
       */
      vLightAmb     = uAmbLightCol + aModAmbLight ;
      vLightPos     = vec4 (uPntLightPos.xyz + aModPntLight, 1) ;
      vLightPos     = uMVMatrix * vLightPos;
      vEyePos       = uPntEyePos;

      gl_Position   = uPMatrix * vPosition;
    }
