Browse Source

Fixed implied globals and added few missing semicolons

Szymon Nowak 14 years ago
parent
commit
5c8a089669

+ 2 - 2
src/core/Color.js

@@ -7,7 +7,7 @@ THREE.Color = function ( hex ) {
 	this.autoUpdate = true;
 	this.setHex( hex );
 
-}
+};
 
 THREE.Color.prototype = {
 
@@ -65,7 +65,7 @@ THREE.Color.prototype = {
 
 	},
 
-	
+
 	toString: function () {
 
 		return 'THREE.Color ( r: ' + this.r + ', g: ' + this.g + ', b: ' + this.b + ', hex: ' + this.hex + ' )';

+ 3 - 3
src/core/Geometry.js

@@ -113,7 +113,7 @@ THREE.Geometry.prototype = {
 
 	computeVertexNormals: function () {
 
-		var v, vertices = [],
+		var v, vl, vertices = [],
 		f, fl, face;
 
 		for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {
@@ -179,7 +179,7 @@ THREE.Geometry.prototype = {
 
 		var f, fl, v, vl, face, uv, vA, vB, vC, uvA, uvB, uvC,
 			x1, x2, y1, y2, z1, z2,
-			s1, s2, t1, t2, r, t, n,
+			s1, s2, t1, t2, r, t, test,
 			tan1 = [], tan2 = [],
 			sdir = new THREE.Vector3(), tdir = new THREE.Vector3(),
 			tmp = new THREE.Vector3(), tmp2 = new THREE.Vector3(),
@@ -355,7 +355,7 @@ THREE.Geometry.prototype = {
 		// which could then use vertex color attributes instead of each being
 		// in its separate VBO
 
-		var i, l, f, fl, face, material, vertices, mhash, ghash, hash_map = {};
+		var i, l, f, fl, face, material, materials, vertices, mhash, ghash, hash_map = {};
 
 		function materialHash( material ) {
 

+ 1 - 1
src/core/Matrix3.js

@@ -18,4 +18,4 @@ THREE.Matrix3.prototype = {
 
 	}
 
-}
+};

+ 1 - 1
src/core/UV.js

@@ -24,4 +24,4 @@ THREE.UV.prototype = {
 
 	}
 
-}
+};

+ 1 - 1
src/core/Vertex.js

@@ -16,7 +16,7 @@ THREE.Vertex = function ( position, normal ) {
 
 	this.__visible = true;
 
-}
+};
 
 THREE.Vertex.prototype = {
 

+ 3 - 3
src/extras/GeometryUtils.js

@@ -28,7 +28,7 @@ var GeometryUtils = {
 
 		}
 
-		for ( var i = 0, il = faces2.length; i < il; i ++ ) {
+		for ( i = 0, il = faces2.length; i < il; i ++ ) {
 
 			var face = faces2[ i ], faceCopy, normal,
 			faceVertexNormals = face.vertexNormals;
@@ -59,7 +59,7 @@ var GeometryUtils = {
 
 		}
 
-		for ( var i = 0, il = uvs2.length; i < il; i ++ ) {
+		for ( i = 0, il = uvs2.length; i < il; i ++ ) {
 
 			var uv = uvs2[ i ], uvCopy = [];
 
@@ -75,4 +75,4 @@ var GeometryUtils = {
 
 	}
 
-}
+};

+ 2 - 2
src/extras/ImageUtils.js

@@ -20,7 +20,7 @@ var ImageUtils = {
 
 			images[ i ] = new Image();
 			images[ i ].loaded = 0;
-			images[ i ].onload = function () { images.loadCount += 1; this.loaded = true; }
+			images[ i ].onload = function () { images.loadCount += 1; this.loaded = true; };
 			images[ i ].src = array[ i ];
 
 		}
@@ -29,4 +29,4 @@ var ImageUtils = {
 
 	}
 
-}
+};

+ 19 - 19
src/extras/SceneUtils.js

@@ -1,7 +1,7 @@
 var SceneUtils = {
-	
+
 	addMesh: function ( scene, geometry, scale, x, y, z, rx, ry, rz, material ) {
-		
+
 		var mesh = new THREE.Mesh( geometry, material );
 		mesh.scale.x = mesh.scale.y = mesh.scale.z = scale;
 		mesh.position.x = x;
@@ -13,30 +13,30 @@ var SceneUtils = {
 		scene.addObject( mesh );
 
 		return mesh;
-		
-	},	
+
+	},
 
 	addPanoramaCubeWebGL: function ( scene, size, textureCube ) {
-		
+
 		var shader = ShaderUtils.lib["cube"];
 		shader.uniforms["tCube"].texture = textureCube;
-		
-		var material = new THREE.MeshShaderMaterial( { fragment_shader: shader.fragment_shader, 
-													   vertex_shader: shader.vertex_shader, 
+
+		var material = new THREE.MeshShaderMaterial( { fragment_shader: shader.fragment_shader,
+													   vertex_shader: shader.vertex_shader,
 													   uniforms: shader.uniforms
 													} ),
-													
+
 			mesh = new THREE.Mesh( new Cube( size, size, size, 1, 1, null, true ), material );
-		
+
 		scene.addObject( mesh );
-		
+
 		return mesh;
-		
+
 	},
 
 	addPanoramaCube: function( scene, size, images ) {
-	
-		var materials = [];
+
+		var materials = [], mesh;
 		materials.push( new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[0] ) } ) );
 		materials.push( new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[1] ) } ) );
 		materials.push( new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[2] ) } ) );
