瀏覽代碼

Updated builds.

Mr.doob 10 年之前
父節點
當前提交
28fd68040c
共有 2 個文件被更改,包括 59 次插入63 次删除
  1. 15 19
      build/three.js
  2. 44 44
      build/three.min.js

+ 15 - 19
build/three.js

@@ -19987,13 +19987,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	var _supportsVertexTextures = _maxVertexTextures > 0;
 	var _supportsBoneTextures = _supportsVertexTextures && extensions.get( 'OES_texture_float' );
-	var _supportsInstancedArrays = extensions.get( 'ANGLE_instanced_arrays' );
-
-	//
-
-
-
-	//
 
 	var _maxPrecision = state.getMaxPrecision( _precision );
 
@@ -20029,18 +20022,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
-	this.supportsVertexTextures = function () {
-
-		return _supportsVertexTextures;
-
-	};
-
-	this.supportsInstancedArrays = function () {
-
-		return _supportsInstancedArrays;
-
-	};
-
 	this.getMaxAnisotropy = ( function () {
 
 		var value;
@@ -23356,6 +23337,21 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
+	this.supportsVertexTextures = function () {
+
+		return _supportsVertexTextures;
+
+	};
+
+	this.supportsInstancedArrays = function () {
+
+		console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' );
+		return extensions.get( 'ANGLE_instanced_arrays' );
+
+	};
+
+	//
+
 	this.initMaterial = function () {
 
 		console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );

+ 44 - 44
build/three.min.js

@@ -494,7 +494,7 @@ a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function l
 a instanceof THREE.Line||a instanceof THREE.PointCloud)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===Za.intersectsObject(a)){var b=a.material;if(!0===b.visible){!0===ma.sortObjects&&(ia.setFromMatrixPosition(a.matrixWorld),ia.applyProjection(Ja));var c=xa.update(a);if(b instanceof THREE.MeshFaceMaterial)for(var d=c.groups,e=b.materials,b=0,f=d.length;b<f;b++){var g=d[b],h=e[g.materialIndex];!0===h.visible&&l(a,c,h,ia.z,g)}else l(a,c,b,ia.z)}}a=a.children;b=0;for(f=
 a.length;b<f;b++)q(a[b])}}function s(a,b,c,d,e){for(var f=0,g=a.length;f<g;f++){var h=a[f],k=h.object,l=h.geometry,m=void 0===e?h.material:e,h=h.group;k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);ma.renderBufferDirect(b,c,d,l,m,k,h)}}function r(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g];k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);void 0===
 e&&(f=k.material);u(f);var l=x(b,c,d,f,k);Ia="";k.render(function(a){ma.renderBufferImmediate(a,l,f)})}}function u(a){a.side!==THREE.DoubleSide?K.enable(t.CULL_FACE):K.disable(t.CULL_FACE);K.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?K.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):K.setBlending(THREE.NoBlending);K.setDepthFunc(a.depthFunc);K.setDepthTest(a.depthTest);K.setDepthWrite(a.depthWrite);K.setColorWrite(a.colorWrite);
