Przeglądaj źródła

temp fix until we use hxsl v2

ncannasse 12 lat temu
rodzic
commit
1f3a94bff8
4 zmienionych plików z 30 dodań i 12 usunięć
  1. 4 1
      h2d/CachedBitmap.hx
  2. 2 1
      h2d/TileColorGroup.hx
  3. 6 7
      h2d/TileGroup.hx
  4. 18 3
      h2d/Tools.hx

+ 4 - 1
h2d/CachedBitmap.hx

@@ -56,19 +56,22 @@ class CachedBitmap extends Sprite {
 		var core = Tools.getCoreObjects();
 		var b = core.cachedBitmapObj;
 		Tools.setBlendMode(b.material,blendMode);
-		var tmp = core.tmpVector;
+		var tmp = core.tmpSize;
 		tmp.x = tile.width;
 		tmp.y = tile.height;
 		tmp.z = 1;
 		b.shader.size = tmp;
+		var tmp = core.tmpMat1;
 		tmp.x = matA;
 		tmp.y = matC;
 		tmp.z = absX + tile.dx * matA + tile.dy * matC;
 		b.shader.mat1 = tmp;
+		var tmp = core.tmpMat2;
 		tmp.x = matB;
 		tmp.y = matD;
 		tmp.z = absY + tile.dx * matB + tile.dy * matD;
 		b.shader.mat2 = tmp;
+		var tmp = core.tmpUVScale;
 		tmp.x = tile.u2 - tile.u;
 		tmp.y = tile.v2 - tile.v;
 		b.shader.uvScale = tmp;

+ 2 - 1
h2d/TileColorGroup.hx

@@ -107,9 +107,10 @@ class TileColorGroup extends Sprite {
 		var core = Tools.getCoreObjects();
 		var shader = core.tileColorObj.shader;
 		shader.tex = tile.getTexture();
-		var tmp = core.tmpVector;
+		var tmp = core.tmpMat1;
 		tmp.set(matA, matC, absX);
 		shader.mat1 = tmp;
+		var tmp = core.tmpMat2;
 		tmp.set(matB, matD, absY);
 		shader.mat2 = tmp;
 		Tools.setBlendMode(core.tileColorObj.material, blendMode);

+ 6 - 7
h2d/TileGroup.hx

@@ -86,13 +86,12 @@ class TileGroup extends Sprite {
 	override function draw(engine:h3d.Engine) {
 		var core = Tools.getCoreObjects();
 		var shader = core.tileObj.shader;
-		var tmp = core.tmpVector;
-		tmp.set(matA, matC, absX);
-		shader.mat1 = tmp;
-		tmp.set(matB, matD, absY);
-		shader.mat2 = tmp;
-		tmp.set(color.r, color.g, color.b);
-		shader.color = tmp;
+		core.tmpMat1.set(matA, matC, absX);
+		core.tmpMat2.set(matB, matD, absY);
+		core.tmpColor.set(color.r, color.g, color.b);
+		shader.mat1 = core.tmpMat1;
+		shader.mat2 = core.tmpMat2;
+		shader.color = core.tmpColor;
 		shader.tex = tile.getTexture();
 		Tools.setBlendMode(core.tileObj.material, blendMode);
 		engine.selectMaterial(core.tileObj.material);

+ 18 - 3
h2d/Tools.hx

@@ -93,7 +93,12 @@ private class TileColorShader extends h3d.Shader {
 
 private class CoreObjects  {
 	
-	public var tmpVector : h3d.Vector;
+	public var tmpMat1 : h3d.Vector;
+	public var tmpMat2 : h3d.Vector;
+	public var tmpSize : h3d.Vector;
+	public var tmpUVPos : h3d.Vector;
+	public var tmpUVScale : h3d.Vector;
+	public var tmpColor : h3d.Vector;
 	public var tmpMatrix : h3d.Matrix;
 	public var bitmapObj : h3d.CoreObject<BitmapShader>;
 	public var cachedBitmapObj : h3d.CoreObject<CachedBitmapShader>;
@@ -102,7 +107,12 @@ private class CoreObjects  {
 	var emptyTexture : h3d.mat.Texture;
 	
 	public function new() {
-		tmpVector = new h3d.Vector();
+		tmpMat1 = new h3d.Vector();
+		tmpMat2 = new h3d.Vector();
+		tmpColor = new h3d.Vector();
+		tmpSize = new h3d.Vector();
+		tmpUVPos = new h3d.Vector();
+		tmpUVScale = new h3d.Vector();
 		tmpMatrix = new h3d.Matrix();
 		
 		var plan = new h3d.prim.Quads([
@@ -166,26 +176,31 @@ class Tools {
 		setBlendMode(b.material, blendMode);
 		if( tile == null )
 			tile = new Tile(core.getEmptyTexture(), 0, 0, 5, 5);
-		var tmp = core.tmpVector;
+		var tmp = core.tmpSize;
 		// adds 1/10 pixel size to prevent precision loss after scaling
 		tmp.x = tile.width + 0.1;
 		tmp.y = tile.height + 0.1;
 		tmp.z = 1;
 		b.shader.size = tmp;
+		var tmp = core.tmpMat1;
 		tmp.x = spr.matA;
 		tmp.y = spr.matC;
 		tmp.z = spr.absX + tile.dx * spr.matA + tile.dy * spr.matC;
 		b.shader.mat1 = tmp;
+		var tmp = core.tmpMat2;
 		tmp.x = spr.matB;
 		tmp.y = spr.matD;
 		tmp.z = spr.absY + tile.dx * spr.matB + tile.dy * spr.matD;
 		b.shader.mat2 = tmp;
+		var tmp = core.tmpUVPos;
 		tmp.x = tile.u;
 		tmp.y = tile.v;
 		b.shader.uvPos = tmp;
+		var tmp = core.tmpUVScale;
 		tmp.x = tile.u2 - tile.u;
 		tmp.y = tile.v2 - tile.v;
 		b.shader.uvScale = tmp;
+		var tmp = core.tmpColor;
 		if( color == null ) {
 			tmp.x = 1;
 			tmp.y = 1;