Browse Source

Moved scene and camera out of DeferredHelper constructor into DeferredHelper.render()

Still need to deal with internal emitter / light proxy scenes. These should be per-scene not common.
alteredq 12 years ago
parent
commit
d26befd0e8

+ 18 - 9
examples/js/DeferredHelper.js

@@ -8,8 +8,6 @@ THREE.DeferredHelper = function ( parameters ) {
 	var width = parameters.width;
 	var height = parameters.height;
 
-	var scene = parameters.scene;
-	var camera = parameters.camera;
 	var renderer = parameters.renderer;
 
 	var additiveSpecular = parameters.additiveSpecular;
@@ -51,7 +49,8 @@ THREE.DeferredHelper = function ( parameters ) {
 
 	//
 
-	var compColor, compNormal, compDepth, compLightBuffer, compFinal, compEmitter, compositePass;
+	var compColor, compNormal, compDepth, compEmitter, compLightBuffer, compFinal, compositePass;
+	var passColor, passNormal, passDepth, passEmitter, passLight;
 
 	//
 
@@ -301,7 +300,17 @@ THREE.DeferredHelper = function ( parameters ) {
 
 	//
 
-	this.render = function () {
+	this.render = function ( scene, camera ) {
+
+		passColor.camera = camera;
+		passNormal.camera = camera;
+		passDepth.camera = camera;
+		passEmitter.camera = camera;
+		passLight.camera = camera;
+
+		passColor.scene = scene;
+		passNormal.scene = scene;
+		passDepth.scene = scene;
 
 		scene.traverse( initDeferredProperties );
 
@@ -365,23 +374,23 @@ THREE.DeferredHelper = function ( parameters ) {
 
 		// composers
 
-		var passColor = new THREE.RenderPass( scene, camera );
+		passColor = new THREE.RenderPass();
 		compColor = new THREE.EffectComposer( renderer, rtColor );
 		compColor.addPass( passColor );
 
-		var passNormal = new THREE.RenderPass( scene, camera );
+		passNormal = new THREE.RenderPass();
 		compNormal = new THREE.EffectComposer( renderer, rtNormal );
 		compNormal.addPass( passNormal );
 
-		var passDepth = new THREE.RenderPass( scene, camera );
+		passDepth = new THREE.RenderPass();
 		compDepth = new THREE.EffectComposer( renderer, rtDepth );
 		compDepth.addPass( passDepth );
 
-		var passEmitter = new THREE.RenderPass( emitterScene, camera );
+		passEmitter = new THREE.RenderPass( emitterScene );
 		compEmitter = new THREE.EffectComposer( renderer, rtEmitter );
 		compEmitter.addPass( passEmitter );
 
-		var passLight = new THREE.RenderPass( lightScene, camera );
+		passLight = new THREE.RenderPass( lightScene );
 		compLightBuffer = new THREE.EffectComposer( renderer, rtLight );
 		compLightBuffer.addPass( passLight );
 

+ 2 - 3
examples/webgl_lights_deferred_morphs.html

@@ -151,7 +151,7 @@
 
 				// deferred helper
 
-				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, scene: scene, camera: camera, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: true } );
+				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: true } );
 
 				// add lights
 
@@ -388,8 +388,7 @@
 
 				camera.lookAt( target );
 
-
-				deferredHelper.render();
+				deferredHelper.render( scene, camera );
 
 			}
 

+ 2 - 2
examples/webgl_lights_deferred_pointlights.html

@@ -151,7 +151,7 @@
 
 				// deferred helper
 
-				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, scene: scene, camera: camera, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: false } );
+				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: false } );
 
 				// add lights
 
@@ -390,7 +390,7 @@
 
 				camera.lookAt( target );
 
-				deferredHelper.render();
+				deferredHelper.render( scene, camera );
 
 			}