Not sure we need the stack at all - commenting out for now

This commit is contained in:
Richard Davey 2019-04-15 23:46:50 +01:00
parent 1f9aec524e
commit 964e5a2da5

View file

@ -89,31 +89,32 @@ var GeometryMask = new Class({
// Force flushing before drawing to stencil buffer
renderer.flush();
if (renderer.maskStack.length === 0)
// if (renderer.maskStack.length === 0)
if (renderer.maskCount === 0)
{
gl.enable(gl.STENCIL_TEST);
gl.clear(gl.STENCIL_BUFFER_BIT);
renderer.maskCount = 0;
renderer.maskReverse = true;
// renderer.maskCount = 0;
// renderer.maskReverse = true;
}
renderer.maskStack.push({ mask: this, camera: camera });
// renderer.maskStack.push({ mask: this, camera: camera });
var level = renderer.maskCount;
gl.colorMask(false, false, false, false);
if (!renderer.maskReverse)
{
gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
}
else
{
// if (!renderer.maskReverse)
// {
// gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);
// gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
// }
// else
// {
gl.stencilFunc(gl.EQUAL, level, 0xFF);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);
}
// }
// Write stencil buffer
geometryMask.renderWebGL(renderer, geometryMask, 0, camera);
@ -123,25 +124,25 @@ var GeometryMask = new Class({
// Use stencil buffer to affect next rendering object
gl.colorMask(true, true, true, true);
if (!renderer.maskReverse)
{
if (this.invertAlpha)
{
gl.stencilFunc(gl.NOTEQUAL, 0xFF - (level + 1), 0xFF);
}
else
{
gl.stencilFunc(gl.EQUAL, 0xFF - (level + 1), 0xFF);
}
}
else if (this.invertAlpha)
{
gl.stencilFunc(gl.NOTEQUAL, level + 1, 0xFF);
}
else
{
// if (!renderer.maskReverse)
// {
// if (this.invertAlpha)
// {
// gl.stencilFunc(gl.NOTEQUAL, 0xFF - (level + 1), 0xFF);
// }
// else
// {
// gl.stencilFunc(gl.EQUAL, 0xFF - (level + 1), 0xFF);
// }
// }
// else if (this.invertAlpha)
// {
// gl.stencilFunc(gl.NOTEQUAL, level + 1, 0xFF);
// }
// else
// {
gl.stencilFunc(gl.EQUAL, level + 1, 0xFF);
}
// }
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
@ -163,11 +164,12 @@ var GeometryMask = new Class({
// Force flush before disabling stencil test
renderer.flush();
renderer.maskStack.pop();
// renderer.maskStack.pop();
renderer.maskCount--;
if (renderer.maskStack.length === 0)
// if (renderer.maskStack.length === 0)
if (renderer.maskCount === 0)
{
gl.disable(gl.STENCIL_TEST);
}
@ -177,16 +179,16 @@ var GeometryMask = new Class({
gl.colorMask(false, false, false, false);
if (!renderer.maskReverse)
{
gl.stencilFunc(gl.EQUAL, 0xFF - (level + 1), 0xFF);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);
}
else
{
// if (!renderer.maskReverse)
// {
// gl.stencilFunc(gl.EQUAL, 0xFF - (level + 1), 0xFF);
// gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);
// }
// else
// {
gl.stencilFunc(gl.EQUAL, level + 1, 0xFF);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
}
// }
var geometryMask = this.geometryMask;
@ -194,25 +196,25 @@ var GeometryMask = new Class({
renderer.flush();
if (!renderer.maskReverse)
{
if (this.invertAlpha)
{
gl.stencilFunc(gl.NOTEQUAL, 0xFF - (level), 0xFF);
}
else
{
gl.stencilFunc(gl.EQUAL, 0xFF - (level), 0xFF);
}
}
else if (this.invertAlpha)
{
gl.stencilFunc(gl.NOTEQUAL, level, 0xFF);
}
else
{
// if (!renderer.maskReverse)
// {
// if (this.invertAlpha)
// {
// gl.stencilFunc(gl.NOTEQUAL, 0xFF - (level), 0xFF);
// }
// else
// {
// gl.stencilFunc(gl.EQUAL, 0xFF - (level), 0xFF);
// }
// }
// else if (this.invertAlpha)
// {
// gl.stencilFunc(gl.NOTEQUAL, level, 0xFF);
// }
// else
// {
gl.stencilFunc(gl.EQUAL, level, 0xFF);
}
// }
gl.colorMask(true, true, true, true);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);