anchor.diff:      float roughness = tex2DBiLinear(roughnessMap, vTexCoords).r;
       float ao = tex2DBiLinear(aoMap, vTexCoords).r;
       float fresnel = tex2DBiLinear(fresnelMap, vTexCoords).r;
  -    vec3 n = perturb_normal( vNorm, excidentVector, vTexCoords );
  +    vec3 normal = perturb_normal( vNorm, excidentVector, vTexCoords );
   
       // Fresnel f0 term
       vec3 f0 = vec3(0.04); 
       f0 = mix(f0, albedo, fresnel);
  -
   
       for (int i=0 ; i<nbLights; i++){
   
  
positive.code: }
  
  // Microfacet BRDF, distribution number stands for: 1 = Beckmann, 2 = GGX
  vec3 microFacetSpecular(vec3 incidentVector, vec3 excidentVector, vec3 n, vec3 fresnel, float roughness, int distriNbr){
      // HalfVec
      vec3 halfVec = (incidentVector + excidentVector) / length(incidentVector + excidentVector);
  
      // Pre compute values:
      float excDotHalf = max(0.0001f,dot(excidentVector,halfVec));
      float normDotExc = max(0.0001f,dot(n,excidentVector));
      float normDotInc = max(0.0001f,dot(n,incidentVector));
      float normDotHalf = max(0.0001f,dot(n,halfVec));
      float normDotHalfSquared = normDotHalf*normDotHalf;
      float roughnessSquared = roughness*roughness;
  
  
negative.code: 
  // Custom functions
  vec3 getIntensityFromPosition(LightSource l, vec3 pos);
  vec3 microFacetSpecular(vec3 incidentVector, vec3 excidentVector, vec3 normal, vec3 fresnel, float roughness, int distriNbr);
  vec3 fresnelSchlick(vec3 incidentVector, vec3 excidentVector, vec3 f0);
  vec4 getLightColor(LightSource l, vec3 pos);
  float ShadowCalculation(vec4 fragPosLightSpace, vec3 normal, vec3 lightDir);
  