Skip to content

Commit 62b2cad

Browse files
committed
Geometry Mask Rendering
1 parent 2d91fe2 commit 62b2cad

2 files changed

Lines changed: 15 additions & 31 deletions

File tree

v3/src/display/mask/GeometryMask.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,36 @@ var GeometryMask = new Class({
44

55
initialize:
66

7-
function GeometryMask(scene, geometry)
7+
function GeometryMask(scene, graphicsGeometry)
88
{
9-
this.geometry = geometry;
10-
this.shape = scene.create.graphics();
9+
this.geometryMask = graphicsGeometry;
1110
},
1211

13-
setShape: function (geometry)
12+
setShape: function (graphicsGeometry)
1413
{
15-
this.geometry = geometry;
14+
this.geometryMask = graphicsGeometry;
1615
},
1716

1817
preRenderWebGL: function (renderer, mask, camera)
1918
{
2019
var gl = renderer.gl;
20+
var geometryMask = this.geometryMask;
2121

22+
// Force flushing before drawing to stencil buffer
23+
renderer.currentRenderer.flush();
24+
25+
// Enable and setup GL state to write to stencil buffer
2226
gl.enable(gl.STENCIL_TEST);
2327
gl.clear(gl.STENCIL_BUFFER_BIT);
2428
gl.colorMask(false, false, false, false);
2529
gl.stencilFunc(gl.NOTEQUAL, 1, 1);
2630
gl.stencilOp(gl.REPLACE, gl.REPLACE, gl.REPLACE);
2731

32+
// Write stencil buffer
33+
geometryMask.renderWebGL(renderer, geometryMask, 0.0, camera);
34+
renderer.currentRenderer.flush();
2835

36+
// Use stencil buffer to affect next rendering object
2937
gl.colorMask(true, true, true, true);
3038
gl.stencilFunc(gl.EQUAL, 1, 1);
3139
gl.stencilOp(gl.INVERT, gl.INVERT, gl.INVERT);
@@ -35,6 +43,8 @@ var GeometryMask = new Class({
3543
{
3644
var gl = renderer.gl;
3745

46+
// Force flush before disabling stencil test
47+
renderer.currentRenderer.flush();
3848
gl.disable(gl.STENCIL_TEST);
3949
}
4050

v3/src/display/mask/webgl/StencilBufferRenderer.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)