@@ -46,14 +46,14 @@ var SceneUtils = {
 
 		mesh = new THREE.Mesh( new Cube( size, size, size, 1, 1, materials, true ), new THREE.MeshFaceMaterial() );
 		scene.addObject( mesh );
-		
+
 		return mesh;
 
 	},
 
 	addPanoramaCubePlanes: function ( scene, size, images ) {
 
-		
+
 		var hsize = size/2, plane = new Plane( size, size ), pi2 = Math.PI/2, pi = Math.PI;
 
 		SceneUtils.addMesh( scene, plane, 1,      0,     0,  -hsize,  0,      0,  0, new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[5] ) } ) );
@@ -61,7 +61,7 @@ var SceneUtils = {
 		SceneUtils.addMesh( scene, plane, 1,  hsize,     0,       0,  0,   -pi2,  0, new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[1] ) } ) );
 		SceneUtils.addMesh( scene, plane, 1,     0,  hsize,       0,  pi2,    0, pi, new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[2] ) } ) );
 		SceneUtils.addMesh( scene, plane, 1,     0, -hsize,       0, -pi2,    0, pi, new THREE.MeshBasicMaterial( { map: new THREE.Texture( images[3] ) } ) );
-		
+
 	}
-	
-}
+
+};

+ 3 - 3
src/extras/primitives/Cube.js

@@ -64,7 +64,7 @@ var Cube = function ( width, height, depth, segments_width, segments_height, mat
 
 	function buildPlane( u, v, udir, vdir, width, height, depth, material ) {
 
-		var w,
+		var w, ix, iy,
 		gridX = segments_width || 1,
 		gridY = segments_height || 1,
 		gridX1 = gridX + 1,
@@ -160,7 +160,7 @@ var Cube = function ( width, height, depth, segments_width, segments_height, mat
 
 		}
 
-		for ( var i = 0, l = scope.faces.length; i < l; i ++ ) {
+		for ( i = 0, il = scope.faces.length; i < il; i ++ ) {
 
 			var face = scope.faces[ i ];
 
@@ -179,7 +179,7 @@ var Cube = function ( width, height, depth, segments_width, segments_height, mat
 	this.computeFaceNormals();
 	this.sortFacesByMaterial();
 
-}
+};
 
 Cube.prototype = new THREE.Geometry();
 Cube.prototype.constructor = Cube;

+ 1 - 1
src/extras/primitives/Cylinder.js

@@ -76,7 +76,7 @@ var Cylinder = function ( numSegs, topRad, botRad, height, topOffset, botOffset
 
 	}
 
-}
+};
 
 Cylinder.prototype = new THREE.Geometry();
 Cylinder.prototype.constructor = Cylinder;

+ 1 - 1
src/extras/primitives/Plane.js

@@ -56,7 +56,7 @@ var Plane = function ( width, height, segments_width, segments_height ) {
 	this.computeFaceNormals();
 	this.sortFacesByMaterial();
 
-}
+};
 
 Plane.prototype = new THREE.Geometry();
 Plane.prototype.constructor = Plane;

