Skip to content

Commit d05afa9

Browse files
committed
Added batchVert method to help make customization easier
1 parent 47ec3d3 commit d05afa9

1 file changed

Lines changed: 47 additions & 84 deletions

File tree

src/renderer/webgl/WebGLPipeline.js

Lines changed: 47 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,44 @@ var WebGLPipeline = new Class({
861861
return this;
862862
},
863863

864+
/**
865+
* Adds a single vertex to the current vertex buffer and increments the
866+
* `vertexCount` property by 1.
867+
*
868+
* This method is called directly by `batchTri` and `batchQuad`.
869+
*
870+
* It does not perform any batch limit checking itself, so if you need to call
871+
* this method directly, do so in the same way that `batchQuad` does, for example.
872+
*
873+
* @method Phaser.Renderer.WebGL.Pipelines.MultiPipeline#batchVert
874+
* @since 3.50.0
875+
*
876+
* @param {number} x - The vertex x position.
877+
* @param {number} y - The vertex y position.
878+
* @param {number} u - UV u value.
879+
* @param {number} v - UV v value.
880+
* @param {integer} unit - Texture unit to which the texture needs to be bound.
881+
* @param {(number|boolean)} tintEffect - The tint effect for the shader to use.
882+
* @param {number} tint - The tint color value.
883+
*/
884+
batchVert: function (x, y, u, v, unit, tintEffect, tint)
885+
{
886+
var vertexViewF32 = this.vertexViewF32;
887+
var vertexViewU32 = this.vertexViewU32;
888+
889+
var vertexOffset = (this.vertexCount * this.currentShader.vertexComponentCount) - 1;
890+
891+
vertexViewF32[++vertexOffset] = x;
892+
vertexViewF32[++vertexOffset] = y;
893+
vertexViewF32[++vertexOffset] = u;
894+
vertexViewF32[++vertexOffset] = v;
895+
vertexViewF32[++vertexOffset] = unit;
896+
vertexViewF32[++vertexOffset] = tintEffect;
897+
vertexViewU32[++vertexOffset] = tint;
898+
899+
this.vertexCount++;
900+
},
901+
864902
/**
865903
* Adds the vertices data into the batch and flushes if full.
866904
*
@@ -918,60 +956,12 @@ var WebGLPipeline = new Class({
918956
unit = this.setTexture2D(texture);
919957
}
920958

921-
var vertexViewF32 = this.vertexViewF32;
922-
var vertexViewU32 = this.vertexViewU32;
923-
924-
var vertexOffset = (this.vertexCount * this.currentShader.vertexComponentCount) - 1;
925-
926-
vertexViewF32[++vertexOffset] = x0;
927-
vertexViewF32[++vertexOffset] = y0;
928-
vertexViewF32[++vertexOffset] = u0;
929-
vertexViewF32[++vertexOffset] = v0;
930-
vertexViewF32[++vertexOffset] = unit;
931-
vertexViewF32[++vertexOffset] = tintEffect;
932-
vertexViewU32[++vertexOffset] = tintTL;
933-
934-
vertexViewF32[++vertexOffset] = x1;
935-
vertexViewF32[++vertexOffset] = y1;
936-
vertexViewF32[++vertexOffset] = u0;
937-
vertexViewF32[++vertexOffset] = v1;
938-
vertexViewF32[++vertexOffset] = unit;
939-
vertexViewF32[++vertexOffset] = tintEffect;
940-
vertexViewU32[++vertexOffset] = tintBL;
941-
942-
vertexViewF32[++vertexOffset] = x2;
943-
vertexViewF32[++vertexOffset] = y2;
944-
vertexViewF32[++vertexOffset] = u1;
945-
vertexViewF32[++vertexOffset] = v1;
946-
vertexViewF32[++vertexOffset] = unit;
947-
vertexViewF32[++vertexOffset] = tintEffect;
948-
vertexViewU32[++vertexOffset] = tintBR;
949-
950-
vertexViewF32[++vertexOffset] = x0;
951-
vertexViewF32[++vertexOffset] = y0;
952-
vertexViewF32[++vertexOffset] = u0;
953-
vertexViewF32[++vertexOffset] = v0;
954-
vertexViewF32[++vertexOffset] = unit;
955-
vertexViewF32[++vertexOffset] = tintEffect;
956-
vertexViewU32[++vertexOffset] = tintTL;
957-
958-
vertexViewF32[++vertexOffset] = x2;
959-
vertexViewF32[++vertexOffset] = y2;
960-
vertexViewF32[++vertexOffset] = u1;
961-
vertexViewF32[++vertexOffset] = v1;
962-
vertexViewF32[++vertexOffset] = unit;
963-
vertexViewF32[++vertexOffset] = tintEffect;
964-
vertexViewU32[++vertexOffset] = tintBR;
965-
966-
vertexViewF32[++vertexOffset] = x3;
967-
vertexViewF32[++vertexOffset] = y3;
968-
vertexViewF32[++vertexOffset] = u1;
969-
vertexViewF32[++vertexOffset] = v0;
970-
vertexViewF32[++vertexOffset] = unit;
971-
vertexViewF32[++vertexOffset] = tintEffect;
972-
vertexViewU32[++vertexOffset] = tintTR;
973-
974-
this.vertexCount += 6;
959+
this.batchVert(x0, y0, u0, v0, unit, tintEffect, tintTL);
960+
this.batchVert(x1, y1, u0, v1, unit, tintEffect, tintBL);
961+
this.batchVert(x2, y2, u1, v1, unit, tintEffect, tintBR);
962+
this.batchVert(x0, y0, u0, v0, unit, tintEffect, tintTL);
963+
this.batchVert(x2, y2, u1, v1, unit, tintEffect, tintBR);
964+
this.batchVert(x3, y3, u1, v0, unit, tintEffect, tintTR);
975965

976966
return hasFlushed;
977967
},
@@ -1028,36 +1018,9 @@ var WebGLPipeline = new Class({
10281018
unit = this.setTexture2D(texture);
10291019
}
10301020

1031-
var vertexViewF32 = this.vertexViewF32;
1032-
var vertexViewU32 = this.vertexViewU32;
1033-
1034-
var vertexOffset = (this.vertexCount * this.currentShader.vertexComponentCount) - 1;
1035-
1036-
vertexViewF32[++vertexOffset] = x0;
1037-
vertexViewF32[++vertexOffset] = y0;
1038-
vertexViewF32[++vertexOffset] = u0;
1039-
vertexViewF32[++vertexOffset] = v0;
1040-
vertexViewF32[++vertexOffset] = unit;
1041-
vertexViewF32[++vertexOffset] = tintEffect;
1042-
vertexViewU32[++vertexOffset] = tintTL;
1043-
1044-
vertexViewF32[++vertexOffset] = x1;
1045-
vertexViewF32[++vertexOffset] = y1;
1046-
vertexViewF32[++vertexOffset] = u0;
1047-
vertexViewF32[++vertexOffset] = v1;
1048-
vertexViewF32[++vertexOffset] = unit;
1049-
vertexViewF32[++vertexOffset] = tintEffect;
1050-
vertexViewU32[++vertexOffset] = tintTR;
1051-
1052-
vertexViewF32[++vertexOffset] = x2;
1053-
vertexViewF32[++vertexOffset] = y2;
1054-
vertexViewF32[++vertexOffset] = u1;
1055-
vertexViewF32[++vertexOffset] = v1;
1056-
vertexViewF32[++vertexOffset] = unit;
1057-
vertexViewF32[++vertexOffset] = tintEffect;
1058-
vertexViewU32[++vertexOffset] = tintBL;
1059-
1060-
this.vertexCount += 3;
1021+
this.batchVert(x0, y0, u0, v0, unit, tintEffect, tintTL);
1022+
this.batchVert(x1, y1, u0, v1, unit, tintEffect, tintTR);
1023+
this.batchVert(x2, y2, u1, v1, unit, tintEffect, tintBL);
10611024

10621025
return hasFlushed;
10631026
},

0 commit comments

Comments
 (0)