瀏覽代碼

fixed regression in filter offset

ncannasse 9 年之前
父節點
當前提交
81b28837cd
共有 2 個文件被更改,包括 12 次插入8 次删除
  1. 6 3
      h2d/Sprite.hx
  2. 6 5
      h2d/filter/DropShadow.hx

+ 6 - 3
h2d/Sprite.hx

@@ -548,13 +548,16 @@ class Sprite {
 		final.dx = xMin;
 		final.dy = yMin;
 		for( f in filters ) {
+			var prev = final;
 			final = f.draw(ctx, final);
 			if( final == null ) {
 				ctx.popTarget();
 				return;
 			}
-			final.dx = xMin;
-			final.dy = yMin;
+			if( final != prev ) {
+				final.dx += xMin;
+				final.dy += yMin;
+			}
 		}
 
 		shader.filterMatrixA.load(oldA);
@@ -562,7 +565,7 @@ class Sprite {
 		@:privateAccess ctx.inFilter = oldF;
 
 		ctx.popTarget();
-		
+
 		ctx.globalAlpha = oldAlpha * alpha;
 		emitTile(ctx, final);
 		ctx.globalAlpha = oldAlpha;

+ 6 - 5
h2d/filter/DropShadow.hx

@@ -22,13 +22,14 @@ class DropShadow extends Glow {
 		pass.shader.fixedColor.w = alpha;
 		var save = ctx.textures.allocTarget("glowSave", ctx, t.width, t.height, false);
 		h3d.pass.Copy.run(t.getTexture(), save, None);
-		pass.apply(t.getTexture(), ctx.textures.allocTarget("glowTmp", ctx, t.width, t.height, false));
+		pass.apply(save, ctx.textures.allocTarget("glowTmp", ctx, t.width, t.height, false));
 		var dx = Math.round(Math.cos(angle) * distance);
 		var dy = Math.round(Math.sin(angle) * distance);
-		h3d.pass.Copy.run(save, t.getTexture(), Alpha, new h3d.Vector( dx / t.width, dy / t.height) );
-		t.dx = dx;
-		t.dy = dy;
-		return t;
+		h3d.pass.Copy.run(t.getTexture(), save, Alpha, new h3d.Vector( dx / t.width, dy / t.height) );
+		var ret = h2d.Tile.fromTexture(save);
+		ret.dx = dx;
+		ret.dy = dy;
+		return ret;
 	}
 
 }