提交 9c197530 编写于 作者: M Mr.doob

Updated builds.

上级 be75f8a5
......@@ -29772,7 +29772,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
for ( i = 0; i < flen; i ++ ) {
face = faces[ i ];
f3( face[ 2 ]+ offset, face[ 1 ]+ offset, face[ 0 ] + offset, true );
f3( face[ 2 ]+ offset, face[ 1 ]+ offset, face[ 0 ] + offset );
}
......@@ -29784,7 +29784,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
for ( i = 0; i < flen; i ++ ) {
face = faces[ i ];
f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset, false );
f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );
}
......@@ -29795,7 +29795,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
for ( i = 0; i < flen; i ++ ) {
face = faces[ i ];
f3( face[ 2 ], face[ 1 ], face[ 0 ], true );
f3( face[ 2 ], face[ 1 ], face[ 0 ] );
}
......@@ -29804,7 +29804,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
for ( i = 0; i < flen; i ++ ) {
face = faces[ i ];
f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps, false );
f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );
}
}
......@@ -29870,7 +29870,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
}
function f3( a, b, c, isBottom ) {
function f3( a, b, c ) {
a += shapesOffset;
b += shapesOffset;
......@@ -29879,7 +29879,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
// normal, color, material
scope.faces.push( new THREE.Face3( a, b, c, null, null, material ) );
var uvs = isBottom ? uvgen.generateBottomUV( scope, shape, options, a, b, c ) : uvgen.generateTopUV( scope, shape, options, a, b, c );
var uvs = uvgen.generateTopUV( scope, a, b, c );
scope.faceVertexUvs[ 0 ].push( uvs );
......@@ -29895,8 +29895,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
scope.faces.push( new THREE.Face3( a, b, d, null, null, extrudeMaterial ) );
scope.faces.push( new THREE.Face3( b, c, d, null, null, extrudeMaterial ) );
var uvs = uvgen.generateSideWallUV( scope, shape, wallContour, options, a, b, c, d,
stepIndex, stepsLength, contourIndex1, contourIndex2 );
var uvs = uvgen.generateSideWallUV( scope, a, b, c, d );
scope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );
scope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );
......@@ -29907,11 +29906,13 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
THREE.ExtrudeGeometry.WorldUVGenerator = {
generateTopUV: function( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC ) {
var a = geometry.vertices[ indexA ];
var b = geometry.vertices[ indexB ];
var c = geometry.vertices[ indexC ];
generateTopUV: function ( geometry, indexA, indexB, indexC ) {
var vertices = geometry.vertices;
var a = vertices[ indexA ];
var b = vertices[ indexB ];
var c = vertices[ indexC ];
return [
new THREE.Vector2( a.x, a.y ),
......@@ -29921,20 +29922,14 @@ THREE.ExtrudeGeometry.WorldUVGenerator = {
},
generateBottomUV: function( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC ) {
generateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {
return this.generateTopUV( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC );
},
generateSideWallUV: function( geometry, extrudedShape, wallContour, extrudeOptions,
indexA, indexB, indexC, indexD, stepIndex, stepsLength,
contourIndex1, contourIndex2 ) {
var vertices = geometry.vertices;
var a = geometry.vertices[ indexA ];
var b = geometry.vertices[ indexB ];
var c = geometry.vertices[ indexC ];
var d = geometry.vertices[ indexD ];
var a = vertices[ indexA ];
var b = vertices[ indexB ];
var c = vertices[ indexC ];
var d = vertices[ indexD ];
if ( Math.abs( a.y - b.y ) < 0.01 ) {
return [
......@@ -30084,7 +30079,7 @@ THREE.ShapeGeometry.prototype.addShape = function ( shape, options ) {
var c = face[ 2 ] + shapesOffset;
this.faces.push( new THREE.Face3( a, b, c, null, null, material ) );
this.faceVertexUvs[ 0 ].push( uvgen.generateBottomUV( this, shape, options, a, b, c ) );
this.faceVertexUvs[ 0 ].push( uvgen.generateTopUV( this, a, b, c ) );
}
......
......@@ -434,76 +434,76 @@ THREE.WebGLRenderer=function(a){function b(a){var b=a.geometry;a=a.material;var
f),a.__skinWeightArray=new Float32Array(4*f));c=null!==sa.get("OES_element_index_uint")&&21845<g?Uint32Array:Uint16Array;a.__typeArray=c;a.__faceArray=new c(3*g);a.__lineArray=new c(2*h);var k;if(a.numMorphTargets)for(a.__morphTargetsArrays=[],c=0,k=a.numMorphTargets;c<k;c++)a.__morphTargetsArrays.push(new Float32Array(3*f));if(a.numMorphNormals)for(a.__morphNormalsArrays=[],c=0,k=a.numMorphNormals;c<k;c++)a.__morphNormalsArrays.push(new Float32Array(3*f));a.__webglFaceCount=3*g;a.__webglLineCount=
2*h;if(e.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var m in e.attributes){var g=e.attributes[m],h={},n;for(n in g)h[n]=g[n];if(!h.__webglInitialized||h.createUniqueBuffers)h.__webglInitialized=!0,c=1,"v2"===h.type?c=2:"v3"===h.type?c=3:"v4"===h.type?c=4:"c"===h.type&&(c=3),h.size=c,h.array=new Float32Array(f*c),h.buffer=l.createBuffer(),h.buffer.belongsToAttribute=m,g.needsUpdate=!0,h.__original=g;a.__webglCustomAttributesList.push(h)}}a.__inittedArrays=
!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function e(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var g=0,k=b.length;g<k;g++){var m=b[g],n=e[m];if(0<=n){var p=c[m];void 0!==p?(m=p.itemSize,l.bindBuffer(l.ARRAY_BUFFER,p.buffer),f(n),l.vertexAttribPointer(n,m,l.FLOAT,!1,0,d*m*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[m].length?l.vertexAttrib2fv(n,a.defaultAttributeValues[m]):
3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(n,a.defaultAttributeValues[m]))}}h()}function g(){for(var a=0,b=Db.length;a<b;a++)Db[a]=0}function f(a){Db[a]=1;0===eb[a]&&(l.enableVertexAttribArray(a),eb[a]=1)}function h(){for(var a=0,b=eb.length;a<b;a++)eb[a]!==Db[a]&&(l.disableVertexAttribArray(a),eb[a]=0)}function k(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return b[0]-
3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(n,a.defaultAttributeValues[m]))}}h()}function g(){for(var a=0,b=sb.length;a<b;a++)sb[a]=0}function f(a){sb[a]=1;0===eb[a]&&(l.enableVertexAttribArray(a),eb[a]=1)}function h(){for(var a=0,b=eb.length;a<b;a++)eb[a]!==sb[a]&&(l.disableVertexAttribArray(a),eb[a]=0)}function k(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return b[0]-
a[0]}function q(a,e){if(!1!==e.visible){e instanceof THREE.Light&&Za.push(e);if(!(e instanceof THREE.Scene||e instanceof THREE.Group)){void 0===e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrix=new THREE.Matrix3,e.addEventListener("removed",Fc));var f=e.geometry;if(void 0!==f&&void 0===f.__webglInit&&(f.__webglInit=!0,f.addEventListener("dispose",Gc),!(f instanceof THREE.BufferGeometry)))if(e instanceof THREE.Mesh)u(a,e,f);else if(e instanceof THREE.Line){if(void 0===
f.__webglVertexBuffer){f.__webglVertexBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();f.__webglLineDistanceBuffer=l.createBuffer();H.info.memory.geometries++;var g=f.vertices.length;f.__vertexArray=new Float32Array(3*g);f.__colorArray=new Float32Array(3*g);f.__lineDistanceArray=new Float32Array(1*g);f.__webglLineCount=g;b(e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0;f.lineDistancesNeedUpdate=!0}}else if(e instanceof THREE.PointCloud&&void 0===f.__webglVertexBuffer){f.__webglVertexBuffer=
l.createBuffer();f.__webglColorBuffer=l.createBuffer();H.info.memory.geometries++;var h=f.vertices.length;f.__vertexArray=new Float32Array(3*h);f.__colorArray=new Float32Array(3*h);f.__sortArray=[];f.__webglParticleCount=h;b(e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0}if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof THREE.Mesh)if(f instanceof THREE.BufferGeometry)w($a,f,e);else{if(f instanceof THREE.Geometry)for(var k=sb[f.id],m=0,n=k.length;m<n;m++)w($a,k[m],e)}else e instanceof
l.createBuffer();f.__webglColorBuffer=l.createBuffer();H.info.memory.geometries++;var h=f.vertices.length;f.__vertexArray=new Float32Array(3*h);f.__colorArray=new Float32Array(3*h);f.__sortArray=[];f.__webglParticleCount=h;b(e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0}if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof THREE.Mesh)if(f instanceof THREE.BufferGeometry)w($a,f,e);else{if(f instanceof THREE.Geometry)for(var k=Bb[f.id],m=0,n=k.length;m<n;m++)w($a,k[m],e)}else e instanceof
THREE.Line||e instanceof THREE.PointCloud?w($a,f,e):(e instanceof THREE.ImmediateRenderObject||e.immediateRenderCallback)&&lb.push({id:null,object:e,opaque:null,transparent:null,z:0});var t=$a[e.id];if(t&&(!1===e.frustumCulled||!0===Bc.intersectsObject(e))){var r=e.geometry,s,v;if(r instanceof THREE.BufferGeometry)for(var z=r.attributes,A=r.attributesKeys,I=0,E=A.length;I<E;I++){var C=A[I],G=z[C];void 0===G.buffer&&(G.buffer=l.createBuffer(),G.needsUpdate=!0);if(!0===G.needsUpdate){var L="index"===
C?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(L,G.buffer);l.bufferData(L,G.array,l.STATIC_DRAW);G.needsUpdate=!1}}else if(e instanceof THREE.Mesh){!0===r.groupsNeedUpdate&&u(a,e,r);for(var P=sb[r.id],Q=0,T=P.length;Q<T;Q++){var O=P[Q];v=d(e,O);!0===r.groupsNeedUpdate&&c(O,e);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.morphTargetsNeedUpdate||r.elementsNeedUpdate||r.uvsNeedUpdate||r.normalsNeedUpdate||r.colorsNeedUpdate||r.tangentsNeedUpdate||s){var F=O,R=e,J=l.DYNAMIC_DRAW,Ja=!r.dynamic,
W=v;if(F.__inittedArrays){var X=W&&void 0!==W.shading&&W.shading===THREE.SmoothShading,M=void 0,Y=void 0,ka=void 0,da=void 0,ba=void 0,db=void 0,ga=void 0,qb=void 0,sa=void 0,ya=void 0,ia=void 0,aa=void 0,$=void 0,Z=void 0,Ab=void 0,qa=void 0,K=void 0,za=void 0,oa=void 0,kc=void 0,la=void 0,Pa=void 0,Fa=void 0,lc=void 0,Ba=void 0,mc=void 0,nc=void 0,Ga=void 0,oc=void 0,Aa=void 0,va=void 0,Eb=void 0,Ma=void 0,Bb=void 0,Na=void 0,Yb=void 0,Ya=void 0,ab=void 0,Lb=void 0,Sb=void 0,fb=0,gb=0,ub=0,vb=0,
Fb=0,Sa=0,Ca=0,Qa=0,Ka=0,ma=0,ta=0,D=0,Ha=void 0,Ra=F.__vertexArray,wb=F.__uvArray,hb=F.__uv2Array,Ta=F.__normalArray,ra=F.__tangentArray,La=F.__colorArray,Ua=F.__skinIndexArray,Va=F.__skinWeightArray,Gb=F.__morphTargetsArrays,Hc=F.__morphNormalsArrays,eb=F.__webglCustomAttributesList,B=void 0,Tb=F.__faceArray,Ia=F.__lineArray,wa=R.geometry,bb=wa.elementsNeedUpdate,Ic=wa.uvsNeedUpdate,gc=wa.normalsNeedUpdate,ea=wa.tangentsNeedUpdate,Db=wa.colorsNeedUpdate,S=wa.morphTargetsNeedUpdate,fa=wa.vertices,
N=F.faces3,xa=wa.faces,ua=wa.faceVertexUvs[0],Jc=wa.faceVertexUvs[1],Cc=wa.skinIndices,Ub=wa.skinWeights,mb=wa.morphTargets,Da=wa.morphNormals;if(wa.verticesNeedUpdate){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],aa=fa[da.a],$=fa[da.b],Z=fa[da.c],Ra[gb]=aa.x,Ra[gb+1]=aa.y,Ra[gb+2]=aa.z,Ra[gb+3]=$.x,Ra[gb+4]=$.y,Ra[gb+5]=$.z,Ra[gb+6]=Z.x,Ra[gb+7]=Z.y,Ra[gb+8]=Z.z,gb+=9;l.bindBuffer(l.ARRAY_BUFFER,F.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Ra,J)}if(S)for(Na=0,Yb=mb.length;Na<Yb;Na++){M=ta=0;for(Y=
N.length;M<Y;M++)Lb=N[M],da=xa[Lb],aa=mb[Na].vertices[da.a],$=mb[Na].vertices[da.b],Z=mb[Na].vertices[da.c],Ya=Gb[Na],Ya[ta]=aa.x,Ya[ta+1]=aa.y,Ya[ta+2]=aa.z,Ya[ta+3]=$.x,Ya[ta+4]=$.y,Ya[ta+5]=$.z,Ya[ta+6]=Z.x,Ya[ta+7]=Z.y,Ya[ta+8]=Z.z,W.morphNormals&&(X?(Sb=Da[Na].vertexNormals[Lb],za=Sb.a,oa=Sb.b,kc=Sb.c):kc=oa=za=Da[Na].faceNormals[Lb],ab=Hc[Na],ab[ta]=za.x,ab[ta+1]=za.y,ab[ta+2]=za.z,ab[ta+3]=oa.x,ab[ta+4]=oa.y,ab[ta+5]=oa.z,ab[ta+6]=kc.x,ab[ta+7]=kc.y,ab[ta+8]=kc.z),ta+=9;l.bindBuffer(l.ARRAY_BUFFER,
F.__webglMorphTargetsBuffers[Na]);l.bufferData(l.ARRAY_BUFFER,Gb[Na],J);W.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglMorphNormalsBuffers[Na]),l.bufferData(l.ARRAY_BUFFER,Hc[Na],J))}if(Ub.length){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],lc=Ub[da.a],Ba=Ub[da.b],mc=Ub[da.c],Va[ma]=lc.x,Va[ma+1]=lc.y,Va[ma+2]=lc.z,Va[ma+3]=lc.w,Va[ma+4]=Ba.x,Va[ma+5]=Ba.y,Va[ma+6]=Ba.z,Va[ma+7]=Ba.w,Va[ma+8]=mc.x,Va[ma+9]=mc.y,Va[ma+10]=mc.z,Va[ma+11]=mc.w,nc=Cc[da.a],Ga=Cc[da.b],oc=Cc[da.c],Ua[ma]=nc.x,Ua[ma+
1]=nc.y,Ua[ma+2]=nc.z,Ua[ma+3]=nc.w,Ua[ma+4]=Ga.x,Ua[ma+5]=Ga.y,Ua[ma+6]=Ga.z,Ua[ma+7]=Ga.w,Ua[ma+8]=oc.x,Ua[ma+9]=oc.y,Ua[ma+10]=oc.z,Ua[ma+11]=oc.w,ma+=12;0<ma&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ua,J),l.bindBuffer(l.ARRAY_BUFFER,F.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,Va,J))}if(Db){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],ga=da.vertexColors,qb=da.color,3===ga.length&&W.vertexColors===THREE.VertexColors?(la=ga[0],Pa=ga[1],Fa=ga[2]):
Fa=Pa=la=qb,La[Ka]=la.r,La[Ka+1]=la.g,La[Ka+2]=la.b,La[Ka+3]=Pa.r,La[Ka+4]=Pa.g,La[Ka+5]=Pa.b,La[Ka+6]=Fa.r,La[Ka+7]=Fa.g,La[Ka+8]=Fa.b,Ka+=9;0<Ka&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,La,J))}if(ea&&wa.hasTangents){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],sa=da.vertexTangents,Ab=sa[0],qa=sa[1],K=sa[2],ra[Ca]=Ab.x,ra[Ca+1]=Ab.y,ra[Ca+2]=Ab.z,ra[Ca+3]=Ab.w,ra[Ca+4]=qa.x,ra[Ca+5]=qa.y,ra[Ca+6]=qa.z,ra[Ca+7]=qa.w,ra[Ca+8]=K.x,ra[Ca+9]=K.y,ra[Ca+10]=K.z,ra[Ca+11]=
K.w,Ca+=12;l.bindBuffer(l.ARRAY_BUFFER,F.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,ra,J)}if(gc){M=0;for(Y=N.length;M<Y;M++)if(da=xa[N[M]],ba=da.vertexNormals,db=da.normal,3===ba.length&&X)for(Aa=0;3>Aa;Aa++)Eb=ba[Aa],Ta[Sa]=Eb.x,Ta[Sa+1]=Eb.y,Ta[Sa+2]=Eb.z,Sa+=3;else for(Aa=0;3>Aa;Aa++)Ta[Sa]=db.x,Ta[Sa+1]=db.y,Ta[Sa+2]=db.z,Sa+=3;l.bindBuffer(l.ARRAY_BUFFER,F.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,Ta,J)}if(Ic&&ua){M=0;for(Y=N.length;M<Y;M++)if(ka=N[M],ya=ua[ka],void 0!==ya)for(Aa=
0;3>Aa;Aa++)Ma=ya[Aa],wb[ub]=Ma.x,wb[ub+1]=Ma.y,ub+=2;0<ub&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,wb,J))}if(Ic&&Jc){M=0;for(Y=N.length;M<Y;M++)if(ka=N[M],ia=Jc[ka],void 0!==ia)for(Aa=0;3>Aa;Aa++)Bb=ia[Aa],hb[vb]=Bb.x,hb[vb+1]=Bb.y,vb+=2;0<vb&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,hb,J))}if(bb){M=0;for(Y=N.length;M<Y;M++)Tb[Fb]=fb,Tb[Fb+1]=fb+1,Tb[Fb+2]=fb+2,Fb+=3,Ia[Qa]=fb,Ia[Qa+1]=fb+1,Ia[Qa+2]=fb,Ia[Qa+3]=fb+2,Ia[Qa+4]=
fb+1,Ia[Qa+5]=fb+2,Qa+=6,fb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,F.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Tb,J);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,F.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Ia,J)}if(eb)for(Aa=0,va=eb.length;Aa<va;Aa++)if(B=eb[Aa],B.__original.needsUpdate){D=0;if(1===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)da=xa[N[M]],B.array[D]=B.value[da.a],B.array[D+1]=B.value[da.b],B.array[D+2]=B.value[da.c],D+=3;else{if("faces"===
C?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(L,G.buffer);l.bufferData(L,G.array,l.STATIC_DRAW);G.needsUpdate=!1}}else if(e instanceof THREE.Mesh){!0===r.groupsNeedUpdate&&u(a,e,r);for(var P=Bb[r.id],Q=0,T=P.length;Q<T;Q++){var O=P[Q];v=d(e,O);!0===r.groupsNeedUpdate&&c(O,e);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.morphTargetsNeedUpdate||r.elementsNeedUpdate||r.uvsNeedUpdate||r.normalsNeedUpdate||r.colorsNeedUpdate||r.tangentsNeedUpdate||s){var F=O,R=e,J=l.DYNAMIC_DRAW,Ja=!r.dynamic,
W=v;if(F.__inittedArrays){var X=W&&void 0!==W.shading&&W.shading===THREE.SmoothShading,M=void 0,Y=void 0,ka=void 0,da=void 0,ba=void 0,db=void 0,ga=void 0,qb=void 0,sa=void 0,ya=void 0,ia=void 0,aa=void 0,$=void 0,Z=void 0,Ab=void 0,qa=void 0,K=void 0,za=void 0,oa=void 0,lc=void 0,la=void 0,Pa=void 0,mc=void 0,nc=void 0,Ba=void 0,Fa=void 0,oc=void 0,Ga=void 0,pc=void 0,Aa=void 0,va=void 0,Cb=void 0,Ma=void 0,Pb=void 0,Na=void 0,Jb=void 0,Ya=void 0,ab=void 0,tc=void 0,Qb=void 0,fb=0,gb=0,ub=0,vb=0,
Db=0,Sa=0,Ca=0,Qa=0,Ka=0,ma=0,ta=0,D=0,Ha=void 0,Ra=F.__vertexArray,wb=F.__uvArray,hb=F.__uv2Array,Ta=F.__normalArray,ra=F.__tangentArray,La=F.__colorArray,Ua=F.__skinIndexArray,Va=F.__skinWeightArray,Eb=F.__morphTargetsArrays,Hc=F.__morphNormalsArrays,eb=F.__webglCustomAttributesList,B=void 0,Rb=F.__faceArray,Ia=F.__lineArray,wa=R.geometry,bb=wa.elementsNeedUpdate,Ic=wa.uvsNeedUpdate,fc=wa.normalsNeedUpdate,ea=wa.tangentsNeedUpdate,gc=wa.colorsNeedUpdate,S=wa.morphTargetsNeedUpdate,fa=wa.vertices,
N=F.faces3,xa=wa.faces,ua=wa.faceVertexUvs[0],Jc=wa.faceVertexUvs[1],Cc=wa.skinIndices,Sb=wa.skinWeights,mb=wa.morphTargets,Da=wa.morphNormals;if(wa.verticesNeedUpdate){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],aa=fa[da.a],$=fa[da.b],Z=fa[da.c],Ra[gb]=aa.x,Ra[gb+1]=aa.y,Ra[gb+2]=aa.z,Ra[gb+3]=$.x,Ra[gb+4]=$.y,Ra[gb+5]=$.z,Ra[gb+6]=Z.x,Ra[gb+7]=Z.y,Ra[gb+8]=Z.z,gb+=9;l.bindBuffer(l.ARRAY_BUFFER,F.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Ra,J)}if(S)for(Na=0,Jb=mb.length;Na<Jb;Na++){M=ta=0;for(Y=
N.length;M<Y;M++)tc=N[M],da=xa[tc],aa=mb[Na].vertices[da.a],$=mb[Na].vertices[da.b],Z=mb[Na].vertices[da.c],Ya=Eb[Na],Ya[ta]=aa.x,Ya[ta+1]=aa.y,Ya[ta+2]=aa.z,Ya[ta+3]=$.x,Ya[ta+4]=$.y,Ya[ta+5]=$.z,Ya[ta+6]=Z.x,Ya[ta+7]=Z.y,Ya[ta+8]=Z.z,W.morphNormals&&(X?(Qb=Da[Na].vertexNormals[tc],za=Qb.a,oa=Qb.b,lc=Qb.c):lc=oa=za=Da[Na].faceNormals[tc],ab=Hc[Na],ab[ta]=za.x,ab[ta+1]=za.y,ab[ta+2]=za.z,ab[ta+3]=oa.x,ab[ta+4]=oa.y,ab[ta+5]=oa.z,ab[ta+6]=lc.x,ab[ta+7]=lc.y,ab[ta+8]=lc.z),ta+=9;l.bindBuffer(l.ARRAY_BUFFER,
F.__webglMorphTargetsBuffers[Na]);l.bufferData(l.ARRAY_BUFFER,Eb[Na],J);W.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglMorphNormalsBuffers[Na]),l.bufferData(l.ARRAY_BUFFER,Hc[Na],J))}if(Sb.length){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],nc=Sb[da.a],Ba=Sb[da.b],Fa=Sb[da.c],Va[ma]=nc.x,Va[ma+1]=nc.y,Va[ma+2]=nc.z,Va[ma+3]=nc.w,Va[ma+4]=Ba.x,Va[ma+5]=Ba.y,Va[ma+6]=Ba.z,Va[ma+7]=Ba.w,Va[ma+8]=Fa.x,Va[ma+9]=Fa.y,Va[ma+10]=Fa.z,Va[ma+11]=Fa.w,oc=Cc[da.a],Ga=Cc[da.b],pc=Cc[da.c],Ua[ma]=oc.x,Ua[ma+
1]=oc.y,Ua[ma+2]=oc.z,Ua[ma+3]=oc.w,Ua[ma+4]=Ga.x,Ua[ma+5]=Ga.y,Ua[ma+6]=Ga.z,Ua[ma+7]=Ga.w,Ua[ma+8]=pc.x,Ua[ma+9]=pc.y,Ua[ma+10]=pc.z,Ua[ma+11]=pc.w,ma+=12;0<ma&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ua,J),l.bindBuffer(l.ARRAY_BUFFER,F.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,Va,J))}if(gc){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],ga=da.vertexColors,qb=da.color,3===ga.length&&W.vertexColors===THREE.VertexColors?(la=ga[0],Pa=ga[1],mc=ga[2]):
mc=Pa=la=qb,La[Ka]=la.r,La[Ka+1]=la.g,La[Ka+2]=la.b,La[Ka+3]=Pa.r,La[Ka+4]=Pa.g,La[Ka+5]=Pa.b,La[Ka+6]=mc.r,La[Ka+7]=mc.g,La[Ka+8]=mc.b,Ka+=9;0<Ka&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,La,J))}if(ea&&wa.hasTangents){M=0;for(Y=N.length;M<Y;M++)da=xa[N[M]],sa=da.vertexTangents,Ab=sa[0],qa=sa[1],K=sa[2],ra[Ca]=Ab.x,ra[Ca+1]=Ab.y,ra[Ca+2]=Ab.z,ra[Ca+3]=Ab.w,ra[Ca+4]=qa.x,ra[Ca+5]=qa.y,ra[Ca+6]=qa.z,ra[Ca+7]=qa.w,ra[Ca+8]=K.x,ra[Ca+9]=K.y,ra[Ca+10]=K.z,ra[Ca+11]=
K.w,Ca+=12;l.bindBuffer(l.ARRAY_BUFFER,F.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,ra,J)}if(fc){M=0;for(Y=N.length;M<Y;M++)if(da=xa[N[M]],ba=da.vertexNormals,db=da.normal,3===ba.length&&X)for(Aa=0;3>Aa;Aa++)Cb=ba[Aa],Ta[Sa]=Cb.x,Ta[Sa+1]=Cb.y,Ta[Sa+2]=Cb.z,Sa+=3;else for(Aa=0;3>Aa;Aa++)Ta[Sa]=db.x,Ta[Sa+1]=db.y,Ta[Sa+2]=db.z,Sa+=3;l.bindBuffer(l.ARRAY_BUFFER,F.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,Ta,J)}if(Ic&&ua){M=0;for(Y=N.length;M<Y;M++)if(ka=N[M],ya=ua[ka],void 0!==ya)for(Aa=
0;3>Aa;Aa++)Ma=ya[Aa],wb[ub]=Ma.x,wb[ub+1]=Ma.y,ub+=2;0<ub&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,wb,J))}if(Ic&&Jc){M=0;for(Y=N.length;M<Y;M++)if(ka=N[M],ia=Jc[ka],void 0!==ia)for(Aa=0;3>Aa;Aa++)Pb=ia[Aa],hb[vb]=Pb.x,hb[vb+1]=Pb.y,vb+=2;0<vb&&(l.bindBuffer(l.ARRAY_BUFFER,F.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,hb,J))}if(bb){M=0;for(Y=N.length;M<Y;M++)Rb[Db]=fb,Rb[Db+1]=fb+1,Rb[Db+2]=fb+2,Db+=3,Ia[Qa]=fb,Ia[Qa+1]=fb+1,Ia[Qa+2]=fb,Ia[Qa+3]=fb+2,Ia[Qa+4]=
fb+1,Ia[Qa+5]=fb+2,Qa+=6,fb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,F.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Rb,J);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,F.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Ia,J)}if(eb)for(Aa=0,va=eb.length;Aa<va;Aa++)if(B=eb[Aa],B.__original.needsUpdate){D=0;if(1===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)da=xa[N[M]],B.array[D]=B.value[da.a],B.array[D+1]=B.value[da.b],B.array[D+2]=B.value[da.c],D+=3;else{if("faces"===
B.boundTo)for(M=0,Y=N.length;M<Y;M++)Ha=B.value[N[M]],B.array[D]=Ha,B.array[D+1]=Ha,B.array[D+2]=Ha,D+=3}else if(2===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)da=xa[N[M]],aa=B.value[da.a],$=B.value[da.b],Z=B.value[da.c],B.array[D]=aa.x,B.array[D+1]=aa.y,B.array[D+2]=$.x,B.array[D+3]=$.y,B.array[D+4]=Z.x,B.array[D+5]=Z.y,D+=6;else{if("faces"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)Z=$=aa=Ha=B.value[N[M]],B.array[D]=aa.x,B.array[D+1]=aa.y,B.array[D+2]=$.x,B.array[D+
3]=$.y,B.array[D+4]=Z.x,B.array[D+5]=Z.y,D+=6}else if(3===B.size){var na;na="c"===B.type?["r","g","b"]:["x","y","z"];if(void 0===B.boundTo||"vertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)da=xa[N[M]],aa=B.value[da.a],$=B.value[da.b],Z=B.value[da.c],B.array[D]=aa[na[0]],B.array[D+1]=aa[na[1]],B.array[D+2]=aa[na[2]],B.array[D+3]=$[na[0]],B.array[D+4]=$[na[1]],B.array[D+5]=$[na[2]],B.array[D+6]=Z[na[0]],B.array[D+7]=Z[na[1]],B.array[D+8]=Z[na[2]],D+=9;else if("faces"===B.boundTo)for(M=0,Y=N.length;M<
Y;M++)Z=$=aa=Ha=B.value[N[M]],B.array[D]=aa[na[0]],B.array[D+1]=aa[na[1]],B.array[D+2]=aa[na[2]],B.array[D+3]=$[na[0]],B.array[D+4]=$[na[1]],B.array[D+5]=$[na[2]],B.array[D+6]=Z[na[0]],B.array[D+7]=Z[na[1]],B.array[D+8]=Z[na[2]],D+=9;else if("faceVertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)Ha=B.value[N[M]],aa=Ha[0],$=Ha[1],Z=Ha[2],B.array[D]=aa[na[0]],B.array[D+1]=aa[na[1]],B.array[D+2]=aa[na[2]],B.array[D+3]=$[na[0]],B.array[D+4]=$[na[1]],B.array[D+5]=$[na[2]],B.array[D+6]=Z[na[0]],B.array[D+
7]=Z[na[1]],B.array[D+8]=Z[na[2]],D+=9}else if(4===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)da=xa[N[M]],aa=B.value[da.a],$=B.value[da.b],Z=B.value[da.c],B.array[D]=aa.x,B.array[D+1]=aa.y,B.array[D+2]=aa.z,B.array[D+3]=aa.w,B.array[D+4]=$.x,B.array[D+5]=$.y,B.array[D+6]=$.z,B.array[D+7]=$.w,B.array[D+8]=Z.x,B.array[D+9]=Z.y,B.array[D+10]=Z.z,B.array[D+11]=Z.w,D+=12;else if("faces"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)Z=$=aa=Ha=B.value[N[M]],B.array[D]=aa.x,
B.array[D+1]=aa.y,B.array[D+2]=aa.z,B.array[D+3]=aa.w,B.array[D+4]=$.x,B.array[D+5]=$.y,B.array[D+6]=$.z,B.array[D+7]=$.w,B.array[D+8]=Z.x,B.array[D+9]=Z.y,B.array[D+10]=Z.z,B.array[D+11]=Z.w,D+=12;else if("faceVertices"===B.boundTo)for(M=0,Y=N.length;M<Y;M++)Ha=B.value[N[M]],aa=Ha[0],$=Ha[1],Z=Ha[2],B.array[D]=aa.x,B.array[D+1]=aa.y,B.array[D+2]=aa.z,B.array[D+3]=aa.w,B.array[D+4]=$.x,B.array[D+5]=$.y,B.array[D+6]=$.z,B.array[D+7]=$.w,B.array[D+8]=Z.x,B.array[D+9]=Z.y,B.array[D+10]=Z.z,B.array[D+
11]=Z.w,D+=12;l.bindBuffer(l.ARRAY_BUFFER,B.buffer);l.bufferData(l.ARRAY_BUFFER,B.array,J)}Ja&&(delete F.__inittedArrays,delete F.__colorArray,delete F.__normalArray,delete F.__tangentArray,delete F.__uvArray,delete F.__uv2Array,delete F.__faceArray,delete F.__vertexArray,delete F.__lineArray,delete F.__skinIndexArray,delete F.__skinWeightArray)}}}r.verticesNeedUpdate=!1;r.morphTargetsNeedUpdate=!1;r.elementsNeedUpdate=!1;r.uvsNeedUpdate=!1;r.normalsNeedUpdate=!1;r.colorsNeedUpdate=!1;r.tangentsNeedUpdate=
!1;v.attributes&&x(v)}else if(e instanceof THREE.Line){v=d(e,r);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.colorsNeedUpdate||r.lineDistancesNeedUpdate||s){var ac=l.DYNAMIC_DRAW,cb,Hb,ib,bc,ha,uc,Cb=r.vertices,Mb=r.colors,Nb=r.lineDistances,Ob=Cb.length,Qb=Mb.length,Zb=Nb.length,jb=r.__vertexArray,kb=r.__colorArray,Rb=r.__lineDistanceArray,$b=r.colorsNeedUpdate,tc=r.lineDistancesNeedUpdate,fc=r.__webglCustomAttributesList,vc,jc,Ea,hc,Wa,pa;if(r.verticesNeedUpdate){for(cb=0;cb<Ob;cb++)bc=Cb[cb],
ha=3*cb,jb[ha]=bc.x,jb[ha+1]=bc.y,jb[ha+2]=bc.z;l.bindBuffer(l.ARRAY_BUFFER,r.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,jb,ac)}if($b){for(Hb=0;Hb<Qb;Hb++)uc=Mb[Hb],ha=3*Hb,kb[ha]=uc.r,kb[ha+1]=uc.g,kb[ha+2]=uc.b;l.bindBuffer(l.ARRAY_BUFFER,r.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,kb,ac)}if(tc){for(ib=0;ib<Zb;ib++)Rb[ib]=Nb[ib];l.bindBuffer(l.ARRAY_BUFFER,r.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,Rb,ac)}if(fc)for(vc=0,jc=fc.length;vc<jc;vc++)if(pa=fc[vc],pa.needsUpdate&&
(void 0===pa.boundTo||"vertices"===pa.boundTo)){ha=0;hc=pa.value.length;if(1===pa.size)for(Ea=0;Ea<hc;Ea++)pa.array[Ea]=pa.value[Ea];else if(2===pa.size)for(Ea=0;Ea<hc;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,ha+=2;else if(3===pa.size)if("c"===pa.type)for(Ea=0;Ea<hc;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.r,pa.array[ha+1]=Wa.g,pa.array[ha+2]=Wa.b,ha+=3;else for(Ea=0;Ea<hc;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,pa.array[ha+2]=Wa.z,ha+=3;else if(4===pa.size)for(Ea=
0;Ea<hc;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,pa.array[ha+2]=Wa.z,pa.array[ha+3]=Wa.w,ha+=4;l.bindBuffer(l.ARRAY_BUFFER,pa.buffer);l.bufferData(l.ARRAY_BUFFER,pa.array,ac)}}r.verticesNeedUpdate=!1;r.colorsNeedUpdate=!1;r.lineDistancesNeedUpdate=!1;v.attributes&&x(v)}else if(e instanceof THREE.PointCloud){v=d(e,r);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.colorsNeedUpdate||e.sortParticles||s){var tb=l.DYNAMIC_DRAW,Xa,xb,yb,V,zb,Vb,wc=r.vertices,Pb=wc.length,rb=r.colors,pc=
rb.length,cc=r.__vertexArray,dc=r.__colorArray,Ib=r.__sortArray,qc=r.verticesNeedUpdate,rc=r.colorsNeedUpdate,Jb=r.__webglCustomAttributesList,nb,ic,ca,ob,ja,U;if(e.sortParticles){Dc.copy(xc);Dc.multiply(e.matrixWorld);for(Xa=0;Xa<Pb;Xa++)yb=wc[Xa],Oa.copy(yb),Oa.applyProjection(Dc),Ib[Xa]=[Oa.z,Xa];Ib.sort(p);for(Xa=0;Xa<Pb;Xa++)yb=wc[Ib[Xa][1]],V=3*Xa,cc[V]=yb.x,cc[V+1]=yb.y,cc[V+2]=yb.z;for(xb=0;xb<pc;xb++)V=3*xb,Vb=rb[Ib[xb][1]],dc[V]=Vb.r,dc[V+1]=Vb.g,dc[V+2]=Vb.b;if(Jb)for(nb=0,ic=Jb.length;nb<
ic;nb++)if(U=Jb[nb],void 0===U.boundTo||"vertices"===U.boundTo)if(V=0,ob=U.value.length,1===U.size)for(ca=0;ca<ob;ca++)zb=Ib[ca][1],U.array[ca]=U.value[zb];else if(2===U.size)for(ca=0;ca<ob;ca++)zb=Ib[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,V+=2;else if(3===U.size)if("c"===U.type)for(ca=0;ca<ob;ca++)zb=Ib[ca][1],ja=U.value[zb],U.array[V]=ja.r,U.array[V+1]=ja.g,U.array[V+2]=ja.b,V+=3;else for(ca=0;ca<ob;ca++)zb=Ib[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=
ja.z,V+=3;else if(4===U.size)for(ca=0;ca<ob;ca++)zb=Ib[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=ja.z,U.array[V+3]=ja.w,V+=4}else{if(qc)for(Xa=0;Xa<Pb;Xa++)yb=wc[Xa],V=3*Xa,cc[V]=yb.x,cc[V+1]=yb.y,cc[V+2]=yb.z;if(rc)for(xb=0;xb<pc;xb++)Vb=rb[xb],V=3*xb,dc[V]=Vb.r,dc[V+1]=Vb.g,dc[V+2]=Vb.b;if(Jb)for(nb=0,ic=Jb.length;nb<ic;nb++)if(U=Jb[nb],U.needsUpdate&&(void 0===U.boundTo||"vertices"===U.boundTo))if(ob=U.value.length,V=0,1===U.size)for(ca=0;ca<ob;ca++)U.array[ca]=U.value[ca];
!1;v.attributes&&x(v)}else if(e instanceof THREE.Line){v=d(e,r);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.colorsNeedUpdate||r.lineDistancesNeedUpdate||s){var Zb=l.DYNAMIC_DRAW,cb,Fb,ib,$b,ha,uc,sb=r.vertices,dc=r.colors,Kb=r.lineDistances,Wb=sb.length,Lb=dc.length,Ob=Kb.length,jb=r.__vertexArray,kb=r.__colorArray,rb=r.__lineDistanceArray,Xb=r.colorsNeedUpdate,Yb=r.lineDistancesNeedUpdate,ec=r.__webglCustomAttributesList,vc,kc,Ea,ic,Wa,pa;if(r.verticesNeedUpdate){for(cb=0;cb<Wb;cb++)$b=sb[cb],
ha=3*cb,jb[ha]=$b.x,jb[ha+1]=$b.y,jb[ha+2]=$b.z;l.bindBuffer(l.ARRAY_BUFFER,r.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,jb,Zb)}if(Xb){for(Fb=0;Fb<Lb;Fb++)uc=dc[Fb],ha=3*Fb,kb[ha]=uc.r,kb[ha+1]=uc.g,kb[ha+2]=uc.b;l.bindBuffer(l.ARRAY_BUFFER,r.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,kb,Zb)}if(Yb){for(ib=0;ib<Ob;ib++)rb[ib]=Kb[ib];l.bindBuffer(l.ARRAY_BUFFER,r.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,rb,Zb)}if(ec)for(vc=0,kc=ec.length;vc<kc;vc++)if(pa=ec[vc],pa.needsUpdate&&
(void 0===pa.boundTo||"vertices"===pa.boundTo)){ha=0;ic=pa.value.length;if(1===pa.size)for(Ea=0;Ea<ic;Ea++)pa.array[Ea]=pa.value[Ea];else if(2===pa.size)for(Ea=0;Ea<ic;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,ha+=2;else if(3===pa.size)if("c"===pa.type)for(Ea=0;Ea<ic;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.r,pa.array[ha+1]=Wa.g,pa.array[ha+2]=Wa.b,ha+=3;else for(Ea=0;Ea<ic;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,pa.array[ha+2]=Wa.z,ha+=3;else if(4===pa.size)for(Ea=
0;Ea<ic;Ea++)Wa=pa.value[Ea],pa.array[ha]=Wa.x,pa.array[ha+1]=Wa.y,pa.array[ha+2]=Wa.z,pa.array[ha+3]=Wa.w,ha+=4;l.bindBuffer(l.ARRAY_BUFFER,pa.buffer);l.bufferData(l.ARRAY_BUFFER,pa.array,Zb)}}r.verticesNeedUpdate=!1;r.colorsNeedUpdate=!1;r.lineDistancesNeedUpdate=!1;v.attributes&&x(v)}else if(e instanceof THREE.PointCloud){v=d(e,r);s=v.attributes&&y(v);if(r.verticesNeedUpdate||r.colorsNeedUpdate||e.sortParticles||s){var hc=l.DYNAMIC_DRAW,Xa,xb,yb,V,zb,Tb,wc=r.vertices,tb=wc.length,Mb=r.colors,Nb=
Mb.length,ac=r.__vertexArray,bc=r.__colorArray,Gb=r.__sortArray,qc=r.verticesNeedUpdate,rc=r.colorsNeedUpdate,Hb=r.__webglCustomAttributesList,nb,jc,ca,ob,ja,U;if(e.sortParticles){Dc.copy(xc);Dc.multiply(e.matrixWorld);for(Xa=0;Xa<tb;Xa++)yb=wc[Xa],Oa.copy(yb),Oa.applyProjection(Dc),Gb[Xa]=[Oa.z,Xa];Gb.sort(p);for(Xa=0;Xa<tb;Xa++)yb=wc[Gb[Xa][1]],V=3*Xa,ac[V]=yb.x,ac[V+1]=yb.y,ac[V+2]=yb.z;for(xb=0;xb<Nb;xb++)V=3*xb,Tb=Mb[Gb[xb][1]],bc[V]=Tb.r,bc[V+1]=Tb.g,bc[V+2]=Tb.b;if(Hb)for(nb=0,jc=Hb.length;nb<
jc;nb++)if(U=Hb[nb],void 0===U.boundTo||"vertices"===U.boundTo)if(V=0,ob=U.value.length,1===U.size)for(ca=0;ca<ob;ca++)zb=Gb[ca][1],U.array[ca]=U.value[zb];else if(2===U.size)for(ca=0;ca<ob;ca++)zb=Gb[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,V+=2;else if(3===U.size)if("c"===U.type)for(ca=0;ca<ob;ca++)zb=Gb[ca][1],ja=U.value[zb],U.array[V]=ja.r,U.array[V+1]=ja.g,U.array[V+2]=ja.b,V+=3;else for(ca=0;ca<ob;ca++)zb=Gb[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=
ja.z,V+=3;else if(4===U.size)for(ca=0;ca<ob;ca++)zb=Gb[ca][1],ja=U.value[zb],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=ja.z,U.array[V+3]=ja.w,V+=4}else{if(qc)for(Xa=0;Xa<tb;Xa++)yb=wc[Xa],V=3*Xa,ac[V]=yb.x,ac[V+1]=yb.y,ac[V+2]=yb.z;if(rc)for(xb=0;xb<Nb;xb++)Tb=Mb[xb],V=3*xb,bc[V]=Tb.r,bc[V+1]=Tb.g,bc[V+2]=Tb.b;if(Hb)for(nb=0,jc=Hb.length;nb<jc;nb++)if(U=Hb[nb],U.needsUpdate&&(void 0===U.boundTo||"vertices"===U.boundTo))if(ob=U.value.length,V=0,1===U.size)for(ca=0;ca<ob;ca++)U.array[ca]=U.value[ca];
else if(2===U.size)for(ca=0;ca<ob;ca++)ja=U.value[ca],U.array[V]=ja.x,U.array[V+1]=ja.y,V+=2;else if(3===U.size)if("c"===U.type)for(ca=0;ca<ob;ca++)ja=U.value[ca],U.array[V]=ja.r,U.array[V+1]=ja.g,U.array[V+2]=ja.b,V+=3;else for(ca=0;ca<ob;ca++)ja=U.value[ca],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=ja.z,V+=3;else if(4===U.size)for(ca=0;ca<ob;ca++)ja=U.value[ca],U.array[V]=ja.x,U.array[V+1]=ja.y,U.array[V+2]=ja.z,U.array[V+3]=ja.w,V+=4}if(qc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,r.__webglVertexBuffer),
l.bufferData(l.ARRAY_BUFFER,cc,tb);if(rc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,r.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,dc,tb);if(Jb)for(nb=0,ic=Jb.length;nb<ic;nb++)if(U=Jb[nb],U.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,U.buffer),l.bufferData(l.ARRAY_BUFFER,U.array,tb)}r.verticesNeedUpdate=!1;r.colorsNeedUpdate=!1;v.attributes&&x(v)}for(var ec=0,Ec=t.length;ec<Ec;ec++){var yc=t[ec],Wb=yc,sc=Wb.object,zc=Wb.buffer,Ac=sc.geometry,Xb=sc.material;Xb instanceof THREE.MeshFaceMaterial?
(Xb=Xb.materials[Ac instanceof THREE.BufferGeometry?0:zc.materialIndex],Wb.material=Xb,Xb.transparent?pb.push(Wb):Kb.push(Wb)):Xb&&(Wb.material=Xb,Xb.transparent?pb.push(Wb):Kb.push(Wb));yc.render=!0;!0===H.sortObjects&&(null!==e.renderDepth?yc.z=e.renderDepth:(Oa.setFromMatrixPosition(e.matrixWorld),Oa.applyProjection(xc),yc.z=Oa.z))}}}ec=0;for(Ec=e.children.length;ec<Ec;ec++)q(a,e.children[ec])}}function m(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)a[d].render(b,c,pc,qc)}function r(a,
l.bufferData(l.ARRAY_BUFFER,ac,hc);if(rc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,r.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,bc,hc);if(Hb)for(nb=0,jc=Hb.length;nb<jc;nb++)if(U=Hb[nb],U.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,U.buffer),l.bufferData(l.ARRAY_BUFFER,U.array,hc)}r.verticesNeedUpdate=!1;r.colorsNeedUpdate=!1;v.attributes&&x(v)}for(var cc=0,Ec=t.length;cc<Ec;cc++){var yc=t[cc],Ub=yc,sc=Ub.object,zc=Ub.buffer,Ac=sc.geometry,Vb=sc.material;Vb instanceof THREE.MeshFaceMaterial?
(Vb=Vb.materials[Ac instanceof THREE.BufferGeometry?0:zc.materialIndex],Ub.material=Vb,Vb.transparent?pb.push(Ub):Ib.push(Ub)):Vb&&(Ub.material=Vb,Vb.transparent?pb.push(Ub):Ib.push(Ub));yc.render=!0;!0===H.sortObjects&&(null!==e.renderDepth?yc.z=e.renderDepth:(Oa.setFromMatrixPosition(e.matrixWorld),Oa.applyProjection(xc),yc.z=Oa.z))}}}cc=0;for(Ec=e.children.length;cc<Ec;cc++)q(a,e.children[cc])}}function m(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)a[d].render(b,c,qc,rc)}function r(a,
b,c,d,e,f){for(var g,h=a.length-1;-1!==h;h--){g=a[h];var k=g.object,l=g.buffer;z(k,b);if(f)g=f;else{g=g.material;if(!g)continue;e&&H.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);H.setDepthTest(g.depthTest);H.setDepthWrite(g.depthWrite);G(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}H.setMaterialFaces(g);l instanceof THREE.BufferGeometry?H.renderBufferDirect(b,c,d,g,l,k):H.renderBuffer(b,c,d,g,l,k)}}function t(a,b,c,d,e,f,g){for(var h,k=0,l=a.length;k<l;k++){h=a[k];
var m=h.object;if(m.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&H.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);H.setDepthTest(h.depthTest);H.setDepthWrite(h.depthWrite);G(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}H.renderImmediateObject(c,d,e,h,m)}}}function s(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function u(a,b,d){var e=b.material,f=!1;if(void 0===sb[d.id]||!0===d.groupsNeedUpdate){delete $a[b.id];
a=sb;for(var g=d.id,e=e instanceof THREE.MeshFaceMaterial,h=sa.get("OES_element_index_uint")?4294967296:65535,k,f={},m=d.morphTargets.length,n=d.morphNormals.length,p,r={},q=[],t=0,s=d.faces.length;t<s;t++){k=d.faces[t];var u=e?k.materialIndex:0;u in f||(f[u]={hash:u,counter:0});k=f[u].hash+"_"+f[u].counter;k in r||(p={id:rc++,faces3:[],materialIndex:u,vertices:0,numMorphTargets:m,numMorphNormals:n},r[k]=p,q.push(p));r[k].vertices+3>h&&(f[u].counter+=1,k=f[u].hash+"_"+f[u].counter,k in r||(p={id:rc++,
faces3:[],materialIndex:u,vertices:0,numMorphTargets:m,numMorphNormals:n},r[k]=p,q.push(p)));r[k].faces3.push(t);r[k].vertices+=3}a[g]=q;d.groupsNeedUpdate=!1}a=sb[d.id];g=0;for(e=a.length;g<e;g++){h=a[g];if(void 0===h.__webglVertexBuffer){f=h;f.__webglVertexBuffer=l.createBuffer();f.__webglNormalBuffer=l.createBuffer();f.__webglTangentBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();f.__webglUVBuffer=l.createBuffer();f.__webglUV2Buffer=l.createBuffer();f.__webglSkinIndicesBuffer=l.createBuffer();
var m=h.object;if(m.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&H.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);H.setDepthTest(h.depthTest);H.setDepthWrite(h.depthWrite);G(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}H.renderImmediateObject(c,d,e,h,m)}}}function s(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function u(a,b,d){var e=b.material,f=!1;if(void 0===Bb[d.id]||!0===d.groupsNeedUpdate){delete $a[b.id];
a=Bb;for(var g=d.id,e=e instanceof THREE.MeshFaceMaterial,h=sa.get("OES_element_index_uint")?4294967296:65535,k,f={},m=d.morphTargets.length,n=d.morphNormals.length,p,r={},q=[],t=0,s=d.faces.length;t<s;t++){k=d.faces[t];var u=e?k.materialIndex:0;u in f||(f[u]={hash:u,counter:0});k=f[u].hash+"_"+f[u].counter;k in r||(p={id:sc++,faces3:[],materialIndex:u,vertices:0,numMorphTargets:m,numMorphNormals:n},r[k]=p,q.push(p));r[k].vertices+3>h&&(f[u].counter+=1,k=f[u].hash+"_"+f[u].counter,k in r||(p={id:sc++,
faces3:[],materialIndex:u,vertices:0,numMorphTargets:m,numMorphNormals:n},r[k]=p,q.push(p)));r[k].faces3.push(t);r[k].vertices+=3}a[g]=q;d.groupsNeedUpdate=!1}a=Bb[d.id];g=0;for(e=a.length;g<e;g++){h=a[g];if(void 0===h.__webglVertexBuffer){f=h;f.__webglVertexBuffer=l.createBuffer();f.__webglNormalBuffer=l.createBuffer();f.__webglTangentBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();f.__webglUVBuffer=l.createBuffer();f.__webglUV2Buffer=l.createBuffer();f.__webglSkinIndicesBuffer=l.createBuffer();
f.__webglSkinWeightsBuffer=l.createBuffer();f.__webglFaceBuffer=l.createBuffer();f.__webglLineBuffer=l.createBuffer();n=m=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],m=0,n=f.numMorphTargets;m<n;m++)f.__webglMorphTargetsBuffers.push(l.createBuffer());if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],m=0,n=f.numMorphNormals;m<n;m++)f.__webglMorphNormalsBuffers.push(l.createBuffer());H.info.memory.geometries++;c(h,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=
!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=!0}else f=!1;(f||void 0===b.__webglActive)&&w($a,h,b)}b.__webglActive=!0}function w(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function y(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function v(a,b,c,d,e){var f,g,h,k;Lb=0;if(d.needsUpdate){d.program&&sc(d);d.addEventListener("dispose",
zc);var m;d instanceof THREE.MeshDepthMaterial?m="depth":d instanceof THREE.MeshNormalMaterial?m="normal":d instanceof THREE.MeshBasicMaterial?m="basic":d instanceof THREE.MeshLambertMaterial?m="lambert":d instanceof THREE.MeshPhongMaterial?m="phong":d instanceof THREE.LineBasicMaterial?m="basic":d instanceof THREE.LineDashedMaterial?m="dashed":d instanceof THREE.PointCloudMaterial&&(m="particle_basic");if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),
!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=!0}else f=!1;(f||void 0===b.__webglActive)&&w($a,h,b)}b.__webglActive=!0}function w(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function y(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function v(a,b,c,d,e){var f,g,h,k;dc=0;if(d.needsUpdate){d.program&&zc(d);d.addEventListener("dispose",
Ac);var m;d instanceof THREE.MeshDepthMaterial?m="depth":d instanceof THREE.MeshNormalMaterial?m="normal":d instanceof THREE.MeshBasicMaterial?m="basic":d instanceof THREE.MeshLambertMaterial?m="lambert":d instanceof THREE.MeshPhongMaterial?m="phong":d instanceof THREE.LineBasicMaterial?m="basic":d instanceof THREE.LineDashedMaterial?m="dashed":d instanceof THREE.PointCloudMaterial&&(m="particle_basic");if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),
vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=0,r=0,q=0,t=0,s=0,u=b.length;s<u;s++){var w=b[s];w.onlyShadow||!1===w.visible||(w instanceof THREE.DirectionalLight&&p++,w instanceof THREE.PointLight&&r++,w instanceof THREE.SpotLight&&q++,w instanceof THREE.HemisphereLight&&t++)}f=p;g=r;h=q;k=t;for(var x,v=0,y=0,z=b.length;y<z;y++){var G=b[y];G.castShadow&&(G instanceof THREE.SpotLight&&
v++,G instanceof THREE.DirectionalLight&&!G.shadowCascade&&v++)}x=v;var F;if(tc&&e&&e.skeleton&&e.skeleton.useVertexTexture)F=1024;else{var T=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),J=Math.floor((T-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(J=Math.min(e.skeleton.bones.length,J),J<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+J+" (try OpenGL instead of ANGLE)"));F=J}var O={precision:W,supportsVertexTextures:fc,
map:!!d.map,envMap:!!d.envMap,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:Pa,skinning:d.skinning,maxBones:F,useVertexTexture:tc&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:H.maxMorphTargets,maxMorphNormals:H.maxMorphNormals,
v++,G instanceof THREE.DirectionalLight&&!G.shadowCascade&&v++)}x=v;var F;if(ec&&e&&e.skeleton&&e.skeleton.useVertexTexture)F=1024;else{var T=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),J=Math.floor((T-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(J=Math.min(e.skeleton.bones.length,J),J<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+J+" (try OpenGL instead of ANGLE)"));F=J}var O={precision:W,supportsVertexTextures:kc,
map:!!d.map,envMap:!!d.envMap,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:Pa,skinning:d.skinning,maxBones:F,useVertexTexture:ec&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:H.maxMorphTargets,maxMorphNormals:H.maxMorphNormals,
maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:x,shadowMapEnabled:H.shadowMapEnabled&&e.receiveShadow&&0<x,shadowMapType:H.shadowMapType,shadowMapDebug:H.shadowMapDebug,shadowMapCascade:H.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},Ja=[];m?Ja.push(m):(Ja.push(d.fragmentShader),Ja.push(d.vertexShader));if(void 0!==d.defines)for(var X in d.defines)Ja.push(X),Ja.push(d.defines[X]);
for(X in O)Ja.push(X),Ja.push(O[X]);for(var M=Ja.join(),Y,ka=0,da=qb.length;ka<da;ka++){var ba=qb[ka];if(ba.code===M){Y=ba;Y.usedTimes++;break}}void 0===Y&&(Y=new THREE.WebGLProgram(H,M,d,O),qb.push(Y),H.info.memory.programs=qb.length);d.program=Y;var Za=Y.attributes;if(d.morphTargets){d.numSupportedMorphTargets=0;for(var $a,db="morphTarget",ga=0;ga<H.maxMorphTargets;ga++)$a=db+ga,0<=Za[$a]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,db="morphNormal",ga=0;ga<H.maxMorphNormals;ga++)$a=
db+ga,0<=Za[$a]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var lb in d.__webglShader.uniforms){var sa=d.program.uniforms[lb];sa&&d.uniformsList.push([d.__webglShader.uniforms[lb],sa])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(H.maxMorphTargets));var aa=!1,$=!1,Z=!1,pb=d.program,qa=pb.uniforms,K=d.__webglShader.uniforms;pb.id!==Ab&&(l.useProgram(pb.program),Ab=pb.id,Z=$=aa=!0);d.id!==Bb&&(-1===Bb&&(Z=!0),Bb=d.id,$=!0);
if(aa||a!==Yb)l.uniformMatrix4fv(qa.projectionMatrix,!1,a.projectionMatrix.elements),Pa&&l.uniform1f(qa.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Yb&&(Yb=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==qa.cameraPosition&&(Oa.setFromMatrixPosition(a.matrixWorld),l.uniform3f(qa.cameraPosition,Oa.x,Oa.y,Oa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==qa.viewMatrix&&
l.uniformMatrix4fv(qa.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==qa.bindMatrix&&l.uniformMatrix4fv(qa.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==qa.bindMatrixInverse&&l.uniformMatrix4fv(qa.bindMatrixInverse,!1,e.bindMatrixInverse.elements),tc&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==qa.boneTexture){var Kb=E();l.uniform1i(qa.boneTexture,Kb);H.setTexture(e.skeleton.boneTexture,Kb)}null!==qa.boneTextureWidth&&l.uniform1i(qa.boneTextureWidth,
db+ga,0<=Za[$a]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var sa in d.__webglShader.uniforms){var lb=d.program.uniforms[sa];lb&&d.uniformsList.push([d.__webglShader.uniforms[sa],lb])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(H.maxMorphTargets));var aa=!1,$=!1,Z=!1,pb=d.program,qa=pb.uniforms,K=d.__webglShader.uniforms;pb.id!==Ab&&(l.useProgram(pb.program),Ab=pb.id,Z=$=aa=!0);d.id!==Jb&&(-1===Jb&&(Z=!0),Jb=d.id,$=!0);
if(aa||a!==fc)l.uniformMatrix4fv(qa.projectionMatrix,!1,a.projectionMatrix.elements),Pa&&l.uniform1f(qa.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==fc&&(fc=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==qa.cameraPosition&&(Oa.setFromMatrixPosition(a.matrixWorld),l.uniform3f(qa.cameraPosition,Oa.x,Oa.y,Oa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==qa.viewMatrix&&
l.uniformMatrix4fv(qa.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==qa.bindMatrix&&l.uniformMatrix4fv(qa.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==qa.bindMatrixInverse&&l.uniformMatrix4fv(qa.bindMatrixInverse,!1,e.bindMatrixInverse.elements),ec&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==qa.boneTexture){var Ib=E();l.uniform1i(qa.boneTexture,Ib);H.setTexture(e.skeleton.boneTexture,Ib)}null!==qa.boneTextureWidth&&l.uniform1i(qa.boneTextureWidth,
e.skeleton.boneTextureWidth);null!==qa.boneTextureHeight&&l.uniform1i(qa.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==qa.boneGlobalMatrices&&l.uniformMatrix4fv(qa.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if($){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(gc){var Z=!0,oa,ia,la,za=0,Fa=0,Ma=0,Ba,eb,jb,Ga,kb,Aa,va=Ac,Eb=va.directional.colors,sb=va.directional.positions,Cb=va.point.colors,Na=va.point.positions,Mb=va.point.distances,Ya=va.spot.colors,ab=va.spot.positions,Nb=va.spot.distances,Sb=va.spot.directions,fb=va.spot.anglesCos,gb=va.spot.exponents,ub=va.hemi.skyColors,vb=va.hemi.groundColors,Fb=va.hemi.positions,Sa=0,Ca=0,Qa=0,Ka=0,ma=0,ta=0,D=0,Ha=0,Ra=0,wb=0,hb=0,Ta=0;oa=0;for(ia=b.length;oa<ia;oa++)la=b[oa],la.onlyShadow||(Ba=la.color,
Ga=la.intensity,Aa=la.distance,la instanceof THREE.AmbientLight?la.visible&&(H.gammaInput?(za+=Ba.r*Ba.r,Fa+=Ba.g*Ba.g,Ma+=Ba.b*Ba.b):(za+=Ba.r,Fa+=Ba.g,Ma+=Ba.b)):la instanceof THREE.DirectionalLight?(ma+=1,la.visible&&(ya.setFromMatrixPosition(la.matrixWorld),Oa.setFromMatrixPosition(la.target.matrixWorld),ya.sub(Oa),ya.normalize(),Ra=3*Sa,sb[Ra]=ya.x,sb[Ra+1]=ya.y,sb[Ra+2]=ya.z,H.gammaInput?A(Eb,Ra,Ba,Ga*Ga):C(Eb,Ra,Ba,Ga),Sa+=1)):la instanceof THREE.PointLight?(ta+=1,la.visible&&(wb=3*Ca,H.gammaInput?
A(Cb,wb,Ba,Ga*Ga):C(Cb,wb,Ba,Ga),Oa.setFromMatrixPosition(la.matrixWorld),Na[wb]=Oa.x,Na[wb+1]=Oa.y,Na[wb+2]=Oa.z,Mb[Ca]=Aa,Ca+=1)):la instanceof THREE.SpotLight?(D+=1,la.visible&&(hb=3*Qa,H.gammaInput?A(Ya,hb,Ba,Ga*Ga):C(Ya,hb,Ba,Ga),ya.setFromMatrixPosition(la.matrixWorld),ab[hb]=ya.x,ab[hb+1]=ya.y,ab[hb+2]=ya.z,Nb[Qa]=Aa,Oa.setFromMatrixPosition(la.target.matrixWorld),ya.sub(Oa),ya.normalize(),Sb[hb]=ya.x,Sb[hb+1]=ya.y,Sb[hb+2]=ya.z,fb[Qa]=Math.cos(la.angle),gb[Qa]=la.exponent,Qa+=1)):la instanceof
THREE.HemisphereLight&&(Ha+=1,la.visible&&(ya.setFromMatrixPosition(la.matrixWorld),ya.normalize(),Ta=3*Ka,Fb[Ta]=ya.x,Fb[Ta+1]=ya.y,Fb[Ta+2]=ya.z,eb=la.color,jb=la.groundColor,H.gammaInput?(kb=Ga*Ga,A(ub,Ta,eb,kb),A(vb,Ta,jb,kb)):(C(ub,Ta,eb,Ga),C(vb,Ta,jb,Ga)),Ka+=1)));oa=3*Sa;for(ia=Math.max(Eb.length,3*ma);oa<ia;oa++)Eb[oa]=0;oa=3*Ca;for(ia=Math.max(Cb.length,3*ta);oa<ia;oa++)Cb[oa]=0;oa=3*Qa;for(ia=Math.max(Ya.length,3*D);oa<ia;oa++)Ya[oa]=0;oa=3*Ka;for(ia=Math.max(ub.length,3*Ha);oa<ia;oa++)ub[oa]=
0;oa=3*Ka;for(ia=Math.max(vb.length,3*Ha);oa<ia;oa++)vb[oa]=0;va.directional.length=Sa;va.point.length=Ca;va.spot.length=Qa;va.hemi.length=Ka;va.ambient[0]=za;va.ambient[1]=Fa;va.ambient[2]=Ma;gc=!1}if(Z){var ra=Ac;K.ambientLightColor.value=ra.ambient;K.directionalLightColor.value=ra.directional.colors;K.directionalLightDirection.value=ra.directional.positions;K.pointLightColor.value=ra.point.colors;K.pointLightPosition.value=ra.point.positions;K.pointLightDistance.value=ra.point.distances;K.spotLightColor.value=
d.lights){if(gc){var Z=!0,oa,ia,la,za=0,Fa=0,Ma=0,Ba,eb,jb,Ga,kb,Aa,va=Kc,Cb=va.directional.colors,sb=va.directional.positions,Pb=va.point.colors,Na=va.point.positions,Bb=va.point.distances,Ya=va.spot.colors,ab=va.spot.positions,Kb=va.spot.distances,Qb=va.spot.directions,fb=va.spot.anglesCos,gb=va.spot.exponents,ub=va.hemi.skyColors,vb=va.hemi.groundColors,Db=va.hemi.positions,Sa=0,Ca=0,Qa=0,Ka=0,ma=0,ta=0,D=0,Ha=0,Ra=0,wb=0,hb=0,Ta=0;oa=0;for(ia=b.length;oa<ia;oa++)la=b[oa],la.onlyShadow||(Ba=la.color,
Ga=la.intensity,Aa=la.distance,la instanceof THREE.AmbientLight?la.visible&&(H.gammaInput?(za+=Ba.r*Ba.r,Fa+=Ba.g*Ba.g,Ma+=Ba.b*Ba.b):(za+=Ba.r,Fa+=Ba.g,Ma+=Ba.b)):la instanceof THREE.DirectionalLight?(ma+=1,la.visible&&(ya.setFromMatrixPosition(la.matrixWorld),Oa.setFromMatrixPosition(la.target.matrixWorld),ya.sub(Oa),ya.normalize(),Ra=3*Sa,sb[Ra]=ya.x,sb[Ra+1]=ya.y,sb[Ra+2]=ya.z,H.gammaInput?A(Cb,Ra,Ba,Ga*Ga):C(Cb,Ra,Ba,Ga),Sa+=1)):la instanceof THREE.PointLight?(ta+=1,la.visible&&(wb=3*Ca,H.gammaInput?
A(Pb,wb,Ba,Ga*Ga):C(Pb,wb,Ba,Ga),Oa.setFromMatrixPosition(la.matrixWorld),Na[wb]=Oa.x,Na[wb+1]=Oa.y,Na[wb+2]=Oa.z,Bb[Ca]=Aa,Ca+=1)):la instanceof THREE.SpotLight?(D+=1,la.visible&&(hb=3*Qa,H.gammaInput?A(Ya,hb,Ba,Ga*Ga):C(Ya,hb,Ba,Ga),ya.setFromMatrixPosition(la.matrixWorld),ab[hb]=ya.x,ab[hb+1]=ya.y,ab[hb+2]=ya.z,Kb[Qa]=Aa,Oa.setFromMatrixPosition(la.target.matrixWorld),ya.sub(Oa),ya.normalize(),Qb[hb]=ya.x,Qb[hb+1]=ya.y,Qb[hb+2]=ya.z,fb[Qa]=Math.cos(la.angle),gb[Qa]=la.exponent,Qa+=1)):la instanceof
THREE.HemisphereLight&&(Ha+=1,la.visible&&(ya.setFromMatrixPosition(la.matrixWorld),ya.normalize(),Ta=3*Ka,Db[Ta]=ya.x,Db[Ta+1]=ya.y,Db[Ta+2]=ya.z,eb=la.color,jb=la.groundColor,H.gammaInput?(kb=Ga*Ga,A(ub,Ta,eb,kb),A(vb,Ta,jb,kb)):(C(ub,Ta,eb,Ga),C(vb,Ta,jb,Ga)),Ka+=1)));oa=3*Sa;for(ia=Math.max(Cb.length,3*ma);oa<ia;oa++)Cb[oa]=0;oa=3*Ca;for(ia=Math.max(Pb.length,3*ta);oa<ia;oa++)Pb[oa]=0;oa=3*Qa;for(ia=Math.max(Ya.length,3*D);oa<ia;oa++)Ya[oa]=0;oa=3*Ka;for(ia=Math.max(ub.length,3*Ha);oa<ia;oa++)ub[oa]=
0;oa=3*Ka;for(ia=Math.max(vb.length,3*Ha);oa<ia;oa++)vb[oa]=0;va.directional.length=Sa;va.point.length=Ca;va.spot.length=Qa;va.hemi.length=Ka;va.ambient[0]=za;va.ambient[1]=Fa;va.ambient[2]=Ma;gc=!1}if(Z){var ra=Kc;K.ambientLightColor.value=ra.ambient;K.directionalLightColor.value=ra.directional.colors;K.directionalLightDirection.value=ra.directional.positions;K.pointLightColor.value=ra.point.colors;K.pointLightPosition.value=ra.point.positions;K.pointLightDistance.value=ra.point.distances;K.spotLightColor.value=
ra.spot.colors;K.spotLightPosition.value=ra.spot.positions;K.spotLightDistance.value=ra.spot.distances;K.spotLightDirection.value=ra.spot.directions;K.spotLightAngleCos.value=ra.spot.anglesCos;K.spotLightExponent.value=ra.spot.exponents;K.hemisphereLightSkyColor.value=ra.hemi.skyColors;K.hemisphereLightGroundColor.value=ra.hemi.groundColors;K.hemisphereLightDirection.value=ra.hemi.positions;I(K,!0)}else I(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof
THREE.MeshPhongMaterial){K.opacity.value=d.opacity;H.gammaInput?K.diffuse.value.copyGammaToLinear(d.color):K.diffuse.value=d.color;K.map.value=d.map;K.lightMap.value=d.lightMap;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 La;d.map?La=d.map:d.specularMap?La=d.specularMap:d.normalMap?La=d.normalMap:d.bumpMap?La=d.bumpMap:d.alphaMap&&
(La=d.alphaMap);if(void 0!==La){var Ua=La.offset,Va=La.repeat;K.offsetRepeat.value.set(Ua.x,Ua.y,Va.x,Va.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;K.combine.value=d.combine;K.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(K.diffuse.value=d.color,K.opacity.value=d.opacity):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):d instanceof THREE.PointCloudMaterial?(K.psColor.value=d.color,K.opacity.value=d.opacity,K.size.value=d.size,K.scale.value=Q.height/2,K.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(K.shininess.value=d.shininess,H.gammaInput?(K.ambient.value.copyGammaToLinear(d.ambient),K.emissive.value.copyGammaToLinear(d.emissive),K.specular.value.copyGammaToLinear(d.specular)):
(K.ambient.value=d.ambient,K.emissive.value=d.emissive,K.specular.value=d.specular),d.wrapAround&&K.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(H.gammaInput?(K.ambient.value.copyGammaToLinear(d.ambient),K.emissive.value.copyGammaToLinear(d.emissive)):(K.ambient.value=d.ambient,K.emissive.value=d.emissive),d.wrapAround&&K.wrapRGB.value.copy(d.wrapRGB)):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(e.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Gb=0,tb=0,Pb=b.length;tb<Pb;tb++){var B=b[tb];B.castShadow&&(B instanceof THREE.SpotLight||B instanceof THREE.DirectionalLight&&!B.shadowCascade)&&(K.shadowMap.value[Gb]=B.shadowMap,K.shadowMapSize.value[Gb]=B.shadowMapSize,K.shadowMatrix.value[Gb]=B.shadowMatrix,K.shadowDarkness.value[Gb]=B.shadowDarkness,K.shadowBias.value[Gb]=B.shadowBias,Gb++)}for(var Tb=d.uniformsList,Ia,wa,bb,rb=0,Rb=Tb.length;rb<Rb;rb++){var ea=
Tb[rb][0];if(!1!==ea.needsUpdate){var Db=ea.type,S=ea.value,fa=Tb[rb][1];switch(Db){case "1i":l.uniform1i(fa,S);break;case "1f":l.uniform1f(fa,S);break;case "2f":l.uniform2f(fa,S[0],S[1]);break;case "3f":l.uniform3f(fa,S[0],S[1],S[2]);break;case "4f":l.uniform4f(fa,S[0],S[1],S[2],S[3]);break;case "1iv":l.uniform1iv(fa,S);break;case "3iv":l.uniform3iv(fa,S);break;case "1fv":l.uniform1fv(fa,S);break;case "2fv":l.uniform2fv(fa,S);break;case "3fv":l.uniform3fv(fa,S);break;case "4fv":l.uniform4fv(fa,S);
(K.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Eb=0,tb=0,Mb=b.length;tb<Mb;tb++){var B=b[tb];B.castShadow&&(B instanceof THREE.SpotLight||B instanceof THREE.DirectionalLight&&!B.shadowCascade)&&(K.shadowMap.value[Eb]=B.shadowMap,K.shadowMapSize.value[Eb]=B.shadowMapSize,K.shadowMatrix.value[Eb]=B.shadowMatrix,K.shadowDarkness.value[Eb]=B.shadowDarkness,K.shadowBias.value[Eb]=B.shadowBias,Eb++)}for(var Rb=d.uniformsList,Ia,wa,bb,rb=0,Wb=Rb.length;rb<Wb;rb++){var ea=
Rb[rb][0];if(!1!==ea.needsUpdate){var Lb=ea.type,S=ea.value,fa=Rb[rb][1];switch(Lb){case "1i":l.uniform1i(fa,S);break;case "1f":l.uniform1f(fa,S);break;case "2f":l.uniform2f(fa,S[0],S[1]);break;case "3f":l.uniform3f(fa,S[0],S[1],S[2]);break;case "4f":l.uniform4f(fa,S[0],S[1],S[2],S[3]);break;case "1iv":l.uniform1iv(fa,S);break;case "3iv":l.uniform3iv(fa,S);break;case "1fv":l.uniform1fv(fa,S);break;case "2fv":l.uniform2fv(fa,S);break;case "3fv":l.uniform3fv(fa,S);break;case "4fv":l.uniform4fv(fa,S);
break;case "Matrix3fv":l.uniformMatrix3fv(fa,!1,S);break;case "Matrix4fv":l.uniformMatrix4fv(fa,!1,S);break;case "i":l.uniform1i(fa,S);break;case "f":l.uniform1f(fa,S);break;case "v2":l.uniform2f(fa,S.x,S.y);break;case "v3":l.uniform3f(fa,S.x,S.y,S.z);break;case "v4":l.uniform4f(fa,S.x,S.y,S.z,S.w);break;case "c":l.uniform3f(fa,S.r,S.g,S.b);break;case "iv1":l.uniform1iv(fa,S);break;case "iv":l.uniform3iv(fa,S);break;case "fv1":l.uniform1fv(fa,S);break;case "fv":l.uniform3fv(fa,S);break;case "v2v":void 0===
ea._array&&(ea._array=new Float32Array(2*S.length));for(var N=0,xa=S.length;N<xa;N++)bb=2*N,ea._array[bb]=S[N].x,ea._array[bb+1]=S[N].y;l.uniform2fv(fa,ea._array);break;case "v3v":void 0===ea._array&&(ea._array=new Float32Array(3*S.length));N=0;for(xa=S.length;N<xa;N++)bb=3*N,ea._array[bb]=S[N].x,ea._array[bb+1]=S[N].y,ea._array[bb+2]=S[N].z;l.uniform3fv(fa,ea._array);break;case "v4v":void 0===ea._array&&(ea._array=new Float32Array(4*S.length));N=0;for(xa=S.length;N<xa;N++)bb=4*N,ea._array[bb]=S[N].x,
ea._array[bb+1]=S[N].y,ea._array[bb+2]=S[N].z,ea._array[bb+3]=S[N].w;l.uniform4fv(fa,ea._array);break;case "m3":l.uniformMatrix3fv(fa,!1,S.elements);break;case "m3v":void 0===ea._array&&(ea._array=new Float32Array(9*S.length));N=0;for(xa=S.length;N<xa;N++)S[N].flattenToArrayOffset(ea._array,9*N);l.uniformMatrix3fv(fa,!1,ea._array);break;case "m4":l.uniformMatrix4fv(fa,!1,S.elements);break;case "m4v":void 0===ea._array&&(ea._array=new Float32Array(16*S.length));N=0;for(xa=S.length;N<xa;N++)S[N].flattenToArrayOffset(ea._array,
16*N);l.uniformMatrix4fv(fa,!1,ea._array);break;case "t":Ia=S;wa=E();l.uniform1i(fa,wa);if(!Ia)continue;if(Ia instanceof THREE.CubeTexture||Ia.image instanceof Array&&6===Ia.image.length){var ua=Ia,Ob=wa;if(6===ua.image.length)if(ua.needsUpdate){ua.image.__webglTextureCube||(ua.addEventListener("dispose",jc),ua.image.__webglTextureCube=l.createTexture(),H.info.memory.textures++);l.activeTexture(l.TEXTURE0+Ob);l.bindTexture(l.TEXTURE_CUBE_MAP,ua.image.__webglTextureCube);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,
ua.flipY);for(var Qb=ua instanceof THREE.CompressedTexture,Ub=ua.image[0]instanceof THREE.DataTexture,mb=[],Da=0;6>Da;Da++)mb[Da]=!H.autoScaleCubemaps||Qb||Ub?Ub?ua.image[Da].image:ua.image[Da]:R(ua.image[Da],Uc);var na=mb[0],ac=THREE.Math.isPowerOfTwo(na.width)&&THREE.Math.isPowerOfTwo(na.height),cb=P(ua.format),Hb=P(ua.type);L(l.TEXTURE_CUBE_MAP,ua,ac);for(Da=0;6>Da;Da++)if(Qb)for(var ib,bc=mb[Da].mipmaps,ha=0,Zb=bc.length;ha<Zb;ha++)ib=bc[ha],ua.format!==THREE.RGBAFormat&&ua.format!==THREE.RGBFormat?
-1<Kc().indexOf(cb)?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,ha,cb,ib.width,ib.height,0,ib.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,ha,cb,ib.width,ib.height,0,cb,Hb,ib.data);else Ub?l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,0,cb,mb[Da].width,mb[Da].height,0,cb,Hb,mb[Da].data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,0,cb,cb,Hb,mb[Da]);ua.generateMipmaps&&ac&&l.generateMipmap(l.TEXTURE_CUBE_MAP);
ua.needsUpdate=!1;if(ua.onUpdate)ua.onUpdate()}else l.activeTexture(l.TEXTURE0+Ob),l.bindTexture(l.TEXTURE_CUBE_MAP,ua.image.__webglTextureCube)}else if(Ia instanceof THREE.WebGLRenderTargetCube){var $b=Ia;l.activeTexture(l.TEXTURE0+wa);l.bindTexture(l.TEXTURE_CUBE_MAP,$b.__webglTexture)}else H.setTexture(Ia,wa);break;case "tv":void 0===ea._array&&(ea._array=[]);N=0;for(xa=ea.value.length;N<xa;N++)ea._array[N]=E();l.uniform1iv(fa,ea._array);N=0;for(xa=ea.value.length;N<xa;N++)Ia=ea.value[N],wa=ea._array[N],
Ia&&H.setTexture(Ia,wa);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Db)}}}}l.uniformMatrix4fv(qa.modelViewMatrix,!1,e._modelViewMatrix.elements);qa.normalMatrix&&l.uniformMatrix3fv(qa.normalMatrix,!1,e._normalMatrix.elements);null!==qa.modelMatrix&&l.uniformMatrix4fv(qa.modelMatrix,!1,e.matrixWorld.elements);return pb}function I(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.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function E(){var a=Lb;a>=Lc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+
Lc);Lb+=1;return a}function z(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function A(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function C(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function T(a){a!==Mc&&(l.lineWidth(a),Mc=a)}function G(a,b,c){Nc!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),Nc=a);!a||Oc===b&&Pc===c||(l.polygonOffset(b,c),Oc=b,Pc=c)}function L(a,b,c){c?
16*N);l.uniformMatrix4fv(fa,!1,ea._array);break;case "t":Ia=S;wa=E();l.uniform1i(fa,wa);if(!Ia)continue;if(Ia instanceof THREE.CubeTexture||Ia.image instanceof Array&&6===Ia.image.length){var ua=Ia,Nb=wa;if(6===ua.image.length)if(ua.needsUpdate){ua.image.__webglTextureCube||(ua.addEventListener("dispose",hc),ua.image.__webglTextureCube=l.createTexture(),H.info.memory.textures++);l.activeTexture(l.TEXTURE0+Nb);l.bindTexture(l.TEXTURE_CUBE_MAP,ua.image.__webglTextureCube);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,
ua.flipY);for(var Ob=ua instanceof THREE.CompressedTexture,Sb=ua.image[0]instanceof THREE.DataTexture,mb=[],Da=0;6>Da;Da++)mb[Da]=!H.autoScaleCubemaps||Ob||Sb?Sb?ua.image[Da].image:ua.image[Da]:R(ua.image[Da],Wc);var na=mb[0],Zb=THREE.Math.isPowerOfTwo(na.width)&&THREE.Math.isPowerOfTwo(na.height),cb=P(ua.format),Fb=P(ua.type);L(l.TEXTURE_CUBE_MAP,ua,Zb);for(Da=0;6>Da;Da++)if(Ob)for(var ib,$b=mb[Da].mipmaps,ha=0,Xb=$b.length;ha<Xb;ha++)ib=$b[ha],ua.format!==THREE.RGBAFormat&&ua.format!==THREE.RGBFormat?
-1<Lc().indexOf(cb)?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,ha,cb,ib.width,ib.height,0,ib.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,ha,cb,ib.width,ib.height,0,cb,Fb,ib.data);else Sb?l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,0,cb,mb[Da].width,mb[Da].height,0,cb,Fb,mb[Da].data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+Da,0,cb,cb,Fb,mb[Da]);ua.generateMipmaps&&Zb&&l.generateMipmap(l.TEXTURE_CUBE_MAP);
ua.needsUpdate=!1;if(ua.onUpdate)ua.onUpdate()}else l.activeTexture(l.TEXTURE0+Nb),l.bindTexture(l.TEXTURE_CUBE_MAP,ua.image.__webglTextureCube)}else if(Ia instanceof THREE.WebGLRenderTargetCube){var Yb=Ia;l.activeTexture(l.TEXTURE0+wa);l.bindTexture(l.TEXTURE_CUBE_MAP,Yb.__webglTexture)}else H.setTexture(Ia,wa);break;case "tv":void 0===ea._array&&(ea._array=[]);N=0;for(xa=ea.value.length;N<xa;N++)ea._array[N]=E();l.uniform1iv(fa,ea._array);N=0;for(xa=ea.value.length;N<xa;N++)Ia=ea.value[N],wa=ea._array[N],
Ia&&H.setTexture(Ia,wa);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Lb)}}}}l.uniformMatrix4fv(qa.modelViewMatrix,!1,e._modelViewMatrix.elements);qa.normalMatrix&&l.uniformMatrix3fv(qa.normalMatrix,!1,e._normalMatrix.elements);null!==qa.modelMatrix&&l.uniformMatrix4fv(qa.modelMatrix,!1,e.matrixWorld.elements);return pb}function I(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.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function E(){var a=dc;a>=Mc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+
Mc);dc+=1;return a}function z(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function A(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function C(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function T(a){a!==Nc&&(l.lineWidth(a),Nc=a)}function G(a,b,c){Oc!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),Oc=a);!a||Pc===b&&Qc===c||(l.polygonOffset(b,c),Pc=b,Qc=c)}function L(a,b,c){c?
(l.texParameteri(a,l.TEXTURE_WRAP_S,P(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,P(b.wrapT)),l.texParameteri(a,l.TEXTURE_MAG_FILTER,P(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,P(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_MAG_FILTER,F(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,F(b.minFilter)));(c=sa.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&(1<b.anisotropy||
b.__oldAnisotropy)&&(l.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,H.getMaxAnisotropy())),b.__oldAnisotropy=b.anisotropy)}function R(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.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+
".");return d}return a}function J(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a)):l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,
......@@ -514,23 +514,23 @@ if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMI
THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;b=sa.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=sa.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=sa.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 Q=void 0!==a.canvas?a.canvas:document.createElement("canvas"),ka=void 0!==a.context?a.context:null,W=void 0!==a.precision?a.precision:"highp",ba=void 0!==a.alpha?a.alpha:!1,ga=void 0!==a.depth?a.depth:!0,za=void 0!==a.stencil?
a.stencil:!0,O=void 0!==a.antialias?a.antialias:!1,Ma=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ia=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,Pa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Ja=new THREE.Color(0),db=0,Za=[],$a={},lb=[],Kb=[],pb=[];this.domElement=Q;this.context=null;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=
this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,qb=[],Ab=null,Cb=
null,Bb=-1,Fa=-1,Yb=null,Lb=0,Mb=-1,Nb=-1,Ob=-1,tb=-1,Pb=-1,rb=-1,Qb=-1,Zb=-1,Nc=null,Oc=null,Pc=null,Mc=null,jb=0,kb=0,Rb=Q.width,$b=Q.height,pc=0,qc=0,Db=new Uint8Array(16),eb=new Uint8Array(16),Bc=new THREE.Frustum,xc=new THREE.Matrix4,Dc=new THREE.Matrix4,Oa=new THREE.Vector3,ya=new THREE.Vector3,gc=!0,Ac={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],
exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},l;try{var Qc={alpha:ba,depth:ga,stencil:za,antialias:O,premultipliedAlpha:Ma,preserveDrawingBuffer:ia};l=ka||Q.getContext("webgl",Qc)||Q.getContext("experimental-webgl",Qc);if(null===l)throw"Error creating WebGL context.";}catch(Vc){console.error(Vc)}void 0===l.getShaderPrecisionFormat&&(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var sa=new THREE.WebGLExtensions(l);sa.get("OES_texture_float");
sa.get("OES_texture_float_linear");sa.get("OES_standard_derivatives");Pa&&sa.get("EXT_frag_depth");l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(jb,kb,Rb,$b);l.clearColor(Ja.r,Ja.g,Ja.b,db);this.context=l;var Lc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Wc=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
Xc=l.getParameter(l.MAX_TEXTURE_SIZE),Uc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),fc=0<Wc,tc=fc&&sa.get("OES_texture_float"),Yc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),Zc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var $c=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),ad=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var Kc=
function(){var a;return function(){if(void 0!==a)return a;a=[];if(sa.get("WEBGL_compressed_texture_pvrtc")||sa.get("WEBGL_compressed_texture_s3tc"))for(var b=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),bd=0<Yc.precision&&0<$c.precision,Rc=0<Zc.precision&&0<ad.precision;"highp"!==W||bd||(Rc?(W="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(W="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));
"mediump"!==W||Rc||(W="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){return l};this.supportsVertexTextures=function(){return fc};this.supportsFloatTextures=function(){return sa.get("OES_texture_float")};this.supportsStandardDerivatives=function(){return sa.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return sa.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return sa.get("WEBGL_compressed_texture_pvrtc")};
a.stencil:!0,O=void 0!==a.antialias?a.antialias:!1,Ma=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ia=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,Pa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Ja=new THREE.Color(0),db=0,Za=[],$a={},lb=[],Ib=[],pb=[];this.domElement=Q;this.context=null;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=
this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,qb=[],Ab=null,Rc=
null,Jb=-1,Fa=-1,fc=null,dc=0,Kb=-1,Wb=-1,Lb=-1,tb=-1,Mb=-1,Nb=-1,Ob=-1,jb=-1,Oc=null,Pc=null,Qc=null,Nc=null,kb=0,rb=0,Xb=Q.width,Yb=Q.height,qc=0,rc=0,sb=new Uint8Array(16),eb=new Uint8Array(16),Bc=new THREE.Frustum,xc=new THREE.Matrix4,Dc=new THREE.Matrix4,Oa=new THREE.Vector3,ya=new THREE.Vector3,gc=!0,Kc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],
exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},l;try{var Sc={alpha:ba,depth:ga,stencil:za,antialias:O,premultipliedAlpha:Ma,preserveDrawingBuffer:ia};l=ka||Q.getContext("webgl",Sc)||Q.getContext("experimental-webgl",Sc);if(null===l)throw"Error creating WebGL context.";}catch(Xc){console.error(Xc)}void 0===l.getShaderPrecisionFormat&&(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var sa=new THREE.WebGLExtensions(l);sa.get("OES_texture_float");
sa.get("OES_texture_float_linear");sa.get("OES_standard_derivatives");Pa&&sa.get("EXT_frag_depth");l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(kb,rb,Xb,Yb);l.clearColor(Ja.r,Ja.g,Ja.b,db);this.context=l;var Mc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Yc=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
Zc=l.getParameter(l.MAX_TEXTURE_SIZE),Wc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),kc=0<Yc,ec=kc&&sa.get("OES_texture_float"),$c=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),ad=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var bd=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),cd=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var Lc=
function(){var a;return function(){if(void 0!==a)return a;a=[];if(sa.get("WEBGL_compressed_texture_pvrtc")||sa.get("WEBGL_compressed_texture_s3tc"))for(var b=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),dd=0<$c.precision&&0<bd.precision,Tc=0<ad.precision&&0<cd.precision;"highp"!==W||dd||(Tc?(W="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(W="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));
"mediump"!==W||Tc||(W="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){return l};this.supportsVertexTextures=function(){return kc};this.supportsFloatTextures=function(){return sa.get("OES_texture_float")};this.supportsStandardDerivatives=function(){return sa.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return sa.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return sa.get("WEBGL_compressed_texture_pvrtc")};
this.supportsBlendMinMax=function(){return sa.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=sa.get("EXT_texture_filter_anisotropic");return a=null!==b?l.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return W};this.setSize=function(a,b,c){Q.width=a*this.devicePixelRatio;Q.height=b*this.devicePixelRatio;!1!==c&&(Q.style.width=a+"px",Q.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=
function(a,b,c,d){jb=a*this.devicePixelRatio;kb=b*this.devicePixelRatio;Rb=c*this.devicePixelRatio;$b=d*this.devicePixelRatio;l.viewport(jb,kb,Rb,$b)};this.setScissor=function(a,b,c,d){l.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.setClearColor=function(a,b){Ja.set(a);db=void 0!==b?b:1;l.clearColor(Ja.r,Ja.g,Ja.b,db)};this.setClearColorHex=function(a,
function(a,b,c,d){kb=a*this.devicePixelRatio;rb=b*this.devicePixelRatio;Xb=c*this.devicePixelRatio;Yb=d*this.devicePixelRatio;l.viewport(kb,rb,Xb,Yb)};this.setScissor=function(a,b,c,d){l.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.setClearColor=function(a,b){Ja.set(a);db=void 0!==b?b:1;l.clearColor(Ja.r,Ja.g,Ja.b,db)};this.setClearColorHex=function(a,
b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return Ja};this.getClearAlpha=function(){return db};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=
function(){l.clear(l.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this,Za,$a,lb);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this,Za,$a,lb);this.renderPluginsPre.push(a)};this.resetGLState=function(){Yb=Ab=null;Bb=Fa=Nb=Mb=Zb=Qb=Ob=-1;gc=!0};this.updateShadowMap=function(a,b){Ab=null;Bb=Fa=Zb=Qb=Ob=-1;gc=!0;Nb=Mb=-1;this.shadowMapPlugin.update(a,b)};var Fc=function(a){a.target.traverse(function(a){a.removeEventListener("remove",
function(){l.clear(l.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this,Za,$a,lb);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this,Za,$a,lb);this.renderPluginsPre.push(a)};this.resetGLState=function(){fc=Ab=null;Jb=Fa=Wb=Kb=jb=Ob=Lb=-1;gc=!0};this.updateShadowMap=function(a,b){Ab=null;Jb=Fa=jb=Ob=Lb=-1;gc=!0;Wb=Kb=-1;this.shadowMapPlugin.update(a,b)};var Fc=function(a){a.target.traverse(function(a){a.removeEventListener("remove",
Fc);if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete $a[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=lb,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglInit;delete a._modelViewMatrix;delete a._normalMatrix;delete a.__webglActive})},Gc=function(a){a=a.target;a.removeEventListener("dispose",Gc);delete a.__webglInit;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes){var c=a.attributes[b];
void 0!==c.buffer&&(l.deleteBuffer(c.buffer),delete c.buffer)}H.info.memory.geometries--}else if(b=sb[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)l.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f=0;for(g=e.numMorphNormals;f<g;f++)l.deleteBuffer(e.__webglMorphNormalsBuffers[f]);delete e.__webglMorphNormalsBuffers}Sc(e)}delete sb[a.id]}else Sc(a);
Fa=-1},jc=function(a){a=a.target;a.removeEventListener("dispose",jc);a.image&&a.image.__webglTextureCube?(l.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(l.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);H.info.memory.textures--},Tc=function(a){a=a.target;a.removeEventListener("dispose",Tc);if(a&&void 0!==a.__webglTexture){l.deleteTexture(a.__webglTexture);delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=
0;6>b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}H.info.memory.textures--},zc=function(a){a=a.target;a.removeEventListener("dispose",zc);sc(a)},Sc=function(a){for(var b="__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "),
c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(l.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}H.info.memory.geometries--},sc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=qb.length;a<c;a++)if(d=qb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=qb.length;a<
void 0!==c.buffer&&(l.deleteBuffer(c.buffer),delete c.buffer)}H.info.memory.geometries--}else if(b=Bb[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)l.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f=0;for(g=e.numMorphNormals;f<g;f++)l.deleteBuffer(e.__webglMorphNormalsBuffers[f]);delete e.__webglMorphNormalsBuffers}Uc(e)}delete Bb[a.id]}else Uc(a);
Fa=-1},hc=function(a){a=a.target;a.removeEventListener("dispose",hc);a.image&&a.image.__webglTextureCube?(l.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(l.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);H.info.memory.textures--},Vc=function(a){a=a.target;a.removeEventListener("dispose",Vc);if(a&&void 0!==a.__webglTexture){l.deleteTexture(a.__webglTexture);delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=
0;6>b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}H.info.memory.textures--},Ac=function(a){a=a.target;a.removeEventListener("dispose",Ac);zc(a)},Uc=function(a){for(var b="__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "),
c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(l.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}H.info.memory.geometries--},zc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=qb.length;a<c;a++)if(d=qb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=qb.length;a<
c;a++)d=qb[a],d.program!==b&&e.push(d);qb=e;l.deleteProgram(b);H.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){g();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=l.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=l.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=l.createBuffer());a.hasPositions&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer),
l.bufferData(l.ARRAY_BUFFER,a.positionArray,l.DYNAMIC_DRAW),f(b.attributes.position),l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,!1,0,0));if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,k,m,n,p,r,q,t,s,u,w=3*a.count;for(u=0;u<w;u+=9)s=a.normalArray,d=s[u],e=s[u+1],k=s[u+2],m=s[u+3],p=s[u+4],q=s[u+5],n=s[u+6],r=s[u+7],t=s[u+8],d=(d+m+n)/3,e=(e+p+r)/3,k=(k+q+t)/3,s[u]=d,s[u+1]=e,s[u+2]=k,s[u+3]=d,s[u+4]=e,s[u+5]=k,s[u+6]=d,s[u+
7]=e,s[u+8]=k}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);f(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer),l.bufferData(l.ARRAY_BUFFER,a.uvArray,l.DYNAMIC_DRAW),f(b.attributes.uv),l.vertexAttribPointer(b.attributes.uv,2,l.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW),
......@@ -547,20 +547,20 @@ f(b.color),l.vertexAttribPointer(b.color,3,l.FLOAT,!1,0,0)):void 0!==d.defaultAt
l.vertexAttribPointer(b.uv,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(k.geometry.faceVertexUvs[1]?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglUV2Buffer),f(b.uv2),l.vertexAttribPointer(b.uv2,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),f(b.skinIndex),l.vertexAttribPointer(b.skinIndex,
4,l.FLOAT,!1,0,0),l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),f(b.skinWeight),l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,!1,0,0));0<=b.lineDistance&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglLineDistanceBuffer),f(b.lineDistance),l.vertexAttribPointer(b.lineDistance,1,l.FLOAT,!1,0,0))}h();k instanceof THREE.Mesh?(k=e.__typeArray===Uint32Array?l.UNSIGNED_INT:l.UNSIGNED_SHORT,d.wireframe?(T(d.wireframeLinewidth),a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),l.drawElements(l.LINES,
e.__webglLineCount,k,0)):(a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),l.drawElements(l.TRIANGLES,e.__webglFaceCount,k,0)),H.info.render.calls++,H.info.render.vertices+=e.__webglFaceCount,H.info.render.faces+=e.__webglFaceCount/3):k instanceof THREE.Line?(k=k.type===THREE.LineStrip?l.LINE_STRIP:l.LINES,T(d.linewidth),l.drawArrays(k,0,e.__webglLineCount),H.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,e.__webglParticleCount),H.info.render.calls++,H.info.render.points+=
e.__webglParticleCount)}};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;Bb=Fa=-1;Yb=null;gc=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);xc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Bc.setFromMatrix(xc);
Za.length=0;Kb.length=0;pb.length=0;q(a,a);!0===H.sortObjects&&(Kb.sort(k),pb.sort(n));m(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(var f=lb.length;d<f;d++){var g=lb[d],h=g.object;h.visible&&(z(h,b),s(g))}a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,
d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),G(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(Kb,b,Za,e,!0,d),r(pb,b,Za,e,!0,d),t(lb,"",b,Za,e,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(Kb,b,Za,e,!1,d),t(lb,"opaque",b,Za,e,!1,d),r(pb,b,Za,e,!0,d),t(lb,"transparent",b,Za,e,!0,d));m(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&X(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};
this.renderImmediateObject=function(a,b,c,d,e){var f=v(a,b,c,d,e);Fa=-1;H.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,Bc):e.render(function(a){H.renderBufferImmediate(a,f,d)})};var sb={},rc=0;this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):
a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;Mb!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),Mb=b);Nb!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Nb=a)};this.setDepthTest=function(a){Qb!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),Qb=a)};this.setDepthWrite=function(a){Zb!==a&&(l.depthMask(a),Zb=a)};this.setBlending=function(a,b,c,d){a!==
Ob&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,
l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),Ob=a);if(a===THREE.CustomBlending){if(b!==tb&&(l.blendEquation(P(b)),tb=b),c!==Pb||d!==rb)l.blendFunc(P(c),P(d)),Pb=c,rb=d}else rb=Pb=tb=null};this.uploadTexture=function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",jc),a.__webglTexture=l.createTexture(),H.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);
l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=R(a.image,Xc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=P(a.format),e=P(a.type);L(l.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=
0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Kc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);
a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?H.uploadTexture(a):l.bindTexture(l.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Tc);a.__webglTexture=l.createTexture();H.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&
e.__webglParticleCount)}};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;Jb=Fa=-1;fc=null;gc=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);xc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Bc.setFromMatrix(xc);
Za.length=0;Ib.length=0;pb.length=0;q(a,a);!0===H.sortObjects&&(Ib.sort(k),pb.sort(n));m(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(var f=lb.length;d<f;d++){var g=lb[d],h=g.object;h.visible&&(z(h,b),s(g))}a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,
d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),G(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(Ib,b,Za,e,!0,d),r(pb,b,Za,e,!0,d),t(lb,"",b,Za,e,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(Ib,b,Za,e,!1,d),t(lb,"opaque",b,Za,e,!1,d),r(pb,b,Za,e,!0,d),t(lb,"transparent",b,Za,e,!0,d));m(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&X(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};
this.renderImmediateObject=function(a,b,c,d,e){var f=v(a,b,c,d,e);Fa=-1;H.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,Bc):e.render(function(a){H.renderBufferImmediate(a,f,d)})};var Bb={},sc=0;this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):
a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;Kb!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),Kb=b);Wb!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Wb=a)};this.setDepthTest=function(a){Ob!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),Ob=a)};this.setDepthWrite=function(a){jb!==a&&(l.depthMask(a),jb=a)};this.setBlending=function(a,b,c,d){a!==
Lb&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,
l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),Lb=a);if(a===THREE.CustomBlending){if(b!==tb&&(l.blendEquation(P(b)),tb=b),c!==Mb||d!==Nb)l.blendFunc(P(c),P(d)),Mb=c,Nb=d}else Nb=Mb=tb=null};this.uploadTexture=function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",hc),a.__webglTexture=l.createTexture(),H.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);
l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=R(a.image,Zc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=P(a.format),e=P(a.type);L(l.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=
0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Lc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);
a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?H.uploadTexture(a):l.bindTexture(l.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Vc);a.__webglTexture=l.createTexture();H.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&
THREE.Math.isPowerOfTwo(a.height),d=P(a.format),e=P(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);L(l.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=l.createFramebuffer();a.__webglRenderbuffer[f]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+f;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[f]);l.framebufferTexture2D(l.FRAMEBUFFER,
l.COLOR_ATTACHMENT0,h,g.__webglTexture,0);J(a.__webglRenderbuffer[f],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),L(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,
d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):J(a.__webglRenderbuffer,a),c&&l.generateMipmap(l.TEXTURE_2D);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,
null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Rb,a=$b,d=jb,e=kb);b!==Cb&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),Cb=b);pc=c;qc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin(this);this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin(this));this.addPostPlugin(new THREE.LensFlarePlugin(this))};
null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Xb,a=Yb,d=kb,e=rb);b!==Rc&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),Rc=b);qc=c;rc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin(this);this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin(this));this.addPostPlugin(new THREE.LensFlarePlugin(this))};
THREE.WebGLRenderTarget=function(a,b,c){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=null};
THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;
......@@ -683,18 +683,17 @@ A=p[k][h+1].clone();this.faces.push(new THREE.Face3(r,t,u,[w,y,v]));this.faceVer
t,s,[w,y,x])),this.faceVertexUvs[0].push([I,E,z]);if(!1===g&&0<b)for(this.vertices.push(new THREE.Vector3(0,-f,0)),h=0;h<d;h++)r=n[k][h+1],t=n[k][h],s=this.vertices.length-1,w=new THREE.Vector3(0,-1,0),y=new THREE.Vector3(0,-1,0),x=new THREE.Vector3(0,-1,0),I=p[k][h+1].clone(),E=p[k][h].clone(),z=new THREE.Vector2(E.x,1),this.faces.push(new THREE.Face3(r,t,s,[w,y,x])),this.faceVertexUvs[0].push([I,E,z]);this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=a instanceof Array?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;d<c;d++)this.addShape(a[d],b)};
THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||console.log("die");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d=1,d=a.x-b.x,e=a.y-b.y,f=c.x-a.x,g=c.y-a.y,h=d*d+e*e;if(1E-10<Math.abs(d*g-e*f)){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);c=h+d*f-a.x;a=b+e*f-a.y;d=c*c+a*a;if(2>=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/2)}else a=!1,1E-10<d?1E-10<f&&(a=!0):-1E-10>d?-1E-10>f&&(a=!0):Math.sign(e)==
Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(c,d){var e,f;for(O=c.length;0<=--O;){e=O;f=O-1;0>f&&(f=c.length-1);for(var g=0,h=r+2*p,g=0;g<h;g++){var k=ba*g,m=ba*(g+1),n=d+e+k,k=d+f+k,q=d+f+m,m=d+e+m,s=c,t=g,u=h,w=e,v=f,n=n+L,k=k+L,q=q+L,m=m+L;G.faces.push(new THREE.Face3(n,k,m,null,null,y));G.faces.push(new THREE.Face3(k,q,m,null,null,y));n=x.generateSideWallUV(G,a,s,b,n,k,q,m,t,u,w,v);G.faceVertexUvs[0].push([n[0],n[1],n[3]]);
G.faceVertexUvs[0].push([n[1],n[2],n[3]])}}}function g(a,b,c){G.vertices.push(new THREE.Vector3(a,b,c))}function f(c,d,e,f){c+=L;d+=L;e+=L;G.faces.push(new THREE.Face3(c,d,e,null,null,w));c=f?x.generateBottomUV(G,a,b,c,d,e):x.generateTopUV(G,a,b,c,d,e);G.faceVertexUvs[0].push(c)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,n=void 0!==b.bevelSize?b.bevelSize:k-2,p=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,m=void 0!==
b.curveSegments?b.curveSegments:12,r=void 0!==b.steps?b.steps:1,t=b.extrudePath,s,u=!1,w=b.material,y=b.extrudeMaterial,x=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,v,I,E,z;t&&(s=t.getSpacedPoints(r),u=!0,q=!1,v=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(t,r,!1),I=new THREE.Vector3,E=new THREE.Vector3,z=new THREE.Vector3);q||(n=k=p=0);var A,C,T,G=this,L=this.vertices.length,t=a.extractPoints(m),m=t.shape,R=t.holes;if(t=!THREE.Shape.Utils.isClockWise(m)){m=
m.reverse();C=0;for(T=R.length;C<T;C++)A=R[C],THREE.Shape.Utils.isClockWise(A)&&(R[C]=A.reverse());t=!1}var J=THREE.Shape.Utils.triangulateShape(m,R),X=m;C=0;for(T=R.length;C<T;C++)A=R[C],m=m.concat(A);var F,P,Q,ka,W,ba=m.length,ga,za=J.length,t=[],O=0;Q=X.length;F=Q-1;for(P=O+1;O<Q;O++,F++,P++)F===Q&&(F=0),P===Q&&(P=0),t[O]=d(X[O],X[F],X[P]);var Ma=[],ia,Pa=t.concat();C=0;for(T=R.length;C<T;C++){A=R[C];ia=[];O=0;Q=A.length;F=Q-1;for(P=O+1;O<Q;O++,F++,P++)F===Q&&(F=0),P===Q&&(P=0),ia[O]=d(A[O],A[F],
A[P]);Ma.push(ia);Pa=Pa.concat(ia)}for(F=0;F<p;F++){Q=F/p;ka=k*(1-Q);P=n*Math.sin(Q*Math.PI/2);O=0;for(Q=X.length;O<Q;O++)W=c(X[O],t[O],P),g(W.x,W.y,-ka);C=0;for(T=R.length;C<T;C++)for(A=R[C],ia=Ma[C],O=0,Q=A.length;O<Q;O++)W=c(A[O],ia[O],P),g(W.x,W.y,-ka)}P=n;for(O=0;O<ba;O++)W=q?c(m[O],Pa[O],P):m[O],u?(E.copy(v.normals[0]).multiplyScalar(W.x),I.copy(v.binormals[0]).multiplyScalar(W.y),z.copy(s[0]).add(E).add(I),g(z.x,z.y,z.z)):g(W.x,W.y,0);for(Q=1;Q<=r;Q++)for(O=0;O<ba;O++)W=q?c(m[O],Pa[O],P):m[O],
u?(E.copy(v.normals[Q]).multiplyScalar(W.x),I.copy(v.binormals[Q]).multiplyScalar(W.y),z.copy(s[Q]).add(E).add(I),g(z.x,z.y,z.z)):g(W.x,W.y,h/r*Q);for(F=p-1;0<=F;F--){Q=F/p;ka=k*(1-Q);P=n*Math.sin(Q*Math.PI/2);O=0;for(Q=X.length;O<Q;O++)W=c(X[O],t[O],P),g(W.x,W.y,h+ka);C=0;for(T=R.length;C<T;C++)for(A=R[C],ia=Ma[C],O=0,Q=A.length;O<Q;O++)W=c(A[O],ia[O],P),u?g(W.x,W.y+s[r-1].y,s[r-1].x+ka):g(W.x,W.y,h+ka)}(function(){if(q){var a;a=0*ba;for(O=0;O<za;O++)ga=J[O],f(ga[2]+a,ga[1]+a,ga[0]+a,!0);a=r+2*p;
a*=ba;for(O=0;O<za;O++)ga=J[O],f(ga[0]+a,ga[1]+a,ga[2]+a,!1)}else{for(O=0;O<za;O++)ga=J[O],f(ga[2],ga[1],ga[0],!0);for(O=0;O<za;O++)ga=J[O],f(ga[0]+ba*r,ga[1]+ba*r,ga[2]+ba*r,!1)}})();(function(){var a=0;e(X,a);a+=X.length;C=0;for(T=R.length;C<T;C++)A=R[C],e(A,a),a+=A.length})()};
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d,e,g){b=a.vertices[d];e=a.vertices[e];a=a.vertices[g];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(e.x,e.y),new THREE.Vector2(a.x,a.y)]},generateBottomUV:function(a,b,c,d,e,g){return this.generateTopUV(a,b,c,d,e,g)},generateSideWallUV:function(a,b,c,d,e,g,f,h,k,n,p,q){b=a.vertices[e];g=a.vertices[g];f=a.vertices[f];a=a.vertices[h];return.01>Math.abs(b.y-g.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(g.x,1-g.z),new THREE.Vector2(f.x,
1-f.z),new THREE.Vector2(a.x,1-a.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(g.y,1-g.z),new THREE.Vector2(f.y,1-f.z),new THREE.Vector2(a.y,1-a.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===a instanceof Array&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this};
Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(O=a.length;0<=--O;){c=O;d=O-1;0>d&&(d=a.length-1);for(var e=0,f=r+2*p,e=0;e<f;e++){var g=ba*e,h=ba*(e+1),k=b+c+g,g=b+d+g,m=b+d+h,h=b+c+h,k=k+L,g=g+L,m=m+L,h=h+L;G.faces.push(new THREE.Face3(k,g,h,null,null,y));G.faces.push(new THREE.Face3(g,m,h,null,null,y));k=x.generateSideWallUV(G,k,g,m,h);G.faceVertexUvs[0].push([k[0],k[1],k[3]]);G.faceVertexUvs[0].push([k[1],
k[2],k[3]])}}}function g(a,b,c){G.vertices.push(new THREE.Vector3(a,b,c))}function f(a,b,c){a+=L;b+=L;c+=L;G.faces.push(new THREE.Face3(a,b,c,null,null,w));a=x.generateTopUV(G,a,b,c);G.faceVertexUvs[0].push(a)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,n=void 0!==b.bevelSize?b.bevelSize:k-2,p=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,m=void 0!==b.curveSegments?b.curveSegments:12,r=void 0!==b.steps?b.steps:1,t=b.extrudePath,
s,u=!1,w=b.material,y=b.extrudeMaterial,x=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,v,I,E,z;t&&(s=t.getSpacedPoints(r),u=!0,q=!1,v=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(t,r,!1),I=new THREE.Vector3,E=new THREE.Vector3,z=new THREE.Vector3);q||(n=k=p=0);var A,C,T,G=this,L=this.vertices.length,t=a.extractPoints(m),m=t.shape,R=t.holes;if(t=!THREE.Shape.Utils.isClockWise(m)){m=m.reverse();C=0;for(T=R.length;C<T;C++)A=R[C],THREE.Shape.Utils.isClockWise(A)&&
(R[C]=A.reverse());t=!1}var J=THREE.Shape.Utils.triangulateShape(m,R),X=m;C=0;for(T=R.length;C<T;C++)A=R[C],m=m.concat(A);var F,P,Q,ka,W,ba=m.length,ga,za=J.length,t=[],O=0;Q=X.length;F=Q-1;for(P=O+1;O<Q;O++,F++,P++)F===Q&&(F=0),P===Q&&(P=0),t[O]=d(X[O],X[F],X[P]);var Ma=[],ia,Pa=t.concat();C=0;for(T=R.length;C<T;C++){A=R[C];ia=[];O=0;Q=A.length;F=Q-1;for(P=O+1;O<Q;O++,F++,P++)F===Q&&(F=0),P===Q&&(P=0),ia[O]=d(A[O],A[F],A[P]);Ma.push(ia);Pa=Pa.concat(ia)}for(F=0;F<p;F++){Q=F/p;ka=k*(1-Q);P=n*Math.sin(Q*
Math.PI/2);O=0;for(Q=X.length;O<Q;O++)W=c(X[O],t[O],P),g(W.x,W.y,-ka);C=0;for(T=R.length;C<T;C++)for(A=R[C],ia=Ma[C],O=0,Q=A.length;O<Q;O++)W=c(A[O],ia[O],P),g(W.x,W.y,-ka)}P=n;for(O=0;O<ba;O++)W=q?c(m[O],Pa[O],P):m[O],u?(E.copy(v.normals[0]).multiplyScalar(W.x),I.copy(v.binormals[0]).multiplyScalar(W.y),z.copy(s[0]).add(E).add(I),g(z.x,z.y,z.z)):g(W.x,W.y,0);for(Q=1;Q<=r;Q++)for(O=0;O<ba;O++)W=q?c(m[O],Pa[O],P):m[O],u?(E.copy(v.normals[Q]).multiplyScalar(W.x),I.copy(v.binormals[Q]).multiplyScalar(W.y),
z.copy(s[Q]).add(E).add(I),g(z.x,z.y,z.z)):g(W.x,W.y,h/r*Q);for(F=p-1;0<=F;F--){Q=F/p;ka=k*(1-Q);P=n*Math.sin(Q*Math.PI/2);O=0;for(Q=X.length;O<Q;O++)W=c(X[O],t[O],P),g(W.x,W.y,h+ka);C=0;for(T=R.length;C<T;C++)for(A=R[C],ia=Ma[C],O=0,Q=A.length;O<Q;O++)W=c(A[O],ia[O],P),u?g(W.x,W.y+s[r-1].y,s[r-1].x+ka):g(W.x,W.y,h+ka)}(function(){if(q){var a;a=0*ba;for(O=0;O<za;O++)ga=J[O],f(ga[2]+a,ga[1]+a,ga[0]+a);a=r+2*p;a*=ba;for(O=0;O<za;O++)ga=J[O],f(ga[0]+a,ga[1]+a,ga[2]+a)}else{for(O=0;O<za;O++)ga=J[O],f(ga[2],
ga[1],ga[0]);for(O=0;O<za;O++)ga=J[O],f(ga[0]+ba*r,ga[1]+ba*r,ga[2]+ba*r)}})();(function(){var a=0;e(X,a);a+=X.length;C=0;for(T=R.length;C<T;C++)A=R[C],e(A,a),a+=A.length})()};
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d){a=a.vertices;b=a[b];c=a[c];d=a[d];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(c.x,c.y),new THREE.Vector2(d.x,d.y)]},generateSideWallUV:function(a,b,c,d,e){a=a.vertices;b=a[b];c=a[c];d=a[d];e=a[e];return.01>Math.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y,
1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===a instanceof Array&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this};
THREE.ShapeGeometry.prototype.addShape=function(a,b){void 0===b&&(b={});var c=b.material,d=void 0===b.UVGenerator?THREE.ExtrudeGeometry.WorldUVGenerator:b.UVGenerator,e,g,f,h=this.vertices.length;e=a.extractPoints(void 0!==b.curveSegments?b.curveSegments:12);var k=e.shape,n=e.holes;if(!THREE.Shape.Utils.isClockWise(k))for(k=k.reverse(),e=0,g=n.length;e<g;e++)f=n[e],THREE.Shape.Utils.isClockWise(f)&&(n[e]=f.reverse());var p=THREE.Shape.Utils.triangulateShape(k,n);e=0;for(g=n.length;e<g;e++)f=n[e],
k=k.concat(f);n=k.length;g=p.length;for(e=0;e<n;e++)f=k[e],this.vertices.push(new THREE.Vector3(f.x,f.y,0));for(e=0;e<g;e++)n=p[e],k=n[0]+h,f=n[1]+h,n=n[2]+h,this.faces.push(new THREE.Face3(k,f,n,null,null,c)),this.faceVertexUvs[0].push(d.generateBottomUV(this,a,b,k,f,n))};
k=k.concat(f);n=k.length;g=p.length;for(e=0;e<n;e++)f=k[e],this.vertices.push(new THREE.Vector3(f.x,f.y,0));for(e=0;e<g;e++)n=p[e],k=n[0]+h,f=n[1]+h,n=n[2]+h,this.faces.push(new THREE.Face3(k,f,n,null,null,c)),this.faceVertexUvs[0].push(d.generateTopUV(this,k,f,n))};
THREE.LatheGeometry=function(a,b,c,d){THREE.Geometry.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=b||12;c=c||0;d=d||2*Math.PI;for(var e=1/(a.length-1),g=1/b,f=0,h=b;f<=h;f++)for(var k=c+f*g*d,n=Math.cos(k),p=Math.sin(k),k=0,q=a.length;k<q;k++){var m=a[k],r=new THREE.Vector3;r.x=n*m.x-p*m.y;r.y=p*m.x+n*m.y;r.z=m.z;this.vertices.push(r)}c=a.length;f=0;for(h=b;f<h;f++)for(k=0,q=a.length-1;k<q;k++){b=p=k+c*f;d=p+c;var n=p+1+c,p=p+1,m=f*g,r=k*e,t=
m+g,s=r+e;this.faces.push(new THREE.Face3(b,d,p));this.faceVertexUvs[0].push([new THREE.Vector2(m,r),new THREE.Vector2(t,r),new THREE.Vector2(m,s)]);this.faces.push(new THREE.Face3(d,n,p));this.faceVertexUvs[0].push([new THREE.Vector2(t,r),new THREE.Vector2(t,s),new THREE.Vector2(m,s)])}this.mergeVertices();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.PlaneGeometry=function(a,b,c,d){console.info("THREE.PlaneGeometry: Consider using THREE.PlaneBufferGeometry for lower memory footprint.");THREE.Geometry.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new THREE.PlaneBufferGeometry(a,b,c,d))};THREE.PlaneGeometry.prototype=Object.create(THREE.Geometry.prototype);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册