Explorar o código

correctly handle out of shadowmap

ncannasse %!s(int64=11) %!d(string=hai) anos
pai
achega
ba88fa0bb0
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      h3d/shader/Shadow.hx

+ 3 - 1
h3d/shader/Shadow.hx

@@ -28,7 +28,9 @@ class Shadow extends hxsl.Shader {
 			bias = clamp(bias, 0, 0.01)
 			#end
 
-			var shade = exp( shadow.power * (depth - shadowPos.z + shadow.bias) ).clamp(0.,1.);
+			var zMax = shadowPos.z.saturate();
+			var delta = (depth + shadow.bias).min(zMax) - zMax;
+			var shade = exp( shadow.power * delta  ).clamp(0., 1.);
 			pixelColor.rgb *= (1. - shade) * shadow.color.rgb + shade;
 		}
 	};