anchor.diff:    
       uniform mat4 uMVMatrix;
       uniform mat4 uPMatrix;
  -    uniform mat3 uNMatrix;
  +    uniform mat3 uIdentMatrix;
       
       void main(void) {
         // copy values into shared vars
  
positive.code: 
      _uPMatrix = _gl.getUniformLocation(_shaderProgram, "uPMatrix");
      _uMVMatrix = _gl.getUniformLocation(_shaderProgram, "uMVMatrix");
      _uNMatrix = _gl.getUniformLocation(_shaderProgram, "uNMatrix");
      _uSampler = _gl.getUniformLocation(_shaderProgram, "uSampler");
      _uUseLighting = _gl.getUniformLocation(_shaderProgram, "uUseLighting");
      _uAmbientColor = _gl.getUniformLocation(_shaderProgram, "uAmbientColor");
  
negative.code:     varying vec4 vPosition;
      varying vec3 vNormal;
      varying vec3 vVertexNormal;
      varying vec3 vVertexPosition;
      uniform sampler2D uSampler;
      
      void main(void) { 
        vec4 fragmentColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
  
        vec3 lightDir = normalize(vec3(-0.25, -1.75, 0.5) - vVertexPosition.xyz); // light direction for each pixel
        float lightVal = max(dot(normalize(vNormal), lightDir), 0.0);
        vec3 light3Val = vec3(1.0,0.8,0.8) * lightVal + vec3(0.0,0.0,0.3); // light*lightVal * ambient
  
        gl_FragColor = vec4(fragmentColor.r*light3Val.r, fragmentColor.g*light3Val.g, fragmentColor.b*light3Val.b, 1.0);
        //gl_FragColor = vec4(light3Val.r, light3Val.g, light3Val.b, 1.0); // debugging view
      }
      """;
  
  