anchor.diff:  #if IBL_INTEGRATION == IBL_INTEGRATION_PREFILTERED_CUBEMAP
       Fr = specularDFG(pixel) * specularIrradiance(r, pixel.roughness);
   #elif IBL_INTEGRATION == IBL_INTEGRATION_IMPORTANCE_SAMPLING
  -    Fr = importanceSampleIBL(n, shading_view, shading_NoV, pixel);
  +    Fr = importanceSampleIBL(pixel, shading_tangentToWorld, shading_view, shading_NoV);
   #endif
       Fr *= specularAO * pixel.energyCompensation;
   
  
positive.code:         float cosTheta = sqrt(cosTheta2);
          float sinTheta = sqrt(1.0 - cosTheta2);
  
          vec3 h = R * vec3(cos(phi) * sinTheta, sin(phi) * sinTheta, cosTheta);
          float VoH = dot(v, h);
  
          // since anisotropy doesn't work with prefiltering, we use the same "faux" anisotropy
  
negative.code: //------------------------------------------------------------------------------
  
  #if IBL_INTEGRATION == IBL_INTEGRATION_IMPORTANCE_SAMPLING
  vec3 importanceSampleIBL(const PixelParams pixel, mat3 tangentToWorld, vec3 v, float NoV) {
      vec3 n = tangentToWorld[2];
      float linearRoughness = pixel.linearRoughness;
      float a2 = linearRoughness * linearRoughness;
  
  