瀏覽代碼

Revert "Finish modularizing PBRTerrain.j3md"

This reverts commit 508967205d8d439a64d61483256daa3f201589e5.
stephengold 6 月之前
父節點
當前提交
2de6a7834d
共有 1 個文件被更改,包括 52 次插入102 次删除
  1. 52 102
      jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Modular/PBRTerrainUtils.glsllib

+ 52 - 102
jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Modular/PBRTerrainUtils.glsllib

@@ -8,12 +8,10 @@
 
     #ifdef ENABLE_PBRTerrainUtils_readPBRTerrainLayers   
 
-        #ifdef USE_TEXTURE_ARRAYS
-            //texture arrays:
-            uniform sampler2DArray m_AlbedoTextureArray;
-            uniform sampler2DArray m_NormalParallaxTextureArray;
-            uniform sampler2DArray m_MetallicRoughnessAoEiTextureArray;
-        #endif    
+        //texture arrays:
+        uniform sampler2DArray m_AlbedoTextureArray;
+        uniform sampler2DArray m_NormalParallaxTextureArray;
+        uniform sampler2DArray m_MetallicRoughnessAoEiTextureArray;
 
         //texture-slot params for 12 unique texture slots (0-11) where the integer value points to the desired texture's index in the corresponding texture array:
         #for i=0..12 (#ifdef ALBEDOMAP_$i $0 #endif)
@@ -23,25 +21,15 @@
             uniform float m_AlbedoMap_$i_scale;
             uniform vec4 m_EmissiveColor_$i;
 
+            uniform int m_AlbedoMap_$i;
 
-            #ifdef USE_TEXTURE_ARRAYS
-                uniform int m_AlbedoMap_$i;
-                #ifdef NORMALMAP_$i
-                    uniform int m_NormalMap_$i;
-                #endif
-                #ifdef METALLICROUGHNESSMAP_$i
-                    uniform int m_MetallicRoughnessMap_$i;
-                #endif
-            #else
-                uniform sampler2D m_AlbedoMap_$i;
-                #ifdef NORMALMAP_$i
-                    uniform sampler2D m_NormalMap_$i;
-                #endif
-                #ifdef METALLICROUGHNESSMAP_$i
-                    uniform sampler2D m_MetallicRoughnessMap_$i;
-                #endif
-            #endif 
         #endfor 
+        #for n=0..12 (#ifdef METALLICROUGHNESSMAP_$n $0 #endif)
+            uniform int m_MetallicRoughnessMap_$n;
+        #endfor
+        #for x=0..12 (#ifdef NORMALMAP_$x $0 #endif)
+            uniform int m_NormalMap_$x;
+        #endfor
 
         //3 alpha maps :
         #ifdef ALPHAMAP
@@ -53,9 +41,9 @@
         #ifdef ALPHAMAP_2
           uniform sampler2D m_AlphaMap_2;
         #endif
-        
         vec4 alphaBlend_0, alphaBlend_1, alphaBlend_2;
 
+
         void PBRTerrainUtils_readAlphaMaps(){
 
             #ifdef ALPHAMAP  
@@ -66,7 +54,9 @@
             #endif
             #ifdef ALPHAMAP_2
                 alphaBlend_2 = texture2D( m_AlphaMap_2, texCoord.xy );
-            #endif            
+            #endif
+            
+            
         }
 
         float PBRTerrainUtils_getAlphaBlendFromChannel(int layer){
@@ -97,118 +87,78 @@
 
             return finalAlphaBlendForLayer;
         }    
+              
        
-        PBRTerrainTextureLayer PBRTerrainUtils_createAdvancedPBRTerrainLayer(int layerNum, vec3 geometryNormal){
+        PBRTerrainTextureLayer PBRTerrainUtils_createAdvancedPBRTerrainLayer(int layerNum){
             
             PBRTerrainTextureLayer terrainTextureLayer;
             terrainTextureLayer.blendValue = PBRTerrainUtils_getAlphaBlendFromChannel(layerNum);
-            terrainTextureLayer.albedo = vec4(1.0);
-            terrainTextureLayer.emission = vec4(0.0);
-            terrainTextureLayer.normal = geometryNormal;
-            terrainTextureLayer.alpha = 1.0;
-            terrainTextureLayer.ao = 1.0;
-            terrainTextureLayer.roughness = 1.0;
-            terrainTextureLayer.metallic = 0.0;
-            terrainTextureLayer.height = 0.0;
             
             return terrainTextureLayer;
-        }       
+        }
         
-    //3 functinos to update layers from respective packed data vecs:
+    //________      
+    
         void updateLayerFromPackedAlbedoMap(inout vec4 packedAlbedoVec, inout PBRTerrainTextureLayer layer){
             layer.albedo = packedAlbedoVec;
             layer.alpha = packedAlbedoVec.a;
         }
         void updateLayerFromPackedNormalParallaxVec(inout vec4 packedNormalParallaxVec, inout PBRTerrainTextureLayer layer){
-            layer.normal = normalize(calculateTangentsAndApplyToNormals(packedNormalParallaxVec.rgb, PBRLightingUtils_getWorldNormal()));
+            layer.normal = calculateTangentsAndApplyToNormals(packedNormalParallaxVec.rgb, PBRLightingUtils_getWorldNormal());
             layer.height = packedNormalParallaxVec.a;   
         }
         void updateLayerFromPackedMRAoEiVec(inout vec4 packedMRAoEiVec, inout PBRTerrainTextureLayer layer){
-            layer.ao = packedMRAoEiVec.r; //ao only comes from texture (no float scalars) so no *= is done here
-            layer.roughness *= packedMRAoEiVec.g;
-            layer.metallic *= packedMRAoEiVec.b;
+            layer.ao = packedMRAoEiVec.r;
+            layer.roughness = packedMRAoEiVec.g;
+            layer.metallic = packedMRAoEiVec.b;
             layer.emission *= packedMRAoEiVec.a * layer.emission.a;            
-        }        
-   //________________________________    
-  //   Basic Texture Reads:
-  
-        //  Albedo:
-        void PBRTerrainUtils_readAlbedoTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){         
-            vec4 packedAlbedoVec = texture2D(tex, texCoord * scale);
-            updateLayerFromPackedAlbedoMap(packedAlbedoVec, layer);
         }    