+ 1 - 1
src/extras/primitives/Sphere.js

@@ -110,7 +110,7 @@ var Sphere = function ( radius, segments_width, segments_height ) {
 
 	this.boundingSphere = { radius: radius };
 
-}
+};
 
 Sphere.prototype = new THREE.Geometry();
 Sphere.prototype.constructor = Sphere;

+ 18 - 18
src/materials/Uniforms.js

@@ -1,35 +1,35 @@
 var Uniforms = {
-	
+
 	clone: function( uniforms_src ) {
-		
-		var u, p, parameter, uniforms_dst = {};
-		
+
+		var u, p, parameter, parameter_src, uniforms_dst = {};
+
 		for ( u in uniforms_src ) {
-			
+
 			uniforms_dst[ u ] = {};
-			
+
 			for ( p in uniforms_src[ u ] ) {
-				
+
 				parameter_src = uniforms_src[ u ][ p ];
-				
+
 				if ( parameter_src instanceof THREE.Color ||
 					 parameter_src instanceof THREE.Vector3 ||
 					 parameter_src instanceof THREE.Texture ) {
-				
+
 					uniforms_dst[ u ][ p ] = parameter_src.clone();
-					
+
 				} else {
-					
+
 					uniforms_dst[ u ][ p ] = parameter_src;
-					
+
 				}
-				
+
 			}
-			
+
 		}
-		
+
 		return uniforms_dst;
-		
+
 	}
-	
-}
+
+};

+ 3 - 3
src/materials/mappings/CubeReflectionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.CubeReflectionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/CubeRefractionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.CubeRefractionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/LatitudeReflectionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.LatitudeReflectionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/LatitudeRefractionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.LatitudeRefractionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/SphericalReflectionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.SphericalReflectionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/SphericalRefractionMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.SphericalRefractionMapping = function () {
 
-	
 
-}
+
+};

+ 3 - 3
src/materials/mappings/UVMapping.js

@@ -1,9 +1,9 @@
 /**
  * @author mr.doob / http://mrdoob.com/
  */
- 
+
 THREE.UVMapping = function () {
 
-	
 
-}
+
+};

+ 81 - 80
src/renderers/WebGLRenderer.js

@@ -36,14 +36,14 @@ THREE.WebGLRenderer = function ( parameters ) {
 	// heuristics to create shader parameters according to lights in the scene
 	// (not to blow over maxLights budget)
 
-	maxLightCount = allocateLights( parameters.scene, 4 );
+	maxLightCount = allocateLights( parameters.scene, 4 ),
 	fog = parameters.scene ? parameters.scene.fog : null,
-	
+
 	antialias = parameters.antialias != undefined ? parameters.antialias : true,
-	
+
 	clearColor = parameters.clearColor ? new THREE.Color( parameters.clearColor ) : new THREE.Color( 0x000000 ),
 	clearAlpha = parameters.clearAlpha ? parameters.clearAlpha : 0;
-	
+
 	this.domElement = _canvas;
 	this.autoClear = true;
 
@@ -63,12 +63,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 	};
 
 	this.setClearColor = function( hex, alpha ) {
-		
+
 		var color = new THREE.Color( hex );
 		_gl.clearColor( color.r, color.g, color.b, alpha );
-		
+
 	};
