浏览代码

RenderTransitionPass: Simplify `render()`. (#28555)

Michael Herzog 1 年之前
父节点
当前提交
c870fa1e9d
共有 2 个文件被更改,包括 16 次插入41 次删除
  1. 13 38
      examples/jsm/postprocessing/RenderTransitionPass.js
  2. 3 3
      examples/webgl_postprocessing_transition.html

+ 13 - 38
examples/jsm/postprocessing/RenderTransitionPass.js

@@ -59,51 +59,29 @@ class RenderTransitionPass extends Pass {
 
 
 	render( renderer, writeBuffer ) {
 	render( renderer, writeBuffer ) {
 
 
+		renderer.setRenderTarget( this.renderTargetA );
+		renderer.render( this.sceneA, this.cameraA );
+		renderer.setRenderTarget( this.renderTargetB );
+		renderer.render( this.sceneB, this.cameraB );
+
 		const uniforms = this.fsQuad.material.uniforms;
 		const uniforms = this.fsQuad.material.uniforms;
-		const transition = uniforms.mixRatio.value;
+		uniforms.tDiffuse1.value = this.renderTargetA.texture;
+		uniforms.tDiffuse2.value = this.renderTargetB.texture;
 
 
-		// Prevent render both scenes when it's not necessary
+		if ( this.renderToScreen ) {
 
 
-		if ( transition === 0 ) {
+			renderer.setRenderTarget( null );
+			renderer.clear();
 
 
-			renderer.setRenderTarget( writeBuffer );
-			if ( this.clear ) renderer.clear();
-			renderer.render( this.sceneB, this.cameraB );
-
-		} else if ( transition === 1 ) {
+		} else {
 
 
 			renderer.setRenderTarget( writeBuffer );
 			renderer.setRenderTarget( writeBuffer );
 			if ( this.clear ) renderer.clear();
 			if ( this.clear ) renderer.clear();
-			renderer.render( this.sceneA, this.cameraA );
-
-		} else {
-
-			// When 0 < transition < 1 render transition between two scenes
-
-			renderer.setRenderTarget( this.renderTargetA );
-			renderer.render( this.sceneA, this.cameraA );
-			renderer.setRenderTarget( this.renderTargetB );
-			renderer.render( this.sceneB, this.cameraB );
-
-			uniforms.tDiffuse1.value = this.renderTargetA.texture;
-			uniforms.tDiffuse2.value = this.renderTargetB.texture;
-
-			if ( this.renderToScreen ) {
-
-				renderer.setRenderTarget( null );
-				renderer.clear();
-
-			} else {
-
-				renderer.setRenderTarget( writeBuffer );
-				if ( this.clear ) renderer.clear();
-
-			}
-
-			this.fsQuad.render( renderer );
 
 
 		}
 		}
 
 
+		this.fsQuad.render( renderer );
+
 	}
 	}
 
 
 	dispose() {
 	dispose() {
@@ -179,9 +157,6 @@ class RenderTransitionPass extends Pass {
 
 
 					}
 					}
 
 
-					#include <tonemapping_fragment>
-					#include <colorspace_fragment>
-
 				}
 				}
 			`
 			`
 		} );
 		} );

+ 3 - 3
examples/webgl_postprocessing_transition.html

@@ -120,8 +120,8 @@
 				if ( params.transitionAnimate ) TWEEN.update();
 				if ( params.transitionAnimate ) TWEEN.update();
 
 
 				const delta = clock.getDelta();
 				const delta = clock.getDelta();
-				fxSceneA.render( delta );
-				fxSceneB.render( delta );
+				fxSceneA.update( delta );
+				fxSceneB.update( delta );
 
 
 				render();
 				render();
 				stats.update();
 				stats.update();
@@ -220,7 +220,7 @@
 				this.camera = camera;
 				this.camera = camera;
 				this.mesh = mesh;
 				this.mesh = mesh;
 
 
-				this.render = function ( delta ) {
+				this.update = function ( delta ) {
 
 
 					if ( params.sceneAnimate ) {
 					if ( params.sceneAnimate ) {