diff --git a/examples/jsm/postprocessing/RenderPass.js b/examples/jsm/postprocessing/RenderPass.js index 333b2fe7e549b3..a6c3804ec67b90 100644 --- a/examples/jsm/postprocessing/RenderPass.js +++ b/examples/jsm/postprocessing/RenderPass.js @@ -5,7 +5,7 @@ import { Pass } from './Pass.js'; class RenderPass extends Pass { - constructor( scene, camera, overrideMaterial, clearColor, clearAlpha ) { + constructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) { super(); @@ -15,7 +15,7 @@ class RenderPass extends Pass { this.overrideMaterial = overrideMaterial; this.clearColor = clearColor; - this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0; + this.clearAlpha = clearAlpha; this.clear = true; this.clearDepth = false; @@ -31,7 +31,7 @@ class RenderPass extends Pass { let oldClearAlpha, oldOverrideMaterial; - if ( this.overrideMaterial !== undefined ) { + if ( this.overrideMaterial !== null ) { oldOverrideMaterial = this.scene.overrideMaterial; @@ -39,16 +39,21 @@ class RenderPass extends Pass { } - if ( this.clearColor ) { + if ( this.clearColor !== null ) { renderer.getClearColor( this._oldClearColor ); - oldClearAlpha = renderer.getClearAlpha(); + renderer.setClearColor( this.clearColor ); + + } - renderer.setClearColor( this.clearColor, this.clearAlpha ); + if ( this.clearAlpha !== null ) { + + oldClearAlpha = renderer.getClearAlpha(); + renderer.setClearAlpha( this.clearAlpha ); } - if ( this.clearDepth ) { + if ( this.clearDepth == true ) { renderer.clearDepth(); @@ -56,17 +61,30 @@ class RenderPass extends Pass { renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); - // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600 - if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + if ( this.clear === true ) { + + // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600 + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + renderer.render( this.scene, this.camera ); - if ( this.clearColor ) { + // restore + + if ( this.clearColor !== null ) { + + renderer.setClearColor( this._oldClearColor ); + + } + + if ( this.clearAlpha !== null ) { - renderer.setClearColor( this._oldClearColor, oldClearAlpha ); + renderer.setClearAlpha( oldClearAlpha ); } - if ( this.overrideMaterial !== undefined ) { + if ( this.overrideMaterial !== null ) { this.scene.overrideMaterial = oldOverrideMaterial;