-	
+
 	this.clear = function () {
 
 		_gl.clear( _gl.COLOR_BUFFER_BIT | _gl.DEPTH_BUFFER_BIT );
@@ -172,7 +172,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	this.createBuffers = function ( object, g ) {
 
-		var f, fl, fi, face, vertexNormals, normal, uv, v1, v2, v3, v4, t1, t2, t3, t4, m, ml, i,
+		var f, fl, fi, face, vertexNormals, faceNormal, normal, uv, v1, v2, v3, v4, t1, t2, t3, t4, m, ml, i,
 
 		faceArray = [],
 		lineArray = [],
@@ -371,7 +371,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		geometryChunk.__webGLLineCount = lineArray.length;
 
 	};
-	
+
 	function setMaterialShaders( material, shaders ) {
 
 		material.fragment_shader = shaders.fragment_shader;
@@ -381,36 +381,36 @@ THREE.WebGLRenderer = function ( parameters ) {
 	};
 
 	function refreshUniforms( material, fog ) {
-		
+
 		material.uniforms.color.value.setHex( material.color.hex );
 		material.uniforms.opacity.value = material.opacity;
 		material.uniforms.map.texture = material.map;
-		
+
 		material.uniforms.env_map.texture = material.env_map;
 		material.uniforms.reflectivity.value = material.reflectivity;
 		material.uniforms.refraction_ratio.value = material.refraction_ratio;
 		material.uniforms.combine.value = material.combine;
 		material.uniforms.useRefract.value = material.env_map && material.env_map.mapping instanceof THREE.CubeRefractionMapping;
-		
+
 		if ( fog ) {
 
 			material.uniforms.fogColor.value.setHex( fog.color.hex );
-			
+
 			if ( fog instanceof THREE.Fog ) {
-				
+
 				material.uniforms.fogNear.value = fog.near;
 				material.uniforms.fogFar.value = fog.far;
-				
+
 			} else if ( fog instanceof THREE.FogExp2 ) {
-				
+
 				material.uniforms.fogDensity.value = fog.density;
-				
+
 			}
 
 		}
-		
+
 	};
-	
+
 	this.renderBuffer = function ( camera, lights, fog, material, geometryChunk ) {
 
 		var mColor, mOpacity, mReflectivity,
@@ -423,7 +423,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		if ( material instanceof THREE.MeshShaderMaterial ||
 			 material instanceof THREE.MeshDepthMaterial ||
-			 material instanceof THREE.MeshNormalMaterial || 
+			 material instanceof THREE.MeshNormalMaterial ||
 			 material instanceof THREE.MeshBasicMaterial ) {
 
 			if ( !material.program ) {
@@ -440,11 +440,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 					setMaterialShaders( material, THREE.ShaderLib[ 'normal' ] );
 
 				} else if ( material instanceof THREE.MeshBasicMaterial ) {
-					
+
 					setMaterialShaders( material, THREE.ShaderLib[ 'basic' ] );
-					
+
 					refreshUniforms( material, fog );
-					
+
 				}
 
 				material.program = buildProgram( material.fragment_shader, material.vertex_shader, { fog: fog, map: material.map, env_map: material.env_map } );
@@ -486,11 +486,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 		this.loadMatrices( program );
 
 		if ( material instanceof THREE.MeshBasicMaterial ) {
-			
+
 			refreshUniforms( material, fog );
-		
+
 		}
-		
+
 		if ( material instanceof THREE.MeshShaderMaterial ||
 		     material instanceof THREE.MeshDepthMaterial ||
 			 material instanceof THREE.MeshNormalMaterial ||
@@ -536,16 +536,16 @@ THREE.WebGLRenderer = function ( parameters ) {
 			if ( fog ) {
 
 				_gl.uniform3f( program.uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );
-				
+
 				if ( fog instanceof THREE.Fog ) {
-				
+
 					_gl.uniform1f( program.uniforms.fogNear, fog.near );
 					_gl.uniform1f( program.uniforms.fogFar, fog.far );
-					
+
 				} else if ( fog instanceof THREE.FogExp2 ) {
-					
+
 					_gl.uniform1f( program.uniforms.fogDensity, fog.density );
-					
+
 				}
 
 			}
@@ -990,7 +990,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		_gl.clearColor( clearColor.r, clearColor.g, clearColor.b, clearAlpha );
 
 	};
-		
+
 	function generateFragmentShader( maxDirLights, maxPointLights ) {
 
 		var chunks = [
@@ -1016,7 +1016,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			"uniform float mShininess;",
 
 			THREE.Snippets[ "fog_uniforms" ],
-			
+
 			"uniform int pointLightNumber;",
 			"uniform int directionalLightNumber;",
 
@@ -1158,7 +1158,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 				"}",
 
 				THREE.Snippets[ "fog_fragment" ],
-				
+
 			"}" ];
 
 		return chunks.join("\n");
@@ -1273,7 +1273,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			parameters.fog ? "#define USE_FOG" : "",
 			parameters.fog instanceof THREE.FogExp2 ? "#define FOG_EXP2" : "",
-		
+
 			parameters.map ? "#define USE_MAP" : "",
 			parameters.env_map ? "#define USE_ENVMAP" : "",
 
@@ -1457,7 +1457,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 	};
 
 	function initUbershader( maxDirLights, maxPointLights, fog ) {
-		
+
 		var vertex_shader = generateVertexShader( maxDirLights, maxPointLights ),
 			fragment_shader = generateFragmentShader( maxDirLights, maxPointLights ),
 			program;
@@ -1580,7 +1580,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	function bufferNeedsSmoothNormals( geometryChunk, object ) {
 
-		var m, ml, i, l, needsSmoothNormals = false;
+		var m, ml, i, l, meshMaterial, needsSmoothNormals = false;
 
 		for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
 
@@ -1622,7 +1622,8 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		if ( scene ) {
 
-			var l, ll, light, dirLights = pointLights = maxDirLights = maxPointLights = 0;
+			var l, ll, light, dirLights, pointLights, maxDirLights, maxPointLights;
+			dirLights = pointLights = maxDirLights = maxPointLights = 0;
 
 			for ( l = 0, ll = scene.lights.length; l < ll; l++ ) {
 
@@ -1688,28 +1689,28 @@ THREE.WebGLRenderer = function ( parameters ) {
 };
 
 THREE.Snippets = {
-	
+
 	fog_uniforms: [
 
 	"#ifdef USE_FOG",
-	
+
 		"uniform vec3 fogColor;",
-		
+
 		"#ifdef FOG_EXP2",
 			"uniform float fogDensity;",
 		"#else",
 			"uniform float fogNear;",
 			"uniform float fogFar;",
 		"#endif",
-		
+
 	"#endif"
-	
+
 	].join("\n"),
 
 	fog_fragment: [
 
 	"#ifdef USE_FOG",
-	
+
 		"float depth = gl_FragCoord.z / gl_FragCoord.w;",
 
 		"#ifdef FOG_EXP2",
@@ -1719,13 +1720,13 @@ THREE.Snippets = {
 		"#else",
 			"float fogFactor = smoothstep( fogNear, fogFar, depth );",
 		"#endif",
-		
+
 		"gl_FragColor = mix( gl_FragColor, vec4( fogColor, 1.0 ), fogFactor );",
 
 	"#endif"
-	
+
 	].join("\n")
-	
+
 };
 
 THREE.ShaderLib = {
@@ -1794,9 +1795,9 @@ THREE.ShaderLib = {
 		].join("\n")
 
 	},
-	
+
 	'basic': {
-		
+
 		uniforms: { "color"   : { type: "c", value: new THREE.Color( 0xeeeeee ) },
 					"opacity" : { type: "f", value: 1 },
 					"map"     : { type: "t", value: 0, texture: null },
@@ -1810,32 +1811,32 @@ THREE.ShaderLib = {
 					"fogFar"	: { type: "f", value: 2000 },
 					"fogColor"	: { type: "c", value: new THREE.Color( 0xffffff ) }
 				},
-		
+
 		fragment_shader: [
-			
+
 			"uniform vec3 color;",
 			"uniform float opacity;",
-			
+
 			"#ifdef USE_MAP",
-				
+
 				"varying vec2 vUv;",
 				"uniform sampler2D map;",
-				  
+
 			"#endif",
-			
+
 			"#ifdef USE_ENVMAP",
-			
+
 				"varying vec3 vReflect;",
 				"uniform float reflectivity;",
 				"uniform samplerCube env_map;",
 				"uniform int combine;",
-				
+
 			"#endif",
 
 			THREE.Snippets[ "fog_uniforms" ],
-				
+
 			"void main() {",
-					
+
 				"vec4 mColor = vec4( color, opacity );",
 				"vec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );",
 				"vec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );",
@@ -1849,11 +1850,11 @@ THREE.ShaderLib = {
 				"#endif",
 
 				// environment map
-				
+
 				"#ifdef USE_ENVMAP",
 
 					"cubeColor = textureCube( env_map, vec3( -vReflect.x, vReflect.yz ) );",
-					
+
 					"if ( combine == 1 ) {",
 
 						"gl_FragColor = mix( mColor * mapColor, cubeColor, reflectivity );",
@@ -1863,48 +1864,48 @@ THREE.ShaderLib = {
 						"gl_FragColor = mColor * mapColor * cubeColor;",
 
 					"}",
-				
+
 				"#else",
-				
+
 					"gl_FragColor = mColor * mapColor;",
 
 				"#endif",
-				
+
 				THREE.Snippets[ "fog_fragment" ],
-				
+
 			"}"
 
 		].join("\n"),
-		
+
 		vertex_shader: [
-		
+
 			"#ifdef USE_MAP",
-			
+
 				"varying vec2 vUv;",
 
 			"#endif",
-			
+
 			"#ifdef USE_ENVMAP",
-			
+
 				"varying vec3 vReflect;",
 				"uniform float refraction_ratio;",
 				"uniform bool useRefract;",
-				
+
 			"#endif",
-			
+
 			"void main() {",
-		
+
 				"#ifdef USE_MAP",
-				
+
 					"vUv = uv;",
-					
+
 				"#endif",
 
 				"#ifdef USE_ENVMAP",
-				
+
 					"vec4 mPosition = objectMatrix * vec4( position, 1.0 );",
 					"vec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;",
-				
+
 					"if ( useRefract ) {",
 
 						"vReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refraction_ratio );",
@@ -1916,13 +1917,13 @@ THREE.ShaderLib = {
 					"}",
 
 				"#endif",
-				
+
 				"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
 
 			"}"
 
 		].join("\n")
-		
-	}		
+
+	}
 
 };

+ 10 - 10
src/renderers/WebGLRenderer2.js

@@ -14,6 +14,7 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 	_canvas = document.createElement( 'canvas' ),
 	_gl, _currentProgram,
 	_modelViewMatrix = new THREE.Matrix4(),
+	_normalMatrix = new THREE.Matrix4(),
 	_viewMatrixArray = new Float32Array( 16 ),
 	_modelViewMatrixArray = new Float32Array( 16 ),
 	_projectionMatrixArray = new Float32Array( 16 ),
@@ -100,7 +101,7 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 
 		function renderObject( object ) {
 
-			var geometry, material, m, nl,
+			var geometry, material, m, ml,
 			program, uniforms, attributes;
 
 			object.autoUpdateMatrix && object.updateMatrix();
@@ -268,11 +269,11 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 
 			} else if ( object instanceof THREE.Line ) {
 
-				
+
 
 			} else if ( object instanceof THREE.Particle ) {
 
-				
+
 
 			}
 
@@ -283,10 +284,9 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 		function buildBuffers( geometry ) {
 
 			var itemCount = 0, vertexIndex, group,
-			f, fl, face, v1, v2, v3, vertexNormals, normal, uv,
+			f, fl, face, v1, v2, v3, v4, vertexNormals, faceNormal, normal, uv,
 			vertexGroups = [], faceGroups = [], lineGroups = [], normalGroups = [], uvGroups = [],
-			vertices, faces, lines, normals, uvs,
-			buffers = {};
+			vertices, faces, lines, normals, uvs;
 
 			for ( f = 0, fl = geometry.faces.length; f < fl; f++ ) {
 
@@ -544,9 +544,9 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 
 				identifiers.push( 'mColor', 'mOpacity' );
 
-				material.map ? identifiers.push( 'tMap' ) : null;
-				material.env_map ? identifiers.push( 'tSpherical' ) : null;
-				material.fog ? identifiers.push( 'fog', 'fogColor', 'fogNear', 'fogFar' ) : null;
+				if ( material.map ) identifiers.push( 'tMap' );
+				if ( material.env_map ) identifiers.push( 'tSpherical' );
+				if ( material.fog ) identifiers.push( 'fog', 'fogColor', 'fogNear', 'fogFar' );
 
 
 			} else if ( material instanceof THREE.MeshNormalMaterial ) {
@@ -622,7 +622,7 @@ THREE.WebGLRenderer2 = function ( antialias ) {
 
 		function compileProgram( vertex_shader, fragment_shader ) {
 
-			var program = _gl.createProgram(), shader
+			var program = _gl.createProgram(), shader, prefix_vertex, prefix_fragment;
 
 			prefix_vertex = [
 				maxVertexTextures() > 0 ? "#define VERTEX_TEXTURES" : "",