Skip to content

Commit 7decd4a

Browse files
committed
Blend Mode added to WebGLRenderer
1 parent bf9022b commit 7decd4a

5 files changed

Lines changed: 24 additions & 20 deletions

File tree

v3/src/gameobjects/image/ImageWebGLRenderer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var ImageWebGLRenderer = function (renderer, src, interpolationPercentage)
1818
// renderer.batch.add(frame.source, src.blendMode, verts, frame.uvs, index, alpha, tint, bg);
1919

2020
var transform = src.transform;
21-
21+
renderer.setBlendMode(src.color._blendMode);
2222
renderer.spriteBatch.add(
2323
frame,
2424
transform._anchorX, transform._anchorY,

v3/src/renderer/webgl/WebGLRenderer.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var CreateTexture2DImage = require('./utils/texture/CreateTexture2DImage');
1111
var BlitterBatch = require('./batches/blitter/BlitterBatch');
1212
var SpriteBatch = require('./batches/sprite/SpriteBatch');
1313
var SpriteBatch32 = require('./batches/sprite/SpriteBatch32');
14+
var BlendModes = require('../BlendModes');
1415

1516
var WebGLRenderer = function (game)
1617
{
@@ -145,6 +146,8 @@ WebGLRenderer.prototype = {
145146
normal, normal, normal, normal,
146147
normal, normal, normal, normal
147148
];
149+
150+
this.blendMode = -1;
148151
},
149152

150153
createTexture2D: function (source)
@@ -256,9 +259,7 @@ WebGLRenderer.prototype = {
256259
// clear is needed for the FBO, otherwise corruption ...
257260
gl.clear(gl.COLOR_BUFFER_BIT);
258261

259-
//this.setBlendMode(CONST.blendModes.NORMAL);
260-
261-
//this.batch.start();
262+
this.setBlendMode(BlendModes.NORMAL);
262263

263264
// Could move to the State Systems or MainLoop
264265
for (var c = 0; c < state.sys.children.list.length; c++)
@@ -296,7 +297,25 @@ WebGLRenderer.prototype = {
296297
{
297298
this.gl = null;
298299
},
299-
createFBO: function () {}
300+
301+
createFBO: function () {},
302+
303+
setBlendMode: function (newBlendMode)
304+
{
305+
var gl = this.gl;
306+
var batch = this.batch;
307+
var blend = null;
308+
309+
if (this.blendMode !== newBlendMode)
310+
{
311+
if (batch)
312+
batch.flush();
313+
blend = this.blendModes[newBlendMode];
314+
gl.enable(gl.BLEND);
315+
gl.blendFunc(blend[0], blend[1]);
316+
this.blendMode = newBlendMode;
317+
}
318+
}
300319
};
301320

302321
module.exports = WebGLRenderer;

v3/src/renderer/webgl/batches/blitter/BlitterBatch.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,6 @@ BlitterBatch.prototype = {
175175

176176
gl.clearColor(0, 0, 0, 1);
177177

178-
gl.enable(gl.BLEND);
179-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
180-
181178
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBufferObject);
182179

183180
BindVertexArray(gl, this.vertexArray);
@@ -189,8 +186,6 @@ BlitterBatch.prototype = {
189186

190187
gl.useProgram(null);
191188

192-
gl.disable(gl.BLEND);
193-
194189
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
195190
gl.bindBuffer(gl.ARRAY_BUFFER, null);
196191
},

v3/src/renderer/webgl/batches/sprite/SpriteBatch.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,6 @@ SpriteBatch.prototype = {
204204

205205
gl.clearColor(0, 0, 0, 1);
206206

207-
gl.enable(gl.BLEND);
208-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
209-
210207
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBufferObject);
211208

212209
BindVertexArray(gl, this.vertexArray);
@@ -218,8 +215,6 @@ SpriteBatch.prototype = {
218215

219216
gl.useProgram(null);
220217

221-
gl.disable(gl.BLEND);
222-
223218
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
224219
gl.bindBuffer(gl.ARRAY_BUFFER, null);
225220
},

v3/src/renderer/webgl/batches/sprite/SpriteBatch32.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ SpriteBatch32.prototype = {
208208

209209
gl.clearColor(0, 0, 0, 1);
210210

211-
gl.enable(gl.BLEND);
212-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
213-
214211
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBufferObject);
215212

216213
BindVertexArray(gl, this.vertexArray);
@@ -222,8 +219,6 @@ SpriteBatch32.prototype = {
222219

223220
gl.useProgram(null);
224221

225-
gl.disable(gl.BLEND);
226-
227222
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
228223
gl.bindBuffer(gl.ARRAY_BUFFER, null);
229224
},

0 commit comments

Comments
 (0)