Kaynağa Gözat

Cascade shadow map : Fix depth bias

TothBenoit 1 yıl önce
ebeveyn
işleme
15f02ed3bc
1 değiştirilmiş dosya ile 6 ekleme ve 5 silme
  1. 6 5
      h3d/pass/CascadeShadowMap.hx

+ 6 - 5
h3d/pass/CascadeShadowMap.hx

@@ -135,7 +135,10 @@ class CascadeShadowMap extends DirShadowMap {
 		var invD0 = 1 / d0;
 		var zDist0 = cascadeBounds0.zMax - cascadeBounds0.zMin;
 
-		var depthBiasFactor = (params[0] != null ) ? params[0].depthBias : 1.0;
+		inline function getBias( i : Int ) {
+			var depthBiasFactor = (params[i] != null ) ? params[i].depthBias : 1.0;
+			return 0.00000190734 * depthBiasFactor; // 2^-19 depth offset;
+		}
 
 		var proj = tmpProj;
 		proj.zero();
@@ -144,7 +147,6 @@ class CascadeShadowMap extends DirShadowMap {
 		proj._33 = 1 / (zDist0);
 		proj._41 = 0.5;
 		proj._42 = 0.5;
-		proj._43 = 0.00000190734 * depthBiasFactor; // 2^-19 depth offset;
 		proj._44 = 1;
 
 		cascadeViewProj.multiply(view, proj);
@@ -154,6 +156,7 @@ class CascadeShadowMap extends DirShadowMap {
 		proj._22 = invD02;
 		proj._41 = 0;
 		proj._42 = 0;
+		proj._43 = getBias(0);
 
 		lightCameras[0].viewProj.multiply(view, proj);
 
@@ -190,12 +193,10 @@ class CascadeShadowMap extends DirShadowMap {
 			proj.zero();
 			var invD2 = 2.0 * invD;
 
-			var depthBiasFactor = (params[i] != null ) ? params[i].depthBias : 1.0;
-
 			proj._11 = invD2;
 			proj._22 = invD2;
 			proj._33 = invZDist;
-			proj._43 = 0.0000190734 * depthBiasFactor; // 2^-19 depth offset;
+			proj._43 = getBias(i);
 			proj._44 = 1;
 
 			lightCameras[i].viewProj.multiply(view, proj);