浏览代码

Examples: Fix handling of clear color

Mugen87 6 年之前
父节点
当前提交
73d964000f
共有 2 个文件被更改,包括 13 次插入8 次删除
  1. 5 4
      examples/js/postprocessing/SAOPass.js
  2. 8 4
      examples/js/postprocessing/SSAOPass.js

+ 5 - 4
examples/js/postprocessing/SAOPass.js

@@ -16,6 +16,7 @@ THREE.SAOPass = function ( scene, camera, depthTexture, useNormals, resolution )
 	this.supportsDepthTextureExtension = ( depthTexture !== undefined ) ? depthTexture : false;
 	this.supportsDepthTextureExtension = ( depthTexture !== undefined ) ? depthTexture : false;
 	this.supportsNormalTexture = ( useNormals !== undefined ) ? useNormals : false;
 	this.supportsNormalTexture = ( useNormals !== undefined ) ? useNormals : false;
 
 
+	this.originalClearColor = new THREE.Color();
 	this.oldClearColor = new THREE.Color();
 	this.oldClearColor = new THREE.Color();
 	this.oldClearAlpha = 1;
 	this.oldClearAlpha = 1;
 
 
@@ -312,7 +313,7 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 	renderPass: function ( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {
 	renderPass: function ( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {
 
 
 		// save original state
 		// save original state
-		var originalClearColor = renderer.getClearColor();
+		this.originalClearColor.copy( renderer.getClearColor() );
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalAutoClear = renderer.autoClear;
 		var originalAutoClear = renderer.autoClear;
 
 
@@ -331,14 +332,14 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 
 
 		// restore original state
 		// restore original state
 		renderer.autoClear = originalAutoClear;
 		renderer.autoClear = originalAutoClear;
-		renderer.setClearColor( originalClearColor );
+		renderer.setClearColor( this.originalClearColor );
 		renderer.setClearAlpha( originalClearAlpha );
 		renderer.setClearAlpha( originalClearAlpha );
 
 
 	},
 	},
 
 
 	renderOverride: function ( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
 	renderOverride: function ( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
 
 
-		var originalClearColor = renderer.getClearColor();
+		this.originalClearColor.copy( renderer.getClearColor() );
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalAutoClear = renderer.autoClear;
 		var originalAutoClear = renderer.autoClear;
 
 
@@ -360,7 +361,7 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 
 
 		// restore original state
 		// restore original state
 		renderer.autoClear = originalAutoClear;
 		renderer.autoClear = originalAutoClear;
-		renderer.setClearColor( originalClearColor );
+		renderer.setClearColor( this.originalClearColor );
 		renderer.setClearAlpha( originalClearAlpha );
 		renderer.setClearAlpha( originalClearAlpha );
 
 
 	},
 	},

+ 8 - 4
examples/js/postprocessing/SSAOPass.js

@@ -141,6 +141,10 @@ THREE.SSAOPass = function ( scene, camera, width, height ) {
 	this.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), null );
 	this.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), null );
 	this.quadScene.add( this.quad );
 	this.quadScene.add( this.quad );
 
 
+	//
+
+	this.originalClearColor = new THREE.Color();
+
 };
 };
 
 
 THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
 THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
@@ -233,7 +237,7 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 	renderPass: function ( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {
 	renderPass: function ( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {
 
 
 		// save original state
 		// save original state
-		var originalClearColor = renderer.getClearColor();
+		this.originalClearColor.copy( renderer.getClearColor() );
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalAutoClear = renderer.autoClear;
 		var originalAutoClear = renderer.autoClear;
 
 
@@ -252,14 +256,14 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 
 
 		// restore original state
 		// restore original state
 		renderer.autoClear = originalAutoClear;
 		renderer.autoClear = originalAutoClear;
-		renderer.setClearColor( originalClearColor );
+		renderer.setClearColor( this.originalClearColor );
 		renderer.setClearAlpha( originalClearAlpha );
 		renderer.setClearAlpha( originalClearAlpha );
 
 
 	},
 	},
 
 
 	renderOverride: function ( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
 	renderOverride: function ( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
 
 
-		var originalClearColor = renderer.getClearColor();
+		this.originalClearColor.copy( renderer.getClearColor() );
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalClearAlpha = renderer.getClearAlpha();
 		var originalAutoClear = renderer.autoClear;
 		var originalAutoClear = renderer.autoClear;
 
 
@@ -284,7 +288,7 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
 		// restore original state
 		// restore original state
 
 
 		renderer.autoClear = originalAutoClear;
 		renderer.autoClear = originalAutoClear;
-		renderer.setClearColor( originalClearColor );
+		renderer.setClearColor( this.originalClearColor );
 		renderer.setClearAlpha( originalClearAlpha );
 		renderer.setClearAlpha( originalClearAlpha );
 
 
 	},
 	},