提交 0c27271c 编写于 作者: M Mr.doob

Updated builds.

上级 9cb83f15
...@@ -19802,9 +19802,9 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -19802,9 +19802,9 @@ THREE.WebGLRenderer = function ( parameters ) {
}; };
this.enableScissorTest = function ( enable ) { this.enableScissorTest = function ( boolean ) {
enable ? _gl.enable( _gl.SCISSOR_TEST ) : _gl.disable( _gl.SCISSOR_TEST ); state.set( _gl.SCISSOR_TEST, boolean );
}; };
...@@ -24978,7 +24978,7 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -24978,7 +24978,7 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
var newAttributes = new Uint8Array( 16 ); var newAttributes = new Uint8Array( 16 );
var enabledAttributes = new Uint8Array( 16 ); var enabledAttributes = new Uint8Array( 16 );
var switches = {}; var capabilities = {};
var currentBlending = null; var currentBlending = null;
var currentBlendEquation = null; var currentBlendEquation = null;
...@@ -24989,7 +24989,6 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -24989,7 +24989,6 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
var currentBlendDstAlpha = null; var currentBlendDstAlpha = null;
var currentDepthFunc = null; var currentDepthFunc = null;
var currentDepthTest = null;
var currentDepthWrite = null; var currentDepthWrite = null;
var currentColorWrite = null; var currentColorWrite = null;
...@@ -24998,7 +24997,6 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -24998,7 +24997,6 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
var currentLineWidth = null; var currentLineWidth = null;
var currentPolygonOffset = null;
var currentPolygonOffsetFactor = null; var currentPolygonOffsetFactor = null;
var currentPolygonOffsetUnits = null; var currentPolygonOffsetUnits = null;
...@@ -25013,7 +25011,7 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25013,7 +25011,7 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
gl.clearDepth( 1 ); gl.clearDepth( 1 );
gl.clearStencil( 0 ); gl.clearStencil( 0 );
gl.enable( gl.DEPTH_TEST ); this.enable( gl.DEPTH_TEST );
gl.depthFunc( gl.LEQUAL ); gl.depthFunc( gl.LEQUAL );
gl.frontFace( gl.CCW ); gl.frontFace( gl.CCW );
...@@ -25066,10 +25064,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25066,10 +25064,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
this.enable = function ( id ) { this.enable = function ( id ) {
if ( switches[ id ] !== true ) { if ( capabilities[ id ] !== true ) {
gl.enable( id ); gl.enable( id );
switches[ id ] = true; capabilities[ id ] = true;
} }
...@@ -25077,10 +25075,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25077,10 +25075,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
this.disable = function ( id ) { this.disable = function ( id ) {
if ( switches[ id ] !== false ) { if ( capabilities[ id ] !== false ) {
gl.disable( id ); gl.disable( id );
switches[ id ] = false; capabilities[ id ] = false;
} }
...@@ -25239,19 +25237,13 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25239,19 +25237,13 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
this.setDepthTest = function ( depthTest ) { this.setDepthTest = function ( depthTest ) {
if ( currentDepthTest !== depthTest ) { if ( depthTest ) {
if ( depthTest ) { this.enable( gl.DEPTH_TEST );
gl.enable( gl.DEPTH_TEST ); } else {
} else {
gl.disable( gl.DEPTH_TEST );
}
currentDepthTest = depthTest; this.disable( gl.DEPTH_TEST );
} }
...@@ -25311,25 +25303,19 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25311,25 +25303,19 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
}; };
this.setPolygonOffset = function ( polygonoffset, factor, units ) { this.setPolygonOffset = function ( polygonOffset, factor, units ) {
if ( currentPolygonOffset !== polygonoffset ) {
if ( polygonoffset ) { if ( polygonOffset ) {
gl.enable( gl.POLYGON_OFFSET_FILL ); this.enable( gl.POLYGON_OFFSET_FILL );
} else { } else {
gl.disable( gl.POLYGON_OFFSET_FILL );
}
currentPolygonOffset = polygonoffset; this.disable( gl.POLYGON_OFFSET_FILL );
} }
if ( polygonoffset && ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) ) { if ( polygonOffset && ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) ) {
gl.polygonOffset( factor, units ); gl.polygonOffset( factor, units );
...@@ -25426,10 +25412,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) { ...@@ -25426,10 +25412,10 @@ THREE.WebGLState = function ( gl, paramThreeToGL ) {
} }
switches = {}; capabilities = {};
currentBlending = null; currentBlending = null;
currentDepthTest = null;
currentDepthWrite = null; currentDepthWrite = null;
currentColorWrite = null; currentColorWrite = null;
...@@ -25804,7 +25790,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) { ...@@ -25804,7 +25790,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) {
gl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z ); gl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );
state.disable( gl.BLEND ); state.disable( gl.BLEND );
gl.enable( gl.DEPTH_TEST ); state.enable( gl.DEPTH_TEST );
gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );
...@@ -25819,7 +25805,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) { ...@@ -25819,7 +25805,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) {
// restore graphics // restore graphics
gl.uniform1i( uniforms.renderType, 1 ); gl.uniform1i( uniforms.renderType, 1 );
gl.disable( gl.DEPTH_TEST ); state.disable( gl.DEPTH_TEST );
state.activeTexture( gl.TEXTURE1 ); state.activeTexture( gl.TEXTURE1 );
state.bindTexture( gl.TEXTURE_2D, tempTexture ); state.bindTexture( gl.TEXTURE_2D, tempTexture );
...@@ -25883,7 +25869,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) { ...@@ -25883,7 +25869,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) {
// restore gl // restore gl
state.enable( gl.CULL_FACE ); state.enable( gl.CULL_FACE );
gl.enable( gl.DEPTH_TEST ); state.enable( gl.DEPTH_TEST );
gl.depthMask( true ); gl.depthMask( true );
renderer.resetGLState(); renderer.resetGLState();
......
...@@ -101,8 +101,8 @@ f*h;var k=f*e,l=c*h,m=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+l*d;b[5]=a-m*d;b[9]=- ...@@ -101,8 +101,8 @@ f*h;var k=f*e,l=c*h,m=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+l*d;b[5]=a-m*d;b[9]=-
g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,l=c*g,m=c*d,b[0]=g*h,b[4]=m-a*e,b[8]=l*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+l,b[10]=a-m*e):"XZY"===a.order&&(a=f*g,k=f*d,l=c*g,m=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+m,b[5]=f*h,b[9]=k*e-l,b[2]=l*e-k,b[6]=c*h,b[10]=m*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");return this.makeRotationFromQuaternion(a)}, g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,l=c*g,m=c*d,b[0]=g*h,b[4]=m-a*e,b[8]=l*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+l,b[10]=a-m*e):"XZY"===a.order&&(a=f*g,k=f*d,l=c*g,m=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+m,b[5]=f*h,b[9]=k*e-l,b[2]=l*e-k,b[6]=c*h,b[10]=m*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");return this.makeRotationFromQuaternion(a)},
makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,k=e+e;a=c*g;var l=c*h,c=c*k,m=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(m+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+m);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a,b,c;return function(d,e,f){void 0===a&&(a=new THREE.Vector3);void 0===b&&(b=new THREE.Vector3);void 0===c&&(c=new THREE.Vector3);var g=this.elements;c.subVectors(d, makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,k=e+e;a=c*g;var l=c*h,c=c*k,m=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(m+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+m);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a,b,c;return function(d,e,f){void 0===a&&(a=new THREE.Vector3);void 0===b&&(b=new THREE.Vector3);void 0===c&&(c=new THREE.Vector3);var g=this.elements;c.subVectors(d,
e).normalize();0===c.length()&&(c.z=1);a.crossVectors(f,c).normalize();0===a.length()&&(c.x+=1E-4,a.crossVectors(f,c).normalize());b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements, e).normalize();0===c.length()&&(c.z=1);a.crossVectors(f,c).normalize();0===a.length()&&(c.x+=1E-4,a.crossVectors(f,c).normalize());b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,
d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],k=c[12],l=c[1],m=c[5],p=c[9],n=c[13],r=c[2],t=c[6],q=c[10],u=c[14],v=c[3],x=c[7],z=c[11],c=c[15],w=d[0],H=d[4],L=d[8],B=d[12],y=d[1],G=d[5],F=d[9],A=d[13],I=d[2],N=d[6],E=d[10],C=d[14],D=d[3],M=d[7],R=d[11],d=d[15];e[0]=f*w+g*y+h*I+k*D;e[4]=f*H+g*G+h*N+k*M;e[8]=f*L+g*F+h*E+k*R;e[12]=f*B+g*A+h*C+k*d;e[1]=l*w+m*y+p*I+n*D;e[5]=l*H+m*G+p*N+n*M;e[9]=l*L+m*F+p*E+n*R;e[13]=l*B+m*A+p*C+n*d;e[2]=r*w+t*y+q*I+u*D;e[6]=r*H+t*G+q*N+u*M;e[10]=r*L+t*F+q*E+u*R;e[14]= d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],k=c[12],l=c[1],m=c[5],p=c[9],n=c[13],r=c[2],t=c[6],q=c[10],u=c[14],v=c[3],x=c[7],z=c[11],c=c[15],w=d[0],H=d[4],K=d[8],D=d[12],y=d[1],G=d[5],F=d[9],A=d[13],I=d[2],N=d[6],E=d[10],B=d[14],C=d[3],M=d[7],R=d[11],d=d[15];e[0]=f*w+g*y+h*I+k*C;e[4]=f*H+g*G+h*N+k*M;e[8]=f*K+g*F+h*E+k*R;e[12]=f*D+g*A+h*B+k*d;e[1]=l*w+m*y+p*I+n*C;e[5]=l*H+m*G+p*N+n*M;e[9]=l*K+m*F+p*E+n*R;e[13]=l*D+m*A+p*B+n*d;e[2]=r*w+t*y+q*I+u*C;e[6]=r*H+t*G+q*N+u*M;e[10]=r*K+t*F+q*E+u*R;e[14]=
r*B+t*A+q*C+u*d;e[3]=v*w+x*y+z*I+c*D;e[7]=v*H+x*G+z*N+c*M;e[11]=v*L+x*F+z*E+c*R;e[15]=v*B+x*A+z*C+c*d;return this},multiplyToArray:function(a,b,c){var d=this.elements;this.multiplyMatrices(a,b);c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[5]=d[5];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12];c[13]=d[13];c[14]=d[14];c[15]=d[15];return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*= r*D+t*A+q*B+u*d;e[3]=v*w+x*y+z*I+c*C;e[7]=v*H+x*G+z*N+c*M;e[11]=v*K+x*F+z*E+c*R;e[15]=v*D+x*A+z*B+c*d;return this},multiplyToArray:function(a,b,c){var d=this.elements;this.multiplyMatrices(a,b);c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[5]=d[5];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12];c[13]=d[13];c[14]=d[14];c[15]=d[15];return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=
a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},multiplyVector3:function(a){console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.");return a.applyProjection(this)},multiplyVector4:function(a){console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(a){console.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."); a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},multiplyVector3:function(a){console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.");return a.applyProjection(this)},multiplyVector4:function(a){console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(a){console.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.");
return this.applyToVector3Array(a)},applyToVector3Array:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Vector3);void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.fromArray(b,c),a.applyMatrix4(this),a.toArray(b,c);return b}}(),applyToBuffer:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Vector3);void 0===c&&(c=0);void 0===d&&(d=b.length/b.itemSize);for(var e=0;e<d;e++,c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix4(this),b.setXYZ(a.x, return this.applyToVector3Array(a)},applyToVector3Array:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Vector3);void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.fromArray(b,c),a.applyMatrix4(this),a.toArray(b,c);return b}}(),applyToBuffer:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Vector3);void 0===c&&(c=0);void 0===d&&(d=b.length/b.itemSize);for(var e=0;e<d;e++,c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix4(this),b.setXYZ(a.x,
a.y,a.z);return b}}(),rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],m=a[6],p=a[10],n=a[14];return a[3]*(+e*h*m-d*k* a.y,a.z);return b}}(),rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],m=a[6],p=a[10],n=a[14];return a[3]*(+e*h*m-d*k*
...@@ -202,9 +202,9 @@ return this},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THR ...@@ -202,9 +202,9 @@ return this},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THR
b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],d[c.a].add(c.normal),d[c.b].add(c.normal),d[c.c].add(c.normal);b=0;for(c=this.vertices.length;b<c;b++)d[b].normalize();a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=c.vertexNormals,3===e.length?(e[0].copy(d[c.a]),e[1].copy(d[c.b]),e[2].copy(d[c.c])):(e[0]=d[c.a].clone(), b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],d[c.a].add(c.normal),d[c.b].add(c.normal),d[c.c].add(c.normal);b=0;for(c=this.vertices.length;b<c;b++)d[b].normalize();a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=c.vertexNormals,3===e.length?(e[0].copy(d[c.a]),e[1].copy(d[c.b]),e[2].copy(d[c.c])):(e[0]=d[c.a].clone(),
e[1]=d[c.b].clone(),e[2]=d[c.c].clone())},computeMorphNormals:function(){var a,b,c,d,e;c=0;for(d=this.faces.length;c<d;c++)for(e=this.faces[c],e.__originalFaceNormal?e.__originalFaceNormal.copy(e.normal):e.__originalFaceNormal=e.normal.clone(),e.__originalVertexNormals||(e.__originalVertexNormals=[]),a=0,b=e.vertexNormals.length;a<b;a++)e.__originalVertexNormals[a]?e.__originalVertexNormals[a].copy(e.vertexNormals[a]):e.__originalVertexNormals[a]=e.vertexNormals[a].clone();var f=new THREE.Geometry; e[1]=d[c.b].clone(),e[2]=d[c.c].clone())},computeMorphNormals:function(){var a,b,c,d,e;c=0;for(d=this.faces.length;c<d;c++)for(e=this.faces[c],e.__originalFaceNormal?e.__originalFaceNormal.copy(e.normal):e.__originalFaceNormal=e.normal.clone(),e.__originalVertexNormals||(e.__originalVertexNormals=[]),a=0,b=e.vertexNormals.length;a<b;a++)e.__originalVertexNormals[a]?e.__originalVertexNormals[a].copy(e.vertexNormals[a]):e.__originalVertexNormals[a]=e.vertexNormals[a].clone();var f=new THREE.Geometry;
f.faces=this.faces;a=0;for(b=this.morphTargets.length;a<b;a++){if(!this.morphNormals[a]){this.morphNormals[a]={};this.morphNormals[a].faceNormals=[];this.morphNormals[a].vertexNormals=[];e=this.morphNormals[a].faceNormals;var g=this.morphNormals[a].vertexNormals,h,k;c=0;for(d=this.faces.length;c<d;c++)h=new THREE.Vector3,k={a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3},e.push(h),g.push(k)}g=this.morphNormals[a];f.vertices=this.morphTargets[a].vertices;f.computeFaceNormals();f.computeVertexNormals(); f.faces=this.faces;a=0;for(b=this.morphTargets.length;a<b;a++){if(!this.morphNormals[a]){this.morphNormals[a]={};this.morphNormals[a].faceNormals=[];this.morphNormals[a].vertexNormals=[];e=this.morphNormals[a].faceNormals;var g=this.morphNormals[a].vertexNormals,h,k;c=0;for(d=this.faces.length;c<d;c++)h=new THREE.Vector3,k={a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3},e.push(h),g.push(k)}g=this.morphNormals[a];f.vertices=this.morphTargets[a].vertices;f.computeFaceNormals();f.computeVertexNormals();
c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],h=g.faceNormals[c],k=g.vertexNormals[c],h.copy(e.normal),k.a.copy(e.vertexNormals[0]),k.b.copy(e.vertexNormals[1]),k.c.copy(e.vertexNormals[2])}c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){var a,b,c,d,e,f,g,h,k,l,m,p,n,r,t,q,u,v=[],x=[];c=new THREE.Vector3;var z=new THREE.Vector3,w=new THREE.Vector3,H=new THREE.Vector3,L=new THREE.Vector3; c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],h=g.faceNormals[c],k=g.vertexNormals[c],h.copy(e.normal),k.a.copy(e.vertexNormals[0]),k.b.copy(e.vertexNormals[1]),k.c.copy(e.vertexNormals[2])}c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){var a,b,c,d,e,f,g,h,k,l,m,p,n,r,t,q,u,v=[],x=[];c=new THREE.Vector3;var z=new THREE.Vector3,w=new THREE.Vector3,H=new THREE.Vector3,K=new THREE.Vector3;
a=0;for(b=this.vertices.length;a<b;a++)v[a]=new THREE.Vector3,x[a]=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)e=this.faces[a],f=this.faceVertexUvs[0][a],d=e.a,u=e.b,e=e.c,g=this.vertices[d],h=this.vertices[u],k=this.vertices[e],l=f[0],m=f[1],p=f[2],f=h.x-g.x,n=k.x-g.x,r=h.y-g.y,t=k.y-g.y,h=h.z-g.z,g=k.z-g.z,k=m.x-l.x,q=p.x-l.x,m=m.y-l.y,l=p.y-l.y,p=1/(k*l-q*m),c.set((l*f-m*n)*p,(l*r-m*t)*p,(l*h-m*g)*p),z.set((k*n-q*f)*p,(k*t-q*r)*p,(k*g-q*h)*p),v[d].add(c),v[u].add(c),v[e].add(c),x[d].add(z), a=0;for(b=this.vertices.length;a<b;a++)v[a]=new THREE.Vector3,x[a]=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)e=this.faces[a],f=this.faceVertexUvs[0][a],d=e.a,u=e.b,e=e.c,g=this.vertices[d],h=this.vertices[u],k=this.vertices[e],l=f[0],m=f[1],p=f[2],f=h.x-g.x,n=k.x-g.x,r=h.y-g.y,t=k.y-g.y,h=h.z-g.z,g=k.z-g.z,k=m.x-l.x,q=p.x-l.x,m=m.y-l.y,l=p.y-l.y,p=1/(k*l-q*m),c.set((l*f-m*n)*p,(l*r-m*t)*p,(l*h-m*g)*p),z.set((k*n-q*f)*p,(k*t-q*r)*p,(k*g-q*h)*p),v[d].add(c),v[u].add(c),v[e].add(c),x[d].add(z),
x[u].add(z),x[e].add(z);z=["a","b","c","d"];a=0;for(b=this.faces.length;a<b;a++)for(e=this.faces[a],c=0;c<Math.min(e.vertexNormals.length,3);c++)L.copy(e.vertexNormals[c]),d=e[z[c]],u=v[d],w.copy(u),w.sub(L.multiplyScalar(L.dot(u))).normalize(),H.crossVectors(e.vertexNormals[c],u),d=H.dot(x[d]),d=0>d?-1:1,e.vertexTangents[c]=new THREE.Vector4(w.x,w.y,w.z,d);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]= x[u].add(z),x[e].add(z);z=["a","b","c","d"];a=0;for(b=this.faces.length;a<b;a++)for(e=this.faces[a],c=0;c<Math.min(e.vertexNormals.length,3);c++)K.copy(e.vertexNormals[c]),d=e[z[c]],u=v[d],w.copy(u),w.sub(K.multiplyScalar(K.dot(u))).normalize(),H.crossVectors(e.vertexNormals[c],u),d=H.dot(x[d]),d=0>d?-1:1,e.vertexTangents[c]=new THREE.Vector4(w.x,w.y,w.z,d);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=
a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b){if(!1===a instanceof THREE.Geometry)console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a);else{var c,d=this.vertices.length,e=this.vertices,f=a.vertices,g=this.faces, a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b){if(!1===a instanceof THREE.Geometry)console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a);else{var c,d=this.vertices.length,e=this.vertices,f=a.vertices,g=this.faces,
h=a.faces,k=this.faceVertexUvs[0],l=a.faceVertexUvs[0];void 0!==b&&(c=(new THREE.Matrix3).getNormalMatrix(b));for(var m=0,p=f.length;m<p;m++){var n=f[m].clone();void 0!==b&&n.applyMatrix4(b);e.push(n)}m=0;for(p=h.length;m<p;m++){var r=h[m],t,q=r.vertexNormals,u=r.vertexColors,n=new THREE.Face3(r.a+d,r.b+d,r.c+d);n.normal.copy(r.normal);void 0!==c&&n.normal.applyMatrix3(c).normalize();e=0;for(f=q.length;e<f;e++)t=q[e].clone(),void 0!==c&&t.applyMatrix3(c).normalize(),n.vertexNormals.push(t);n.color.copy(r.color); h=a.faces,k=this.faceVertexUvs[0],l=a.faceVertexUvs[0];void 0!==b&&(c=(new THREE.Matrix3).getNormalMatrix(b));for(var m=0,p=f.length;m<p;m++){var n=f[m].clone();void 0!==b&&n.applyMatrix4(b);e.push(n)}m=0;for(p=h.length;m<p;m++){var r=h[m],t,q=r.vertexNormals,u=r.vertexColors,n=new THREE.Face3(r.a+d,r.b+d,r.c+d);n.normal.copy(r.normal);void 0!==c&&n.normal.applyMatrix3(c).normalize();e=0;for(f=q.length;e<f;e++)t=q[e].clone(),void 0!==c&&t.applyMatrix3(c).normalize(),n.vertexNormals.push(t);n.color.copy(r.color);
e=0;for(f=u.length;e<f;e++)r=u[e],n.vertexColors.push(r.clone());g.push(n)}m=0;for(p=l.length;m<p;m++)if(c=l[m],d=[],void 0!==c){e=0;for(f=c.length;e<f;e++)d.push(c[e].clone());k.push(d)}}},mergeMesh:function(a){!1===a instanceof THREE.Mesh?console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",a):(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix))},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g;f=0;for(g=this.vertices.length;f<g;f++)d= e=0;for(f=u.length;e<f;e++)r=u[e],n.vertexColors.push(r.clone());g.push(n)}m=0;for(p=l.length;m<p;m++)if(c=l[m],d=[],void 0!==c){e=0;for(f=c.length;e<f;e++)d.push(c[e].clone());k.push(d)}}},mergeMesh:function(a){!1===a instanceof THREE.Mesh?console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",a):(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix))},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g;f=0;for(g=this.vertices.length;f<g;f++)d=
...@@ -236,10 +236,10 @@ if(b){var c=this.boundingBox;c.makeEmpty();for(var d=0,e=b.length;d<e;d+=3)a.fro ...@@ -236,10 +236,10 @@ if(b){var c=this.boundingBox;c.makeEmpty();for(var d=0,e=b.length;d<e;d+=3)a.fro
b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var c=this.attributes.position.array;if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,f=c.length;e<f;e+=3)b.fromArray(c,e),a.expandByPoint(b);a.center(d);for(var g=0,e=0,f=c.length;e<f;e+=3)b.fromArray(c,e),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var c=this.attributes.position.array;if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,f=c.length;e<f;e+=3)b.fromArray(c,e),a.expandByPoint(b);a.center(d);for(var g=0,e=0,f=c.length;e<f;e+=3)b.fromArray(c,e),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',
this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,f,g,h,k=new THREE.Vector3,l=new THREE.Vector3,m=new THREE.Vector3,p=new THREE.Vector3,n=new THREE.Vector3;if(a.index)for(var r=a.index.array,t=0<this.offsets.length?this.offsets:[{start:0, this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,f,g,h,k=new THREE.Vector3,l=new THREE.Vector3,m=new THREE.Vector3,p=new THREE.Vector3,n=new THREE.Vector3;if(a.index)for(var r=a.index.array,t=0<this.offsets.length?this.offsets:[{start:0,
count:r.length,index:0}],q=0,u=t.length;q<u;++q){e=t[q].start;f=t[q].count;for(var v=t[q].index,d=e,e=e+f;d<e;d+=3)f=3*(v+r[d]),g=3*(v+r[d+1]),h=3*(v+r[d+2]),k.fromArray(b,f),l.fromArray(b,g),m.fromArray(b,h),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[f]+=p.x,c[f+1]+=p.y,c[f+2]+=p.z,c[g]+=p.x,c[g+1]+=p.y,c[g+2]+=p.z,c[h]+=p.x,c[h+1]+=p.y,c[h+2]+=p.z}else for(d=0,e=b.length;d<e;d+=9)k.fromArray(b,d),l.fromArray(b,d+3),m.fromArray(b,d+6),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[d]=p.x, count:r.length,index:0}],q=0,u=t.length;q<u;++q){e=t[q].start;f=t[q].count;for(var v=t[q].index,d=e,e=e+f;d<e;d+=3)f=3*(v+r[d]),g=3*(v+r[d+1]),h=3*(v+r[d+2]),k.fromArray(b,f),l.fromArray(b,g),m.fromArray(b,h),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[f]+=p.x,c[f+1]+=p.y,c[f+2]+=p.z,c[g]+=p.x,c[g+1]+=p.y,c[g+2]+=p.z,c[h]+=p.x,c[h+1]+=p.y,c[h+2]+=p.z}else for(d=0,e=b.length;d<e;d+=9)k.fromArray(b,d),l.fromArray(b,d+3),m.fromArray(b,d+6),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[d]=p.x,
c[d+1]=p.y,c[d+2]=p.z,c[d+3]=p.x,c[d+4]=p.y,c[d+5]=p.z,c[d+6]=p.x,c[d+7]=p.y,c[d+8]=p.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){p.fromArray(d,3*a);n.fromArray(d,3*b);r.fromArray(d,3*c);t.fromArray(f,2*a);q.fromArray(f,2*b);u.fromArray(f,2*c);v=n.x-p.x;x=r.x-p.x;z=n.y-p.y;w=r.y-p.y;H=n.z-p.z;L=r.z-p.z;B=q.x-t.x;y=u.x-t.x;G=q.y-t.y;F=u.y-t.y;A=1/(B*F-y*G);I.set((F*v-G*x)*A,(F*z-G*w)*A,(F*H-G*L)*A);N.set((B*x-y*v)*A,(B*w-y*z)*A,(B*L-y*H)*A);k[a].add(I); c[d+1]=p.y,c[d+2]=p.z,c[d+3]=p.x,c[d+4]=p.y,c[d+5]=p.z,c[d+6]=p.x,c[d+7]=p.y,c[d+8]=p.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){p.fromArray(d,3*a);n.fromArray(d,3*b);r.fromArray(d,3*c);t.fromArray(f,2*a);q.fromArray(f,2*b);u.fromArray(f,2*c);v=n.x-p.x;x=r.x-p.x;z=n.y-p.y;w=r.y-p.y;H=n.z-p.z;K=r.z-p.z;D=q.x-t.x;y=u.x-t.x;G=q.y-t.y;F=u.y-t.y;A=1/(D*F-y*G);I.set((F*v-G*x)*A,(F*z-G*w)*A,(F*H-G*K)*A);N.set((D*x-y*v)*A,(D*w-y*z)*A,(D*K-y*H)*A);k[a].add(I);
k[b].add(I);k[c].add(I);l[a].add(N);l[b].add(N);l[c].add(N)}function b(a){aa.fromArray(e,3*a);fa.copy(aa);na=k[a];T.copy(na);T.sub(aa.multiplyScalar(aa.dot(na))).normalize();K.crossVectors(fa,na);pa=K.dot(l[a]);ea=0>pa?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=ea}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()"); k[b].add(I);k[c].add(I);l[a].add(N);l[b].add(N);l[c].add(N)}function b(a){aa.fromArray(e,3*a);fa.copy(aa);na=k[a];T.copy(na);T.sub(aa.multiplyScalar(aa.dot(na))).normalize();L.crossVectors(fa,na);pa=L.dot(l[a]);ea=0>pa?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=ea}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*g),4));for(var h=this.attributes.tangent.array,k=[],l=[],m=0;m<g;m++)k[m]=new THREE.Vector3,l[m]=new THREE.Vector3;var p=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,t=new THREE.Vector2,q=new THREE.Vector2,u=new THREE.Vector2,v,x,z,w,H,L, else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*g),4));for(var h=this.attributes.tangent.array,k=[],l=[],m=0;m<g;m++)k[m]=new THREE.Vector3,l[m]=new THREE.Vector3;var p=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,t=new THREE.Vector2,q=new THREE.Vector2,u=new THREE.Vector2,v,x,z,w,H,K,
B,y,G,F,A,I=new THREE.Vector3,N=new THREE.Vector3,E,C,D,M,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length,0);var U=this.drawcalls,m=0;for(C=U.length;m<C;++m){E=U[m].start;D=U[m].count;var S=U[m].index,g=E;for(E+=D;g<E;g+=3)D=S+c[g],M=S+c[g+1],R=S+c[g+2],a(D,M,R)}var T=new THREE.Vector3,K=new THREE.Vector3,aa=new THREE.Vector3,fa=new THREE.Vector3,ea,na,pa,m=0;for(C=U.length;m<C;++m)for(E=U[m].start,D=U[m].count,S=U[m].index,g=E,E+=D;g<E;g+=3)D=S+c[g],M=S+c[g+1],R=S+c[g+2],b(D),b(M),b(R)}}, D,y,G,F,A,I=new THREE.Vector3,N=new THREE.Vector3,E,B,C,M,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length,0);var U=this.drawcalls,m=0;for(B=U.length;m<B;++m){E=U[m].start;C=U[m].count;var S=U[m].index,g=E;for(E+=C;g<E;g+=3)C=S+c[g],M=S+c[g+1],R=S+c[g+2],a(C,M,R)}var T=new THREE.Vector3,L=new THREE.Vector3,aa=new THREE.Vector3,fa=new THREE.Vector3,ea,na,pa,m=0;for(B=U.length;m<B;++m)for(E=U[m].start,C=U[m].count,S=U[m].index,g=E,E+=C;g<E;g+=3)C=S+c[g],M=S+c[g+1],R=S+c[g+2],b(C),b(M),b(R)}},
computeOffsets:function(a){void 0===a&&(a=THREE.BufferGeometry.MaxIndex);for(var b=this.attributes.index.array,c=this.attributes.position.array,d=b.length/3,e=new (65535<c.length/3&&65535<THREE.BufferGeometry.MaxIndex?Uint32Array:Uint16Array)(b.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,m=0,p=new Int32Array(6),n=new Int32Array(c.length),r=new Int32Array(c.length),t=0;t<c.length;t++)n[t]=-1,r[t]=-1;for(c=0;c<d;c++){for(var q=m=0;3>q;q++)t=b[3*c+q],-1===n[t]?(p[2*q]=t,p[2*q+1]=-1,m++): computeOffsets:function(a){void 0===a&&(a=THREE.BufferGeometry.MaxIndex);for(var b=this.attributes.index.array,c=this.attributes.position.array,d=b.length/3,e=new (65535<c.length/3&&65535<THREE.BufferGeometry.MaxIndex?Uint32Array:Uint16Array)(b.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,m=0,p=new Int32Array(6),n=new Int32Array(c.length),r=new Int32Array(c.length),t=0;t<c.length;t++)n[t]=-1,r[t]=-1;for(c=0;c<d;c++){for(var q=m=0;3>q;q++)t=b[3*c+q],-1===n[t]?(p[2*q]=t,p[2*q+1]=-1,m++):
n[t]<k.index?(p[2*q]=t,p[2*q+1]=-1,l++):(p[2*q]=t,p[2*q+1]=n[t]);if(g+m>k.index+a)for(k={start:f,count:0,index:g},h.push(k),m=0;6>m;m+=2)q=p[m+1],-1<q&&q<k.index&&(p[m+1]=-1);for(m=0;6>m;m+=2)t=p[m],q=p[m+1],-1===q&&(q=g++),n[t]=q,r[q]=t,e[f++]=q-k.index,k.count++}this.reorderBuffers(e,r,g);return this.drawcalls=this.offsets=h},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a);else{void 0=== n[t]<k.index?(p[2*q]=t,p[2*q+1]=-1,l++):(p[2*q]=t,p[2*q+1]=n[t]);if(g+m>k.index+a)for(k={start:f,count:0,index:g},h.push(k),m=0;6>m;m+=2)q=p[m+1],-1<q&&q<k.index&&(p[m+1]=-1);for(m=0;6>m;m+=2)t=p[m],q=p[m+1],-1===q&&(q=g++),n[t]=q,r[q]=t,e[f++]=q-k.index,k.count++}this.reorderBuffers(e,r,g);return this.drawcalls=this.offsets=h},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a);else{void 0===
b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!==e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize* b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!==e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize*
...@@ -389,8 +389,8 @@ THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(void 0!==this.morp ...@@ -389,8 +389,8 @@ THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(void 0!==this.morp
THREE.Mesh.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere,d=new THREE.Vector3,e=new THREE.Vector3,f=new THREE.Vector3;return function(g,h){var k=this.geometry,l=this.material;if(void 0!==l&&(null===k.boundingSphere&&k.computeBoundingSphere(),c.copy(k.boundingSphere),c.applyMatrix4(this.matrixWorld),!1!==g.ray.isIntersectionSphere(c)&&(a.getInverse(this.matrixWorld),b.copy(g.ray).applyMatrix4(a),null===k.boundingBox||!1!==b.isIntersectionBox(k.boundingBox)))){var m, THREE.Mesh.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere,d=new THREE.Vector3,e=new THREE.Vector3,f=new THREE.Vector3;return function(g,h){var k=this.geometry,l=this.material;if(void 0!==l&&(null===k.boundingSphere&&k.computeBoundingSphere(),c.copy(k.boundingSphere),c.applyMatrix4(this.matrixWorld),!1!==g.ray.isIntersectionSphere(c)&&(a.getInverse(this.matrixWorld),b.copy(g.ray).applyMatrix4(a),null===k.boundingBox||!1!==b.isIntersectionBox(k.boundingBox)))){var m,
p,n;if(k instanceof THREE.BufferGeometry)if(m=k.attributes,void 0!==m.index){var r=m.index.array,t=m.position.array,q=k.offsets;0===q.length&&(q=[{start:0,count:r.length,index:0}]);for(var u=0,v=q.length;u<v;++u){m=q[u].start;for(var x=q[u].index,k=m,z=m+q[u].count;k<z;k+=3){m=x+r[k];p=x+r[k+1];n=x+r[k+2];d.fromArray(t,3*m);e.fromArray(t,3*p);f.fromArray(t,3*n);var w=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide);if(null!==w){w.applyMatrix4(this.matrixWorld); p,n;if(k instanceof THREE.BufferGeometry)if(m=k.attributes,void 0!==m.index){var r=m.index.array,t=m.position.array,q=k.offsets;0===q.length&&(q=[{start:0,count:r.length,index:0}]);for(var u=0,v=q.length;u<v;++u){m=q[u].start;for(var x=q[u].index,k=m,z=m+q[u].count;k<z;k+=3){m=x+r[k];p=x+r[k+1];n=x+r[k+2];d.fromArray(t,3*m);e.fromArray(t,3*p);f.fromArray(t,3*n);var w=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide);if(null!==w){w.applyMatrix4(this.matrixWorld);
var H=g.ray.origin.distanceTo(w);H<g.near||H>g.far||h.push({distance:H,point:w,face:new THREE.Face3(m,p,n,THREE.Triangle.normal(d,e,f)),faceIndex:Math.floor(k/3),object:this})}}}}else for(t=m.position.array,r=k=0,z=t.length;k<z;k+=3,r+=9)m=k,p=k+1,n=k+2,d.fromArray(t,r),e.fromArray(t,r+3),f.fromArray(t,r+6),w=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide),null!==w&&(w.applyMatrix4(this.matrixWorld),H=g.ray.origin.distanceTo(w),H<g.near|| var H=g.ray.origin.distanceTo(w);H<g.near||H>g.far||h.push({distance:H,point:w,face:new THREE.Face3(m,p,n,THREE.Triangle.normal(d,e,f)),faceIndex:Math.floor(k/3),object:this})}}}}else for(t=m.position.array,r=k=0,z=t.length;k<z;k+=3,r+=9)m=k,p=k+1,n=k+2,d.fromArray(t,r),e.fromArray(t,r+3),f.fromArray(t,r+6),w=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide),null!==w&&(w.applyMatrix4(this.matrixWorld),H=g.ray.origin.distanceTo(w),H<g.near||
H>g.far||h.push({distance:H,point:w,face:new THREE.Face3(m,p,n,THREE.Triangle.normal(d,e,f)),index:Math.floor(k/3),object:this}));else if(k instanceof THREE.Geometry)for(r=l instanceof THREE.MeshFaceMaterial,t=!0===r?l.materials:null,q=k.vertices,u=k.faces,v=0,x=u.length;v<x;v++)if(z=u[v],w=!0===r?t[z.materialIndex]:l,void 0!==w){m=q[z.a];p=q[z.b];n=q[z.c];if(!0===w.morphTargets){var H=k.morphTargets,L=this.morphTargetInfluences;d.set(0,0,0);e.set(0,0,0);f.set(0,0,0);for(var B=0,y=H.length;B<y;B++){var G= H>g.far||h.push({distance:H,point:w,face:new THREE.Face3(m,p,n,THREE.Triangle.normal(d,e,f)),index:Math.floor(k/3),object:this}));else if(k instanceof THREE.Geometry)for(r=l instanceof THREE.MeshFaceMaterial,t=!0===r?l.materials:null,q=k.vertices,u=k.faces,v=0,x=u.length;v<x;v++)if(z=u[v],w=!0===r?t[z.materialIndex]:l,void 0!==w){m=q[z.a];p=q[z.b];n=q[z.c];if(!0===w.morphTargets){var H=k.morphTargets,K=this.morphTargetInfluences;d.set(0,0,0);e.set(0,0,0);f.set(0,0,0);for(var D=0,y=H.length;D<y;D++){var G=
L[B];if(0!==G){var F=H[B].vertices;d.x+=(F[z.a].x-m.x)*G;d.y+=(F[z.a].y-m.y)*G;d.z+=(F[z.a].z-m.z)*G;e.x+=(F[z.b].x-p.x)*G;e.y+=(F[z.b].y-p.y)*G;e.z+=(F[z.b].z-p.z)*G;f.x+=(F[z.c].x-n.x)*G;f.y+=(F[z.c].y-n.y)*G;f.z+=(F[z.c].z-n.z)*G}}d.add(m);e.add(p);f.add(n);m=d;p=e;n=f}w=w.side===THREE.BackSide?b.intersectTriangle(n,p,m,!0):b.intersectTriangle(m,p,n,w.side!==THREE.DoubleSide);null!==w&&(w.applyMatrix4(this.matrixWorld),H=g.ray.origin.distanceTo(w),H<g.near||H>g.far||h.push({distance:H,point:w, K[D];if(0!==G){var F=H[D].vertices;d.x+=(F[z.a].x-m.x)*G;d.y+=(F[z.a].y-m.y)*G;d.z+=(F[z.a].z-m.z)*G;e.x+=(F[z.b].x-p.x)*G;e.y+=(F[z.b].y-p.y)*G;e.z+=(F[z.b].z-p.z)*G;f.x+=(F[z.c].x-n.x)*G;f.y+=(F[z.c].y-n.y)*G;f.z+=(F[z.c].z-n.z)*G}}d.add(m);e.add(p);f.add(n);m=d;p=e;n=f}w=w.side===THREE.BackSide?b.intersectTriangle(n,p,m,!0):b.intersectTriangle(m,p,n,w.side!==THREE.DoubleSide);null!==w&&(w.applyMatrix4(this.matrixWorld),H=g.ray.origin.distanceTo(w),H<g.near||H>g.far||h.push({distance:H,point:w,
face:z,faceIndex:v,object:this}))}}}}();THREE.Mesh.prototype.clone=function(a,b){void 0===a&&(a=new THREE.Mesh(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a,b);return a}; face:z,faceIndex:v,object:this}))}}}}();THREE.Mesh.prototype.clone=function(a,b){void 0===a&&(a=new THREE.Mesh(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a,b);return a};
THREE.Mesh.prototype.toJSON=function(a){var b=THREE.Object3D.prototype.toJSON.call(this,a);void 0===a.geometries[this.geometry.uuid]&&(a.geometries[this.geometry.uuid]=this.geometry.toJSON(a));void 0===a.materials[this.material.uuid]&&(a.materials[this.material.uuid]=this.material.toJSON(a));b.object.geometry=this.geometry.uuid;b.object.material=this.material.uuid;return b};THREE.Bone=function(a){THREE.Object3D.call(this);this.type="Bone";this.skin=a};THREE.Bone.prototype=Object.create(THREE.Object3D.prototype); THREE.Mesh.prototype.toJSON=function(a){var b=THREE.Object3D.prototype.toJSON.call(this,a);void 0===a.geometries[this.geometry.uuid]&&(a.geometries[this.geometry.uuid]=this.geometry.toJSON(a));void 0===a.materials[this.material.uuid]&&(a.materials[this.material.uuid]=this.material.toJSON(a));b.object.geometry=this.geometry.uuid;b.object.material=this.material.uuid;return b};THREE.Bone=function(a){THREE.Object3D.call(this);this.type="Bone";this.skin=a};THREE.Bone.prototype=Object.create(THREE.Object3D.prototype);
THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.clone=function(a){void 0===a&&(a=new THREE.Bone(this.skin));THREE.Object3D.prototype.clone.call(this,a);a.skin=this.skin;return a}; THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.clone=function(a){void 0===a&&(a=new THREE.Bone(this.skin));THREE.Object3D.prototype.clone.call(this,a);a.skin=this.skin;return a};
...@@ -486,23 +486,23 @@ tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.Sh ...@@ -486,23 +486,23 @@ tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.Sh
THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment, THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,
"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {", "}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",
THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}}; THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===S&&(a*=d,b*=d,c*=d);s.clearColor(a,b,c,d)}function c(){P.init();s.viewport(Oa,za,Fa,Ga);b(aa.r,aa.g,aa.b,fa)}function d(){Ua=jb=null;qa="";Va=-1;cb=!0;P.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=Z.get(a);if(a.image&&b.__image__webglTextureCube)s.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;s.deleteTexture(b.__webglTexture)}Z.delete(a)}Aa.textures--}function f(a){var b=a.target; THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===S&&(a*=d,b*=d,c*=d);s.clearColor(a,b,c,d)}function c(){O.init();s.viewport(Oa,za,Fa,Ga);b(aa.r,aa.g,aa.b,fa)}function d(){Ua=jb=null;qa="";Va=-1;cb=!0;O.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=Z.get(a);if(a.image&&b.__image__webglTextureCube)s.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;s.deleteTexture(b.__webglTexture)}Z.delete(a)}Aa.textures--}function f(a){var b=a.target;
b.removeEventListener("dispose",f);a=Z.get(b);if(b&&void 0!==a.__webglTexture){s.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)s.deleteFramebuffer(a.__webglFramebuffer[b]),s.deleteRenderbuffer(a.__webglRenderbuffer[b]);else s.deleteFramebuffer(a.__webglFramebuffer),s.deleteRenderbuffer(a.__webglRenderbuffer);Z.delete(a)}Aa.textures--}function g(a){a=a.target;a.removeEventListener("dispose",g);h(a);Z.delete(a)}function h(a){var b=Z.get(a).program.program; b.removeEventListener("dispose",f);a=Z.get(b);if(b&&void 0!==a.__webglTexture){s.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)s.deleteFramebuffer(a.__webglFramebuffer[b]),s.deleteRenderbuffer(a.__webglRenderbuffer[b]);else s.deleteFramebuffer(a.__webglFramebuffer),s.deleteRenderbuffer(a.__webglRenderbuffer);Z.delete(a)}Aa.textures--}function g(a){a=a.target;a.removeEventListener("dispose",g);h(a);Z.delete(a)}function h(a){var b=Z.get(a).program.program;
if(void 0!==b){a.program=void 0;a=0;for(var c=va.length;a!==c;++a){var d=va[a];if(d.program===b){0===--d.usedTimes&&(c-=1,va[a]=va[c],va.pop(),s.deleteProgram(b),Aa.programs=c);break}}}}function k(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=V.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}var g=c.attributes;b=b.getAttributes(); if(void 0!==b){a.program=void 0;a=0;for(var c=va.length;a!==c;++a){var d=va[a];if(d.program===b){0===--d.usedTimes&&(c-=1,va[a]=va[c],va.pop(),s.deleteProgram(b),Aa.programs=c);break}}}}function k(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=V.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}var g=c.attributes;b=b.getAttributes();
a=a.defaultAttributeValues;for(var f in b){var h=b[f];if(0<=h){var k=g[f];if(void 0!==k){var l=k.itemSize;P.enableAttribute(h);var n=ia.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var m=k.data,p=m.stride,k=k.offset;s.bindBuffer(s.ARRAY_BUFFER,n);s.vertexAttribPointer(h,l,s.FLOAT,!1,p*m.array.BYTES_PER_ELEMENT,(d*p+k)*m.array.BYTES_PER_ELEMENT);if(m instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays."); a=a.defaultAttributeValues;for(var f in b){var h=b[f];if(0<=h){var k=g[f];if(void 0!==k){var l=k.itemSize;O.enableAttribute(h);var n=ia.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var m=k.data,p=m.stride,k=k.offset;s.bindBuffer(s.ARRAY_BUFFER,n);s.vertexAttribPointer(h,l,s.FLOAT,!1,p*m.array.BYTES_PER_ELEMENT,(d*p+k)*m.array.BYTES_PER_ELEMENT);if(m instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
return}e.vertexAttribDivisorANGLE(h,m.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=m.meshPerAttribute*m.count)}}else if(s.bindBuffer(s.ARRAY_BUFFER,n),s.vertexAttribPointer(h,l,s.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0=== return}e.vertexAttribDivisorANGLE(h,m.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=m.meshPerAttribute*m.count)}}else if(s.bindBuffer(s.ARRAY_BUFFER,n),s.vertexAttribPointer(h,l,s.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0===
c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[f],void 0!==l))switch(l.length){case 2:s.vertexAttrib2fv(h,l);break;case 3:s.vertexAttrib3fv(h,l);break;case 4:s.vertexAttrib4fv(h,l);break;default:s.vertexAttrib1fv(h,l)}}}P.disableUnusedAttributes()}function l(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-b.object.material.id:a.z!==b.z? c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[f],void 0!==l))switch(l.length){case 2:s.vertexAttrib2fv(h,l);break;case 3:s.vertexAttrib3fv(h,l);break;case 4:s.vertexAttrib4fv(h,l);break;default:s.vertexAttrib1fv(h,l)}}}O.disableUnusedAttributes()}function l(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-b.object.material.id:a.z!==b.z?
a.z-b.z:a.id-b.id}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function p(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),ia.init(a),a instanceof THREE.Light)ea.push(a);else if(a instanceof THREE.Sprite)Ea.push(a);else if(a instanceof THREE.LensFlare)Na.push(a);else{var b=ia.objects[a.id];if(b&&(!1===a.frustumCulled||!0=== a.z-b.z:a.id-b.id}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function p(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),ia.init(a),a instanceof THREE.Light)ea.push(a);else if(a instanceof THREE.Sprite)Ea.push(a);else if(a instanceof THREE.LensFlare)Na.push(a);else{var b=ia.objects[a.id];if(b&&(!1===a.frustumCulled||!0===
Ha.intersectsObject(a))){var c=a.material;Z.get(c)&&(c.program=Z.get(c).program);c.transparent?pa.push(b):na.push(b);!0===ka.sortObjects&&(oa.setFromMatrixPosition(a.matrixWorld),oa.applyProjection(Pa),b.z=oa.z)}}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(g=k.material);if(g instanceof Ha.intersectsObject(a))){var c=a.material;Z.get(c)&&(c.program=Z.get(c).program);c.transparent?pa.push(b):na.push(b);!0===ka.sortObjects&&(oa.setFromMatrixPosition(a.matrixWorld),oa.applyProjection(Pa),b.z=oa.z)}}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var g=e,f=0,h=a.length;f<h;f++){var k=a[f].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(g=k.material);if(g instanceof
THREE.MeshFaceMaterial)for(var l=g.materials,n=0,m=l.length;n<m;n++)ka.renderBufferDirect(b,c,d,l[n],k);else ka.renderBufferDirect(b,c,d,g,k)}}function r(a,b,c,d,e,g){for(var f=g,h=0,k=a.length;h<k;h++){var l=a[h],n=l.object;!0===n.visible&&(null===g&&(f=l[b]),f&&ka.renderImmediateObject(c,d,e,f,n))}}function t(a){q(a);!0===a.transparent?P.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):P.setBlending(THREE.NoBlending);P.setDepthFunc(a.depthFunc); THREE.MeshFaceMaterial)for(var l=g.materials,n=0,m=l.length;n<m;n++)ka.renderBufferDirect(b,c,d,l[n],k);else ka.renderBufferDirect(b,c,d,g,k)}}function r(a,b,c,d,e,g){for(var f=g,h=0,k=a.length;h<k;h++){var l=a[h],n=l.object;!0===n.visible&&(null===g&&(f=l[b]),f&&ka.renderImmediateObject(c,d,e,f,n))}}function t(a){q(a);!0===a.transparent?O.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):O.setBlending(THREE.NoBlending);O.setDepthFunc(a.depthFunc);
P.setDepthTest(a.depthTest);P.setDepthWrite(a.depthWrite);P.setColorWrite(a.colorWrite);P.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function q(a){a.side!==THREE.DoubleSide?P.enable(s.CULL_FACE):P.disable(s.CULL_FACE);P.setFlipSided(a.side===THREE.BackSide)}function u(a,b,c,d,f){var k,l,n,m;db=0;var p=Z.get(d);if(d.needsUpdate||!p.program){a:{for(var r=Z.get(d),q=Yb[d.type],t=0,u=0,y=0,B=0,A=0,L=b.length;A<L;A++){var D=b[A];D.onlyShadow||!1===D.visible||(D instanceof O.setDepthTest(a.depthTest);O.setDepthWrite(a.depthWrite);O.setColorWrite(a.colorWrite);O.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function q(a){a.side!==THREE.DoubleSide?O.enable(s.CULL_FACE):O.disable(s.CULL_FACE);O.setFlipSided(a.side===THREE.BackSide)}function u(a,b,c,d,f){var k,l,n,m;db=0;var p=Z.get(d);if(d.needsUpdate||!p.program){a:{for(var r=Z.get(d),q=Yb[d.type],t=0,u=0,D=0,y=0,A=0,K=b.length;A<K;A++){var C=b[A];C.onlyShadow||!1===C.visible||(C instanceof
THREE.DirectionalLight&&t++,D instanceof THREE.PointLight&&u++,D instanceof THREE.SpotLight&&y++,D instanceof THREE.HemisphereLight&&B++)}k=t;l=u;n=y;m=B;for(var E,I=0,M=0,N=b.length;M<N;M++){var R=b[M];R.castShadow&&(R instanceof THREE.SpotLight&&I++,R instanceof THREE.DirectionalLight&&!R.shadowCascade&&I++)}E=I;var na;if(kb&&f&&f.skeleton&&f.skeleton.useVertexTexture)na=1024;else{var S=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((S-20)/4);void 0!==f&&f instanceof THREE.SkinnedMesh&& THREE.DirectionalLight&&t++,C instanceof THREE.PointLight&&u++,C instanceof THREE.SpotLight&&D++,C instanceof THREE.HemisphereLight&&y++)}k=t;l=u;n=D;m=y;for(var E,I=0,M=0,N=b.length;M<N;M++){var R=b[M];R.castShadow&&(R instanceof THREE.SpotLight&&I++,R instanceof THREE.DirectionalLight&&!R.shadowCascade&&I++)}E=I;var na;if(kb&&f&&f.skeleton&&f.skeleton.useVertexTexture)na=1024;else{var S=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((S-20)/4);void 0!==f&&f instanceof THREE.SkinnedMesh&&
(U=Math.min(f.skeleton.bones.length,U),U<f.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+f.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));na=U}var Q={precision:C,supportsVertexTextures:lb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors, (U=Math.min(f.skeleton.bones.length,U),U<f.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+f.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));na=U}var Q={precision:B,supportsVertexTextures:lb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,
fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:K,skinning:d.skinning,maxBones:na,useVertexTexture:kb&&f&&f.skeleton&&f.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:n,maxHemiLights:m,maxShadows:E,shadowMapEnabled:ma.enabled&&f.receiveShadow&&0< fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:na,useVertexTexture:kb&&f&&f.skeleton&&f.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:n,maxHemiLights:m,maxShadows:E,shadowMapEnabled:ma.enabled&&f.receiveShadow&&0<
E,shadowMapType:ma.type,shadowMapDebug:ma.debug,shadowMapCascade:ma.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];q?T.push(q):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),T.push(d.defines[V]);for(V in Q)T.push(V),T.push(Q[V]);var pa=T.join(),Na=!0;if(r.program)if(r.program.code!==pa)h(d);else if(void 0!==q)break a;else Na=!1;else d.addEventListener("dispose",g);if(q){var Ea= E,shadowMapType:ma.type,shadowMapDebug:ma.debug,shadowMapCascade:ma.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];q?T.push(q):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),T.push(d.defines[V]);for(V in Q)T.push(V),T.push(Q[V]);var pa=T.join(),Na=!0;if(r.program)if(r.program.code!==pa)h(d);else if(void 0!==q)break a;else Na=!1;else d.addEventListener("dispose",g);if(q){var Ea=
THREE.ShaderLib[q];r.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ea.uniforms),vertexShader:Ea.vertexShader,fragmentShader:Ea.fragmentShader}}else r.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var aa,Da=0,fa=va.length;Da<fa;Da++){var ea=va[Da];if(ea.code===pa){aa=ea;Na&&aa.usedTimes++;break}}void 0===aa&&(d.__webglShader=r.__webglShader,aa=new THREE.WebGLProgram(ka,pa,d,Q),va.push(aa),Aa.programs=va.length);r.program= THREE.ShaderLib[q];r.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ea.uniforms),vertexShader:Ea.vertexShader,fragmentShader:Ea.fragmentShader}}else r.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var aa,Da=0,fa=va.length;Da<fa;Da++){var ea=va[Da];if(ea.code===pa){aa=ea;Na&&aa.usedTimes++;break}}void 0===aa&&(d.__webglShader=r.__webglShader,aa=new THREE.WebGLProgram(ka,pa,d,Q),va.push(aa),Aa.programs=va.length);r.program=
aa;var ia=aa.getAttributes();if(d.morphTargets)for(var qa=d.numSupportedMorphTargets=0;qa<ka.maxMorphTargets;qa++)0<=ia["morphTarget"+qa]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(qa=d.numSupportedMorphNormals=0;qa<ka.maxMorphNormals;qa++)0<=ia["morphNormal"+qa]&&d.numSupportedMorphNormals++;r.uniformsList=[];var Oa=r.program.getUniforms(),za;for(za in r.__webglShader.uniforms){var Fa=Oa[za];Fa&&r.uniformsList.push([r.__webglShader.uniforms[za],Fa])}}d.needsUpdate=!1}var Ga=!1,Ha=!1,eb= aa;var ia=aa.getAttributes();if(d.morphTargets)for(var qa=d.numSupportedMorphTargets=0;qa<ka.maxMorphTargets;qa++)0<=ia["morphTarget"+qa]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(qa=d.numSupportedMorphNormals=0;qa<ka.maxMorphNormals;qa++)0<=ia["morphNormal"+qa]&&d.numSupportedMorphNormals++;r.uniformsList=[];var Oa=r.program.getUniforms(),za;for(za in r.__webglShader.uniforms){var Fa=Oa[za];Fa&&r.uniformsList.push([r.__webglShader.uniforms[za],Fa])}}d.needsUpdate=!1}var Ga=!1,Ha=!1,eb=
!1,Wa=p.program,ca=Wa.getUniforms(),J=p.__webglShader.uniforms;Wa.id!==jb&&(s.useProgram(Wa.program),jb=Wa.id,eb=Ha=Ga=!0);d.id!==Va&&(-1===Va&&(eb=!0),Va=d.id,Ha=!0);if(Ga||a!==Ua)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),K&&s.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Ua&&(Ua=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(oa.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition, !1,Wa=p.program,ca=Wa.getUniforms(),J=p.__webglShader.uniforms;Wa.id!==jb&&(s.useProgram(Wa.program),jb=Wa.id,eb=Ha=Ga=!0);d.id!==Va&&(-1===Va&&(eb=!0),Va=d.id,Ha=!0);if(Ga||a!==Ua)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&s.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Ua&&(Ua=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(oa.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition,
oa.x,oa.y,oa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&s.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(f.bindMatrix&&null!==ca.bindMatrix&&s.uniformMatrix4fv(ca.bindMatrix,!1,f.bindMatrix.elements),f.bindMatrixInverse&&null!==ca.bindMatrixInverse&&s.uniformMatrix4fv(ca.bindMatrixInverse,!1,f.bindMatrixInverse.elements), oa.x,oa.y,oa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&s.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(f.bindMatrix&&null!==ca.bindMatrix&&s.uniformMatrix4fv(ca.bindMatrix,!1,f.bindMatrix.elements),f.bindMatrixInverse&&null!==ca.bindMatrixInverse&&s.uniformMatrix4fv(ca.bindMatrixInverse,!1,f.bindMatrixInverse.elements),
kb&&f.skeleton&&f.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Pa=x();s.uniform1i(ca.boneTexture,Pa);ka.setTexture(f.skeleton.boneTexture,Pa)}null!==ca.boneTextureWidth&&s.uniform1i(ca.boneTextureWidth,f.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&s.uniform1i(ca.boneTextureHeight,f.skeleton.boneTextureHeight)}else f.skeleton&&f.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&s.uniformMatrix4fv(ca.boneGlobalMatrices,!1,f.skeleton.boneMatrices);if(Ha){c&&d.fog&&(J.fogColor.value= kb&&f.skeleton&&f.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Pa=x();s.uniform1i(ca.boneTexture,Pa);ka.setTexture(f.skeleton.boneTexture,Pa)}null!==ca.boneTextureWidth&&s.uniform1i(ca.boneTextureWidth,f.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&s.uniform1i(ca.boneTextureHeight,f.skeleton.boneTextureHeight)}else f.skeleton&&f.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&s.uniformMatrix4fv(ca.boneGlobalMatrices,!1,f.skeleton.boneMatrices);if(Ha){c&&d.fog&&(J.fogColor.value=
c.color,c instanceof THREE.Fog?(J.fogNear.value=c.near,J.fogFar.value=c.far):c instanceof THREE.FogExp2&&(J.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(cb){var eb=!0,ba,sa,$,mb=0,nb=0,ob=0,Ia,ab,bb,Qa,pb,da=Mb,qb=da.directional.colors,rb=da.directional.positions,sb=da.point.colors,tb=da.point.positions,ib=da.point.distances,Hb=da.point.decays,ub=da.spot.colors,vb=da.spot.positions,Ib=da.spot.distances,wb=da.spot.directions, c.color,c instanceof THREE.Fog?(J.fogNear.value=c.near,J.fogFar.value=c.far):c instanceof THREE.FogExp2&&(J.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(cb){var eb=!0,ba,sa,$,mb=0,nb=0,ob=0,Ia,ab,bb,Qa,pb,da=Mb,qb=da.directional.colors,rb=da.directional.positions,sb=da.point.colors,tb=da.point.positions,ib=da.point.distances,Hb=da.point.decays,ub=da.spot.colors,vb=da.spot.positions,Ib=da.spot.distances,wb=da.spot.directions,
...@@ -516,62 +516,62 @@ d.map?xa=d.map:d.specularMap?xa=d.specularMap:d.normalMap?xa=d.normalMap:d.bumpM ...@@ -516,62 +516,62 @@ d.map?xa=d.map:d.specularMap?xa=d.specularMap:d.normalMap?xa=d.normalMap:d.bumpM
d.opacity;else if(d instanceof THREE.LineDashedMaterial)J.diffuse.value=d.color,J.opacity.value=d.opacity,J.dashSize.value=d.dashSize,J.totalSize.value=d.dashSize+d.gapSize,J.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(J.psColor.value=d.color,J.opacity.value=d.opacity,J.size.value=d.size,J.scale.value=F.height/2,J.map.value=d.map,null!==d.map){var Pb=d.map.offset,Qb=d.map.repeat;J.offsetRepeat.value.set(Pb.x,Pb.y,Qb.x,Qb.y)}}else d instanceof THREE.MeshPhongMaterial?(J.shininess.value= d.opacity;else if(d instanceof THREE.LineDashedMaterial)J.diffuse.value=d.color,J.opacity.value=d.opacity,J.dashSize.value=d.dashSize,J.totalSize.value=d.dashSize+d.gapSize,J.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(J.psColor.value=d.color,J.opacity.value=d.opacity,J.size.value=d.size,J.scale.value=F.height/2,J.map.value=d.map,null!==d.map){var Pb=d.map.offset,Qb=d.map.repeat;J.offsetRepeat.value.set(Pb.x,Pb.y,Qb.x,Qb.y)}}else d instanceof THREE.MeshPhongMaterial?(J.shininess.value=
d.shininess,J.emissive.value=d.emissive,J.specular.value=d.specular,J.lightMap.value=d.lightMap,J.lightMapIntensity.value=d.lightMapIntensity,J.aoMap.value=d.aoMap,J.aoMapIntensity.value=d.aoMapIntensity,J.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?J.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?(J.aoMap.value=d.aoMap,J.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(J.mNear.value=a.near,J.mFar.value=a.far,J.opacity.value= d.shininess,J.emissive.value=d.emissive,J.specular.value=d.specular,J.lightMap.value=d.lightMap,J.lightMapIntensity.value=d.lightMapIntensity,J.aoMap.value=d.aoMap,J.aoMapIntensity.value=d.aoMapIntensity,J.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?J.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?(J.aoMap.value=d.aoMap,J.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(J.mNear.value=a.near,J.mFar.value=a.far,J.opacity.value=
d.opacity):d instanceof THREE.MeshNormalMaterial&&(J.opacity.value=d.opacity);if(f.receiveShadow&&!d._shadowPass&&J.shadowMatrix)for(var Ta=0,Db=0,Zb=b.length;Db<Zb;Db++){var ya=b[Db];ya.castShadow&&(ya instanceof THREE.SpotLight||ya instanceof THREE.DirectionalLight&&!ya.shadowCascade)&&(J.shadowMap.value[Ta]=ya.shadowMap,J.shadowMapSize.value[Ta]=ya.shadowMapSize,J.shadowMatrix.value[Ta]=ya.shadowMatrix,J.shadowDarkness.value[Ta]=ya.shadowDarkness,J.shadowBias.value[Ta]=ya.shadowBias,Ta++)}for(var Eb= d.opacity):d instanceof THREE.MeshNormalMaterial&&(J.opacity.value=d.opacity);if(f.receiveShadow&&!d._shadowPass&&J.shadowMatrix)for(var Ta=0,Db=0,Zb=b.length;Db<Zb;Db++){var ya=b[Db];ya.castShadow&&(ya instanceof THREE.SpotLight||ya instanceof THREE.DirectionalLight&&!ya.shadowCascade)&&(J.shadowMap.value[Ta]=ya.shadowMap,J.shadowMapSize.value[Ta]=ya.shadowMapSize,J.shadowMatrix.value[Ta]=ya.shadowMatrix,J.shadowDarkness.value[Ta]=ya.shadowDarkness,J.shadowBias.value[Ta]=ya.shadowBias,Ta++)}for(var Eb=
p.uniformsList,ta,Ka,ua,gb=0,$b=Eb.length;gb<$b;gb++){var X=Eb[gb][0];if(!1!==X.needsUpdate){var Rb=X.type,O=X.value,Y=Eb[gb][1];switch(Rb){case "1i":s.uniform1i(Y,O);break;case "1f":s.uniform1f(Y,O);break;case "2f":s.uniform2f(Y,O[0],O[1]);break;case "3f":s.uniform3f(Y,O[0],O[1],O[2]);break;case "4f":s.uniform4f(Y,O[0],O[1],O[2],O[3]);break;case "1iv":s.uniform1iv(Y,O);break;case "3iv":s.uniform3iv(Y,O);break;case "1fv":s.uniform1fv(Y,O);break;case "2fv":s.uniform2fv(Y,O);break;case "3fv":s.uniform3fv(Y, p.uniformsList,ta,Ka,ua,gb=0,$b=Eb.length;gb<$b;gb++){var X=Eb[gb][0];if(!1!==X.needsUpdate){var Rb=X.type,P=X.value,Y=Eb[gb][1];switch(Rb){case "1i":s.uniform1i(Y,P);break;case "1f":s.uniform1f(Y,P);break;case "2f":s.uniform2f(Y,P[0],P[1]);break;case "3f":s.uniform3f(Y,P[0],P[1],P[2]);break;case "4f":s.uniform4f(Y,P[0],P[1],P[2],P[3]);break;case "1iv":s.uniform1iv(Y,P);break;case "3iv":s.uniform3iv(Y,P);break;case "1fv":s.uniform1fv(Y,P);break;case "2fv":s.uniform2fv(Y,P);break;case "3fv":s.uniform3fv(Y,
O);break;case "4fv":s.uniform4fv(Y,O);break;case "Matrix3fv":s.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":s.uniformMatrix4fv(Y,!1,O);break;case "i":s.uniform1i(Y,O);break;case "f":s.uniform1f(Y,O);break;case "v2":s.uniform2f(Y,O.x,O.y);break;case "v3":s.uniform3f(Y,O.x,O.y,O.z);break;case "v4":s.uniform4f(Y,O.x,O.y,O.z,O.w);break;case "c":s.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":s.uniform1iv(Y,O);break;case "iv":s.uniform3iv(Y,O);break;case "fv1":s.uniform1fv(Y,O);break;case "fv":s.uniform3fv(Y, P);break;case "4fv":s.uniform4fv(Y,P);break;case "Matrix3fv":s.uniformMatrix3fv(Y,!1,P);break;case "Matrix4fv":s.uniformMatrix4fv(Y,!1,P);break;case "i":s.uniform1i(Y,P);break;case "f":s.uniform1f(Y,P);break;case "v2":s.uniform2f(Y,P.x,P.y);break;case "v3":s.uniform3f(Y,P.x,P.y,P.z);break;case "v4":s.uniform4f(Y,P.x,P.y,P.z,P.w);break;case "c":s.uniform3f(Y,P.r,P.g,P.b);break;case "iv1":s.uniform1iv(Y,P);break;case "iv":s.uniform3iv(Y,P);break;case "fv1":s.uniform1fv(Y,P);break;case "fv":s.uniform3fv(Y,
O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,ra=O.length;W<ra;W++)ua=2*W,X._array[ua+0]=O[W].x,X._array[ua+1]=O[W].y;s.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(ra=O.length;W<ra;W++)ua=3*W,X._array[ua+0]=O[W].x,X._array[ua+1]=O[W].y,X._array[ua+2]=O[W].z;s.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(ra=O.length;W<ra;W++)ua=4* P);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*P.length));for(var W=0,ra=P.length;W<ra;W++)ua=2*W,X._array[ua+0]=P[W].x,X._array[ua+1]=P[W].y;s.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*P.length));W=0;for(ra=P.length;W<ra;W++)ua=3*W,X._array[ua+0]=P[W].x,X._array[ua+1]=P[W].y,X._array[ua+2]=P[W].z;s.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*P.length));W=0;for(ra=P.length;W<ra;W++)ua=4*
W,X._array[ua+0]=O[W].x,X._array[ua+1]=O[W].y,X._array[ua+2]=O[W].z,X._array[ua+3]=O[W].w;s.uniform4fv(Y,X._array);break;case "m3":s.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(ra=O.length;W<ra;W++)O[W].flattenToArrayOffset(X._array,9*W);s.uniformMatrix3fv(Y,!1,X._array);break;case "m4":s.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(ra=O.length;W<ra;W++)O[W].flattenToArrayOffset(X._array, W,X._array[ua+0]=P[W].x,X._array[ua+1]=P[W].y,X._array[ua+2]=P[W].z,X._array[ua+3]=P[W].w;s.uniform4fv(Y,X._array);break;case "m3":s.uniformMatrix3fv(Y,!1,P.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*P.length));W=0;for(ra=P.length;W<ra;W++)P[W].flattenToArrayOffset(X._array,9*W);s.uniformMatrix3fv(Y,!1,X._array);break;case "m4":s.uniformMatrix4fv(Y,!1,P.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*P.length));W=0;for(ra=P.length;W<ra;W++)P[W].flattenToArrayOffset(X._array,
16*W);s.uniformMatrix4fv(Y,!1,X._array);break;case "t":ta=O;Ka=x();s.uniform1i(Y,Ka);if(!ta)continue;if(ta instanceof THREE.CubeTexture||Array.isArray(ta.image)&&6===ta.image.length){var ha=ta,Sb=Ka,hb=Z.get(ha);if(6===ha.image.length)if(ha.needsUpdate){hb.__image__webglTextureCube||(ha.addEventListener("dispose",e),hb.__image__webglTextureCube=s.createTexture(),Aa.textures++);P.activeTexture(s.TEXTURE0+Sb);P.bindTexture(s.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL, 16*W);s.uniformMatrix4fv(Y,!1,X._array);break;case "t":ta=P;Ka=x();s.uniform1i(Y,Ka);if(!ta)continue;if(ta instanceof THREE.CubeTexture||Array.isArray(ta.image)&&6===ta.image.length){var ha=ta,Sb=Ka,hb=Z.get(ha);if(6===ha.image.length)if(ha.needsUpdate){hb.__image__webglTextureCube||(ha.addEventListener("dispose",e),hb.__image__webglTextureCube=s.createTexture(),Aa.textures++);O.activeTexture(s.TEXTURE0+Sb);O.bindTexture(s.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,
ha.flipY);for(var Tb=ha instanceof THREE.CompressedTexture,Fb=ha.image[0]instanceof THREE.DataTexture,La=[],ja=0;6>ja;ja++)La[ja]=!ka.autoScaleCubemaps||Tb||Fb?Fb?ha.image[ja].image:ha.image[ja]:H(ha.image[ja],ac);var Ub=La[0],Vb=THREE.Math.isPowerOfTwo(Ub.width)&&THREE.Math.isPowerOfTwo(Ub.height),Ca=G(ha.format),Gb=G(ha.type);w(s.TEXTURE_CUBE_MAP,ha,Vb);for(ja=0;6>ja;ja++)if(Tb)for(var Ma,Wb=La[ja].mipmaps,$a=0,bc=Wb.length;$a<bc;$a++)Ma=Wb[$a],ha.format!==THREE.RGBAFormat&&ha.format!==THREE.RGBFormat? ha.flipY);for(var Tb=ha instanceof THREE.CompressedTexture,Fb=ha.image[0]instanceof THREE.DataTexture,La=[],ja=0;6>ja;ja++)La[ja]=!ka.autoScaleCubemaps||Tb||Fb?Fb?ha.image[ja].image:ha.image[ja]:H(ha.image[ja],ac);var Ub=La[0],Vb=THREE.Math.isPowerOfTwo(Ub.width)&&THREE.Math.isPowerOfTwo(Ub.height),Ca=G(ha.format),Gb=G(ha.type);w(s.TEXTURE_CUBE_MAP,ha,Vb);for(ja=0;6>ja;ja++)if(Tb)for(var Ma,Wb=La[ja].mipmaps,$a=0,bc=Wb.length;$a<bc;$a++)Ma=Wb[$a],ha.format!==THREE.RGBAFormat&&ha.format!==THREE.RGBFormat?
-1<Xb().indexOf(Ca)?P.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,$a,Ca,Ma.width,Ma.height,0,Ma.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):P.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,$a,Ca,Ma.width,Ma.height,0,Ca,Gb,Ma.data);else Fb?P.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,0,Ca,La[ja].width,La[ja].height,0,Ca,Gb,La[ja].data):P.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,0,Ca,Ca,Gb,La[ja]);ha.generateMipmaps&& -1<Xb().indexOf(Ca)?O.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,$a,Ca,Ma.width,Ma.height,0,Ma.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):O.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,$a,Ca,Ma.width,Ma.height,0,Ca,Gb,Ma.data);else Fb?O.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,0,Ca,La[ja].width,La[ja].height,0,Ca,Gb,La[ja].data):O.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ja,0,Ca,Ca,Gb,La[ja]);ha.generateMipmaps&&
Vb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);ha.needsUpdate=!1;if(ha.onUpdate)ha.onUpdate(ha)}else P.activeTexture(s.TEXTURE0+Sb),P.bindTexture(s.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube)}else if(ta instanceof THREE.WebGLRenderTargetCube){var cc=ta;P.activeTexture(s.TEXTURE0+Ka);P.bindTexture(s.TEXTURE_CUBE_MAP,Z.get(cc).__webglTexture)}else ka.setTexture(ta,Ka);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(ra=X.value.length;W<ra;W++)X._array[W]=x();s.uniform1iv(Y,X._array);W=0;for(ra= Vb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);ha.needsUpdate=!1;if(ha.onUpdate)ha.onUpdate(ha)}else O.activeTexture(s.TEXTURE0+Sb),O.bindTexture(s.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube)}else if(ta instanceof THREE.WebGLRenderTargetCube){var cc=ta;O.activeTexture(s.TEXTURE0+Ka);O.bindTexture(s.TEXTURE_CUBE_MAP,Z.get(cc).__webglTexture)}else ka.setTexture(ta,Ka);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(ra=X.value.length;W<ra;W++)X._array[W]=x();s.uniform1iv(Y,X._array);W=0;for(ra=
X.value.length;W<ra;W++)ta=X.value[W],Ka=X._array[W],ta&&ka.setTexture(ta,Ka);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Rb)}}}}s.uniformMatrix4fv(ca.modelViewMatrix,!1,f._modelViewMatrix.elements);ca.normalMatrix&&s.uniformMatrix3fv(ca.normalMatrix,!1,f._normalMatrix.elements);null!==ca.modelMatrix&&s.uniformMatrix4fv(ca.modelMatrix,!1,f.matrixWorld.elements);return Wa}function v(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate= X.value.length;W<ra;W++)ta=X.value[W],Ka=X._array[W],ta&&ka.setTexture(ta,Ka);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Rb)}}}}s.uniformMatrix4fv(ca.modelViewMatrix,!1,f._modelViewMatrix.elements);ca.normalMatrix&&s.uniformMatrix3fv(ca.normalMatrix,!1,f._normalMatrix.elements);null!==ca.modelMatrix&&s.uniformMatrix4fv(ca.modelMatrix,!1,f.matrixWorld.elements);return Wa}function v(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=
b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function x(){var a= b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function x(){var a=
db;a>=ab&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ab);db+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function w(a,b,c){c?(s.texParameteri(a,s.TEXTURE_WRAP_S,G(b.wrapS)),s.texParameteri(a,s.TEXTURE_WRAP_T,G(b.wrapT)),s.texParameteri(a,s.TEXTURE_MAG_FILTER,G(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,G(b.minFilter))):(s.texParameteri(a,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(a,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE), db;a>=ab&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ab);db+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function w(a,b,c){c?(s.texParameteri(a,s.TEXTURE_WRAP_S,G(b.wrapS)),s.texParameteri(a,s.TEXTURE_WRAP_T,G(b.wrapT)),s.texParameteri(a,s.TEXTURE_MAG_FILTER,G(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,G(b.minFilter))):(s.texParameteri(a,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(a,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),
b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),s.texParameteri(a,s.TEXTURE_MAG_FILTER,y(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,y(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+ b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),s.texParameteri(a,s.TEXTURE_MAG_FILTER,y(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,y(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+
b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||Z.get(b).__currentAnisotropy)&&(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,ka.getMaxAnisotropy())),Z.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a, b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||Z.get(b).__currentAnisotropy)&&(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,ka.getMaxAnisotropy())),Z.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,
0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function L(a,b,c){s.bindFramebuffer(s.FRAMEBUFFER,a);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,c,Z.get(b).__webglTexture,0)}function B(a,b){s.bindRenderbuffer(s.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_COMPONENT16,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER, 0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function K(a,b,c){s.bindFramebuffer(s.FRAMEBUFFER,a);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,c,Z.get(b).__webglTexture,0)}function D(a,b){s.bindRenderbuffer(s.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_COMPONENT16,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,
s.DEPTH_ATTACHMENT,s.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_STENCIL,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,a)):s.renderbufferStorage(s.RENDERBUFFER,s.RGBA4,b.width,b.height)}function y(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?s.NEAREST:s.LINEAR}function G(a){var b;if(a===THREE.RepeatWrapping)return s.REPEAT;if(a===THREE.ClampToEdgeWrapping)return s.CLAMP_TO_EDGE; s.DEPTH_ATTACHMENT,s.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_STENCIL,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,a)):s.renderbufferStorage(s.RENDERBUFFER,s.RGBA4,b.width,b.height)}function y(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?s.NEAREST:s.LINEAR}function G(a){var b;if(a===THREE.RepeatWrapping)return s.REPEAT;if(a===THREE.ClampToEdgeWrapping)return s.CLAMP_TO_EDGE;
if(a===THREE.MirroredRepeatWrapping)return s.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return s.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return s.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return s.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return s.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return s.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return s.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return s.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return s.UNSIGNED_SHORT_4_4_4_4; if(a===THREE.MirroredRepeatWrapping)return s.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return s.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return s.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return s.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return s.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return s.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return s.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return s.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return s.UNSIGNED_SHORT_4_4_4_4;
if(a===THREE.UnsignedShort5551Type)return s.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return s.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return s.BYTE;if(a===THREE.ShortType)return s.SHORT;if(a===THREE.UnsignedShortType)return s.UNSIGNED_SHORT;if(a===THREE.IntType)return s.INT;if(a===THREE.UnsignedIntType)return s.UNSIGNED_INT;if(a===THREE.FloatType)return s.FLOAT;b=V.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return s.ALPHA; if(a===THREE.UnsignedShort5551Type)return s.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return s.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return s.BYTE;if(a===THREE.ShortType)return s.SHORT;if(a===THREE.UnsignedShortType)return s.UNSIGNED_SHORT;if(a===THREE.IntType)return s.INT;if(a===THREE.UnsignedIntType)return s.UNSIGNED_INT;if(a===THREE.FloatType)return s.FLOAT;b=V.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return s.ALPHA;
if(a===THREE.RGBFormat)return s.RGB;if(a===THREE.RGBAFormat)return s.RGBA;if(a===THREE.LuminanceFormat)return s.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return s.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return s.FUNC_ADD;if(a===THREE.SubtractEquation)return s.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return s.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return s.ZERO;if(a===THREE.OneFactor)return s.ONE;if(a===THREE.SrcColorFactor)return s.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return s.ONE_MINUS_SRC_COLOR; if(a===THREE.RGBFormat)return s.RGB;if(a===THREE.RGBAFormat)return s.RGBA;if(a===THREE.LuminanceFormat)return s.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return s.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return s.FUNC_ADD;if(a===THREE.SubtractEquation)return s.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return s.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return s.ZERO;if(a===THREE.OneFactor)return s.ONE;if(a===THREE.SrcColorFactor)return s.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return s.ONE_MINUS_SRC_COLOR;
if(a===THREE.SrcAlphaFactor)return s.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return s.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return s.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return s.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return s.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return s.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return s.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT; if(a===THREE.SrcAlphaFactor)return s.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return s.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return s.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return s.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return s.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return s.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return s.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;
if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var F=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.context?a.context:null,I=F.width,N=F.height,E=1,C=void 0!==a.precision?a.precision:"highp",D=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0, if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var F=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.context?a.context:null,I=F.width,N=F.height,E=1,B=void 0!==a.precision?a.precision:"highp",C=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,
R=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,S=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,K=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,aa=new THREE.Color(0),fa=0,ea=[],na=[],pa=[],Ea=[],Na=[];this.domElement=F;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets= R=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,S=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,aa=new THREE.Color(0),fa=0,ea=[],na=[],pa=[],Ea=[],Na=[];this.domElement=F;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=
8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ka=this,va=[],jb=null,Da=null,Va=-1,qa="",Ua=null,db=0,Oa=0,za=0,Fa=F.width,Ga=F.height,bb=0,ib=0,Ha=new THREE.Frustum,Pa=new THREE.Matrix4,oa=new THREE.Vector3,ga=new THREE.Vector3,cb=!0,Mb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[], 8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ka=this,va=[],jb=null,Da=null,Va=-1,qa="",Ua=null,db=0,Oa=0,za=0,Fa=F.width,Ga=F.height,bb=0,ib=0,Ha=new THREE.Frustum,Pa=new THREE.Matrix4,oa=new THREE.Vector3,ga=new THREE.Vector3,cb=!0,Mb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],
groundColors:[],positions:[]}},Aa={programs:0,geometries:0,textures:0},Q={calls:0,vertices:0,faces:0,points:0};this.info={render:Q,memory:Aa,programs:va};var s;try{a={alpha:D,depth:M,stencil:R,antialias:U,premultipliedAlpha:S,preserveDrawingBuffer:T};s=A||F.getContext("webgl",a)||F.getContext("experimental-webgl",a);if(null===s){if(null!==F.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}F.addEventListener("webglcontextlost", groundColors:[],positions:[]}},Aa={programs:0,geometries:0,textures:0},Q={calls:0,vertices:0,faces:0,points:0};this.info={render:Q,memory:Aa,programs:va};var s;try{a={alpha:C,depth:M,stencil:R,antialias:U,premultipliedAlpha:S,preserveDrawingBuffer:T};s=A||F.getContext("webgl",a)||F.getContext("experimental-webgl",a);if(null===s){if(null!==F.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}F.addEventListener("webglcontextlost",
function(a){a.preventDefault();d();c();ia.clear();Z.clear()},!1)}catch(Hb){console.error("THREE.WebGLRenderer: "+Hb)}var P=new THREE.WebGLState(s,G);void 0===s.getShaderPrecisionFormat&&(s.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var Z=new THREE.WebGLProperties,ia=new THREE.WebGLObjects(s,Z,this.info),V=new THREE.WebGLExtensions(s);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear"); function(a){a.preventDefault();d();c();ia.clear();Z.clear()},!1)}catch(Hb){console.error("THREE.WebGLRenderer: "+Hb)}var O=new THREE.WebGLState(s,G);void 0===s.getShaderPrecisionFormat&&(s.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var Z=new THREE.WebGLProperties,ia=new THREE.WebGLObjects(s,Z,this.info),V=new THREE.WebGLExtensions(s);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");
V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);K&&V.get("EXT_frag_depth");c();this.context=s;this.extensions=V;this.state=P;var ma=new THREE.WebGLShadowMap(this,ea,ia);this.shadowMap=ma;var ab=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),A=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ib=s.getParameter(s.MAX_TEXTURE_SIZE),ac=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),lb=0<A,kb=lb&&V.get("OES_texture_float"), V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);L&&V.get("EXT_frag_depth");c();this.context=s;this.extensions=V;this.state=O;var ma=new THREE.WebGLShadowMap(this,ea,ia);this.shadowMap=ma;var ab=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),A=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ib=s.getParameter(s.MAX_TEXTURE_SIZE),ac=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),lb=0<A,kb=lb&&V.get("OES_texture_float"),
Jb=V.get("ANGLE_instanced_arrays"),D=s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT),A=s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT),M=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT);a=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT);var Xb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=s.getParameter(s.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]); Jb=V.get("ANGLE_instanced_arrays"),C=s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT),A=s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT),M=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT);a=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT);var Xb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=s.getParameter(s.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);
return a}}(),D=0<D.precision&&0<M.precision,A=0<A.precision&&0<a.precision;"highp"!==C||D||(A?(C="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(C="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==C||A||(C="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Kb=new THREE.SpritePlugin(this,Ea),Lb=new THREE.LensFlarePlugin(this,Na);this.getContext=function(){return s};this.forceContextLoss= return a}}(),C=0<C.precision&&0<M.precision,A=0<A.precision&&0<a.precision;"highp"!==B||C||(A?(B="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(B="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==B||A||(B="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Kb=new THREE.SpritePlugin(this,Ea),Lb=new THREE.LensFlarePlugin(this,Na);this.getContext=function(){return s};this.forceContextLoss=
function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return lb};this.supportsInstancedArrays=function(){return Jb};this.supportsFloatTextures=function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC= function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return lb};this.supportsInstancedArrays=function(){return Jb};this.supportsFloatTextures=function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=
function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?s.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return C};this.getPixelRatio=function(){return E};this.setPixelRatio=function(a){void 0!==a&&(E=a)};this.getSize=function(){return{width:I,height:N}}; function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?s.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return B};this.getPixelRatio=function(){return E};this.setPixelRatio=function(a){void 0!==a&&(E=a)};this.getSize=function(){return{width:I,height:N}};
this.setSize=function(a,b,c){I=a;N=b;F.width=a*E;F.height=b*E;!1!==c&&(F.style.width=a+"px",F.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Oa=a*E;za=b*E;Fa=c*E;Ga=d*E;s.viewport(Oa,za,Fa,Ga)};this.setScissor=function(a,b,c,d){s.scissor(a*E,b*E,c*E,d*E)};this.enableScissorTest=function(a){a?s.enable(s.SCISSOR_TEST):s.disable(s.SCISSOR_TEST)};this.getClearColor=function(){return aa};this.setClearColor=function(a,c){aa.set(a);fa=void 0!==c?c:1;b(aa.r,aa.g,aa.b,fa)}; this.setSize=function(a,b,c){I=a;N=b;F.width=a*E;F.height=b*E;!1!==c&&(F.style.width=a+"px",F.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Oa=a*E;za=b*E;Fa=c*E;Ga=d*E;s.viewport(Oa,za,Fa,Ga)};this.setScissor=function(a,b,c,d){s.scissor(a*E,b*E,c*E,d*E)};this.enableScissorTest=function(a){O.set(s.SCISSOR_TEST,a)};this.getClearColor=function(){return aa};this.setClearColor=function(a,c){aa.set(a);fa=void 0!==c?c:1;b(aa.r,aa.g,aa.b,fa)};this.getClearAlpha=function(){return fa};
this.getClearAlpha=function(){return fa};this.setClearAlpha=function(a){fa=a;b(aa.r,aa.g,aa.b,fa)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=s.COLOR_BUFFER_BIT;if(void 0===b||b)d|=s.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=s.STENCIL_BUFFER_BIT;s.clear(d)};this.clearColor=function(){s.clear(s.COLOR_BUFFER_BIT)};this.clearDepth=function(){s.clear(s.DEPTH_BUFFER_BIT)};this.clearStencil=function(){s.clear(s.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b, this.setClearAlpha=function(a){fa=a;b(aa.r,aa.g,aa.b,fa)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=s.COLOR_BUFFER_BIT;if(void 0===b||b)d|=s.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=s.STENCIL_BUFFER_BIT;s.clear(d)};this.clearColor=function(){s.clear(s.COLOR_BUFFER_BIT)};this.clearDepth=function(){s.clear(s.DEPTH_BUFFER_BIT)};this.clearStencil=function(){s.clear(s.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.renderBufferImmediate=
c,d)};this.resetGLState=d;this.renderBufferImmediate=function(a,b,c){P.initAttributes();var d=Z.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=s.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&(d.__webglNormalBuffer=s.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=s.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=s.createBuffer());b=b.getAttributes();a.hasPositions&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglVertexBuffer),s.bufferData(s.ARRAY_BUFFER, function(a,b,c){O.initAttributes();var d=Z.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=s.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&(d.__webglNormalBuffer=s.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=s.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=s.createBuffer());b=b.getAttributes();a.hasPositions&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglVertexBuffer),s.bufferData(s.ARRAY_BUFFER,a.positionArray,s.DYNAMIC_DRAW),
a.positionArray,s.DYNAMIC_DRAW),P.enableAttribute(b.position),s.vertexAttribPointer(b.position,3,s.FLOAT,!1,0,0));if(a.hasNormals){s.bindBuffer(s.ARRAY_BUFFER,d.__webglNormalBuffer);if(!1===c instanceof THREE.MeshPhongMaterial&&c.shading===THREE.FlatShading){var e,g,f,h,k,l,n,m,p,r,q,t=3*a.count;for(q=0;q<t;q+=9)r=a.normalArray,e=r[q],g=r[q+1],f=r[q+2],h=r[q+3],l=r[q+4],m=r[q+5],k=r[q+6],n=r[q+7],p=r[q+8],e=(e+h+k)/3,g=(g+l+n)/3,f=(f+m+p)/3,r[q]=e,r[q+1]=g,r[q+2]=f,r[q+3]=e,r[q+4]=g,r[q+5]=f,r[q+ O.enableAttribute(b.position),s.vertexAttribPointer(b.position,3,s.FLOAT,!1,0,0));if(a.hasNormals){s.bindBuffer(s.ARRAY_BUFFER,d.__webglNormalBuffer);if(!1===c instanceof THREE.MeshPhongMaterial&&c.shading===THREE.FlatShading){var e,g,f,h,k,l,n,m,p,r,q,t=3*a.count;for(q=0;q<t;q+=9)r=a.normalArray,e=r[q],g=r[q+1],f=r[q+2],h=r[q+3],l=r[q+4],m=r[q+5],k=r[q+6],n=r[q+7],p=r[q+8],e=(e+h+k)/3,g=(g+l+n)/3,f=(f+m+p)/3,r[q]=e,r[q+1]=g,r[q+2]=f,r[q+3]=e,r[q+4]=g,r[q+5]=f,r[q+6]=e,r[q+7]=g,r[q+8]=f}s.bufferData(s.ARRAY_BUFFER,
6]=e,r[q+7]=g,r[q+8]=f}s.bufferData(s.ARRAY_BUFFER,a.normalArray,s.DYNAMIC_DRAW);P.enableAttribute(b.normal);s.vertexAttribPointer(b.normal,3,s.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglUvBuffer),s.bufferData(s.ARRAY_BUFFER,a.uvArray,s.DYNAMIC_DRAW),P.enableAttribute(b.uv),s.vertexAttribPointer(b.uv,2,s.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglColorBuffer),s.bufferData(s.ARRAY_BUFFER,a.colorArray,s.DYNAMIC_DRAW), a.normalArray,s.DYNAMIC_DRAW);O.enableAttribute(b.normal);s.vertexAttribPointer(b.normal,3,s.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglUvBuffer),s.bufferData(s.ARRAY_BUFFER,a.uvArray,s.DYNAMIC_DRAW),O.enableAttribute(b.uv),s.vertexAttribPointer(b.uv,2,s.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglColorBuffer),s.bufferData(s.ARRAY_BUFFER,a.colorArray,s.DYNAMIC_DRAW),O.enableAttribute(b.color),s.vertexAttribPointer(b.color,
P.enableAttribute(b.color),s.vertexAttribPointer(b.color,3,s.FLOAT,!1,0,0));P.disableUnusedAttributes();s.drawArrays(s.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e){if(!1!==d.visible){t(d);var g=ia.geometries.get(e);a=u(a,b,c,d,e);b=!1;c=g.id+"_"+a.id+"_"+(d.wireframe?1:0);c!==qa&&(qa=c,b=!0);b&&P.initAttributes();if(e instanceof THREE.Mesh)a:{e=b;b=s.TRIANGLES;!0===d.wireframe&&(b=s.LINES,P.setLineWidth(d.wireframeLinewidth*E));var f=g.attributes.index;if(f){var h,l= 3,s.FLOAT,!1,0,0));O.disableUnusedAttributes();s.drawArrays(s.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e){if(!1!==d.visible){t(d);var g=ia.geometries.get(e);a=u(a,b,c,d,e);b=!1;c=g.id+"_"+a.id+"_"+(d.wireframe?1:0);c!==qa&&(qa=c,b=!0);b&&O.initAttributes();if(e instanceof THREE.Mesh)a:{e=b;b=s.TRIANGLES;!0===d.wireframe&&(b=s.LINES,O.setLineWidth(d.wireframeLinewidth*E));var f=g.attributes.index;if(f){var h,l=ia.getAttributeBuffer(f);f.array instanceof Uint32Array&&
ia.getAttributeBuffer(f);f.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,h=4):(c=s.UNSIGNED_SHORT,h=2);var n=g.offsets;if(0===n.length){e&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,l));if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){var m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}m.drawElementsInstancedANGLE(b, V.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,h=4):(c=s.UNSIGNED_SHORT,h=2);var n=g.offsets;if(0===n.length){e&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,l));if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){var m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}m.drawElementsInstancedANGLE(b,f.array.length,c,0,g.maxInstancedCount)}else s.drawElements(b,
f.array.length,c,0,g.maxInstancedCount)}else s.drawElements(b,f.array.length,c,0);Q.calls++;Q.vertices+=f.array.length;Q.faces+=f.array.length/3}else{e=!0;for(var f=0,r=n.length;f<r;f++){m=n[f].index;e&&(k(d,a,g,m),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,l));if(g instanceof THREE.InstancedBufferGeometry&&0<n[f].instances){m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); f.array.length,c,0);Q.calls++;Q.vertices+=f.array.length;Q.faces+=f.array.length/3}else{e=!0;for(var f=0,r=n.length;f<r;f++){m=n[f].index;e&&(k(d,a,g,m),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,l));if(g instanceof THREE.InstancedBufferGeometry&&0<n[f].instances){m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}m.drawElementsInstancedANGLE(b,n[f].count,
break a}m.drawElementsInstancedANGLE(b,n[f].count,c,n[f].start*h,n[f].count,c,n[f].instances)}else s.drawElements(b,n[f].count,c,n[f].start*h);Q.calls++;Q.vertices+=n[f].count;Q.faces+=n[f].count/3}}}else if(n=g.offsets,0===n.length){e&&k(d,a,g,0);d=g.attributes.position;if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); c,n[f].start*h,n[f].count,c,n[f].instances)}else s.drawElements(b,n[f].count,c,n[f].start*h);Q.calls++;Q.vertices+=n[f].count;Q.faces+=n[f].count/3}}}else if(n=g.offsets,0===n.length){e&&k(d,a,g,0);d=g.attributes.position;if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){m=V.get("ANGLE_instanced_arrays");if(null===m){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}d instanceof
break a}d instanceof THREE.InterleavedBufferAttribute?m.drawArraysInstancedANGLE(b,0,d.data.count,g.maxInstancedCount):m.drawArraysInstancedANGLE(b,0,d.count,g.maxInstancedCount)}else d instanceof THREE.InterleavedBufferAttribute?s.drawArrays(b,0,d.data.count):s.drawArrays(b,0,d.count);Q.calls++;Q.vertices+=d.count;Q.faces+=d.array.length/3}else for(e&&k(d,a,g,0),f=0,r=n.length;f<r;f++){if(g instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry."); THREE.InterleavedBufferAttribute?m.drawArraysInstancedANGLE(b,0,d.data.count,g.maxInstancedCount):m.drawArraysInstancedANGLE(b,0,d.count,g.maxInstancedCount)}else d instanceof THREE.InterleavedBufferAttribute?s.drawArrays(b,0,d.data.count):s.drawArrays(b,0,d.count);Q.calls++;Q.vertices+=d.count;Q.faces+=d.array.length/3}else for(e&&k(d,a,g,0),f=0,r=n.length;f<r;f++){if(g instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry.");
break a}else s.drawArrays(b,n[f].start,n[f].count);Q.calls++;Q.vertices+=n[f].count;Q.faces+=n[f].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof THREE.LineSegments?s.LINES:s.LINE_STRIP,P.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*E),m=g.attributes.index)if(n=ia.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=s.UNSIGNED_INT,l=4):(h=s.UNSIGNED_SHORT,l=2),c=g.offsets,0===c.length)b&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(e, break a}else s.drawArrays(b,n[f].start,n[f].count);Q.calls++;Q.vertices+=n[f].count;Q.faces+=n[f].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof THREE.LineSegments?s.LINES:s.LINE_STRIP,O.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*E),m=g.attributes.index)if(n=ia.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=s.UNSIGNED_INT,l=4):(h=s.UNSIGNED_SHORT,l=2),c=g.offsets,0===c.length)b&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(e,
m.array.length,h,0),Q.calls++,Q.vertices+=m.array.length;else for(1<c.length&&(b=!0),m=0,f=c.length;m<f;m++)r=c[m].index,b&&(k(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(e,c[m].count,h,c[m].start*l),Q.calls++,Q.vertices+=c[m].count;else if(b&&k(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)s.drawArrays(e,0,d.array.length/3),Q.calls++,Q.vertices+=d.array.length/3;else for(m=0,f=c.length;m<f;m++)s.drawArrays(e,c[m].index,c[m].count),Q.calls++,Q.vertices+=c[m].count; m.array.length,h,0),Q.calls++,Q.vertices+=m.array.length;else for(1<c.length&&(b=!0),m=0,f=c.length;m<f;m++)r=c[m].index,b&&(k(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(e,c[m].count,h,c[m].start*l),Q.calls++,Q.vertices+=c[m].count;else if(b&&k(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)s.drawArrays(e,0,d.array.length/3),Q.calls++,Q.vertices+=d.array.length/3;else for(m=0,f=c.length;m<f;m++)s.drawArrays(e,c[m].index,c[m].count),Q.calls++,Q.vertices+=c[m].count;
else if(e instanceof THREE.PointCloud)if(c=b,b=s.POINTS,m=g.attributes.index)if(n=ia.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=s.UNSIGNED_INT,l=4):(h=s.UNSIGNED_SHORT,l=2),e=g.offsets,0===e.length)c&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(b,m.array.length,h,0),Q.calls++,Q.points+=m.array.length;else for(1<e.length&&(c=!0),m=0,f=e.length;m<f;m++)r=e[m].index,c&&(k(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(b, else if(e instanceof THREE.PointCloud)if(c=b,b=s.POINTS,m=g.attributes.index)if(n=ia.getAttributeBuffer(m),m.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=s.UNSIGNED_INT,l=4):(h=s.UNSIGNED_SHORT,l=2),e=g.offsets,0===e.length)c&&(k(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(b,m.array.length,h,0),Q.calls++,Q.points+=m.array.length;else for(1<e.length&&(c=!0),m=0,f=e.length;m<f;m++)r=e[m].index,c&&(k(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,n)),s.drawElements(b,
e[m].count,h,e[m].start*l),Q.calls++,Q.points+=e[m].count;else if(c&&k(d,a,g,0),d=g.attributes.position,e=g.offsets,0===e.length)s.drawArrays(b,0,d.array.length/3),Q.calls++,Q.points+=d.array.length/3;else for(m=0,f=e.length;m<f;m++)s.drawArrays(b,e[m].index,e[m].count),Q.calls++,Q.points+=e[m].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;qa="";Va=-1;Ua=null;cb=!0;!0=== e[m].count,h,e[m].start*l),Q.calls++,Q.points+=e[m].count;else if(c&&k(d,a,g,0),d=g.attributes.position,e=g.offsets,0===e.length)s.drawArrays(b,0,d.array.length/3),Q.calls++,Q.points+=d.array.length/3;else for(m=0,f=e.length;m<f;m++)s.drawArrays(b,e[m].index,e[m].count),Q.calls++,Q.points+=e[m].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;qa="";Va=-1;Ua=null;cb=!0;!0===
a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Pa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ha.setFromMatrix(Pa);ea.length=0;na.length=0;pa.length=0;Ea.length=0;Na.length=0;p(a);!0===ka.sortObjects&&(na.sort(l),pa.sort(m));ia.update(na);ia.update(pa);ma.render(a,b);Q.calls=0;Q.vertices=0;Q.faces=0;Q.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil); a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Pa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ha.setFromMatrix(Pa);ea.length=0;na.length=0;pa.length=0;Ea.length=0;Na.length=0;p(a);!0===ka.sortObjects&&(na.sort(l),pa.sort(m));ia.update(na);ia.update(pa);ma.render(a,b);Q.calls=0;Q.vertices=0;Q.faces=0;Q.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
d=0;for(var g=ia.objectsImmediate.length;d<g;d++){var f=ia.objectsImmediate[d],h=f.object;if(!0===h.visible){var k=h;k._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k._normalMatrix.getNormalMatrix(k._modelViewMatrix);h=h.material;h.transparent?(f.transparent=h,f.opaque=null):(f.opaque=h,f.transparent=null)}}a.overrideMaterial?(d=a.overrideMaterial,n(na,b,ea,e,d),n(pa,b,ea,e,d),r(ia.objectsImmediate,"",b,ea,e,d)):(P.setBlending(THREE.NoBlending),n(na,b,ea,e,null),r(ia.objectsImmediate, d=0;for(var g=ia.objectsImmediate.length;d<g;d++){var f=ia.objectsImmediate[d],h=f.object;if(!0===h.visible){var k=h;k._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k._normalMatrix.getNormalMatrix(k._modelViewMatrix);h=h.material;h.transparent?(f.transparent=h,f.opaque=null):(f.opaque=h,f.transparent=null)}}a.overrideMaterial?(d=a.overrideMaterial,n(na,b,ea,e,d),n(pa,b,ea,e,d),r(ia.objectsImmediate,"",b,ea,e,d)):(O.setBlending(THREE.NoBlending),n(na,b,ea,e,null),r(ia.objectsImmediate,
"opaque",b,ea,e,null),n(pa,b,ea,e,null),r(ia.objectsImmediate,"transparent",b,ea,e,null));Kb.render(a,b);Lb.render(a,b,bb,ib);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(P.bindTexture(s.TEXTURE_CUBE_MAP,Z.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_CUBE_MAP),P.bindTexture(s.TEXTURE_CUBE_MAP,null)):(P.bindTexture(s.TEXTURE_2D,Z.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_2D),P.bindTexture(s.TEXTURE_2D, "opaque",b,ea,e,null),n(pa,b,ea,e,null),r(ia.objectsImmediate,"transparent",b,ea,e,null));Kb.render(a,b);Lb.render(a,b,bb,ib);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(O.bindTexture(s.TEXTURE_CUBE_MAP,Z.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_CUBE_MAP),O.bindTexture(s.TEXTURE_CUBE_MAP,null)):(O.bindTexture(s.TEXTURE_2D,Z.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_2D),O.bindTexture(s.TEXTURE_2D,
null)));P.setDepthTest(!0);P.setDepthWrite(!0);P.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){t(d);var g=u(a,b,c,d,e);qa="";e.immediateRenderCallback?e.immediateRenderCallback(g,s,Ha):e.render(function(a){ka.renderBufferImmediate(a,g,d)})};var Yb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling= null)));O.setDepthTest(!0);O.setDepthWrite(!0);O.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){t(d);var g=u(a,b,c,d,e);qa="";e.immediateRenderCallback?e.immediateRenderCallback(g,s,Ha):e.render(function(a){ka.renderBufferImmediate(a,g,d)})};var Yb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=
function(a,b){a===THREE.CullFaceNone?P.disable(s.CULL_FACE):(b===THREE.FrontFaceDirectionCW?s.frontFace(s.CW):s.frontFace(s.CCW),a===THREE.CullFaceBack?s.cullFace(s.BACK):a===THREE.CullFaceFront?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK),P.enable(s.CULL_FACE))};this.setMaterialFaces=q;this.uploadTexture=function(a,b){var c=Z.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=s.createTexture(),Aa.textures++);P.activeTexture(s.TEXTURE0+ function(a,b){a===THREE.CullFaceNone?O.disable(s.CULL_FACE):(b===THREE.FrontFaceDirectionCW?s.frontFace(s.CW):s.frontFace(s.CCW),a===THREE.CullFaceBack?s.cullFace(s.BACK):a===THREE.CullFaceFront?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK),O.enable(s.CULL_FACE))};this.setMaterialFaces=q;this.uploadTexture=function(a,b){var c=Z.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=s.createTexture(),Aa.textures++);O.activeTexture(s.TEXTURE0+
b);P.bindTexture(s.TEXTURE_2D,c.__webglTexture);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,a.flipY);s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);s.pixelStorei(s.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Ib);var d=a.image,c=THREE.Math.isPowerOfTwo(d.width)&&THREE.Math.isPowerOfTwo(d.height),g=G(a.format),f=G(a.type);w(s.TEXTURE_2D,a,c);var h=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<h.length&&c){for(var k=0,l=h.length;k<l;k++)d=h[k],P.texImage2D(s.TEXTURE_2D,k,g,d.width, b);O.bindTexture(s.TEXTURE_2D,c.__webglTexture);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,a.flipY);s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);s.pixelStorei(s.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Ib);var d=a.image,c=THREE.Math.isPowerOfTwo(d.width)&&THREE.Math.isPowerOfTwo(d.height),g=G(a.format),f=G(a.type);w(s.TEXTURE_2D,a,c);var h=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<h.length&&c){for(var k=0,l=h.length;k<l;k++)d=h[k],O.texImage2D(s.TEXTURE_2D,k,g,d.width,
d.height,0,g,f,d.data);a.generateMipmaps=!1}else P.texImage2D(s.TEXTURE_2D,0,g,d.width,d.height,0,g,f,d.data);else if(a instanceof THREE.CompressedTexture)for(k=0,l=h.length;k<l;k++)d=h[k],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Xb().indexOf(g)?P.compressedTexImage2D(s.TEXTURE_2D,k,g,d.width,d.height,0,d.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):P.texImage2D(s.TEXTURE_2D,k,g,d.width,d.height,0,g,f,d.data); d.height,0,g,f,d.data);a.generateMipmaps=!1}else O.texImage2D(s.TEXTURE_2D,0,g,d.width,d.height,0,g,f,d.data);else if(a instanceof THREE.CompressedTexture)for(k=0,l=h.length;k<l;k++)d=h[k],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Xb().indexOf(g)?O.compressedTexImage2D(s.TEXTURE_2D,k,g,d.width,d.height,0,d.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):O.texImage2D(s.TEXTURE_2D,k,g,d.width,d.height,0,g,f,d.data);
else if(0<h.length&&c){k=0;for(l=h.length;k<l;k++)d=h[k],P.texImage2D(s.TEXTURE_2D,k,g,g,f,d);a.generateMipmaps=!1}else P.texImage2D(s.TEXTURE_2D,0,g,g,f,a.image);a.generateMipmaps&&c&&s.generateMipmap(s.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){a.image&&!1!==a.image.complete&&!0===a.__webglInit&&void 0===Z.get(a).__webglInit&&(a.needsUpdate=!0);if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined", else if(0<h.length&&c){k=0;for(l=h.length;k<l;k++)d=h[k],O.texImage2D(s.TEXTURE_2D,k,g,g,f,d);a.generateMipmaps=!1}else O.texImage2D(s.TEXTURE_2D,0,g,g,f,a.image);a.generateMipmaps&&c&&s.generateMipmap(s.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){a.image&&!1!==a.image.complete&&!0===a.__webglInit&&void 0===Z.get(a).__webglInit&&(a.needsUpdate=!0);if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",
a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a):ka.uploadTexture(a,b)}else P.activeTexture(s.TEXTURE0+b),P.bindTexture(s.TEXTURE_2D,Z.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===Z.get(a).__webglFramebuffer){var c=Z.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=s.createTexture(); a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a):ka.uploadTexture(a,b)}else O.activeTexture(s.TEXTURE0+b),O.bindTexture(s.TEXTURE_2D,Z.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===Z.get(a).__webglFramebuffer){var c=Z.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",f);c.__webglTexture=s.createTexture();
Aa.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=G(a.format),g=G(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];P.bindTexture(s.TEXTURE_CUBE_MAP,c.__webglTexture);w(s.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=s.createFramebuffer(),c.__webglRenderbuffer[h]=s.createRenderbuffer(),P.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),L(c.__webglFramebuffer[h],a,s.TEXTURE_CUBE_MAP_POSITIVE_X+h),B(c.__webglRenderbuffer[h], Aa.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=G(a.format),g=G(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];O.bindTexture(s.TEXTURE_CUBE_MAP,c.__webglTexture);w(s.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=s.createFramebuffer(),c.__webglRenderbuffer[h]=s.createRenderbuffer(),O.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),K(c.__webglFramebuffer[h],a,s.TEXTURE_CUBE_MAP_POSITIVE_X+h),D(c.__webglRenderbuffer[h],
a);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=s.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:s.createRenderbuffer(),P.bindTexture(s.TEXTURE_2D,c.__webglTexture),w(s.TEXTURE_2D,a,d),P.texImage2D(s.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),L(c.__webglFramebuffer,a,s.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer): a);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=s.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:s.createRenderbuffer(),O.bindTexture(s.TEXTURE_2D,c.__webglTexture),w(s.TEXTURE_2D,a,d),O.texImage2D(s.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),K(c.__webglFramebuffer,a,s.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):
a.depthBuffer&&a.stencilBuffer&&s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):B(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);b?P.bindTexture(s.TEXTURE_CUBE_MAP,null):P.bindTexture(s.TEXTURE_2D,null);s.bindRenderbuffer(s.RENDERBUFFER,null);s.bindFramebuffer(s.FRAMEBUFFER,null)}a?(c=Z.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Fa,a=Ga,d=Oa,e=za); a.depthBuffer&&a.stencilBuffer&&s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):D(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);b?O.bindTexture(s.TEXTURE_CUBE_MAP,null):O.bindTexture(s.TEXTURE_2D,null);s.bindRenderbuffer(s.RENDERBUFFER,null);s.bindFramebuffer(s.FRAMEBUFFER,null)}a?(c=Z.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Fa,a=Ga,d=Oa,e=za);
b!==Da&&(s.bindFramebuffer(s.FRAMEBUFFER,b),s.viewport(d,e,c,a),Da=b);bb=c;ib=a};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(Z.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var f=!1;Z.get(a).__webglFramebuffer!== b!==Da&&(s.bindFramebuffer(s.FRAMEBUFFER,b),s.viewport(d,e,c,a),Da=b);bb=c;ib=a};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(Z.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var f=!1;Z.get(a).__webglFramebuffer!==
Da&&(s.bindFramebuffer(s.FRAMEBUFFER,Z.get(a).__webglFramebuffer),f=!0);s.checkFramebufferStatus(s.FRAMEBUFFER)===s.FRAMEBUFFER_COMPLETE?s.readPixels(b,c,d,e,s.RGBA,s.UNSIGNED_BYTE,g):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");f&&s.bindFramebuffer(s.FRAMEBUFFER,Da)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")}; Da&&(s.bindFramebuffer(s.FRAMEBUFFER,Z.get(a).__webglFramebuffer),f=!0);s.checkFramebufferStatus(s.FRAMEBUFFER)===s.FRAMEBUFFER_COMPLETE?s.readPixels(b,c,d,e,s.RGBA,s.UNSIGNED_BYTE,g):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");f&&s.bindFramebuffer(s.FRAMEBUFFER,Da)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."); this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
...@@ -607,40 +607,40 @@ THREE.WebGLProperties=function(){var a={};this.get=function(b){b=b.uuid;var c=a[ ...@@ -607,40 +607,40 @@ THREE.WebGLProperties=function(){var a={};this.get=function(b){b=b.uuid;var c=a[
THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")};return function(b,c,d){var e=b.createShader(c);b.shaderSource(e,d);b.compileShader(e);!1===b.getShaderParameter(e,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(e)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",c===b.VERTEX_SHADER?"vertex":"fragment",b.getShaderInfoLog(e),a(d));return e}}(); THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")};return function(b,c,d){var e=b.createShader(c);b.shaderSource(e,d);b.compileShader(e);!1===b.getShaderParameter(e,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(e)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",c===b.VERTEX_SHADER?"vertex":"fragment",b.getShaderInfoLog(e),a(d));return e}}();
THREE.WebGLShadowMap=function(a,b,c){function d(a,b){if(!0===a.visible){var e=c.objects[a.id];e&&a.castShadow&&(!1===a.frustumCulled||!0===g.intersectsObject(a))&&(a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld),n.push(e));for(var e=0,f=a.children.length;e<f;e++)d(a.children[e],b)}}var e=a.context,f=a.state,g=new THREE.Frustum,h=new THREE.Matrix4,k=new THREE.Vector3,l=new THREE.Vector3,m=c.objectsImmediate,p=new THREE.Vector3,n=[],r=THREE.ShaderLib.depthRGBA,t=THREE.UniformsUtils.clone(r.uniforms), THREE.WebGLShadowMap=function(a,b,c){function d(a,b){if(!0===a.visible){var e=c.objects[a.id];e&&a.castShadow&&(!1===a.frustumCulled||!0===g.intersectsObject(a))&&(a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld),n.push(e));for(var e=0,f=a.children.length;e<f;e++)d(a.children[e],b)}}var e=a.context,f=a.state,g=new THREE.Frustum,h=new THREE.Matrix4,k=new THREE.Vector3,l=new THREE.Vector3,m=c.objectsImmediate,p=new THREE.Vector3,n=[],r=THREE.ShaderLib.depthRGBA,t=THREE.UniformsUtils.clone(r.uniforms),
q=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader}),u=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,morphTargets:!0}),v=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,skinning:!0}),x=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,morphTargets:!0,skinning:!0});q._shadowPass=!0;u._shadowPass=!0;v._shadowPass= q=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader}),u=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,morphTargets:!0}),v=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,skinning:!0}),x=new THREE.ShaderMaterial({uniforms:t,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,morphTargets:!0,skinning:!0});q._shadowPass=!0;u._shadowPass=!0;v._shadowPass=
!0;x._shadowPass=!0;var z=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.cullFace=THREE.CullFaceFront;this.cascade=!1;this.render=function(c,r){if(!1!==z.enabled&&(!1!==z.autoUpdate||!1!==z.needsUpdate)){var t,B,y,G,F,A,I,N=[];G=0;e.clearColor(1,1,1,1);f.disable(e.BLEND);f.enable(e.CULL_FACE);e.frontFace(e.CCW);z.cullFace===THREE.CullFaceFront?e.cullFace(e.FRONT):e.cullFace(e.BACK);f.setDepthTest(!0);t=0;for(B=b.length;t<B;t++)if(y=b[t],y.castShadow)if(y instanceof !0;x._shadowPass=!0;var z=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.cullFace=THREE.CullFaceFront;this.cascade=!1;this.render=function(c,r){if(!1!==z.enabled&&(!1!==z.autoUpdate||!1!==z.needsUpdate)){var t,D,y,G,F,A,I,N=[];G=0;e.clearColor(1,1,1,1);f.disable(e.BLEND);f.enable(e.CULL_FACE);e.frontFace(e.CCW);z.cullFace===THREE.CullFaceFront?e.cullFace(e.FRONT):e.cullFace(e.BACK);f.setDepthTest(!0);t=0;for(D=b.length;t<D;t++)if(y=b[t],y.castShadow)if(y instanceof
THREE.DirectionalLight&&y.shadowCascade)for(F=0;F<y.shadowCascadeCount;F++){var E;if(y.shadowCascadeArray[F])E=y.shadowCascadeArray[F];else{var C=y;I=F;E=new THREE.DirectionalLight;E.isVirtual=!0;E.onlyShadow=!0;E.castShadow=!0;E.shadowCameraNear=C.shadowCameraNear;E.shadowCameraFar=C.shadowCameraFar;E.shadowCameraLeft=C.shadowCameraLeft;E.shadowCameraRight=C.shadowCameraRight;E.shadowCameraBottom=C.shadowCameraBottom;E.shadowCameraTop=C.shadowCameraTop;E.shadowCameraVisible=C.shadowCameraVisible; THREE.DirectionalLight&&y.shadowCascade)for(F=0;F<y.shadowCascadeCount;F++){var E;if(y.shadowCascadeArray[F])E=y.shadowCascadeArray[F];else{var B=y;I=F;E=new THREE.DirectionalLight;E.isVirtual=!0;E.onlyShadow=!0;E.castShadow=!0;E.shadowCameraNear=B.shadowCameraNear;E.shadowCameraFar=B.shadowCameraFar;E.shadowCameraLeft=B.shadowCameraLeft;E.shadowCameraRight=B.shadowCameraRight;E.shadowCameraBottom=B.shadowCameraBottom;E.shadowCameraTop=B.shadowCameraTop;E.shadowCameraVisible=B.shadowCameraVisible;
E.shadowDarkness=C.shadowDarkness;E.shadowBias=C.shadowCascadeBias[I];E.shadowMapWidth=C.shadowCascadeWidth[I];E.shadowMapHeight=C.shadowCascadeHeight[I];E.pointsWorld=[];E.pointsFrustum=[];var D=E.pointsWorld;A=E.pointsFrustum;for(var M=0;8>M;M++)D[M]=new THREE.Vector3,A[M]=new THREE.Vector3;D=C.shadowCascadeNearZ[I];C=C.shadowCascadeFarZ[I];A[0].set(-1,-1,D);A[1].set(1,-1,D);A[2].set(-1,1,D);A[3].set(1,1,D);A[4].set(-1,-1,C);A[5].set(1,-1,C);A[6].set(-1,1,C);A[7].set(1,1,C);E.originalCamera=r;A= E.shadowDarkness=B.shadowDarkness;E.shadowBias=B.shadowCascadeBias[I];E.shadowMapWidth=B.shadowCascadeWidth[I];E.shadowMapHeight=B.shadowCascadeHeight[I];E.pointsWorld=[];E.pointsFrustum=[];var C=E.pointsWorld;A=E.pointsFrustum;for(var M=0;8>M;M++)C[M]=new THREE.Vector3,A[M]=new THREE.Vector3;C=B.shadowCascadeNearZ[I];B=B.shadowCascadeFarZ[I];A[0].set(-1,-1,C);A[1].set(1,-1,C);A[2].set(-1,1,C);A[3].set(1,1,C);A[4].set(-1,-1,B);A[5].set(1,-1,B);A[6].set(-1,1,B);A[7].set(1,1,B);E.originalCamera=r;A=
new THREE.Gyroscope;A.position.copy(y.shadowCascadeOffset);A.add(E);A.add(E.target);r.add(A);y.shadowCascadeArray[F]=E}I=y;D=F;C=I.shadowCascadeArray[D];C.position.copy(I.position);C.target.position.copy(I.target.position);C.lookAt(C.target);C.shadowCameraVisible=I.shadowCameraVisible;C.shadowDarkness=I.shadowDarkness;C.shadowBias=I.shadowCascadeBias[D];A=I.shadowCascadeNearZ[D];I=I.shadowCascadeFarZ[D];C=C.pointsFrustum;C[0].z=A;C[1].z=A;C[2].z=A;C[3].z=A;C[4].z=I;C[5].z=I;C[6].z=I;C[7].z=I;N[G]= new THREE.Gyroscope;A.position.copy(y.shadowCascadeOffset);A.add(E);A.add(E.target);r.add(A);y.shadowCascadeArray[F]=E}I=y;C=F;B=I.shadowCascadeArray[C];B.position.copy(I.position);B.target.position.copy(I.target.position);B.lookAt(B.target);B.shadowCameraVisible=I.shadowCameraVisible;B.shadowDarkness=I.shadowDarkness;B.shadowBias=I.shadowCascadeBias[C];A=I.shadowCascadeNearZ[C];I=I.shadowCascadeFarZ[C];B=B.pointsFrustum;B[0].z=A;B[1].z=A;B[2].z=A;B[3].z=A;B[4].z=I;B[5].z=I;B[6].z=I;B[7].z=I;N[G]=
E;G++}else N[G]=y,G++;t=0;for(B=N.length;t<B;t++){y=N[t];y.shadowMap||(F=THREE.LinearFilter,z.type===THREE.PCFSoftShadowMap&&(F=THREE.NearestFilter),y.shadowMap=new THREE.WebGLRenderTarget(y.shadowMapWidth,y.shadowMapHeight,{minFilter:F,magFilter:F,format:THREE.RGBAFormat}),y.shadowMapSize=new THREE.Vector2(y.shadowMapWidth,y.shadowMapHeight),y.shadowMatrix=new THREE.Matrix4);if(!y.shadowCamera){if(y instanceof THREE.SpotLight)y.shadowCamera=new THREE.PerspectiveCamera(y.shadowCameraFov,y.shadowMapWidth/ E;G++}else N[G]=y,G++;t=0;for(D=N.length;t<D;t++){y=N[t];y.shadowMap||(F=THREE.LinearFilter,z.type===THREE.PCFSoftShadowMap&&(F=THREE.NearestFilter),y.shadowMap=new THREE.WebGLRenderTarget(y.shadowMapWidth,y.shadowMapHeight,{minFilter:F,magFilter:F,format:THREE.RGBAFormat}),y.shadowMapSize=new THREE.Vector2(y.shadowMapWidth,y.shadowMapHeight),y.shadowMatrix=new THREE.Matrix4);if(!y.shadowCamera){if(y instanceof THREE.SpotLight)y.shadowCamera=new THREE.PerspectiveCamera(y.shadowCameraFov,y.shadowMapWidth/
y.shadowMapHeight,y.shadowCameraNear,y.shadowCameraFar);else if(y instanceof THREE.DirectionalLight)y.shadowCamera=new THREE.OrthographicCamera(y.shadowCameraLeft,y.shadowCameraRight,y.shadowCameraTop,y.shadowCameraBottom,y.shadowCameraNear,y.shadowCameraFar);else{console.error("THREE.ShadowMapPlugin: Unsupported light type for shadow",y);continue}c.add(y.shadowCamera);!0===c.autoUpdate&&c.updateMatrixWorld()}y.shadowCameraVisible&&!y.cameraHelper&&(y.cameraHelper=new THREE.CameraHelper(y.shadowCamera), y.shadowMapHeight,y.shadowCameraNear,y.shadowCameraFar);else if(y instanceof THREE.DirectionalLight)y.shadowCamera=new THREE.OrthographicCamera(y.shadowCameraLeft,y.shadowCameraRight,y.shadowCameraTop,y.shadowCameraBottom,y.shadowCameraNear,y.shadowCameraFar);else{console.error("THREE.ShadowMapPlugin: Unsupported light type for shadow",y);continue}c.add(y.shadowCamera);!0===c.autoUpdate&&c.updateMatrixWorld()}y.shadowCameraVisible&&!y.cameraHelper&&(y.cameraHelper=new THREE.CameraHelper(y.shadowCamera),
c.add(y.cameraHelper));if(y.isVirtual&&E.originalCamera==r){F=r;G=y.shadowCamera;A=y.pointsFrustum;C=y.pointsWorld;k.set(Infinity,Infinity,Infinity);l.set(-Infinity,-Infinity,-Infinity);for(I=0;8>I;I++)D=C[I],D.copy(A[I]),D.unproject(F),D.applyMatrix4(G.matrixWorldInverse),D.x<k.x&&(k.x=D.x),D.x>l.x&&(l.x=D.x),D.y<k.y&&(k.y=D.y),D.y>l.y&&(l.y=D.y),D.z<k.z&&(k.z=D.z),D.z>l.z&&(l.z=D.z);G.left=k.x;G.right=l.x;G.top=l.y;G.bottom=k.y;G.updateProjectionMatrix()}G=y.shadowMap;A=y.shadowMatrix;F=y.shadowCamera; c.add(y.cameraHelper));if(y.isVirtual&&E.originalCamera==r){F=r;G=y.shadowCamera;A=y.pointsFrustum;B=y.pointsWorld;k.set(Infinity,Infinity,Infinity);l.set(-Infinity,-Infinity,-Infinity);for(I=0;8>I;I++)C=B[I],C.copy(A[I]),C.unproject(F),C.applyMatrix4(G.matrixWorldInverse),C.x<k.x&&(k.x=C.x),C.x>l.x&&(l.x=C.x),C.y<k.y&&(k.y=C.y),C.y>l.y&&(l.y=C.y),C.z<k.z&&(k.z=C.z),C.z>l.z&&(l.z=C.z);G.left=k.x;G.right=l.x;G.top=l.y;G.bottom=k.y;G.updateProjectionMatrix()}G=y.shadowMap;A=y.shadowMatrix;F=y.shadowCamera;
F.position.setFromMatrixPosition(y.matrixWorld);p.setFromMatrixPosition(y.target.matrixWorld);F.lookAt(p);F.updateMatrixWorld();F.matrixWorldInverse.getInverse(F.matrixWorld);y.cameraHelper&&(y.cameraHelper.visible=y.shadowCameraVisible);y.shadowCameraVisible&&y.cameraHelper.update();A.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);A.multiply(F.projectionMatrix);A.multiply(F.matrixWorldInverse);h.multiplyMatrices(F.projectionMatrix,F.matrixWorldInverse);g.setFromMatrix(h);a.setRenderTarget(G);a.clear(); F.position.setFromMatrixPosition(y.matrixWorld);p.setFromMatrixPosition(y.target.matrixWorld);F.lookAt(p);F.updateMatrixWorld();F.matrixWorldInverse.getInverse(F.matrixWorld);y.cameraHelper&&(y.cameraHelper.visible=y.shadowCameraVisible);y.shadowCameraVisible&&y.cameraHelper.update();A.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);A.multiply(F.projectionMatrix);A.multiply(F.matrixWorldInverse);h.multiplyMatrices(F.projectionMatrix,F.matrixWorldInverse);g.setFromMatrix(h);a.setRenderTarget(G);a.clear();
n.length=0;d(c,F);y=0;for(G=n.length;y<G;y++)A=n[y],A=A.object,C=A.material instanceof THREE.MeshFaceMaterial?A.material.materials[0]:A.material,I=void 0!==A.geometry.morphTargets&&0<A.geometry.morphTargets.length&&C.morphTargets,D=A instanceof THREE.SkinnedMesh&&C.skinning,I=A.customDepthMaterial?A.customDepthMaterial:D?I?x:v:I?u:q,a.setMaterialFaces(C),a.renderBufferDirect(F,b,null,I,A);y=0;for(G=m.length;y<G;y++)A=m[y],A=A.object,A.visible&&A.castShadow&&(A._modelViewMatrix.multiplyMatrices(F.matrixWorldInverse, n.length=0;d(c,F);y=0;for(G=n.length;y<G;y++)A=n[y],A=A.object,B=A.material instanceof THREE.MeshFaceMaterial?A.material.materials[0]:A.material,I=void 0!==A.geometry.morphTargets&&0<A.geometry.morphTargets.length&&B.morphTargets,C=A instanceof THREE.SkinnedMesh&&B.skinning,I=A.customDepthMaterial?A.customDepthMaterial:C?I?x:v:I?u:q,a.setMaterialFaces(B),a.renderBufferDirect(F,b,null,I,A);y=0;for(G=m.length;y<G;y++)A=m[y],A=A.object,A.visible&&A.castShadow&&(A._modelViewMatrix.multiplyMatrices(F.matrixWorldInverse,
A.matrixWorld),a.renderImmediateObject(F,b,null,q,A))}t=a.getClearColor();B=a.getClearAlpha();e.clearColor(t.r,t.g,t.b,B);f.enable(e.BLEND);z.cullFace===THREE.CullFaceFront&&e.cullFace(e.BACK);a.resetGLState();z.needsUpdate=!1}}}; A.matrixWorld),a.renderImmediateObject(F,b,null,q,A))}t=a.getClearColor();D=a.getClearAlpha();e.clearColor(t.r,t.g,t.b,D);f.enable(e.BLEND);z.cullFace===THREE.CullFaceFront&&e.cullFace(e.BACK);a.resetGLState();z.needsUpdate=!1}}};
THREE.WebGLState=function(a,b){var c=this,d=new Uint8Array(16),e=new Uint8Array(16),f={},g=null,h=null,k=null,l=null,m=null,p=null,n=null,r=null,t=null,q=null,u=null,v=null,x=null,z=null,w=null,H=null,L=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),B=void 0,y={};this.init=function(){a.clearColor(0,0,0,1);a.clearDepth(1);a.clearStencil(0);a.enable(a.DEPTH_TEST);a.depthFunc(a.LEQUAL);a.frontFace(a.CCW);a.cullFace(a.BACK);this.enable(a.CULL_FACE);this.enable(a.BLEND);a.blendEquation(a.FUNC_ADD);a.blendFunc(a.SRC_ALPHA, THREE.WebGLState=function(a,b){var c=this,d=new Uint8Array(16),e=new Uint8Array(16),f={},g=null,h=null,k=null,l=null,m=null,p=null,n=null,r=null,t=null,q=null,u=null,v=null,x=null,z=null,w=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),H=void 0,K={};this.init=function(){a.clearColor(0,0,0,1);a.clearDepth(1);a.clearStencil(0);this.enable(a.DEPTH_TEST);a.depthFunc(a.LEQUAL);a.frontFace(a.CCW);a.cullFace(a.BACK);this.enable(a.CULL_FACE);this.enable(a.BLEND);a.blendEquation(a.FUNC_ADD);a.blendFunc(a.SRC_ALPHA,
a.ONE_MINUS_SRC_ALPHA)};this.initAttributes=function(){for(var a=0,b=d.length;a<b;a++)d[a]=0};this.enableAttribute=function(b){d[b]=1;0===e[b]&&(a.enableVertexAttribArray(b),e[b]=1)};this.disableUnusedAttributes=function(){for(var b=0,c=e.length;b<c;b++)e[b]!==d[b]&&(a.disableVertexAttribArray(b),e[b]=0)};this.enable=function(b){!0!==f[b]&&(a.enable(b),f[b]=!0)};this.disable=function(b){!1!==f[b]&&(a.disable(b),f[b]=!1)};this.setBlending=function(c,d,e,f,r,q,t){c!==g&&(c===THREE.NoBlending?this.disable(a.BLEND): a.ONE_MINUS_SRC_ALPHA)};this.initAttributes=function(){for(var a=0,b=d.length;a<b;a++)d[a]=0};this.enableAttribute=function(b){d[b]=1;0===e[b]&&(a.enableVertexAttribArray(b),e[b]=1)};this.disableUnusedAttributes=function(){for(var b=0,c=e.length;b<c;b++)e[b]!==d[b]&&(a.disableVertexAttribArray(b),e[b]=0)};this.enable=function(b){!0!==f[b]&&(a.enable(b),f[b]=!0)};this.disable=function(b){!1!==f[b]&&(a.disable(b),f[b]=!1)};this.setBlending=function(c,d,e,f,r,q,t){c!==g&&(c===THREE.NoBlending?this.disable(a.BLEND):
c===THREE.AdditiveBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,a.ONE)):c===THREE.SubtractiveBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR)):c===THREE.MultiplyBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR)):c===THREE.CustomBlending?this.enable(a.BLEND):(this.enable(a.BLEND),a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA, c===THREE.AdditiveBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,a.ONE)):c===THREE.SubtractiveBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR)):c===THREE.MultiplyBlending?(this.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR)):c===THREE.CustomBlending?this.enable(a.BLEND):(this.enable(a.BLEND),a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,
a.ONE,a.ONE_MINUS_SRC_ALPHA)),g=c);if(c===THREE.CustomBlending){r=r||d;q=q||e;t=t||f;if(d!==h||r!==m)a.blendEquationSeparate(b(d),b(r)),h=d,m=r;if(e!==k||f!==l||q!==p||t!==n)a.blendFuncSeparate(b(e),b(f),b(q),b(t)),k=e,l=f,p=q,n=t}else n=p=m=l=k=h=null};this.setDepthFunc=function(b){if(r!==b){if(b)switch(b){case THREE.NeverDepth:a.depthFunc(a.NEVER);break;case THREE.AlwaysDepth:a.depthFunc(a.ALWAYS);break;case THREE.LessDepth:a.depthFunc(a.LESS);break;case THREE.LessEqualDepth:a.depthFunc(a.LEQUAL); a.ONE,a.ONE_MINUS_SRC_ALPHA)),g=c);if(c===THREE.CustomBlending){r=r||d;q=q||e;t=t||f;if(d!==h||r!==m)a.blendEquationSeparate(b(d),b(r)),h=d,m=r;if(e!==k||f!==l||q!==p||t!==n)a.blendFuncSeparate(b(e),b(f),b(q),b(t)),k=e,l=f,p=q,n=t}else n=p=m=l=k=h=null};this.setDepthFunc=function(b){if(r!==b){if(b)switch(b){case THREE.NeverDepth:a.depthFunc(a.NEVER);break;case THREE.AlwaysDepth:a.depthFunc(a.ALWAYS);break;case THREE.LessDepth:a.depthFunc(a.LESS);break;case THREE.LessEqualDepth:a.depthFunc(a.LEQUAL);
break;case THREE.EqualDepth:a.depthFunc(a.EQUAL);break;case THREE.GreaterEqualDepth:a.depthFunc(a.GEQUAL);break;case THREE.GreaterDepth:a.depthFunc(a.GREATER);break;case THREE.NotEqualDepth:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);r=b}};this.setDepthTest=function(b){t!==b&&(b?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST),t=b)};this.setDepthWrite=function(b){q!==b&&(a.depthMask(b),q=b)};this.setColorWrite=function(b){u!==b&&(a.colorMask(b,b,b,b),u=b)}; break;case THREE.EqualDepth:a.depthFunc(a.EQUAL);break;case THREE.GreaterEqualDepth:a.depthFunc(a.GEQUAL);break;case THREE.GreaterDepth:a.depthFunc(a.GREATER);break;case THREE.NotEqualDepth:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);r=b}};this.setDepthTest=function(b){b?this.enable(a.DEPTH_TEST):this.disable(a.DEPTH_TEST)};this.setDepthWrite=function(b){t!==b&&(a.depthMask(b),t=b)};this.setColorWrite=function(b){q!==b&&(a.colorMask(b,b,b,b),q=b)};this.setFlipSided=
this.setFlipSided=function(b){v!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),v=b)};this.setLineWidth=function(b){b!==x&&(a.lineWidth(b),x=b)};this.setPolygonOffset=function(b,c,d){z!==b&&(b?a.enable(a.POLYGON_OFFSET_FILL):a.disable(a.POLYGON_OFFSET_FILL),z=b);!b||w===c&&H===d||(a.polygonOffset(c,d),w=c,H=d)};this.activeTexture=function(b){void 0===b&&(b=a.TEXTURE0+L-1);B!==b&&(a.activeTexture(b),B=b)};this.bindTexture=function(b,d){void 0===B&&c.activeTexture();var e=y[B];void 0===e&&(e={type:void 0, function(b){u!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),u=b)};this.setLineWidth=function(b){b!==v&&(a.lineWidth(b),v=b)};this.setPolygonOffset=function(b,c,d){b?this.enable(a.POLYGON_OFFSET_FILL):this.disable(a.POLYGON_OFFSET_FILL);!b||x===c&&z===d||(a.polygonOffset(c,d),x=c,z=d)};this.activeTexture=function(b){void 0===b&&(b=a.TEXTURE0+w-1);H!==b&&(a.activeTexture(b),H=b)};this.bindTexture=function(b,d){void 0===H&&c.activeTexture();var e=K[H];void 0===e&&(e={type:void 0,texture:void 0},K[H]=
texture:void 0},y[B]=e);if(e.type!==b||e.texture!==d)a.bindTexture(b,d),e.type=b,e.texture=d};this.compressedTexImage2D=function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(b){console.error(b)}};this.texImage2D=function(){try{a.texImage2D.apply(a,arguments)}catch(b){console.error(b)}};this.reset=function(){for(var b=0;b<e.length;b++)1===e[b]&&(a.disableVertexAttribArray(b),e[b]=0);f={};v=u=q=t=g=null}}; e);if(e.type!==b||e.texture!==d)a.bindTexture(b,d),e.type=b,e.texture=d};this.compressedTexImage2D=function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(b){console.error(b)}};this.texImage2D=function(){try{a.texImage2D.apply(a,arguments)}catch(b){console.error(b)}};this.reset=function(){for(var b=0;b<e.length;b++)1===e[b]&&(a.disableVertexAttribArray(b),e[b]=0);f={};u=q=t=g=null}};
THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n=a.context,r=a.state,t,q,u,v,x,z;this.render=function(w,H,L,B){if(0!==b.length){w=new THREE.Vector3;var y=B/L,G=.5*L,F=.5*B,A=16/B,I=new THREE.Vector2(A*y,A),N=new THREE.Vector3(1,1,0),E=new THREE.Vector2(1,1);if(void 0===u){var A=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),C=new Uint16Array([0,1,2,0,2,3]);t=n.createBuffer();q=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,t);n.bufferData(n.ARRAY_BUFFER,A,n.STATIC_DRAW);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n=a.context,r=a.state,t,q,u,v,x,z;this.render=function(w,H,K,D){if(0!==b.length){w=new THREE.Vector3;var y=D/K,G=.5*K,F=.5*D,A=16/D,I=new THREE.Vector2(A*y,A),N=new THREE.Vector3(1,1,0),E=new THREE.Vector2(1,1);if(void 0===u){var A=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),B=new Uint16Array([0,1,2,0,2,3]);t=n.createBuffer();q=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,t);n.bufferData(n.ARRAY_BUFFER,A,n.STATIC_DRAW);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,
q);n.bufferData(n.ELEMENT_ARRAY_BUFFER,C,n.STATIC_DRAW);x=n.createTexture();z=n.createTexture();r.bindTexture(n.TEXTURE_2D,x);n.texImage2D(n.TEXTURE_2D,0,n.RGB,16,16,0,n.RGB,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);r.bindTexture(n.TEXTURE_2D,z);n.texImage2D(n.TEXTURE_2D,0, q);n.bufferData(n.ELEMENT_ARRAY_BUFFER,B,n.STATIC_DRAW);x=n.createTexture();z=n.createTexture();r.bindTexture(n.TEXTURE_2D,x);n.texImage2D(n.TEXTURE_2D,0,n.RGB,16,16,0,n.RGB,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);r.bindTexture(n.TEXTURE_2D,z);n.texImage2D(n.TEXTURE_2D,0,
n.RGBA,16,16,0,n.RGBA,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);var A=(v=0<n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS))?{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", n.RGBA,16,16,0,n.RGBA,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);var A=(v=0<n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS))?{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"}:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"}:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
fragmentShader:"precision mediump float;\nuniform lowp int renderType;\nuniform sampler2D map;\nuniform sampler2D occlusionMap;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nfloat visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;\nvisibility = ( 1.0 - visibility / 4.0 );\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * visibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"}, fragmentShader:"precision mediump float;\nuniform lowp int renderType;\nuniform sampler2D map;\nuniform sampler2D occlusionMap;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nfloat visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;\nvisibility = ( 1.0 - visibility / 4.0 );\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * visibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"},
C=n.createProgram(),D=n.createShader(n.FRAGMENT_SHADER),M=n.createShader(n.VERTEX_SHADER),R="precision "+a.getPrecision()+" float;\n";n.shaderSource(D,R+A.fragmentShader);n.shaderSource(M,R+A.vertexShader);n.compileShader(D);n.compileShader(M);n.attachShader(C,D);n.attachShader(C,M);n.linkProgram(C);u=C;m=n.getAttribLocation(u,"position");p=n.getAttribLocation(u,"uv");c=n.getUniformLocation(u,"renderType");d=n.getUniformLocation(u,"map");e=n.getUniformLocation(u,"occlusionMap");f=n.getUniformLocation(u, B=n.createProgram(),C=n.createShader(n.FRAGMENT_SHADER),M=n.createShader(n.VERTEX_SHADER),R="precision "+a.getPrecision()+" float;\n";n.shaderSource(C,R+A.fragmentShader);n.shaderSource(M,R+A.vertexShader);n.compileShader(C);n.compileShader(M);n.attachShader(B,C);n.attachShader(B,M);n.linkProgram(B);u=B;m=n.getAttribLocation(u,"position");p=n.getAttribLocation(u,"uv");c=n.getUniformLocation(u,"renderType");d=n.getUniformLocation(u,"map");e=n.getUniformLocation(u,"occlusionMap");f=n.getUniformLocation(u,
"opacity");g=n.getUniformLocation(u,"color");h=n.getUniformLocation(u,"scale");k=n.getUniformLocation(u,"rotation");l=n.getUniformLocation(u,"screenPosition")}n.useProgram(u);r.initAttributes();r.enableAttribute(m);r.enableAttribute(p);r.disableUnusedAttributes();n.uniform1i(e,0);n.uniform1i(d,1);n.bindBuffer(n.ARRAY_BUFFER,t);n.vertexAttribPointer(m,2,n.FLOAT,!1,16,0);n.vertexAttribPointer(p,2,n.FLOAT,!1,16,8);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,q);r.disable(n.CULL_FACE);n.depthMask(!1);C=0;for(D= "opacity");g=n.getUniformLocation(u,"color");h=n.getUniformLocation(u,"scale");k=n.getUniformLocation(u,"rotation");l=n.getUniformLocation(u,"screenPosition")}n.useProgram(u);r.initAttributes();r.enableAttribute(m);r.enableAttribute(p);r.disableUnusedAttributes();n.uniform1i(e,0);n.uniform1i(d,1);n.bindBuffer(n.ARRAY_BUFFER,t);n.vertexAttribPointer(m,2,n.FLOAT,!1,16,0);n.vertexAttribPointer(p,2,n.FLOAT,!1,16,8);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,q);r.disable(n.CULL_FACE);n.depthMask(!1);B=0;for(C=
b.length;C<D;C++)if(A=16/B,I.set(A*y,A),M=b[C],w.set(M.matrixWorld.elements[12],M.matrixWorld.elements[13],M.matrixWorld.elements[14]),w.applyMatrix4(H.matrixWorldInverse),w.applyProjection(H.projectionMatrix),N.copy(w),E.x=N.x*G+G,E.y=N.y*F+F,v||0<E.x&&E.x<L&&0<E.y&&E.y<B){r.activeTexture(n.TEXTURE0);r.bindTexture(n.TEXTURE_2D,null);r.activeTexture(n.TEXTURE1);r.bindTexture(n.TEXTURE_2D,x);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGB,E.x-8,E.y-8,16,16,0);n.uniform1i(c,0);n.uniform2f(h,I.x,I.y);n.uniform3f(l, b.length;B<C;B++)if(A=16/D,I.set(A*y,A),M=b[B],w.set(M.matrixWorld.elements[12],M.matrixWorld.elements[13],M.matrixWorld.elements[14]),w.applyMatrix4(H.matrixWorldInverse),w.applyProjection(H.projectionMatrix),N.copy(w),E.x=N.x*G+G,E.y=N.y*F+F,v||0<E.x&&E.x<K&&0<E.y&&E.y<D){r.activeTexture(n.TEXTURE0);r.bindTexture(n.TEXTURE_2D,null);r.activeTexture(n.TEXTURE1);r.bindTexture(n.TEXTURE_2D,x);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGB,E.x-8,E.y-8,16,16,0);n.uniform1i(c,0);n.uniform2f(h,I.x,I.y);n.uniform3f(l,
N.x,N.y,N.z);r.disable(n.BLEND);n.enable(n.DEPTH_TEST);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);r.activeTexture(n.TEXTURE0);r.bindTexture(n.TEXTURE_2D,z);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,E.x-8,E.y-8,16,16,0);n.uniform1i(c,1);n.disable(n.DEPTH_TEST);r.activeTexture(n.TEXTURE1);r.bindTexture(n.TEXTURE_2D,x);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);M.positionScreen.copy(N);M.customUpdateCallback?M.customUpdateCallback(M):M.updateLensFlares();n.uniform1i(c,2);r.enable(n.BLEND);for(var R= N.x,N.y,N.z);r.disable(n.BLEND);r.enable(n.DEPTH_TEST);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);r.activeTexture(n.TEXTURE0);r.bindTexture(n.TEXTURE_2D,z);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,E.x-8,E.y-8,16,16,0);n.uniform1i(c,1);r.disable(n.DEPTH_TEST);r.activeTexture(n.TEXTURE1);r.bindTexture(n.TEXTURE_2D,x);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);M.positionScreen.copy(N);M.customUpdateCallback?M.customUpdateCallback(M):M.updateLensFlares();n.uniform1i(c,2);r.enable(n.BLEND);for(var R=
0,U=M.lensFlares.length;R<U;R++){var S=M.lensFlares[R];.001<S.opacity&&.001<S.scale&&(N.x=S.x,N.y=S.y,N.z=S.z,A=S.size*S.scale/B,I.x=A*y,I.y=A,n.uniform3f(l,N.x,N.y,N.z),n.uniform2f(h,I.x,I.y),n.uniform1f(k,S.rotation),n.uniform1f(f,S.opacity),n.uniform3f(g,S.color.r,S.color.g,S.color.b),r.setBlending(S.blending,S.blendEquation,S.blendSrc,S.blendDst),a.setTexture(S.texture,1),n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0))}}r.enable(n.CULL_FACE);n.enable(n.DEPTH_TEST);n.depthMask(!0);a.resetGLState()}}}; 0,U=M.lensFlares.length;R<U;R++){var S=M.lensFlares[R];.001<S.opacity&&.001<S.scale&&(N.x=S.x,N.y=S.y,N.z=S.z,A=S.size*S.scale/D,I.x=A*y,I.y=A,n.uniform3f(l,N.x,N.y,N.z),n.uniform2f(h,I.x,I.y),n.uniform1f(k,S.rotation),n.uniform1f(f,S.opacity),n.uniform3f(g,S.color.r,S.color.g,S.color.b),r.setBlending(S.blending,S.blendEquation,S.blendSrc,S.blendDst),a.setTexture(S.texture,1),n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0))}}r.enable(n.CULL_FACE);r.enable(n.DEPTH_TEST);n.depthMask(!0);a.resetGLState()}}};
THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n,r,t,q,u,v,x;function z(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var w=a.context,H=a.state,L,B,y,G,F=new THREE.Vector3,A=new THREE.Quaternion,I=new THREE.Vector3;this.render=function(N,E){if(0!==b.length){if(void 0===y){var C=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),D=new Uint16Array([0,1,2,0,2,3]);L=w.createBuffer();B=w.createBuffer();w.bindBuffer(w.ARRAY_BUFFER,L);w.bufferData(w.ARRAY_BUFFER,C,w.STATIC_DRAW);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER, THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n,r,t,q,u,v,x;function z(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var w=a.context,H=a.state,K,D,y,G,F=new THREE.Vector3,A=new THREE.Quaternion,I=new THREE.Vector3;this.render=function(N,E){if(0!==b.length){if(void 0===y){var B=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),C=new Uint16Array([0,1,2,0,2,3]);K=w.createBuffer();D=w.createBuffer();w.bindBuffer(w.ARRAY_BUFFER,K);w.bufferData(w.ARRAY_BUFFER,B,w.STATIC_DRAW);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,
B);w.bufferData(w.ELEMENT_ARRAY_BUFFER,D,w.STATIC_DRAW);var C=w.createProgram(),D=w.createShader(w.VERTEX_SHADER),M=w.createShader(w.FRAGMENT_SHADER);w.shaderSource(D,["precision "+a.getPrecision()+" float;","uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n")); D);w.bufferData(w.ELEMENT_ARRAY_BUFFER,C,w.STATIC_DRAW);var B=w.createProgram(),C=w.createShader(w.VERTEX_SHADER),M=w.createShader(w.FRAGMENT_SHADER);w.shaderSource(C,["precision "+a.getPrecision()+" float;","uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n"));
w.shaderSource(M,["precision "+a.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n")); w.shaderSource(M,["precision "+a.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n"));
w.compileShader(D);w.compileShader(M);w.attachShader(C,D);w.attachShader(C,M);w.linkProgram(C);y=C;v=w.getAttribLocation(y,"position");x=w.getAttribLocation(y,"uv");c=w.getUniformLocation(y,"uvOffset");d=w.getUniformLocation(y,"uvScale");e=w.getUniformLocation(y,"rotation");f=w.getUniformLocation(y,"scale");g=w.getUniformLocation(y,"color");h=w.getUniformLocation(y,"map");k=w.getUniformLocation(y,"opacity");l=w.getUniformLocation(y,"modelViewMatrix");m=w.getUniformLocation(y,"projectionMatrix");p= w.compileShader(C);w.compileShader(M);w.attachShader(B,C);w.attachShader(B,M);w.linkProgram(B);y=B;v=w.getAttribLocation(y,"position");x=w.getAttribLocation(y,"uv");c=w.getUniformLocation(y,"uvOffset");d=w.getUniformLocation(y,"uvScale");e=w.getUniformLocation(y,"rotation");f=w.getUniformLocation(y,"scale");g=w.getUniformLocation(y,"color");h=w.getUniformLocation(y,"map");k=w.getUniformLocation(y,"opacity");l=w.getUniformLocation(y,"modelViewMatrix");m=w.getUniformLocation(y,"projectionMatrix");p=
w.getUniformLocation(y,"fogType");n=w.getUniformLocation(y,"fogDensity");r=w.getUniformLocation(y,"fogNear");t=w.getUniformLocation(y,"fogFar");q=w.getUniformLocation(y,"fogColor");u=w.getUniformLocation(y,"alphaTest");C=document.createElement("canvas");C.width=8;C.height=8;D=C.getContext("2d");D.fillStyle="white";D.fillRect(0,0,8,8);G=new THREE.Texture(C);G.needsUpdate=!0}w.useProgram(y);H.initAttributes();H.enableAttribute(v);H.enableAttribute(x);H.disableUnusedAttributes();H.disable(w.CULL_FACE); w.getUniformLocation(y,"fogType");n=w.getUniformLocation(y,"fogDensity");r=w.getUniformLocation(y,"fogNear");t=w.getUniformLocation(y,"fogFar");q=w.getUniformLocation(y,"fogColor");u=w.getUniformLocation(y,"alphaTest");B=document.createElement("canvas");B.width=8;B.height=8;C=B.getContext("2d");C.fillStyle="white";C.fillRect(0,0,8,8);G=new THREE.Texture(B);G.needsUpdate=!0}w.useProgram(y);H.initAttributes();H.enableAttribute(v);H.enableAttribute(x);H.disableUnusedAttributes();H.disable(w.CULL_FACE);
H.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,L);w.vertexAttribPointer(v,2,w.FLOAT,!1,16,0);w.vertexAttribPointer(x,2,w.FLOAT,!1,16,8);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,B);w.uniformMatrix4fv(m,!1,E.projectionMatrix.elements);H.activeTexture(w.TEXTURE0);w.uniform1i(h,0);D=C=0;(M=N.fog)?(w.uniform3f(q,M.color.r,M.color.g,M.color.b),M instanceof THREE.Fog?(w.uniform1f(r,M.near),w.uniform1f(t,M.far),w.uniform1i(p,1),D=C=1):M instanceof THREE.FogExp2&&(w.uniform1f(n,M.density),w.uniform1i(p,2),D=C=2)): H.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,K);w.vertexAttribPointer(v,2,w.FLOAT,!1,16,0);w.vertexAttribPointer(x,2,w.FLOAT,!1,16,8);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,D);w.uniformMatrix4fv(m,!1,E.projectionMatrix.elements);H.activeTexture(w.TEXTURE0);w.uniform1i(h,0);C=B=0;(M=N.fog)?(w.uniform3f(q,M.color.r,M.color.g,M.color.b),M instanceof THREE.Fog?(w.uniform1f(r,M.near),w.uniform1f(t,M.far),w.uniform1i(p,1),C=B=1):M instanceof THREE.FogExp2&&(w.uniform1f(n,M.density),w.uniform1i(p,2),C=B=2)):
(w.uniform1i(p,0),D=C=0);for(var M=0,R=b.length;M<R;M++){var U=b[M];U._modelViewMatrix.multiplyMatrices(E.matrixWorldInverse,U.matrixWorld);U.z=-U._modelViewMatrix.elements[14]}b.sort(z);for(var S=[],M=0,R=b.length;M<R;M++){var U=b[M],T=U.material;w.uniform1f(u,T.alphaTest);w.uniformMatrix4fv(l,!1,U._modelViewMatrix.elements);U.matrixWorld.decompose(F,A,I);S[0]=I.x;S[1]=I.y;U=0;N.fog&&T.fog&&(U=D);C!==U&&(w.uniform1i(p,U),C=U);null!==T.map?(w.uniform2f(c,T.map.offset.x,T.map.offset.y),w.uniform2f(d, (w.uniform1i(p,0),C=B=0);for(var M=0,R=b.length;M<R;M++){var U=b[M];U._modelViewMatrix.multiplyMatrices(E.matrixWorldInverse,U.matrixWorld);U.z=-U._modelViewMatrix.elements[14]}b.sort(z);for(var S=[],M=0,R=b.length;M<R;M++){var U=b[M],T=U.material;w.uniform1f(u,T.alphaTest);w.uniformMatrix4fv(l,!1,U._modelViewMatrix.elements);U.matrixWorld.decompose(F,A,I);S[0]=I.x;S[1]=I.y;U=0;N.fog&&T.fog&&(U=C);B!==U&&(w.uniform1i(p,U),B=U);null!==T.map?(w.uniform2f(c,T.map.offset.x,T.map.offset.y),w.uniform2f(d,
T.map.repeat.x,T.map.repeat.y)):(w.uniform2f(c,0,0),w.uniform2f(d,1,1));w.uniform1f(k,T.opacity);w.uniform3f(g,T.color.r,T.color.g,T.color.b);w.uniform1f(e,T.rotation);w.uniform2fv(f,S);H.setBlending(T.blending,T.blendEquation,T.blendSrc,T.blendDst);H.setDepthTest(T.depthTest);H.setDepthWrite(T.depthWrite);T.map&&T.map.image&&T.map.image.width?a.setTexture(T.map,0):a.setTexture(G,0);w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0)}H.enable(w.CULL_FACE);a.resetGLState()}}}; T.map.repeat.x,T.map.repeat.y)):(w.uniform2f(c,0,0),w.uniform2f(d,1,1));w.uniform1f(k,T.opacity);w.uniform3f(g,T.color.r,T.color.g,T.color.b);w.uniform1f(e,T.rotation);w.uniform2fv(f,S);H.setBlending(T.blending,T.blendEquation,T.blendSrc,T.blendDst);H.setDepthTest(T.depthTest);H.setDepthWrite(T.depthWrite);T.map&&T.map.image&&T.map.image.width?a.setTexture(T.map,0):a.setTexture(G,0);w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0)}H.enable(w.CULL_FACE);a.resetGLState()}}};
THREE.GeometryUtils={merge:function(a,b,c){console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");var d;b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},center:function(a){console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");return a.center()}}; THREE.GeometryUtils={merge:function(a,b,c){console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");var d;b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},center:function(a){console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");return a.center()}};
THREE.ImageUtils={crossOrigin:void 0,loadTexture:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.Texture(void 0,b);e.load(a,function(a){f.image=a;f.needsUpdate=!0;c&&c(f)},void 0,function(a){d&&d(a)});f.sourceFile=a;return f},loadTextureCube:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.CubeTexture([],b);f.flipY=!1;var g=0;b=function(b){e.load(a[b],function(a){f.images[b]=a;g+=1;6===g&&(f.needsUpdate=!0,c&& THREE.ImageUtils={crossOrigin:void 0,loadTexture:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.Texture(void 0,b);e.load(a,function(a){f.image=a;f.needsUpdate=!0;c&&c(f)},void 0,function(a){d&&d(a)});f.sourceFile=a;return f},loadTextureCube:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.CubeTexture([],b);f.flipY=!1;var g=0;b=function(b){e.load(a[b],function(a){f.images[b]=a;g+=1;6===g&&(f.needsUpdate=!0,c&&
...@@ -655,7 +655,7 @@ break;case "l":k=b[a++]*c+d;m=b[a++]*c;e.lineTo(k,m);break;case "q":k=b[a++]*c+d ...@@ -655,7 +655,7 @@ break;case "l":k=b[a++]*c+d;m=b[a++]*c;e.lineTo(k,m);break;case "q":k=b[a++]*c+d
n,t,u,m)}return{offset:v.ha*c,path:e}}}}; n,t,u,m)}return{offset:v.ha*c,path:e}}}};
THREE.FontUtils.generateShapes=function(a,b){b=b||{};var c=void 0!==b.curveSegments?b.curveSegments:4,d=void 0!==b.font?b.font:"helvetiker",e=void 0!==b.weight?b.weight:"normal",f=void 0!==b.style?b.style:"normal";THREE.FontUtils.size=void 0!==b.size?b.size:100;THREE.FontUtils.divisions=c;THREE.FontUtils.face=d;THREE.FontUtils.weight=e;THREE.FontUtils.style=f;c=THREE.FontUtils.drawText(a).paths;d=[];e=0;for(f=c.length;e<f;e++)Array.prototype.push.apply(d,c[e].toShapes());return d}; THREE.FontUtils.generateShapes=function(a,b){b=b||{};var c=void 0!==b.curveSegments?b.curveSegments:4,d=void 0!==b.font?b.font:"helvetiker",e=void 0!==b.weight?b.weight:"normal",f=void 0!==b.style?b.style:"normal";THREE.FontUtils.size=void 0!==b.size?b.size:100;THREE.FontUtils.divisions=c;THREE.FontUtils.face=d;THREE.FontUtils.weight=e;THREE.FontUtils.style=f;c=THREE.FontUtils.drawText(a).paths;d=[];e=0;for(f=c.length;e<f;e++)Array.prototype.push.apply(d,c[e].toShapes());return d};
(function(a){var b=function(a){for(var b=a.length,e=0,f=b-1,g=0;g<b;f=g++)e+=a[f].x*a[g].y-a[g].x*a[f].y;return.5*e};a.Triangulate=function(a,d){var e=a.length;if(3>e)return null;var f=[],g=[],h=[],k,l,m;if(0<b(a))for(l=0;l<e;l++)g[l]=l;else for(l=0;l<e;l++)g[l]=e-1-l;var p=2*e;for(l=e-1;2<e;){if(0>=p--){console.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()");break}k=l;e<=k&&(k=0);l=k+1;e<=l&&(l=0);m=l+1;e<=m&&(m=0);var n;a:{var r=n=void 0,t=void 0,q=void 0, (function(a){var b=function(a){for(var b=a.length,e=0,f=b-1,g=0;g<b;f=g++)e+=a[f].x*a[g].y-a[g].x*a[f].y;return.5*e};a.Triangulate=function(a,d){var e=a.length;if(3>e)return null;var f=[],g=[],h=[],k,l,m;if(0<b(a))for(l=0;l<e;l++)g[l]=l;else for(l=0;l<e;l++)g[l]=e-1-l;var p=2*e;for(l=e-1;2<e;){if(0>=p--){console.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()");break}k=l;e<=k&&(k=0);l=k+1;e<=l&&(l=0);m=l+1;e<=m&&(m=0);var n;a:{var r=n=void 0,t=void 0,q=void 0,
u=void 0,v=void 0,x=void 0,z=void 0,w=void 0,r=a[g[k]].x,t=a[g[k]].y,q=a[g[l]].x,u=a[g[l]].y,v=a[g[m]].x,x=a[g[m]].y;if(1E-10>(q-r)*(x-t)-(u-t)*(v-r))n=!1;else{var H=void 0,L=void 0,B=void 0,y=void 0,G=void 0,F=void 0,A=void 0,I=void 0,N=void 0,E=void 0,N=I=A=w=z=void 0,H=v-q,L=x-u,B=r-v,y=t-x,G=q-r,F=u-t;for(n=0;n<e;n++)if(z=a[g[n]].x,w=a[g[n]].y,!(z===r&&w===t||z===q&&w===u||z===v&&w===x)&&(A=z-r,I=w-t,N=z-q,E=w-u,z-=v,w-=x,N=H*E-L*N,A=G*I-F*A,I=B*w-y*z,-1E-10<=N&&-1E-10<=I&&-1E-10<=A)){n=!1;break a}n= u=void 0,v=void 0,x=void 0,z=void 0,w=void 0,r=a[g[k]].x,t=a[g[k]].y,q=a[g[l]].x,u=a[g[l]].y,v=a[g[m]].x,x=a[g[m]].y;if(1E-10>(q-r)*(x-t)-(u-t)*(v-r))n=!1;else{var H=void 0,K=void 0,D=void 0,y=void 0,G=void 0,F=void 0,A=void 0,I=void 0,N=void 0,E=void 0,N=I=A=w=z=void 0,H=v-q,K=x-u,D=r-v,y=t-x,G=q-r,F=u-t;for(n=0;n<e;n++)if(z=a[g[n]].x,w=a[g[n]].y,!(z===r&&w===t||z===q&&w===u||z===v&&w===x)&&(A=z-r,I=w-t,N=z-q,E=w-u,z-=v,w-=x,N=H*E-K*N,A=G*I-F*A,I=D*w-y*z,-1E-10<=N&&-1E-10<=I&&-1E-10<=A)){n=!1;break a}n=
!0}}if(n){f.push([a[g[k]],a[g[l]],a[g[m]]]);h.push([g[k],g[l],g[m]]);k=l;for(m=l+1;m<e;k++,m++)g[k]=g[m];e--;p=2*e}}return d?h:f};a.Triangulate.area=b;return a})(THREE.FontUtils);THREE.typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};"undefined"!==typeof self&&(self._typeface_js=THREE.typeface_js); !0}}if(n){f.push([a[g[k]],a[g[l]],a[g[m]]]);h.push([g[k],g[l],g[m]]);k=l;for(m=l+1;m<e;k++,m++)g[k]=g[m];e--;p=2*e}}return d?h:f};a.Triangulate.area=b;return a})(THREE.FontUtils);THREE.typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};"undefined"!==typeof self&&(self._typeface_js=THREE.typeface_js);
THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.source.onended=this.onEnded.bind(this);this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.panner=this.context.createPanner();this.panner.connect(this.gain);this.autoplay=!1;this.startTime=0;this.isPlaying=!1};THREE.Audio.prototype=Object.create(THREE.Object3D.prototype);THREE.Audio.prototype.constructor=THREE.Audio; THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.source.onended=this.onEnded.bind(this);this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.panner=this.context.createPanner();this.panner.connect(this.gain);this.autoplay=!1;this.startTime=0;this.isPlaying=!1};THREE.Audio.prototype=Object.create(THREE.Object3D.prototype);THREE.Audio.prototype.constructor=THREE.Audio;
THREE.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a;b.autoplay&&b.play()})};c.send();return this}; THREE.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a;b.autoplay&&b.play()})};c.send();return this};
...@@ -694,11 +694,11 @@ l=a?!l:l;h=[];var m=[],p=[],n=0,r;m[n]=void 0;p[n]=[];var t,q;t=0;for(q=e.length ...@@ -694,11 +694,11 @@ l=a?!l:l;h=[];var m=[],p=[],n=0,r;m[n]=void 0;p[n]=[];var t,q;t=0;for(q=e.length
tos:u,hole:l}),r?(r=!1,h[u].push(n)):t=!0);r&&h[g].push(n)}0<q.length&&(t||(p=h))}t=0;for(q=m.length;t<q;t++)for(h=m[t].s,k.push(h),g=p[t],e=0,f=g.length;e<f;e++)h.holes.push(g[e].h);return k};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=Object.create(THREE.Path.prototype);THREE.Shape.prototype.constructor=THREE.Shape;THREE.Shape.prototype.extrude=function(a){return new THREE.ExtrudeGeometry(this,a)}; tos:u,hole:l}),r?(r=!1,h[u].push(n)):t=!0);r&&h[g].push(n)}0<q.length&&(t||(p=h))}t=0;for(q=m.length;t<q;t++)for(h=m[t].s,k.push(h),g=p[t],e=0,f=g.length;e<f;e++)h.holes.push(g[e].h);return k};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=Object.create(THREE.Path.prototype);THREE.Shape.prototype.constructor=THREE.Shape;THREE.Shape.prototype.extrude=function(a){return new THREE.ExtrudeGeometry(this,a)};
THREE.Shape.prototype.makeGeometry=function(a){return new THREE.ShapeGeometry(this,a)};THREE.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d};THREE.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d}; THREE.Shape.prototype.makeGeometry=function(a){return new THREE.ShapeGeometry(this,a)};THREE.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d};THREE.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d};
THREE.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}};THREE.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)};THREE.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}}; THREE.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}};THREE.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)};THREE.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}};
THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,g){var f=b.x-a.x,h=b.y-a.y,k=e.x-d.x,l=e.y-d.y,m=a.x-d.x,p=a.y-d.y,B=h*k-f*l,y=h*m-f*p;if(1E-10<Math.abs(B)){if(0<B){if(0>y||y>B)return[];k=l*m-k*p;if(0>k||k>B)return[]}else{if(0<y||y<B)return[];k=l*m-k*p;if(0<k||k<B)return[]}if(0===k)return!g||0!==y&&y!==B?[a]:[];if(k===B)return!g||0!==y&&y!==B?[b]:[];if(0=== THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,g){var f=b.x-a.x,h=b.y-a.y,k=e.x-d.x,l=e.y-d.y,m=a.x-d.x,p=a.y-d.y,D=h*k-f*l,y=h*m-f*p;if(1E-10<Math.abs(D)){if(0<D){if(0>y||y>D)return[];k=l*m-k*p;if(0>k||k>D)return[]}else{if(0<y||y<D)return[];k=l*m-k*p;if(0<k||k<D)return[]}if(0===k)return!g||0!==y&&y!==D?[a]:[];if(k===D)return!g||0!==y&&y!==D?[b]:[];if(0===
y)return[d];if(y===B)return[e];g=k/B;return[{x:a.x+g*f,y:a.y+g*h}]}if(0!==y||l*m!==k*p)return[];h=0===f&&0===h;k=0===k&&0===l;if(h&&k)return a.x!==d.x||a.y!==d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!==f?(a.x<b.x?(f=a,k=a.x,h=b,a=b.x):(f=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,B=d.x,l=e,d=e.x):(b=e,B=e.x,l=d,d=d.x)):(a.y<b.y?(f=a,k=a.y,h=b,a=b.y):(f=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,B=d.y,l=e,d=e.y):(b=e,B=e.y,l=d,d=d.y));return k<=B?a<B?[]:a===B?g?[]:[b]:a<=d?[b,h]:[b,l]:k>d?[]: y)return[d];if(y===D)return[e];g=k/D;return[{x:a.x+g*f,y:a.y+g*h}]}if(0!==y||l*m!==k*p)return[];h=0===f&&0===h;k=0===k&&0===l;if(h&&k)return a.x!==d.x||a.y!==d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!==f?(a.x<b.x?(f=a,k=a.x,h=b,a=b.x):(f=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,D=d.x,l=e,d=e.x):(b=e,D=e.x,l=d,d=d.x)):(a.y<b.y?(f=a,k=a.y,h=b,a=b.y):(f=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,D=d.y,l=e,d=e.y):(b=e,D=e.y,l=d,d=d.y));return k<=D?a<D?[]:a===D?g?[]:[b]:a<=d?[b,h]:[b,l]:k>d?[]:
k===d?g?[]:[f]:a<=d?[f,h]:[f,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return 1E-10<Math.abs(a)?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,k,l,m={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)l=h[f].x+":"+h[f].y,void 0!==m[l]&&console.warn("THREE.Shape: Duplicate point",l),m[l]=f;f=function(a,b){function c(a,b){var d=h.length-1,f=a-1;0>f&&(f=d);var g=a+1;g>d&&(g= k===d?g?[]:[f]:a<=d?[f,h]:[f,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return 1E-10<Math.abs(a)?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,k,l,m={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)l=h[f].x+":"+h[f].y,void 0!==m[l]&&console.warn("THREE.Shape: Duplicate point",l),m[l]=f;f=function(a,b){function c(a,b){var d=h.length-1,f=a-1;0>f&&(f=d);var g=a+1;g>d&&(g=
0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1;d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function g(a,c){var e,f,h,k;for(e=0;e<l.length;e++)for(f=b[l[e]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=d(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],m,p,L,B,y,G=[],F,A,I,N=0;for(m=b.length;N<m;N++)l.push(N);F=0;for(var E=2* 0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1;d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function g(a,c){var e,f,h,k;for(e=0;e<l.length;e++)for(f=b[l[e]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=d(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],m,p,K,D,y,G=[],F,A,I,N=0;for(m=b.length;N<m;N++)l.push(N);F=0;for(var E=2*
l.length;0<l.length;){E--;if(0>E){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(p=F;p<h.length;p++){L=h[p];m=-1;for(N=0;N<l.length;N++)if(B=l[N],y=L.x+":"+L.y+":"+B,void 0===G[y]){k=b[B];for(A=0;A<k.length;A++)if(B=k[A],c(p,A)&&!f(L,B)&&!g(L,B)){m=A;l.splice(N,1);F=h.slice(0,p+1);B=h.slice(p);A=k.slice(m);I=k.slice(0,m+1);h=F.concat(A).concat(I).concat(B);F=p;break}if(0<=m)break;G[y]=!0}if(0<=m)break}}return h}(a,b);var p=THREE.FontUtils.Triangulate(f, l.length;0<l.length;){E--;if(0>E){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(p=F;p<h.length;p++){K=h[p];m=-1;for(N=0;N<l.length;N++)if(D=l[N],y=K.x+":"+K.y+":"+D,void 0===G[y]){k=b[D];for(A=0;A<k.length;A++)if(D=k[A],c(p,A)&&!f(K,D)&&!g(K,D)){m=A;l.splice(N,1);F=h.slice(0,p+1);D=h.slice(p);A=k.slice(m);I=k.slice(0,m+1);h=F.concat(A).concat(I).concat(D);F=p;break}if(0<=m)break;G[y]=!0}if(0<=m)break}}return h}(a,b);var p=THREE.FontUtils.Triangulate(f,
!1);f=0;for(g=p.length;f<g;f++)for(k=p[f],h=0;3>h;h++)l=k[h].x+":"+k[h].y,l=m[l],void 0!==l&&(k[h]=l);return p.concat()},isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1- !1);f=0;for(g=p.length;f<g;f++)for(k=p[f],h=0;3>h;h++)l=k[h].x+":"+k[h].y,l=m[l],void 0!==l&&(k[h]=l);return p.concat()},isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-
a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}};THREE.LineCurve=function(a,b){this.v1=a;this.v2=b};THREE.LineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.LineCurve.prototype.constructor=THREE.LineCurve;THREE.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};THREE.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)}; a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}};THREE.LineCurve=function(a,b){this.v1=a;this.v2=b};THREE.LineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.LineCurve.prototype.constructor=THREE.LineCurve;THREE.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};THREE.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)};
THREE.LineCurve.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()};THREE.QuadraticBezierCurve=function(a,b,c){this.v0=a;this.v1=b;this.v2=c};THREE.QuadraticBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.QuadraticBezierCurve.prototype.constructor=THREE.QuadraticBezierCurve; THREE.LineCurve.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()};THREE.QuadraticBezierCurve=function(a,b,c){this.v0=a;this.v1=b;this.v2=c};THREE.QuadraticBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.QuadraticBezierCurve.prototype.constructor=THREE.QuadraticBezierCurve;
...@@ -739,7 +739,7 @@ f.interpolate(g,g.time);this.data.hierarchy[a].node.updateMatrix();c.matrixWorld ...@@ -739,7 +739,7 @@ f.interpolate(g,g.time);this.data.hierarchy[a].node.updateMatrix();c.matrixWorld
THREE.MorphAnimation=function(a){this.mesh=a;this.frames=a.morphTargetInfluences.length;this.currentTime=0;this.duration=1E3;this.loop=!0;this.currentFrame=this.lastFrame=0;this.isPlaying=!1}; THREE.MorphAnimation=function(a){this.mesh=a;this.frames=a.morphTargetInfluences.length;this.currentTime=0;this.duration=1E3;this.loop=!0;this.currentFrame=this.lastFrame=0;this.isPlaying=!1};
THREE.MorphAnimation.prototype={constructor:THREE.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(a){if(!1!==this.isPlaying){this.currentTime+=a;!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration);this.currentTime=Math.min(this.currentTime,this.duration);a=this.duration/this.frames;var b=Math.floor(this.currentTime/a),c=this.mesh.morphTargetInfluences;b!==this.currentFrame&&(c[this.lastFrame]=0,c[this.currentFrame]= THREE.MorphAnimation.prototype={constructor:THREE.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(a){if(!1!==this.isPlaying){this.currentTime+=a;!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration);this.currentTime=Math.min(this.currentTime,this.duration);a=this.duration/this.frames;var b=Math.floor(this.currentTime/a),c=this.mesh.morphTargetInfluences;b!==this.currentFrame&&(c[this.lastFrame]=0,c[this.currentFrame]=
1,c[b]=0,this.lastFrame=this.currentFrame,this.currentFrame=b);c[b]=this.currentTime%a/a;c[this.lastFrame]=1-c[b]}}}; 1,c[b]=0,this.lastFrame=this.currentFrame,this.currentFrame=b);c[b]=this.currentTime%a/a;c[this.lastFrame]=1-c[b]}}};
THREE.BoxGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e,f,g){var q,u=h.widthSegments,v=h.heightSegments,x=e/2,z=f/2,w=h.vertices.length;if("x"===a&&"y"===b||"y"===a&&"x"===b)q="z";else if("x"===a&&"z"===b||"z"===a&&"x"===b)q="y",v=h.depthSegments;else if("z"===a&&"y"===b||"y"===a&&"z"===b)q="x",u=h.depthSegments;var H=u+1,L=v+1,B=e/u,y=f/v,G=new THREE.Vector3;G[q]=0<g?1:-1;for(e=0;e<L;e++)for(f=0;f<H;f++){var F=new THREE.Vector3;F[a]=(f*B-x)*c;F[b]=(e*y-z)*d;F[q]=g;h.vertices.push(F)}for(e=0;e< THREE.BoxGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e,f,g){var q,u=h.widthSegments,v=h.heightSegments,x=e/2,z=f/2,w=h.vertices.length;if("x"===a&&"y"===b||"y"===a&&"x"===b)q="z";else if("x"===a&&"z"===b||"z"===a&&"x"===b)q="y",v=h.depthSegments;else if("z"===a&&"y"===b||"y"===a&&"z"===b)q="x",u=h.depthSegments;var H=u+1,K=v+1,D=e/u,y=f/v,G=new THREE.Vector3;G[q]=0<g?1:-1;for(e=0;e<K;e++)for(f=0;f<H;f++){var F=new THREE.Vector3;F[a]=(f*D-x)*c;F[b]=(e*y-z)*d;F[q]=g;h.vertices.push(F)}for(e=0;e<
v;e++)for(f=0;f<u;f++)z=f+H*e,a=f+H*(e+1),b=f+1+H*(e+1),c=f+1+H*e,d=new THREE.Vector2(f/u,1-e/v),g=new THREE.Vector2(f/u,1-(e+1)/v),q=new THREE.Vector2((f+1)/u,1-(e+1)/v),x=new THREE.Vector2((f+1)/u,1-e/v),z=new THREE.Face3(z+w,a+w,c+w),z.normal.copy(G),z.vertexNormals.push(G.clone(),G.clone(),G.clone()),h.faces.push(z),h.faceVertexUvs[0].push([d,g,x]),z=new THREE.Face3(a+w,b+w,c+w),z.normal.copy(G),z.vertexNormals.push(G.clone(),G.clone(),G.clone()),h.faces.push(z),h.faceVertexUvs[0].push([g.clone(), v;e++)for(f=0;f<u;f++)z=f+H*e,a=f+H*(e+1),b=f+1+H*(e+1),c=f+1+H*e,d=new THREE.Vector2(f/u,1-e/v),g=new THREE.Vector2(f/u,1-(e+1)/v),q=new THREE.Vector2((f+1)/u,1-(e+1)/v),x=new THREE.Vector2((f+1)/u,1-e/v),z=new THREE.Face3(z+w,a+w,c+w),z.normal.copy(G),z.vertexNormals.push(G.clone(),G.clone(),G.clone()),h.faces.push(z),h.faceVertexUvs[0].push([d,g,x]),z=new THREE.Face3(a+w,b+w,c+w),z.normal.copy(G),z.vertexNormals.push(G.clone(),G.clone(),G.clone()),h.faces.push(z),h.faceVertexUvs[0].push([g.clone(),
q,x.clone()])}THREE.Geometry.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.widthSegments=d||1;this.heightSegments=e||1;this.depthSegments=f||1;var h=this;d=a/2;e=b/2;f=c/2;g("z","y",-1,-1,c,b,d);g("z","y",1,-1,c,b,-d);g("x","z",1,1,a,c,e);g("x","z",1,-1,a,c,-e);g("x","y",1,-1,a,b,f);g("x","y",-1,-1,a,b,-f);this.mergeVertices()};THREE.BoxGeometry.prototype=Object.create(THREE.Geometry.prototype); q,x.clone()])}THREE.Geometry.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.widthSegments=d||1;this.heightSegments=e||1;this.depthSegments=f||1;var h=this;d=a/2;e=b/2;f=c/2;g("z","y",-1,-1,c,b,d);g("z","y",1,-1,c,b,-d);g("x","z",1,1,a,c,e);g("x","z",1,-1,a,c,-e);g("x","y",1,-1,a,b,f);g("x","y",-1,-1,a,b,-f);this.mergeVertices()};THREE.BoxGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.BoxGeometry.prototype.constructor=THREE.BoxGeometry;THREE.CubeGeometry=THREE.BoxGeometry; THREE.BoxGeometry.prototype.constructor=THREE.BoxGeometry;THREE.CubeGeometry=THREE.BoxGeometry;
...@@ -749,20 +749,20 @@ THREE.CircleBufferGeometry=function(a,b,c,d){THREE.BufferGeometry.call(this);thi ...@@ -749,20 +749,20 @@ THREE.CircleBufferGeometry=function(a,b,c,d){THREE.BufferGeometry.call(this);thi
[];for(k=1;k<=b;k++)c.push(k),c.push(k+1),c.push(0);this.addAttribute("index",new THREE.BufferAttribute(new Uint16Array(c),1));this.addAttribute("position",new THREE.BufferAttribute(f,3));this.addAttribute("normal",new THREE.BufferAttribute(g,3));this.addAttribute("uv",new THREE.BufferAttribute(e,2));this.boundingSphere=new THREE.Sphere(new THREE.Vector3,a)};THREE.CircleBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.CircleBufferGeometry.prototype.constructor=THREE.CircleBufferGeometry; [];for(k=1;k<=b;k++)c.push(k),c.push(k+1),c.push(0);this.addAttribute("index",new THREE.BufferAttribute(new Uint16Array(c),1));this.addAttribute("position",new THREE.BufferAttribute(f,3));this.addAttribute("normal",new THREE.BufferAttribute(g,3));this.addAttribute("uv",new THREE.BufferAttribute(e,2));this.boundingSphere=new THREE.Sphere(new THREE.Vector3,a)};THREE.CircleBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.CircleBufferGeometry.prototype.constructor=THREE.CircleBufferGeometry;
THREE.CylinderGeometry=function(a,b,c,d,e,f,g,h){THREE.Geometry.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=d||8;e=e||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var k=c/2,l,m,p=[],n=[];for(m=0;m<=e;m++){var r=[],t=[],q=m/e,u=q*(b-a)+a;for(l=0;l<=d;l++){var v=l/d,x=new THREE.Vector3;x.x=u*Math.sin(v*h+ THREE.CylinderGeometry=function(a,b,c,d,e,f,g,h){THREE.Geometry.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=d||8;e=e||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var k=c/2,l,m,p=[],n=[];for(m=0;m<=e;m++){var r=[],t=[],q=m/e,u=q*(b-a)+a;for(l=0;l<=d;l++){var v=l/d,x=new THREE.Vector3;x.x=u*Math.sin(v*h+
g);x.y=-q*c+k;x.z=u*Math.cos(v*h+g);this.vertices.push(x);r.push(this.vertices.length-1);t.push(new THREE.Vector2(v,1-q))}p.push(r);n.push(t)}c=(b-a)/c;for(l=0;l<d;l++)for(0!==a?(g=this.vertices[p[0][l]].clone(),h=this.vertices[p[0][l+1]].clone()):(g=this.vertices[p[1][l]].clone(),h=this.vertices[p[1][l+1]].clone()),g.setY(Math.sqrt(g.x*g.x+g.z*g.z)*c).normalize(),h.setY(Math.sqrt(h.x*h.x+h.z*h.z)*c).normalize(),m=0;m<e;m++){var r=p[m][l],t=p[m+1][l],q=p[m+1][l+1],u=p[m][l+1],v=g.clone(),x=g.clone(), g);x.y=-q*c+k;x.z=u*Math.cos(v*h+g);this.vertices.push(x);r.push(this.vertices.length-1);t.push(new THREE.Vector2(v,1-q))}p.push(r);n.push(t)}c=(b-a)/c;for(l=0;l<d;l++)for(0!==a?(g=this.vertices[p[0][l]].clone(),h=this.vertices[p[0][l+1]].clone()):(g=this.vertices[p[1][l]].clone(),h=this.vertices[p[1][l+1]].clone()),g.setY(Math.sqrt(g.x*g.x+g.z*g.z)*c).normalize(),h.setY(Math.sqrt(h.x*h.x+h.z*h.z)*c).normalize(),m=0;m<e;m++){var r=p[m][l],t=p[m+1][l],q=p[m+1][l+1],u=p[m][l+1],v=g.clone(),x=g.clone(),
z=h.clone(),w=h.clone(),H=n[m][l].clone(),L=n[m+1][l].clone(),B=n[m+1][l+1].clone(),y=n[m][l+1].clone();this.faces.push(new THREE.Face3(r,t,u,[v,x,w]));this.faceVertexUvs[0].push([H,L,y]);this.faces.push(new THREE.Face3(t,q,u,[x.clone(),z,w.clone()]));this.faceVertexUvs[0].push([L.clone(),B,y.clone()])}if(!1===f&&0<a)for(this.vertices.push(new THREE.Vector3(0,k,0)),l=0;l<d;l++)r=p[0][l],t=p[0][l+1],q=this.vertices.length-1,v=new THREE.Vector3(0,1,0),x=new THREE.Vector3(0,1,0),z=new THREE.Vector3(0, z=h.clone(),w=h.clone(),H=n[m][l].clone(),K=n[m+1][l].clone(),D=n[m+1][l+1].clone(),y=n[m][l+1].clone();this.faces.push(new THREE.Face3(r,t,u,[v,x,w]));this.faceVertexUvs[0].push([H,K,y]);this.faces.push(new THREE.Face3(t,q,u,[x.clone(),z,w.clone()]));this.faceVertexUvs[0].push([K.clone(),D,y.clone()])}if(!1===f&&0<a)for(this.vertices.push(new THREE.Vector3(0,k,0)),l=0;l<d;l++)r=p[0][l],t=p[0][l+1],q=this.vertices.length-1,v=new THREE.Vector3(0,1,0),x=new THREE.Vector3(0,1,0),z=new THREE.Vector3(0,
1,0),H=n[0][l].clone(),L=n[0][l+1].clone(),B=new THREE.Vector2(L.x,0),this.faces.push(new THREE.Face3(r,t,q,[v,x,z])),this.faceVertexUvs[0].push([H,L,B]);if(!1===f&&0<b)for(this.vertices.push(new THREE.Vector3(0,-k,0)),l=0;l<d;l++)r=p[e][l+1],t=p[e][l],q=this.vertices.length-1,v=new THREE.Vector3(0,-1,0),x=new THREE.Vector3(0,-1,0),z=new THREE.Vector3(0,-1,0),H=n[e][l+1].clone(),L=n[e][l].clone(),B=new THREE.Vector2(L.x,1),this.faces.push(new THREE.Face3(r,t,q,[v,x,z])),this.faceVertexUvs[0].push([H, 1,0),H=n[0][l].clone(),K=n[0][l+1].clone(),D=new THREE.Vector2(K.x,0),this.faces.push(new THREE.Face3(r,t,q,[v,x,z])),this.faceVertexUvs[0].push([H,K,D]);if(!1===f&&0<b)for(this.vertices.push(new THREE.Vector3(0,-k,0)),l=0;l<d;l++)r=p[e][l+1],t=p[e][l],q=this.vertices.length-1,v=new THREE.Vector3(0,-1,0),x=new THREE.Vector3(0,-1,0),z=new THREE.Vector3(0,-1,0),H=n[e][l+1].clone(),K=n[e][l].clone(),D=new THREE.Vector2(K.x,1),this.faces.push(new THREE.Face3(r,t,q,[v,x,z])),this.faceVertexUvs[0].push([H,
L,B]);this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry; K,D]);this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;
THREE.EdgesGeometry=function(a,b){THREE.BufferGeometry.call(this);var c=Math.cos(THREE.Math.degToRad(void 0!==b?b:1)),d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h;a instanceof THREE.BufferGeometry?(h=new THREE.Geometry,h.fromBufferGeometry(a)):h=a.clone();h.mergeVertices();h.computeFaceNormals();var k=h.vertices;h=h.faces;for(var l=0,m=h.length;l<m;l++)for(var p=h[l],n=0;3>n;n++){d[0]=p[g[n]];d[1]=p[g[(n+1)%3]];d.sort(f);var r=d.toString();void 0===e[r]?e[r]={vert1:d[0],vert2:d[1],face1:l, THREE.EdgesGeometry=function(a,b){THREE.BufferGeometry.call(this);var c=Math.cos(THREE.Math.degToRad(void 0!==b?b:1)),d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h;a instanceof THREE.BufferGeometry?(h=new THREE.Geometry,h.fromBufferGeometry(a)):h=a.clone();h.mergeVertices();h.computeFaceNormals();var k=h.vertices;h=h.faces;for(var l=0,m=h.length;l<m;l++)for(var p=h[l],n=0;3>n;n++){d[0]=p[g[n]];d[1]=p[g[(n+1)%3]];d.sort(f);var r=d.toString();void 0===e[r]?e[r]={vert1:d[0],vert2:d[1],face1:l,
face2:void 0}:e[r].face2=l}d=[];for(r in e)if(f=e[r],void 0===f.face2||h[f.face1].normal.dot(h[f.face2].normal)<=c)g=k[f.vert1],d.push(g.x),d.push(g.y),d.push(g.z),g=k[f.vert2],d.push(g.x),d.push(g.y),d.push(g.z);this.addAttribute("position",new THREE.BufferAttribute(new Float32Array(d),3))};THREE.EdgesGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.EdgesGeometry.prototype.constructor=THREE.EdgesGeometry; face2:void 0}:e[r].face2=l}d=[];for(r in e)if(f=e[r],void 0===f.face2||h[f.face1].normal.dot(h[f.face2].normal)<=c)g=k[f.vert1],d.push(g.x),d.push(g.y),d.push(g.z),g=k[f.vert2],d.push(g.x),d.push(g.y),d.push(g.z);this.addAttribute("position",new THREE.BufferAttribute(new Float32Array(d),3))};THREE.EdgesGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.EdgesGeometry.prototype.constructor=THREE.EdgesGeometry;
THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;d<c;d++)this.addShape(a[d],b)}; THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;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.error("THREE.ExtrudeGeometry: vec does not exist");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),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/l-h)*g-(c.y+f/l-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= THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||console.error("THREE.ExtrudeGeometry: vec does not exist");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),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/l-h)*g-(c.y+f/l-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(a,b){var c,d;for(K=a.length;0<=--K;){c=K;d=K-1;0>d&&(d=a.length-1);for(var e=0,f=r+2*m,e=0;e<f;e++){var g=U*e,h=U*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+F,g=g+F,l=l+F,h=h+F;G.faces.push(new THREE.Face3(k,g,h));G.faces.push(new THREE.Face3(g,l,h));k=v.generateSideWallUV(G,k,g,l,h);G.faceVertexUvs[0].push([k[0],k[1],k[3]]);G.faceVertexUvs[0].push([k[1], !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(a,b){var c,d;for(L=a.length;0<=--L;){c=L;d=L-1;0>d&&(d=a.length-1);for(var e=0,f=r+2*m,e=0;e<f;e++){var g=U*e,h=U*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+F,g=g+F,l=l+F,h=h+F;G.faces.push(new THREE.Face3(k,g,h));G.faces.push(new THREE.Face3(g,l,h));k=v.generateSideWallUV(G,k,g,l,h);G.faceVertexUvs[0].push([k[0],k[1],k[3]]);G.faceVertexUvs[0].push([k[1],
k[2],k[3]])}}}function f(a,b,c){G.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=F;b+=F;c+=F;G.faces.push(new THREE.Face3(a,b,c));a=v.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,l=void 0!==b.bevelSize?b.bevelSize:k-2,m=void 0!==b.bevelSegments?b.bevelSegments:3,p=void 0!==b.bevelEnabled?b.bevelEnabled:!0,n=void 0!==b.curveSegments?b.curveSegments:12,r=void 0!==b.steps?b.steps:1,t=b.extrudePath, k[2],k[3]])}}}function f(a,b,c){G.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=F;b+=F;c+=F;G.faces.push(new THREE.Face3(a,b,c));a=v.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,l=void 0!==b.bevelSize?b.bevelSize:k-2,m=void 0!==b.bevelSegments?b.bevelSegments:3,p=void 0!==b.bevelEnabled?b.bevelEnabled:!0,n=void 0!==b.curveSegments?b.curveSegments:12,r=void 0!==b.steps?b.steps:1,t=b.extrudePath,
q,u=!1,v=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,x,z,w,H;t&&(q=t.getSpacedPoints(r),u=!0,p=!1,x=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(t,r,!1),z=new THREE.Vector3,w=new THREE.Vector3,H=new THREE.Vector3);p||(l=k=m=0);var L,B,y,G=this,F=this.vertices.length,t=a.extractPoints(n),n=t.shape,A=t.holes;if(t=!THREE.Shape.Utils.isClockWise(n)){n=n.reverse();B=0;for(y=A.length;B<y;B++)L=A[B],THREE.Shape.Utils.isClockWise(L)&&(A[B]=L.reverse());t= q,u=!1,v=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,x,z,w,H;t&&(q=t.getSpacedPoints(r),u=!0,p=!1,x=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(t,r,!1),z=new THREE.Vector3,w=new THREE.Vector3,H=new THREE.Vector3);p||(l=k=m=0);var K,D,y,G=this,F=this.vertices.length,t=a.extractPoints(n),n=t.shape,A=t.holes;if(t=!THREE.Shape.Utils.isClockWise(n)){n=n.reverse();D=0;for(y=A.length;D<y;D++)K=A[D],THREE.Shape.Utils.isClockWise(K)&&(A[D]=K.reverse());t=
!1}var I=THREE.Shape.Utils.triangulateShape(n,A),N=n;B=0;for(y=A.length;B<y;B++)L=A[B],n=n.concat(L);var E,C,D,M,R,U=n.length,S,T=I.length,t=[],K=0;D=N.length;E=D-1;for(C=K+1;K<D;K++,E++,C++)E===D&&(E=0),C===D&&(C=0),t[K]=d(N[K],N[E],N[C]);var aa=[],fa,ea=t.concat();B=0;for(y=A.length;B<y;B++){L=A[B];fa=[];K=0;D=L.length;E=D-1;for(C=K+1;K<D;K++,E++,C++)E===D&&(E=0),C===D&&(C=0),fa[K]=d(L[K],L[E],L[C]);aa.push(fa);ea=ea.concat(fa)}for(E=0;E<m;E++){D=E/m;M=k*(1-D);C=l*Math.sin(D*Math.PI/2);K=0;for(D= !1}var I=THREE.Shape.Utils.triangulateShape(n,A),N=n;D=0;for(y=A.length;D<y;D++)K=A[D],n=n.concat(K);var E,B,C,M,R,U=n.length,S,T=I.length,t=[],L=0;C=N.length;E=C-1;for(B=L+1;L<C;L++,E++,B++)E===C&&(E=0),B===C&&(B=0),t[L]=d(N[L],N[E],N[B]);var aa=[],fa,ea=t.concat();D=0;for(y=A.length;D<y;D++){K=A[D];fa=[];L=0;C=K.length;E=C-1;for(B=L+1;L<C;L++,E++,B++)E===C&&(E=0),B===C&&(B=0),fa[L]=d(K[L],K[E],K[B]);aa.push(fa);ea=ea.concat(fa)}for(E=0;E<m;E++){C=E/m;M=k*(1-C);B=l*Math.sin(C*Math.PI/2);L=0;for(C=
N.length;K<D;K++)R=c(N[K],t[K],C),f(R.x,R.y,-M);B=0;for(y=A.length;B<y;B++)for(L=A[B],fa=aa[B],K=0,D=L.length;K<D;K++)R=c(L[K],fa[K],C),f(R.x,R.y,-M)}C=l;for(K=0;K<U;K++)R=p?c(n[K],ea[K],C):n[K],u?(w.copy(x.normals[0]).multiplyScalar(R.x),z.copy(x.binormals[0]).multiplyScalar(R.y),H.copy(q[0]).add(w).add(z),f(H.x,H.y,H.z)):f(R.x,R.y,0);for(D=1;D<=r;D++)for(K=0;K<U;K++)R=p?c(n[K],ea[K],C):n[K],u?(w.copy(x.normals[D]).multiplyScalar(R.x),z.copy(x.binormals[D]).multiplyScalar(R.y),H.copy(q[D]).add(w).add(z), N.length;L<C;L++)R=c(N[L],t[L],B),f(R.x,R.y,-M);D=0;for(y=A.length;D<y;D++)for(K=A[D],fa=aa[D],L=0,C=K.length;L<C;L++)R=c(K[L],fa[L],B),f(R.x,R.y,-M)}B=l;for(L=0;L<U;L++)R=p?c(n[L],ea[L],B):n[L],u?(w.copy(x.normals[0]).multiplyScalar(R.x),z.copy(x.binormals[0]).multiplyScalar(R.y),H.copy(q[0]).add(w).add(z),f(H.x,H.y,H.z)):f(R.x,R.y,0);for(C=1;C<=r;C++)for(L=0;L<U;L++)R=p?c(n[L],ea[L],B):n[L],u?(w.copy(x.normals[C]).multiplyScalar(R.x),z.copy(x.binormals[C]).multiplyScalar(R.y),H.copy(q[C]).add(w).add(z),
f(H.x,H.y,H.z)):f(R.x,R.y,h/r*D);for(E=m-1;0<=E;E--){D=E/m;M=k*(1-D);C=l*Math.sin(D*Math.PI/2);K=0;for(D=N.length;K<D;K++)R=c(N[K],t[K],C),f(R.x,R.y,h+M);B=0;for(y=A.length;B<y;B++)for(L=A[B],fa=aa[B],K=0,D=L.length;K<D;K++)R=c(L[K],fa[K],C),u?f(R.x,R.y+q[r-1].y,q[r-1].x+M):f(R.x,R.y,h+M)}(function(){if(p){var a;a=0*U;for(K=0;K<T;K++)S=I[K],g(S[2]+a,S[1]+a,S[0]+a);a=r+2*m;a*=U;for(K=0;K<T;K++)S=I[K],g(S[0]+a,S[1]+a,S[2]+a)}else{for(K=0;K<T;K++)S=I[K],g(S[2],S[1],S[0]);for(K=0;K<T;K++)S=I[K],g(S[0]+ f(H.x,H.y,H.z)):f(R.x,R.y,h/r*C);for(E=m-1;0<=E;E--){C=E/m;M=k*(1-C);B=l*Math.sin(C*Math.PI/2);L=0;for(C=N.length;L<C;L++)R=c(N[L],t[L],B),f(R.x,R.y,h+M);D=0;for(y=A.length;D<y;D++)for(K=A[D],fa=aa[D],L=0,C=K.length;L<C;L++)R=c(K[L],fa[L],B),u?f(R.x,R.y+q[r-1].y,q[r-1].x+M):f(R.x,R.y,h+M)}(function(){if(p){var a;a=0*U;for(L=0;L<T;L++)S=I[L],g(S[2]+a,S[1]+a,S[0]+a);a=r+2*m;a*=U;for(L=0;L<T;L++)S=I[L],g(S[0]+a,S[1]+a,S[2]+a)}else{for(L=0;L<T;L++)S=I[L],g(S[2],S[1],S[0]);for(L=0;L<T;L++)S=I[L],g(S[0]+
U*r,S[1]+U*r,S[2]+U*r)}})();(function(){var a=0;e(N,a);a+=N.length;B=0;for(y=A.length;B<y;B++)L=A[B],e(L,a),a+=L.length})()}; U*r,S[1]+U*r,S[2]+U*r)}})();(function(){var a=0;e(N,a);a+=N.length;D=0;for(y=A.length;D<y;D++)K=A[D],e(K,a),a+=K.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, 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===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this}; 1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;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,f,g,h=this.vertices.length;e=a.extractPoints(void 0!==b.curveSegments?b.curveSegments:12);var k=e.shape,l=e.holes;if(!THREE.Shape.Utils.isClockWise(k))for(k=k.reverse(),e=0,f=l.length;e<f;e++)g=l[e],THREE.Shape.Utils.isClockWise(g)&&(l[e]=g.reverse());var m=THREE.Shape.Utils.triangulateShape(k,l);e=0;for(f=l.length;e<f;e++)g=l[e], 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,f,g,h=this.vertices.length;e=a.extractPoints(void 0!==b.curveSegments?b.curveSegments:12);var k=e.shape,l=e.holes;if(!THREE.Shape.Utils.isClockWise(k))for(k=k.reverse(),e=0,f=l.length;e<f;e++)g=l[e],THREE.Shape.Utils.isClockWise(g)&&(l[e]=g.reverse());var m=THREE.Shape.Utils.triangulateShape(k,l);e=0;for(f=l.length;e<f;e++)g=l[e],
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册