Sfoglia il codice sorgente

Merge pull request #9572 from ladevieq/geometry-buffer-textures-uv-set-selection

Fix uv set selection for textures in GBuffer
David Catuhe 4 anni fa
parent
commit
44a46779b3

+ 4 - 1
src/Rendering/geometryBufferRenderer.ts

@@ -328,21 +328,24 @@ export class GeometryBufferRenderer {
             let needUv = false;
             if (material.needAlphaTesting() && material.getAlphaTestTexture()) {
                 defines.push("#define ALPHATEST");
+                defines.push(`#define ALPHATEST_UV${material.getAlphaTestTexture().coordinatesIndex + 1}`);
                 needUv = true;
             }
 
             if (material.bumpTexture && StandardMaterial.BumpTextureEnabled) {
                 defines.push("#define BUMP");
-                defines.push("#define BUMPDIRECTUV 0");
+                defines.push(`#define BUMP_UV${material.bumpTexture.coordinatesIndex + 1}`);
                 needUv = true;
             }
 
             if (this._enableReflectivity) {
                 if (material instanceof StandardMaterial && material.specularTexture) {
                     defines.push("#define HAS_SPECULAR");
+                    defines.push(`#define REFLECTIVITY_UV${material.specularTexture.coordinatesIndex + 1}`);
                     needUv = true;
                 } else if (material instanceof PBRMaterial && material.reflectivityTexture) {
                     defines.push("#define HAS_REFLECTIVITY");
+                    defines.push(`#define REFLECTIVITY_UV${material.reflectivityTexture.coordinatesIndex + 1}`);
                     needUv = true;
                 }
             }

+ 1 - 1
src/Shaders/geometry.fragment.fx

@@ -98,4 +98,4 @@ void main() {
 
         gl_FragData[REFLECTIVITY_INDEX] = reflectivity;
     #endif
-}
+}

+ 6 - 6
src/Shaders/geometry.vertex.fx

@@ -140,30 +140,30 @@ void main(void)
 
 	#ifdef NEED_UV
 		#ifdef UV1
-			#ifdef ALPHATEST
+			#if defined(ALPHATEST) && defined(ALPHATEST_UV1)
 			vUV = vec2(diffuseMatrix * vec4(uvUpdated, 1.0, 0.0));
 			#else
 			vUV = uv;
 			#endif
 
-			#ifdef BUMP
+			#ifdef BUMP_UV1
 			vBumpUV = vec2(bumpMatrix * vec4(uvUpdated, 1.0, 0.0));
 			#endif
-			#ifdef REFLECTIVITY
+			#ifdef REFLECTIVITY_UV1
 			vReflectivityUV = vec2(reflectivityMatrix * vec4(uvUpdated, 1.0, 0.0));
 			#endif
 		#endif
 		#ifdef UV2
-			#ifdef ALPHATEST
+			#if defined(ALPHATEST) && defined(ALPHATEST_UV2)
 			vUV = vec2(diffuseMatrix * vec4(uv2, 1.0, 0.0));
 			#else
 			vUV = uv2;
 			#endif
 
-			#ifdef BUMP
+			#ifdef BUMP_UV2
 			vBumpUV = vec2(bumpMatrix * vec4(uv2, 1.0, 0.0));
 			#endif
-			#ifdef REFLECTIVITY
+			#ifdef REFLECTIVITY_UV2
 			vReflectivityUV = vec2(reflectivityMatrix * vec4(uv2, 1.0, 0.0));
 			#endif
 		#endif