Browse Source

Cascade shadow map : - Added shadow depth offset to light matrix

TothBenoit 1 year ago
parent
commit
6b018fd37b
1 changed files with 7 additions and 7 deletions
  1. 7 7
      h3d/pass/CascadeShadowMap.hx

+ 7 - 7
h3d/pass/CascadeShadowMap.hx

@@ -54,14 +54,13 @@ class CascadeShadowMap extends DirShadowMap {
 	}
 
 	function computeNearFar( i : Int ) {
-		var min = minDist < 0.0 ? ctx.camera.zNear : minDist;
+		if ( i == 0 )
+			return {near : 0.0, far : firstCascadeSize};
+
 		var max = maxDist < 0.0 ? ctx.camera.zFar : maxDist;
-		if ( i == 0 ) {
-			return {near : min, far : min + firstCascadeSize};
-		}
-		var step = (max - min - firstCascadeSize) / (cascade - 1);
-		var near = min + firstCascadeSize + hxd.Math.pow((i - 1) / (cascade - 1), pow) * step;
-		var far = min + firstCascadeSize + hxd.Math.pow(i / (cascade - 1), pow) * step;
+		var step = (max - firstCascadeSize) / (cascade - 1);
+		var near = firstCascadeSize + hxd.Math.pow((i - 1) / (cascade - 1), pow) * step;
+		var far = firstCascadeSize + hxd.Math.pow(i / (cascade - 1), pow) * step;
 		return {near : near, far : far};
 	}
 
@@ -127,6 +126,7 @@ class CascadeShadowMap extends DirShadowMap {
 			proj._11 = 2 * invD;
 			proj._22 = 2 * invD;
 			proj._33 = 1 / (cascadeBounds.zMax - cascadeBounds.zMin);
+			proj._34 = -0.00000190734; // 2^-19 depth offset;
 			proj._44 = 1;
 
 			lightCameras[i].viewProj.multiply(view, proj);