فهرست منبع

Add frustumLengths uniform

Popov72 5 سال پیش
والد
کامیت
067f27259c

+ 5 - 3
src/Shaders/ShadersInclude/lightFragment.fx

@@ -1,4 +1,4 @@
-#ifdef LIGHT{X}
+#ifdef LIGHT{X}
     #if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})
         //No light calculation
     #else
@@ -135,7 +135,9 @@
                 }
             }
 
-            if (index{X} >= 0) {
+            if (index{X} >= 0)
+            {
+                float frustumLength = frustumLengths{X}[index{X}];
                 #if defined(SHADOWPCF{X})
                     #if defined(SHADOWLOWQUALITY{X})
                         shadow = computeShadowWithCSMPCF1(float(index{X}), vPositionFromLight{X}[index{X}], vDepthMetric{X}[index{X}], shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.w);
@@ -160,7 +162,7 @@
                     shadowDebug{X} = vec3(shadow) * vCascadeColorsMultiplier{X}[index{X}];
                 #endif
 
-                float diffRatio{X} = clamp(diff{X} / frustrumLength{X}, 0., 1.) * cascadeBlendFactor{X};
+                float diffRatio{X} = clamp(diff{X} / frustumLength, 0., 1.) * cascadeBlendFactor{X};
                 if (index{X} < (SHADOWCSMNUM_CASCADES{X} - 1) && diffRatio{X} < 1.)
                 {
                     index{X} += 1;

+ 2 - 2
src/Shaders/ShadersInclude/lightFragmentDeclaration.fx

@@ -1,4 +1,4 @@
-#ifdef LIGHT{X}
+#ifdef LIGHT{X}
 	uniform vec4 vLightData{X};
 	uniform vec4 vLightDiffuse{X};
 
@@ -10,8 +10,8 @@
 	#ifdef SHADOW{X}
         #ifdef SHADOWCSM{X}
             uniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];
-            uniform mat4 camViewMatCSM{X};
             uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];
+            uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];
             uniform float cascadeBlendFactor{X};
 
             varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];

+ 2 - 1
src/Shaders/ShadersInclude/lightUboDeclaration.fx

@@ -1,4 +1,4 @@
-#ifdef LIGHT{X}
+#ifdef LIGHT{X}
 	uniform Light{X}
 	{
 		vec4 vLightData;
@@ -24,6 +24,7 @@
 	#ifdef SHADOWCSM{X}
 		uniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];
 		uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];
+        uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];
         uniform float cascadeBlendFactor{X};
 
 		varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];