mirror of
https://github.com/photonstorm/phaser
synced 2025-02-17 06:28:30 +00:00
Not sure we need the stack at all - commenting out for now
This commit is contained in:
parent
1f9aec524e
commit
964e5a2da5
1 changed files with 60 additions and 58 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue