浏览代码

Improved CSM.

clandrin 2 年之前
父节点
当前提交
b56e040224
共有 2 个文件被更改,包括 2 次插入7 次删除
  1. 2 1
      h3d/pass/CascadeShadowMap.hx
  2. 0 6
      h3d/shader/CascadeShadow.hx

+ 2 - 1
h3d/pass/CascadeShadowMap.hx

@@ -180,7 +180,7 @@ class CascadeShadowMap extends DirShadowMap {
 		}
 		var near = shadowNear;
 		var far = shadowNear + firstCascadeSize;
-		for ( i in 0...cascade ) {
+		for ( i in 0...cascade - 1 ) {
 			var cascadeBounds = new h3d.col.Bounds();
 			function addCorner(x,y,d) {
 				var pt = ctx.camera.unproject(x,y,ctx.camera.distanceToDepth(d)).toPoint();
@@ -206,6 +206,7 @@ class CascadeShadowMap extends DirShadowMap {
 			near += firstCascadeSize * hxd.Math.pow(pow, i);
 			far += firstCascadeSize * hxd.Math.pow(pow, i+1);
 		}
+		lightCameras[cascade - 1].orthoBounds = lightCamera.orthoBounds.clone();
 	}
 
 	override function setGlobals() {

+ 0 - 6
h3d/shader/CascadeShadow.hx

@@ -12,12 +12,6 @@ class CascadeShadow extends DirShadow {
 
 		function fragment() {
 			if( enable ) {
-				var camProjectedPosition = vec4(transformedPosition, 1) * camViewProj;
-				var index = 0;
-				@unroll for ( i in 0...CASCADE_COUNT-1 ) {
-					if ( camProjectedPosition.z > cascadeLimits[i] )
-				 		index = i + 1;
-				}
 				if( USE_PCF ) {
 					shadow = 1.0;
 					var texelSize = 1.0/shadowRes;