anchor.diff:  
       varying vec4 vPosition;
       varying vec3 vNormal;
  +    varying vec3 vVertexNormal;
  +    varying vec3 vVertexPosition;
       varying vec2 vTextureCoord;
     
       uniform mat4 uMVMatrix;
  
positive.code:     _gl.uniformMatrix4fv(_uPMatrix, false, _pMatrix.storage);
      _gl.uniformMatrix4fv(_uMVMatrix, false, _mvMatrix.storage);
  
      //Matrix3 normalMatrix = _mvMatrix.toInverseMat3();
      Matrix3 normalMatrix = _mvMatrix.getRotation();
      normalMatrix.transpose();
      _gl.uniformMatrix3fv(_uNMatrix, false, normalMatrix.storage);
    }
  
  
negative.code:     }
      """;
  
      // fragment shader
      String fsSource = """
      precision mediump float;
  
      varying vec2 vTextureCoord;
      varying vec4 vPosition;
      varying vec3 vNormal;
      varying vec3 vVertexNormal;
      uniform sampler2D uSampler;
      
      void main(void) { 
        vec4 fragmentColor;
        fragmentColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
        gl_FragColor = vec4(abs(vNormal.x)*1.0, abs(vNormal.y)*1.0, abs(vNormal.z)*1.0, 1.0);
      }
      """;
  
  