anchor.diff:      multiBounceSpecularAO(specularAO, pixel.f0, Fr);
   
       // Note: iblLuminance is already premultiplied by the exposure
  -    combineDiffuseAndSpecular(pixel, n, Fd, Fr, color);
  -}
  +    combineDiffuseAndSpecular(pixel, n, E, Fd, Fr, color);
  +}
  
positive.code: 
      Fr *= frameUniforms.iblLuminance;
      Fd *= frameUniforms.iblLuminance;
  
      color.rgb += Fr + mix(Fd, Ft, pixel.transmission);
  }
  #endif
  
  void combineDiffuseAndSpecular(const PixelParams pixel,
          const vec3 n, vec3 Fd, vec3 Fr,
          inout vec3 color) {
  #if defined(HAS_REFRACTION)
      applyRefraction(pixel, n, Fd, Fr, color);
  #else
      color.rgb += (Fd + Fr) * frameUniforms.iblLuminance;
  #endif
  
negative.code: }
  
  #if defined(HAS_REFRACTION)
  void applyRefraction(const PixelParams pixel,
      const vec3 n0, const vec3 E, vec3 Fd, vec3 Fr,
      inout vec3 color) {
      // when reading from the cubemap, we are not pre-exposed so we apply iblLuminance
      // which is not the case when we'll read from the screen-space buffer
      float scale = frameUniforms.iblLuminance;
      float eta0 = pixel.eta;
      vec3 r = -shading_view;
  
  