@@ -19,14 +19,92 @@ var ImageWebGLRenderer = function (renderer, src, interpolationPercentage)
1919 // var bg = src.color._glBg;
2020 // renderer.batch.add(frame.source, src.blendMode, verts, frame.uvs, index, alpha, tint, bg);
2121
22+ // Not inlined
23+ //renderer.setBlendMode(src.color._blendMode);
24+ //renderer.spriteBatch.add(
25+ // src.frame,
26+ // src.anchorX, src.anchorY,
27+ // transform.worldMatrix.matrix,
28+ // src.color._glTint
29+ //);
30+
31+ /*******************/
32+
33+ // Inline spriteBatch.add gives a huge boost
2234 var transform = src . transform ;
35+ var spriteBatch = renderer . spriteBatch ;
36+ var anchorX = src . anchorX ;
37+ var anchorY = src . anchorY ;
38+ var matrix = transform . worldMatrix . matrix ;
39+ var vertexColor = src . color . _glTint ;
40+
2341 renderer . setBlendMode ( src . color . _blendMode ) ;
24- renderer . spriteBatch . add (
25- frame ,
26- src . anchorX , src . anchorY ,
27- transform . worldMatrix . matrix ,
28- src . color . _glTint
29- ) ;
42+ renderer . setBatch ( spriteBatch , frame . texture . source [ frame . sourceIndex ] . glTexture ) ;
43+ // The user must check if the buffers are full before flushing
44+ // this is to give freedom of when should the renderer flush. var vertexDataBuffer = this.vertexDataBuffer;
45+ var vertexDataBuffer = spriteBatch . vertexDataBuffer ;
46+ var vertexBufferF32 = vertexDataBuffer . floatView ;
47+ var vertexBufferU32 = vertexDataBuffer . uintView ;
48+ var vertexOffset = vertexDataBuffer . allocate ( 44 ) ;
49+ var uvs = frame . uvs ;
50+ var width = frame . width ;
51+ var height = frame . height ;
52+ var x = width * - anchorX + frame . x ;
53+ var y = height * - anchorY + frame . y ;
54+ var a = matrix [ 0 ] ;
55+ var b = matrix [ 1 ] ;
56+ var c = matrix [ 2 ] ;
57+ var d = matrix [ 3 ] ;
58+ var tx = matrix [ 4 ] ;
59+ var ty = matrix [ 5 ] ;
60+ var xw = x + width ;
61+ var yh = y + height ;
62+
63+ vertexBufferF32 [ vertexOffset ++ ] = x ;
64+ vertexBufferF32 [ vertexOffset ++ ] = y ;
65+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x0 ;
66+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y0 ;
67+ vertexBufferF32 [ vertexOffset ++ ] = a ;
68+ vertexBufferF32 [ vertexOffset ++ ] = b ;
69+ vertexBufferF32 [ vertexOffset ++ ] = c ;
70+ vertexBufferF32 [ vertexOffset ++ ] = d ;
71+ vertexBufferF32 [ vertexOffset ++ ] = tx ;
72+ vertexBufferF32 [ vertexOffset ++ ] = ty ;
73+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . topLeft ;
74+ vertexBufferF32 [ vertexOffset ++ ] = x ;
75+ vertexBufferF32 [ vertexOffset ++ ] = yh ;
76+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x1 ;
77+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y1 ;
78+ vertexBufferF32 [ vertexOffset ++ ] = a ;
79+ vertexBufferF32 [ vertexOffset ++ ] = b ;
80+ vertexBufferF32 [ vertexOffset ++ ] = c ;
81+ vertexBufferF32 [ vertexOffset ++ ] = d ;
82+ vertexBufferF32 [ vertexOffset ++ ] = tx ;
83+ vertexBufferF32 [ vertexOffset ++ ] = ty ;
84+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . bottomLeft ;
85+ vertexBufferF32 [ vertexOffset ++ ] = xw ;
86+ vertexBufferF32 [ vertexOffset ++ ] = yh ;
87+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x2 ;
88+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y2 ;
89+ vertexBufferF32 [ vertexOffset ++ ] = a ;
90+ vertexBufferF32 [ vertexOffset ++ ] = b ;
91+ vertexBufferF32 [ vertexOffset ++ ] = c ;
92+ vertexBufferF32 [ vertexOffset ++ ] = d ;
93+ vertexBufferF32 [ vertexOffset ++ ] = tx ;
94+ vertexBufferF32 [ vertexOffset ++ ] = ty ;
95+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . bottomRight ;
96+ vertexBufferF32 [ vertexOffset ++ ] = xw ;
97+ vertexBufferF32 [ vertexOffset ++ ] = y ;
98+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x3 ;
99+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y3 ;
100+ vertexBufferF32 [ vertexOffset ++ ] = a ;
101+ vertexBufferF32 [ vertexOffset ++ ] = b ;
102+ vertexBufferF32 [ vertexOffset ++ ] = c ;
103+ vertexBufferF32 [ vertexOffset ++ ] = d ;
104+ vertexBufferF32 [ vertexOffset ++ ] = tx ;
105+ vertexBufferF32 [ vertexOffset ++ ] = ty ;
106+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . topRight ;
107+ spriteBatch . elementCount += 6 ;
30108} ;
31109
32110module . exports = ImageWebGLRenderer ;
0 commit comments