-K.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function x(a,b,c,d,e){var f,l,m,n;ib=0;var p=$.get(d);if(d.needsUpdate||!p.program){a:{for(var q=$.get(d),s=cc[d.type],r=0,x=0,u=0,z=0,O=0,A=b.length;O<A;O++){var D=b[O];D.onlyShadow||!1===D.visible||(D instanceof THREE.DirectionalLight&&r++,D instanceof THREE.PointLight&&x++,D instanceof THREE.SpotLight&&u++,D instanceof THREE.HemisphereLight&&z++)}f=r;l=x;m=u;n=z;for(var J,F=0,N=0,H=b.length;N<H;N++){var R=b[N];R.castShadow&&
+K.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function x(a,b,c,d,e){var f,l,m,n;ib=0;var p=$.get(d);if(d.needsUpdate||!p.program){a:{for(var q=$.get(d),s=bc[d.type],r=0,x=0,u=0,z=0,O=0,A=b.length;O<A;O++){var D=b[O];D.onlyShadow||!1===D.visible||(D instanceof THREE.DirectionalLight&&r++,D instanceof THREE.PointLight&&x++,D instanceof THREE.SpotLight&&u++,D instanceof THREE.HemisphereLight&&z++)}f=r;l=x;m=u;n=z;for(var J,F=0,N=0,H=b.length;N<H;N++){var R=b[N];R.castShadow&&
 (R instanceof THREE.SpotLight&&F++,R instanceof THREE.DirectionalLight&&F++)}J=F;var ga;if(pb&&e&&e.skeleton&&e.skeleton.useVertexTexture)ga=1024;else{var P=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),Q=Math.floor((P-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(Q=Math.min(e.skeleton.bones.length,Q),Q<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+Q+" (try OpenGL instead of ANGLE)"));ga=Q}var T=G;null!==d.precision&&
 (T=K.getMaxPrecision(d.precision),T!==d.precision&&console.warn("THREE.WebGLRenderer.initMaterial:",d.precision,"not supported, using",T,"instead."));var S={precision:T,supportsVertexTextures:qb,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:ta,skinning:d.skinning,maxBones:ga,useVertexTexture:pb&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:ma.maxMorphTargets,maxMorphNormals:ma.maxMorphNormals,maxDirLights:f,maxPointLights:l,maxSpotLights:m,maxHemiLights:n,maxShadows:J,shadowMapEnabled:na.enabled&&e.receiveShadow&&0<J,shadowMapType:na.type,shadowMapDebug:na.debug,
@@ -504,26 +504,26 @@ gb["morphTarget"+ka]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ka=d.nu
 !0);d.id!==Xa&&(-1===Xa&&(wa=!0),Xa=d.id,Aa=!0);if(Ha||a!==Wa)t.uniformMatrix4fv(ba.projectionMatrix,!1,a.projectionMatrix.elements),ta&&t.uniform1f(ba.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Wa&&(Wa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ba.cameraPosition&&(ia.setFromMatrixPosition(a.matrixWorld),t.uniform3f(ba.cameraPosition,ia.x,ia.y,ia.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof
 THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&void 0!==ba.viewMatrix&&t.uniformMatrix4fv(ba.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&void 0!==ba.bindMatrix&&t.uniformMatrix4fv(ba.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&void 0!==ba.bindMatrixInverse&&t.uniformMatrix4fv(ba.bindMatrixInverse,!1,e.bindMatrixInverse.elements),pb&&e.skeleton&&e.skeleton.useVertexTexture){if(void 0!==ba.boneTexture){var Pa=y();t.uniform1i(ba.boneTexture,
 Pa);ma.setTexture(e.skeleton.boneTexture,Pa)}void 0!==ba.boneTextureWidth&&t.uniform1i(ba.boneTextureWidth,e.skeleton.boneTextureWidth);void 0!==ba.boneTextureHeight&&t.uniform1i(ba.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&void 0!==ba.boneGlobalMatrices&&t.uniformMatrix4fv(ba.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(Aa){c&&d.fog&&(I.fogColor.value=c.color,c instanceof THREE.Fog?(I.fogNear.value=c.near,I.fogFar.value=c.far):c instanceof THREE.FogExp2&&
-(I.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(hb){var wa=!0,aa,pa,Y,Ja=0,rb=0,sb=0,Ka,Za,fb,Qa,tb,ca=Sb,ub=ca.directional.colors,vb=ca.directional.positions,wb=ca.point.colors,xb=ca.point.positions,mb=ca.point.distances,nb=ca.point.decays,yb=ca.spot.colors,zb=ca.spot.positions,Lb=ca.spot.distances,Ab=ca.spot.directions,Mb=ca.spot.anglesCos,Nb=ca.spot.exponents,Ob=ca.spot.decays,Bb=ca.hemi.skyColors,Cb=ca.hemi.groundColors,
+(I.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(hb){var wa=!0,aa,pa,Y,Ja=0,rb=0,sb=0,Ka,Za,fb,Qa,tb,ca=Rb,ub=ca.directional.colors,vb=ca.directional.positions,wb=ca.point.colors,xb=ca.point.positions,mb=ca.point.distances,nb=ca.point.decays,yb=ca.spot.colors,zb=ca.spot.positions,Lb=ca.spot.distances,Ab=ca.spot.directions,Mb=ca.spot.anglesCos,Nb=ca.spot.exponents,Ob=ca.spot.decays,Bb=ca.hemi.skyColors,Cb=ca.hemi.groundColors,
 Db=ca.hemi.positions,ab=0,La=0,ya=0,Ra=0,Eb=0,Fb=0,Gb=0,jb=0,bb=0,cb=0,Da=0,Sa=0;aa=0;for(pa=b.length;aa<pa;aa++)Y=b[aa],Y.onlyShadow||(Ka=Y.color,Qa=Y.intensity,tb=Y.distance,Y instanceof THREE.AmbientLight?Y.visible&&(Ja+=Ka.r,rb+=Ka.g,sb+=Ka.b):Y instanceof THREE.DirectionalLight?(Eb+=1,Y.visible&&(ea.setFromMatrixPosition(Y.matrixWorld),ia.setFromMatrixPosition(Y.target.matrixWorld),ea.sub(ia),ea.normalize(),bb=3*ab,vb[bb+0]=ea.x,vb[bb+1]=ea.y,vb[bb+2]=ea.z,w(ub,bb,Ka,Qa),ab+=1)):Y instanceof
 THREE.PointLight?(Fb+=1,Y.visible&&(cb=3*La,w(wb,cb,Ka,Qa),ia.setFromMatrixPosition(Y.matrixWorld),xb[cb+0]=ia.x,xb[cb+1]=ia.y,xb[cb+2]=ia.z,mb[La]=tb,nb[La]=0===Y.distance?0:Y.decay,La+=1)):Y instanceof THREE.SpotLight?(Gb+=1,Y.visible&&(Da=3*ya,w(yb,Da,Ka,Qa),ea.setFromMatrixPosition(Y.matrixWorld),zb[Da+0]=ea.x,zb[Da+1]=ea.y,zb[Da+2]=ea.z,Lb[ya]=tb,ia.setFromMatrixPosition(Y.target.matrixWorld),ea.sub(ia),ea.normalize(),Ab[Da+0]=ea.x,Ab[Da+1]=ea.y,Ab[Da+2]=ea.z,Mb[ya]=Math.cos(Y.angle),Nb[ya]=
 Y.exponent,Ob[ya]=0===Y.distance?0:Y.decay,ya+=1)):Y instanceof THREE.HemisphereLight&&(jb+=1,Y.visible&&(ea.setFromMatrixPosition(Y.matrixWorld),ea.normalize(),Sa=3*Ra,Db[Sa+0]=ea.x,Db[Sa+1]=ea.y,Db[Sa+2]=ea.z,Za=Y.color,fb=Y.groundColor,w(Bb,Sa,Za,Qa),w(Cb,Sa,fb,Qa),Ra+=1)));aa=3*ab;for(pa=Math.max(ub.length,3*Eb);aa<pa;aa++)ub[aa]=0;aa=3*La;for(pa=Math.max(wb.length,3*Fb);aa<pa;aa++)wb[aa]=0;aa=3*ya;for(pa=Math.max(yb.length,3*Gb);aa<pa;aa++)yb[aa]=0;aa=3*Ra;for(pa=Math.max(Bb.length,3*jb);aa<
-pa;aa++)Bb[aa]=0;aa=3*Ra;for(pa=Math.max(Cb.length,3*jb);aa<pa;aa++)Cb[aa]=0;ca.directional.length=ab;ca.point.length=La;ca.spot.length=ya;ca.hemi.length=Ra;ca.ambient[0]=Ja;ca.ambient[1]=rb;ca.ambient[2]=sb;hb=!1}if(wa){var ja=Sb;I.ambientLightColor.value=ja.ambient;I.directionalLightColor.value=ja.directional.colors;I.directionalLightDirection.value=ja.directional.positions;I.pointLightColor.value=ja.point.colors;I.pointLightPosition.value=ja.point.positions;I.pointLightDistance.value=ja.point.distances;
+pa;aa++)Bb[aa]=0;aa=3*Ra;for(pa=Math.max(Cb.length,3*jb);aa<pa;aa++)Cb[aa]=0;ca.directional.length=ab;ca.point.length=La;ca.spot.length=ya;ca.hemi.length=Ra;ca.ambient[0]=Ja;ca.ambient[1]=rb;ca.ambient[2]=sb;hb=!1}if(wa){var ja=Rb;I.ambientLightColor.value=ja.ambient;I.directionalLightColor.value=ja.directional.colors;I.directionalLightDirection.value=ja.directional.positions;I.pointLightColor.value=ja.point.colors;I.pointLightPosition.value=ja.point.positions;I.pointLightDistance.value=ja.point.distances;
 I.pointLightDecay.value=ja.point.decays;I.spotLightColor.value=ja.spot.colors;I.spotLightPosition.value=ja.spot.positions;I.spotLightDistance.value=ja.spot.distances;I.spotLightDirection.value=ja.spot.directions;I.spotLightAngleCos.value=ja.spot.anglesCos;I.spotLightExponent.value=ja.spot.exponents;I.spotLightDecay.value=ja.spot.decays;I.hemisphereLightSkyColor.value=ja.hemi.skyColors;I.hemisphereLightGroundColor.value=ja.hemi.groundColors;I.hemisphereLightDirection.value=ja.hemi.positions;v(I,!0)}else v(I,
 !1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){I.opacity.value=d.opacity;I.diffuse.value=d.color;I.map.value=d.map;I.specularMap.value=d.specularMap;I.alphaMap.value=d.alphaMap;d.bumpMap&&(I.bumpMap.value=d.bumpMap,I.bumpScale.value=d.bumpScale);d.normalMap&&(I.normalMap.value=d.normalMap,I.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 Tb=za.offset,Ub=za.repeat;I.offsetRepeat.value.set(Tb.x,Tb.y,Ub.x,Ub.y)}I.envMap.value=d.envMap;I.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;I.reflectivity.value=d.reflectivity;I.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)I.diffuse.value=d.color,I.opacity.value=
-d.opacity,I.dashSize.value=d.dashSize,I.totalSize.value=d.dashSize+d.gapSize,I.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(I.psColor.value=d.color,I.opacity.value=d.opacity,I.size.value=d.size,I.scale.value=C.height/2,I.map.value=d.map,null!==d.map){var Vb=d.map.offset,Wb=d.map.repeat;I.offsetRepeat.value.set(Vb.x,Vb.y,Wb.x,Wb.y)}}else d instanceof THREE.MeshPhongMaterial?(I.shininess.value=d.shininess,I.emissive.value=d.emissive,I.specular.value=d.specular,I.lightMap.value=
+d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Sb=za.offset,Tb=za.repeat;I.offsetRepeat.value.set(Sb.x,Sb.y,Tb.x,Tb.y)}I.envMap.value=d.envMap;I.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;I.reflectivity.value=d.reflectivity;I.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)I.diffuse.value=d.color,I.opacity.value=
+d.opacity,I.dashSize.value=d.dashSize,I.totalSize.value=d.dashSize+d.gapSize,I.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(I.psColor.value=d.color,I.opacity.value=d.opacity,I.size.value=d.size,I.scale.value=C.height/2,I.map.value=d.map,null!==d.map){var Ub=d.map.offset,Vb=d.map.repeat;I.offsetRepeat.value.set(Ub.x,Ub.y,Vb.x,Vb.y)}}else d instanceof THREE.MeshPhongMaterial?(I.shininess.value=d.shininess,I.emissive.value=d.emissive,I.specular.value=d.specular,I.lightMap.value=
 d.lightMap,I.lightMapIntensity.value=d.lightMapIntensity,I.aoMap.value=d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity,I.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?I.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?(I.aoMap.value=d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(I.mNear.value=a.near,I.mFar.value=a.far,I.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(I.opacity.value=d.opacity);if(e.receiveShadow&&
-!d._shadowPass&&I.shadowMatrix)for(var Ta=0,Hb=0,Pb=b.length;Hb<Pb;Hb++){var Ea=b[Hb];Ea.castShadow&&(Ea instanceof THREE.SpotLight||Ea instanceof THREE.DirectionalLight)&&(I.shadowMap.value[Ta]=Ea.shadowMap,I.shadowMapSize.value[Ta]=Ea.shadowMapSize,I.shadowMatrix.value[Ta]=Ea.shadowMatrix,I.shadowDarkness.value[Ta]=Ea.shadowDarkness,I.shadowBias.value[Ta]=Ea.shadowBias,Ta++)}for(var Ib=p.uniformsList,qa,Ma,kb=0,Qb=Ib.length;kb<Qb;kb++){var U=Ib[kb][0];if(!1!==U.needsUpdate){var Xb=U.type,M=U.value,
-W=Ib[kb][1];switch(Xb){case "1i":t.uniform1i(W,M);break;case "1f":t.uniform1f(W,M);break;case "2f":t.uniform2f(W,M[0],M[1]);break;case "3f":t.uniform3f(W,M[0],M[1],M[2]);break;case "4f":t.uniform4f(W,M[0],M[1],M[2],M[3]);break;case "1iv":t.uniform1iv(W,M);break;case "3iv":t.uniform3iv(W,M);break;case "1fv":t.uniform1fv(W,M);break;case "2fv":t.uniform2fv(W,M);break;case "3fv":t.uniform3fv(W,M);break;case "4fv":t.uniform4fv(W,M);break;case "Matrix3fv":t.uniformMatrix3fv(W,!1,M);break;case "Matrix4fv":t.uniformMatrix4fv(W,
+!d._shadowPass&&I.shadowMatrix)for(var Ta=0,Hb=0,Pb=b.length;Hb<Pb;Hb++){var Ea=b[Hb];Ea.castShadow&&(Ea instanceof THREE.SpotLight||Ea instanceof THREE.DirectionalLight)&&(I.shadowMap.value[Ta]=Ea.shadowMap,I.shadowMapSize.value[Ta]=Ea.shadowMapSize,I.shadowMatrix.value[Ta]=Ea.shadowMatrix,I.shadowDarkness.value[Ta]=Ea.shadowDarkness,I.shadowBias.value[Ta]=Ea.shadowBias,Ta++)}for(var Ib=p.uniformsList,qa,Ma,kb=0,Qb=Ib.length;kb<Qb;kb++){var U=Ib[kb][0];if(!1!==U.needsUpdate){var Wb=U.type,M=U.value,
+W=Ib[kb][1];switch(Wb){case "1i":t.uniform1i(W,M);break;case "1f":t.uniform1f(W,M);break;case "2f":t.uniform2f(W,M[0],M[1]);break;case "3f":t.uniform3f(W,M[0],M[1],M[2]);break;case "4f":t.uniform4f(W,M[0],M[1],M[2],M[3]);break;case "1iv":t.uniform1iv(W,M);break;case "3iv":t.uniform3iv(W,M);break;case "1fv":t.uniform1fv(W,M);break;case "2fv":t.uniform2fv(W,M);break;case "3fv":t.uniform3fv(W,M);break;case "4fv":t.uniform4fv(W,M);break;case "Matrix3fv":t.uniformMatrix3fv(W,!1,M);break;case "Matrix4fv":t.uniformMatrix4fv(W,
 !1,M);break;case "i":t.uniform1i(W,M);break;case "f":t.uniform1f(W,M);break;case "v2":t.uniform2f(W,M.x,M.y);break;case "v3":t.uniform3f(W,M.x,M.y,M.z);break;case "v4":t.uniform4f(W,M.x,M.y,M.z,M.w);break;case "c":t.uniform3f(W,M.r,M.g,M.b);break;case "iv1":t.uniform1iv(W,M);break;case "iv":t.uniform3iv(W,M);break;case "fv1":t.uniform1fv(W,M);break;case "fv":t.uniform3fv(W,M);break;case "v2v":void 0===U._array&&(U._array=new Float32Array(2*M.length));for(var V=0,lb=0,oa=M.length;V<oa;V++,lb+=2)U._array[lb+
 0]=M[V].x,U._array[lb+1]=M[V].y;t.uniform2fv(W,U._array);break;case "v3v":void 0===U._array&&(U._array=new Float32Array(3*M.length));for(var db=V=0,oa=M.length;V<oa;V++,db+=3)U._array[db+0]=M[V].x,U._array[db+1]=M[V].y,U._array[db+2]=M[V].z;t.uniform3fv(W,U._array);break;case "v4v":void 0===U._array&&(U._array=new Float32Array(4*M.length));for(var Ua=V=0,oa=M.length;V<oa;V++,Ua+=4)U._array[Ua+0]=M[V].x,U._array[Ua+1]=M[V].y,U._array[Ua+2]=M[V].z,U._array[Ua+3]=M[V].w;t.uniform4fv(W,U._array);break;
 case "m3":t.uniformMatrix3fv(W,!1,M.elements);break;case "m3v":void 0===U._array&&(U._array=new Float32Array(9*M.length));V=0;for(oa=M.length;V<oa;V++)M[V].flattenToArrayOffset(U._array,9*V);t.uniformMatrix3fv(W,!1,U._array);break;case "m4":t.uniformMatrix4fv(W,!1,M.elements);break;case "m4v":void 0===U._array&&(U._array=new Float32Array(16*M.length));V=0;for(oa=M.length;V<oa;V++)M[V].flattenToArrayOffset(U._array,16*V);t.uniformMatrix4fv(W,!1,U._array);break;case "t":qa=M;Ma=y();t.uniform1i(W,Ma);
-if(!qa)continue;if(qa instanceof THREE.CubeTexture||Array.isArray(qa.image)&&6===qa.image.length){var da=qa,Yb=Ma,Va=$.get(da);if(6===da.image.length)if(0<da.version&&Va.__version!==da.version){Va.__image__webglTextureCube||(da.addEventListener("dispose",g),Va.__image__webglTextureCube=t.createTexture(),Ba.textures++);K.activeTexture(t.TEXTURE0+Yb);K.bindTexture(t.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,da.flipY);for(var Zb=da instanceof THREE.CompressedTexture,
-Jb=da.image[0]instanceof THREE.DataTexture,Na=[],ha=0;6>ha;ha++)Na[ha]=!ma.autoScaleCubemaps||Zb||Jb?Jb?da.image[ha].image:da.image[ha]:B(da.image[ha],dc);var $b=Na[0],ac=THREE.Math.isPowerOfTwo($b.width)&&THREE.Math.isPowerOfTwo($b.height),Fa=L(da.format),Kb=L(da.type);E(t.TEXTURE_CUBE_MAP,da,ac);for(ha=0;6>ha;ha++)if(Zb)for(var Oa,bc=Na[ha].mipmaps,eb=0,Rb=bc.length;eb<Rb;eb++)Oa=bc[eb],da.format!==THREE.RGBAFormat&&da.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(Fa)?K.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+
-ha,eb,Fa,Oa.width,Oa.height,0,Oa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,eb,Fa,Oa.width,Oa.height,0,Fa,Kb,Oa.data);else Jb?K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,0,Fa,Na[ha].width,Na[ha].height,0,Fa,Kb,Na[ha].data):K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,0,Fa,Fa,Kb,Na[ha]);da.generateMipmaps&&ac&&t.generateMipmap(t.TEXTURE_CUBE_MAP);Va.__version=da.version;if(da.onUpdate)da.onUpdate(da)}else K.activeTexture(t.TEXTURE0+
-Yb),K.bindTexture(t.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(qa instanceof THREE.WebGLRenderTargetCube){var ec=qa;K.activeTexture(t.TEXTURE0+Ma);K.bindTexture(t.TEXTURE_CUBE_MAP,$.get(ec).__webglTexture)}else ma.setTexture(qa,Ma);break;case "tv":void 0===U._array&&(U._array=[]);V=0;for(oa=U.value.length;V<oa;V++)U._array[V]=y();t.uniform1iv(W,U._array);V=0;for(oa=U.value.length;V<oa;V++)qa=U.value[V],Ma=U._array[V],qa&&ma.setTexture(qa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+
-Xb)}}}}t.uniformMatrix4fv(ba.modelViewMatrix,!1,e.modelViewMatrix.elements);ba.normalMatrix&&t.uniformMatrix3fv(ba.normalMatrix,!1,e.normalMatrix.elements);void 0!==ba.modelMatrix&&t.uniformMatrix4fv(ba.modelMatrix,!1,e.matrixWorld.elements);return $a}function v(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=
+if(!qa)continue;if(qa instanceof THREE.CubeTexture||Array.isArray(qa.image)&&6===qa.image.length){var da=qa,Xb=Ma,Va=$.get(da);if(6===da.image.length)if(0<da.version&&Va.__version!==da.version){Va.__image__webglTextureCube||(da.addEventListener("dispose",g),Va.__image__webglTextureCube=t.createTexture(),Ba.textures++);K.activeTexture(t.TEXTURE0+Xb);K.bindTexture(t.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,da.flipY);for(var Yb=da instanceof THREE.CompressedTexture,
+Jb=da.image[0]instanceof THREE.DataTexture,Na=[],ha=0;6>ha;ha++)Na[ha]=!ma.autoScaleCubemaps||Yb||Jb?Jb?da.image[ha].image:da.image[ha]:B(da.image[ha],cc);var Zb=Na[0],$b=THREE.Math.isPowerOfTwo(Zb.width)&&THREE.Math.isPowerOfTwo(Zb.height),Fa=L(da.format),Kb=L(da.type);E(t.TEXTURE_CUBE_MAP,da,$b);for(ha=0;6>ha;ha++)if(Yb)for(var Oa,ac=Na[ha].mipmaps,eb=0,dc=ac.length;eb<dc;eb++)Oa=ac[eb],da.format!==THREE.RGBAFormat&&da.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(Fa)?K.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+
+ha,eb,Fa,Oa.width,Oa.height,0,Oa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,eb,Fa,Oa.width,Oa.height,0,Fa,Kb,Oa.data);else Jb?K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,0,Fa,Na[ha].width,Na[ha].height,0,Fa,Kb,Na[ha].data):K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ha,0,Fa,Fa,Kb,Na[ha]);da.generateMipmaps&&$b&&t.generateMipmap(t.TEXTURE_CUBE_MAP);Va.__version=da.version;if(da.onUpdate)da.onUpdate(da)}else K.activeTexture(t.TEXTURE0+
+Xb),K.bindTexture(t.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(qa instanceof THREE.WebGLRenderTargetCube){var ec=qa;K.activeTexture(t.TEXTURE0+Ma);K.bindTexture(t.TEXTURE_CUBE_MAP,$.get(ec).__webglTexture)}else ma.setTexture(qa,Ma);break;case "tv":void 0===U._array&&(U._array=[]);V=0;for(oa=U.value.length;V<oa;V++)U._array[V]=y();t.uniform1iv(W,U._array);V=0;for(oa=U.value.length;V<oa;V++)qa=U.value[V],Ma=U._array[V],qa&&ma.setTexture(qa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+
+Wb)}}}}t.uniformMatrix4fv(ba.modelViewMatrix,!1,e.modelViewMatrix.elements);ba.normalMatrix&&t.uniformMatrix3fv(ba.normalMatrix,!1,e.normalMatrix.elements);void 0!==ba.modelMatrix&&t.uniformMatrix4fv(ba.modelMatrix,!1,e.matrixWorld.elements);return $a}function v(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 y(){var a=ib;a>=fb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+fb);ib+=1;return a}
 function w(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function E(a,b,c){c?(t.texParameteri(a,t.TEXTURE_WRAP_S,L(b.wrapS)),t.texParameteri(a,t.TEXTURE_WRAP_T,L(b.wrapT)),t.texParameteri(a,t.TEXTURE_MAG_FILTER,L(b.magFilter)),t.texParameteri(a,t.TEXTURE_MIN_FILTER,L(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,O(b.magFilter)),t.texParameteri(a,t.TEXTURE_MIN_FILTER,O(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=X.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||$.get(b).__currentAnisotropy)&&
@@ -537,40 +537,40 @@ if(a===THREE.DstAlphaFactor)return t.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFact
 if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=X.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=X.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 C=void 0!==a.canvas?a.canvas:document.createElement("canvas"),P=void 0!==a.context?a.context:null,J=C.width,F=C.height,D=1,G=void 0!==a.precision?a.precision:"highp",N=void 0!==a.alpha?a.alpha:!1,R=void 0!==a.depth?a.depth:!0,T=void 0!==a.stencil?a.stencil:!0,Q=void 0!==a.antialias?a.antialias:!1,S=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,H=void 0!==a.preserveDrawingBuffer?
 a.preserveDrawingBuffer:!1,ta=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Z=new THREE.Color(0),fa=0,ga=[],va=[],la=[],sa=[],Ca=[],gb=new Float32Array(8),ra=[],Ya=[];this.domElement=C;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 ma=this,ua=[],ob=null,Pa=null,Xa=-1,Ia="",Wa=null,ib=0,
-Ga=0,Ha=0,Aa=C.width,wa=C.height,mb=0,nb=0,Za=new THREE.Frustum,Ja=new THREE.Matrix4,ia=new THREE.Vector3,ea=new THREE.Vector3,hb=!0,Sb={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:[]}},Ba={programs:0,geometries:0,textures:0},ka={calls:0,vertices:0,faces:0,points:0};
+Ga=0,Ha=0,Aa=C.width,wa=C.height,mb=0,nb=0,Za=new THREE.Frustum,Ja=new THREE.Matrix4,ia=new THREE.Vector3,ea=new THREE.Vector3,hb=!0,Rb={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:[]}},Ba={programs:0,geometries:0,textures:0},ka={calls:0,vertices:0,faces:0,points:0};
 this.info={render:ka,memory:Ba,programs:ua};var t;try{a={alpha:N,depth:R,stencil:T,antialias:Q,premultipliedAlpha:S,preserveDrawingBuffer:H};t=P||C.getContext("webgl",a)||C.getContext("experimental-webgl",a);if(null===t){if(null!==C.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}C.addEventListener("webglcontextlost",e,!1)}catch(Lb){console.error("THREE.WebGLRenderer: "+Lb)}var X=new THREE.WebGLExtensions(t);X.get("OES_texture_float");
 X.get("OES_texture_float_linear");X.get("OES_texture_half_float");X.get("OES_texture_half_float_linear");X.get("OES_standard_derivatives");X.get("ANGLE_instanced_arrays");X.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);ta&&X.get("EXT_frag_depth");var K=new THREE.WebGLState(t,X,L),$=new THREE.WebGLProperties,xa=new THREE.WebGLObjects(t,$,this.info),Mb=new THREE.WebGLBufferRenderer(t,X,ka),Nb=new THREE.WebGLIndexedBufferRenderer(t,X,ka);c();this.context=t;this.extensions=
-X;this.state=K;var na=new THREE.WebGLShadowMap(this,ga,xa);this.shadowMap=na;var fb=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),P=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ob=t.getParameter(t.MAX_TEXTURE_SIZE),dc=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),qb=0<P,pb=qb&&X.get("OES_texture_float"),Pb=X.get("ANGLE_instanced_arrays"),P=K.getMaxPrecision(G);P!==G&&(console.warn("THREE.WebGLRenderer:",G,"not supported, using",P,"instead."),G=P);var Qb=new THREE.SpritePlugin(this,ra),Rb=new THREE.LensFlarePlugin(this,
-Ya);this.getContext=function(){return t};this.getContextAttributes=function(){return t.getContextAttributes()};this.forceContextLoss=function(){X.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return qb};this.supportsInstancedArrays=function(){return Pb};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=X.get("EXT_texture_filter_anisotropic");return a=null!==b?t.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=
-function(){return G};this.getPixelRatio=function(){return D};this.setPixelRatio=function(a){void 0!==a&&(D=a)};this.getSize=function(){return{width:J,height:F}};this.setSize=function(a,b,c){J=a;F=b;C.width=a*D;C.height=b*D;!1!==c&&(C.style.width=a+"px",C.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Ga=a*D;Ha=b*D;Aa=c*D;wa=d*D;t.viewport(Ga,Ha,Aa,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*D,b*D,c*D,d*D)};this.enableScissorTest=function(a){K.setScissorTest(a)};
-this.getClearColor=function(){return Z};this.setClearColor=function(a,c){Z.set(a);fa=void 0!==c?c:1;b(Z.r,Z.g,Z.b,fa)};this.getClearAlpha=function(){return fa};this.setClearAlpha=function(a){fa=a;b(Z.r,Z.g,Z.b,fa)};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;if(void 0===c||c)d|=t.STENCIL_BUFFER_BIT;t.clear(d)};this.clearColor=function(){t.clear(t.COLOR_BUFFER_BIT)};this.clearDepth=function(){t.clear(t.DEPTH_BUFFER_BIT)};this.clearStencil=
-function(){t.clear(t.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.dispose=function(){C.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){K.initAttributes();var d=$.get(a);a.hasPositions&&!d.position&&(d.position=t.createBuffer());a.hasNormals&&!d.normal&&(d.normal=t.createBuffer());a.hasUvs&&!d.uv&&(d.uv=t.createBuffer());a.hasColors&&!d.color&&(d.color=t.createBuffer());b=b.getAttributes();
-a.hasPositions&&(t.bindBuffer(t.ARRAY_BUFFER,d.position),t.bufferData(t.ARRAY_BUFFER,a.positionArray,t.DYNAMIC_DRAW),K.enableAttribute(b.position),t.vertexAttribPointer(b.position,3,t.FLOAT,!1,0,0));if(a.hasNormals){t.bindBuffer(t.ARRAY_BUFFER,d.normal);if("MeshPhongMaterial"!==c.type&&c.shading===THREE.FlatShading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,h=(g[e+0]+g[e+3]+g[e+6])/3,k=(g[e+1]+g[e+4]+g[e+7])/3,l=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=l;g[e+3]=h;g[e+4]=k;g[e+
-5]=l;g[e+6]=h;g[e+7]=k;g[e+8]=l}t.bufferData(t.ARRAY_BUFFER,a.normalArray,t.DYNAMIC_DRAW);K.enableAttribute(b.normal);t.vertexAttribPointer(b.normal,3,t.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(t.bindBuffer(t.ARRAY_BUFFER,d.uv),t.bufferData(t.ARRAY_BUFFER,a.uvArray,t.DYNAMIC_DRAW),K.enableAttribute(b.uv),t.vertexAttribPointer(b.uv,2,t.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(t.bindBuffer(t.ARRAY_BUFFER,d.color),t.bufferData(t.ARRAY_BUFFER,a.colorArray,t.DYNAMIC_DRAW),K.enableAttribute(b.color),
-t.vertexAttribPointer(b.color,3,t.FLOAT,!1,0,0));K.disableUnusedAttributes();t.drawArrays(t.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f,g){u(e);var h=x(a,b,c,e,f),k=!1;a=d.id+"_"+h.id+"_"+e.wireframe;a!==Ia&&(Ia=a,k=!0);a=f.morphTargetInfluences;if(void 0!==a){b=[];c=0;for(k=a.length;c<k;c++){var l=a[c];b.push([l,c])}b.sort(m);8<b.length&&(b.length=8);var n=d.morphAttributes;c=0;for(k=b.length;c<k;c++)l=b[c],gb[c]=l[0],0!==l[0]?(a=l[1],!0===e.morphTargets&&n.position&&
-d.addAttribute("morphTarget"+c,n.position[a]),!0===e.morphNormals&&n.normal&&d.addAttribute("morphNormal"+c,n.normal[a])):(!0===e.morphTargets&&d.removeAttribute("morphTarget"+c),!0===e.morphNormals&&d.removeAttribute("morphNormal"+c));a=h.getUniforms();null!==a.morphTargetInfluences&&t.uniform1fv(a.morphTargetInfluences,gb);k=!0}a=d.attributes.index;c=d.attributes.position;!0===e.wireframe&&(a=xa.getWireframeAttribute(d));void 0!==a?(b=Nb,b.setIndex(a)):b=Mb;if(k){a:{var k=void 0,q;if(d instanceof
-THREE.InstancedBufferGeometry&&(q=X.get("ANGLE_instanced_arrays"),null===q)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}void 0===k&&(k=0);K.initAttributes();var l=d.attributes,h=h.getAttributes(),n=e.defaultAttributeValues,p;for(p in h){var s=h[p];if(0<=s){var r=l[p];if(void 0!==r){K.enableAttribute(s);var v=r.itemSize,w=xa.getAttributeBuffer(r);if(r instanceof THREE.InterleavedBufferAttribute){var y=
-r.data,z=y.stride,r=r.offset;t.bindBuffer(t.ARRAY_BUFFER,w);t.vertexAttribPointer(s,v,t.FLOAT,!1,z*y.array.BYTES_PER_ELEMENT,(k*z+r)*y.array.BYTES_PER_ELEMENT);if(y instanceof THREE.InstancedInterleavedBuffer){if(null===q){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");break a}q.vertexAttribDivisorANGLE(s,y.meshPerAttribute);void 0===d.maxInstancedCount&&(d.maxInstancedCount=y.meshPerAttribute*
-y.count)}}else if(t.bindBuffer(t.ARRAY_BUFFER,w),t.vertexAttribPointer(s,v,t.FLOAT,!1,0,k*v*4),r instanceof THREE.InstancedBufferAttribute){if(null===q){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");break a}q.vertexAttribDivisorANGLE(s,r.meshPerAttribute);void 0===d.maxInstancedCount&&(d.maxInstancedCount=r.meshPerAttribute*r.count)}}else if(void 0!==n&&(v=n[p],void 0!==v))switch(v.length){case 2:t.vertexAttrib2fv(s,
-v);break;case 3:t.vertexAttrib3fv(s,v);break;case 4:t.vertexAttrib4fv(s,v);break;default:t.vertexAttrib1fv(s,v)}}}K.disableUnusedAttributes()}void 0!==a&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,xa.getAttributeBuffer(a))}void 0===g&&(g={start:0,count:void 0!==a?a.array.length:c instanceof THREE.InterleavedBufferAttribute?c.data.array.length/3:c.array.length/3});f instanceof THREE.Mesh?(!0===e.wireframe?(K.setLineWidth(e.wireframeLinewidth*D),b.setMode(t.LINES)):b.setMode(t.TRIANGLES),d instanceof THREE.InstancedBufferGeometry&&
-0<d.maxInstancedCount?b.renderInstances(d):c instanceof THREE.InterleavedBufferAttribute?b.render(0,c.data.count):b.render(g.start,g.count)):f instanceof THREE.Line?(d=e.linewidth,void 0===d&&(d=1),K.setLineWidth(d*D),f instanceof THREE.LineSegments?b.setMode(t.LINES):b.setMode(t.LINE_STRIP),b.render(g.start,g.count)):f instanceof THREE.PointCloud&&(b.setMode(t.POINTS),b.render(g.start,g.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;Ia="";Xa=-1;Wa=null;hb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Za.setFromMatrix(Ja);ga.length=0;va.length=0;la.length=0;sa.length=0;Ca.length=0;ra.length=0;Ya.length=0;q(a);!0===ma.sortObjects&&(va.sort(n),la.sort(p));na.render(a,b);ka.calls=0;ka.vertices=0;ka.faces=0;ka.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,
-this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,s(va,b,ga,e,d),s(la,b,ga,e,d),r(sa,b,ga,e,d),r(Ca,b,ga,e,d)):(K.setBlending(THREE.NoBlending),s(va,b,ga,e),r(sa,b,ga,e),s(la,b,ga,e),r(Ca,b,ga,e));Qb.render(a,b);Rb.render(a,b,mb,nb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(K.bindTexture(t.TEXTURE_CUBE_MAP,$.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),K.bindTexture(t.TEXTURE_CUBE_MAP,
-null)):(K.bindTexture(t.TEXTURE_2D,$.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),K.bindTexture(t.TEXTURE_2D,null)));K.setDepthTest(!0);K.setDepthWrite(!0);K.setColorWrite(!0)}};var cc={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?K.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),K.enable(t.CULL_FACE))};this.setTexture=function(a,b){var c=$.get(a);if(0<a.version&&c.__version!==a.version){var d=a.image;if(void 0===d)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",a);else if(!1===d.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",
-a);else{void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",g),c.__webglTexture=t.createTexture(),Ba.textures++);K.activeTexture(t.TEXTURE0+b);K.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=B(a.image,Ob);var e=a.image,d=THREE.Math.isPowerOfTwo(e.width)&&THREE.Math.isPowerOfTwo(e.height),f=L(a.format),
-h=L(a.type);E(t.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var l=0,m=k.length;l<m;l++)e=k[l],K.texImage2D(t.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);a.generateMipmaps=!1}else K.texImage2D(t.TEXTURE_2D,0,f,e.width,e.height,0,f,h,e.data);else if(a instanceof THREE.CompressedTexture)for(l=0,m=k.length;l<m;l++)e=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(f)?K.compressedTexImage2D(t.TEXTURE_2D,
-l,f,e.width,e.height,0,e.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):K.texImage2D(t.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)e=k[l],K.texImage2D(t.TEXTURE_2D,l,f,f,h,e);a.generateMipmaps=!1}else K.texImage2D(t.TEXTURE_2D,0,f,f,h,a.image);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else K.activeTexture(t.TEXTURE0+
-b),K.bindTexture(t.TEXTURE_2D,c.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===$.get(a).__webglFramebuffer){var c=$.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=t.createTexture();Ba.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=L(a.format),g=L(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=
-[];K.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);E(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),z(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),A(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(),K.bindTexture(t.TEXTURE_2D,c.__webglTexture),E(t.TEXTURE_2D,a,d),K.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),z(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):
-A(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?K.bindTexture(t.TEXTURE_CUBE_MAP,null):K.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=$.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Aa,a=wa,d=Ga,e=Ha);b!==Pa&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),Pa=b);mb=c;nb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof
-THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if($.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 g=!1;$.get(a).__webglFramebuffer!==Pa&&(t.bindFramebuffer(t.FRAMEBUFFER,$.get(a).__webglFramebuffer),g=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?
-t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&t.bindFramebuffer(t.FRAMEBUFFER,Pa)}};this.supportsFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");return X.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");
-return X.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");return X.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");return X.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=
-function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return X.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return X.get("EXT_blend_minmax")};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 na.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");na.enabled=a}},shadowMapType:{get:function(){return na.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
-na.type=a}},shadowMapCullFace:{get:function(){return na.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");na.cullFace=a}},shadowMapDebug:{get:function(){return na.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");na.debug=a}}})};
+X;this.state=K;var na=new THREE.WebGLShadowMap(this,ga,xa);this.shadowMap=na;var fb=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),P=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ob=t.getParameter(t.MAX_TEXTURE_SIZE),cc=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),qb=0<P,pb=qb&&X.get("OES_texture_float"),P=K.getMaxPrecision(G);P!==G&&(console.warn("THREE.WebGLRenderer:",G,"not supported, using",P,"instead."),G=P);var Pb=new THREE.SpritePlugin(this,ra),Qb=new THREE.LensFlarePlugin(this,Ya);this.getContext=
+function(){return t};this.getContextAttributes=function(){return t.getContextAttributes()};this.forceContextLoss=function(){X.get("WEBGL_lose_context").loseContext()};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=X.get("EXT_texture_filter_anisotropic");return a=null!==b?t.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return G};this.getPixelRatio=function(){return D};this.setPixelRatio=function(a){void 0!==a&&(D=a)};this.getSize=
+function(){return{width:J,height:F}};this.setSize=function(a,b,c){J=a;F=b;C.width=a*D;C.height=b*D;!1!==c&&(C.style.width=a+"px",C.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Ga=a*D;Ha=b*D;Aa=c*D;wa=d*D;t.viewport(Ga,Ha,Aa,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*D,b*D,c*D,d*D)};this.enableScissorTest=function(a){K.setScissorTest(a)};this.getClearColor=function(){return Z};this.setClearColor=function(a,c){Z.set(a);fa=void 0!==c?c:1;b(Z.r,Z.g,Z.b,fa)};
+this.getClearAlpha=function(){return fa};this.setClearAlpha=function(a){fa=a;b(Z.r,Z.g,Z.b,fa)};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;if(void 0===c||c)d|=t.STENCIL_BUFFER_BIT;t.clear(d)};this.clearColor=function(){t.clear(t.COLOR_BUFFER_BIT)};this.clearDepth=function(){t.clear(t.DEPTH_BUFFER_BIT)};this.clearStencil=function(){t.clear(t.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,
+c,d)};this.resetGLState=d;this.dispose=function(){C.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){K.initAttributes();var d=$.get(a);a.hasPositions&&!d.position&&(d.position=t.createBuffer());a.hasNormals&&!d.normal&&(d.normal=t.createBuffer());a.hasUvs&&!d.uv&&(d.uv=t.createBuffer());a.hasColors&&!d.color&&(d.color=t.createBuffer());b=b.getAttributes();a.hasPositions&&(t.bindBuffer(t.ARRAY_BUFFER,d.position),t.bufferData(t.ARRAY_BUFFER,a.positionArray,t.DYNAMIC_DRAW),
+K.enableAttribute(b.position),t.vertexAttribPointer(b.position,3,t.FLOAT,!1,0,0));if(a.hasNormals){t.bindBuffer(t.ARRAY_BUFFER,d.normal);if("MeshPhongMaterial"!==c.type&&c.shading===THREE.FlatShading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,h=(g[e+0]+g[e+3]+g[e+6])/3,k=(g[e+1]+g[e+4]+g[e+7])/3,l=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=l;g[e+3]=h;g[e+4]=k;g[e+5]=l;g[e+6]=h;g[e+7]=k;g[e+8]=l}t.bufferData(t.ARRAY_BUFFER,a.normalArray,t.DYNAMIC_DRAW);K.enableAttribute(b.normal);
+t.vertexAttribPointer(b.normal,3,t.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(t.bindBuffer(t.ARRAY_BUFFER,d.uv),t.bufferData(t.ARRAY_BUFFER,a.uvArray,t.DYNAMIC_DRAW),K.enableAttribute(b.uv),t.vertexAttribPointer(b.uv,2,t.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(t.bindBuffer(t.ARRAY_BUFFER,d.color),t.bufferData(t.ARRAY_BUFFER,a.colorArray,t.DYNAMIC_DRAW),K.enableAttribute(b.color),t.vertexAttribPointer(b.color,3,t.FLOAT,!1,0,0));K.disableUnusedAttributes();t.drawArrays(t.TRIANGLES,0,a.count);
+a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f,g){u(e);var h=x(a,b,c,e,f),k=!1;a=d.id+"_"+h.id+"_"+e.wireframe;a!==Ia&&(Ia=a,k=!0);a=f.morphTargetInfluences;if(void 0!==a){b=[];c=0;for(k=a.length;c<k;c++){var l=a[c];b.push([l,c])}b.sort(m);8<b.length&&(b.length=8);var n=d.morphAttributes;c=0;for(k=b.length;c<k;c++)l=b[c],gb[c]=l[0],0!==l[0]?(a=l[1],!0===e.morphTargets&&n.position&&d.addAttribute("morphTarget"+c,n.position[a]),!0===e.morphNormals&&n.normal&&d.addAttribute("morphNormal"+c,
+n.normal[a])):(!0===e.morphTargets&&d.removeAttribute("morphTarget"+c),!0===e.morphNormals&&d.removeAttribute("morphNormal"+c));a=h.getUniforms();null!==a.morphTargetInfluences&&t.uniform1fv(a.morphTargetInfluences,gb);k=!0}a=d.attributes.index;c=d.attributes.position;!0===e.wireframe&&(a=xa.getWireframeAttribute(d));void 0!==a?(b=Nb,b.setIndex(a)):b=Mb;if(k){a:{var k=void 0,q;if(d instanceof THREE.InstancedBufferGeometry&&(q=X.get("ANGLE_instanced_arrays"),null===q)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
+break a}void 0===k&&(k=0);K.initAttributes();var l=d.attributes,h=h.getAttributes(),n=e.defaultAttributeValues,p;for(p in h){var s=h[p];if(0<=s){var r=l[p];if(void 0!==r){K.enableAttribute(s);var v=r.itemSize,w=xa.getAttributeBuffer(r);if(r instanceof THREE.InterleavedBufferAttribute){var y=r.data,z=y.stride,r=r.offset;t.bindBuffer(t.ARRAY_BUFFER,w);t.vertexAttribPointer(s,v,t.FLOAT,!1,z*y.array.BYTES_PER_ELEMENT,(k*z+r)*y.array.BYTES_PER_ELEMENT);if(y instanceof THREE.InstancedInterleavedBuffer){if(null===
+q){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");break a}q.vertexAttribDivisorANGLE(s,y.meshPerAttribute);void 0===d.maxInstancedCount&&(d.maxInstancedCount=y.meshPerAttribute*y.count)}}else if(t.bindBuffer(t.ARRAY_BUFFER,w),t.vertexAttribPointer(s,v,t.FLOAT,!1,0,k*v*4),r instanceof THREE.InstancedBufferAttribute){if(null===q){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
+break a}q.vertexAttribDivisorANGLE(s,r.meshPerAttribute);void 0===d.maxInstancedCount&&(d.maxInstancedCount=r.meshPerAttribute*r.count)}}else if(void 0!==n&&(v=n[p],void 0!==v))switch(v.length){case 2:t.vertexAttrib2fv(s,v);break;case 3:t.vertexAttrib3fv(s,v);break;case 4:t.vertexAttrib4fv(s,v);break;default:t.vertexAttrib1fv(s,v)}}}K.disableUnusedAttributes()}void 0!==a&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,xa.getAttributeBuffer(a))}void 0===g&&(g={start:0,count:void 0!==a?a.array.length:c instanceof
+THREE.InterleavedBufferAttribute?c.data.array.length/3:c.array.length/3});f instanceof THREE.Mesh?(!0===e.wireframe?(K.setLineWidth(e.wireframeLinewidth*D),b.setMode(t.LINES)):b.setMode(t.TRIANGLES),d instanceof THREE.InstancedBufferGeometry&&0<d.maxInstancedCount?b.renderInstances(d):c instanceof THREE.InterleavedBufferAttribute?b.render(0,c.data.count):b.render(g.start,g.count)):f instanceof THREE.Line?(d=e.linewidth,void 0===d&&(d=1),K.setLineWidth(d*D),f instanceof THREE.LineSegments?b.setMode(t.LINES):
+b.setMode(t.LINE_STRIP),b.render(g.start,g.count)):f instanceof THREE.PointCloud&&(b.setMode(t.POINTS),b.render(g.start,g.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;Ia="";Xa=-1;Wa=null;hb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);
+Za.setFromMatrix(Ja);ga.length=0;va.length=0;la.length=0;sa.length=0;Ca.length=0;ra.length=0;Ya.length=0;q(a);!0===ma.sortObjects&&(va.sort(n),la.sort(p));na.render(a,b);ka.calls=0;ka.vertices=0;ka.faces=0;ka.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,s(va,b,ga,e,d),s(la,b,ga,e,d),r(sa,b,ga,e,d),r(Ca,b,ga,e,d)):(K.setBlending(THREE.NoBlending),s(va,b,ga,e),r(sa,b,ga,e),s(la,
+b,ga,e),r(Ca,b,ga,e));Pb.render(a,b);Qb.render(a,b,mb,nb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(K.bindTexture(t.TEXTURE_CUBE_MAP,$.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),K.bindTexture(t.TEXTURE_CUBE_MAP,null)):(K.bindTexture(t.TEXTURE_2D,$.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),K.bindTexture(t.TEXTURE_2D,null)));K.setDepthTest(!0);K.setDepthWrite(!0);K.setColorWrite(!0)}};
+var bc={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?K.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),K.enable(t.CULL_FACE))};
+this.setTexture=function(a,b){var c=$.get(a);if(0<a.version&&c.__version!==a.version){var d=a.image;if(void 0===d)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",a);else if(!1===d.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a);else{void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",g),c.__webglTexture=t.createTexture(),Ba.textures++);K.activeTexture(t.TEXTURE0+b);K.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=B(a.image,Ob);var e=a.image,d=THREE.Math.isPowerOfTwo(e.width)&&THREE.Math.isPowerOfTwo(e.height),f=L(a.format),h=L(a.type);E(t.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var l=0,m=k.length;l<m;l++)e=k[l],K.texImage2D(t.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);
+a.generateMipmaps=!1}else K.texImage2D(t.TEXTURE_2D,0,f,e.width,e.height,0,f,h,e.data);else if(a instanceof THREE.CompressedTexture)for(l=0,m=k.length;l<m;l++)e=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(f)?K.compressedTexImage2D(t.TEXTURE_2D,l,f,e.width,e.height,0,e.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):K.texImage2D(t.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);
+else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)e=k[l],K.texImage2D(t.TEXTURE_2D,l,f,f,h,e);a.generateMipmaps=!1}else K.texImage2D(t.TEXTURE_2D,0,f,f,h,a.image);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else K.activeTexture(t.TEXTURE0+b),K.bindTexture(t.TEXTURE_2D,c.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===$.get(a).__webglFramebuffer){var c=$.get(a);void 0===a.depthBuffer&&
+(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=t.createTexture();Ba.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=L(a.format),g=L(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];K.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);E(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),K.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+
+h,0,e,a.width,a.height,0,e,g,null),z(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),A(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(),K.bindTexture(t.TEXTURE_2D,c.__webglTexture),E(t.TEXTURE_2D,a,d),K.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),z(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):A(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?K.bindTexture(t.TEXTURE_CUBE_MAP,null):K.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=
+$.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Aa,a=wa,d=Ga,e=Ha);b!==Pa&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),Pa=b);mb=c;nb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if($.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 g=!1;$.get(a).__webglFramebuffer!==Pa&&(t.bindFramebuffer(t.FRAMEBUFFER,$.get(a).__webglFramebuffer),g=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&t.bindFramebuffer(t.FRAMEBUFFER,Pa)}};this.supportsFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");
+return X.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");return X.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");return X.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");
+return X.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return X.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return X.get("EXT_blend_minmax")};this.supportsVertexTextures=function(){return qb};this.supportsInstancedArrays=
+function(){console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).");return X.get("ANGLE_instanced_arrays")};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 na.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");na.enabled=a}},shadowMapType:{get:function(){return na.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");na.type=a}},shadowMapCullFace:{get:function(){return na.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");na.cullFace=
+a}},shadowMapDebug:{get:function(){return na.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");na.debug=a}}})};
 THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,
 1);this.format=void 0!==c.format?c.format:THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=void 0!==c.shareDepthFrom?c.shareDepthFrom:null};
 THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose()},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.wrapS=a.wrapS;this.wrapT=a.wrapT;this.magFilter=a.magFilter;this.minFilter=a.minFilter;this.anisotropy=a.anisotropy;this.offset.copy(a.offset);this.repeat.copy(a.repeat);this.format=a.format;this.type=a.type;this.depthBuffer=