Browse Source

Updated builds.

Mr.doob 10 years ago
parent
commit
e654ed383e
2 changed files with 42 additions and 50 deletions
  1. 3 11
      build/three.js
  2. 39 39
      build/three.min.js

+ 3 - 11
build/three.js

@@ -21062,19 +21062,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		_currentGeometryProgram = '';
 		_currentGeometryProgram = '';
 
 
-		if ( object.immediateRenderCallback ) {
+		object.render( function ( object ) {
 
 
-			object.immediateRenderCallback( program, _gl, _frustum );
+			_this.renderBufferImmediate( object, program, material );
 
 
-		} else {
-
-			object.render( function ( object ) {
-
-				_this.renderBufferImmediate( object, program, material );
-
-			} );
-
-		}
+		} );
 
 
 	};
 	};
 
 

+ 39 - 39
build/three.min.js

@@ -486,47 +486,47 @@ tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.Sh
 THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,
 THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,
 "}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",
 "}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",
 THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
 THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
-THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===Q&&(a*=d,b*=d,c*=d);t.clearColor(a,b,c,d)}function c(){N.init();t.viewport(Ia,Ja,Ca,wa);b(aa.r,aa.g,aa.b,ea)}function d(){Wa=kb=null;xa="";Xa=-1;eb=!0;N.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=Z.get(a);if(a.image&&b.__image__webglTextureCube)t.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;t.deleteTexture(b.__webglTexture)}Z.delete(a)}Da.textures--}function f(a){var b=a.target;
+THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===Q&&(a*=d,b*=d,c*=d);t.clearColor(a,b,c,d)}function c(){N.init();t.viewport(Ia,Ja,Ca,wa);b(aa.r,aa.g,aa.b,ea)}function d(){Va=kb=null;xa="";Wa=-1;db=!0;N.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=Z.get(a);if(a.image&&b.__image__webglTextureCube)t.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;t.deleteTexture(b.__webglTexture)}Z.delete(a)}Da.textures--}function f(a){var b=a.target;
 b.removeEventListener("dispose",f);a=Z.get(b);if(b&&void 0!==a.__webglTexture){t.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)t.deleteFramebuffer(a.__webglFramebuffer[b]),t.deleteRenderbuffer(a.__webglRenderbuffer[b]);else t.deleteFramebuffer(a.__webglFramebuffer),t.deleteRenderbuffer(a.__webglRenderbuffer);Z.delete(a)}Da.textures--}function g(a){a=a.target;a.removeEventListener("dispose",g);h(a);Z.delete(a)}function h(a){var b=Z.get(a).program.program;
 b.removeEventListener("dispose",f);a=Z.get(b);if(b&&void 0!==a.__webglTexture){t.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)t.deleteFramebuffer(a.__webglFramebuffer[b]),t.deleteRenderbuffer(a.__webglRenderbuffer[b]);else t.deleteFramebuffer(a.__webglFramebuffer),t.deleteRenderbuffer(a.__webglRenderbuffer);Z.delete(a)}Da.textures--}function g(a){a=a.target;a.removeEventListener("dispose",g);h(a);Z.delete(a)}function h(a){var b=Z.get(a).program.program;
 if(void 0!==b){a.program=void 0;a=0;for(var c=va.length;a!==c;++a){var d=va[a];if(d.program===b){0===--d.usedTimes&&(c-=1,va[a]=va[c],va.pop(),t.deleteProgram(b),Da.programs=c);break}}}}function k(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=V.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}var g=c.attributes;b=b.getAttributes();
 if(void 0!==b){a.program=void 0;a=0;for(var c=va.length;a!==c;++a){var d=va[a];if(d.program===b){0===--d.usedTimes&&(c-=1,va[a]=va[c],va.pop(),t.deleteProgram(b),Da.programs=c);break}}}}function k(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=V.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}var g=c.attributes;b=b.getAttributes();
 a=a.defaultAttributeValues;for(var f in b){var h=b[f];if(0<=h){var k=g[f];if(void 0!==k){var l=k.itemSize;N.enableAttribute(h);var n=pa.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var m=k.data,p=m.stride,k=k.offset;t.bindBuffer(t.ARRAY_BUFFER,n);t.vertexAttribPointer(h,l,t.FLOAT,!1,p*m.array.BYTES_PER_ELEMENT,(d*p+k)*m.array.BYTES_PER_ELEMENT);if(m instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
 a=a.defaultAttributeValues;for(var f in b){var h=b[f];if(0<=h){var k=g[f];if(void 0!==k){var l=k.itemSize;N.enableAttribute(h);var n=pa.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var m=k.data,p=m.stride,k=k.offset;t.bindBuffer(t.ARRAY_BUFFER,n);t.vertexAttribPointer(h,l,t.FLOAT,!1,p*m.array.BYTES_PER_ELEMENT,(d*p+k)*m.array.BYTES_PER_ELEMENT);if(m instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
 return}e.vertexAttribDivisorANGLE(h,m.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=m.meshPerAttribute*m.count)}}else if(t.bindBuffer(t.ARRAY_BUFFER,n),t.vertexAttribPointer(h,l,t.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0===
 return}e.vertexAttribDivisorANGLE(h,m.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=m.meshPerAttribute*m.count)}}else if(t.bindBuffer(t.ARRAY_BUFFER,n),t.vertexAttribPointer(h,l,t.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0===
 c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[f],void 0!==l))switch(l.length){case 2:t.vertexAttrib2fv(h,l);break;case 3:t.vertexAttrib3fv(h,l);break;case 4:t.vertexAttrib4fv(h,l);break;default:t.vertexAttrib1fv(h,l)}}}N.disableUnusedAttributes()}function l(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-b.object.material.id:a.z!==b.z?
 c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[f],void 0!==l))switch(l.length){case 2:t.vertexAttrib2fv(h,l);break;case 3:t.vertexAttrib3fv(h,l);break;case 4:t.vertexAttrib4fv(h,l);break;default:t.vertexAttrib1fv(h,l)}}}N.disableUnusedAttributes()}function l(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-b.object.material.id:a.z!==b.z?
-a.z-b.z:a.id-b.id}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function p(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),pa.init(a),a instanceof THREE.Light)fa.push(a);else if(a instanceof THREE.Sprite)Ha.push(a);else if(a instanceof THREE.LensFlare)Qa.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=a.material;
-b.transparent?Ga.push(a):Ba.push(a)}else{var c=pa.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Ra.intersectsObject(a)||(b=a.material,Z.get(b)&&(b.program=Z.get(b).program),b.transparent?oa.push(c):la.push(c),!0===ja.sortObjects&&(na.setFromMatrixPosition(a.matrixWorld),na.applyProjection(Ka),c.z=na.z))}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);
+a.z-b.z:a.id-b.id}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function p(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),pa.init(a),a instanceof THREE.Light)fa.push(a);else if(a instanceof THREE.Sprite)Ha.push(a);else if(a instanceof THREE.LensFlare)Pa.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=a.material;
+b.transparent?Ga.push(a):Ba.push(a)}else{var c=pa.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Xa.intersectsObject(a)||(b=a.material,Z.get(b)&&(b.program=Z.get(b).program),b.transparent?oa.push(c):la.push(c),!0===ja.sortObjects&&(na.setFromMatrixPosition(a.matrixWorld),na.applyProjection(Qa),c.z=na.z))}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);
 l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(g=k.material);if(g instanceof THREE.MeshFaceMaterial)for(var l=g.materials,n=0,m=l.length;n<m;n++)ja.renderBufferDirect(b,c,d,l[n],k);else ja.renderBufferDirect(b,c,d,g,k)}}function q(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f],l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);!0===k.visible&&(null===e&&(g=k.material),ja.renderImmediateObject(b,
 l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(g=k.material);if(g instanceof THREE.MeshFaceMaterial)for(var l=g.materials,n=0,m=l.length;n<m;n++)ja.renderBufferDirect(b,c,d,l[n],k);else ja.renderBufferDirect(b,c,d,g,k)}}function q(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f],l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);!0===k.visible&&(null===e&&(g=k.material),ja.renderImmediateObject(b,
 c,d,g,k))}}function r(a){s(a);!0===a.transparent?N.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):N.setBlending(THREE.NoBlending);N.setDepthFunc(a.depthFunc);N.setDepthTest(a.depthTest);N.setDepthWrite(a.depthWrite);N.setColorWrite(a.colorWrite);N.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function s(a){a.side!==THREE.DoubleSide?N.enable(t.CULL_FACE):N.disable(t.CULL_FACE);N.setFlipSided(a.side===
 c,d,g,k))}}function r(a){s(a);!0===a.transparent?N.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):N.setBlending(THREE.NoBlending);N.setDepthFunc(a.depthFunc);N.setDepthTest(a.depthTest);N.setDepthWrite(a.depthWrite);N.setColorWrite(a.colorWrite);N.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function s(a){a.side!==THREE.DoubleSide?N.enable(t.CULL_FACE):N.disable(t.CULL_FACE);N.setFlipSided(a.side===
-THREE.BackSide)}function u(a,b,c,d,f){var k,l,n,m;fb=0;var p=Z.get(d);if(d.needsUpdate||!p.program){a:{for(var q=Z.get(d),r=Yb[d.type],s=0,y=0,u=0,D=0,A=0,C=b.length;A<C;A++){var I=b[A];I.onlyShadow||!1===I.visible||(I instanceof THREE.DirectionalLight&&s++,I instanceof THREE.PointLight&&y++,I instanceof THREE.SpotLight&&u++,I instanceof THREE.HemisphereLight&&D++)}k=s;l=y;n=u;m=D;for(var G,J=0,M=0,R=b.length;M<R;M++){var la=b[M];la.castShadow&&(la instanceof THREE.SpotLight&&J++,la instanceof THREE.DirectionalLight&&
+THREE.BackSide)}function u(a,b,c,d,f){var k,l,n,m;eb=0;var p=Z.get(d);if(d.needsUpdate||!p.program){a:{for(var q=Z.get(d),r=Zb[d.type],s=0,y=0,u=0,D=0,A=0,C=b.length;A<C;A++){var I=b[A];I.onlyShadow||!1===I.visible||(I instanceof THREE.DirectionalLight&&s++,I instanceof THREE.PointLight&&y++,I instanceof THREE.SpotLight&&u++,I instanceof THREE.HemisphereLight&&D++)}k=s;l=y;n=u;m=D;for(var G,J=0,M=0,R=b.length;M<R;M++){var la=b[M];la.castShadow&&(la instanceof THREE.SpotLight&&J++,la instanceof THREE.DirectionalLight&&
 !la.shadowCascade&&J++)}G=J;var S;if(lb&&f&&f.skeleton&&f.skeleton.useVertexTexture)S=1024;else{var Q=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((Q-20)/4);void 0!==f&&f instanceof THREE.SkinnedMesh&&(U=Math.min(f.skeleton.bones.length,U),U<f.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+f.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));S=U}var P={precision:E,supportsVertexTextures:mb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&
 !la.shadowCascade&&J++)}G=J;var S;if(lb&&f&&f.skeleton&&f.skeleton.useVertexTexture)S=1024;else{var Q=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((Q-20)/4);void 0!==f&&f instanceof THREE.SkinnedMesh&&(U=Math.min(f.skeleton.bones.length,U),U<f.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+f.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));S=U}var P={precision:E,supportsVertexTextures:mb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&
 d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:S,useVertexTexture:lb&&f&&f.skeleton&&f.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,
 d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:S,useVertexTexture:lb&&f&&f.skeleton&&f.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,
 maxMorphTargets:ja.maxMorphTargets,maxMorphNormals:ja.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:n,maxHemiLights:m,maxShadows:G,shadowMapEnabled:ma.enabled&&f.receiveShadow&&0<G,shadowMapType:ma.type,shadowMapDebug:ma.debug,shadowMapCascade:ma.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];r?T.push(r):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),
 maxMorphTargets:ja.maxMorphTargets,maxMorphNormals:ja.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:n,maxHemiLights:m,maxShadows:G,shadowMapEnabled:ma.enabled&&f.receiveShadow&&0<G,shadowMapType:ma.type,shadowMapDebug:ma.debug,shadowMapCascade:ma.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];r?T.push(r):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),
 T.push(d.defines[V]);for(V in P)T.push(V),T.push(P[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==r)break a;else Ga=!1;else d.addEventListener("dispose",g);if(r){var Ba=THREE.ShaderLib[r];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var aa,Ha=0,fa=va.length;Ha<
 T.push(d.defines[V]);for(V in P)T.push(V),T.push(P[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==r)break a;else Ga=!1;else d.addEventListener("dispose",g);if(r){var Ba=THREE.ShaderLib[r];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var aa,Ha=0,fa=va.length;Ha<
-fa;Ha++){var ea=va[Ha];if(ea.code===oa){aa=ea;Ga&&aa.usedTimes++;break}}void 0===aa&&(d.__webglShader=q.__webglShader,aa=new THREE.WebGLProgram(ja,oa,d,P),va.push(aa),Da.programs=va.length);q.program=aa;var Qa=aa.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ja.maxMorphTargets;ua++)0<=Qa["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ja.maxMorphNormals;ua++)0<=Qa["morphNormal"+ua]&&d.numSupportedMorphNormals++;
-q.uniformsList=[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ia=pa[xa];Ia&&q.uniformsList.push([q.__webglShader.uniforms[xa],Ia])}}d.needsUpdate=!1}var Ja=!1,Ca=!1,wa=!1,Ya=p.program,ca=Ya.getUniforms(),K=p.__webglShader.uniforms;Ya.id!==kb&&(t.useProgram(Ya.program),kb=Ya.id,wa=Ca=Ja=!0);d.id!==Xa&&(-1===Xa&&(wa=!0),Xa=d.id,Ca=!0);if(Ja||a!==Wa)t.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&t.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/
-Math.LN2)),a!==Wa&&(Wa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),t.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&t.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(f.bindMatrix&&
-null!==ca.bindMatrix&&t.uniformMatrix4fv(ca.bindMatrix,!1,f.bindMatrix.elements),f.bindMatrixInverse&&null!==ca.bindMatrixInverse&&t.uniformMatrix4fv(ca.bindMatrixInverse,!1,f.bindMatrixInverse.elements),lb&&f.skeleton&&f.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Ra=x();t.uniform1i(ca.boneTexture,Ra);ja.setTexture(f.skeleton.boneTexture,Ra)}null!==ca.boneTextureWidth&&t.uniform1i(ca.boneTextureWidth,f.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&t.uniform1i(ca.boneTextureHeight,
-f.skeleton.boneTextureHeight)}else f.skeleton&&f.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&t.uniformMatrix4fv(ca.boneGlobalMatrices,!1,f.skeleton.boneMatrices);if(Ca){c&&d.fog&&(K.fogColor.value=c.color,c instanceof THREE.Fog?(K.fogNear.value=c.near,K.fogFar.value=c.far):c instanceof THREE.FogExp2&&(K.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(eb){var wa=!0,ba,ra,$,Ka=0,nb=0,ob=0,La,cb,db,Sa,pb,da=Mb,qb=da.directional.colors,
-rb=da.directional.positions,sb=da.point.colors,tb=da.point.positions,jb=da.point.distances,Hb=da.point.decays,ub=da.spot.colors,vb=da.spot.positions,Ib=da.spot.distances,wb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,xb=da.hemi.skyColors,yb=da.hemi.groundColors,zb=da.hemi.positions,Za=0,Ma=0,ya=0,Ta=0,Ab=0,Bb=0,Cb=0,gb=0,$a=0,ab=0,Ea=0,Ua=0;ba=0;for(ra=b.length;ba<ra;ba++)$=b[ba],$.onlyShadow||(La=$.color,Sa=$.intensity,pb=$.distance,$ instanceof THREE.AmbientLight?
-$.visible&&(Ka+=La.r,nb+=La.g,ob+=La.b):$ instanceof THREE.DirectionalLight?(Ab+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),$a=3*Za,rb[$a+0]=ga.x,rb[$a+1]=ga.y,rb[$a+2]=ga.z,z(qb,$a,La,Sa),Za+=1)):$ instanceof THREE.PointLight?(Bb+=1,$.visible&&(ab=3*Ma,z(sb,ab,La,Sa),na.setFromMatrixPosition($.matrixWorld),tb[ab+0]=na.x,tb[ab+1]=na.y,tb[ab+2]=na.z,jb[Ma]=pb,Hb[Ma]=0===$.distance?0:$.decay,Ma+=1)):$ instanceof THREE.SpotLight?
-(Cb+=1,$.visible&&(Ea=3*ya,z(ub,Ea,La,Sa),ga.setFromMatrixPosition($.matrixWorld),vb[Ea+0]=ga.x,vb[Ea+1]=ga.y,vb[Ea+2]=ga.z,Ib[ya]=pb,na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),wb[Ea+0]=ga.x,wb[Ea+1]=ga.y,wb[Ea+2]=ga.z,Jb[ya]=Math.cos($.angle),Kb[ya]=$.exponent,Lb[ya]=0===$.distance?0:$.decay,ya+=1)):$ instanceof THREE.HemisphereLight&&(gb+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),ga.normalize(),Ua=3*Ta,zb[Ua+0]=ga.x,zb[Ua+1]=ga.y,zb[Ua+2]=ga.z,cb=$.color,
-db=$.groundColor,z(xb,Ua,cb,Sa),z(yb,Ua,db,Sa),Ta+=1)));ba=3*Za;for(ra=Math.max(qb.length,3*Ab);ba<ra;ba++)qb[ba]=0;ba=3*Ma;for(ra=Math.max(sb.length,3*Bb);ba<ra;ba++)sb[ba]=0;ba=3*ya;for(ra=Math.max(ub.length,3*Cb);ba<ra;ba++)ub[ba]=0;ba=3*Ta;for(ra=Math.max(xb.length,3*gb);ba<ra;ba++)xb[ba]=0;ba=3*Ta;for(ra=Math.max(yb.length,3*gb);ba<ra;ba++)yb[ba]=0;da.directional.length=Za;da.point.length=Ma;da.spot.length=ya;da.hemi.length=Ta;da.ambient[0]=Ka;da.ambient[1]=nb;da.ambient[2]=ob;eb=!1}if(wa){var ka=
-Mb;K.ambientLightColor.value=ka.ambient;K.directionalLightColor.value=ka.directional.colors;K.directionalLightDirection.value=ka.directional.positions;K.pointLightColor.value=ka.point.colors;K.pointLightPosition.value=ka.point.positions;K.pointLightDistance.value=ka.point.distances;K.pointLightDecay.value=ka.point.decays;K.spotLightColor.value=ka.spot.colors;K.spotLightPosition.value=ka.spot.positions;K.spotLightDistance.value=ka.spot.distances;K.spotLightDirection.value=ka.spot.directions;K.spotLightAngleCos.value=
+fa;Ha++){var ea=va[Ha];if(ea.code===oa){aa=ea;Ga&&aa.usedTimes++;break}}void 0===aa&&(d.__webglShader=q.__webglShader,aa=new THREE.WebGLProgram(ja,oa,d,P),va.push(aa),Da.programs=va.length);q.program=aa;var Pa=aa.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ja.maxMorphTargets;ua++)0<=Pa["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ja.maxMorphNormals;ua++)0<=Pa["morphNormal"+ua]&&d.numSupportedMorphNormals++;
+q.uniformsList=[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ia=pa[xa];Ia&&q.uniformsList.push([q.__webglShader.uniforms[xa],Ia])}}d.needsUpdate=!1}var Ja=!1,Ca=!1,wa=!1,Ya=p.program,ca=Ya.getUniforms(),K=p.__webglShader.uniforms;Ya.id!==kb&&(t.useProgram(Ya.program),kb=Ya.id,wa=Ca=Ja=!0);d.id!==Wa&&(-1===Wa&&(wa=!0),Wa=d.id,Ca=!0);if(Ja||a!==Va)t.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&t.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/
+Math.LN2)),a!==Va&&(Va=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),t.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&t.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(f.bindMatrix&&
+null!==ca.bindMatrix&&t.uniformMatrix4fv(ca.bindMatrix,!1,f.bindMatrix.elements),f.bindMatrixInverse&&null!==ca.bindMatrixInverse&&t.uniformMatrix4fv(ca.bindMatrixInverse,!1,f.bindMatrixInverse.elements),lb&&f.skeleton&&f.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Qa=x();t.uniform1i(ca.boneTexture,Qa);ja.setTexture(f.skeleton.boneTexture,Qa)}null!==ca.boneTextureWidth&&t.uniform1i(ca.boneTextureWidth,f.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&t.uniform1i(ca.boneTextureHeight,
+f.skeleton.boneTextureHeight)}else f.skeleton&&f.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&t.uniformMatrix4fv(ca.boneGlobalMatrices,!1,f.skeleton.boneMatrices);if(Ca){c&&d.fog&&(K.fogColor.value=c.color,c instanceof THREE.Fog?(K.fogNear.value=c.near,K.fogFar.value=c.far):c instanceof THREE.FogExp2&&(K.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(db){var wa=!0,ba,ra,$,nb=0,ob=0,pb=0,Ka,Xa,cb,Ra,qb,da=Nb,rb=da.directional.colors,
+sb=da.directional.positions,tb=da.point.colors,ub=da.point.positions,ib=da.point.distances,jb=da.point.decays,vb=da.spot.colors,wb=da.spot.positions,Ib=da.spot.distances,xb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,yb=da.hemi.skyColors,zb=da.hemi.groundColors,Ab=da.hemi.positions,Za=0,La=0,ya=0,Sa=0,Bb=0,Cb=0,Db=0,fb=0,$a=0,ab=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)$=b[ba],$.onlyShadow||(Ka=$.color,Ra=$.intensity,qb=$.distance,$ instanceof THREE.AmbientLight?
+$.visible&&(nb+=Ka.r,ob+=Ka.g,pb+=Ka.b):$ instanceof THREE.DirectionalLight?(Bb+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),$a=3*Za,sb[$a+0]=ga.x,sb[$a+1]=ga.y,sb[$a+2]=ga.z,z(rb,$a,Ka,Ra),Za+=1)):$ instanceof THREE.PointLight?(Cb+=1,$.visible&&(ab=3*La,z(tb,ab,Ka,Ra),na.setFromMatrixPosition($.matrixWorld),ub[ab+0]=na.x,ub[ab+1]=na.y,ub[ab+2]=na.z,ib[La]=qb,jb[La]=0===$.distance?0:$.decay,La+=1)):$ instanceof THREE.SpotLight?
+(Db+=1,$.visible&&(Ea=3*ya,z(vb,Ea,Ka,Ra),ga.setFromMatrixPosition($.matrixWorld),wb[Ea+0]=ga.x,wb[Ea+1]=ga.y,wb[Ea+2]=ga.z,Ib[ya]=qb,na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),xb[Ea+0]=ga.x,xb[Ea+1]=ga.y,xb[Ea+2]=ga.z,Jb[ya]=Math.cos($.angle),Kb[ya]=$.exponent,Lb[ya]=0===$.distance?0:$.decay,ya+=1)):$ instanceof THREE.HemisphereLight&&(fb+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),ga.normalize(),Ta=3*Sa,Ab[Ta+0]=ga.x,Ab[Ta+1]=ga.y,Ab[Ta+2]=ga.z,Xa=$.color,
+cb=$.groundColor,z(yb,Ta,Xa,Ra),z(zb,Ta,cb,Ra),Sa+=1)));ba=3*Za;for(ra=Math.max(rb.length,3*Bb);ba<ra;ba++)rb[ba]=0;ba=3*La;for(ra=Math.max(tb.length,3*Cb);ba<ra;ba++)tb[ba]=0;ba=3*ya;for(ra=Math.max(vb.length,3*Db);ba<ra;ba++)vb[ba]=0;ba=3*Sa;for(ra=Math.max(yb.length,3*fb);ba<ra;ba++)yb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*fb);ba<ra;ba++)zb[ba]=0;da.directional.length=Za;da.point.length=La;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=nb;da.ambient[1]=ob;da.ambient[2]=pb;db=!1}if(wa){var ka=
+Nb;K.ambientLightColor.value=ka.ambient;K.directionalLightColor.value=ka.directional.colors;K.directionalLightDirection.value=ka.directional.positions;K.pointLightColor.value=ka.point.colors;K.pointLightPosition.value=ka.point.positions;K.pointLightDistance.value=ka.point.distances;K.pointLightDecay.value=ka.point.decays;K.spotLightColor.value=ka.spot.colors;K.spotLightPosition.value=ka.spot.positions;K.spotLightDistance.value=ka.spot.distances;K.spotLightDirection.value=ka.spot.directions;K.spotLightAngleCos.value=
 ka.spot.anglesCos;K.spotLightExponent.value=ka.spot.exponents;K.spotLightDecay.value=ka.spot.decays;K.hemisphereLightSkyColor.value=ka.hemi.skyColors;K.hemisphereLightGroundColor.value=ka.hemi.groundColors;K.hemisphereLightDirection.value=ka.hemi.positions;w(K,!0)}else w(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){K.opacity.value=d.opacity;K.diffuse.value=d.color;K.map.value=d.map;K.specularMap.value=d.specularMap;K.alphaMap.value=
 ka.spot.anglesCos;K.spotLightExponent.value=ka.spot.exponents;K.spotLightDecay.value=ka.spot.decays;K.hemisphereLightSkyColor.value=ka.hemi.skyColors;K.hemisphereLightGroundColor.value=ka.hemi.groundColors;K.hemisphereLightDirection.value=ka.hemi.positions;w(K,!0)}else w(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){K.opacity.value=d.opacity;K.diffuse.value=d.color;K.map.value=d.map;K.specularMap.value=d.specularMap;K.alphaMap.value=
-d.alphaMap;d.bumpMap&&(K.bumpMap.value=d.bumpMap,K.bumpScale.value=d.bumpScale);d.normalMap&&(K.normalMap.value=d.normalMap,K.normalScale.value.copy(d.normalScale));var za;d.map?za=d.map:d.specularMap?za=d.specularMap:d.normalMap?za=d.normalMap:d.bumpMap?za=d.bumpMap:d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Nb=za.offset,Ob=za.repeat;K.offsetRepeat.value.set(Nb.x,Nb.y,Ob.x,Ob.y)}K.envMap.value=d.envMap;K.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?
+d.alphaMap;d.bumpMap&&(K.bumpMap.value=d.bumpMap,K.bumpScale.value=d.bumpScale);d.normalMap&&(K.normalMap.value=d.normalMap,K.normalScale.value.copy(d.normalScale));var za;d.map?za=d.map:d.specularMap?za=d.specularMap:d.normalMap?za=d.normalMap:d.bumpMap?za=d.bumpMap:d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Ob=za.offset,Pb=za.repeat;K.offsetRepeat.value.set(Ob.x,Ob.y,Pb.x,Pb.y)}K.envMap.value=d.envMap;K.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?
 1:-1;K.reflectivity.value=d.reflectivity;K.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)K.diffuse.value=d.color,K.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)K.diffuse.value=d.color,K.opacity.value=d.opacity,K.dashSize.value=d.dashSize,K.totalSize.value=d.dashSize+d.gapSize,K.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(K.psColor.value=d.color,K.opacity.value=d.opacity,K.size.value=d.size,K.scale.value=B.height/
 1:-1;K.reflectivity.value=d.reflectivity;K.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)K.diffuse.value=d.color,K.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)K.diffuse.value=d.color,K.opacity.value=d.opacity,K.dashSize.value=d.dashSize,K.totalSize.value=d.dashSize+d.gapSize,K.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(K.psColor.value=d.color,K.opacity.value=d.opacity,K.size.value=d.size,K.scale.value=B.height/
-2,K.map.value=d.map,null!==d.map){var Pb=d.map.offset,Qb=d.map.repeat;K.offsetRepeat.value.set(Pb.x,Pb.y,Qb.x,Qb.y)}}else d instanceof THREE.MeshPhongMaterial?(K.shininess.value=d.shininess,K.emissive.value=d.emissive,K.specular.value=d.specular,K.lightMap.value=d.lightMap,K.lightMapIntensity.value=d.lightMapIntensity,K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity,K.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?K.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?
-(K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(K.mNear.value=a.near,K.mFar.value=a.far,K.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(K.opacity.value=d.opacity);if(f.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Va=0,Db=0,Zb=b.length;Db<Zb;Db++){var Aa=b[Db];Aa.castShadow&&(Aa instanceof THREE.SpotLight||Aa instanceof THREE.DirectionalLight&&!Aa.shadowCascade)&&(K.shadowMap.value[Va]=Aa.shadowMap,K.shadowMapSize.value[Va]=
-Aa.shadowMapSize,K.shadowMatrix.value[Va]=Aa.shadowMatrix,K.shadowDarkness.value[Va]=Aa.shadowDarkness,K.shadowBias.value[Va]=Aa.shadowBias,Va++)}for(var Eb=p.uniformsList,sa,Na,ta,hb=0,$b=Eb.length;hb<$b;hb++){var X=Eb[hb][0];if(!1!==X.needsUpdate){var Rb=X.type,O=X.value,Y=Eb[hb][1];switch(Rb){case "1i":t.uniform1i(Y,O);break;case "1f":t.uniform1f(Y,O);break;case "2f":t.uniform2f(Y,O[0],O[1]);break;case "3f":t.uniform3f(Y,O[0],O[1],O[2]);break;case "4f":t.uniform4f(Y,O[0],O[1],O[2],O[3]);break;
+2,K.map.value=d.map,null!==d.map){var Qb=d.map.offset,Rb=d.map.repeat;K.offsetRepeat.value.set(Qb.x,Qb.y,Rb.x,Rb.y)}}else d instanceof THREE.MeshPhongMaterial?(K.shininess.value=d.shininess,K.emissive.value=d.emissive,K.specular.value=d.specular,K.lightMap.value=d.lightMap,K.lightMapIntensity.value=d.lightMapIntensity,K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity,K.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?K.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?
+(K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(K.mNear.value=a.near,K.mFar.value=a.far,K.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(K.opacity.value=d.opacity);if(f.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Ua=0,Eb=0,Mb=b.length;Eb<Mb;Eb++){var Aa=b[Eb];Aa.castShadow&&(Aa instanceof THREE.SpotLight||Aa instanceof THREE.DirectionalLight&&!Aa.shadowCascade)&&(K.shadowMap.value[Ua]=Aa.shadowMap,K.shadowMapSize.value[Ua]=
+Aa.shadowMapSize,K.shadowMatrix.value[Ua]=Aa.shadowMatrix,K.shadowDarkness.value[Ua]=Aa.shadowDarkness,K.shadowBias.value[Ua]=Aa.shadowBias,Ua++)}for(var Fb=p.uniformsList,sa,Ma,ta,gb=0,$b=Fb.length;gb<$b;gb++){var X=Fb[gb][0];if(!1!==X.needsUpdate){var Sb=X.type,O=X.value,Y=Fb[gb][1];switch(Sb){case "1i":t.uniform1i(Y,O);break;case "1f":t.uniform1f(Y,O);break;case "2f":t.uniform2f(Y,O[0],O[1]);break;case "3f":t.uniform3f(Y,O[0],O[1],O[2]);break;case "4f":t.uniform4f(Y,O[0],O[1],O[2],O[3]);break;
 case "1iv":t.uniform1iv(Y,O);break;case "3iv":t.uniform3iv(Y,O);break;case "1fv":t.uniform1fv(Y,O);break;case "2fv":t.uniform2fv(Y,O);break;case "3fv":t.uniform3fv(Y,O);break;case "4fv":t.uniform4fv(Y,O);break;case "Matrix3fv":t.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":t.uniformMatrix4fv(Y,!1,O);break;case "i":t.uniform1i(Y,O);break;case "f":t.uniform1f(Y,O);break;case "v2":t.uniform2f(Y,O.x,O.y);break;case "v3":t.uniform3f(Y,O.x,O.y,O.z);break;case "v4":t.uniform4f(Y,O.x,O.y,O.z,O.w);break;
 case "1iv":t.uniform1iv(Y,O);break;case "3iv":t.uniform3iv(Y,O);break;case "1fv":t.uniform1fv(Y,O);break;case "2fv":t.uniform2fv(Y,O);break;case "3fv":t.uniform3fv(Y,O);break;case "4fv":t.uniform4fv(Y,O);break;case "Matrix3fv":t.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":t.uniformMatrix4fv(Y,!1,O);break;case "i":t.uniform1i(Y,O);break;case "f":t.uniform1f(Y,O);break;case "v2":t.uniform2f(Y,O.x,O.y);break;case "v3":t.uniform3f(Y,O.x,O.y,O.z);break;case "v4":t.uniform4f(Y,O.x,O.y,O.z,O.w);break;
 case "c":t.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":t.uniform1iv(Y,O);break;case "iv":t.uniform3iv(Y,O);break;case "fv1":t.uniform1fv(Y,O);break;case "fv":t.uniform3fv(Y,O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,qa=O.length;W<qa;W++)ta=2*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y;t.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(qa=O.length;W<qa;W++)ta=3*W,X._array[ta+0]=O[W].x,X._array[ta+
 case "c":t.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":t.uniform1iv(Y,O);break;case "iv":t.uniform3iv(Y,O);break;case "fv1":t.uniform1fv(Y,O);break;case "fv":t.uniform3fv(Y,O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,qa=O.length;W<qa;W++)ta=2*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y;t.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(qa=O.length;W<qa;W++)ta=3*W,X._array[ta+0]=O[W].x,X._array[ta+
 1]=O[W].y,X._array[ta+2]=O[W].z;t.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(qa=O.length;W<qa;W++)ta=4*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z,X._array[ta+3]=O[W].w;t.uniform4fv(Y,X._array);break;case "m3":t.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,9*W);t.uniformMatrix3fv(Y,!1,
 1]=O[W].y,X._array[ta+2]=O[W].z;t.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(qa=O.length;W<qa;W++)ta=4*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z,X._array[ta+3]=O[W].w;t.uniform4fv(Y,X._array);break;case "m3":t.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,9*W);t.uniformMatrix3fv(Y,!1,
-X._array);break;case "m4":t.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,16*W);t.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Na=x();t.uniform1i(Y,Na);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ha=sa,Sb=Na,ib=Z.get(ha);if(6===ha.image.length)if(ha.needsUpdate){ib.__image__webglTextureCube||(ha.addEventListener("dispose",
-e),ib.__image__webglTextureCube=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+Sb);N.bindTexture(t.TEXTURE_CUBE_MAP,ib.__image__webglTextureCube);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,ha.flipY);for(var Tb=ha instanceof THREE.CompressedTexture,Fb=ha.image[0]instanceof THREE.DataTexture,Oa=[],ia=0;6>ia;ia++)Oa[ia]=!ja.autoScaleCubemaps||Tb||Fb?Fb?ha.image[ia].image:ha.image[ia]:H(ha.image[ia],ac);var Ub=Oa[0],Vb=THREE.Math.isPowerOfTwo(Ub.width)&&THREE.Math.isPowerOfTwo(Ub.height),Fa=F(ha.format),
-Gb=F(ha.type);v(t.TEXTURE_CUBE_MAP,ha,Vb);for(ia=0;6>ia;ia++)if(Tb)for(var Pa,Wb=Oa[ia].mipmaps,bb=0,bc=Wb.length;bb<bc;bb++)Pa=Wb[bb],ha.format!==THREE.RGBAFormat&&ha.format!==THREE.RGBFormat?-1<Xb().indexOf(Fa)?N.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Pa.width,Pa.height,0,Pa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Pa.width,Pa.height,0,Fa,Gb,Pa.data);
-else Fb?N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Oa[ia].width,Oa[ia].height,0,Fa,Gb,Oa[ia].data):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Fa,Gb,Oa[ia]);ha.generateMipmaps&&Vb&&t.generateMipmap(t.TEXTURE_CUBE_MAP);ha.needsUpdate=!1;if(ha.onUpdate)ha.onUpdate(ha)}else N.activeTexture(t.TEXTURE0+Sb),N.bindTexture(t.TEXTURE_CUBE_MAP,ib.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;N.activeTexture(t.TEXTURE0+Na);N.bindTexture(t.TEXTURE_CUBE_MAP,
-Z.get(cc).__webglTexture)}else ja.setTexture(sa,Na);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=x();t.uniform1iv(Y,X._array);W=0;for(qa=X.value.length;W<qa;W++)sa=X.value[W],Na=X._array[W],sa&&ja.setTexture(sa,Na);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Rb)}}}}t.uniformMatrix4fv(ca.modelViewMatrix,!1,f._modelViewMatrix.elements);ca.normalMatrix&&t.uniformMatrix3fv(ca.normalMatrix,!1,f._normalMatrix.elements);null!==
+X._array);break;case "m4":t.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,16*W);t.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Ma=x();t.uniform1i(Y,Ma);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ha=sa,Tb=Ma,hb=Z.get(ha);if(6===ha.image.length)if(ha.needsUpdate){hb.__image__webglTextureCube||(ha.addEventListener("dispose",
+e),hb.__image__webglTextureCube=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+Tb);N.bindTexture(t.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,ha.flipY);for(var Ub=ha instanceof THREE.CompressedTexture,Gb=ha.image[0]instanceof THREE.DataTexture,Na=[],ia=0;6>ia;ia++)Na[ia]=!ja.autoScaleCubemaps||Ub||Gb?Gb?ha.image[ia].image:ha.image[ia]:H(ha.image[ia],ac);var Vb=Na[0],Wb=THREE.Math.isPowerOfTwo(Vb.width)&&THREE.Math.isPowerOfTwo(Vb.height),Fa=F(ha.format),
+Hb=F(ha.type);v(t.TEXTURE_CUBE_MAP,ha,Wb);for(ia=0;6>ia;ia++)if(Ub)for(var Oa,Xb=Na[ia].mipmaps,bb=0,bc=Xb.length;bb<bc;bb++)Oa=Xb[bb],ha.format!==THREE.RGBAFormat&&ha.format!==THREE.RGBFormat?-1<Yb().indexOf(Fa)?N.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Oa.width,Oa.height,0,Oa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Oa.width,Oa.height,0,Fa,Hb,Oa.data);
+else Gb?N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Na[ia].width,Na[ia].height,0,Fa,Hb,Na[ia].data):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Fa,Hb,Na[ia]);ha.generateMipmaps&&Wb&&t.generateMipmap(t.TEXTURE_CUBE_MAP);ha.needsUpdate=!1;if(ha.onUpdate)ha.onUpdate(ha)}else N.activeTexture(t.TEXTURE0+Tb),N.bindTexture(t.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;N.activeTexture(t.TEXTURE0+Ma);N.bindTexture(t.TEXTURE_CUBE_MAP,
+Z.get(cc).__webglTexture)}else ja.setTexture(sa,Ma);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=x();t.uniform1iv(Y,X._array);W=0;for(qa=X.value.length;W<qa;W++)sa=X.value[W],Ma=X._array[W],sa&&ja.setTexture(sa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Sb)}}}}t.uniformMatrix4fv(ca.modelViewMatrix,!1,f._modelViewMatrix.elements);ca.normalMatrix&&t.uniformMatrix3fv(ca.normalMatrix,!1,f._normalMatrix.elements);null!==
 ca.modelMatrix&&t.uniformMatrix4fv(ca.modelMatrix,!1,f.matrixWorld.elements);return Ya}function w(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=
 ca.modelMatrix&&t.uniformMatrix4fv(ca.modelMatrix,!1,f.matrixWorld.elements);return Ya}function w(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=
-b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function x(){var a=fb;a>=cb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+cb);fb+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function v(a,b,c){c?(t.texParameteri(a,t.TEXTURE_WRAP_S,F(b.wrapS)),t.texParameteri(a,t.TEXTURE_WRAP_T,F(b.wrapT)),
+b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function x(){var a=eb;a>=cb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+cb);eb+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function v(a,b,c){c?(t.texParameteri(a,t.TEXTURE_WRAP_S,F(b.wrapS)),t.texParameteri(a,t.TEXTURE_WRAP_T,F(b.wrapT)),
 t.texParameteri(a,t.TEXTURE_MAG_FILTER,F(b.magFilter)),t.texParameteri(a,t.TEXTURE_MIN_FILTER,F(b.minFilter))):(t.texParameteri(a,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(a,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),t.texParameteri(a,t.TEXTURE_MAG_FILTER,D(b.magFilter)),
 t.texParameteri(a,t.TEXTURE_MAG_FILTER,F(b.magFilter)),t.texParameteri(a,t.TEXTURE_MIN_FILTER,F(b.minFilter))):(t.texParameteri(a,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(a,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),t.texParameteri(a,t.TEXTURE_MAG_FILTER,D(b.magFilter)),
 t.texParameteri(a,t.TEXTURE_MIN_FILTER,D(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||Z.get(b).__currentAnisotropy)&&(t.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
 t.texParameteri(a,t.TEXTURE_MIN_FILTER,D(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||Z.get(b).__currentAnisotropy)&&(t.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
 ja.getMaxAnisotropy())),Z.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function I(a,b,c){t.bindFramebuffer(t.FRAMEBUFFER,a);
 ja.getMaxAnisotropy())),Z.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function I(a,b,c){t.bindFramebuffer(t.FRAMEBUFFER,a);
@@ -538,13 +538,13 @@ if(a===THREE.LuminanceAlphaFormat)return t.LUMINANCE_ALPHA;if(a===THREE.AddEquat
 if(a===THREE.DstAlphaFactor)return t.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return t.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return t.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return t.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return t.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
 if(a===THREE.DstAlphaFactor)return t.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return t.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return t.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return t.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return t.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
 if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
 if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
 if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var B=void 0!==a.canvas?a.canvas:document.createElement("canvas"),C=void 0!==a.context?a.context:null,S=B.width,G=B.height,A=1,E=void 0!==a.precision?a.precision:"highp",J=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,Q=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?
 if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var B=void 0!==a.canvas?a.canvas:document.createElement("canvas"),C=void 0!==a.context?a.context:null,S=B.width,G=B.height,A=1,E=void 0!==a.precision?a.precision:"highp",J=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,Q=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?
-a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,aa=new THREE.Color(0),ea=0,fa=[],la=[],oa=[],Ba=[],Ga=[],Ha=[],Qa=[];this.domElement=B;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ja=this,va=[],kb=null,ua=null,Xa=-1,xa="",Wa=null,fb=0,Ia=0,Ja=0,Ca=B.width,wa=
-B.height,db=0,jb=0,Ra=new THREE.Frustum,Ka=new THREE.Matrix4,na=new THREE.Vector3,ga=new THREE.Vector3,eb=!0,Mb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},Da={programs:0,geometries:0,textures:0},P={calls:0,vertices:0,faces:0,points:0};this.info={render:P,memory:Da,
-programs:va};var t;try{a={alpha:J,depth:M,stencil:R,antialias:U,premultipliedAlpha:Q,preserveDrawingBuffer:T};t=C||B.getContext("webgl",a)||B.getContext("experimental-webgl",a);if(null===t){if(null!==B.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}B.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();Z.clear()},!1)}catch(Hb){console.error("THREE.WebGLRenderer: "+Hb)}var N=new THREE.WebGLState(t,
+a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,aa=new THREE.Color(0),ea=0,fa=[],la=[],oa=[],Ba=[],Ga=[],Ha=[],Pa=[];this.domElement=B;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ja=this,va=[],kb=null,ua=null,Wa=-1,xa="",Va=null,eb=0,Ia=0,Ja=0,Ca=B.width,wa=
+B.height,ib=0,jb=0,Xa=new THREE.Frustum,Qa=new THREE.Matrix4,na=new THREE.Vector3,ga=new THREE.Vector3,db=!0,Nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},Da={programs:0,geometries:0,textures:0},P={calls:0,vertices:0,faces:0,points:0};this.info={render:P,memory:Da,
+programs:va};var t;try{a={alpha:J,depth:M,stencil:R,antialias:U,premultipliedAlpha:Q,preserveDrawingBuffer:T};t=C||B.getContext("webgl",a)||B.getContext("experimental-webgl",a);if(null===t){if(null!==B.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}B.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();Z.clear()},!1)}catch(Ib){console.error("THREE.WebGLRenderer: "+Ib)}var N=new THREE.WebGLState(t,
 F);void 0===t.getShaderPrecisionFormat&&(t.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var Z=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(t,Z,this.info),V=new THREE.WebGLExtensions(t);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);
 F);void 0===t.getShaderPrecisionFormat&&(t.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var Z=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(t,Z,this.info),V=new THREE.WebGLExtensions(t);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);
-L&&V.get("EXT_frag_depth");c();this.context=t;this.extensions=V;this.state=N;var ma=new THREE.WebGLShadowMap(this,fa,pa);this.shadowMap=ma;var cb=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),C=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ib=t.getParameter(t.MAX_TEXTURE_SIZE),ac=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),mb=0<C,lb=mb&&V.get("OES_texture_float"),Jb=V.get("ANGLE_instanced_arrays"),J=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),C=t.getShaderPrecisionFormat(t.VERTEX_SHADER,
-t.MEDIUM_FLOAT),M=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT);a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT);var Xb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=t.getParameter(t.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),J=0<J.precision&&0<M.precision,C=0<C.precision&&0<a.precision;"highp"!==E||J||(C?(E="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):
-(E="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==E||C||(E="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Kb=new THREE.SpritePlugin(this,Ha),Lb=new THREE.LensFlarePlugin(this,Qa);this.getContext=function(){return t};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return mb};this.supportsInstancedArrays=function(){return Jb};this.supportsFloatTextures=
+L&&V.get("EXT_frag_depth");c();this.context=t;this.extensions=V;this.state=N;var ma=new THREE.WebGLShadowMap(this,fa,pa);this.shadowMap=ma;var cb=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),C=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jb=t.getParameter(t.MAX_TEXTURE_SIZE),ac=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),mb=0<C,lb=mb&&V.get("OES_texture_float"),Kb=V.get("ANGLE_instanced_arrays"),J=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),C=t.getShaderPrecisionFormat(t.VERTEX_SHADER,
+t.MEDIUM_FLOAT),M=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT);a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT);var Yb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=t.getParameter(t.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),J=0<J.precision&&0<M.precision,C=0<C.precision&&0<a.precision;"highp"!==E||J||(C?(E="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):
+(E="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==E||C||(E="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Lb=new THREE.SpritePlugin(this,Ha),Mb=new THREE.LensFlarePlugin(this,Pa);this.getContext=function(){return t};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return mb};this.supportsInstancedArrays=function(){return Kb};this.supportsFloatTextures=
 function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;
 function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;
 return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?t.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return E};this.getPixelRatio=function(){return A};this.setPixelRatio=function(a){void 0!==a&&(A=a)};this.getSize=function(){return{width:S,height:G}};this.setSize=function(a,b,c){S=a;G=b;B.width=a*A;B.height=b*A;!1!==c&&(B.style.width=a+"px",B.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,
 return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?t.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return E};this.getPixelRatio=function(){return A};this.setPixelRatio=function(a){void 0!==a&&(A=a)};this.getSize=function(){return{width:S,height:G}};this.setSize=function(a,b,c){S=a;G=b;B.width=a*A;B.height=b*A;!1!==c&&(B.style.width=a+"px",B.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,
 b,c,d){Ia=a*A;Ja=b*A;Ca=c*A;wa=d*A;t.viewport(Ia,Ja,Ca,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*A,b*A,c*A,d*A)};this.enableScissorTest=function(a){N.set(t.SCISSOR_TEST,a)};this.getClearColor=function(){return aa};this.setClearColor=function(a,c){aa.set(a);ea=void 0!==c?c:1;b(aa.r,aa.g,aa.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b(aa.r,aa.g,aa.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=t.COLOR_BUFFER_BIT;if(void 0===b||b)d|=t.DEPTH_BUFFER_BIT;
 b,c,d){Ia=a*A;Ja=b*A;Ca=c*A;wa=d*A;t.viewport(Ia,Ja,Ca,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*A,b*A,c*A,d*A)};this.enableScissorTest=function(a){N.set(t.SCISSOR_TEST,a)};this.getClearColor=function(){return aa};this.setClearColor=function(a,c){aa.set(a);ea=void 0!==c?c:1;b(aa.r,aa.g,aa.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b(aa.r,aa.g,aa.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=t.COLOR_BUFFER_BIT;if(void 0===b||b)d|=t.DEPTH_BUFFER_BIT;
@@ -560,19 +560,19 @@ P.faces+=n[f].count/3}}}else if(n=g.offsets,0===n.length){e&&k(d,a,g,0);d=g.attr
 THREE.Line)if(e=e instanceof THREE.LineSegments?t.LINES:t.LINE_STRIP,N.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*A),m=g.attributes.index)if(n=pa.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=t.UNSIGNED_INT,l=4):(h=t.UNSIGNED_SHORT,l=2),c=g.offsets,0===c.length)b&&(k(d,a,g,0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(e,m.array.length,h,0),P.calls++,P.vertices+=m.array.length;else for(1<c.length&&(b=!0),m=0,f=c.length;m<f;m++)p=c[m].index,
 THREE.Line)if(e=e instanceof THREE.LineSegments?t.LINES:t.LINE_STRIP,N.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*A),m=g.attributes.index)if(n=pa.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=t.UNSIGNED_INT,l=4):(h=t.UNSIGNED_SHORT,l=2),c=g.offsets,0===c.length)b&&(k(d,a,g,0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(e,m.array.length,h,0),P.calls++,P.vertices+=m.array.length;else for(1<c.length&&(b=!0),m=0,f=c.length;m<f;m++)p=c[m].index,
 b&&(k(d,a,g,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(e,c[m].count,h,c[m].start*l),P.calls++,P.vertices+=c[m].count;else if(b&&k(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)t.drawArrays(e,0,d.array.length/3),P.calls++,P.vertices+=d.array.length/3;else for(m=0,f=c.length;m<f;m++)t.drawArrays(e,c[m].index,c[m].count),P.calls++,P.vertices+=c[m].count;else if(e instanceof THREE.PointCloud)if(c=b,b=t.POINTS,m=g.attributes.index)if(n=pa.getAttributeBuffer(m),m.array instanceof
 b&&(k(d,a,g,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(e,c[m].count,h,c[m].start*l),P.calls++,P.vertices+=c[m].count;else if(b&&k(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)t.drawArrays(e,0,d.array.length/3),P.calls++,P.vertices+=d.array.length/3;else for(m=0,f=c.length;m<f;m++)t.drawArrays(e,c[m].index,c[m].count),P.calls++,P.vertices+=c[m].count;else if(e instanceof THREE.PointCloud)if(c=b,b=t.POINTS,m=g.attributes.index)if(n=pa.getAttributeBuffer(m),m.array instanceof
 Uint32Array&&V.get("OES_element_index_uint")?(h=t.UNSIGNED_INT,l=4):(h=t.UNSIGNED_SHORT,l=2),e=g.offsets,0===e.length)c&&(k(d,a,g,0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,m.array.length,h,0),P.calls++,P.points+=m.array.length;else for(1<e.length&&(c=!0),m=0,f=e.length;m<f;m++)p=e[m].index,c&&(k(d,a,g,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,e[m].count,h,e[m].start*l),P.calls++,P.points+=e[m].count;else if(c&&k(d,a,g,0),d=g.attributes.position,e=g.offsets,0===
 Uint32Array&&V.get("OES_element_index_uint")?(h=t.UNSIGNED_INT,l=4):(h=t.UNSIGNED_SHORT,l=2),e=g.offsets,0===e.length)c&&(k(d,a,g,0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,m.array.length,h,0),P.calls++,P.points+=m.array.length;else for(1<e.length&&(c=!0),m=0,f=e.length;m<f;m++)p=e[m].index,c&&(k(d,a,g,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,e[m].count,h,e[m].start*l),P.calls++,P.points+=e[m].count;else if(c&&k(d,a,g,0),d=g.attributes.position,e=g.offsets,0===
-e.length)t.drawArrays(b,0,d.array.length/3),P.calls++,P.points+=d.array.length/3;else for(m=0,f=e.length;m<f;m++)t.drawArrays(b,e[m].index,e[m].count),P.calls++,P.points+=e[m].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;xa="";Xa=-1;Wa=null;eb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);
-Ka.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ra.setFromMatrix(Ka);fa.length=0;la.length=0;oa.length=0;Ba.length=0;Ga.length=0;Ha.length=0;Qa.length=0;p(a);!0===ja.sortObjects&&(la.sort(l),oa.sort(m));pa.update(la);pa.update(oa);ma.render(a,b);P.calls=0;P.vertices=0;P.faces=0;P.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,n(la,b,fa,e,d),n(oa,b,fa,e,d),q(Ba,b,fa,
-e,d),q(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),n(la,b,fa,e,null),q(Ba,b,fa,e,null),n(oa,b,fa,e,null),q(Ga,b,fa,e,null));Kb.render(a,b);Lb.render(a,b,db,jb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(t.TEXTURE_CUBE_MAP,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),N.bindTexture(t.TEXTURE_CUBE_MAP,null)):(N.bindTexture(t.TEXTURE_2D,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),
-N.bindTexture(t.TEXTURE_2D,null)));N.setDepthTest(!0);N.setDepthWrite(!0);N.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){r(d);var g=u(a,b,c,d,e);xa="";e.immediateRenderCallback?e.immediateRenderCallback(g,t,Ra):e.render(function(a){ja.renderBufferImmediate(a,g,d)})};var Yb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};
-this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?N.disable(t.CULL_FACE):(b===THREE.FrontFaceDirectionCW?t.frontFace(t.CW):t.frontFace(t.CCW),a===THREE.CullFaceBack?t.cullFace(t.BACK):a===THREE.CullFaceFront?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK),N.enable(t.CULL_FACE))};this.setMaterialFaces=s;this.uploadTexture=function(a,b){var c=Z.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=t.createTexture(),Da.textures++);
-N.activeTexture(t.TEXTURE0+b);N.bindTexture(t.TEXTURE_2D,c.__webglTexture);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,a.flipY);t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);t.pixelStorei(t.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Ib);var d=a.image,c=THREE.Math.isPowerOfTwo(d.width)&&THREE.Math.isPowerOfTwo(d.height),g=F(a.format),f=F(a.type);v(t.TEXTURE_2D,a,c);var h=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<h.length&&c){for(var k=0,l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,
-k,g,d.width,d.height,0,g,f,d.data);a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,g,d.width,d.height,0,g,f,d.data);else if(a instanceof THREE.CompressedTexture)for(k=0,l=h.length;k<l;k++)d=h[k],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Xb().indexOf(g)?N.compressedTexImage2D(t.TEXTURE_2D,k,g,d.width,d.height,0,d.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):N.texImage2D(t.TEXTURE_2D,k,g,d.width,d.height,
-0,g,f,d.data);else if(0<h.length&&c){k=0;for(l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,g,g,f,d);a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,g,g,f,a.image);a.generateMipmaps&&c&&t.generateMipmap(t.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){a.image&&!1!==a.image.complete&&!0===a.__webglInit&&void 0===Z.get(a).__webglInit&&(a.needsUpdate=!0);if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",
+e.length)t.drawArrays(b,0,d.array.length/3),P.calls++,P.points+=d.array.length/3;else for(m=0,f=e.length;m<f;m++)t.drawArrays(b,e[m].index,e[m].count),P.calls++,P.points+=e[m].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;xa="";Wa=-1;Va=null;db=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);
+Qa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Xa.setFromMatrix(Qa);fa.length=0;la.length=0;oa.length=0;Ba.length=0;Ga.length=0;Ha.length=0;Pa.length=0;p(a);!0===ja.sortObjects&&(la.sort(l),oa.sort(m));pa.update(la);pa.update(oa);ma.render(a,b);P.calls=0;P.vertices=0;P.faces=0;P.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,n(la,b,fa,e,d),n(oa,b,fa,e,d),q(Ba,b,fa,
+e,d),q(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),n(la,b,fa,e,null),q(Ba,b,fa,e,null),n(oa,b,fa,e,null),q(Ga,b,fa,e,null));Lb.render(a,b);Mb.render(a,b,ib,jb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(t.TEXTURE_CUBE_MAP,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),N.bindTexture(t.TEXTURE_CUBE_MAP,null)):(N.bindTexture(t.TEXTURE_2D,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),
+N.bindTexture(t.TEXTURE_2D,null)));N.setDepthTest(!0);N.setDepthWrite(!0);N.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){r(d);var g=u(a,b,c,d,e);xa="";e.render(function(a){ja.renderBufferImmediate(a,g,d)})};var Zb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===
+THREE.CullFaceNone?N.disable(t.CULL_FACE):(b===THREE.FrontFaceDirectionCW?t.frontFace(t.CW):t.frontFace(t.CCW),a===THREE.CullFaceBack?t.cullFace(t.BACK):a===THREE.CullFaceFront?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK),N.enable(t.CULL_FACE))};this.setMaterialFaces=s;this.uploadTexture=function(a,b){var c=Z.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+b);N.bindTexture(t.TEXTURE_2D,
+c.__webglTexture);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,a.flipY);t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);t.pixelStorei(t.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Jb);var d=a.image,c=THREE.Math.isPowerOfTwo(d.width)&&THREE.Math.isPowerOfTwo(d.height),g=F(a.format),f=F(a.type);v(t.TEXTURE_2D,a,c);var h=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<h.length&&c){for(var k=0,l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,g,d.width,d.height,0,g,f,d.data);
+a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,g,d.width,d.height,0,g,f,d.data);else if(a instanceof THREE.CompressedTexture)for(k=0,l=h.length;k<l;k++)d=h[k],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Yb().indexOf(g)?N.compressedTexImage2D(t.TEXTURE_2D,k,g,d.width,d.height,0,d.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):N.texImage2D(t.TEXTURE_2D,k,g,d.width,d.height,0,g,f,d.data);else if(0<h.length&&c){k=
+0;for(l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,g,g,f,d);a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,g,g,f,a.image);a.generateMipmaps&&c&&t.generateMipmap(t.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){a.image&&!1!==a.image.complete&&!0===a.__webglInit&&void 0===Z.get(a).__webglInit&&(a.needsUpdate=!0);if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",
 a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a):ja.uploadTexture(a,b)}else N.activeTexture(t.TEXTURE0+b),N.bindTexture(t.TEXTURE_2D,Z.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===Z.get(a).__webglFramebuffer){var c=Z.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=t.createTexture();
 a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a):ja.uploadTexture(a,b)}else N.activeTexture(t.TEXTURE0+b),N.bindTexture(t.TEXTURE_2D,Z.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===Z.get(a).__webglFramebuffer){var c=Z.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=t.createTexture();
 Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=F(a.format),g=F(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);v(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),I(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],
 Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=F(a.format),g=F(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);v(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),I(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],
 a);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=t.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:t.createRenderbuffer(),N.bindTexture(t.TEXTURE_2D,c.__webglTexture),v(t.TEXTURE_2D,a,d),N.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),I(c.__webglFramebuffer,a,t.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):
 a);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=t.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:t.createRenderbuffer(),N.bindTexture(t.TEXTURE_2D,c.__webglTexture),v(t.TEXTURE_2D,a,d),N.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),I(c.__webglFramebuffer,a,t.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):
 a.depthBuffer&&a.stencilBuffer&&t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?N.bindTexture(t.TEXTURE_CUBE_MAP,null):N.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=Z.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ia,e=Ja);
 a.depthBuffer&&a.stencilBuffer&&t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?N.bindTexture(t.TEXTURE_CUBE_MAP,null):N.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=Z.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ia,e=Ja);
