Browse Source

Updated builds.

Mr.doob 5 years ago
parent
commit
649d51f440
3 changed files with 264 additions and 315 deletions
  1. 53 22
      build/three.js
  2. 158 271
      build/three.min.js
  3. 53 22
      build/three.module.js

+ 53 - 22
build/three.js

@@ -22307,7 +22307,7 @@
 		var properties = renderer.properties;
 
 		var renderTarget, currentRenderTarget;
-		var mat3, mat4, renderSize;
+		var mat3, mat4, cameraArray, renderSize;
 
 		var available;
 		var maxNumViews = 0;
@@ -22330,6 +22330,7 @@
 					renderSize = new Vector2();
 					mat4 = [];
 					mat3 = [];
+					cameraArray = [];
 
 					for ( var i = 0; i < maxNumViews; i ++ ) {
 
@@ -22346,9 +22347,19 @@
 
 		}
 
+		function getCameraArray( camera ) {
+
+			if ( camera.isArrayCamera ) { return camera.cameras; }
+
+			cameraArray[ 0 ] = camera;
+
+			return cameraArray;
+
+		}
+
 		function updateCameraProjectionMatricesUniform( camera, uniforms ) {
 
-			var cameras = camera.cameras;
+			var cameras = getCameraArray( camera );
 
 			for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22362,7 +22373,7 @@
 
 		function updateCameraViewMatricesUniform( camera, uniforms ) {
 
-			var cameras = camera.cameras;
+			var cameras = getCameraArray( camera );
 
 			for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22376,7 +22387,7 @@
 
 		function updateObjectMatricesUniforms( object, camera, uniforms ) {
 
-			var cameras = camera.cameras;
+			var cameras = getCameraArray( camera );
 
 			for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22392,6 +22403,8 @@
 
 		function isMultiviewCompatible( camera ) {
 
+			if ( camera.isArrayCamera === undefined ) { return true; }
+
 			var cameras = camera.cameras;
 
 			if ( cameras.length > maxNumViews ) { return false; }
@@ -22419,16 +22432,25 @@
 
 			}
 
-			var viewport = camera.cameras[ 0 ].viewport;
+			if ( camera.isArrayCamera ) {
+
+				var viewport = camera.cameras[ 0 ].viewport;
+
+				renderTarget.setSize( viewport.z, viewport.w );
+				renderTarget.setNumViews( camera.cameras.length );
+
+			} else {
+
+				renderTarget.setSize( renderSize.x, renderSize.y );
+				renderTarget.setNumViews( DEFAULT_NUMVIEWS );
 
-			renderTarget.setSize( viewport.z, viewport.w );
-			renderTarget.setNumViews( camera.cameras.length );
+			}
 
 		}
 
 		function attachCamera( camera ) {
 
-			if ( ! isMultiviewCompatible( camera ) ) { return; }
+			if ( isMultiviewCompatible( camera ) === false ) { return; }
 
 			currentRenderTarget = renderer.getRenderTarget();
 			resizeRenderTarget( camera );
@@ -22456,17 +22478,26 @@
 			var viewWidth = srcRenderTarget.width;
 			var viewHeight = srcRenderTarget.height;
 
-			for ( var i = 0; i < numViews; i ++ ) {
+			if ( camera.isArrayCamera ) {
+
+				for ( var i = 0; i < numViews; i ++ ) {
 
-				var viewport = camera.cameras[ i ].viewport;
+					var viewport = camera.cameras[ i ].viewport;
 
-				var x1 = viewport.x;
-				var y1 = viewport.y;
-				var x2 = x1 + viewport.z;
-				var y2 = y1 + viewport.w;
+					var x1 = viewport.x;
+					var y1 = viewport.y;
+					var x2 = x1 + viewport.z;
+					var y2 = y1 + viewport.w;
 
-				gl.bindFramebuffer( 36008, srcFramebuffers[ i ] );
-				gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 );
+					gl.bindFramebuffer( 36008, srcFramebuffers[ i ] );
+					gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 );
+
+				}
+
+			} else {
+
+				gl.bindFramebuffer( 36008, srcFramebuffers[ 0 ] );
+				gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, 0, 0, renderSize.x, renderSize.y, 16384, 9728 );
 
 			}
 
@@ -24468,7 +24499,7 @@
 
 			}
 
