Explorar o código

- Refix dirlight shadow map

ShiroSmith %!s(int64=7) %!d(string=hai) anos
pai
achega
28dded70de
Modificáronse 1 ficheiros con 8 adicións e 5 borrados
  1. 8 5
      h3d/pass/DirShadowMap.hx

+ 8 - 5
h3d/pass/DirShadowMap.hx

@@ -88,14 +88,17 @@ class DirShadowMap extends Shadows {
 
 		if( mode == Dynamic ) {
 			// intersect with frustum bounds
+			var cameraBounds = new h3d.col.Bounds();
+			cameraBounds.zMin = bounds.zMin;
 			for( pt in ctx.camera.getFrustumCorners() ) {
 				pt.transform(camera.mcam);
-				if( pt.x < bounds.xMin ) bounds.xMin = pt.x;
-				if( pt.x > bounds.xMax ) bounds.xMax = pt.x;
-				if( pt.y < bounds.yMin ) bounds.yMin = pt.y;
-				if( pt.y > bounds.yMax ) bounds.yMax = pt.y;
-				if( pt.z > bounds.zMax ) bounds.zMax = pt.z;
+				if( pt.x < cameraBounds.xMin ) cameraBounds.xMin = pt.x;
+				if( pt.x > cameraBounds.xMax ) cameraBounds.xMax = pt.x;
+				if( pt.y < cameraBounds.yMin ) cameraBounds.yMin = pt.y;
+				if( pt.y > cameraBounds.yMax ) cameraBounds.yMax = pt.y;
+				if( pt.z > cameraBounds.zMax ) cameraBounds.zMax = pt.z;
 			}
+			bounds.intersection(bounds, cameraBounds);
 		}
 
 		bounds.scaleCenter(1.01);