-        //  normal:
-        void PBRTerrainUtils_readNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
-            vec4 packedNormalParallaxVec = texture2D(tex, texCoord * scale);
-            updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
-        } 
-        //  metallicRoughnessAoEi:
-        void PBRTerrainUtils_readMetallicRoughnessAoEiTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
-            vec4 packedMRAoEi = texture2D(tex, texCoord * scale);
-            updateLayerFromPackedMRAoEiVec(packedMRAoEi, layer);
-        }     
-   //________________________________    
-  //   Basic Triplanar Reads:
-           
-        //  Triplanar Albedo:
-        void PBRTerrainUtils_readTriPlanarAlbedoTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){         
-            vec4 packedAlbedoVec = getTriPlanarBlend(lPosition, tex, scale);
+    //________
+    
+        // read Triplanar Albedo from TextureArray:
+        void PBRTerrainUtils_readTriPlanarAlbedoTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){         
+            vec4 packedAlbedoVec = getTriPlanarBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
             updateLayerFromPackedAlbedoMap(packedAlbedoVec, layer);
         }    
-        //  Triplanar normal:
-        void PBRTerrainUtils_readTriPlanarNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
-            vec4 packedNormalParallaxVec = getTriPlanarNormalBlend(lPosition, tex, scale);
+        // read Triplanar normal from TextureArray:
+        void PBRTerrainUtils_readTriPlanarNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
+            vec4 packedNormalParallaxVec = getTriPlanarBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
             updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
         } 
-        //  TriPlanar metallicRoughnessAoEi:
-        void PBRTerrainUtils_readTriPlanarMetallicRoughnessAoEiTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
-            vec4 packedMRAoEi = getTriPlanarBlend(lPosition, tex, scale);
+        // read TriPlanar metallicRoughnessAoEi from TextureArray:
+        void PBRTerrainUtils_readTriPlanarMetallicRoughnessAoEiTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
+            vec4 packedMRAoEi = getTriPlanarBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
             updateLayerFromPackedMRAoEiVec(packedMRAoEi, layer);
-        }            
-   //________________________________    
-  //  Basic TexArray reads:      
-  
-       //  Albedo TextureArray:
+        }         
+     //________ 
+        
+        // read Albedo from TextureArray:
         void PBRTerrainUtils_readAlbedoTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
             vec4 packedAlbedoVec = texture2DArray(texArray, vec3(texCoord * scale, indexInTexArray));
-            updateLayerFromPackedAlbedoMap(packedAlbedoVec, layer);           
+            updateLayerFromPackedAlbedoMap(packedAlbedoVec, layer);
+           
         }    
-     //  Normal TextureArray:
+        // read Normal from TextureArray:
         void PBRTerrainUtils_readNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
             vec4 packedNormalParallaxVec = texture2DArray(texArray, vec3(texCoord * scale, indexInTexArray));
             updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);           
         } 
-     //  metallicRoughnessAoEi TextureArray:
+        // read metallicRoughnessAoEi from TextureArray:
         void PBRTerrainUtils_readMetallicRoughnessAoEiTexArray(in int indexInTexArray, float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
             vec4 packedMRAoEi = texture2DArray(texArray, vec3(texCoord * scale, indexInTexArray));
-            updateLayerFromPackedMRAoEiVec(packedMRAoEi, layer);           
-        } 
-   //________________________________    
-  //   Triplanar TexArray reads:
-     
-       // Triplana Albedo TextureArray:
-        void PBRTerrainUtils_readTriPlanarAlbedoTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){         
-            vec4 packedAlbedoVec = getTriPlanarBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
-            updateLayerFromPackedAlbedoMap(packedAlbedoVec, layer);
-        }    
-       // Triplanar normal TextureArray:
-        void PBRTerrainUtils_readTriPlanarNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
-            vec4 packedNormalParallaxVec = getTriPlanarNormalBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
-            updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
-        } 
-       //  TriPlanar metallicRoughnessAoEi TextureArray:
-        void PBRTerrainUtils_readTriPlanarMetallicRoughnessAoEiTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
-            vec4 packedMRAoEi = getTriPlanarBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
             updateLayerFromPackedMRAoEiVec(packedMRAoEi, layer);
-        }         
-   //_______________________________      
-   
-  //blend layer function:   
+           
+        } 
+     //________
+        
+
+    
         void PBRTerrainUtils_blendPBRTerrainLayer(inout PBRSurface surface, inout PBRTerrainTextureLayer layer){
 
-        //mixes this layer's pbr vars over top of the current surface values based on the layer's blendValue 
+
+        //mix values from this index layer to final output values based on finalAlphaBlendForLayer 
             surface.albedo = mix(surface.albedo, layer.albedo.rgb, layer.blendValue);        
-            surface.normal = normalize(mix(surface.normal.rgb, layer.normal, layer.blendValue));        
+            surface.normal = mix(surface.normal.rgb, layer.normal, layer.blendValue);        
             surface.metallic = mix(surface.metallic, layer.metallic, layer.blendValue);
             surface.roughness = mix(surface.roughness, layer.roughness, layer.blendValue);
             surface.ao = mix(surface.ao, vec3(layer.ao), layer.blendValue);