Skip to content

Commit 3c80553

Browse files
committed
Spine GL now resets pipeline properly
1 parent 59fc4d5 commit 3c80553

1 file changed

Lines changed: 53 additions & 89 deletions

File tree

plugins/spine/src/gameobject/SpineGameObjectWebGLRenderer.js

Lines changed: 53 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -21,114 +21,73 @@
2121
*/
2222
var SpineGameObjectWebGLRenderer = function (renderer, src, interpolationPercentage, camera, parentMatrix)
2323
{
24+
var pipeline = renderer.currentPipeline;
25+
26+
renderer.flush();
27+
28+
renderer.currentProgram = null;
29+
renderer.currentVertexBuffer = null;
30+
31+
var mvp = src.mvp;
2432
var plugin = src.plugin;
25-
var mvp = plugin.mvp;
2633
var shader = plugin.shader;
2734
var batcher = plugin.batcher;
2835
var runtime = src.runtime;
2936
var skeletonRenderer = plugin.skeletonRenderer;
3037

31-
// spriteMatrix.applyITRS(sprite.x, sprite.y, sprite.rotation, sprite.scaleX, sprite.scaleY);
32-
33-
src.mvp.identity();
34-
35-
src.mvp.ortho(0, 0 + 800, 0, 0 + 600, 0, 1);
36-
37-
src.mvp.translate({ x: src.x, y: 600 - src.y, z: 0 });
38-
39-
src.mvp.rotateX(src.rotation);
40-
41-
src.mvp.scale({ x: src.scaleX, y: src.scaleY, z: 1 });
42-
43-
// mvp.translate(-src.x, src.y, 0);
44-
// mvp.ortho2d(-250, 0, 800, 600);
45-
46-
// var camMatrix = renderer._tempMatrix1;
47-
// var spriteMatrix = renderer._tempMatrix2;
48-
// var calcMatrix = renderer._tempMatrix3;
49-
50-
// spriteMatrix.applyITRS(src.x, src.y, src.rotation, src.scaleX, src.scaleY);
51-
52-
// mvp.values[0] = spriteMatrix[0];
53-
// mvp.values[1] = spriteMatrix[1];
54-
// mvp.values[2] = spriteMatrix[2];
55-
// mvp.values[4] = spriteMatrix[3];
56-
// mvp.values[5] = spriteMatrix[4];
57-
// mvp.values[6] = spriteMatrix[5];
58-
// mvp.values[8] = spriteMatrix[6];
59-
// mvp.values[9] = spriteMatrix[7];
60-
// mvp.values[10] = spriteMatrix[8];
61-
62-
// Const = Array Index = Identity
63-
// M00 = 0 = 1
64-
// M01 = 4 = 0
65-
// M02 = 8 = 0
66-
// M03 = 12 = 0
67-
// M10 = 1 = 0
68-
// M11 = 5 = 1
69-
// M12 = 9 = 0
70-
// M13 = 13 = 0
71-
// M20 = 2 = 0
72-
// M21 = 6 = 0
73-
// M22 = 10 = 1
74-
// M23 = 14 = 0
75-
// M30 = 3 = 0
76-
// M31 = 7 = 0
77-
// M32 = 11 = 0
78-
// M33 = 15 = 1
79-
80-
mvp.values[0] = src.mvp.val[0];
81-
mvp.values[1] = src.mvp.val[1];
82-
mvp.values[2] = src.mvp.val[2];
83-
mvp.values[3] = src.mvp.val[3];
84-
mvp.values[4] = src.mvp.val[4];
85-
mvp.values[5] = src.mvp.val[5];
86-
mvp.values[6] = src.mvp.val[6];
87-
mvp.values[7] = src.mvp.val[7];
88-
mvp.values[8] = src.mvp.val[8];
89-
mvp.values[9] = src.mvp.val[9];
90-
mvp.values[10] = src.mvp.val[10];
91-
mvp.values[11] = src.mvp.val[11];
92-
mvp.values[12] = src.mvp.val[12];
93-
mvp.values[13] = src.mvp.val[13];
94-
mvp.values[14] = src.mvp.val[14];
95-
mvp.values[15] = src.mvp.val[15];
96-
97-
// Array Order - Index
98-
// M00 = 0
99-
// M10 = 1
100-
// M20 = 2
101-
// M30 = 3
102-
// M01 = 4
103-
// M11 = 5
104-
// M21 = 6
105-
// M31 = 7
106-
// M02 = 8
107-
// M12 = 9
108-
// M22 = 10
109-
// M32 = 11
110-
// M03 = 12
111-
// M13 = 13
112-
// M23 = 14
113-
// M33 = 15
114-
115-
116-
// mvp.ortho(-250, -250 + 1600, 0, 0 + 1200, 0, 1);
38+
mvp.ortho(0, renderer.width, 0, renderer.height, 0, 1);
39+
40+
// var originX = camera.width * camera.originX;
41+
// var originY = camera.height * camera.originY;
42+
// mvp.translateXYZ(((camera.x - originX) - camera.scrollX) + src.x, renderer.height - (((camera.y + originY) - camera.scrollY) + src.y), 0);
43+
// mvp.rotateZ(-(camera.rotation + src.rotation));
44+
// mvp.scaleXYZ(camera.zoom * src.scaleX, camera.zoom * src.scaleY, 1);
45+
46+
mvp.translateXYZ(src.x, renderer.height - src.y, 0);
47+
mvp.rotateZ(-src.rotation);
48+
mvp.scaleXYZ(src.scaleX, src.scaleY, 1);
49+
50+
// spriteMatrix.e -= camera.scrollX * sprite.scrollFactorX;
51+
// spriteMatrix.f -= camera.scrollY * sprite.scrollFactorY;
52+
53+
// 12,13 = tx/ty
54+
// 0,5 = scale x/y
55+
56+
// var localA = mvp.val[0];
57+
// var localB = mvp.val[1];
58+
// var localC = mvp.val[2];
59+
// var localD = mvp.val[3];
60+
// var localE = mvp.val[4];
61+
// var localF = mvp.val[5];
62+
63+
// var sourceA = camMatrix.matrix[0];
64+
// var sourceB = camMatrix.matrix[1];
65+
// var sourceC = camMatrix.matrix[2];
66+
// var sourceD = camMatrix.matrix[3];
67+
// var sourceE = camMatrix.matrix[4];
68+
// var sourceF = camMatrix.matrix[5];
69+
70+
// mvp.val[0] = (sourceA * localA) + (sourceB * localC);
71+
// mvp.val[1] = (sourceA * localB) + (sourceB * localD);
72+
// mvp.val[2] = (sourceC * localA) + (sourceD * localC);
73+
// mvp.val[3] = (sourceC * localB) + (sourceD * localD);
74+
// mvp.val[4] = (sourceE * localA) + (sourceF * localC) + localE;
75+
// mvp.val[5] = (sourceE * localB) + (sourceF * localD) + localF;
11776

11877
src.skeleton.updateWorldTransform();
11978

12079
// Bind the shader and set the texture and model-view-projection matrix.
12180

12281
shader.bind();
12382
shader.setUniformi(runtime.webgl.Shader.SAMPLER, 0);
124-
shader.setUniform4x4f(runtime.webgl.Shader.MVP_MATRIX, mvp.values);
83+
shader.setUniform4x4f(runtime.webgl.Shader.MVP_MATRIX, mvp.val);
12584

12685
// Start the batch and tell the SkeletonRenderer to render the active skeleton.
12786
batcher.begin(shader);
12887

12988
plugin.skeletonRenderer.vertexEffect = null;
13089

131-
skeletonRenderer.premultipliedAlpha = true;
90+
skeletonRenderer.premultipliedAlpha = false;
13291

13392
skeletonRenderer.draw(batcher, src.skeleton);
13493

@@ -147,6 +106,11 @@ var SpineGameObjectWebGLRenderer = function (renderer, src, interpolationPercent
147106
debugShader.unbind();
148107
}
149108
*/
109+
110+
renderer.currentPipeline = pipeline;
111+
renderer.currentPipeline.bind();
112+
renderer.currentPipeline.onBind();
113+
renderer.setBlankTexture(true);
150114
};
151115

152116
module.exports = SpineGameObjectWebGLRenderer;

0 commit comments

Comments
 (0)