-b!==ua&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),ua=b);db=c;jb=a};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(Z.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var f=!1;Z.get(a).__webglFramebuffer!==
+b!==ua&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),ua=b);ib=c;jb=a};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(Z.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var f=!1;Z.get(a).__webglFramebuffer!==
 ua&&(t.bindFramebuffer(t.FRAMEBUFFER,Z.get(a).__webglFramebuffer),f=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,g):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");f&&t.bindFramebuffer(t.FRAMEBUFFER,ua)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
 ua&&(t.bindFramebuffer(t.FRAMEBUFFER,Z.get(a).__webglFramebuffer),f=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,g):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");f&&t.bindFramebuffer(t.FRAMEBUFFER,ua)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
 this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
 this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
 ma.type=a}},shadowMapCullFace:{get:function(){return ma.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");ma.cullFace=a}},shadowMapDebug:{get:function(){return ma.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");ma.debug=a}},shadowMapCascade:{get:function(){return ma.cascade},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCascade is now .shadowMap.cascade.");ma.cascade=a}}})};
 ma.type=a}},shadowMapCullFace:{get:function(){return ma.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");ma.cullFace=a}},shadowMapDebug:{get:function(){return ma.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");ma.debug=a}},shadowMapCascade:{get:function(){return ma.cascade},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCascade is now .shadowMap.cascade.");ma.cascade=a}}})};