|
| 1 | +var Class = require('../../utils/Class'); |
| 2 | + |
| 3 | +var GeometryMask = new Class({ |
| 4 | + |
| 5 | + initialize: |
| 6 | + |
| 7 | + function GeometryMask(scene, geometry) |
| 8 | + { |
| 9 | + this.geometry = geometry; |
| 10 | + this.shape = scene.create.graphics(); |
| 11 | + }, |
| 12 | + |
| 13 | + setShape: function (geometry) |
| 14 | + { |
| 15 | + this.geometry = geometry; |
| 16 | + }, |
| 17 | + |
| 18 | + preRenderWebGL: function (renderer, mask, camera) |
| 19 | + { |
| 20 | + var gl = renderer.gl; |
| 21 | + |
| 22 | + gl.enable(gl.STENCIL_TEST); |
| 23 | + gl.clear(gl.STENCIL_BUFFER_BIT); |
| 24 | + gl.colorMask(false, false, false, false); |
| 25 | + gl.stencilFunc(gl.NOTEQUAL, 1, 1); |
| 26 | + gl.stencilOp(gl.REPLACE, gl.REPLACE, gl.REPLACE); |
| 27 | + |
| 28 | + |
| 29 | + gl.colorMask(true, true, true, true); |
| 30 | + gl.stencilFunc(gl.EQUAL, 1, 1); |
| 31 | + gl.stencilOp(gl.INVERT, gl.INVERT, gl.INVERT); |
| 32 | + }, |
| 33 | + |
| 34 | + postRenderWebGL: function (renderer) |
| 35 | + { |
| 36 | + var gl = renderer.gl; |
| 37 | + |
| 38 | + gl.disable(gl.STENCIL_TEST); |
| 39 | + } |
| 40 | + |
| 41 | +}); |
| 42 | + |
| 43 | + |
| 44 | +module.exports = GeometryMask; |
0 commit comments