Browse Source

WebGLRenderer: Reverted to previous approach for rendering ArrayCamera. The current renderer architecture is not ready.

Mr.doob 8 years ago
parent
commit
e577ab22f4
1 changed files with 43 additions and 37 deletions
  1. 43 37
      src/renderers/WebGLRenderer.js

+ 43 - 37
src/renderers/WebGLRenderer.js

@@ -1255,27 +1255,33 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		//
+		// render scene
 
-		var opaqueObjects = currentRenderList.opaque;
-		var transparentObjects = currentRenderList.transparent;
+		if ( camera.isArrayCamera ) {
 
-		if ( scene.overrideMaterial ) {
+			var cameras = camera.cameras;
 
-			var overrideMaterial = scene.overrideMaterial;
+			for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
 
-			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
-			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+				var camera2 = cameras[ j ];
+				var bounds = camera2.bounds;
 
-		} else {
+				var x = bounds.x * _width;
+				var y = bounds.y * _height;
+				var width = bounds.z * _width;
+				var height = bounds.w * _height;
 
-			// opaque pass (front-to-back order)
+				_this.setViewport( x, y, width, height );
+				_this.setScissor( x, y, width, height );
+				_this.setScissorTest( true );
 
-			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
+				renderScene( currentRenderList, scene, camera );
 
-			// transparent pass (back-to-front order)
+			}
 
-			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
+		} else {
+
+			renderScene( currentRenderList, scene, camera );
 
 		}
 
@@ -1463,46 +1469,46 @@ function WebGLRenderer( parameters ) {
 
 	}
 
-	function renderObjects( renderList, scene, camera, overrideMaterial ) {
+	function renderScene( renderList, scene, camera ) {
 
-		for ( var i = 0, l = renderList.length; i < l; i ++ ) {
+		var opaqueObjects = renderList.opaque;
+		var transparentObjects = renderList.transparent;
 
-			var renderItem = renderList[ i ];
+		if ( scene.overrideMaterial ) {
 
-			var object = renderItem.object;
-			var geometry = renderItem.geometry;
-			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
-			var group = renderItem.group;
+			var overrideMaterial = scene.overrideMaterial;
 
-			object.onBeforeRender( _this, scene, camera, geometry, material, group );
+			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
+			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+
+		} else {
 
-			if ( camera.isArrayCamera ) {
+			// opaque pass (front-to-back order)
 
-				var cameras = camera.cameras;
+			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
 
-				for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
+			// transparent pass (back-to-front order)
+
+			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
 
-					var camera2 = cameras[ j ];
-					var bounds = camera2.bounds;
+		}
 
-					var x = bounds.x * _width;
-					var y = bounds.y * _height;
-					var width = bounds.z * _width;
-					var height = bounds.w * _height;
+	}
 
-					_this.setViewport( x, y, width, height );
-					_this.setScissor( x, y, width, height );
-					_this.setScissorTest( true );
+	function renderObjects( renderItems, scene, camera, overrideMaterial ) {
 
-					renderObject( object, scene, camera2, geometry, material, group );
+		for ( var i = 0, l = renderItems.length; i < l; i ++ ) {
 
-				}
+			var renderItem = renderItems[ i ];
 
-			} else {
+			var object = renderItem.object;
+			var geometry = renderItem.geometry;
+			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
+			var group = renderItem.group;
 
-				renderObject( object, scene, camera, geometry, material, group );
+			object.onBeforeRender( _this, scene, camera, geometry, material, group );
 
-			}
+			renderObject( object, scene, camera, geometry, material, group );
 
 			object.onAfterRender( _this, scene, camera, geometry, material, group );