Ver Fonte

Update PBRLighting.vert

Ryan McDonough há 7 meses atrás
pai
commit
ab446389aa

+ 39 - 19
jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.vert

@@ -4,12 +4,13 @@
 #import "Common/ShaderLib/MorphAnim.glsllib"
 
 uniform vec4 m_BaseColor;
+
 uniform vec4 g_AmbientLightColor;
 varying vec2 texCoord;
 
 #ifdef SEPARATE_TEXCOORD
-  varying vec2 texCoord2;
-  attribute vec2 inTexCoord2;
+   varying vec2 texCoord2;
+   attribute vec2 inTexCoord2;
 #endif
 
 varying vec4 Color;
@@ -18,25 +19,41 @@ attribute vec3 inPosition;
 attribute vec2 inTexCoord;
 attribute vec3 inNormal;
 
-#ifdef VERTEX_COLOR
-  attribute vec4 inColor;
+#if defined (VERTEX_COLOR) || defined(USE_VERTEX_COLORS_AS_SUN_INTENSITY)
+    attribute vec4 inColor;
+#endif
+
+#if defined(USE_VERTEX_COLORS_AS_SUN_INTENSITY)
+    varying vec4 vertColors;
 #endif
 
 varying vec3 wNormal;
 varying vec3 wPosition;
-#if defined(NORMALMAP) || defined(PARALLAXMAP)
-    attribute vec4 inTangent;
-    varying vec4 wTangent;
+
+varying vec4 lPosition;
+
+attribute vec4 inTangent;
+varying vec4 wTangent;
+
+#ifdef USE_FOG
+    varying float fogDistance;
+    uniform vec3 g_CameraPosition;
 #endif
 
-void main(){
+void main(){    
+    
     vec4 modelSpacePos = vec4(inPosition, 1.0);
     vec3 modelSpaceNorm = inNormal;
-
-    #if  ( defined(NORMALMAP) || defined(PARALLAXMAP)) && !defined(VERTEX_LIGHTING)
-         vec3 modelSpaceTan  = inTangent.xyz;
+    vec3 modelSpaceTan  = inTangent.xyz;
+    
+    lPosition = modelSpacePos;
+    
+    
+    #ifdef USE_VERTEX_COLORS_AS_SUN_INTENSITY
+        vertColors = inColor;
     #endif
 
+    
     #ifdef NUM_MORPH_TARGETS
          #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING)
             Morph_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
@@ -47,9 +64,9 @@ void main(){
 
     #ifdef NUM_BONES
          #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING)
-            Skinning_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
+         Skinning_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
          #else
-            Skinning_Compute(modelSpacePos, modelSpaceNorm);
+         Skinning_Compute(modelSpacePos, modelSpaceNorm);
          #endif
     #endif
 
@@ -59,16 +76,19 @@ void main(){
        texCoord2 = inTexCoord2;
     #endif
 
-    wPosition = TransformWorld(modelSpacePos).xyz;
+    wPosition = (g_WorldMatrix * vec4(inPosition, 1.0)).xyz;
     wNormal  = TransformWorldNormal(modelSpaceNorm);
-
-    #if defined(NORMALMAP) || defined(PARALLAXMAP)
-      wTangent = vec4(TransformWorldNormal(modelSpaceTan),inTangent.w);
-    #endif
+    
+    wTangent = vec4(TransformWorldNormal(modelSpaceTan),inTangent.w);
 
     Color = m_BaseColor;
     
-    #ifdef VERTEX_COLOR                    
+    #ifdef VERTEX_COLOR                
         Color *= inColor;
     #endif
+    
+    #ifdef USE_FOG
+        fogDistance = distance(g_CameraPosition, (g_WorldMatrix * modelSpacePos).xyz);
+    #endif
+
 }