Ver código fonte

Merge pull request #7856 from Popov72/master

PBR: Fix bug with translucency when irradiance texture is 2D
sebavan 5 anos atrás
pai
commit
ea557c92c0
2 arquivos alterados com 12 adições e 1 exclusões
  1. 1 0
      dist/preview release/what's new.md
  2. 11 1
      src/Shaders/pbr.fragment.fx

+ 1 - 0
dist/preview release/what's new.md

@@ -82,5 +82,6 @@
 - Fix horizon occlusion in PBR materials ([Popov72](https://github.com/Popov72)
 - Fixed delay calculation in Animatable.goToFrame when speedRatio != 1 ([Reimund Järnfors](https://github.com/reimund)
 - Fix bug in PBR when translucency is enabled and an irradiance texture is provided ([Popov72](https://github.com/Popov72)
+- Fix bug in PBR with translucency when irradiance texture is 2D ([Popov72](https://github.com/Popov72)
 
 ## Breaking changes

+ 11 - 1
src/Shaders/pbr.fragment.fx

@@ -1050,7 +1050,17 @@ void main(void) {
         #if defined(USESPHERICALFROMREFLECTIONMAP)
             vec3 refractionIrradiance = computeEnvironmentIrradiance(-irradianceVector);
         #elif defined(USEIRRADIANCEMAP)
-            vec3 refractionIrradiance = sampleReflection(irradianceSampler, -irradianceVector).rgb;
+            #ifdef REFLECTIONMAP_3D
+                vec3 irradianceCoords = irradianceVector;
+            #else
+                vec2 irradianceCoords = irradianceVector.xy;
+                #ifdef REFLECTIONMAP_PROJECTION
+                    irradianceCoords /= irradianceVector.z;
+                #endif
+                irradianceCoords.y = 1.0 - irradianceCoords.y;
+            #endif
+
+            vec3 refractionIrradiance = sampleReflection(irradianceSampler, -irradianceCoords).rgb;
             #ifdef RGBDREFLECTION
                 refractionIrradiance.rgb = fromRGBD(refractionIrradiance);
             #endif