-			if ( camera.isArrayCamera && multiview.isAvailable() ) {
+			if ( vr.enabled && multiview.isAvailable() ) {
 
 				multiview.attachCamera( camera );
 
@@ -24528,13 +24559,13 @@
 
 			state.setPolygonOffset( false );
 
-			if ( camera.isArrayCamera && multiview.isAvailable() ) {
+			if ( vr.enabled ) {
 
-				multiview.detachCamera( camera );
+				if ( multiview.isAvailable() ) {
 
-			}
+					multiview.detachCamera( camera );
 
-			if ( vr.enabled ) {
+				}
 
 				vr.submitFrame();
 
@@ -24687,7 +24718,7 @@
 
 					_currentArrayCamera = camera;
 
-					if ( multiview.isAvailable() ) {
+					if ( vr.enabled && multiview.isAvailable() ) {
 
 						renderObject( object, scene, camera, geometry, material, group );
 

File diff suppressed because it is too large
+ 158 - 271
build/three.min.js


+ 53 - 22
build/three.module.js

@@ -22296,7 +22296,7 @@ function WebGLMultiview( renderer, gl ) {
 	var properties = renderer.properties;
 
 	var renderTarget, currentRenderTarget;
-	var mat3, mat4, renderSize;
+	var mat3, mat4, cameraArray, renderSize;
 
 	var available;
 	var maxNumViews = 0;
@@ -22319,6 +22319,7 @@ function WebGLMultiview( renderer, gl ) {
 				renderSize = new Vector2();
 				mat4 = [];
 				mat3 = [];
+				cameraArray = [];
 
 				for ( var i = 0; i < maxNumViews; i ++ ) {
 
@@ -22335,9 +22336,19 @@ function WebGLMultiview( renderer, gl ) {
 
 	}
 
+	function getCameraArray( camera ) {
+
+		if ( camera.isArrayCamera ) return camera.cameras;
+
+		cameraArray[ 0 ] = camera;
+
+		return cameraArray;
+
+	}
+
 	function updateCameraProjectionMatricesUniform( camera, uniforms ) {
 
-		var cameras = camera.cameras;
+		var cameras = getCameraArray( camera );
 
 		for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22351,7 +22362,7 @@ function WebGLMultiview( renderer, gl ) {
 
 	function updateCameraViewMatricesUniform( camera, uniforms ) {
 
-		var cameras = camera.cameras;
+		var cameras = getCameraArray( camera );
 
 		for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22365,7 +22376,7 @@ function WebGLMultiview( renderer, gl ) {
 
 	function updateObjectMatricesUniforms( object, camera, uniforms ) {
 
-		var cameras = camera.cameras;
+		var cameras = getCameraArray( camera );
 
 		for ( var i = 0; i < cameras.length; i ++ ) {
 
@@ -22381,6 +22392,8 @@ function WebGLMultiview( renderer, gl ) {
 
 	function isMultiviewCompatible( camera ) {
 
+		if ( camera.isArrayCamera === undefined ) return true;
+
 		var cameras = camera.cameras;
 
 		if ( cameras.length > maxNumViews ) return false;
@@ -22408,16 +22421,25 @@ function WebGLMultiview( renderer, gl ) {
 
 		}
 
-		var viewport = camera.cameras[ 0 ].viewport;
+		if ( camera.isArrayCamera ) {
+
+			var viewport = camera.cameras[ 0 ].viewport;
+
+			renderTarget.setSize( viewport.z, viewport.w );
+			renderTarget.setNumViews( camera.cameras.length );
+
+		} else {
+
+			renderTarget.setSize( renderSize.x, renderSize.y );
+			renderTarget.setNumViews( DEFAULT_NUMVIEWS );
 
-		renderTarget.setSize( viewport.z, viewport.w );
-		renderTarget.setNumViews( camera.cameras.length );
+		}
 
 	}
 
 	function attachCamera( camera ) {
 
-		if ( ! isMultiviewCompatible( camera ) ) return;
+		if ( isMultiviewCompatible( camera ) === false ) return;
 
 		currentRenderTarget = renderer.getRenderTarget();
 		resizeRenderTarget( camera );
@@ -22445,17 +22467,26 @@ function WebGLMultiview( renderer, gl ) {
 		var viewWidth = srcRenderTarget.width;
 		var viewHeight = srcRenderTarget.height;
 
-		for ( var i = 0; i < numViews; i ++ ) {
+		if ( camera.isArrayCamera ) {
+
+			for ( var i = 0; i < numViews; i ++ ) {
 
-			var viewport = camera.cameras[ i ].viewport;
+				var viewport = camera.cameras[ i ].viewport;
 
-			var x1 = viewport.x;
-			var y1 = viewport.y;
-			var x2 = x1 + viewport.z;
-			var y2 = y1 + viewport.w;
+				var x1 = viewport.x;
+				var y1 = viewport.y;
+				var x2 = x1 + viewport.z;
+				var y2 = y1 + viewport.w;
 
-			gl.bindFramebuffer( 36008, srcFramebuffers[ i ] );
-			gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 );
+				gl.bindFramebuffer( 36008, srcFramebuffers[ i ] );
+				gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 );
+
+			}
+
+		} else {
+
+			gl.bindFramebuffer( 36008, srcFramebuffers[ 0 ] );
+			gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, 0, 0, renderSize.x, renderSize.y, 16384, 9728 );
 
 		}
 
@@ -24457,7 +24488,7 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		if ( camera.isArrayCamera && multiview.isAvailable() ) {
+		if ( vr.enabled && multiview.isAvailable() ) {
 
 			multiview.attachCamera( camera );
 
@@ -24517,13 +24548,13 @@ function WebGLRenderer( parameters ) {
 
 		state.setPolygonOffset( false );
 
-		if ( camera.isArrayCamera && multiview.isAvailable() ) {
+		if ( vr.enabled ) {
 
-			multiview.detachCamera( camera );
+			if ( multiview.isAvailable() ) {
 
-		}
+				multiview.detachCamera( camera );
 
-		if ( vr.enabled ) {
+			}
 
 			vr.submitFrame();
 
@@ -24676,7 +24707,7 @@ function WebGLRenderer( parameters ) {
 
 				_currentArrayCamera = camera;
 
-				if ( multiview.isAvailable() ) {
+				if ( vr.enabled && multiview.isAvailable() ) {
 
 					renderObject( object, scene, camera, geometry, material, group );
 

Some files were not shown because too many files changed in this diff