Path: blob/main/projects/HexGL/libs/postprocessing/MaskPass.js
4627 views
/**1* @author alteredq / http://alteredqualia.com/2*/34THREE.MaskPass = function ( scene, camera ) {56this.scene = scene;7this.camera = camera;89this.enabled = true;10this.clear = true;11this.needsSwap = false;1213this.inverse = false;1415};1617THREE.MaskPass.prototype = {1819render: function ( renderer, writeBuffer, readBuffer, delta ) {2021var context = renderer.context;2223// don't update color or depth2425context.colorMask( false, false, false, false );26context.depthMask( false );2728// set up stencil2930var writeValue, clearValue;3132if ( this.inverse ) {3334writeValue = 0;35clearValue = 1;3637} else {3839writeValue = 1;40clearValue = 0;4142}4344context.enable( context.STENCIL_TEST );45context.stencilOp( context.REPLACE, context.REPLACE, context.REPLACE );46context.stencilFunc( context.ALWAYS, writeValue, 0xffffffff );47context.clearStencil( clearValue );4849// draw into the stencil buffer5051renderer.render( this.scene, this.camera, readBuffer, this.clear );52renderer.render( this.scene, this.camera, writeBuffer, this.clear );5354// re-enable update of color and depth5556context.colorMask( true, true, true, true );57context.depthMask( true );5859// only render where stencil is set to 16061context.stencilFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 162context.stencilOp( context.KEEP, context.KEEP, context.KEEP );6364}6566};676869THREE.ClearMaskPass = function () {7071this.enabled = true;7273};7475THREE.ClearMaskPass.prototype = {7677render: function ( renderer, writeBuffer, readBuffer, delta ) {7879var context = renderer.context;8081context.disable( context.STENCIL_TEST );8283}8485};868788