Skip to content

Commit 2af81bd

Browse files
committed
Masses of refactoring in BatchManager, making it as compact and fast as possible.
1 parent 3cb806c commit 2af81bd

4 files changed

Lines changed: 199 additions & 207 deletions

File tree

src/components/Transform.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,22 @@ Phaser.Component.Transform.prototype = {
481481
// Bottom Left Vert
482482
vert.x3 = (a * w1) + (c * h0) + tx;
483483
vert.y3 = (d * h0) + (b * w1) + ty;
484+
},
485+
486+
cloneVertexData: function ()
487+
{
488+
var src = this.glVertextData;
489+
490+
return {
491+
x0: src.x0,
492+
y0: src.y0,
493+
x1: src.x1,
494+
y1: src.y1,
495+
x2: src.x2,
496+
y2: src.y2,
497+
x3: src.x3,
498+
y3: src.y3
499+
};
484500
}
485501

486502
};

src/gameobjects/image/ImageWebGLRenderer.js

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,77 @@ Phaser.Renderer.WebGL.GameObjects.Image = {
77
render: function (renderer, src)
88
{
99
var frame = src.frame;
10+
var alpha = src.color.worldAlpha * 255 << 24;
1011

1112
// Skip rendering?
1213

13-
if (src.skipRender || !src.visible || src.worldAlpha <= 0 || !frame.cutWidth || !frame.cutHeight)
14+
if (src.skipRender || !src.visible || alpha === 0 || !frame.cutWidth || !frame.cutHeight)
1415
{
1516
return;
1617
}
1718

19+
// The below works
20+
1821
var uvs = frame.uvs;
1922
var verts = src.transform.glVertextData;
2023
var index = src.glTextureIndex;
21-
var alpha = src.color.worldAlpha * 255 << 24;
2224
var tint = src.color._glTint;
2325
var bg = src.color._glBg;
2426

25-
renderer.spriteBatch.render(src);
27+
renderer.spriteBatch.addToBatch(src, verts, uvs, index, alpha, tint, bg);
28+
29+
/*
30+
31+
// var verts = src.transform.cloneVertexData();
32+
var worldAlpha = 0.2;
33+
34+
// 0.2, 0.4, 0.6, 0.8, 1
35+
36+
// xy0 Top Left Vert
37+
// xy1 Top Right Vert
38+
// xy2 Bottom Right Vert
39+
// xy3 Bottom Left Vert
40+
41+
// Let's just try 5 clones below the current sprite?
42+
43+
verts.x0 += 8 * 5;
44+
verts.x1 += 8 * 5;
45+
verts.x2 += 8 * 5;
46+
verts.x3 += 8 * 5;
47+
48+
verts.y0 += 8 * 5;
49+
verts.y1 += 8 * 5;
50+
verts.y2 += 8 * 5;
51+
verts.y3 += 8 * 5;
52+
53+
54+
for (var i = 0; i < 5; i++)
55+
{
56+
alpha = worldAlpha * 255 << 24;
57+
58+
renderer.spriteBatch.addToBatch(src, verts, uvs, index, alpha, tint, bg);
59+
60+
verts.x0 -= 8;
61+
verts.x1 -= 8;
62+
verts.x2 -= 8;
63+
verts.x3 -= 8;
64+
65+
verts.y0 -= 8;
66+
verts.y1 -= 8;
67+
verts.y2 -= 8;
68+
verts.y3 -= 8;
69+
70+
worldAlpha += 0.2;
71+
}
72+
*/
2673

27-
// Several options open to us... we can either just call 'render' and it works out
28-
// everything for us.
29-
//
30-
// Or we can call addVerts 4 times
31-
//
32-
// Or we can call addVerts and pass in objects, but call it as many times as we like
33-
// so we can do special FX from it
74+
// Also works ...
3475

35-
renderer.spriteBatch.addVert(verts.x0, verts.y0, uvs.x0, uvs.y0, index, tint.topLeft + alpha, bg);
36-
renderer.spriteBatch.addVert(verts.x1, verts.y1, uvs.x1, uvs.y1, index, tint.topRight + alpha, bg);
37-
renderer.spriteBatch.addVert(verts.x2, verts.y2, uvs.x2, uvs.y2, index, tint.bottomRight + alpha, bg);
38-
renderer.spriteBatch.addVert(verts.x3, verts.y3, uvs.x3, uvs.y3, index, tint.bottomLeft + alpha, bg);
76+
// renderer.spriteBatch.startGameObject(src);
77+
// renderer.spriteBatch.addVert(verts.x0, verts.y0, uvs.x0, uvs.y0, index, tint.topLeft + alpha, bg);
78+
// renderer.spriteBatch.addVert(verts.x1, verts.y1, uvs.x1, uvs.y1, index, tint.topRight + alpha, bg);
79+
// renderer.spriteBatch.addVert(verts.x2, verts.y2, uvs.x2, uvs.y2, index, tint.bottomRight + alpha, bg);
80+
// renderer.spriteBatch.addVert(verts.x3, verts.y3, uvs.x3, uvs.y3, index, tint.bottomLeft + alpha, bg);
3981
}
4082

4183
};

0 commit comments

Comments
 (0)