Skip to content

Commit 2f48d68

Browse files
committed
A shader can now be used as a bitmap mask
1 parent 08f4a0c commit 2f48d68

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

src/gameobjects/components/Mask.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ var Mask = {
9898
*/
9999
createBitmapMask: function (renderable)
100100
{
101-
if (renderable === undefined && this.texture)
101+
if (renderable === undefined && (this.texture || this.shader))
102102
{
103103
// eslint-disable-next-line consistent-this
104104
renderable = this;

src/renderer/webgl/pipelines/BitmapMaskPipeline.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ var BitmapMaskPipeline = new Class({
214214
gl.clearColor(0, 0, 0, 0);
215215
gl.clear(gl.COLOR_BUFFER_BIT);
216216

217+
renderer.setBlendMode(0, true);
218+
217219
bitmapMask.renderWebGL(renderer, bitmapMask, 0, camera);
218220

219221
renderer.flush();
@@ -236,10 +238,14 @@ var BitmapMaskPipeline = new Class({
236238

237239
// Bind bitmap mask pipeline and draw
238240
renderer.setPipeline(this);
239-
240-
renderer.setTexture2D(mask.maskTexture, 1);
241-
renderer.setTexture2D(mask.mainTexture, 0);
242-
renderer.setInt1(this.program, 'uInvertMaskAlpha', mask.invertAlpha);
241+
242+
gl.activeTexture(gl.TEXTURE1);
243+
gl.bindTexture(gl.TEXTURE_2D, mask.maskTexture);
244+
245+
gl.activeTexture(gl.TEXTURE0);
246+
gl.bindTexture(gl.TEXTURE_2D, mask.mainTexture);
247+
248+
gl.uniform1i(gl.getUniformLocation(this.program, 'uInvertMaskAlpha'), mask.invertAlpha);
243249

244250
// Finally, draw a triangle filling the whole screen
245251
gl.drawArrays(this.topology, 0, 3);

0 commit comments

Comments
 (0)