Skip to content

Commit 48b8e7c

Browse files
committed
parentTransformMatrix mulitplication
1 parent eac2b83 commit 48b8e7c

1 file changed

Lines changed: 137 additions & 33 deletions

File tree

src/renderer/webgl/pipelines/TextureTintPipeline.js

Lines changed: 137 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,14 @@ var TextureTintPipeline = new Class({
370370
*/
371371
drawEmitterManager: function (emitterManager, camera, parentTransformMatrix)
372372
{
373+
var parentMatrix = null;
374+
375+
if (parentTransformMatrix !== undefined)
376+
{
377+
parentMatrix = parentTransformMatrix.matrix;
378+
}
379+
380+
373381
this.renderer.setPipeline(this);
374382

375383
var roundPixels = this.renderer.config.roundPixels;
@@ -393,6 +401,24 @@ var TextureTintPipeline = new Class({
393401
var vertexComponentCount = this.vertexComponentCount;
394402
var vertexCapacity = this.vertexCapacity;
395403
var texture = emitterManager.defaultFrame.source.glTexture;
404+
var pca, pcb, pcc, pcd, pce, pcf;
405+
406+
if (parentMatrix != null)
407+
{
408+
var pma = parentMatrix[0];
409+
var pmb = parentMatrix[1];
410+
var pmc = parentMatrix[2];
411+
var pmd = parentMatrix[3];
412+
var pme = parentMatrix[4];
413+
var pmf = parentMatrix[5];
414+
415+
pca = cma * pma + cmb * pmc;
416+
pcb = cma * pmb + cmb * pmd;
417+
pcc = cmc * pma + cmd * pmc;
418+
pcd = cmc * pmb + cmd * pmd;
419+
pce = cme * pma + cmf * pmc + pme;
420+
pcf = cme * pmb + cmf * pmd + pmf;
421+
}
396422

397423
this.setTexture2D(texture, 0);
398424

@@ -447,12 +473,27 @@ var TextureTintPipeline = new Class({
447473
var srd = cr * particle.scaleY;
448474
var sre = particle.x - scrollX * particle.scrollFactorX;
449475
var srf = particle.y - scrollY * particle.scrollFactorY;
450-
var mva = sra * cma + srb * cmc;
451-
var mvb = sra * cmb + srb * cmd;
452-
var mvc = src * cma + srd * cmc;
453-
var mvd = src * cmb + srd * cmd;
454-
var mve = sre * cma + srf * cmc + cme;
455-
var mvf = sre * cmb + srf * cmd + cmf;
476+
var mva, mvb, mvc, mvd, mve, mvf;
477+
478+
if (parentMatrix === null)
479+
{
480+
mva = sra * cma + srb * cmc;
481+
mvb = sra * cmb + srb * cmd;
482+
mvc = src * cma + srd * cmc;
483+
mvd = src * cmb + srd * cmd;
484+
mve = sre * cma + srf * cmc + cme;
485+
mvf = sre * cmb + srf * cmd + cmf;
486+
}
487+
else
488+
{
489+
mva = sra * pca + srb * pcc;
490+
mvb = sra * pcb + srb * pcd;
491+
mvc = src * pca + srd * pcc;
492+
mvd = src * pcb + srd * pcd;
493+
mve = sre * pca + srf * pcc + pce;
494+
mvf = sre * pcb + srf * pcd + pcf;
495+
}
496+
456497
var tx0 = x * mva + y * mvc + mve;
457498
var ty0 = x * mvb + y * mvd + mvf;
458499
var tx1 = x * mva + yh * mvc + mve;
@@ -535,6 +576,14 @@ var TextureTintPipeline = new Class({
535576
*/
536577
drawBlitter: function (blitter, camera, parentTransformMatrix)
537578
{
579+
var parentMatrix = null;
580+
581+
if (parentTransformMatrix !== undefined)
582+
{
583+
parentMatrix = parentTransformMatrix.matrix;
584+
}
585+
586+
538587
this.renderer.setPipeline(this);
539588

540589
var roundPixels = this.renderer.config.roundPixels;
@@ -657,17 +706,14 @@ var TextureTintPipeline = new Class({
657706
*/
658707
batchSprite: function (sprite, camera, parentTransformMatrix)
659708
{
660-
var parentMatrix;
709+
var parentMatrix = null;
661710

662-
if (parentTransformMatrix === undefined)
663-
{
664-
parentMatrix = IdentityMatrix;
665-
}
666-
else
711+
if (parentTransformMatrix !== undefined)
667712
{
668713
parentMatrix = parentTransformMatrix.matrix;
669714
}
670715

716+
671717
this.renderer.setPipeline(this);
672718

673719
if (this.vertexCount + 6 > this.vertexCapacity)
@@ -719,24 +765,39 @@ var TextureTintPipeline = new Class({
719765
var cmd = cameraMatrix[3];
720766
var cme = cameraMatrix[4];
721767
var cmf = cameraMatrix[5];
722-
var pma = parentMatrix[0];
723-
var pmb = parentMatrix[1];
724-
var pmc = parentMatrix[2];
725-
var pmd = parentMatrix[3];
726-
var pme = parentMatrix[4];
727-
var pmf = parentMatrix[5];
728-
var pca = cma * pma + cmb * pmc;
729-
var pcb = cma * pmb + cmb * pmd;
730-
var pcc = cmc * pma + cmd * pmc;
731-
var pcd = cmc * pmb + cmd * pmd;
732-
var pce = cme * pma + cmf * pmc + pme;
733-
var pcf = cme * pmb + cmf * pmd + pmf;
734-
var mva = sra * pca + srb * pcc;
735-
var mvb = sra * pcb + srb * pcd;
736-
var mvc = src * pca + srd * pcc;
737-
var mvd = src * pcb + srd * pcd;
738-
var mve = sre * pca + srf * pcc + pce;
739-
var mvf = sre * pcb + srf * pcd + pcf;
768+
var mva, mvb, mvc, mvd, mve, mvf;
769+
770+
if (parentMatrix != null)
771+
{
772+
mva = sra * cma + srb * cmc;
773+
mvb = sra * cmb + srb * cmd;
774+
mvc = src * cma + srd * cmc;
775+
mvd = src * cmb + srd * cmd;
776+
mve = sre * cma + srf * cmc + cme;
777+
mvf = sre * cmb + srf * cmd + cmf;
778+
}
779+
else
780+
{
781+
var pma = parentMatrix[0];
782+
var pmb = parentMatrix[1];
783+
var pmc = parentMatrix[2];
784+
var pmd = parentMatrix[3];
785+
var pme = parentMatrix[4];
786+
var pmf = parentMatrix[5];
787+
var pca = cma * pma + cmb * pmc;
788+
var pcb = cma * pmb + cmb * pmd;
789+
var pcc = cmc * pma + cmd * pmc;
790+
var pcd = cmc * pmb + cmd * pmd;
791+
var pce = cme * pma + cmf * pmc + pme;
792+
var pcf = cme * pmb + cmf * pmd + pmf;
793+
mva = sra * pca + srb * pcc;
794+
mvb = sra * pcb + srb * pcd;
795+
mvc = src * pca + srd * pcc;
796+
mvd = src * pcb + srd * pcd;
797+
mve = sre * pca + srf * pcc + pce;
798+
mvf = sre * pcb + srf * pcd + pcf;
799+
}
800+
740801
var tx0 = x * mva + y * mvc + mve;
741802
var ty0 = x * mvb + y * mvd + mvf;
742803
var tx1 = x * mva + yh * mvc + mve;
@@ -813,6 +874,14 @@ var TextureTintPipeline = new Class({
813874
*/
814875
batchMesh: function (mesh, camera, parentTransformMatrix)
815876
{
877+
var parentMatrix = null;
878+
879+
if (parentTransformMatrix !== undefined)
880+
{
881+
parentMatrix = parentTransformMatrix.matrix;
882+
}
883+
884+
816885
var vertices = mesh.vertices;
817886
var length = vertices.length;
818887
var vertexCount = (length / 2)|0;
@@ -903,6 +972,14 @@ var TextureTintPipeline = new Class({
903972
*/
904973
batchBitmapText: function (bitmapText, camera, parentTransformMatrix)
905974
{
975+
var parentMatrix = null;
976+
977+
if (parentTransformMatrix !== undefined)
978+
{
979+
parentMatrix = parentTransformMatrix.matrix;
980+
}
981+
982+
906983
this.renderer.setPipeline(this);
907984

908985
if (this.vertexCount + 6 > this.vertexCapacity)
@@ -1138,6 +1215,14 @@ var TextureTintPipeline = new Class({
11381215
*/
11391216
batchDynamicBitmapText: function (bitmapText, camera, parentTransformMatrix)
11401217
{
1218+
var parentMatrix = null;
1219+
1220+
if (parentTransformMatrix !== undefined)
1221+
{
1222+
parentMatrix = parentTransformMatrix.matrix;
1223+
}
1224+
1225+
11411226
this.renderer.setPipeline(this);
11421227

11431228
if (this.vertexCount + 6 > this.vertexCapacity)
@@ -1467,7 +1552,8 @@ var TextureTintPipeline = new Class({
14671552
getTint(text._tintBL, text._alphaBL),
14681553
getTint(text._tintBR, text._alphaBR),
14691554
0, 0,
1470-
camera
1555+
camera,
1556+
parentTransformMatrix
14711557
);
14721558
},
14731559

@@ -1523,7 +1609,8 @@ var TextureTintPipeline = new Class({
15231609
frameX, frameY, frameWidth, frameHeight,
15241610
tint, tint, tint, tint,
15251611
0, 0,
1526-
camera
1612+
camera,
1613+
parentTransformMatrix
15271614
);
15281615
}
15291616
},
@@ -1560,7 +1647,8 @@ var TextureTintPipeline = new Class({
15601647
getTint(tileSprite._tintBR, tileSprite._alphaBR),
15611648
tileSprite.tilePositionX / tileSprite.frame.width,
15621649
tileSprite.tilePositionY / tileSprite.frame.height,
1563-
camera
1650+
camera,
1651+
parentTransformMatrix
15641652
);
15651653
},
15661654

@@ -1617,6 +1705,14 @@ var TextureTintPipeline = new Class({
16171705
camera,
16181706
parentTransformMatrix)
16191707
{
1708+
var parentMatrix = null;
1709+
1710+
if (parentTransformMatrix !== undefined)
1711+
{
1712+
parentMatrix = parentTransformMatrix.matrix;
1713+
}
1714+
1715+
16201716
this.renderer.setPipeline(this);
16211717

16221718
if (this.vertexCount + 6 > this.vertexCapacity)
@@ -1752,6 +1848,14 @@ var TextureTintPipeline = new Class({
17521848
parentTransformMatrix
17531849
)
17541850
{
1851+
var parentMatrix = null;
1852+
1853+
if (parentTransformMatrix !== undefined)
1854+
{
1855+
parentMatrix = parentTransformMatrix.matrix;
1856+
}
1857+
1858+
17551859
this.renderer.setPipeline(this);
17561860

17571861
if (this.vertexCount + 6 > this.vertexCapacity)

0 commit comments

Comments
 (0)