From 5c8a089669813cd84970ea5c51f5a45d84cda386 Mon Sep 17 00:00:00 2001 From: Szymon Nowak Date: Wed, 29 Dec 2010 17:32:03 +0100 Subject: [PATCH] Fixed implied globals and added few missing semicolons --- src/core/Color.js | 4 +- src/core/Geometry.js | 6 +- src/core/Matrix3.js | 2 +- src/core/UV.js | 2 +- src/core/Vertex.js | 2 +- src/extras/GeometryUtils.js | 6 +- src/extras/ImageUtils.js | 4 +- src/extras/SceneUtils.js | 38 ++--- src/extras/primitives/Cube.js | 6 +- src/extras/primitives/Cylinder.js | 2 +- src/extras/primitives/Plane.js | 2 +- src/extras/primitives/Sphere.js | 2 +- src/materials/Uniforms.js | 36 ++-- .../mappings/CubeReflectionMapping.js | 6 +- .../mappings/CubeRefractionMapping.js | 6 +- .../mappings/LatitudeReflectionMapping.js | 6 +- .../mappings/LatitudeRefractionMapping.js | 6 +- .../mappings/SphericalReflectionMapping.js | 6 +- .../mappings/SphericalRefractionMapping.js | 6 +- src/materials/mappings/UVMapping.js | 6 +- src/renderers/WebGLRenderer.js | 161 +++++++++--------- src/renderers/WebGLRenderer2.js | 20 +-- 22 files changed, 168 insertions(+), 167 deletions(-) diff --git a/src/core/Color.js b/src/core/Color.js index f54a6587a3..4de7051887 100644 --- a/src/core/Color.js +++ b/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 + ' )'; diff --git a/src/core/Geometry.js b/src/core/Geometry.js index 09c87701ed..a0d08e6f1e 100644 --- a/src/core/Geometry.js +++ b/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 ) { diff --git a/src/core/Matrix3.js b/src/core/Matrix3.js index 6cbf59b160..bdd685d9b0 100644 --- a/src/core/Matrix3.js +++ b/src/core/Matrix3.js @@ -18,4 +18,4 @@ THREE.Matrix3.prototype = { } -} +}; diff --git a/src/core/UV.js b/src/core/UV.js index 8bfdd8ae80..5d7f3be5f4 100644 --- a/src/core/UV.js +++ b/src/core/UV.js @@ -24,4 +24,4 @@ THREE.UV.prototype = { } -} +}; diff --git a/src/core/Vertex.js b/src/core/Vertex.js index 3590829b8e..0665c42268 100644 --- a/src/core/Vertex.js +++ b/src/core/Vertex.js @@ -16,7 +16,7 @@ THREE.Vertex = function ( position, normal ) { this.__visible = true; -} +}; THREE.Vertex.prototype = { diff --git a/src/extras/GeometryUtils.js b/src/extras/GeometryUtils.js index 8df487eb59..8d77d628ba 100644 --- a/src/extras/GeometryUtils.js +++ b/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 = { } -} +}; diff --git a/src/extras/ImageUtils.js b/src/extras/ImageUtils.js index ad3f4056ca..aaa39a676e 100644 --- a/src/extras/ImageUtils.js +++ b/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 = { } -} +}; diff --git a/src/extras/SceneUtils.js b/src/extras/SceneUtils.js index 0b3b10e267..1879e6e931 100644 --- a/src/extras/SceneUtils.js +++ b/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] ) } ) ); - + } - -} + +}; diff --git a/src/extras/primitives/Cube.js b/src/extras/primitives/Cube.js index 576c962806..a6b4e532ed 100644 --- a/src/extras/primitives/Cube.js +++ b/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; diff --git a/src/extras/primitives/Cylinder.js b/src/extras/primitives/Cylinder.js index 9f9380c988..faa8bd6fb0 100644 --- a/src/extras/primitives/Cylinder.js +++ b/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; diff --git a/src/extras/primitives/Plane.js b/src/extras/primitives/Plane.js index fd48507c0f..9f970be0ef 100644 --- a/src/extras/primitives/Plane.js +++ b/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; diff --git a/src/extras/primitives/Sphere.js b/src/extras/primitives/Sphere.js index 23ca949a90..3197cb082b 100644 --- a/src/extras/primitives/Sphere.js +++ b/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; diff --git a/src/materials/Uniforms.js b/src/materials/Uniforms.js index 326907d93b..a002480f12 100644 --- a/src/materials/Uniforms.js +++ b/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; - + } - -} + +}; diff --git a/src/materials/mappings/CubeReflectionMapping.js b/src/materials/mappings/CubeReflectionMapping.js index 19485cc3ce..b3c1983cb8 100644 --- a/src/materials/mappings/CubeReflectionMapping.js +++ b/src/materials/mappings/CubeReflectionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.CubeReflectionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/CubeRefractionMapping.js b/src/materials/mappings/CubeRefractionMapping.js index 2ce88d1220..c7ba3a6b44 100644 --- a/src/materials/mappings/CubeRefractionMapping.js +++ b/src/materials/mappings/CubeRefractionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.CubeRefractionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/LatitudeReflectionMapping.js b/src/materials/mappings/LatitudeReflectionMapping.js index aeb7a0eec7..6e3aec61d1 100644 --- a/src/materials/mappings/LatitudeReflectionMapping.js +++ b/src/materials/mappings/LatitudeReflectionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.LatitudeReflectionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/LatitudeRefractionMapping.js b/src/materials/mappings/LatitudeRefractionMapping.js index ef3826d936..cc0beeb81d 100644 --- a/src/materials/mappings/LatitudeRefractionMapping.js +++ b/src/materials/mappings/LatitudeRefractionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.LatitudeRefractionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/SphericalReflectionMapping.js b/src/materials/mappings/SphericalReflectionMapping.js index 7213b33997..7376c45cc4 100644 --- a/src/materials/mappings/SphericalReflectionMapping.js +++ b/src/materials/mappings/SphericalReflectionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.SphericalReflectionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/SphericalRefractionMapping.js b/src/materials/mappings/SphericalRefractionMapping.js index 67369998e8..d0f610d3d0 100644 --- a/src/materials/mappings/SphericalRefractionMapping.js +++ b/src/materials/mappings/SphericalRefractionMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.SphericalRefractionMapping = function () { - -} + +}; diff --git a/src/materials/mappings/UVMapping.js b/src/materials/mappings/UVMapping.js index 4adc258ba0..f275175736 100644 --- a/src/materials/mappings/UVMapping.js +++ b/src/materials/mappings/UVMapping.js @@ -1,9 +1,9 @@ /** * @author mr.doob / http://mrdoob.com/ */ - + THREE.UVMapping = function () { - -} + +}; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index fa919b2f46..91d6d3af91 100644 --- a/src/renderers/WebGLRenderer.js +++ b/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") - - } + + } }; diff --git a/src/renderers/WebGLRenderer2.js b/src/renderers/WebGLRenderer2.js index 1c2d68d149..1026adf7ce 100644 --- a/src/renderers/WebGLRenderer2.js +++ b/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" : "", -- GitLab