@@ -2398,32 +2398,32 @@ var GeometryMask = new Class({
23982398
23992399 renderer.maskCount--;
24002400
2401+ // Force flush before disabling stencil test
2402+ renderer.flush();
2403+
2404+ var current = renderer.currentMask;
2405+
24012406 if (renderer.maskStack.length === 0)
24022407 {
24032408 // If this is the only mask in the stack, flush and disable
2404- renderer.flush();
2405-
2406- renderer.currentMask.mask = null;
2409+ current.mask = null;
24072410
24082411 gl.disable(gl.STENCIL_TEST);
24092412 }
24102413 else
24112414 {
2412- // Force flush before disabling stencil test
2413- renderer.flush();
2414-
24152415 var prev = renderer.maskStack[renderer.maskStack.length - 1];
24162416
24172417 prev.mask.applyStencil(renderer, prev.camera, false);
24182418
24192419 if (renderer.currentCameraMask.mask !== prev.mask)
24202420 {
2421- renderer.currentMask .mask = prev.mask;
2422- renderer.currentMask .camera = prev.camera;
2421+ current .mask = prev.mask;
2422+ current .camera = prev.camera;
24232423 }
24242424 else
24252425 {
2426- renderer.currentMask .mask = null;
2426+ current .mask = null;
24272427 }
24282428 }
24292429 },
@@ -33845,11 +33845,39 @@ var SpineContainerWebGLRenderer = function (renderer, container, camera, parentM
3384533845
3384633846 for (var i = 0; i < children.length; i++)
3384733847 {
33848- var src = children[i];
33848+ var child = children[i];
3384933849
33850- if (src .willRender(camera))
33850+ if (child .willRender(camera))
3385133851 {
33852- src.renderWebGL(renderer, src, camera, transformMatrix, container);
33852+ var mask = child.mask;
33853+
33854+ if (mask)
33855+ {
33856+ sceneRenderer.end();
33857+
33858+ renderer.pipelines.rebind();
33859+
33860+ mask.preRenderWebGL(renderer, child, camera);
33861+
33862+ renderer.pipelines.clear();
33863+
33864+ sceneRenderer.begin();
33865+ }
33866+
33867+ child.renderWebGL(renderer, child, camera, transformMatrix, container);
33868+
33869+ if (mask)
33870+ {
33871+ sceneRenderer.end();
33872+
33873+ renderer.pipelines.rebind();
33874+
33875+ mask.postRenderWebGL(renderer, camera);
33876+
33877+ renderer.pipelines.clear();
33878+
33879+ sceneRenderer.begin();
33880+ }
3385333881 }
3385433882 }
3385533883
0 commit comments