浏览代码

Updated builds.

Mr.doob 8 年之前
父节点
当前提交
0c219e1851
共有 3 个文件被更改,包括 581 次插入512 次删除
  1. 120 85
      build/three.js
  2. 341 342
      build/three.min.js
  3. 120 85
      build/three.module.js

+ 120 - 85
build/three.js

@@ -5389,9 +5389,18 @@
 			map: { value: null },
 			offsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },
 
-			specularMap: { value: null },
 			alphaMap: { value: null },
 
+		},
+
+		specularmap: {
+
+			specularMap: { value: null },
+
+		},
+
+		envmap: {
+
 			envMap: { value: null },
 			flipEnvMap: { value: - 1 },
 			reflectivity: { value: 1.0 },
@@ -5957,6 +5966,8 @@
 
 			uniforms: UniformsUtils.merge( [
 				UniformsLib.common,
+				UniformsLib.specularmap,
+				UniformsLib.envmap,
 				UniformsLib.aomap,
 				UniformsLib.lightmap,
 				UniformsLib.fog
@@ -5971,6 +5982,8 @@
 
 			uniforms: UniformsUtils.merge( [
 				UniformsLib.common,
+				UniformsLib.specularmap,
+				UniformsLib.envmap,
 				UniformsLib.aomap,
 				UniformsLib.lightmap,
 				UniformsLib.emissivemap,
@@ -5990,6 +6003,8 @@
 
 			uniforms: UniformsUtils.merge( [
 				UniformsLib.common,
+				UniformsLib.specularmap,
+				UniformsLib.envmap,
 				UniformsLib.aomap,
 				UniformsLib.lightmap,
 				UniformsLib.emissivemap,
@@ -6015,6 +6030,7 @@
 
 			uniforms: UniformsUtils.merge( [
 				UniformsLib.common,
+				UniformsLib.envmap,
 				UniformsLib.aomap,
 				UniformsLib.lightmap,
 				UniformsLib.emissivemap,
@@ -8743,6 +8759,8 @@
 
 	function Plane( normal, constant ) {
 
+		// normal is assumed to be normalized
+
 		this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );
 		this.constant = ( constant !== undefined ) ? constant : 0;
 
@@ -16454,43 +16472,42 @@
 
 	function WebGLRenderList() {
 
-		var opaque = [];
-		var opaqueLastIndex = - 1;
+		var renderItems = [];
+		var renderItemsIndex = 0;
 
+		var opaque = [];
 		var transparent = [];
-		var transparentLastIndex = - 1;
 
 		function init() {
 
-			opaqueLastIndex = - 1;
-			transparentLastIndex = - 1;
+			renderItemsIndex = 0;
+
+			opaque.length = 0;
+			transparent.length = 0;
 
 		}
 
 		function push( object, geometry, material, z, group ) {
 
-			var array, index;
+			var renderItem = renderItems[ renderItemsIndex ];
 
-			// allocate the next position in the appropriate array
+			if ( renderItem === undefined ) {
 
-			if ( material.transparent ) {
+				renderItem = {
+					id: object.id,
+					object: object,
+					geometry: geometry,
+					material: material,
+					program: material.program,
+					renderOrder: object.renderOrder,
+					z: z,
+					group: group
+				};
 
-				array = transparent;
-				index = ++ transparentLastIndex;
+				renderItems[ renderItemsIndex ] = renderItem;
 
 			} else {
 
-				array = opaque;
-				index = ++ opaqueLastIndex;
-
-			}
-
-			// recycle existing render item or grow the array
-
-			var renderItem = array[ index ];
-
-			if ( renderItem ) {
-
 				renderItem.id = object.id;
 				renderItem.object = object;
 				renderItem.geometry = geometry;
@@ -16500,30 +16517,11 @@
 				renderItem.z = z;
 				renderItem.group = group;
 
-			} else {
-
-				renderItem = {
-					id: object.id,
-					object: object,
-					geometry: geometry,
-					material: material,
-					program: material.program,
-					renderOrder: object.renderOrder,
-					z: z,
-					group: group
-				};
-
-				// assert( index === array.length );
-				array.push( renderItem );
-
 			}
 
-		}
-
-		function finish() {
+			( material.transparent === true ? transparent : opaque ).push( renderItem );
 
-			opaque.length = opaqueLastIndex + 1;
-			transparent.length = transparentLastIndex + 1;
+			renderItemsIndex ++;
 
 		}
 
@@ -16540,7 +16538,6 @@
 
 			init: init,
 			push: push,
-			finish: finish,
 
 			sort: sort
 		};
@@ -21293,24 +21290,50 @@
 
 			if ( objectInfluences !== undefined ) {
 
+				var length = objectInfluences.length;
+
 				var influences = influencesList[ geometry.id ];
 
 				if ( influences === undefined ) {
 
-					influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
+					// initialise list
+
+					influences = [];
+
+					for ( var i = 0; i < length; i ++ ) {
+
+						influences[ i ] = [ i, 0 ];
+
+					}
+
+					influencesList[ geometry.id ] = influences;
 
 				}
 
-				for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
+				var morphTargets = material.morphTargets && geometry.morphAttributes.position;
+				var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
+
+				// Remove current morphAttributes
+
+				for ( var i = 0; i < length; i ++ ) {
 
 					var influence = influences[ i ];
 
-					if ( influence === undefined ) {
+					if ( influence[ 1 ] !== 0 ) {
 
-						influences[ i ] = influence = new Array( 2 );
+						if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );
+						if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );
 
 					}
 
+				}
+
+				// Collect influences
+
+				for ( var i = 0; i < length; i ++ ) {
+
+					var influence = influences[ i ];
+
 					influence[ 0 ] = i;
 					influence[ 1 ] = objectInfluences[ i ];
 
@@ -21318,36 +21341,28 @@
 
 				influences.sort( absNumericalSort );
 
-				var morphTargets = material.morphTargets && geometry.morphAttributes.position;
-				var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
+				// Add morphAttributes
 
-				for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
-
-					var morphTargetId = 'morphTarget' + i;
-					var morphNormalId = 'morphNormal' + i;
+				for ( var i = 0; i < 8; i ++ ) {
 
 					var influence = influences[ i ];
 
-					var index = influence[ 0 ];
-					var value = influence[ 1 ];
-
-					if ( value !== 0 ) {
-
-						if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
-						if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
+					if ( influence ) {
 
-					} else {
+						var index = influence[ 0 ];
+						var value = influence[ 1 ];
 
-						if ( morphTargets ) geometry.removeAttribute( morphTargetId );
-						if ( morphNormals ) geometry.removeAttribute( morphNormalId );
+						if ( value ) {
 
-					}
+							if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );
+							if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );
 
-					morphInfluences[ i ] = value;
+							morphInfluences[ i ] = value;
+							continue;
 
-				}
+						}
 
-				for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
+					}
 
 					morphInfluences[ i ] = 0;
 
@@ -21741,8 +21756,6 @@
 
 			projectObject( scene, camera, _this.sortObjects );
 
-			currentRenderList.finish();
-
 			if ( _this.sortObjects === true ) {
 
 				currentRenderList.sort();
@@ -22524,7 +22537,11 @@
 
 			uniforms.opacity.value = material.opacity;
 
-			uniforms.diffuse.value = material.color;
+			if ( material.color ) {
+
+				uniforms.diffuse.value = material.color;
+
+			}
 
 			if ( material.emissive ) {
 
@@ -22532,9 +22549,38 @@
 
 			}
 
-			uniforms.map.value = material.map;
-			uniforms.specularMap.value = material.specularMap;
-			uniforms.alphaMap.value = material.alphaMap;
+			if ( material.map ) {
+
+				uniforms.map.value = material.map;
+
+			}
+
+			if ( material.alphaMap ) {
+
+				uniforms.alphaMap.value = material.alphaMap;
+
+			}
+
+			if ( material.specularMap ) {
+
+				uniforms.specularMap.value = material.specularMap;
+
+			}
+
+			if ( material.envMap ) {
+
+				uniforms.envMap.value = material.envMap;
+
+				// don't flip CubeTexture envMaps, flip everything else:
+				//  WebGLRenderTargetCube will be flipped for backwards compatibility
+				//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture
+				// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future
+				uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;
+
+				uniforms.reflectivity.value = material.reflectivity;
+				uniforms.refractionRatio.value = material.refractionRatio;
+
+			}
 
 			if ( material.lightMap ) {
 
@@ -22614,17 +22660,6 @@
 
 			}
 
-			uniforms.envMap.value = material.envMap;
-
-			// don't flip CubeTexture envMaps, flip everything else:
-			//  WebGLRenderTargetCube will be flipped for backwards compatibility
-			//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture
-			// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future
-			uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;
-
-			uniforms.reflectivity.value = material.reflectivity;
-			uniforms.refractionRatio.value = material.refractionRatio;
-
 		}
 
 		function refreshUniformsLine( uniforms, material ) {

文件差异内容过多而无法显示
+ 341 - 342
build/three.min.js


+ 120 - 85
build/three.module.js

@@ -5383,9 +5383,18 @@ var UniformsLib = {
 		map: { value: null },
 		offsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },
 
-		specularMap: { value: null },
 		alphaMap: { value: null },
 
+	},
+
+	specularmap: {
+
+		specularMap: { value: null },
+
+	},
+
+	envmap: {
+
 		envMap: { value: null },
 		flipEnvMap: { value: - 1 },
 		reflectivity: { value: 1.0 },
@@ -5951,6 +5960,8 @@ var ShaderLib = {
 
 		uniforms: UniformsUtils.merge( [
 			UniformsLib.common,
+			UniformsLib.specularmap,
+			UniformsLib.envmap,
 			UniformsLib.aomap,
 			UniformsLib.lightmap,
 			UniformsLib.fog
@@ -5965,6 +5976,8 @@ var ShaderLib = {
 
 		uniforms: UniformsUtils.merge( [
 			UniformsLib.common,
+			UniformsLib.specularmap,
+			UniformsLib.envmap,
 			UniformsLib.aomap,
 			UniformsLib.lightmap,
 			UniformsLib.emissivemap,
@@ -5984,6 +5997,8 @@ var ShaderLib = {
 
 		uniforms: UniformsUtils.merge( [
 			UniformsLib.common,
+			UniformsLib.specularmap,
+			UniformsLib.envmap,
 			UniformsLib.aomap,
 			UniformsLib.lightmap,
 			UniformsLib.emissivemap,
@@ -6009,6 +6024,7 @@ var ShaderLib = {
 
 		uniforms: UniformsUtils.merge( [
 			UniformsLib.common,
+			UniformsLib.envmap,
 			UniformsLib.aomap,
 			UniformsLib.lightmap,
 			UniformsLib.emissivemap,
@@ -8737,6 +8753,8 @@ Object.assign( Matrix3.prototype, {
 
 function Plane( normal, constant ) {
 
+	// normal is assumed to be normalized
+
 	this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );
 	this.constant = ( constant !== undefined ) ? constant : 0;
 
@@ -16448,43 +16466,42 @@ function reversePainterSortStable( a, b ) {
 
 function WebGLRenderList() {
 
-	var opaque = [];
-	var opaqueLastIndex = - 1;
+	var renderItems = [];
+	var renderItemsIndex = 0;
 
+	var opaque = [];
 	var transparent = [];
-	var transparentLastIndex = - 1;
 
 	function init() {
 
-		opaqueLastIndex = - 1;
-		transparentLastIndex = - 1;
+		renderItemsIndex = 0;
+
+		opaque.length = 0;
+		transparent.length = 0;
 
 	}
 
 	function push( object, geometry, material, z, group ) {
 
-		var array, index;
+		var renderItem = renderItems[ renderItemsIndex ];
 
-		// allocate the next position in the appropriate array
+		if ( renderItem === undefined ) {
 
-		if ( material.transparent ) {
+			renderItem = {
+				id: object.id,
+				object: object,
+				geometry: geometry,
+				material: material,
+				program: material.program,
+				renderOrder: object.renderOrder,
+				z: z,
+				group: group
+			};
 
-			array = transparent;
-			index = ++ transparentLastIndex;
+			renderItems[ renderItemsIndex ] = renderItem;
 
 		} else {
 
-			array = opaque;
-			index = ++ opaqueLastIndex;
-
-		}
-
-		// recycle existing render item or grow the array
-
-		var renderItem = array[ index ];
-
-		if ( renderItem ) {
-
 			renderItem.id = object.id;
 			renderItem.object = object;
 			renderItem.geometry = geometry;
@@ -16494,30 +16511,11 @@ function WebGLRenderList() {
 			renderItem.z = z;
 			renderItem.group = group;
 
-		} else {
-
-			renderItem = {
-				id: object.id,
-				object: object,
-				geometry: geometry,
-				material: material,
-				program: material.program,
-				renderOrder: object.renderOrder,
-				z: z,
-				group: group
-			};
-
-			// assert( index === array.length );
-			array.push( renderItem );
-
 		}
 
-	}
-
-	function finish() {
+		( material.transparent === true ? transparent : opaque ).push( renderItem );
 
-		opaque.length = opaqueLastIndex + 1;
-		transparent.length = transparentLastIndex + 1;
+		renderItemsIndex ++;
 
 	}
 
@@ -16534,7 +16532,6 @@ function WebGLRenderList() {
 
 		init: init,
 		push: push,
-		finish: finish,
 
 		sort: sort
 	};
@@ -21287,24 +21284,50 @@ function WebGLRenderer( parameters ) {
 
 		if ( objectInfluences !== undefined ) {
 
+			var length = objectInfluences.length;
+
 			var influences = influencesList[ geometry.id ];
 
 			if ( influences === undefined ) {
 
-				influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
+				// initialise list
+
+				influences = [];
+
+				for ( var i = 0; i < length; i ++ ) {
+
+					influences[ i ] = [ i, 0 ];
+
+				}
+
+				influencesList[ geometry.id ] = influences;
 
 			}
 
-			for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
+			var morphTargets = material.morphTargets && geometry.morphAttributes.position;
+			var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
+
+			// Remove current morphAttributes
+
+			for ( var i = 0; i < length; i ++ ) {
 
 				var influence = influences[ i ];
 
-				if ( influence === undefined ) {
+				if ( influence[ 1 ] !== 0 ) {
 
-					influences[ i ] = influence = new Array( 2 );
+					if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );
+					if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );
 
 				}
 
+			}
+
+			// Collect influences
+
+			for ( var i = 0; i < length; i ++ ) {
+
+				var influence = influences[ i ];
+
 				influence[ 0 ] = i;
 				influence[ 1 ] = objectInfluences[ i ];
 
@@ -21312,36 +21335,28 @@ function WebGLRenderer( parameters ) {
 
 			influences.sort( absNumericalSort );
 
-			var morphTargets = material.morphTargets && geometry.morphAttributes.position;
-			var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
+			// Add morphAttributes
 
-			for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
-
-				var morphTargetId = 'morphTarget' + i;
-				var morphNormalId = 'morphNormal' + i;
+			for ( var i = 0; i < 8; i ++ ) {
 
 				var influence = influences[ i ];
 
-				var index = influence[ 0 ];
-				var value = influence[ 1 ];
-
-				if ( value !== 0 ) {
-
-					if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
-					if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
+				if ( influence ) {
 
-				} else {
+					var index = influence[ 0 ];
+					var value = influence[ 1 ];
 
-					if ( morphTargets ) geometry.removeAttribute( morphTargetId );
-					if ( morphNormals ) geometry.removeAttribute( morphNormalId );
+					if ( value ) {
 
-				}
+						if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );
+						if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );
 
-				morphInfluences[ i ] = value;
+						morphInfluences[ i ] = value;
+						continue;
 
-			}
+					}
 
-			for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
+				}
 
 				morphInfluences[ i ] = 0;
 
@@ -21735,8 +21750,6 @@ function WebGLRenderer( parameters ) {
 
 		projectObject( scene, camera, _this.sortObjects );
 
-		currentRenderList.finish();
-
 		if ( _this.sortObjects === true ) {
 
 			currentRenderList.sort();
@@ -22518,7 +22531,11 @@ function WebGLRenderer( parameters ) {
 
 		uniforms.opacity.value = material.opacity;
 
-		uniforms.diffuse.value = material.color;
+		if ( material.color ) {
+
+			uniforms.diffuse.value = material.color;
+
+		}
 
 		if ( material.emissive ) {
 
@@ -22526,9 +22543,38 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		uniforms.map.value = material.map;
-		uniforms.specularMap.value = material.specularMap;
-		uniforms.alphaMap.value = material.alphaMap;
+		if ( material.map ) {
+
+			uniforms.map.value = material.map;
+
+		}
+
+		if ( material.alphaMap ) {
+
+			uniforms.alphaMap.value = material.alphaMap;
+
+		}
+
+		if ( material.specularMap ) {
+
+			uniforms.specularMap.value = material.specularMap;
+
+		}
+
+		if ( material.envMap ) {
+
+			uniforms.envMap.value = material.envMap;
+
+			// don't flip CubeTexture envMaps, flip everything else:
+			//  WebGLRenderTargetCube will be flipped for backwards compatibility
+			//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture
+			// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future
+			uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;
+
+			uniforms.reflectivity.value = material.reflectivity;
+			uniforms.refractionRatio.value = material.refractionRatio;
+
+		}
 
 		if ( material.lightMap ) {
 
@@ -22608,17 +22654,6 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		uniforms.envMap.value = material.envMap;
-
-		// don't flip CubeTexture envMaps, flip everything else:
-		//  WebGLRenderTargetCube will be flipped for backwards compatibility
-		//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture
-		// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future
-		uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;
-
-		uniforms.reflectivity.value = material.reflectivity;
-		uniforms.refractionRatio.value = material.refractionRatio;
-
 	}
 
 	function refreshUniformsLine( uniforms, material ) {

部分文件因为文件数量过多而无法显示