Browse Source

add support for explicit clearColor clearAlpha on ClearPass, as well as the ability to render to screen. (#9154)

Ben Houston (Clara.io) 9 năm trước cách đây
mục cha
commit
97c6b2e527
1 tập tin đã thay đổi với 22 bổ sung2 xóa
  1. 22 2
      examples/js/postprocessing/ClearPass.js

+ 22 - 2
examples/js/postprocessing/ClearPass.js

@@ -2,12 +2,15 @@
  * @author mrdoob / http://mrdoob.com/
  */
 
-THREE.ClearPass = function () {
+THREE.ClearPass = function ( clearColor, clearAlpha ) {
 
 	THREE.Pass.call( this );
 
 	this.needsSwap = false;
 
+	this.clearColor = ( clearColor !== undefined ) ? clearColor : 0x000000;
+	this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;
+
 };
 
 THREE.ClearPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
@@ -16,9 +19,26 @@ THREE.ClearPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
 
 	render: function ( renderer, writeBuffer, readBuffer, delta, maskActive ) {
 
-		renderer.setRenderTarget( readBuffer );
+		var oldClearColor, oldClearAlpha;
+
+		if ( this.clearColor ) {
+
+			oldClearColor = renderer.getClearColor().getHex();
+			oldClearAlpha = renderer.getClearAlpha();
+
+			renderer.setClearColor( this.clearColor, this.clearAlpha );
+
+		}
+
+		renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
 		renderer.clear();
 
+		if ( this.clearColor ) {
+
+			renderer.setClearColor( oldClearColor, oldClearAlpha );
+
+		}
+
 	}
 
 } );