Stack restore working. Time to try invertAlpha.

This commit is contained in:
Richard Davey 2019-04-24 14:38:24 +01:00
parent ac3fac4ab6
commit 2bd45865d4

View file

@ -89,17 +89,16 @@ var GeometryMask = new Class({
// Force flushing before drawing to stencil buffer // Force flushing before drawing to stencil buffer
renderer.flush(); renderer.flush();
// if (renderer.maskStack.length === 0) if (renderer.maskStack.length === 0)
if (renderer.maskCount === 0)
{ {
gl.enable(gl.STENCIL_TEST); gl.enable(gl.STENCIL_TEST);
gl.clear(gl.STENCIL_BUFFER_BIT); gl.clear(gl.STENCIL_BUFFER_BIT);
// renderer.maskCount = 0; renderer.maskCount = 0;
// renderer.maskReverse = true; // renderer.maskReverse = true;
} }
// renderer.maskStack.push({ mask: this, camera: camera }); renderer.maskStack.push({ mask: this.geometryMask, camera: camera });
var level = renderer.maskCount; var level = renderer.maskCount;
@ -157,19 +156,18 @@ var GeometryMask = new Class({
* *
* @param {Phaser.Renderer.WebGL.WebGLRenderer} renderer - The WebGL Renderer instance to draw flush. * @param {Phaser.Renderer.WebGL.WebGLRenderer} renderer - The WebGL Renderer instance to draw flush.
*/ */
postRenderWebGL: function (renderer, camera) postRenderWebGL: function (renderer)
{ {
var gl = renderer.gl; var gl = renderer.gl;
// Force flush before disabling stencil test // Force flush before disabling stencil test
renderer.flush(); renderer.flush();
// renderer.maskStack.pop(); renderer.maskStack.pop();
renderer.maskCount--; renderer.maskCount--;
// if (renderer.maskStack.length === 0) if (renderer.maskStack.length === 0)
if (renderer.maskCount === 0)
{ {
gl.disable(gl.STENCIL_TEST); gl.disable(gl.STENCIL_TEST);
} }
@ -190,7 +188,9 @@ var GeometryMask = new Class({
gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR); gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
// } // }
var geometryMask = this.geometryMask; var prev = renderer.maskStack[renderer.maskStack.length - 1];
var geometryMask = prev.mask;
var camera = prev.camera;
geometryMask.renderWebGL(renderer, geometryMask, 0, camera); geometryMask.renderWebGL(renderer, geometryMask, 0, camera);