提交 5d1a9378 编写于 作者: M Mr.doob

Updated builds.

上级 a27e1baf
......@@ -13525,7 +13525,7 @@ Object.assign( THREE.AnimationClip, {
} else {
// ...assume skeletal animation
var boneName = '.bones[' + bones[ hierarchyTracks[h].parent ].name + ']';
var boneName = '.bones[' + bones[ h ].name + ']';
addNonemptyTrack(
THREE.VectorKeyframeTrack, boneName + '.position',
......@@ -25070,8 +25070,9 @@ THREE.WebGLRenderer = function ( parameters ) {
new THREE.MeshBasicMaterial( { depthTest: false, depthWrite: false } )
);
var backgroundBoxShader = THREE.ShaderLib[ 'cube' ];
var backgroundBoxSubdiv = capabilities.logarithmicDepthBuffer ? 4 : 1; // Workaround for logarithmicDepthBuffer #9235
var backgroundBoxMesh = new THREE.Mesh(
new THREE.BoxBufferGeometry( 5, 5, 5 ),
new THREE.BoxBufferGeometry( 5, 5, 5, backgroundBoxSubdiv, backgroundBoxSubdiv, backgroundBoxSubdiv ),
new THREE.ShaderMaterial( {
uniforms: backgroundBoxShader.uniforms,
vertexShader: backgroundBoxShader.vertexShader,
......@@ -35177,7 +35178,12 @@ THREE.CurvePath.prototype = Object.assign( Object.create( THREE.Curve.prototype
for ( var i = 0, curves = this.curves; i < curves.length; i ++ ) {
var curve = curves[ i ];
var pts = curve.getPoints( curve instanceof THREE.LineCurve ? 1 : divisions );
var resolution = curve instanceof THREE.EllipseCurve ? divisions * 2
: curve instanceof THREE.LineCurve ? 1
: curve instanceof THREE.SplineCurve ? divisions * curve.points.length
: divisions;
var pts = curve.getPoints( resolution );
for ( var j = 0; j < pts.length; j++ ) {
......
......@@ -106,13 +106,13 @@ b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.
-g*e;b[8]=d;b[1]=k+l*d;b[5]=a-m*d;b[9]=-c*g;b[2]=m-a*d;b[6]=l+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,l=d*h,m=d*e,b[0]=a+m*c,b[4]=l*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-l,b[6]=m+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,l=d*h,m=d*e,b[0]=a-m*c,b[4]=-f*e,b[8]=l+k*c,b[1]=k+l*c,b[5]=f*h,b[9]=m-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,l=c*h,m=c*e,b[0]=g*h,b[4]=l*d-k,b[8]=a*d+m,b[1]=g*e,b[5]=m*d+a,b[9]=k*d-l,b[2]=-d,b[6]=c*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},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,b=new THREE.Vector3,c=new THREE.Vector3);var g=this.elements;c.subVectors(d,e).normalize();0===c.lengthSq()&&(c.z=1);a.crossVectors(f,c).normalize();0===a.lengthSq()&&(c.z+=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)},premultiply:function(a){return this.multiplyMatrices(a,this)},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],q=c[2],r=c[6],s=c[10],v=c[14],t=c[3],u=c[7],C=c[11],c=c[15],
w=d[0],E=d[4],y=d[8],z=d[12],B=d[1],F=d[5],A=d[9],G=d[13],J=d[2],P=d[6],K=d[10],H=d[14],M=d[3],O=d[7],N=d[11],d=d[15];e[0]=f*w+g*B+h*J+k*M;e[4]=f*E+g*F+h*P+k*O;e[8]=f*y+g*A+h*K+k*N;e[12]=f*z+g*G+h*H+k*d;e[1]=l*w+m*B+p*J+n*M;e[5]=l*E+m*F+p*P+n*O;e[9]=l*y+m*A+p*K+n*N;e[13]=l*z+m*G+p*H+n*d;e[2]=q*w+r*B+s*J+v*M;e[6]=q*E+r*F+s*P+v*O;e[10]=q*y+r*A+s*K+v*N;e[14]=q*z+r*G+s*H+v*d;e[3]=t*w+u*B+C*J+c*M;e[7]=t*E+u*F+C*P+c*O;e[11]=t*y+u*A+C*K+c*N;e[15]=t*z+u*G+C*H+c*d;return this},multiplyToArray:function(a,b,
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)},premultiply:function(a){return this.multiplyMatrices(a,this)},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],q=c[2],r=c[6],s=c[10],v=c[14],t=c[3],u=c[7],A=c[11],c=c[15],
w=d[0],E=d[4],y=d[8],z=d[12],C=d[1],F=d[5],B=d[9],G=d[13],J=d[2],P=d[6],K=d[10],H=d[14],M=d[3],O=d[7],N=d[11],d=d[15];e[0]=f*w+g*C+h*J+k*M;e[4]=f*E+g*F+h*P+k*O;e[8]=f*y+g*B+h*K+k*N;e[12]=f*z+g*G+h*H+k*d;e[1]=l*w+m*C+p*J+n*M;e[5]=l*E+m*F+p*P+n*O;e[9]=l*y+m*B+p*K+n*N;e[13]=l*z+m*G+p*H+n*d;e[2]=q*w+r*C+s*J+v*M;e[6]=q*E+r*F+s*P+v*O;e[10]=q*y+r*B+s*K+v*N;e[14]=q*z+r*G+s*H+v*d;e[3]=t*w+u*C+A*J+c*M;e[7]=t*E+u*F+A*P+c*O;e[11]=t*y+u*B+A*K+c*N;e[15]=t*z+u*G+A*H+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},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}}(),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*m-e*g*p+c*k*p+d*g*n-c*h*n)+a[7]*(+b*h*n-b*k*p+e*f*p-d*f*n+d*k*l-e*h*l)+a[11]*(+b*k*m-b*g*n-e*f*m+c*f*n+e*g*l-c*k*l)+a[15]*(-d*g*l-b*h*m+b*g*p+d*f*m-c*f*p+c*h*l)},transpose:function(){var a=this.elements,b;b=a[1];a[1]=a[4];a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13];a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix3: .flattenToArrayOffset is deprecated - just use .toArray instead.");
return this.toArray(a,b)},getPosition:function(){var a;return function(){void 0===a&&(a=new THREE.Vector3);console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");return a.setFromMatrixColumn(this,3)}}(),setPosition:function(a){var b=this.elements;b[12]=a.x;b[13]=a.y;b[14]=a.z;return this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[1],g=d[2],h=d[3],k=d[4],l=d[5],m=d[6],p=d[7],n=d[8],q=d[9],r=d[10],s=d[11],v=d[12],
t=d[13],u=d[14],d=d[15],C=q*u*p-t*r*p+t*m*s-l*u*s-q*m*d+l*r*d,w=v*r*p-n*u*p-v*m*s+k*u*s+n*m*d-k*r*d,E=n*t*p-v*q*p+v*l*s-k*t*s-n*l*d+k*q*d,y=v*q*m-n*t*m-v*l*r+k*t*r+n*l*u-k*q*u,z=e*C+f*w+g*E+h*y;if(0===z){if(b)throw Error("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");console.warn("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");return this.identity()}z=1/z;c[0]=C*z;c[1]=(t*r*h-q*u*h-t*g*s+f*u*s+q*g*d-f*r*d)*z;c[2]=(l*u*h-t*m*h+t*g*p-f*u*p-l*g*d+f*m*d)*z;c[3]=
t=d[13],u=d[14],d=d[15],A=q*u*p-t*r*p+t*m*s-l*u*s-q*m*d+l*r*d,w=v*r*p-n*u*p-v*m*s+k*u*s+n*m*d-k*r*d,E=n*t*p-v*q*p+v*l*s-k*t*s-n*l*d+k*q*d,y=v*q*m-n*t*m-v*l*r+k*t*r+n*l*u-k*q*u,z=e*A+f*w+g*E+h*y;if(0===z){if(b)throw Error("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");console.warn("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");return this.identity()}z=1/z;c[0]=A*z;c[1]=(t*r*h-q*u*h-t*g*s+f*u*s+q*g*d-f*r*d)*z;c[2]=(l*u*h-t*m*h+t*g*p-f*u*p-l*g*d+f*m*d)*z;c[3]=
(q*m*h-l*r*h-q*g*p+f*r*p+l*g*s-f*m*s)*z;c[4]=w*z;c[5]=(n*u*h-v*r*h+v*g*s-e*u*s-n*g*d+e*r*d)*z;c[6]=(v*m*h-k*u*h-v*g*p+e*u*p+k*g*d-e*m*d)*z;c[7]=(k*r*h-n*m*h+n*g*p-e*r*p-k*g*s+e*m*s)*z;c[8]=E*z;c[9]=(v*q*h-n*t*h-v*f*s+e*t*s+n*f*d-e*q*d)*z;c[10]=(k*t*h-v*l*h+v*f*p-e*t*p-k*f*d+e*l*d)*z;c[11]=(n*l*h-k*q*h-n*f*p+e*q*p+k*f*s-e*l*s)*z;c[12]=y*z;c[13]=(n*t*g-v*q*g+v*f*r-e*t*r-n*f*u+e*q*u)*z;c[14]=(v*l*g-k*t*g-v*f*m+e*t*m+k*f*u-e*l*u)*z;c[15]=(k*q*g-n*l*g+n*f*m-e*q*m-k*f*r+e*l*r)*z;return this},scale:function(a){var b=
this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c;b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10]))},makeTranslation:function(a,b,c){this.set(1,0,0,a,0,1,0,b,0,0,1,c,0,0,0,1);return this},makeRotationX:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1);
return this},makeRotationY:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1);return this},makeRotationZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,k=e*f,l=e*g;this.set(k*f+c,k*g-d*h,k*h+d*g,0,k*g+d*h,l*g+c,l*h-d*f,0,k*h-d*g,l*h+d*f,e*h*h+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,
......@@ -224,14 +224,14 @@ this.merge(a.geometry,a.matrix))},mergeVertices:function(){var a={},b=[],c=[],d,
1),c=0,g=this.faceVertexUvs.length;c<g;c++)this.faceVertexUvs[c].splice(e,1);f=this.vertices.length-b.length;this.vertices=b;return f},sortFacesByMaterialIndex:function(){for(var a=this.faces,b=a.length,c=0;c<b;c++)a[c]._id=c;a.sort(function(a,b){return a.materialIndex-b.materialIndex});var d=this.faceVertexUvs[0],e=this.faceVertexUvs[1],f,g;d&&d.length===b&&(f=[]);e&&e.length===b&&(g=[]);for(c=0;c<b;c++){var h=a[c]._id;f&&f.push(d[h]);g&&g.push(e[h])}f&&(this.faceVertexUvs[0]=f);g&&(this.faceVertexUvs[1]=
g)},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==l[b])return l[b];l[b]=k.length/3;k.push(a.x,a.y,a.z);return l[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==p[b])return p[b];p[b]=m.length;m.push(a.getHex());return p[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==q[b])return q[b];q[b]=n.length/2;n.push(a.x,a.y);return q[b]}var e={metadata:{version:4.4,type:"Geometry",
generator:"Geometry.toJSON"}};e.uuid=this.uuid;e.type=this.type;""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!==f[g]&&(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}var h=[],k=[],l={},m=[],p={},n=[],q={};for(g=0;g<this.faces.length;g++){var r=this.faces[g],s=void 0!==this.faceVertexUvs[0][g],v=0<r.normal.length(),t=0<r.vertexNormals.length,u=1!==r.color.r||1!==r.color.g||1!==r.color.b,
C=0<r.vertexColors.length,w=0,w=a(w,0,0),w=a(w,1,!0),w=a(w,2,!1),w=a(w,3,s),w=a(w,4,v),w=a(w,5,t),w=a(w,6,u),w=a(w,7,C);h.push(w);h.push(r.a,r.b,r.c);h.push(r.materialIndex);s&&(s=this.faceVertexUvs[0][g],h.push(d(s[0]),d(s[1]),d(s[2])));v&&h.push(b(r.normal));t&&(v=r.vertexNormals,h.push(b(v[0]),b(v[1]),b(v[2])));u&&h.push(c(r.color));C&&(r=r.vertexColors,h.push(c(r[0]),c(r[1]),c(r[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<m.length&&(e.data.colors=m);0<n.length&&(e.data.uvs=[n]);e.data.faces=
A=0<r.vertexColors.length,w=0,w=a(w,0,0),w=a(w,1,!0),w=a(w,2,!1),w=a(w,3,s),w=a(w,4,v),w=a(w,5,t),w=a(w,6,u),w=a(w,7,A);h.push(w);h.push(r.a,r.b,r.c);h.push(r.materialIndex);s&&(s=this.faceVertexUvs[0][g],h.push(d(s[0]),d(s[1]),d(s[2])));v&&h.push(b(r.normal));t&&(v=r.vertexNormals,h.push(b(v[0]),b(v[1]),b(v[2])));u&&h.push(c(r.color));A&&(r=r.vertexColors,h.push(c(r[0]),c(r[1]),c(r[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<m.length&&(e.data.colors=m);0<n.length&&(e.data.uvs=[n]);e.data.faces=
h;return e},clone:function(){return(new THREE.Geometry).copy(this)},copy:function(a){this.vertices=[];this.faces=[];this.faceVertexUvs=[[]];for(var b=a.vertices,c=0,d=b.length;c<d;c++)this.vertices.push(b[c].clone());b=a.faces;c=0;for(d=b.length;c<d;c++)this.faces.push(b[c].clone());c=0;for(d=a.faceVertexUvs.length;c<d;c++){b=a.faceVertexUvs[c];void 0===this.faceVertexUvs[c]&&(this.faceVertexUvs[c]=[]);for(var e=0,f=b.length;e<f;e++){for(var g=b[e],h=[],k=0,l=g.length;k<l;k++)h.push(g[k].clone());
this.faceVertexUvs[c].push(h)}}return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});THREE.GeometryIdCount=0;
THREE.DirectGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="DirectGeometry";this.indices=[];this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1};
Object.assign(THREE.DirectGeometry.prototype,THREE.EventDispatcher.prototype,{computeBoundingBox:THREE.Geometry.prototype.computeBoundingBox,computeBoundingSphere:THREE.Geometry.prototype.computeBoundingSphere,computeFaceNormals:function(){console.warn("THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.")},computeVertexNormals:function(){console.warn("THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.")},computeGroups:function(a){var b,
c=[],d;a=a.faces;for(var e=0;e<a.length;e++){var f=a[e];f.materialIndex!==d&&(d=f.materialIndex,void 0!==b&&(b.count=3*e-b.start,c.push(b)),b={start:3*e,materialIndex:d})}void 0!==b&&(b.count=3*e-b.start,c.push(b));this.groups=c},fromGeometry:function(a){var b=a.faces,c=a.vertices,d=a.faceVertexUvs,e=d[0]&&0<d[0].length,f=d[1]&&0<d[1].length,g=a.morphTargets,h=g.length,k;if(0<h){k=[];for(var l=0;l<h;l++)k[l]=[];this.morphTargets.position=k}var m=a.morphNormals,p=m.length,n;if(0<p){n=[];for(l=0;l<
p;l++)n[l]=[];this.morphTargets.normal=n}for(var q=a.skinIndices,r=a.skinWeights,s=q.length===c.length,v=r.length===c.length,l=0;l<b.length;l++){var t=b[l];this.vertices.push(c[t.a],c[t.b],c[t.c]);var u=t.vertexNormals;3===u.length?this.normals.push(u[0],u[1],u[2]):(u=t.normal,this.normals.push(u,u,u));u=t.vertexColors;3===u.length?this.colors.push(u[0],u[1],u[2]):(u=t.color,this.colors.push(u,u,u));!0===e&&(u=d[0][l],void 0!==u?this.uvs.push(u[0],u[1],u[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",
l),this.uvs.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));!0===f&&(u=d[1][l],void 0!==u?this.uvs2.push(u[0],u[1],u[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",l),this.uvs2.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));for(u=0;u<h;u++){var C=g[u].vertices;k[u].push(C[t.a],C[t.b],C[t.c])}for(u=0;u<p;u++)C=m[u].vertexNormals[l],n[u].push(C.a,C.b,C.c);s&&this.skinIndices.push(q[t.a],q[t.b],q[t.c]);v&&this.skinWeights.push(r[t.a],r[t.b],
l),this.uvs.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));!0===f&&(u=d[1][l],void 0!==u?this.uvs2.push(u[0],u[1],u[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",l),this.uvs2.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));for(u=0;u<h;u++){var A=g[u].vertices;k[u].push(A[t.a],A[t.b],A[t.c])}for(u=0;u<p;u++)A=m[u].vertexNormals[l],n[u].push(A.a,A.b,A.c);s&&this.skinIndices.push(q[t.a],q[t.b],q[t.c]);v&&this.skinWeights.push(r[t.a],r[t.b],
r[t.c])}this.computeGroups(a);this.verticesNeedUpdate=a.verticesNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});
THREE.BufferGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity}};
Object.assign(THREE.BufferGeometry.prototype,THREE.EventDispatcher.prototype,{getIndex:function(){return this.index},setIndex:function(a){this.index=a},addAttribute:function(a,b,c){if(!1===b instanceof THREE.BufferAttribute&&!1===b instanceof THREE.InterleavedBufferAttribute)console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.addAttribute(a,new THREE.BufferAttribute(b,c));else if("index"===a)console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),
......@@ -274,7 +274,7 @@ Object.assign(THREE.AnimationClip,{parse:function(a){for(var b=[],c=a.tracks,d=1
e,g,(g+1)%e);k.push(0,1,0);var l=THREE.AnimationUtils.getKeyframeOrder(h),h=THREE.AnimationUtils.sortedArray(h,1,l),k=THREE.AnimationUtils.sortedArray(k,1,l);d||0!==h[0]||(h.push(e),k.push(k[0]));f.push((new THREE.NumberKeyframeTrack(".morphTargetInfluences["+b[g].name+"]",h,k)).scale(1/c))}return new THREE.AnimationClip(a,-1,f)},findByName:function(a,b){var c=a;Array.isArray(a)||(c=a.geometry&&a.geometry.animations||a.animations);for(var d=0;d<c.length;d++)if(c[d].name===b)return c[d];return null},
CreateClipsFromMorphTargetSequences:function(a,b,c){for(var d={},e=/^([\w-]*?)([\d]+)$/,f=0,g=a.length;f<g;f++){var h=a[f],k=h.name.match(e);if(k&&1<k.length){var l=k[1];(k=d[l])||(d[l]=k=[]);k.push(h)}}a=[];for(l in d)a.push(THREE.AnimationClip.CreateFromMorphTargetSequence(l,d[l],b,c));return a},parseAnimation:function(a,b,c){if(!a)return console.error(" no animation in JSONLoader data"),null;c=function(a,b,c,d,e){if(0!==c.length){var f=[],g=[];THREE.AnimationUtils.flattenJSON(c,f,g,d);0!==f.length&&
e.push(new a(b,f,g))}};var d=[],e=a.name||"default",f=a.length||-1,g=a.fps||30;a=a.hierarchy||[];for(var h=0;h<a.length;h++){var k=a[h].keys;if(k&&0!==k.length)if(k[0].morphTargets){for(var f={},l=0;l<k.length;l++)if(k[l].morphTargets)for(var m=0;m<k[l].morphTargets.length;m++)f[k[l].morphTargets[m]]=-1;for(var p in f){for(var n=[],q=[],m=0;m!==k[l].morphTargets.length;++m){var r=k[l];n.push(r.time);q.push(r.morphTarget===p?1:0)}d.push(new THREE.NumberKeyframeTrack(".morphTargetInfluence["+p+"]",
n,q))}f=f.length*(g||1)}else l=".bones["+b[a[h].parent].name+"]",c(THREE.VectorKeyframeTrack,l+".position",k,"pos",d),c(THREE.QuaternionKeyframeTrack,l+".quaternion",k,"rot",d),c(THREE.VectorKeyframeTrack,l+".scale",k,"scl",d)}return 0===d.length?null:new THREE.AnimationClip(e,f,d)}});THREE.AnimationMixer=function(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1};
n,q))}f=f.length*(g||1)}else l=".bones["+b[h].name+"]",c(THREE.VectorKeyframeTrack,l+".position",k,"pos",d),c(THREE.QuaternionKeyframeTrack,l+".quaternion",k,"rot",d),c(THREE.VectorKeyframeTrack,l+".scale",k,"scl",d)}return 0===d.length?null:new THREE.AnimationClip(e,f,d)}});THREE.AnimationMixer=function(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1};
Object.assign(THREE.AnimationMixer.prototype,THREE.EventDispatcher.prototype,{clipAction:function(a,b){var c=b||this._root,d=c.uuid,e="string"===typeof a?THREE.AnimationClip.findByName(c,a):a,c=null!==e?e.uuid:a,f=this._actionsByClip[c],g=null;if(void 0!==f){g=f.actionByRoot[d];if(void 0!==g)return g;g=f.knownActions[0];null===e&&(e=g._clip)}if(null===e)return null;e=new THREE.AnimationMixer._Action(this,e,b);this._bindAction(e,g);this._addInactiveAction(e,c,d);return e},existingAction:function(a,
b){var c=b||this._root,d=c.uuid,c="string"===typeof a?THREE.AnimationClip.findByName(c,a):a,c=this._actionsByClip[c?c.uuid:a];return void 0!==c?c.actionByRoot[d]||null:null},stopAllAction:function(){for(var a=this._actions,b=this._nActiveActions,c=this._bindings,d=this._nActiveBindings,e=this._nActiveBindings=this._nActiveActions=0;e!==b;++e)a[e].reset();for(e=0;e!==d;++e)c[e].useCount=0;return this},update:function(a){a*=this.timeScale;for(var b=this._actions,c=this._nActiveActions,d=this.time+=
a,e=Math.sign(a),f=this._accuIndex^=1,g=0;g!==c;++g){var h=b[g];h.enabled&&h._update(d,a,e,f)}a=this._bindings;b=this._nActiveBindings;for(g=0;g!==b;++g)a[g].apply(f);return this},getRoot:function(){return this._root},uncacheClip:function(a){var b=this._actions;a=a.uuid;var c=this._actionsByClip,d=c[a];if(void 0!==d){for(var d=d.knownActions,e=0,f=d.length;e!==f;++e){var g=d[e];this._deactivateAction(g);var h=g._cacheIndex,k=b[b.length-1];g._cacheIndex=null;g._byClipCacheIndex=null;k._cacheIndex=
......@@ -389,10 +389,10 @@ THREE.ImageLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingMana
Object.assign(THREE.ImageLoader.prototype,{load:function(a,b,c,d){var e=this,f=document.createElementNS("http://www.w3.org/1999/xhtml","img");f.onload=function(){URL.revokeObjectURL(f.src);b&&b(f);e.manager.itemEnd(a)};if(0===a.indexOf("data:"))f.src=a;else{var g=new THREE.XHRLoader;g.setPath(this.path);g.setResponseType("blob");g.load(a,function(a){f.src=URL.createObjectURL(a)},c,d)}e.manager.itemStart(a);return f},setCrossOrigin:function(a){this.crossOrigin=a;return this},setPath:function(a){this.path=
a;return this}});THREE.JSONLoader=function(a){"boolean"===typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0);this.manager=void 0!==a?a:THREE.DefaultLoadingManager;this.withCredentials=!1};
Object.assign(THREE.JSONLoader.prototype,{load:function(a,b,c,d){var e=this,f=this.texturePath&&"string"===typeof this.texturePath?this.texturePath:THREE.Loader.prototype.extractUrlBase(a),g=new THREE.XHRLoader(this.manager);g.setWithCredentials(this.withCredentials);g.load(a,function(c){c=JSON.parse(c);var d=c.metadata;if(void 0!==d&&(d=d.type,void 0!==d)){if("object"===d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.ObjectLoader instead.");return}if("scene"===
d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,f);b(c.geometry,c.materials)},c,d)},setTexturePath:function(a){this.texturePath=a},parse:function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1;(function(b){var d,g,h,k,l,m,p,n,q,r,s,v,t,u=a.faces;m=a.vertices;var C=a.normals,w=a.colors,E=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&E++;for(d=0;d<E;d++)c.faceVertexUvs[d]=[]}k=0;for(l=m.length;k<
d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,f);b(c.geometry,c.materials)},c,d)},setTexturePath:function(a){this.texturePath=a},parse:function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1;(function(b){var d,g,h,k,l,m,p,n,q,r,s,v,t,u=a.faces;m=a.vertices;var A=a.normals,w=a.colors,E=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&E++;for(d=0;d<E;d++)c.faceVertexUvs[d]=[]}k=0;for(l=m.length;k<
l;)d=new THREE.Vector3,d.x=m[k++]*b,d.y=m[k++]*b,d.z=m[k++]*b,c.vertices.push(d);k=0;for(l=u.length;k<l;)if(b=u[k++],q=b&1,h=b&2,d=b&8,p=b&16,r=b&32,m=b&64,b&=128,q){q=new THREE.Face3;q.a=u[k];q.b=u[k+1];q.c=u[k+3];s=new THREE.Face3;s.a=u[k+1];s.b=u[k+2];s.c=u[k+3];k+=4;h&&(h=u[k++],q.materialIndex=h,s.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<E;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],c.faceVertexUvs[d][h+1]=[],g=0;4>g;g++)n=u[k++],t=v[2*n],n=v[2*n+1],t=new THREE.Vector2(t,n),2!==g&&c.faceVertexUvs[d][h].push(t),
0!==g&&c.faceVertexUvs[d][h+1].push(t);p&&(p=3*u[k++],q.normal.set(C[p++],C[p++],C[p]),s.normal.copy(q.normal));if(r)for(d=0;4>d;d++)p=3*u[k++],r=new THREE.Vector3(C[p++],C[p++],C[p]),2!==d&&q.vertexNormals.push(r),0!==d&&s.vertexNormals.push(r);m&&(m=u[k++],m=w[m],q.color.setHex(m),s.color.setHex(m));if(b)for(d=0;4>d;d++)m=u[k++],m=w[m],2!==d&&q.vertexColors.push(new THREE.Color(m)),0!==d&&s.vertexColors.push(new THREE.Color(m));c.faces.push(q);c.faces.push(s)}else{q=new THREE.Face3;q.a=u[k++];q.b=
u[k++];q.c=u[k++];h&&(h=u[k++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<E;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],g=0;3>g;g++)n=u[k++],t=v[2*n],n=v[2*n+1],t=new THREE.Vector2(t,n),c.faceVertexUvs[d][h].push(t);p&&(p=3*u[k++],q.normal.set(C[p++],C[p++],C[p]));if(r)for(d=0;3>d;d++)p=3*u[k++],r=new THREE.Vector3(C[p++],C[p++],C[p]),q.vertexNormals.push(r);m&&(m=u[k++],q.color.setHex(w[m]));if(b)for(d=0;3>d;d++)m=u[k++],q.vertexColors.push(new THREE.Color(w[m]));c.faces.push(q)}})(d);(function(){var b=
0!==g&&c.faceVertexUvs[d][h+1].push(t);p&&(p=3*u[k++],q.normal.set(A[p++],A[p++],A[p]),s.normal.copy(q.normal));if(r)for(d=0;4>d;d++)p=3*u[k++],r=new THREE.Vector3(A[p++],A[p++],A[p]),2!==d&&q.vertexNormals.push(r),0!==d&&s.vertexNormals.push(r);m&&(m=u[k++],m=w[m],q.color.setHex(m),s.color.setHex(m));if(b)for(d=0;4>d;d++)m=u[k++],m=w[m],2!==d&&q.vertexColors.push(new THREE.Color(m)),0!==d&&s.vertexColors.push(new THREE.Color(m));c.faces.push(q);c.faces.push(s)}else{q=new THREE.Face3;q.a=u[k++];q.b=
u[k++];q.c=u[k++];h&&(h=u[k++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<E;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],g=0;3>g;g++)n=u[k++],t=v[2*n],n=v[2*n+1],t=new THREE.Vector2(t,n),c.faceVertexUvs[d][h].push(t);p&&(p=3*u[k++],q.normal.set(A[p++],A[p++],A[p]));if(r)for(d=0;3>d;d++)p=3*u[k++],r=new THREE.Vector3(A[p++],A[p++],A[p]),q.vertexNormals.push(r);m&&(m=u[k++],q.color.setHex(w[m]));if(b)for(d=0;3>d;d++)m=u[k++],q.vertexColors.push(new THREE.Color(w[m]));c.faces.push(q)}})(d);(function(){var b=
void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,g=a.skinWeights.length;d<g;d+=b)c.skinWeights.push(new THREE.Vector4(a.skinWeights[d],1<b?a.skinWeights[d+1]:0,2<b?a.skinWeights[d+2]:0,3<b?a.skinWeights[d+3]:0));if(a.skinIndices)for(d=0,g=a.skinIndices.length;d<g;d+=b)c.skinIndices.push(new THREE.Vector4(a.skinIndices[d],1<b?a.skinIndices[d+1]:0,2<b?a.skinIndices[d+2]:0,3<b?a.skinIndices[d+3]:0));c.bones=a.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==
c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.")})();(function(b){if(void 0!==a.morphTargets)for(var d=0,g=a.morphTargets.length;d<g;d++){c.morphTargets[d]={};c.morphTargets[d].name=a.morphTargets[d].name;c.morphTargets[d].vertices=[];for(var h=c.morphTargets[d].vertices,k=a.morphTargets[d].vertices,l=0,m=k.length;l<
m;l+=3){var p=new THREE.Vector3;p.x=k[l]*b;p.y=k[l+1]*b;p.z=k[l+2]*b;h.push(p)}}if(void 0!==a.morphColors&&0<a.morphColors.length)for(console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.'),b=c.faces,h=a.morphColors[0].colors,d=0,g=b.length;d<g;d++)b[d].color.fromArray(h,3*d)})(d);(function(){var b=[],d=[];void 0!==a.animation&&d.push(a.animation);void 0!==a.animations&&(a.animations.length?d=d.concat(a.animations):d.push(a.animations));for(var g=0;g<d.length;g++){var h=
......@@ -502,9 +502,9 @@ THREE.Mesh.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{cons
this.morphTargetDictionary[this.geometry.morphTargets[a].name]=a}},getMorphTargetIndexByName:function(a){if(void 0!==this.morphTargetDictionary[a])return this.morphTargetDictionary[a];console.warn("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0.");return 0},raycast:function(){function a(a,b,c,d,e,g,f){THREE.Triangle.barycoordFromPoint(a,b,c,d,s);e.multiplyScalar(s.x);g.multiplyScalar(s.y);f.multiplyScalar(s.z);e.add(g).add(f);return e.clone()}function b(a,b,c,
d,e,g,f){var h=a.material;if(null===(h.side===THREE.BackSide?c.intersectTriangle(g,e,d,!0,f):c.intersectTriangle(d,e,g,h.side!==THREE.DoubleSide,f)))return null;t.copy(f);t.applyMatrix4(a.matrixWorld);c=b.ray.origin.distanceTo(t);return c<b.near||c>b.far?null:{distance:c,point:t.clone(),object:a}}function c(c,d,e,f,l,m,p,s){g.fromArray(f,3*m);h.fromArray(f,3*p);k.fromArray(f,3*s);if(c=b(c,d,e,g,h,k,v))l&&(n.fromArray(l,2*m),q.fromArray(l,2*p),r.fromArray(l,2*s),c.uv=a(v,g,h,k,n,q,r)),c.face=new THREE.Face3(m,
p,s,THREE.Triangle.normal(g,h,k)),c.faceIndex=m;return c}var d=new THREE.Matrix4,e=new THREE.Ray,f=new THREE.Sphere,g=new THREE.Vector3,h=new THREE.Vector3,k=new THREE.Vector3,l=new THREE.Vector3,m=new THREE.Vector3,p=new THREE.Vector3,n=new THREE.Vector2,q=new THREE.Vector2,r=new THREE.Vector2,s=new THREE.Vector3,v=new THREE.Vector3,t=new THREE.Vector3;return function(u,s){var w=this.geometry,t=this.material,y=this.matrixWorld;if(void 0!==t&&(null===w.boundingSphere&&w.computeBoundingSphere(),f.copy(w.boundingSphere),
f.applyMatrix4(y),!1!==u.ray.intersectsSphere(f)&&(d.getInverse(y),e.copy(u.ray).applyMatrix4(d),null===w.boundingBox||!1!==e.intersectsBox(w.boundingBox)))){var z,B;if(w instanceof THREE.BufferGeometry){var F,A,t=w.index,y=w.attributes,w=y.position.array;void 0!==y.uv&&(z=y.uv.array);if(null!==t)for(var y=t.array,G=0,J=y.length;G<J;G+=3){if(t=y[G],F=y[G+1],A=y[G+2],B=c(this,u,e,w,z,t,F,A))B.faceIndex=Math.floor(G/3),s.push(B)}else for(G=0,J=w.length;G<J;G+=9)if(t=G/3,F=t+1,A=t+2,B=c(this,u,e,w,z,
t,F,A))B.index=t,s.push(B)}else if(w instanceof THREE.Geometry){var P,K,y=t instanceof THREE.MultiMaterial,G=!0===y?t.materials:null,J=w.vertices;F=w.faces;A=w.faceVertexUvs[0];0<A.length&&(z=A);for(var H=0,M=F.length;H<M;H++){var O=F[H];B=!0===y?G[O.materialIndex]:t;if(void 0!==B){A=J[O.a];P=J[O.b];K=J[O.c];if(!0===B.morphTargets){B=w.morphTargets;var N=this.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var Q=0,L=B.length;Q<L;Q++){var D=N[Q];if(0!==D){var I=B[Q].vertices;g.addScaledVector(l.subVectors(I[O.a],
A),D);h.addScaledVector(m.subVectors(I[O.b],P),D);k.addScaledVector(p.subVectors(I[O.c],K),D)}}g.add(A);h.add(P);k.add(K);A=g;P=h;K=k}if(B=b(this,u,e,A,P,K,v))z&&(N=z[H],n.copy(N[0]),q.copy(N[1]),r.copy(N[2]),B.uv=a(v,A,P,K,n,q,r)),B.face=O,B.faceIndex=H,s.push(B)}}}}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});THREE.Bone=function(a){THREE.Object3D.call(this);this.type="Bone";this.skin=a};
f.applyMatrix4(y),!1!==u.ray.intersectsSphere(f)&&(d.getInverse(y),e.copy(u.ray).applyMatrix4(d),null===w.boundingBox||!1!==e.intersectsBox(w.boundingBox)))){var z,C;if(w instanceof THREE.BufferGeometry){var F,B,t=w.index,y=w.attributes,w=y.position.array;void 0!==y.uv&&(z=y.uv.array);if(null!==t)for(var y=t.array,G=0,J=y.length;G<J;G+=3){if(t=y[G],F=y[G+1],B=y[G+2],C=c(this,u,e,w,z,t,F,B))C.faceIndex=Math.floor(G/3),s.push(C)}else for(G=0,J=w.length;G<J;G+=9)if(t=G/3,F=t+1,B=t+2,C=c(this,u,e,w,z,
t,F,B))C.index=t,s.push(C)}else if(w instanceof THREE.Geometry){var P,K,y=t instanceof THREE.MultiMaterial,G=!0===y?t.materials:null,J=w.vertices;F=w.faces;B=w.faceVertexUvs[0];0<B.length&&(z=B);for(var H=0,M=F.length;H<M;H++){var O=F[H];C=!0===y?G[O.materialIndex]:t;if(void 0!==C){B=J[O.a];P=J[O.b];K=J[O.c];if(!0===C.morphTargets){C=w.morphTargets;var N=this.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var Q=0,L=C.length;Q<L;Q++){var D=N[Q];if(0!==D){var I=C[Q].vertices;g.addScaledVector(l.subVectors(I[O.a],
B),D);h.addScaledVector(m.subVectors(I[O.b],P),D);k.addScaledVector(p.subVectors(I[O.c],K),D)}}g.add(B);h.add(P);k.add(K);B=g;P=h;K=k}if(C=b(this,u,e,B,P,K,v))z&&(N=z[H],n.copy(N[0]),q.copy(N[1]),r.copy(N[2]),C.uv=a(v,B,P,K,n,q,r)),C.face=O,C.faceIndex=H,s.push(C)}}}}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});THREE.Bone=function(a){THREE.Object3D.call(this);this.type="Bone";this.skin=a};
THREE.Bone.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.Bone,copy:function(a){THREE.Object3D.prototype.copy.call(this,a);this.skin=a.skin;return this}});
THREE.Skeleton=function(a,b,c){this.useVertexTexture=void 0!==c?c:!0;this.identityMatrix=new THREE.Matrix4;a=a||[];this.bones=a.slice(0);this.useVertexTexture?(a=Math.sqrt(4*this.bones.length),a=THREE.Math.nextPowerOfTwo(Math.ceil(a)),this.boneTextureHeight=this.boneTextureWidth=a=Math.max(a,4),this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new THREE.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,THREE.RGBAFormat,THREE.FloatType)):
this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[],b=0,a=this.bones.length;b<a;b++)this.boneInverses.push(new THREE.Matrix4)};
......@@ -594,19 +594,19 @@ standard:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.Uni
fragmentShader:THREE.ShaderChunk.meshphysical_frag},points:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.points,THREE.UniformsLib.fog]),vertexShader:THREE.ShaderChunk.points_vert,fragmentShader:THREE.ShaderChunk.points_frag},dashed:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:THREE.ShaderChunk.linedashed_vert,fragmentShader:THREE.ShaderChunk.linedashed_frag},depth:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,
THREE.UniformsLib.displacementmap]),vertexShader:THREE.ShaderChunk.depth_vert,fragmentShader:THREE.ShaderChunk.depth_frag},normal:{uniforms:{opacity:{value:1}},vertexShader:THREE.ShaderChunk.normal_vert,fragmentShader:THREE.ShaderChunk.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:THREE.ShaderChunk.cube_vert,fragmentShader:THREE.ShaderChunk.cube_frag},equirect:{uniforms:{tEquirect:{value:null},tFlip:{value:-1}},vertexShader:THREE.ShaderChunk.equirect_vert,
fragmentShader:THREE.ShaderChunk.equirect_frag},distanceRGBA:{uniforms:{lightPos:{value:new THREE.Vector3}},vertexShader:THREE.ShaderChunk.distanceRGBA_vert,fragmentShader:THREE.ShaderChunk.distanceRGBA_frag}};THREE.ShaderLib.physical={uniforms:THREE.UniformsUtils.merge([THREE.ShaderLib.standard.uniforms,{clearCoat:{value:0},clearCoatRoughness:{value:0}}]),vertexShader:THREE.ShaderChunk.meshphysical_vert,fragmentShader:THREE.ShaderChunk.meshphysical_frag};
THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===B&&(a*=d,b*=d,c*=d);R.clearColor(a,b,c,d)}function c(){R.init();R.scissor(X.copy(ua).multiplyScalar($));R.viewport(ba.copy(ma).multiplyScalar($));b(V.r,V.g,V.b,Y)}function d(){T=Q=null;aa="";I=-1;R.reset()}function e(a){a.preventDefault();d();c();Z.clear()}function f(a){a=a.target;a.removeEventListener("dispose",f);g(a);Z.delete(a)}function g(a){var b=Z.get(a).program;a.program=void 0;void 0!==b&&na.releaseProgram(b)}function h(a,b){return Math.abs(b[0])-
THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===C&&(a*=d,b*=d,c*=d);R.clearColor(a,b,c,d)}function c(){R.init();R.scissor(X.copy(ua).multiplyScalar($));R.viewport(ca.copy(ma).multiplyScalar($));b(V.r,V.g,V.b,Y)}function d(){T=Q=null;aa="";I=-1;R.reset()}function e(a){a.preventDefault();d();c();Z.clear()}function f(a){a=a.target;a.removeEventListener("dispose",f);g(a);Z.delete(a)}function g(a){var b=Z.get(a).program;a.program=void 0;void 0!==b&&na.releaseProgram(b)}function h(a,b){return Math.abs(b[0])-
Math.abs(a[0])}function k(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.program&&b.material.program&&a.material.program!==b.material.program?a.material.program.id-b.material.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function l(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 m(a,b,c,d,e){var g;c.transparent?
(d=P,g=++K):(d=G,g=++J);g=d[g];void 0!==g?(g.id=a.id,g.object=a,g.geometry=b,g.material=c,g.z=W.z,g.group=e):(g={id:a.id,object:a,geometry:b,material:c,z:W.z,group:e},d.push(g))}function p(a){if(!wa.intersectsSphere(a))return!1;var b=ca.numPlanes;if(0===b)return!0;var c=N.clippingPlanes,d=a.center;a=-a.radius;var e=0;do if(c[e].distanceToPoint(d)<a)return!1;while(++e!==b);return!0}function n(a,b){if(!1!==a.visible){if(a.layers.test(b.layers))if(a instanceof THREE.Light)A.push(a);else if(a instanceof
(d=P,g=++K):(d=G,g=++J);g=d[g];void 0!==g?(g.id=a.id,g.object=a,g.geometry=b,g.material=c,g.z=W.z,g.group=e):(g={id:a.id,object:a,geometry:b,material:c,z:W.z,group:e},d.push(g))}function p(a){if(!wa.intersectsSphere(a))return!1;var b=da.numPlanes;if(0===b)return!0;var c=N.clippingPlanes,d=a.center;a=-a.radius;var e=0;do if(c[e].distanceToPoint(d)<a)return!1;while(++e!==b);return!0}function n(a,b){if(!1!==a.visible){if(a.layers.test(b.layers))if(a instanceof THREE.Light)B.push(a);else if(a instanceof
THREE.Sprite){var c;(c=!1===a.frustumCulled)||(ha.center.set(0,0,0),ha.radius=.7071067811865476,ha.applyMatrix4(a.matrixWorld),c=!0===p(ha));c&&M.push(a)}else if(a instanceof THREE.LensFlare)O.push(a);else if(a instanceof THREE.ImmediateRenderObject)!0===N.sortObjects&&(W.setFromMatrixPosition(a.matrixWorld),W.applyProjection(pa)),m(a,null,a.material,W.z,null);else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),
(c=!1===a.frustumCulled)||(c=a.geometry,null===c.boundingSphere&&c.computeBoundingSphere(),ha.copy(c.boundingSphere).applyMatrix4(a.matrixWorld),c=!0===p(ha)),c){var d=a.material;if(!0===d.visible)if(!0===N.sortObjects&&(W.setFromMatrixPosition(a.matrixWorld),W.applyProjection(pa)),c=ea.update(a),d instanceof THREE.MultiMaterial)for(var e=c.groups,g=d.materials,d=0,f=e.length;d<f;d++){var h=e[d],k=g[h.materialIndex];!0===k.visible&&m(a,c,k,W.z,h)}else m(a,c,d,W.z,null)}c=a.children;d=0;for(f=c.length;d<
f;d++)n(c[d],b)}}function q(a,b,c,d){for(var e=0,g=a.length;e<g;e++){var f=a[e],h=f.object,k=f.geometry,l=void 0===d?f.material:d,f=f.group;h.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,h.matrixWorld);h.normalMatrix.getNormalMatrix(h.modelViewMatrix);if(h instanceof THREE.ImmediateRenderObject){r(l);var n=s(b,c,l,h);aa="";h.render(function(a){N.renderBufferImmediate(a,n,l)})}else N.renderBufferDirect(b,c,k,l,h,f)}}function r(a){a.side!==THREE.DoubleSide?R.enable(x.CULL_FACE):R.disable(x.CULL_FACE);
R.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?R.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha,a.premultipliedAlpha):R.setBlending(THREE.NoBlending);R.setDepthFunc(a.depthFunc);R.setDepthTest(a.depthTest);R.setDepthWrite(a.depthWrite);R.setColorWrite(a.colorWrite);R.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function s(a,b,c,d){ia=0;var e=Z.get(c);qa&&((va||a!==T)&&ca.setState(c.clippingPlanes,
c.clipShadows,a,e,a===T&&c.id===I),void 0!==e.numClippingPlanes&&e.numClippingPlanes!==ca.numPlanes&&(c.needsUpdate=!0));void 0===e.program&&(c.needsUpdate=!0);void 0!==e.lightsHash&&e.lightsHash!==S.hash&&(c.needsUpdate=!0);if(c.needsUpdate){a:{var h=Z.get(c),k=na.getParameters(c,S,b,ca.numPlanes,d),l=na.getProgramCode(c,k),n=h.program,m=!0;if(void 0===n)c.addEventListener("dispose",f);else if(n.code!==l)g(c);else if(void 0!==k.shaderID)break a;else m=!1;m&&(k.shaderID?(n=THREE.ShaderLib[k.shaderID],
R.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?R.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha,a.premultipliedAlpha):R.setBlending(THREE.NoBlending);R.setDepthFunc(a.depthFunc);R.setDepthTest(a.depthTest);R.setDepthWrite(a.depthWrite);R.setColorWrite(a.colorWrite);R.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function s(a,b,c,d){ia=0;var e=Z.get(c);qa&&((va||a!==T)&&da.setState(c.clippingPlanes,
c.clipShadows,a,e,a===T&&c.id===I),void 0!==e.numClippingPlanes&&e.numClippingPlanes!==da.numPlanes&&(c.needsUpdate=!0));void 0===e.program&&(c.needsUpdate=!0);void 0!==e.lightsHash&&e.lightsHash!==S.hash&&(c.needsUpdate=!0);if(c.needsUpdate){a:{var h=Z.get(c),k=na.getParameters(c,S,b,da.numPlanes,d),l=na.getProgramCode(c,k),n=h.program,m=!0;if(void 0===n)c.addEventListener("dispose",f);else if(n.code!==l)g(c);else if(void 0!==k.shaderID)break a;else m=!1;m&&(k.shaderID?(n=THREE.ShaderLib[k.shaderID],
h.__webglShader={name:c.type,uniforms:THREE.UniformsUtils.clone(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}):h.__webglShader={name:c.type,uniforms:c.uniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader},c.__webglShader=h.__webglShader,n=na.acquireProgram(c,k,l),h.program=n,c.program=n);k=n.getAttributes();if(c.morphTargets)for(l=c.numSupportedMorphTargets=0;l<N.maxMorphTargets;l++)0<=k["morphTarget"+l]&&c.numSupportedMorphTargets++;if(c.morphNormals)for(l=
c.numSupportedMorphNormals=0;l<N.maxMorphNormals;l++)0<=k["morphNormal"+l]&&c.numSupportedMorphNormals++;k=h.__webglShader.uniforms;(c instanceof THREE.ShaderMaterial||c instanceof THREE.RawShaderMaterial)&&!0!==c.clipping||(h.numClippingPlanes=ca.numPlanes,k.clippingPlanes=ca.uniform);c.lights&&(h.lightsHash=S.hash,k.ambientLightColor.value=S.ambient,k.directionalLights.value=S.directional,k.spotLights.value=S.spot,k.pointLights.value=S.point,k.hemisphereLights.value=S.hemi,k.directionalShadowMap.value=
c.numSupportedMorphNormals=0;l<N.maxMorphNormals;l++)0<=k["morphNormal"+l]&&c.numSupportedMorphNormals++;k=h.__webglShader.uniforms;(c instanceof THREE.ShaderMaterial||c instanceof THREE.RawShaderMaterial)&&!0!==c.clipping||(h.numClippingPlanes=da.numPlanes,k.clippingPlanes=da.uniform);c.lights&&(h.lightsHash=S.hash,k.ambientLightColor.value=S.ambient,k.directionalLights.value=S.directional,k.spotLights.value=S.spot,k.pointLights.value=S.point,k.hemisphereLights.value=S.hemi,k.directionalShadowMap.value=
S.directionalShadowMap,k.directionalShadowMatrix.value=S.directionalShadowMatrix,k.spotShadowMap.value=S.spotShadowMap,k.spotShadowMatrix.value=S.spotShadowMatrix,k.pointShadowMap.value=S.pointShadowMap,k.pointShadowMatrix.value=S.pointShadowMatrix);l=h.program.getUniforms();l=THREE.WebGLUniforms.seqWithValue(l.seq,k);h.uniformsList=l;h.dynamicUniforms=THREE.WebGLUniforms.splitDynamic(l,k)}c.needsUpdate=!1}var p=!1,m=n=!1,h=e.program,l=h.getUniforms(),k=e.__webglShader.uniforms;h.id!==Q&&(x.useProgram(h.program),
Q=h.id,m=n=p=!0);c.id!==I&&(I=c.id,n=!0);if(p||a!==T){l.set(x,a,"projectionMatrix");da.logarithmicDepthBuffer&&l.setValue(x,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));a!==T&&(T=a,m=n=!0);if(c instanceof THREE.ShaderMaterial||c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshStandardMaterial||c.envMap)p=l.map.cameraPosition,void 0!==p&&p.setValue(x,W.setFromMatrixPosition(a.matrixWorld));(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshBasicMaterial||
c instanceof THREE.MeshStandardMaterial||c instanceof THREE.ShaderMaterial||c.skinning)&&l.setValue(x,"viewMatrix",a.matrixWorldInverse);l.set(x,N,"toneMappingExposure");l.set(x,N,"toneMappingWhitePoint")}c.skinning&&(l.setOptional(x,d,"bindMatrix"),l.setOptional(x,d,"bindMatrixInverse"),p=d.skeleton)&&(da.floatVertexTextures&&p.useVertexTexture?(l.set(x,p,"boneTexture"),l.set(x,p,"boneTextureWidth"),l.set(x,p,"boneTextureHeight")):l.setOptional(x,p,"boneMatrices"));if(n){c.lights&&(n=m,k.ambientLightColor.needsUpdate=
Q=h.id,m=n=p=!0);c.id!==I&&(I=c.id,n=!0);if(p||a!==T){l.set(x,a,"projectionMatrix");ba.logarithmicDepthBuffer&&l.setValue(x,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));a!==T&&(T=a,m=n=!0);if(c instanceof THREE.ShaderMaterial||c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshStandardMaterial||c.envMap)p=l.map.cameraPosition,void 0!==p&&p.setValue(x,W.setFromMatrixPosition(a.matrixWorld));(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshBasicMaterial||
c instanceof THREE.MeshStandardMaterial||c instanceof THREE.ShaderMaterial||c.skinning)&&l.setValue(x,"viewMatrix",a.matrixWorldInverse);l.set(x,N,"toneMappingExposure");l.set(x,N,"toneMappingWhitePoint")}c.skinning&&(l.setOptional(x,d,"bindMatrix"),l.setOptional(x,d,"bindMatrixInverse"),p=d.skeleton)&&(ba.floatVertexTextures&&p.useVertexTexture?(l.set(x,p,"boneTexture"),l.set(x,p,"boneTextureWidth"),l.set(x,p,"boneTextureHeight")):l.setOptional(x,p,"boneMatrices"));if(n){c.lights&&(n=m,k.ambientLightColor.needsUpdate=
n,k.directionalLights.needsUpdate=n,k.pointLights.needsUpdate=n,k.spotLights.needsUpdate=n,k.hemisphereLights.needsUpdate=n);b&&c.fog&&(k.fogColor.value=b.color,b instanceof THREE.Fog?(k.fogNear.value=b.near,k.fogFar.value=b.far):b instanceof THREE.FogExp2&&(k.fogDensity.value=b.density));if(c instanceof THREE.MeshBasicMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshStandardMaterial||c instanceof THREE.MeshDepthMaterial){k.opacity.value=
c.opacity;k.diffuse.value=c.color;c.emissive&&k.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);k.map.value=c.map;k.specularMap.value=c.specularMap;k.alphaMap.value=c.alphaMap;c.aoMap&&(k.aoMap.value=c.aoMap,k.aoMapIntensity.value=c.aoMapIntensity);var q;c.map?q=c.map:c.specularMap?q=c.specularMap:c.displacementMap?q=c.displacementMap:c.normalMap?q=c.normalMap:c.bumpMap?q=c.bumpMap:c.roughnessMap?q=c.roughnessMap:c.metalnessMap?q=c.metalnessMap:c.alphaMap?q=c.alphaMap:c.emissiveMap&&
(q=c.emissiveMap);void 0!==q&&(q instanceof THREE.WebGLRenderTarget&&(q=q.texture),b=q.offset,q=q.repeat,k.offsetRepeat.value.set(b.x,b.y,q.x,q.y));k.envMap.value=c.envMap;k.flipEnvMap.value=c.envMap instanceof THREE.CubeTexture?-1:1;k.reflectivity.value=c.reflectivity;k.refractionRatio.value=c.refractionRatio}c instanceof THREE.LineBasicMaterial?(k.diffuse.value=c.color,k.opacity.value=c.opacity):c instanceof THREE.LineDashedMaterial?(k.diffuse.value=c.color,k.opacity.value=c.opacity,k.dashSize.value=
......@@ -621,37 +621,37 @@ if(a===THREE.RGBFormat)return x.RGB;if(a===THREE.RGBAFormat)return x.RGBA;if(a==
if(a===THREE.OneMinusSrcColorFactor)return x.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return x.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return x.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return x.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return x.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return x.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return x.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return x.SRC_ALPHA_SATURATE;b=U.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=U.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=U.get("WEBGL_compressed_texture_etc1");if(null!==b&&a===THREE.RGB_ETC1_Format)return b.COMPRESSED_RGB_ETC1_WEBGL;b=U.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 u=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml",
"canvas"),C=void 0!==a.context?a.context:null,w=void 0!==a.alpha?a.alpha:!1,E=void 0!==a.depth?a.depth:!0,y=void 0!==a.stencil?a.stencil:!0,z=void 0!==a.antialias?a.antialias:!1,B=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,F=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,A=[],G=[],J=-1,P=[],K=-1,H=new Float32Array(8),M=[],O=[];this.domElement=u;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=
[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMapping=THREE.LinearToneMapping;this.toneMappingWhitePoint=this.toneMappingExposure=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var N=this,Q=null,L=null,D=null,I=-1,aa="",T=null,X=new THREE.Vector4,ja=null,ba=new THREE.Vector4,ia=0,V=new THREE.Color(0),Y=0,ra=u.width,sa=u.height,$=1,ua=new THREE.Vector4(0,0,ra,sa),xa=!1,ma=new THREE.Vector4(0,0,ra,sa),wa=new THREE.Frustum,
ca=new THREE.WebGLClipping,qa=!1,va=!1,ha=new THREE.Sphere,pa=new THREE.Matrix4,W=new THREE.Vector3,S={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},fa={calls:0,vertices:0,faces:0,points:0};this.info={render:fa,memory:{geometries:0,textures:0},programs:null};var x;try{w={alpha:w,depth:E,stencil:y,antialias:z,premultipliedAlpha:B,preserveDrawingBuffer:F};
x=C||u.getContext("webgl",w)||u.getContext("experimental-webgl",w);if(null===x){if(null!==u.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===x.getShaderPrecisionFormat&&(x.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});u.addEventListener("webglcontextlost",e,!1)}catch(za){console.error("THREE.WebGLRenderer: "+za)}var U=new THREE.WebGLExtensions(x);U.get("WEBGL_depth_texture");U.get("OES_texture_float");
U.get("OES_texture_float_linear");U.get("OES_texture_half_float");U.get("OES_texture_half_float_linear");U.get("OES_standard_derivatives");U.get("ANGLE_instanced_arrays");U.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);var da=new THREE.WebGLCapabilities(x,U,a),R=new THREE.WebGLState(x,U,t),Z=new THREE.WebGLProperties,ka=new THREE.WebGLTextures(x,U,R,Z,da,t,this.info),ea=new THREE.WebGLObjects(x,Z,this.info),na=new THREE.WebGLPrograms(this,da),ta=new THREE.WebGLLights;this.info.programs=
na.programs;var Aa=new THREE.WebGLBufferRenderer(x,U,fa),Ba=new THREE.WebGLIndexedBufferRenderer(x,U,fa),Ca=new THREE.OrthographicCamera(-1,1,1,-1,0,1),la=new THREE.PerspectiveCamera,oa=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2),new THREE.MeshBasicMaterial({depthTest:!1,depthWrite:!1}));a=THREE.ShaderLib.cube;var ga=new THREE.Mesh(new THREE.BoxBufferGeometry(5,5,5),new THREE.ShaderMaterial({uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader,depthTest:!1,depthWrite:!1,
side:THREE.BackSide}));ea.update(oa);ea.update(ga);c();this.context=x;this.capabilities=da;this.extensions=U;this.properties=Z;this.state=R;var ya=new THREE.WebGLShadowMap(this,S,ea);this.shadowMap=ya;var Da=new THREE.SpritePlugin(this,M),Ea=new THREE.LensFlarePlugin(this,O);this.getContext=function(){return x};this.getContextAttributes=function(){return x.getContextAttributes()};this.forceContextLoss=function(){U.get("WEBGL_lose_context").loseContext()};this.getMaxAnisotropy=function(){return da.getMaxAnisotropy()};
this.getPrecision=function(){return da.precision};this.getPixelRatio=function(){return $};this.setPixelRatio=function(a){void 0!==a&&($=a,this.setSize(ma.z,ma.w,!1))};this.getSize=function(){return{width:ra,height:sa}};this.setSize=function(a,b,c){ra=a;sa=b;u.width=a*$;u.height=b*$;!1!==c&&(u.style.width=a+"px",u.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){R.viewport(ma.set(a,b,c,d))};this.setScissor=function(a,b,c,d){R.scissor(ua.set(a,b,c,d))};this.setScissorTest=
function(a){R.setScissorTest(xa=a)};this.getClearColor=function(){return V};this.setClearColor=function(a,c){V.set(a);Y=void 0!==c?c:1;b(V.r,V.g,V.b,Y)};this.getClearAlpha=function(){return Y};this.setClearAlpha=function(a){Y=a;b(V.r,V.g,V.b,Y)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=x.COLOR_BUFFER_BIT;if(void 0===b||b)d|=x.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=x.STENCIL_BUFFER_BIT;x.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,
!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.dispose=function(){P=[];K=-1;G=[];J=-1;u.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){R.initAttributes();var d=Z.get(a);a.hasPositions&&!d.position&&(d.position=x.createBuffer());a.hasNormals&&!d.normal&&(d.normal=x.createBuffer());a.hasUvs&&!d.uv&&(d.uv=x.createBuffer());a.hasColors&&!d.color&&
(d.color=x.createBuffer());b=b.getAttributes();a.hasPositions&&(x.bindBuffer(x.ARRAY_BUFFER,d.position),x.bufferData(x.ARRAY_BUFFER,a.positionArray,x.DYNAMIC_DRAW),R.enableAttribute(b.position),x.vertexAttribPointer(b.position,3,x.FLOAT,!1,0,0));if(a.hasNormals){x.bindBuffer(x.ARRAY_BUFFER,d.normal);if("MeshPhongMaterial"!==c.type&&"MeshStandardMaterial"!==c.type&&"MeshPhysicalMaterial"!==c.type&&c.shading===THREE.FlatShading)for(var e=0,g=3*a.count;e<g;e+=9){var f=a.normalArray,h=(f[e+0]+f[e+3]+
f[e+6])/3,k=(f[e+1]+f[e+4]+f[e+7])/3,l=(f[e+2]+f[e+5]+f[e+8])/3;f[e+0]=h;f[e+1]=k;f[e+2]=l;f[e+3]=h;f[e+4]=k;f[e+5]=l;f[e+6]=h;f[e+7]=k;f[e+8]=l}x.bufferData(x.ARRAY_BUFFER,a.normalArray,x.DYNAMIC_DRAW);R.enableAttribute(b.normal);x.vertexAttribPointer(b.normal,3,x.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(x.bindBuffer(x.ARRAY_BUFFER,d.uv),x.bufferData(x.ARRAY_BUFFER,a.uvArray,x.DYNAMIC_DRAW),R.enableAttribute(b.uv),x.vertexAttribPointer(b.uv,2,x.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&
(x.bindBuffer(x.ARRAY_BUFFER,d.color),x.bufferData(x.ARRAY_BUFFER,a.colorArray,x.DYNAMIC_DRAW),R.enableAttribute(b.color),x.vertexAttribPointer(b.color,3,x.FLOAT,!1,0,0));R.disableUnusedAttributes();x.drawArrays(x.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){r(d);var g=s(a,b,d,e),k=!1;a=c.id+"_"+g.id+"_"+d.wireframe;a!==aa&&(aa=a,k=!0);b=e.morphTargetInfluences;if(void 0!==b){a=[];for(var l=0,k=b.length;l<k;l++){var n=b[l];a.push([n,l])}a.sort(h);8<a.length&&(a.length=
8);for(var m=c.morphAttributes,l=0,k=a.length;l<k;l++)n=a[l],H[l]=n[0],0!==n[0]?(b=n[1],!0===d.morphTargets&&m.position&&c.addAttribute("morphTarget"+l,m.position[b]),!0===d.morphNormals&&m.normal&&c.addAttribute("morphNormal"+l,m.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+l),!0===d.morphNormals&&c.removeAttribute("morphNormal"+l));g.getUniforms().setValue(x,"morphTargetInfluences",H);k=!0}b=c.index;l=c.attributes.position;!0===d.wireframe&&(b=ea.getWireframeAttribute(c));null!==
b?(a=Ba,a.setIndex(b)):a=Aa;if(k){a:{var k=void 0,p;if(c instanceof THREE.InstancedBufferGeometry&&(p=U.get("ANGLE_instanced_arrays"),null===p)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}void 0===k&&(k=0);R.initAttributes();var n=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues,q;for(q in g){var u=g[q];if(0<=u){var w=n[q];if(void 0!==w){var t=x.FLOAT,C=w.array,v=
w.normalized;C instanceof Float32Array?t=x.FLOAT:C instanceof Float64Array?console.warn("Unsupported data buffer format: Float64Array"):C instanceof Uint16Array?t=x.UNSIGNED_SHORT:C instanceof Int16Array?t=x.SHORT:C instanceof Uint32Array?t=x.UNSIGNED_INT:C instanceof Int32Array?t=x.INT:C instanceof Int8Array?t=x.BYTE:C instanceof Uint8Array&&(t=x.UNSIGNED_BYTE);var C=w.itemSize,z=ea.getAttributeBuffer(w);if(w instanceof THREE.InterleavedBufferAttribute){var y=w.data,B=y.stride,w=w.offset;y instanceof
THREE.InstancedInterleavedBuffer?(R.enableAttributeAndDivisor(u,y.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=y.meshPerAttribute*y.count)):R.enableAttribute(u);x.bindBuffer(x.ARRAY_BUFFER,z);x.vertexAttribPointer(u,C,t,v,B*y.array.BYTES_PER_ELEMENT,(k*B+w)*y.array.BYTES_PER_ELEMENT)}else w instanceof THREE.InstancedBufferAttribute?(R.enableAttributeAndDivisor(u,w.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=w.meshPerAttribute*w.count)):R.enableAttribute(u),
x.bindBuffer(x.ARRAY_BUFFER,z),x.vertexAttribPointer(u,C,t,v,0,k*C*w.array.BYTES_PER_ELEMENT)}else if(void 0!==m&&(t=m[q],void 0!==t))switch(t.length){case 2:x.vertexAttrib2fv(u,t);break;case 3:x.vertexAttrib3fv(u,t);break;case 4:x.vertexAttrib4fv(u,t);break;default:x.vertexAttrib1fv(u,t)}}}R.disableUnusedAttributes()}null!==b&&x.bindBuffer(x.ELEMENT_ARRAY_BUFFER,ea.getAttributeBuffer(b))}p=Infinity;null!==b?p=b.count:void 0!==l&&(p=l.count);q=c.drawRange.start;b=c.drawRange.count;l=null!==f?f.start:
"canvas"),A=void 0!==a.context?a.context:null,w=void 0!==a.alpha?a.alpha:!1,E=void 0!==a.depth?a.depth:!0,y=void 0!==a.stencil?a.stencil:!0,z=void 0!==a.antialias?a.antialias:!1,C=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,F=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,B=[],G=[],J=-1,P=[],K=-1,H=new Float32Array(8),M=[],O=[];this.domElement=u;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=
[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMapping=THREE.LinearToneMapping;this.toneMappingWhitePoint=this.toneMappingExposure=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var N=this,Q=null,L=null,D=null,I=-1,aa="",T=null,X=new THREE.Vector4,ja=null,ca=new THREE.Vector4,ia=0,V=new THREE.Color(0),Y=0,ra=u.width,sa=u.height,$=1,ua=new THREE.Vector4(0,0,ra,sa),xa=!1,ma=new THREE.Vector4(0,0,ra,sa),wa=new THREE.Frustum,
da=new THREE.WebGLClipping,qa=!1,va=!1,ha=new THREE.Sphere,pa=new THREE.Matrix4,W=new THREE.Vector3,S={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},fa={calls:0,vertices:0,faces:0,points:0};this.info={render:fa,memory:{geometries:0,textures:0},programs:null};var x;try{w={alpha:w,depth:E,stencil:y,antialias:z,premultipliedAlpha:C,preserveDrawingBuffer:F};
x=A||u.getContext("webgl",w)||u.getContext("experimental-webgl",w);if(null===x){if(null!==u.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===x.getShaderPrecisionFormat&&(x.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});u.addEventListener("webglcontextlost",e,!1)}catch(za){console.error("THREE.WebGLRenderer: "+za)}var U=new THREE.WebGLExtensions(x);U.get("WEBGL_depth_texture");U.get("OES_texture_float");
U.get("OES_texture_float_linear");U.get("OES_texture_half_float");U.get("OES_texture_half_float_linear");U.get("OES_standard_derivatives");U.get("ANGLE_instanced_arrays");U.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);var ba=new THREE.WebGLCapabilities(x,U,a),R=new THREE.WebGLState(x,U,t),Z=new THREE.WebGLProperties,ka=new THREE.WebGLTextures(x,U,R,Z,ba,t,this.info),ea=new THREE.WebGLObjects(x,Z,this.info),na=new THREE.WebGLPrograms(this,ba),ta=new THREE.WebGLLights;this.info.programs=
na.programs;var Aa=new THREE.WebGLBufferRenderer(x,U,fa),Ba=new THREE.WebGLIndexedBufferRenderer(x,U,fa),Ca=new THREE.OrthographicCamera(-1,1,1,-1,0,1),la=new THREE.PerspectiveCamera,oa=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2),new THREE.MeshBasicMaterial({depthTest:!1,depthWrite:!1}));a=THREE.ShaderLib.cube;var A=ba.logarithmicDepthBuffer?4:1,ga=new THREE.Mesh(new THREE.BoxBufferGeometry(5,5,5,A,A,A),new THREE.ShaderMaterial({uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader,
depthTest:!1,depthWrite:!1,side:THREE.BackSide}));ea.update(oa);ea.update(ga);c();this.context=x;this.capabilities=ba;this.extensions=U;this.properties=Z;this.state=R;var ya=new THREE.WebGLShadowMap(this,S,ea);this.shadowMap=ya;var Da=new THREE.SpritePlugin(this,M),Ea=new THREE.LensFlarePlugin(this,O);this.getContext=function(){return x};this.getContextAttributes=function(){return x.getContextAttributes()};this.forceContextLoss=function(){U.get("WEBGL_lose_context").loseContext()};this.getMaxAnisotropy=
function(){return ba.getMaxAnisotropy()};this.getPrecision=function(){return ba.precision};this.getPixelRatio=function(){return $};this.setPixelRatio=function(a){void 0!==a&&($=a,this.setSize(ma.z,ma.w,!1))};this.getSize=function(){return{width:ra,height:sa}};this.setSize=function(a,b,c){ra=a;sa=b;u.width=a*$;u.height=b*$;!1!==c&&(u.style.width=a+"px",u.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){R.viewport(ma.set(a,b,c,d))};this.setScissor=function(a,b,c,d){R.scissor(ua.set(a,
b,c,d))};this.setScissorTest=function(a){R.setScissorTest(xa=a)};this.getClearColor=function(){return V};this.setClearColor=function(a,c){V.set(a);Y=void 0!==c?c:1;b(V.r,V.g,V.b,Y)};this.getClearAlpha=function(){return Y};this.setClearAlpha=function(a){Y=a;b(V.r,V.g,V.b,Y)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=x.COLOR_BUFFER_BIT;if(void 0===b||b)d|=x.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=x.STENCIL_BUFFER_BIT;x.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=
function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.dispose=function(){P=[];K=-1;G=[];J=-1;u.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){R.initAttributes();var d=Z.get(a);a.hasPositions&&!d.position&&(d.position=x.createBuffer());a.hasNormals&&!d.normal&&(d.normal=x.createBuffer());a.hasUvs&&!d.uv&&(d.uv=x.createBuffer());
a.hasColors&&!d.color&&(d.color=x.createBuffer());b=b.getAttributes();a.hasPositions&&(x.bindBuffer(x.ARRAY_BUFFER,d.position),x.bufferData(x.ARRAY_BUFFER,a.positionArray,x.DYNAMIC_DRAW),R.enableAttribute(b.position),x.vertexAttribPointer(b.position,3,x.FLOAT,!1,0,0));if(a.hasNormals){x.bindBuffer(x.ARRAY_BUFFER,d.normal);if("MeshPhongMaterial"!==c.type&&"MeshStandardMaterial"!==c.type&&"MeshPhysicalMaterial"!==c.type&&c.shading===THREE.FlatShading)for(var e=0,g=3*a.count;e<g;e+=9){var f=a.normalArray,
h=(f[e+0]+f[e+3]+f[e+6])/3,k=(f[e+1]+f[e+4]+f[e+7])/3,l=(f[e+2]+f[e+5]+f[e+8])/3;f[e+0]=h;f[e+1]=k;f[e+2]=l;f[e+3]=h;f[e+4]=k;f[e+5]=l;f[e+6]=h;f[e+7]=k;f[e+8]=l}x.bufferData(x.ARRAY_BUFFER,a.normalArray,x.DYNAMIC_DRAW);R.enableAttribute(b.normal);x.vertexAttribPointer(b.normal,3,x.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(x.bindBuffer(x.ARRAY_BUFFER,d.uv),x.bufferData(x.ARRAY_BUFFER,a.uvArray,x.DYNAMIC_DRAW),R.enableAttribute(b.uv),x.vertexAttribPointer(b.uv,2,x.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==
THREE.NoColors&&(x.bindBuffer(x.ARRAY_BUFFER,d.color),x.bufferData(x.ARRAY_BUFFER,a.colorArray,x.DYNAMIC_DRAW),R.enableAttribute(b.color),x.vertexAttribPointer(b.color,3,x.FLOAT,!1,0,0));R.disableUnusedAttributes();x.drawArrays(x.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){r(d);var g=s(a,b,d,e),k=!1;a=c.id+"_"+g.id+"_"+d.wireframe;a!==aa&&(aa=a,k=!0);b=e.morphTargetInfluences;if(void 0!==b){a=[];for(var l=0,k=b.length;l<k;l++){var n=b[l];a.push([n,l])}a.sort(h);8<
a.length&&(a.length=8);for(var m=c.morphAttributes,l=0,k=a.length;l<k;l++)n=a[l],H[l]=n[0],0!==n[0]?(b=n[1],!0===d.morphTargets&&m.position&&c.addAttribute("morphTarget"+l,m.position[b]),!0===d.morphNormals&&m.normal&&c.addAttribute("morphNormal"+l,m.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+l),!0===d.morphNormals&&c.removeAttribute("morphNormal"+l));g.getUniforms().setValue(x,"morphTargetInfluences",H);k=!0}b=c.index;l=c.attributes.position;!0===d.wireframe&&(b=ea.getWireframeAttribute(c));
null!==b?(a=Ba,a.setIndex(b)):a=Aa;if(k){a:{var k=void 0,p;if(c instanceof THREE.InstancedBufferGeometry&&(p=U.get("ANGLE_instanced_arrays"),null===p)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}void 0===k&&(k=0);R.initAttributes();var n=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues,q;for(q in g){var u=g[q];if(0<=u){var w=n[q];if(void 0!==w){var t=x.FLOAT,A=w.array,
v=w.normalized;A instanceof Float32Array?t=x.FLOAT:A instanceof Float64Array?console.warn("Unsupported data buffer format: Float64Array"):A instanceof Uint16Array?t=x.UNSIGNED_SHORT:A instanceof Int16Array?t=x.SHORT:A instanceof Uint32Array?t=x.UNSIGNED_INT:A instanceof Int32Array?t=x.INT:A instanceof Int8Array?t=x.BYTE:A instanceof Uint8Array&&(t=x.UNSIGNED_BYTE);var A=w.itemSize,z=ea.getAttributeBuffer(w);if(w instanceof THREE.InterleavedBufferAttribute){var y=w.data,C=y.stride,w=w.offset;y instanceof
THREE.InstancedInterleavedBuffer?(R.enableAttributeAndDivisor(u,y.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=y.meshPerAttribute*y.count)):R.enableAttribute(u);x.bindBuffer(x.ARRAY_BUFFER,z);x.vertexAttribPointer(u,A,t,v,C*y.array.BYTES_PER_ELEMENT,(k*C+w)*y.array.BYTES_PER_ELEMENT)}else w instanceof THREE.InstancedBufferAttribute?(R.enableAttributeAndDivisor(u,w.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=w.meshPerAttribute*w.count)):R.enableAttribute(u),
x.bindBuffer(x.ARRAY_BUFFER,z),x.vertexAttribPointer(u,A,t,v,0,k*A*w.array.BYTES_PER_ELEMENT)}else if(void 0!==m&&(t=m[q],void 0!==t))switch(t.length){case 2:x.vertexAttrib2fv(u,t);break;case 3:x.vertexAttrib3fv(u,t);break;case 4:x.vertexAttrib4fv(u,t);break;default:x.vertexAttrib1fv(u,t)}}}R.disableUnusedAttributes()}null!==b&&x.bindBuffer(x.ELEMENT_ARRAY_BUFFER,ea.getAttributeBuffer(b))}p=Infinity;null!==b?p=b.count:void 0!==l&&(p=l.count);q=c.drawRange.start;b=c.drawRange.count;l=null!==f?f.start:
0;k=null!==f?f.count:Infinity;f=Math.max(0,q,l);p=Math.min(0+p,q+b,l+k)-1;p=Math.max(0,p-f+1);if(e instanceof THREE.Mesh)if(!0===d.wireframe)R.setLineWidth(d.wireframeLinewidth*(null===L?$:1)),a.setMode(x.LINES);else switch(e.drawMode){case THREE.TrianglesDrawMode:a.setMode(x.TRIANGLES);break;case THREE.TriangleStripDrawMode:a.setMode(x.TRIANGLE_STRIP);break;case THREE.TriangleFanDrawMode:a.setMode(x.TRIANGLE_FAN)}else e instanceof THREE.Line?(d=d.linewidth,void 0===d&&(d=1),R.setLineWidth(d*(null===
L?$:1)),e instanceof THREE.LineSegments?a.setMode(x.LINES):a.setMode(x.LINE_STRIP)):e instanceof THREE.Points&&a.setMode(x.POINTS);c instanceof THREE.InstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,f,p):a.render(f,p)};this.render=function(a,c,d,e){if(!1===c instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var f=a.fog;aa="";I=-1;T=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===c.parent&&c.updateMatrixWorld();
c.matrixWorldInverse.getInverse(c.matrixWorld);pa.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse);wa.setFromMatrix(pa);A.length=0;K=J=-1;M.length=0;O.length=0;va=this.localClippingEnabled;qa=ca.init(this.clippingPlanes,va,c);n(a,c);G.length=J+1;P.length=K+1;!0===N.sortObjects&&(G.sort(k),P.sort(l));qa&&ca.beginShadows();for(var g=A,h=0,p=0,m=g.length;p<m;p++){var u=g[p];u.castShadow&&(S.shadows[h++]=u)}S.shadows.length=h;ya.render(a,c);for(var g=A,r=u=0,s=0,w,t,C,H,v=c.matrixWorldInverse,
z=0,y=0,B=0,L=0,h=0,p=g.length;h<p;h++)if(m=g[h],w=m.color,t=m.intensity,C=m.distance,H=m.shadow&&m.shadow.map?m.shadow.map.texture:null,m instanceof THREE.AmbientLight)u+=w.r*t,r+=w.g*t,s+=w.b*t;else if(m instanceof THREE.DirectionalLight){var D=ta.get(m);D.color.copy(m.color).multiplyScalar(m.intensity);D.direction.setFromMatrixPosition(m.matrixWorld);W.setFromMatrixPosition(m.target.matrixWorld);D.direction.sub(W);D.direction.transformDirection(v);if(D.shadow=m.castShadow)D.shadowBias=m.shadow.bias,
D.shadowRadius=m.shadow.radius,D.shadowMapSize=m.shadow.mapSize;S.directionalShadowMap[z]=H;S.directionalShadowMatrix[z]=m.shadow.matrix;S.directional[z++]=D}else if(m instanceof THREE.SpotLight){D=ta.get(m);D.position.setFromMatrixPosition(m.matrixWorld);D.position.applyMatrix4(v);D.color.copy(w).multiplyScalar(t);D.distance=C;D.direction.setFromMatrixPosition(m.matrixWorld);W.setFromMatrixPosition(m.target.matrixWorld);D.direction.sub(W);D.direction.transformDirection(v);D.coneCos=Math.cos(m.angle);
D.penumbraCos=Math.cos(m.angle*(1-m.penumbra));D.decay=0===m.distance?0:m.decay;if(D.shadow=m.castShadow)D.shadowBias=m.shadow.bias,D.shadowRadius=m.shadow.radius,D.shadowMapSize=m.shadow.mapSize;S.spotShadowMap[B]=H;S.spotShadowMatrix[B]=m.shadow.matrix;S.spot[B++]=D}else if(m instanceof THREE.PointLight){D=ta.get(m);D.position.setFromMatrixPosition(m.matrixWorld);D.position.applyMatrix4(v);D.color.copy(m.color).multiplyScalar(m.intensity);D.distance=m.distance;D.decay=0===m.distance?0:m.decay;if(D.shadow=
c.matrixWorldInverse.getInverse(c.matrixWorld);pa.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse);wa.setFromMatrix(pa);B.length=0;K=J=-1;M.length=0;O.length=0;va=this.localClippingEnabled;qa=da.init(this.clippingPlanes,va,c);n(a,c);G.length=J+1;P.length=K+1;!0===N.sortObjects&&(G.sort(k),P.sort(l));qa&&da.beginShadows();for(var g=B,h=0,p=0,m=g.length;p<m;p++){var u=g[p];u.castShadow&&(S.shadows[h++]=u)}S.shadows.length=h;ya.render(a,c);for(var g=B,r=u=0,s=0,w,t,A,H,v=c.matrixWorldInverse,
z=0,y=0,C=0,L=0,h=0,p=g.length;h<p;h++)if(m=g[h],w=m.color,t=m.intensity,A=m.distance,H=m.shadow&&m.shadow.map?m.shadow.map.texture:null,m instanceof THREE.AmbientLight)u+=w.r*t,r+=w.g*t,s+=w.b*t;else if(m instanceof THREE.DirectionalLight){var D=ta.get(m);D.color.copy(m.color).multiplyScalar(m.intensity);D.direction.setFromMatrixPosition(m.matrixWorld);W.setFromMatrixPosition(m.target.matrixWorld);D.direction.sub(W);D.direction.transformDirection(v);if(D.shadow=m.castShadow)D.shadowBias=m.shadow.bias,
D.shadowRadius=m.shadow.radius,D.shadowMapSize=m.shadow.mapSize;S.directionalShadowMap[z]=H;S.directionalShadowMatrix[z]=m.shadow.matrix;S.directional[z++]=D}else if(m instanceof THREE.SpotLight){D=ta.get(m);D.position.setFromMatrixPosition(m.matrixWorld);D.position.applyMatrix4(v);D.color.copy(w).multiplyScalar(t);D.distance=A;D.direction.setFromMatrixPosition(m.matrixWorld);W.setFromMatrixPosition(m.target.matrixWorld);D.direction.sub(W);D.direction.transformDirection(v);D.coneCos=Math.cos(m.angle);
D.penumbraCos=Math.cos(m.angle*(1-m.penumbra));D.decay=0===m.distance?0:m.decay;if(D.shadow=m.castShadow)D.shadowBias=m.shadow.bias,D.shadowRadius=m.shadow.radius,D.shadowMapSize=m.shadow.mapSize;S.spotShadowMap[C]=H;S.spotShadowMatrix[C]=m.shadow.matrix;S.spot[C++]=D}else if(m instanceof THREE.PointLight){D=ta.get(m);D.position.setFromMatrixPosition(m.matrixWorld);D.position.applyMatrix4(v);D.color.copy(m.color).multiplyScalar(m.intensity);D.distance=m.distance;D.decay=0===m.distance?0:m.decay;if(D.shadow=
m.castShadow)D.shadowBias=m.shadow.bias,D.shadowRadius=m.shadow.radius,D.shadowMapSize=m.shadow.mapSize;S.pointShadowMap[y]=H;void 0===S.pointShadowMatrix[y]&&(S.pointShadowMatrix[y]=new THREE.Matrix4);W.setFromMatrixPosition(m.matrixWorld).negate();S.pointShadowMatrix[y].identity().setPosition(W);S.point[y++]=D}else m instanceof THREE.HemisphereLight&&(D=ta.get(m),D.direction.setFromMatrixPosition(m.matrixWorld),D.direction.transformDirection(v),D.direction.normalize(),D.skyColor.copy(m.color).multiplyScalar(t),
D.groundColor.copy(m.groundColor).multiplyScalar(t),S.hemi[L++]=D);S.ambient[0]=u;S.ambient[1]=r;S.ambient[2]=s;S.directional.length=z;S.spot.length=B;S.point.length=y;S.hemi.length=L;S.hash=z+","+y+","+B+","+L+","+S.shadows.length;qa&&ca.endShadows();fa.calls=0;fa.vertices=0;fa.faces=0;fa.points=0;void 0===d&&(d=null);this.setRenderTarget(d);g=a.background;null===g?b(V.r,V.g,V.b,Y):g instanceof THREE.Color&&b(g.r,g.g,g.b,1);(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,
D.groundColor.copy(m.groundColor).multiplyScalar(t),S.hemi[L++]=D);S.ambient[0]=u;S.ambient[1]=r;S.ambient[2]=s;S.directional.length=z;S.spot.length=C;S.point.length=y;S.hemi.length=L;S.hash=z+","+y+","+C+","+L+","+S.shadows.length;qa&&da.endShadows();fa.calls=0;fa.vertices=0;fa.faces=0;fa.points=0;void 0===d&&(d=null);this.setRenderTarget(d);g=a.background;null===g?b(V.r,V.g,V.b,Y):g instanceof THREE.Color&&b(g.r,g.g,g.b,1);(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,
this.autoClearStencil);g instanceof THREE.CubeTexture?(la.projectionMatrix.copy(c.projectionMatrix),la.matrixWorld.extractRotation(c.matrixWorld),la.matrixWorldInverse.getInverse(la.matrixWorld),ga.material.uniforms.tCube.value=g,ga.modelViewMatrix.multiplyMatrices(la.matrixWorldInverse,ga.matrixWorld),N.renderBufferDirect(la,null,ga.geometry,ga.material,ga,null)):g instanceof THREE.Texture&&(oa.material.map=g,N.renderBufferDirect(Ca,null,oa.geometry,oa.material,oa,null));a.overrideMaterial?(e=a.overrideMaterial,
q(G,c,f,e),q(P,c,f,e)):(R.setBlending(THREE.NoBlending),q(G,c,f),q(P,c,f));Da.render(a,c);Ea.render(a,c,ba);d&&ka.updateRenderTargetMipmap(d);R.setDepthTest(!0);R.setDepthWrite(!0);R.setColorWrite(!0)}};this.setFaceCulling=function(a,b){R.setCullFace(a);R.setFlipSided(b===THREE.FrontFaceDirectionCW)};this.allocTextureUnit=function(){var a=ia;a>=da.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+da.maxTextures);ia+=1;return a};this.setTexture2D=
q(G,c,f,e),q(P,c,f,e)):(R.setBlending(THREE.NoBlending),q(G,c,f),q(P,c,f));Da.render(a,c);Ea.render(a,c,ca);d&&ka.updateRenderTargetMipmap(d);R.setDepthTest(!0);R.setDepthWrite(!0);R.setColorWrite(!0)}};this.setFaceCulling=function(a,b){R.setCullFace(a);R.setFlipSided(b===THREE.FrontFaceDirectionCW)};this.allocTextureUnit=function(){var a=ia;a>=ba.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ba.maxTextures);ia+=1;return a};this.setTexture2D=
function(){var a=!1;return function(b,c){b instanceof THREE.WebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ka.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);ka.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b instanceof
THREE.WebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b instanceof THREE.CubeTexture||Array.isArray(b.image)&&6===b.image.length?ka.setTextureCube(b,c):ka.setTextureCubeDynamic(b,c)}}();this.getCurrentRenderTarget=function(){return L};this.setRenderTarget=function(a){(L=a)&&void 0===Z.get(a).__webglFramebuffer&&ka.setupRenderTarget(a);var b=a instanceof THREE.WebGLRenderTargetCube,
c;a?(c=Z.get(a),c=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,X.copy(a.scissor),ja=a.scissorTest,ba.copy(a.viewport)):(c=null,X.copy(ua).multiplyScalar($),ja=xa,ba.copy(ma).multiplyScalar($));D!==c&&(x.bindFramebuffer(x.FRAMEBUFFER,c),D=c);R.scissor(X);R.setScissorTest(ja);R.viewport(ba);b&&(b=Z.get(a.texture),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=
c;a?(c=Z.get(a),c=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,X.copy(a.scissor),ja=a.scissorTest,ca.copy(a.viewport)):(c=null,X.copy(ua).multiplyScalar($),ja=xa,ca.copy(ma).multiplyScalar($));D!==c&&(x.bindFramebuffer(x.FRAMEBUFFER,c),D=c);R.scissor(X);R.setScissorTest(ja);R.viewport(ca);b&&(b=Z.get(a.texture),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=
function(a,b,c,d,e,g){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var f=Z.get(a).__webglFramebuffer;if(f){var h=!1;f!==D&&(x.bindFramebuffer(x.FRAMEBUFFER,f),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&t(k.format)!==x.getParameter(x.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):
k.type===THREE.UnsignedByteType||t(k.type)===x.getParameter(x.IMPLEMENTATION_COLOR_READ_TYPE)||k.type===THREE.FloatType&&U.get("WEBGL_color_buffer_float")||k.type===THREE.HalfFloatType&&U.get("EXT_color_buffer_half_float")?x.checkFramebufferStatus(x.FRAMEBUFFER)===x.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&x.readPixels(b,c,d,e,t(k.format),t(k.type),g):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&
x.bindFramebuffer(x.FRAMEBUFFER,D)}}}}};
......@@ -684,21 +684,21 @@ THREE.WebGLProgram=function(){function a(a){switch(a){case THREE.LinearEncoding:
a);}}function b(b,c){var d=a(c);return"vec4 "+b+"( vec4 value ) { return "+d[0]+"ToLinear"+d[1]+"; }"}function c(b,c){var d=a(c);return"vec4 "+b+"( vec4 value ) { return LinearTo"+d[0]+d[1]+"; }"}function d(a,b){var c;switch(b){case THREE.LinearToneMapping:c="Linear";break;case THREE.ReinhardToneMapping:c="Reinhard";break;case THREE.Uncharted2ToneMapping:c="Uncharted2";break;case THREE.CineonToneMapping:c="OptimizedCineon";break;default:throw Error("unsupported toneMapping: "+b);}return"vec3 "+a+
"( vec3 color ) { return "+c+"ToneMapping( color ); }"}function e(a,b,c){a=a||{};return[a.derivatives||b.envMapCubeUV||b.bumpMap||b.normalMap||b.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(a.fragDepth||b.logarithmicDepthBuffer)&&c.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",a.drawBuffers&&c.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(a.shaderTextureLOD||b.envMap)&&c.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":
""].filter(g).join("\n")}function f(a){var b=[],c;for(c in a){var d=a[c];!1!==d&&b.push("#define "+c+" "+d)}return b.join("\n")}function g(a){return""!==a}function h(a,b){return a.replace(/NUM_DIR_LIGHTS/g,b.numDirLights).replace(/NUM_SPOT_LIGHTS/g,b.numSpotLights).replace(/NUM_POINT_LIGHTS/g,b.numPointLights).replace(/NUM_HEMI_LIGHTS/g,b.numHemiLights)}function k(a){return a.replace(/#include +<([\w\d.]+)>/g,function(a,b){var c=THREE.ShaderChunk[b];if(void 0===c)throw Error("Can not resolve #include <"+
b+">");return k(c)})}function l(a){return a.replace(/for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,b,c,d){a="";for(b=parseInt(b);b<parseInt(c);b++)a+=d.replace(/\[ i \]/g,"[ "+b+" ]");return a})}var m=0;return function(a,n,q,r){var s=a.context,v=q.extensions,t=q.defines,u=q.__webglShader.vertexShader,C=q.__webglShader.fragmentShader,w="SHADOWMAP_TYPE_BASIC";r.shadowMapType===THREE.PCFShadowMap?w="SHADOWMAP_TYPE_PCF":r.shadowMapType===THREE.PCFSoftShadowMap&&(w="SHADOWMAP_TYPE_PCF_SOFT");
b+">");return k(c)})}function l(a){return a.replace(/for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,b,c,d){a="";for(b=parseInt(b);b<parseInt(c);b++)a+=d.replace(/\[ i \]/g,"[ "+b+" ]");return a})}var m=0;return function(a,n,q,r){var s=a.context,v=q.extensions,t=q.defines,u=q.__webglShader.vertexShader,A=q.__webglShader.fragmentShader,w="SHADOWMAP_TYPE_BASIC";r.shadowMapType===THREE.PCFShadowMap?w="SHADOWMAP_TYPE_PCF":r.shadowMapType===THREE.PCFSoftShadowMap&&(w="SHADOWMAP_TYPE_PCF_SOFT");
var E="ENVMAP_TYPE_CUBE",y="ENVMAP_MODE_REFLECTION",z="ENVMAP_BLENDING_MULTIPLY";if(r.envMap){switch(q.envMap.mapping){case THREE.CubeReflectionMapping:case THREE.CubeRefractionMapping:E="ENVMAP_TYPE_CUBE";break;case THREE.CubeUVReflectionMapping:case THREE.CubeUVRefractionMapping:E="ENVMAP_TYPE_CUBE_UV";break;case THREE.EquirectangularReflectionMapping:case THREE.EquirectangularRefractionMapping:E="ENVMAP_TYPE_EQUIREC";break;case THREE.SphericalReflectionMapping:E="ENVMAP_TYPE_SPHERE"}switch(q.envMap.mapping){case THREE.CubeRefractionMapping:case THREE.EquirectangularRefractionMapping:y=
"ENVMAP_MODE_REFRACTION"}switch(q.combine){case THREE.MultiplyOperation:z="ENVMAP_BLENDING_MULTIPLY";break;case THREE.MixOperation:z="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:z="ENVMAP_BLENDING_ADD"}}var B=0<a.gammaFactor?a.gammaFactor:1,v=e(v,r,a.extensions),F=f(t),A=s.createProgram();q instanceof THREE.RawShaderMaterial?(t=[F].filter(g).join("\n"),w=[F].filter(g).join("\n")):(t=["precision "+r.precision+" float;","precision "+r.precision+" int;","#define SHADER_NAME "+q.__webglShader.name,
F,r.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+B,"#define MAX_BONES "+r.maxBones,r.map?"#define USE_MAP":"",r.envMap?"#define USE_ENVMAP":"",r.envMap?"#define "+y:"",r.lightMap?"#define USE_LIGHTMAP":"",r.aoMap?"#define USE_AOMAP":"",r.emissiveMap?"#define USE_EMISSIVEMAP":"",r.bumpMap?"#define USE_BUMPMAP":"",r.normalMap?"#define USE_NORMALMAP":"",r.displacementMap&&r.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",r.specularMap?"#define USE_SPECULARMAP":
"ENVMAP_MODE_REFRACTION"}switch(q.combine){case THREE.MultiplyOperation:z="ENVMAP_BLENDING_MULTIPLY";break;case THREE.MixOperation:z="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:z="ENVMAP_BLENDING_ADD"}}var C=0<a.gammaFactor?a.gammaFactor:1,v=e(v,r,a.extensions),F=f(t),B=s.createProgram();q instanceof THREE.RawShaderMaterial?(t=[F].filter(g).join("\n"),w=[F].filter(g).join("\n")):(t=["precision "+r.precision+" float;","precision "+r.precision+" int;","#define SHADER_NAME "+q.__webglShader.name,
F,r.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+C,"#define MAX_BONES "+r.maxBones,r.map?"#define USE_MAP":"",r.envMap?"#define USE_ENVMAP":"",r.envMap?"#define "+y:"",r.lightMap?"#define USE_LIGHTMAP":"",r.aoMap?"#define USE_AOMAP":"",r.emissiveMap?"#define USE_EMISSIVEMAP":"",r.bumpMap?"#define USE_BUMPMAP":"",r.normalMap?"#define USE_NORMALMAP":"",r.displacementMap&&r.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",r.specularMap?"#define USE_SPECULARMAP":
"",r.roughnessMap?"#define USE_ROUGHNESSMAP":"",r.metalnessMap?"#define USE_METALNESSMAP":"",r.alphaMap?"#define USE_ALPHAMAP":"",r.vertexColors?"#define USE_COLOR":"",r.flatShading?"#define FLAT_SHADED":"",r.skinning?"#define USE_SKINNING":"",r.useVertexTexture?"#define BONE_TEXTURE":"",r.morphTargets?"#define USE_MORPHTARGETS":"",r.morphNormals&&!1===r.flatShading?"#define USE_MORPHNORMALS":"",r.doubleSided?"#define DOUBLE_SIDED":"",r.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+
r.numClippingPlanes,r.shadowMapEnabled?"#define USE_SHADOWMAP":"",r.shadowMapEnabled?"#define "+w:"",r.sizeAttenuation?"#define USE_SIZEATTENUATION":"",r.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",r.logarithmicDepthBuffer&&a.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;",
"attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;",
"\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(g).join("\n"),w=[v,"precision "+r.precision+" float;","precision "+r.precision+" int;","#define SHADER_NAME "+q.__webglShader.name,F,r.alphaTest?"#define ALPHATEST "+r.alphaTest:"","#define GAMMA_FACTOR "+B,r.useFog&&r.fog?"#define USE_FOG":"",r.useFog&&r.fogExp?"#define FOG_EXP2":"",r.map?"#define USE_MAP":
"\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(g).join("\n"),w=[v,"precision "+r.precision+" float;","precision "+r.precision+" int;","#define SHADER_NAME "+q.__webglShader.name,F,r.alphaTest?"#define ALPHATEST "+r.alphaTest:"","#define GAMMA_FACTOR "+C,r.useFog&&r.fog?"#define USE_FOG":"",r.useFog&&r.fogExp?"#define FOG_EXP2":"",r.map?"#define USE_MAP":
"",r.envMap?"#define USE_ENVMAP":"",r.envMap?"#define "+E:"",r.envMap?"#define "+y:"",r.envMap?"#define "+z:"",r.lightMap?"#define USE_LIGHTMAP":"",r.aoMap?"#define USE_AOMAP":"",r.emissiveMap?"#define USE_EMISSIVEMAP":"",r.bumpMap?"#define USE_BUMPMAP":"",r.normalMap?"#define USE_NORMALMAP":"",r.specularMap?"#define USE_SPECULARMAP":"",r.roughnessMap?"#define USE_ROUGHNESSMAP":"",r.metalnessMap?"#define USE_METALNESSMAP":"",r.alphaMap?"#define USE_ALPHAMAP":"",r.vertexColors?"#define USE_COLOR":
"",r.flatShading?"#define FLAT_SHADED":"",r.doubleSided?"#define DOUBLE_SIDED":"",r.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+r.numClippingPlanes,r.shadowMapEnabled?"#define USE_SHADOWMAP":"",r.shadowMapEnabled?"#define "+w:"",r.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",r.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",r.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",r.logarithmicDepthBuffer&&a.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":
"",r.envMap&&a.extensions.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",r.toneMapping!==THREE.NoToneMapping?"#define TONE_MAPPING":"",r.toneMapping!==THREE.NoToneMapping?THREE.ShaderChunk.tonemapping_pars_fragment:"",r.toneMapping!==THREE.NoToneMapping?d("toneMapping",r.toneMapping):"",r.outputEncoding||r.mapEncoding||r.envMapEncoding||r.emissiveMapEncoding?THREE.ShaderChunk.encodings_pars_fragment:"",r.mapEncoding?b("mapTexelToLinear",
r.mapEncoding):"",r.envMapEncoding?b("envMapTexelToLinear",r.envMapEncoding):"",r.emissiveMapEncoding?b("emissiveMapTexelToLinear",r.emissiveMapEncoding):"",r.outputEncoding?c("linearToOutputTexel",r.outputEncoding):"",r.depthPacking?"#define DEPTH_PACKING "+q.depthPacking:"","\n"].filter(g).join("\n"));u=k(u,r);u=h(u,r);C=k(C,r);C=h(C,r);!1===q instanceof THREE.ShaderMaterial&&(u=l(u),C=l(C));C=w+C;u=THREE.WebGLShader(s,s.VERTEX_SHADER,t+u);C=THREE.WebGLShader(s,s.FRAGMENT_SHADER,C);s.attachShader(A,
u);s.attachShader(A,C);void 0!==q.index0AttributeName?s.bindAttribLocation(A,0,q.index0AttributeName):!0===r.morphTargets&&s.bindAttribLocation(A,0,"position");s.linkProgram(A);r=s.getProgramInfoLog(A);E=s.getShaderInfoLog(u);y=s.getShaderInfoLog(C);B=z=!0;if(!1===s.getProgramParameter(A,s.LINK_STATUS))z=!1,console.error("THREE.WebGLProgram: shader error: ",s.getError(),"gl.VALIDATE_STATUS",s.getProgramParameter(A,s.VALIDATE_STATUS),"gl.getProgramInfoLog",r,E,y);else if(""!==r)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",
r);else if(""===E||""===y)B=!1;B&&(this.diagnostics={runnable:z,material:q,programLog:r,vertexShader:{log:E,prefix:t},fragmentShader:{log:y,prefix:w}});s.deleteShader(u);s.deleteShader(C);var G;this.getUniforms=function(){void 0===G&&(G=new THREE.WebGLUniforms(s,A,a));return G};var J;this.getAttributes=function(){if(void 0===J){for(var a={},b=s.getProgramParameter(A,s.ACTIVE_ATTRIBUTES),c=0;c<b;c++){var d=s.getActiveAttrib(A,c).name;a[d]=s.getAttribLocation(A,d)}J=a}return J};this.destroy=function(){s.deleteProgram(A);
this.program=void 0};Object.defineProperties(this,{uniforms:{get:function(){console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms().");return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGLProgram: .attributes is now .getAttributes().");return this.getAttributes()}}});this.id=m++;this.code=n;this.usedTimes=1;this.program=A;this.vertexShader=u;this.fragmentShader=C;return this}}();
r.mapEncoding):"",r.envMapEncoding?b("envMapTexelToLinear",r.envMapEncoding):"",r.emissiveMapEncoding?b("emissiveMapTexelToLinear",r.emissiveMapEncoding):"",r.outputEncoding?c("linearToOutputTexel",r.outputEncoding):"",r.depthPacking?"#define DEPTH_PACKING "+q.depthPacking:"","\n"].filter(g).join("\n"));u=k(u,r);u=h(u,r);A=k(A,r);A=h(A,r);!1===q instanceof THREE.ShaderMaterial&&(u=l(u),A=l(A));A=w+A;u=THREE.WebGLShader(s,s.VERTEX_SHADER,t+u);A=THREE.WebGLShader(s,s.FRAGMENT_SHADER,A);s.attachShader(B,
u);s.attachShader(B,A);void 0!==q.index0AttributeName?s.bindAttribLocation(B,0,q.index0AttributeName):!0===r.morphTargets&&s.bindAttribLocation(B,0,"position");s.linkProgram(B);r=s.getProgramInfoLog(B);E=s.getShaderInfoLog(u);y=s.getShaderInfoLog(A);C=z=!0;if(!1===s.getProgramParameter(B,s.LINK_STATUS))z=!1,console.error("THREE.WebGLProgram: shader error: ",s.getError(),"gl.VALIDATE_STATUS",s.getProgramParameter(B,s.VALIDATE_STATUS),"gl.getProgramInfoLog",r,E,y);else if(""!==r)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",
r);else if(""===E||""===y)C=!1;C&&(this.diagnostics={runnable:z,material:q,programLog:r,vertexShader:{log:E,prefix:t},fragmentShader:{log:y,prefix:w}});s.deleteShader(u);s.deleteShader(A);var G;this.getUniforms=function(){void 0===G&&(G=new THREE.WebGLUniforms(s,B,a));return G};var J;this.getAttributes=function(){if(void 0===J){for(var a={},b=s.getProgramParameter(B,s.ACTIVE_ATTRIBUTES),c=0;c<b;c++){var d=s.getActiveAttrib(B,c).name;a[d]=s.getAttribLocation(B,d)}J=a}return J};this.destroy=function(){s.deleteProgram(B);
this.program=void 0};Object.defineProperties(this,{uniforms:{get:function(){console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms().");return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGLProgram: .attributes is now .getAttributes().");return this.getAttributes()}}});this.id=m++;this.code=n;this.usedTimes=1;this.program=B;this.vertexShader=u;this.fragmentShader=A;return this}}();
THREE.WebGLPrograms=function(a,b){function c(a,b){var c;a?a instanceof THREE.Texture?c=a.encoding:a instanceof THREE.WebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),c=a.texture.encoding):c=THREE.LinearEncoding;c===THREE.LinearEncoding&&b&&(c=THREE.GammaEncoding);return c}var d=[],e={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",
MeshPhongMaterial:"phong",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points"},f="precision supportsVertexTextures map mapEncoding envMap envMapMode envMapEncoding lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap displacementMap specularMap roughnessMap metalnessMap alphaMap combine vertexColors fog useFog fogExp flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes depthPacking".split(" ");
this.getParameters=function(d,f,k,l,m){var p=e[d.type],n;b.floatVertexTextures&&m&&m.skeleton&&m.skeleton.useVertexTexture?n=1024:(n=Math.floor((b.maxVertexUniforms-20)/4),void 0!==m&&m instanceof THREE.SkinnedMesh&&(n=Math.min(m.skeleton.bones.length,n),n<m.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+m.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));var q=a.getPrecision();null!==d.precision&&(q=b.getMaxPrecision(d.precision),q!==
......@@ -710,25 +710,25 @@ return c.join()};this.acquireProgram=function(b,c,e){for(var f,m=0,p=d.length;m<
THREE.WebGLProperties=function(){var a={};this.get=function(b){b=b.uuid;var c=a[b];void 0===c&&(c={},a[b]=c);return c};this.delete=function(b){delete a[b.uuid]};this.clear=function(){a={}}};
THREE.WebGLShader=function(){function a(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(b,c,d,e){var f=b.geometry,g=null,g=r,h=b.customDepthMaterial;d&&(g=s,h=b.customDistanceMaterial);h?g=h:(h=!1,c.morphTargets&&(f instanceof THREE.BufferGeometry?h=f.morphAttributes&&f.morphAttributes.position&&0<f.morphAttributes.position.length:f instanceof THREE.Geometry&&(h=f.morphTargets&&0<f.morphTargets.length)),b=b instanceof THREE.SkinnedMesh&&c.skinning,f=0,h&&(f|=1),b&&(f|=2),g=g[f]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&
(h=g.uuid,b=c.uuid,f=v[h],void 0===f&&(f={},v[h]=f),h=f[b],void 0===h&&(h=g.clone(),f[b]=h),g=h);g.visible=c.visible;g.wireframe=c.wireframe;b=c.side;A.renderSingleSided&&b==THREE.DoubleSide&&(b=THREE.FrontSide);A.renderReverseSided&&(b===THREE.FrontSide?b=THREE.BackSide:b===THREE.BackSide&&(b=THREE.FrontSide));g.side=b;g.clipShadows=c.clipShadows;g.clippingPlanes=c.clippingPlanes;g.wireframeLinewidth=c.wireframeLinewidth;g.linewidth=c.linewidth;d&&void 0!==g.uniforms.lightPos&&g.uniforms.lightPos.value.copy(e);
(h=g.uuid,b=c.uuid,f=v[h],void 0===f&&(f={},v[h]=f),h=f[b],void 0===h&&(h=g.clone(),f[b]=h),g=h);g.visible=c.visible;g.wireframe=c.wireframe;b=c.side;B.renderSingleSided&&b==THREE.DoubleSide&&(b=THREE.FrontSide);B.renderReverseSided&&(b===THREE.FrontSide?b=THREE.BackSide:b===THREE.BackSide&&(b=THREE.FrontSide));g.side=b;g.clipShadows=c.clipShadows;g.clippingPlanes=c.clippingPlanes;g.wireframeLinewidth=c.wireframeLinewidth;g.linewidth=c.linewidth;d&&void 0!==g.uniforms.lightPos&&g.uniforms.lightPos.value.copy(e);
return g}function e(a,b,c){if(!1!==a.visible){a.layers.test(b.layers)&&(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)&&a.castShadow&&(!1===a.frustumCulled||!0===h.intersectsObject(a))&&!0===a.material.visible&&(a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld),q.push(a));a=a.children;for(var d=0,f=a.length;d<f;d++)e(a[d],b,c)}}var f=a.context,g=a.state,h=new THREE.Frustum,k=new THREE.Matrix4,l=b.shadows,m=new THREE.Vector2,p=new THREE.Vector3,n=
new THREE.Vector3,q=[],r=Array(4),s=Array(4),v={},t=[new THREE.Vector3(1,0,0),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1),new THREE.Vector3(0,1,0),new THREE.Vector3(0,-1,0)],u=[new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1)],C=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4];b=new THREE.MeshDepthMaterial;
b.depthPacking=THREE.RGBADepthPacking;b.clipping=!0;for(var w=THREE.ShaderLib.distanceRGBA,E=THREE.UniformsUtils.clone(w.uniforms),y=0;4!==y;++y){var z=0!==(y&1),B=0!==(y&2),F=b.clone();F.morphTargets=z;F.skinning=B;r[y]=F;z=new THREE.ShaderMaterial({defines:{USE_SHADOWMAP:""},uniforms:E,vertexShader:w.vertexShader,fragmentShader:w.fragmentShader,morphTargets:z,skinning:B,clipping:!0});s[y]=z}var A=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.renderSingleSided=
this.renderReverseSided=!0;this.render=function(b,r){if(!1!==A.enabled&&(!1!==A.autoUpdate||!1!==A.needsUpdate)&&0!==l.length){g.clearColor(1,1,1,1);g.disable(f.BLEND);g.setDepthTest(!0);g.setScissorTest(!1);for(var s,w,v=0,z=l.length;v<z;v++){var y=l[v],B=y.shadow;if(void 0===B)console.warn("THREE.WebGLShadowMap:",y,"has no shadow.");else{var E=B.camera;m.copy(B.mapSize);if(y instanceof THREE.PointLight){s=6;w=!0;var L=m.x,D=m.y;C[0].set(2*L,D,L,D);C[1].set(0,D,L,D);C[2].set(3*L,D,L,D);C[3].set(L,
D,L,D);C[4].set(3*L,0,L,D);C[5].set(L,0,L,D);m.x*=4;m.y*=2}else s=1,w=!1;null===B.map&&(B.map=new THREE.WebGLRenderTarget(m.x,m.y,{minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),E.updateProjectionMatrix());B instanceof THREE.SpotLightShadow&&B.update(y);L=B.map;B=B.matrix;n.setFromMatrixPosition(y.matrixWorld);E.position.copy(n);a.setRenderTarget(L);a.clear();for(L=0;L<s;L++){w?(p.copy(E.position),p.add(t[L]),E.up.copy(u[L]),E.lookAt(p),g.viewport(C[L])):(p.setFromMatrixPosition(y.target.matrixWorld),
E.lookAt(p));E.updateMatrixWorld();E.matrixWorldInverse.getInverse(E.matrixWorld);B.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);B.multiply(E.projectionMatrix);B.multiply(E.matrixWorldInverse);k.multiplyMatrices(E.projectionMatrix,E.matrixWorldInverse);h.setFromMatrix(k);q.length=0;e(b,r,E);for(var D=0,I=q.length;D<I;D++){var F=q[D],T=c.update(F),X=F.material;if(X instanceof THREE.MultiMaterial)for(var ja=T.groups,X=X.materials,ba=0,ia=ja.length;ba<ia;ba++){var V=ja[ba],Y=X[V.materialIndex];!0===Y.visible&&
(Y=d(F,Y,w,n),a.renderBufferDirect(E,null,T,Y,F,V))}else Y=d(F,X,w,n),a.renderBufferDirect(E,null,T,Y,F,null)}}}}s=a.getClearColor();w=a.getClearAlpha();a.setClearColor(s,w);A.needsUpdate=!1}}};
new THREE.Vector3,q=[],r=Array(4),s=Array(4),v={},t=[new THREE.Vector3(1,0,0),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1),new THREE.Vector3(0,1,0),new THREE.Vector3(0,-1,0)],u=[new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1)],A=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4];b=new THREE.MeshDepthMaterial;
b.depthPacking=THREE.RGBADepthPacking;b.clipping=!0;for(var w=THREE.ShaderLib.distanceRGBA,E=THREE.UniformsUtils.clone(w.uniforms),y=0;4!==y;++y){var z=0!==(y&1),C=0!==(y&2),F=b.clone();F.morphTargets=z;F.skinning=C;r[y]=F;z=new THREE.ShaderMaterial({defines:{USE_SHADOWMAP:""},uniforms:E,vertexShader:w.vertexShader,fragmentShader:w.fragmentShader,morphTargets:z,skinning:C,clipping:!0});s[y]=z}var B=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.renderSingleSided=
this.renderReverseSided=!0;this.render=function(b,r){if(!1!==B.enabled&&(!1!==B.autoUpdate||!1!==B.needsUpdate)&&0!==l.length){g.clearColor(1,1,1,1);g.disable(f.BLEND);g.setDepthTest(!0);g.setScissorTest(!1);for(var s,w,v=0,z=l.length;v<z;v++){var y=l[v],C=y.shadow;if(void 0===C)console.warn("THREE.WebGLShadowMap:",y,"has no shadow.");else{var E=C.camera;m.copy(C.mapSize);if(y instanceof THREE.PointLight){s=6;w=!0;var L=m.x,D=m.y;A[0].set(2*L,D,L,D);A[1].set(0,D,L,D);A[2].set(3*L,D,L,D);A[3].set(L,
D,L,D);A[4].set(3*L,0,L,D);A[5].set(L,0,L,D);m.x*=4;m.y*=2}else s=1,w=!1;null===C.map&&(C.map=new THREE.WebGLRenderTarget(m.x,m.y,{minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),E.updateProjectionMatrix());C instanceof THREE.SpotLightShadow&&C.update(y);L=C.map;C=C.matrix;n.setFromMatrixPosition(y.matrixWorld);E.position.copy(n);a.setRenderTarget(L);a.clear();for(L=0;L<s;L++){w?(p.copy(E.position),p.add(t[L]),E.up.copy(u[L]),E.lookAt(p),g.viewport(A[L])):(p.setFromMatrixPosition(y.target.matrixWorld),
E.lookAt(p));E.updateMatrixWorld();E.matrixWorldInverse.getInverse(E.matrixWorld);C.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);C.multiply(E.projectionMatrix);C.multiply(E.matrixWorldInverse);k.multiplyMatrices(E.projectionMatrix,E.matrixWorldInverse);h.setFromMatrix(k);q.length=0;e(b,r,E);for(var D=0,I=q.length;D<I;D++){var F=q[D],T=c.update(F),X=F.material;if(X instanceof THREE.MultiMaterial)for(var ja=T.groups,X=X.materials,ca=0,ia=ja.length;ca<ia;ca++){var V=ja[ca],Y=X[V.materialIndex];!0===Y.visible&&
(Y=d(F,Y,w,n),a.renderBufferDirect(E,null,T,Y,F,V))}else Y=d(F,X,w,n),a.renderBufferDirect(E,null,T,Y,F,null)}}}}s=a.getClearColor();w=a.getClearAlpha();a.setClearColor(s,w);B.needsUpdate=!1}}};
THREE.WebGLState=function(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}var e=this;this.buffers={color:new THREE.WebGLColorBuffer(a,this),depth:new THREE.WebGLDepthBuffer(a,this),stencil:new THREE.WebGLStencilBuffer(a,this)};var f=a.getParameter(a.MAX_VERTEX_ATTRIBS),g=new Uint8Array(f),
h=new Uint8Array(f),k=new Uint8Array(f),l={},m=null,p=null,n=null,q=null,r=null,s=null,v=null,t=null,u=!1,C=null,w=null,E=null,y=null,z=null,B=null,F=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),A=null,G={},J=new THREE.Vector4,P=new THREE.Vector4,K={};K[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);K[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);this.init=function(){this.clearColor(0,0,0,1);this.clearDepth(1);this.clearStencil(0);this.enable(a.DEPTH_TEST);this.setDepthFunc(THREE.LessEqualDepth);
h=new Uint8Array(f),k=new Uint8Array(f),l={},m=null,p=null,n=null,q=null,r=null,s=null,v=null,t=null,u=!1,A=null,w=null,E=null,y=null,z=null,C=null,F=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),B=null,G={},J=new THREE.Vector4,P=new THREE.Vector4,K={};K[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);K[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);this.init=function(){this.clearColor(0,0,0,1);this.clearDepth(1);this.clearStencil(0);this.enable(a.DEPTH_TEST);this.setDepthFunc(THREE.LessEqualDepth);
this.setFlipSided(!1);this.setCullFace(THREE.CullFaceBack);this.enable(a.CULL_FACE);this.enable(a.BLEND);this.setBlending(THREE.NormalBlending)};this.initAttributes=function(){for(var a=0,b=g.length;a<b;a++)g[a]=0};this.enableAttribute=function(c){g[c]=1;0===h[c]&&(a.enableVertexAttribArray(c),h[c]=1);0!==k[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),k[c]=0)};this.enableAttributeAndDivisor=function(b,c,d){g[b]=1;0===h[b]&&(a.enableVertexAttribArray(b),h[b]=1);k[b]!==c&&(d.vertexAttribDivisorANGLE(b,
c),k[b]=c)};this.disableUnusedAttributes=function(){for(var b=0,c=h.length;b!==c;++b)h[b]!==g[b]&&(a.disableVertexAttribArray(b),h[b]=0)};this.enable=function(b){!0!==l[b]&&(a.enable(b),l[b]=!0)};this.disable=function(b){!1!==l[b]&&(a.disable(b),l[b]=!1)};this.getCompressedTextureFormats=function(){if(null===m&&(m=[],b.get("WEBGL_compressed_texture_pvrtc")||b.get("WEBGL_compressed_texture_s3tc")||b.get("WEBGL_compressed_texture_etc1")))for(var c=a.getParameter(a.COMPRESSED_TEXTURE_FORMATS),d=0;d<
c.length;d++)m.push(c[d]);return m};this.setBlending=function(b,d,e,f,g,h,k,l){if(b!==THREE.NoBlending){this.enable(a.BLEND);if(b!==p||l!==u)b===THREE.AdditiveBlending?l?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE,a.ONE,a.ONE)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,a.ONE)):b===THREE.SubtractiveBlending?l?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.ZERO,a.ONE_MINUS_SRC_COLOR,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),
a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR)):b===THREE.MultiplyBlending?l?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.SRC_COLOR,a.ZERO,a.SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR)):l?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA)):(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)),
p=b,u=l;if(b===THREE.CustomBlending){g=g||d;h=h||e;k=k||f;if(d!==n||g!==s)a.blendEquationSeparate(c(d),c(g)),n=d,s=g;if(e!==q||f!==r||h!==v||k!==t)a.blendFuncSeparate(c(e),c(f),c(h),c(k)),q=e,r=f,v=h,t=k}else t=v=s=r=q=n=null}else this.disable(a.BLEND),p=b};this.setColorWrite=function(a){this.buffers.color.setMask(a)};this.setDepthTest=function(a){this.buffers.depth.setTest(a)};this.setDepthWrite=function(a){this.buffers.depth.setMask(a)};this.setDepthFunc=function(a){this.buffers.depth.setFunc(a)};
this.setStencilTest=function(a){this.buffers.stencil.setTest(a)};this.setStencilWrite=function(a){this.buffers.stencil.setMask(a)};this.setStencilFunc=function(a,b,c){this.buffers.stencil.setFunc(a,b,c)};this.setStencilOp=function(a,b,c){this.buffers.stencil.setOp(a,b,c)};this.setFlipSided=function(b){C!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),C=b)};this.setCullFace=function(b){b!==THREE.CullFaceNone?(this.enable(a.CULL_FACE),b!==w&&(b===THREE.CullFaceBack?a.cullFace(a.BACK):b===THREE.CullFaceFront?
a.cullFace(a.FRONT):a.cullFace(a.FRONT_AND_BACK))):this.disable(a.CULL_FACE);w=b};this.setLineWidth=function(b){b!==E&&(a.lineWidth(b),E=b)};this.setPolygonOffset=function(b,c,d){if(b){if(this.enable(a.POLYGON_OFFSET_FILL),y!==c||z!==d)a.polygonOffset(c,d),y=c,z=d}else this.disable(a.POLYGON_OFFSET_FILL)};this.getScissorTest=function(){return B};this.setScissorTest=function(b){(B=b)?this.enable(a.SCISSOR_TEST):this.disable(a.SCISSOR_TEST)};this.activeTexture=function(b){void 0===b&&(b=a.TEXTURE0+
F-1);A!==b&&(a.activeTexture(b),A=b)};this.bindTexture=function(b,c){null===A&&e.activeTexture();var d=G[A];void 0===d&&(d={type:void 0,texture:void 0},G[A]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||K[b]),d.type=b,d.texture=c};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.clearColor=function(a,b,c,d){this.buffers.color.setClear(a,
b,c,d)};this.clearDepth=function(a){this.buffers.depth.setClear(a)};this.clearStencil=function(a){this.buffers.stencil.setClear(a)};this.scissor=function(b){!1===J.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),J.copy(b))};this.viewport=function(b){!1===P.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),P.copy(b))};this.reset=function(){for(var b=0;b<h.length;b++)1===h[b]&&(a.disableVertexAttribArray(b),h[b]=0);l={};A=m=null;G={};w=C=p=null;this.buffers.color.reset();this.buffers.depth.reset();this.buffers.stencil.reset()}};
this.setStencilTest=function(a){this.buffers.stencil.setTest(a)};this.setStencilWrite=function(a){this.buffers.stencil.setMask(a)};this.setStencilFunc=function(a,b,c){this.buffers.stencil.setFunc(a,b,c)};this.setStencilOp=function(a,b,c){this.buffers.stencil.setOp(a,b,c)};this.setFlipSided=function(b){A!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),A=b)};this.setCullFace=function(b){b!==THREE.CullFaceNone?(this.enable(a.CULL_FACE),b!==w&&(b===THREE.CullFaceBack?a.cullFace(a.BACK):b===THREE.CullFaceFront?
a.cullFace(a.FRONT):a.cullFace(a.FRONT_AND_BACK))):this.disable(a.CULL_FACE);w=b};this.setLineWidth=function(b){b!==E&&(a.lineWidth(b),E=b)};this.setPolygonOffset=function(b,c,d){if(b){if(this.enable(a.POLYGON_OFFSET_FILL),y!==c||z!==d)a.polygonOffset(c,d),y=c,z=d}else this.disable(a.POLYGON_OFFSET_FILL)};this.getScissorTest=function(){return C};this.setScissorTest=function(b){(C=b)?this.enable(a.SCISSOR_TEST):this.disable(a.SCISSOR_TEST)};this.activeTexture=function(b){void 0===b&&(b=a.TEXTURE0+
F-1);B!==b&&(a.activeTexture(b),B=b)};this.bindTexture=function(b,c){null===B&&e.activeTexture();var d=G[B];void 0===d&&(d={type:void 0,texture:void 0},G[B]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||K[b]),d.type=b,d.texture=c};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.clearColor=function(a,b,c,d){this.buffers.color.setClear(a,
b,c,d)};this.clearDepth=function(a){this.buffers.depth.setClear(a)};this.clearStencil=function(a){this.buffers.stencil.setClear(a)};this.scissor=function(b){!1===J.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),J.copy(b))};this.viewport=function(b){!1===P.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),P.copy(b))};this.reset=function(){for(var b=0;b<h.length;b++)1===h[b]&&(a.disableVertexAttribArray(b),h[b]=0);l={};B=m=null;G={};w=A=p=null;this.buffers.color.reset();this.buffers.depth.reset();this.buffers.stencil.reset()}};
THREE.WebGLColorBuffer=function(a,b){var c=!1,d=new THREE.Vector4,e=null,f=new THREE.Vector4;this.setMask=function(b){e===b||c||(a.colorMask(b,b,b,b),e=b)};this.setLocked=function(a){c=a};this.setClear=function(b,c,e,l){d.set(b,c,e,l);!1===f.equals(d)&&(a.clearColor(b,c,e,l),f.copy(d))};this.reset=function(){c=!1;e=null;f=new THREE.Vector4}};
THREE.WebGLDepthBuffer=function(a,b){var c=!1,d=null,e=null,f=null;this.setTest=function(c){c?b.enable(a.DEPTH_TEST):b.disable(a.DEPTH_TEST)};this.setMask=function(b){d===b||c||(a.depthMask(b),d=b)};this.setFunc=function(b){if(e!==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);e=b}};this.setLocked=function(a){c=a};this.setClear=function(b){f!==b&&(a.clearDepth(b),f=b)};this.reset=function(){c=!1;f=e=d=null}};
......@@ -740,15 +740,15 @@ e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTextu
b.image;if(void 0===n)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",b);else if(!1===n.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",b);else{void 0===l.__webglInit&&(l.__webglInit=!0,b.addEventListener("dispose",m),l.__webglTexture=a.createTexture(),v.textures++);c.activeTexture(a.TEXTURE0+g);c.bindTexture(a.TEXTURE_2D,l.__webglTexture);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,
b.premultiplyAlpha);a.pixelStorei(a.UNPACK_ALIGNMENT,b.unpackAlignment);var p=h(b.image,e.maxTextureSize);if((b.wrapS!==THREE.ClampToEdgeWrapping||b.wrapT!==THREE.ClampToEdgeWrapping||b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter)&&!1===k(p))if(n=p,n instanceof HTMLImageElement||n instanceof HTMLCanvasElement){var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=THREE.Math.nearestPowerOfTwo(n.width);r.height=THREE.Math.nearestPowerOfTwo(n.height);r.getContext("2d").drawImage(n,
0,0,r.width,r.height);console.warn("THREE.WebGLRenderer: image is not power of two ("+n.width+"x"+n.height+"). Resized to "+r.width+"x"+r.height,n);p=r}else p=n;var n=k(p),r=f(b.format),s=f(b.type);q(a.TEXTURE_2D,b,n);var F=b.mipmaps;if(b instanceof THREE.DepthTexture){F=a.DEPTH_COMPONENT;if(b.type===THREE.FloatType){if(!t)throw Error("Float Depth Texture only supported in WebGL2.0");F=a.DEPTH_COMPONENT32F}else t&&(F=a.DEPTH_COMPONENT16);c.texImage2D(a.TEXTURE_2D,0,F,p.width,p.height,0,r,s,null)}else if(b instanceof
THREE.DataTexture)if(0<F.length&&n){for(var A=0,G=F.length;A<G;A++)p=F[A],c.texImage2D(a.TEXTURE_2D,A,r,p.width,p.height,0,r,s,p.data);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,p.width,p.height,0,r,s,p.data);else if(b instanceof THREE.CompressedTexture)for(A=0,G=F.length;A<G;A++)p=F[A],b.format!==THREE.RGBAFormat&&b.format!==THREE.RGBFormat?-1<c.getCompressedTextureFormats().indexOf(r)?c.compressedTexImage2D(a.TEXTURE_2D,A,r,p.width,p.height,0,p.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
c.texImage2D(a.TEXTURE_2D,A,r,p.width,p.height,0,r,s,p.data);else if(0<F.length&&n){A=0;for(G=F.length;A<G;A++)p=F[A],c.texImage2D(a.TEXTURE_2D,A,r,r,s,p);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,r,s,p);b.generateMipmaps&&n&&a.generateMipmap(a.TEXTURE_2D);l.__version=b.version;if(b.onUpdate)b.onUpdate(b);return}}c.activeTexture(a.TEXTURE0+g);c.bindTexture(a.TEXTURE_2D,l.__webglTexture)}function q(c,g,h){h?(a.texParameteri(c,a.TEXTURE_WRAP_S,f(g.wrapS)),a.texParameteri(c,a.TEXTURE_WRAP_T,
THREE.DataTexture)if(0<F.length&&n){for(var B=0,G=F.length;B<G;B++)p=F[B],c.texImage2D(a.TEXTURE_2D,B,r,p.width,p.height,0,r,s,p.data);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,p.width,p.height,0,r,s,p.data);else if(b instanceof THREE.CompressedTexture)for(B=0,G=F.length;B<G;B++)p=F[B],b.format!==THREE.RGBAFormat&&b.format!==THREE.RGBFormat?-1<c.getCompressedTextureFormats().indexOf(r)?c.compressedTexImage2D(a.TEXTURE_2D,B,r,p.width,p.height,0,p.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
c.texImage2D(a.TEXTURE_2D,B,r,p.width,p.height,0,r,s,p.data);else if(0<F.length&&n){B=0;for(G=F.length;B<G;B++)p=F[B],c.texImage2D(a.TEXTURE_2D,B,r,r,s,p);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,r,s,p);b.generateMipmaps&&n&&a.generateMipmap(a.TEXTURE_2D);l.__version=b.version;if(b.onUpdate)b.onUpdate(b);return}}c.activeTexture(a.TEXTURE0+g);c.bindTexture(a.TEXTURE_2D,l.__webglTexture)}function q(c,g,h){h?(a.texParameteri(c,a.TEXTURE_WRAP_S,f(g.wrapS)),a.texParameteri(c,a.TEXTURE_WRAP_T,
f(g.wrapT)),a.texParameteri(c,a.TEXTURE_MAG_FILTER,f(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,f(g.minFilter))):(a.texParameteri(c,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),g.wrapS===THREE.ClampToEdgeWrapping&&g.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.",g),a.texParameteri(c,a.TEXTURE_MAG_FILTER,l(g.magFilter)),
a.texParameteri(c,a.TEXTURE_MIN_FILTER,l(g.minFilter)),g.minFilter!==THREE.NearestFilter&&g.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.",g));!(h=b.get("EXT_texture_filter_anisotropic"))||g.type===THREE.FloatType&&null===b.get("OES_texture_float_linear")||g.type===THREE.HalfFloatType&&null===b.get("OES_texture_half_float_linear")||!(1<g.anisotropy||d.get(g).__currentAnisotropy)||
(a.texParameterf(c,h.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,e.getMaxAnisotropy())),d.get(g).__currentAnisotropy=g.anisotropy)}function r(b,e,g,h){var k=f(e.texture.format),l=f(e.texture.type);c.texImage2D(h,0,k,e.width,e.height,0,k,l,null);a.bindFramebuffer(a.FRAMEBUFFER,b);a.framebufferTexture2D(a.FRAMEBUFFER,g,h,d.get(e.texture).__webglTexture,0);a.bindFramebuffer(a.FRAMEBUFFER,null)}function s(b,c){a.bindRenderbuffer(a.RENDERBUFFER,b);c.depthBuffer&&!c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,
a.DEPTH_COMPONENT16,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,b)):c.depthBuffer&&c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_STENCIL,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.RENDERBUFFER,b)):a.renderbufferStorage(a.RENDERBUFFER,a.RGBA4,c.width,c.height);a.bindRenderbuffer(a.RENDERBUFFER,null)}var v=g.memory,t="undefined"!==typeof WebGL2RenderingContext&&a instanceof WebGL2RenderingContext;
this.setTexture2D=n;this.setTextureCube=function(b,g){var l=d.get(b);if(6===b.image.length)if(0<b.version&&l.__version!==b.version){l.__image__webglTextureCube||(b.addEventListener("dispose",m),l.__image__webglTextureCube=a.createTexture(),v.textures++);c.activeTexture(a.TEXTURE0+g);c.bindTexture(a.TEXTURE_CUBE_MAP,l.__image__webglTextureCube);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);for(var n=b instanceof THREE.CompressedTexture,p=b.image[0]instanceof THREE.DataTexture,r=[],s=0;6>s;s++)r[s]=
n||p?p?b.image[s].image:b.image[s]:h(b.image[s],e.maxCubemapSize);var t=k(r[0]),A=f(b.format),G=f(b.type);q(a.TEXTURE_CUBE_MAP,b,t);for(s=0;6>s;s++)if(n)for(var J,P=r[s].mipmaps,K=0,H=P.length;K<H;K++)J=P[K],b.format!==THREE.RGBAFormat&&b.format!==THREE.RGBFormat?-1<c.getCompressedTextureFormats().indexOf(A)?c.compressedTexImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,K,A,J.width,J.height,0,J.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):
c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,K,A,J.width,J.height,0,A,G,J.data);else p?c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,A,r[s].width,r[s].height,0,A,G,r[s].data):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,A,A,G,r[s]);b.generateMipmaps&&t&&a.generateMipmap(a.TEXTURE_CUBE_MAP);l.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(a.TEXTURE0+g),c.bindTexture(a.TEXTURE_CUBE_MAP,l.__image__webglTextureCube)};this.setTextureCubeDynamic=function(b,e){c.activeTexture(a.TEXTURE0+
n||p?p?b.image[s].image:b.image[s]:h(b.image[s],e.maxCubemapSize);var t=k(r[0]),B=f(b.format),G=f(b.type);q(a.TEXTURE_CUBE_MAP,b,t);for(s=0;6>s;s++)if(n)for(var J,P=r[s].mipmaps,K=0,H=P.length;K<H;K++)J=P[K],b.format!==THREE.RGBAFormat&&b.format!==THREE.RGBFormat?-1<c.getCompressedTextureFormats().indexOf(B)?c.compressedTexImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,K,B,J.width,J.height,0,J.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):
c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,K,B,J.width,J.height,0,B,G,J.data);else p?c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,B,r[s].width,r[s].height,0,B,G,r[s].data):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,B,B,G,r[s]);b.generateMipmaps&&t&&a.generateMipmap(a.TEXTURE_CUBE_MAP);l.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(a.TEXTURE0+g),c.bindTexture(a.TEXTURE_CUBE_MAP,l.__image__webglTextureCube)};this.setTextureCubeDynamic=function(b,e){c.activeTexture(a.TEXTURE0+
e);c.bindTexture(a.TEXTURE_CUBE_MAP,d.get(b).__webglTexture)};this.setupRenderTarget=function(b){var e=d.get(b),f=d.get(b.texture);b.addEventListener("dispose",p);f.__webglTexture=a.createTexture();v.textures++;var g=b instanceof THREE.WebGLRenderTargetCube,h=k(b);if(g){e.__webglFramebuffer=[];for(var l=0;6>l;l++)e.__webglFramebuffer[l]=a.createFramebuffer()}else e.__webglFramebuffer=a.createFramebuffer();if(g){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);q(a.TEXTURE_CUBE_MAP,b.texture,h);for(l=
0;6>l;l++)r(e.__webglFramebuffer[l],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+l);b.texture.generateMipmaps&&h&&a.generateMipmap(a.TEXTURE_CUBE_MAP);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,f.__webglTexture),q(a.TEXTURE_2D,b.texture,h),r(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),b.texture.generateMipmaps&&h&&a.generateMipmap(a.TEXTURE_2D),c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=b instanceof THREE.WebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets");
if(b instanceof THREE.WebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported!");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!(b.depthTexture instanceof THREE.DepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=
......@@ -756,29 +756,29 @@ if(b instanceof THREE.WebGLRenderTargetCube)throw Error("Depth Texture with cube
function(b){var e=b.texture;e.generateMipmaps&&k(b)&&e.minFilter!==THREE.NearestFilter&&e.minFilter!==THREE.LinearFilter&&(b=b instanceof THREE.WebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,e=d.get(e).__webglTexture,c.bindTexture(b,e),a.generateMipmap(b),c.bindTexture(b,null))}};
THREE.WebGLUniforms=function(){var a=new THREE.Texture,b=new THREE.CubeTexture,c=[],d=[],e=function(a,b,d){var e=a[0];if(0>=e||0<e)return a;var f=b*d,g=c[f];void 0===g&&(g=new Float32Array(f),c[f]=g);if(0!==b)for(e.toArray(g,0),e=1,f=0;e!==b;++e)f+=d,a[e].toArray(g,f);return g},f=function(a,b){var c=d[b];void 0===c&&(c=new Int32Array(b),d[b]=c);for(var e=0;e!==b;++e)c[e]=a.allocTextureUnit();return c},g=function(a,b){a.uniform1f(this.addr,b)},h=function(a,b){a.uniform1i(this.addr,b)},k=function(a,
b){void 0===b.x?a.uniform2fv(this.addr,b):a.uniform2f(this.addr,b.x,b.y)},l=function(a,b){void 0!==b.x?a.uniform3f(this.addr,b.x,b.y,b.z):void 0!==b.r?a.uniform3f(this.addr,b.r,b.g,b.b):a.uniform3fv(this.addr,b)},m=function(a,b){void 0===b.x?a.uniform4fv(this.addr,b):a.uniform4f(this.addr,b.x,b.y,b.z,b.w)},p=function(a,b){a.uniformMatrix2fv(this.addr,!1,b.elements||b)},n=function(a,b){a.uniformMatrix3fv(this.addr,!1,b.elements||b)},q=function(a,b){a.uniformMatrix4fv(this.addr,!1,b.elements||b)},r=
function(b,c,d){var e=d.allocTextureUnit();b.uniform1i(this.addr,e);d.setTexture2D(c||a,e)},s=function(a,c,d){var e=d.allocTextureUnit();a.uniform1i(this.addr,e);d.setTextureCube(c||b,e)},v=function(a,b){a.uniform2iv(this.addr,b)},t=function(a,b){a.uniform3iv(this.addr,b)},u=function(a,b){a.uniform4iv(this.addr,b)},C=function(a){switch(a){case 5126:return g;case 35664:return k;case 35665:return l;case 35666:return m;case 35674:return p;case 35675:return n;case 35676:return q;case 35678:return r;case 35680:return s;
case 5124:case 35670:return h;case 35667:case 35671:return v;case 35668:case 35672:return t;case 35669:case 35673:return u}},w=function(a,b){a.uniform1fv(this.addr,b)},E=function(a,b){a.uniform1iv(this.addr,b)},y=function(a,b){a.uniform2fv(this.addr,e(b,this.size,2))},z=function(a,b){a.uniform3fv(this.addr,e(b,this.size,3))},B=function(a,b){a.uniform4fv(this.addr,e(b,this.size,4))},F=function(a,b){a.uniformMatrix2fv(this.addr,!1,e(b,this.size,4))},A=function(a,b){a.uniformMatrix3fv(this.addr,!1,e(b,
this.size,9))},G=function(a,b){a.uniformMatrix4fv(this.addr,!1,e(b,this.size,16))},J=function(b,c,d){var e=c.length,g=f(d,e);b.uniform1iv(this.addr,g);for(b=0;b!==e;++b)d.setTexture2D(c[b]||a,g[b])},P=function(a,c,d){var e=c.length,g=f(d,e);a.uniform1iv(this.addr,g);for(a=0;a!==e;++a)d.setTextureCube(c[a]||b,g[a])},K=function(a){switch(a){case 5126:return w;case 35664:return y;case 35665:return z;case 35666:return B;case 35674:return F;case 35675:return A;case 35676:return G;case 35678:return J;case 35680:return P;
case 5124:case 35670:return E;case 35667:case 35671:return v;case 35668:case 35672:return t;case 35669:case 35673:return u}},H=function(a,b,c){this.id=a;this.addr=c;this.setValue=C(b.type)},M=function(a,b,c){this.id=a;this.addr=c;this.size=b.size;this.setValue=K(b.type)},O=function(a){this.id=a;this.seq=[];this.map={}};O.prototype.setValue=function(a,b){for(var c=this.seq,d=0,e=c.length;d!==e;++d){var f=c[d];f.setValue(a,b[f.id])}};var N=/([\w\d_]+)(\])?(\[|\.)?/g,Q=function(a,b,c){this.seq=[];this.map=
function(b,c,d){var e=d.allocTextureUnit();b.uniform1i(this.addr,e);d.setTexture2D(c||a,e)},s=function(a,c,d){var e=d.allocTextureUnit();a.uniform1i(this.addr,e);d.setTextureCube(c||b,e)},v=function(a,b){a.uniform2iv(this.addr,b)},t=function(a,b){a.uniform3iv(this.addr,b)},u=function(a,b){a.uniform4iv(this.addr,b)},A=function(a){switch(a){case 5126:return g;case 35664:return k;case 35665:return l;case 35666:return m;case 35674:return p;case 35675:return n;case 35676:return q;case 35678:return r;case 35680:return s;
case 5124:case 35670:return h;case 35667:case 35671:return v;case 35668:case 35672:return t;case 35669:case 35673:return u}},w=function(a,b){a.uniform1fv(this.addr,b)},E=function(a,b){a.uniform1iv(this.addr,b)},y=function(a,b){a.uniform2fv(this.addr,e(b,this.size,2))},z=function(a,b){a.uniform3fv(this.addr,e(b,this.size,3))},C=function(a,b){a.uniform4fv(this.addr,e(b,this.size,4))},F=function(a,b){a.uniformMatrix2fv(this.addr,!1,e(b,this.size,4))},B=function(a,b){a.uniformMatrix3fv(this.addr,!1,e(b,
this.size,9))},G=function(a,b){a.uniformMatrix4fv(this.addr,!1,e(b,this.size,16))},J=function(b,c,d){var e=c.length,g=f(d,e);b.uniform1iv(this.addr,g);for(b=0;b!==e;++b)d.setTexture2D(c[b]||a,g[b])},P=function(a,c,d){var e=c.length,g=f(d,e);a.uniform1iv(this.addr,g);for(a=0;a!==e;++a)d.setTextureCube(c[a]||b,g[a])},K=function(a){switch(a){case 5126:return w;case 35664:return y;case 35665:return z;case 35666:return C;case 35674:return F;case 35675:return B;case 35676:return G;case 35678:return J;case 35680:return P;
case 5124:case 35670:return E;case 35667:case 35671:return v;case 35668:case 35672:return t;case 35669:case 35673:return u}},H=function(a,b,c){this.id=a;this.addr=c;this.setValue=A(b.type)},M=function(a,b,c){this.id=a;this.addr=c;this.size=b.size;this.setValue=K(b.type)},O=function(a){this.id=a;this.seq=[];this.map={}};O.prototype.setValue=function(a,b){for(var c=this.seq,d=0,e=c.length;d!==e;++d){var f=c[d];f.setValue(a,b[f.id])}};var N=/([\w\d_]+)(\])?(\[|\.)?/g,Q=function(a,b,c){this.seq=[];this.map=
{};this.renderer=c;c=a.getProgramParameter(b,a.ACTIVE_UNIFORMS);for(var d=0;d!==c;++d){var e=a.getActiveUniform(b,d),f=a.getUniformLocation(b,e.name),g=this,h=e.name,k=h.length;for(N.lastIndex=0;;){var l=N.exec(h),m=N.lastIndex,n=l[1],p=l[3];"]"===l[2]&&(n|=0);if(void 0===p||"["===p&&m+2===k){h=g;e=void 0===p?new H(n,e,f):new M(n,e,f);h.seq.push(e);h.map[e.id]=e;break}else p=g.map[n],void 0===p&&(p=new O(n),n=g,g=p,n.seq.push(g),n.map[g.id]=g),g=p}}};Q.prototype.setValue=function(a,b,c){b=this.map[b];
void 0!==b&&b.setValue(a,c,this.renderer)};Q.prototype.set=function(a,b,c){var d=this.map[c];void 0!==d&&d.setValue(a,b[c],this.renderer)};Q.prototype.setOptional=function(a,b,c){b=b[c];void 0!==b&&this.setValue(a,c,b)};Q.upload=function(a,b,c,d){for(var e=0,f=b.length;e!==f;++e){var g=b[e],h=c[g.id];!1!==h.needsUpdate&&g.setValue(a,h.value,d)}};Q.seqWithValue=function(a,b){for(var c=[],d=0,e=a.length;d!==e;++d){var f=a[d];f.id in b&&c.push(f)}return c};Q.splitDynamic=function(a,b){for(var c=null,
d=a.length,e=0,f=0;f!==d;++f){var g=a[f],h=b[g.id];h&&!0===h.dynamic?(null===c&&(c=[]),c.push(g)):(e<f&&(a[e]=g),++e)}e<d&&(a.length=e);return c};Q.evalDynamic=function(a,b,c,d){for(var e=0,f=a.length;e!==f;++e){var g=b[a[e].id],h=g.onUpdateCallback;void 0!==h&&h.call(g,c,d)}};return Q}();
THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n=a.context,q=a.state,r,s,v,t,u,C;this.render=function(w,E,y){if(0!==b.length){w=new THREE.Vector3;var z=y.w/y.z,B=.5*y.z,F=.5*y.w,A=16/y.w,G=new THREE.Vector2(A*z,A),J=new THREE.Vector3(1,1,0),P=new THREE.Vector2(1,1),K=new THREE.Box2;K.min.set(0,0);K.max.set(y.z-16,y.w-16);if(void 0===t){var A=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),H=new Uint16Array([0,1,2,0,2,3]);r=n.createBuffer();s=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,
r);n.bufferData(n.ARRAY_BUFFER,A,n.STATIC_DRAW);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,s);n.bufferData(n.ELEMENT_ARRAY_BUFFER,H,n.STATIC_DRAW);u=n.createTexture();C=n.createTexture();q.bindTexture(n.TEXTURE_2D,u);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);q.bindTexture(n.TEXTURE_2D,C);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={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}",
THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n=a.context,q=a.state,r,s,v,t,u,A;this.render=function(w,E,y){if(0!==b.length){w=new THREE.Vector3;var z=y.w/y.z,C=.5*y.z,F=.5*y.w,B=16/y.w,G=new THREE.Vector2(B*z,B),J=new THREE.Vector3(1,1,0),P=new THREE.Vector2(1,1),K=new THREE.Box2;K.min.set(0,0);K.max.set(y.z-16,y.w-16);if(void 0===t){var B=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),H=new Uint16Array([0,1,2,0,2,3]);r=n.createBuffer();s=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,
r);n.bufferData(n.ARRAY_BUFFER,B,n.STATIC_DRAW);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,s);n.bufferData(n.ELEMENT_ARRAY_BUFFER,H,n.STATIC_DRAW);u=n.createTexture();A=n.createTexture();q.bindTexture(n.TEXTURE_2D,u);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);q.bindTexture(n.TEXTURE_2D,A);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 B=v={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}"},H=n.createProgram(),M=n.createShader(n.FRAGMENT_SHADER),
O=n.createShader(n.VERTEX_SHADER),N="precision "+a.getPrecision()+" float;\n";n.shaderSource(M,N+A.fragmentShader);n.shaderSource(O,N+A.vertexShader);n.compileShader(M);n.compileShader(O);n.attachShader(H,M);n.attachShader(H,O);n.linkProgram(H);t=H;m=n.getAttribLocation(t,"position");p=n.getAttribLocation(t,"uv");c=n.getUniformLocation(t,"renderType");d=n.getUniformLocation(t,"map");e=n.getUniformLocation(t,"occlusionMap");f=n.getUniformLocation(t,"opacity");g=n.getUniformLocation(t,"color");h=n.getUniformLocation(t,
"scale");k=n.getUniformLocation(t,"rotation");l=n.getUniformLocation(t,"screenPosition")}n.useProgram(t);q.initAttributes();q.enableAttribute(m);q.enableAttribute(p);q.disableUnusedAttributes();n.uniform1i(e,0);n.uniform1i(d,1);n.bindBuffer(n.ARRAY_BUFFER,r);n.vertexAttribPointer(m,2,n.FLOAT,!1,16,0);n.vertexAttribPointer(p,2,n.FLOAT,!1,16,8);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,s);q.disable(n.CULL_FACE);q.setDepthWrite(!1);H=0;for(M=b.length;H<M;H++)if(A=16/y.w,G.set(A*z,A),O=b[H],w.set(O.matrixWorld.elements[12],
O.matrixWorld.elements[13],O.matrixWorld.elements[14]),w.applyMatrix4(E.matrixWorldInverse),w.applyProjection(E.projectionMatrix),J.copy(w),P.x=y.x+J.x*B+B-8,P.y=y.y+J.y*F+F-8,!0===K.containsPoint(P)){q.activeTexture(n.TEXTURE0);q.bindTexture(n.TEXTURE_2D,null);q.activeTexture(n.TEXTURE1);q.bindTexture(n.TEXTURE_2D,u);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGB,P.x,P.y,16,16,0);n.uniform1i(c,0);n.uniform2f(h,G.x,G.y);n.uniform3f(l,J.x,J.y,J.z);q.disable(n.BLEND);q.enable(n.DEPTH_TEST);n.drawElements(n.TRIANGLES,
6,n.UNSIGNED_SHORT,0);q.activeTexture(n.TEXTURE0);q.bindTexture(n.TEXTURE_2D,C);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,P.x,P.y,16,16,0);n.uniform1i(c,1);q.disable(n.DEPTH_TEST);q.activeTexture(n.TEXTURE1);q.bindTexture(n.TEXTURE_2D,u);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);O.positionScreen.copy(J);O.customUpdateCallback?O.customUpdateCallback(O):O.updateLensFlares();n.uniform1i(c,2);q.enable(n.BLEND);for(var N=0,Q=O.lensFlares.length;N<Q;N++){var L=O.lensFlares[N];.001<L.opacity&&.001<L.scale&&
(J.x=L.x,J.y=L.y,J.z=L.z,A=L.size*L.scale/y.w,G.x=A*z,G.y=A,n.uniform3f(l,J.x,J.y,J.z),n.uniform2f(h,G.x,G.y),n.uniform1f(k,L.rotation),n.uniform1f(f,L.opacity),n.uniform3f(g,L.color.r,L.color.g,L.color.b),q.setBlending(L.blending,L.blendEquation,L.blendSrc,L.blendDst),a.setTexture2D(L.texture,1),n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0))}}q.enable(n.CULL_FACE);q.enable(n.DEPTH_TEST);q.setDepthWrite(!0);a.resetGLState()}}};
THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n,q,r,s,v,t,u;function C(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:b.id-a.id}var w=a.context,E=a.state,y,z,B,F,A=new THREE.Vector3,G=new THREE.Quaternion,J=new THREE.Vector3;this.render=function(P,K){if(0!==b.length){if(void 0===B){var H=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),M=new Uint16Array([0,1,2,0,2,3]);y=w.createBuffer();z=w.createBuffer();w.bindBuffer(w.ARRAY_BUFFER,
O=n.createShader(n.VERTEX_SHADER),N="precision "+a.getPrecision()+" float;\n";n.shaderSource(M,N+B.fragmentShader);n.shaderSource(O,N+B.vertexShader);n.compileShader(M);n.compileShader(O);n.attachShader(H,M);n.attachShader(H,O);n.linkProgram(H);t=H;m=n.getAttribLocation(t,"position");p=n.getAttribLocation(t,"uv");c=n.getUniformLocation(t,"renderType");d=n.getUniformLocation(t,"map");e=n.getUniformLocation(t,"occlusionMap");f=n.getUniformLocation(t,"opacity");g=n.getUniformLocation(t,"color");h=n.getUniformLocation(t,
"scale");k=n.getUniformLocation(t,"rotation");l=n.getUniformLocation(t,"screenPosition")}n.useProgram(t);q.initAttributes();q.enableAttribute(m);q.enableAttribute(p);q.disableUnusedAttributes();n.uniform1i(e,0);n.uniform1i(d,1);n.bindBuffer(n.ARRAY_BUFFER,r);n.vertexAttribPointer(m,2,n.FLOAT,!1,16,0);n.vertexAttribPointer(p,2,n.FLOAT,!1,16,8);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,s);q.disable(n.CULL_FACE);q.setDepthWrite(!1);H=0;for(M=b.length;H<M;H++)if(B=16/y.w,G.set(B*z,B),O=b[H],w.set(O.matrixWorld.elements[12],
O.matrixWorld.elements[13],O.matrixWorld.elements[14]),w.applyMatrix4(E.matrixWorldInverse),w.applyProjection(E.projectionMatrix),J.copy(w),P.x=y.x+J.x*C+C-8,P.y=y.y+J.y*F+F-8,!0===K.containsPoint(P)){q.activeTexture(n.TEXTURE0);q.bindTexture(n.TEXTURE_2D,null);q.activeTexture(n.TEXTURE1);q.bindTexture(n.TEXTURE_2D,u);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGB,P.x,P.y,16,16,0);n.uniform1i(c,0);n.uniform2f(h,G.x,G.y);n.uniform3f(l,J.x,J.y,J.z);q.disable(n.BLEND);q.enable(n.DEPTH_TEST);n.drawElements(n.TRIANGLES,
6,n.UNSIGNED_SHORT,0);q.activeTexture(n.TEXTURE0);q.bindTexture(n.TEXTURE_2D,A);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,P.x,P.y,16,16,0);n.uniform1i(c,1);q.disable(n.DEPTH_TEST);q.activeTexture(n.TEXTURE1);q.bindTexture(n.TEXTURE_2D,u);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);O.positionScreen.copy(J);O.customUpdateCallback?O.customUpdateCallback(O):O.updateLensFlares();n.uniform1i(c,2);q.enable(n.BLEND);for(var N=0,Q=O.lensFlares.length;N<Q;N++){var L=O.lensFlares[N];.001<L.opacity&&.001<L.scale&&
(J.x=L.x,J.y=L.y,J.z=L.z,B=L.size*L.scale/y.w,G.x=B*z,G.y=B,n.uniform3f(l,J.x,J.y,J.z),n.uniform2f(h,G.x,G.y),n.uniform1f(k,L.rotation),n.uniform1f(f,L.opacity),n.uniform3f(g,L.color.r,L.color.g,L.color.b),q.setBlending(L.blending,L.blendEquation,L.blendSrc,L.blendDst),a.setTexture2D(L.texture,1),n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0))}}q.enable(n.CULL_FACE);q.enable(n.DEPTH_TEST);q.setDepthWrite(!0);a.resetGLState()}}};
THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,l,m,p,n,q,r,s,v,t,u;function A(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:b.id-a.id}var w=a.context,E=a.state,y,z,C,F,B=new THREE.Vector3,G=new THREE.Quaternion,J=new THREE.Vector3;this.render=function(P,K){if(0!==b.length){if(void 0===C){var H=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),M=new Uint16Array([0,1,2,0,2,3]);y=w.createBuffer();z=w.createBuffer();w.bindBuffer(w.ARRAY_BUFFER,
y);w.bufferData(w.ARRAY_BUFFER,H,w.STATIC_DRAW);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,z);w.bufferData(w.ELEMENT_ARRAY_BUFFER,M,w.STATIC_DRAW);var H=w.createProgram(),M=w.createShader(w.VERTEX_SHADER),O=w.createShader(w.FRAGMENT_SHADER);w.shaderSource(M,["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(O,["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(M);w.compileShader(O);w.attachShader(H,M);w.attachShader(H,O);w.linkProgram(H);B=H;t=w.getAttribLocation(B,"position");u=w.getAttribLocation(B,"uv");c=w.getUniformLocation(B,"uvOffset");d=w.getUniformLocation(B,"uvScale");e=w.getUniformLocation(B,"rotation");f=w.getUniformLocation(B,"scale");g=w.getUniformLocation(B,"color");h=w.getUniformLocation(B,"map");k=w.getUniformLocation(B,"opacity");l=w.getUniformLocation(B,"modelViewMatrix");m=w.getUniformLocation(B,"projectionMatrix");p=
w.getUniformLocation(B,"fogType");n=w.getUniformLocation(B,"fogDensity");q=w.getUniformLocation(B,"fogNear");r=w.getUniformLocation(B,"fogFar");s=w.getUniformLocation(B,"fogColor");v=w.getUniformLocation(B,"alphaTest");H=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");H.width=8;H.height=8;M=H.getContext("2d");M.fillStyle="white";M.fillRect(0,0,8,8);F=new THREE.Texture(H);F.needsUpdate=!0}w.useProgram(B);E.initAttributes();E.enableAttribute(t);E.enableAttribute(u);E.disableUnusedAttributes();
w.compileShader(M);w.compileShader(O);w.attachShader(H,M);w.attachShader(H,O);w.linkProgram(H);C=H;t=w.getAttribLocation(C,"position");u=w.getAttribLocation(C,"uv");c=w.getUniformLocation(C,"uvOffset");d=w.getUniformLocation(C,"uvScale");e=w.getUniformLocation(C,"rotation");f=w.getUniformLocation(C,"scale");g=w.getUniformLocation(C,"color");h=w.getUniformLocation(C,"map");k=w.getUniformLocation(C,"opacity");l=w.getUniformLocation(C,"modelViewMatrix");m=w.getUniformLocation(C,"projectionMatrix");p=
w.getUniformLocation(C,"fogType");n=w.getUniformLocation(C,"fogDensity");q=w.getUniformLocation(C,"fogNear");r=w.getUniformLocation(C,"fogFar");s=w.getUniformLocation(C,"fogColor");v=w.getUniformLocation(C,"alphaTest");H=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");H.width=8;H.height=8;M=H.getContext("2d");M.fillStyle="white";M.fillRect(0,0,8,8);F=new THREE.Texture(H);F.needsUpdate=!0}w.useProgram(C);E.initAttributes();E.enableAttribute(t);E.enableAttribute(u);E.disableUnusedAttributes();
E.disable(w.CULL_FACE);E.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,y);w.vertexAttribPointer(t,2,w.FLOAT,!1,16,0);w.vertexAttribPointer(u,2,w.FLOAT,!1,16,8);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,z);w.uniformMatrix4fv(m,!1,K.projectionMatrix.elements);E.activeTexture(w.TEXTURE0);w.uniform1i(h,0);M=H=0;(O=P.fog)?(w.uniform3f(s,O.color.r,O.color.g,O.color.b),O instanceof THREE.Fog?(w.uniform1f(q,O.near),w.uniform1f(r,O.far),w.uniform1i(p,1),M=H=1):O instanceof THREE.FogExp2&&(w.uniform1f(n,O.density),
w.uniform1i(p,2),M=H=2)):(w.uniform1i(p,0),M=H=0);for(var O=0,N=b.length;O<N;O++){var Q=b[O];Q.modelViewMatrix.multiplyMatrices(K.matrixWorldInverse,Q.matrixWorld);Q.z=-Q.modelViewMatrix.elements[14]}b.sort(C);for(var L=[],O=0,N=b.length;O<N;O++){var Q=b[O],D=Q.material;!1!==D.visible&&(w.uniform1f(v,D.alphaTest),w.uniformMatrix4fv(l,!1,Q.modelViewMatrix.elements),Q.matrixWorld.decompose(A,G,J),L[0]=J.x,L[1]=J.y,Q=0,P.fog&&D.fog&&(Q=M),H!==Q&&(w.uniform1i(p,Q),H=Q),null!==D.map?(w.uniform2f(c,D.map.offset.x,
w.uniform1i(p,2),M=H=2)):(w.uniform1i(p,0),M=H=0);for(var O=0,N=b.length;O<N;O++){var Q=b[O];Q.modelViewMatrix.multiplyMatrices(K.matrixWorldInverse,Q.matrixWorld);Q.z=-Q.modelViewMatrix.elements[14]}b.sort(A);for(var L=[],O=0,N=b.length;O<N;O++){var Q=b[O],D=Q.material;!1!==D.visible&&(w.uniform1f(v,D.alphaTest),w.uniformMatrix4fv(l,!1,Q.modelViewMatrix.elements),Q.matrixWorld.decompose(B,G,J),L[0]=J.x,L[1]=J.y,Q=0,P.fog&&D.fog&&(Q=M),H!==Q&&(w.uniform1i(p,Q),H=Q),null!==D.map?(w.uniform2f(c,D.map.offset.x,
D.map.offset.y),w.uniform2f(d,D.map.repeat.x,D.map.repeat.y)):(w.uniform2f(c,0,0),w.uniform2f(d,1,1)),w.uniform1f(k,D.opacity),w.uniform3f(g,D.color.r,D.color.g,D.color.b),w.uniform1f(e,D.rotation),w.uniform2fv(f,L),E.setBlending(D.blending,D.blendEquation,D.blendSrc,D.blendDst),E.setDepthTest(D.depthTest),E.setDepthWrite(D.depthWrite),D.map?a.setTexture2D(D.map,0):a.setTexture2D(F,0),w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0))}E.enable(w.CULL_FACE);a.resetGLState()}}};
Object.assign(THREE,{Face4:function(a,b,c,d,e,f,g){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new THREE.Face3(a,b,c,e,f,g)},LineStrip:0,LinePieces:1,MeshFaceMaterial:THREE.MultiMaterial,PointCloud:function(a,b){console.warn("THREE.PointCloud has been renamed to THREE.Points.");return new THREE.Points(a,b)},Particle:THREE.Sprite,ParticleSystem:function(a,b){console.warn("THREE.ParticleSystem has been renamed to THREE.Points.");return new THREE.Points(a,
b)},PointCloudMaterial:function(a){console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.");return new THREE.PointsMaterial(a)},ParticleBasicMaterial:function(a){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.");return new THREE.PointsMaterial(a)},ParticleSystemMaterial:function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.");return new THREE.PointsMaterial(a)},Vertex:function(a,b,c){console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead.");
......@@ -825,13 +825,13 @@ THREE.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been mov
THREE.CurveUtils={tangentQuadraticBezier:function(a,b,c,d){return 2*(1-a)*(c-b)+2*a*(d-c)},tangentCubicBezier:function(a,b,c,d,e){return-3*b*(1-a)*(1-a)+3*c*(1-a)*(1-a)-6*a*c*(1-a)+6*a*d*(1-a)-3*a*a*d+3*a*a*e},tangentSpline:function(a,b,c,d,e){return 6*a*a-6*a+(3*a*a-4*a+1)+(-6*a*a+6*a)+(3*a*a-2*a)},interpolate:function(a,b,c,d,e){a=.5*(c-a);d=.5*(d-b);var f=e*e;return(2*b-2*c+a+d)*e*f+(-3*b+3*c-2*a-d)*f+a*e+b}};
THREE.SceneUtils={createMultiMaterialObject:function(a,b){for(var c=new THREE.Group,d=0,e=b.length;d<e;d++)c.add(new THREE.Mesh(a,b[d]));return c},detach:function(a,b,c){a.applyMatrix(b.matrixWorld);b.remove(a);c.add(a)},attach:function(a,b,c){var d=new THREE.Matrix4;d.getInverse(c.matrixWorld);a.applyMatrix(d);b.remove(a);c.add(a)}};
THREE.ShapeUtils={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e<b;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},triangulate:function(){return function(a,b){var c=a.length;if(3>c)return null;var d=[],e=[],f=[],g,h,k;if(0<THREE.ShapeUtils.area(a))for(h=0;h<c;h++)e[h]=h;else for(h=0;h<c;h++)e[h]=c-1-h;var l=2*c;for(h=c-1;2<c;){if(0>=l--){console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()");break}g=h;c<=g&&(g=0);h=g+1;c<=h&&(h=0);k=h+1;c<=k&&(k=0);var m;a:{var p=
m=void 0,n=void 0,q=void 0,r=void 0,s=void 0,v=void 0,t=void 0,u=void 0,p=a[e[g]].x,n=a[e[g]].y,q=a[e[h]].x,r=a[e[h]].y,s=a[e[k]].x,v=a[e[k]].y;if(Number.EPSILON>(q-p)*(v-n)-(r-n)*(s-p))m=!1;else{var C=void 0,w=void 0,E=void 0,y=void 0,z=void 0,B=void 0,F=void 0,A=void 0,G=void 0,J=void 0,G=A=F=u=t=void 0,C=s-q,w=v-r,E=p-s,y=n-v,z=q-p,B=r-n;for(m=0;m<c;m++)if(t=a[e[m]].x,u=a[e[m]].y,!(t===p&&u===n||t===q&&u===r||t===s&&u===v)&&(F=t-p,A=u-n,G=t-q,J=u-r,t-=s,u-=v,G=C*J-w*G,F=z*A-B*F,A=E*u-y*t,G>=-Number.EPSILON&&
A>=-Number.EPSILON&&F>=-Number.EPSILON)){m=!1;break a}m=!0}}if(m){d.push([a[e[g]],a[e[h]],a[e[k]]]);f.push([e[g],e[h],e[k]]);g=h;for(k=h+1;k<c;g++,k++)e[g]=e[k];c--;l=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(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 e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,l=e.y-c.y,m=a.x-c.x,n=a.y-c.y,p=h*k-
m=void 0,n=void 0,q=void 0,r=void 0,s=void 0,v=void 0,t=void 0,u=void 0,p=a[e[g]].x,n=a[e[g]].y,q=a[e[h]].x,r=a[e[h]].y,s=a[e[k]].x,v=a[e[k]].y;if(Number.EPSILON>(q-p)*(v-n)-(r-n)*(s-p))m=!1;else{var A=void 0,w=void 0,E=void 0,y=void 0,z=void 0,C=void 0,F=void 0,B=void 0,G=void 0,J=void 0,G=B=F=u=t=void 0,A=s-q,w=v-r,E=p-s,y=n-v,z=q-p,C=r-n;for(m=0;m<c;m++)if(t=a[e[m]].x,u=a[e[m]].y,!(t===p&&u===n||t===q&&u===r||t===s&&u===v)&&(F=t-p,B=u-n,G=t-q,J=u-r,t-=s,u-=v,G=A*J-w*G,F=z*B-C*F,B=E*u-y*t,G>=-Number.EPSILON&&
B>=-Number.EPSILON&&F>=-Number.EPSILON)){m=!1;break a}m=!0}}if(m){d.push([a[e[g]],a[e[h]],a[e[k]]]);f.push([e[g],e[h],e[k]]);g=h;for(k=h+1;k<c;g++,k++)e[g]=e[k];c--;l=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(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 e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,l=e.y-c.y,m=a.x-c.x,n=a.y-c.y,p=h*k-
g*l,F=h*m-g*n;if(Math.abs(p)>Number.EPSILON){if(0<p){if(0>F||F>p)return[];k=l*m-k*n;if(0>k||k>p)return[]}else{if(0<F||F<p)return[];k=l*m-k*n;if(0<k||k<p)return[]}if(0===k)return!f||0!==F&&F!==p?[a]:[];if(k===p)return!f||0!==F&&F!==p?[b]:[];if(0===F)return[c];if(F===p)return[e];f=k/p;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!==F||l*m!==k*n)return[];h=0===g&&0===h;k=0===k&&0===l;if(h&&k)return a.x!==c.x||a.y!==c.y?[]:[a];if(h)return d(c,e,a)?[a]:[];if(k)return d(a,b,c)?[c]:[];0!==g?(a.x<b.x?(g=a,k=a.x,h=b,
a=b.x):(g=b,k=b.x,h=a,a=a.x),c.x<e.x?(b=c,p=c.x,l=e,c=e.x):(b=e,p=e.x,l=c,c=c.x)):(a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),c.y<e.y?(b=c,p=c.y,l=e,c=e.y):(b=e,p=e.y,l=c,c=c.y));return k<=p?a<p?[]:a===p?f?[]:[b]:a<=c?[b,h]:[b,l]:k>c?[]:k===c?f?[]:[g]:a<=c?[g,h]:[g,l]}function f(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 Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}c(a);b.forEach(c);var g,h,k,l,m,p={};k=
a.concat();g=0;for(h=b.length;g<h;g++)Array.prototype.push.apply(k,b[g]);g=0;for(h=k.length;g<h;g++)m=k[g].x+":"+k[g].y,void 0!==p[m]&&console.warn("THREE.ShapeUtils: Duplicate point",m,g),p[m]=g;g=function(a,b){function c(a,b){var d=h.length-1,e=a-1;0>e&&(e=d);var g=a+1;g>d&&(g=0);d=f(h[a],h[e],h[g],k[b]);if(!d)return!1;d=k.length-1;e=b-1;0>e&&(e=d);g=b+1;g>d&&(g=0);return(d=f(k[b],k[e],k[g],h[a]))?!0:!1}function d(a,b){var c,f;for(c=0;c<h.length;c++)if(f=c+1,f%=h.length,f=e(a,b,h[c],h[f],!0),0<
f.length)return!0;return!1}function g(a,c){var d,f,h,k;for(d=0;d<l.length;d++)for(f=b[l[d]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=e(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],m,n,p,B,F,A=[],G,J,P,K=0;for(m=b.length;K<m;K++)l.push(K);G=0;for(var H=2*l.length;0<l.length;){H--;if(0>H){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(n=G;n<h.length;n++){p=h[n];m=-1;for(K=0;K<l.length;K++)if(B=l[K],F=p.x+":"+p.y+":"+B,void 0===
A[F]){k=b[B];for(J=0;J<k.length;J++)if(B=k[J],c(n,J)&&!d(p,B)&&!g(p,B)){m=J;l.splice(K,1);G=h.slice(0,n+1);B=h.slice(n);J=k.slice(m);P=k.slice(0,m+1);h=G.concat(J).concat(P).concat(B);G=n;break}if(0<=m)break;A[F]=!0}if(0<=m)break}}return h}(a,b);var n=THREE.ShapeUtils.triangulate(g,!1);g=0;for(h=n.length;g<h;g++)for(l=n[g],k=0;3>k;k++)m=l[k].x+":"+l[k].y,m=p[m],void 0!==m&&(l[k]=m);return n.concat()},isClockWise:function(a){return 0>THREE.ShapeUtils.area(a)},b2:function(){return function(a,b,c,d){var e=
f.length)return!0;return!1}function g(a,c){var d,f,h,k;for(d=0;d<l.length;d++)for(f=b[l[d]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=e(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],m,n,p,C,F,B=[],G,J,P,K=0;for(m=b.length;K<m;K++)l.push(K);G=0;for(var H=2*l.length;0<l.length;){H--;if(0>H){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(n=G;n<h.length;n++){p=h[n];m=-1;for(K=0;K<l.length;K++)if(C=l[K],F=p.x+":"+p.y+":"+C,void 0===
B[F]){k=b[C];for(J=0;J<k.length;J++)if(C=k[J],c(n,J)&&!d(p,C)&&!g(p,C)){m=J;l.splice(K,1);G=h.slice(0,n+1);C=h.slice(n);J=k.slice(m);P=k.slice(0,m+1);h=G.concat(J).concat(P).concat(C);G=n;break}if(0<=m)break;B[F]=!0}if(0<=m)break}}return h}(a,b);var n=THREE.ShapeUtils.triangulate(g,!1);g=0;for(h=n.length;g<h;g++)for(l=n[g],k=0;3>k;k++)m=l[k].x+":"+l[k].y,m=p[m],void 0!==m&&(l[k]=m);return n.concat()},isClockWise:function(a){return 0>THREE.ShapeUtils.area(a)},b2:function(){return function(a,b,c,d){var e=
1-a;return e*e*b+2*(1-a)*a*c+a*a*d}}(),b3:function(){return function(a,b,c,d,e){var f=1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}}()};THREE.Curve=function(){};
THREE.Curve.prototype={constructor:THREE.Curve,getPoint:function(a){console.warn("THREE.Curve: Warning, getPoint() not implemented!");return null},getPointAt:function(a){a=this.getUtoTmapping(a);return this.getPoint(a)},getPoints:function(a){a||(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));return b},getSpacedPoints:function(a){a||(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPointAt(c/a));return b},getLength:function(){var a=this.getLengths();return a[a.length-1]},getLengths:function(a){a||
(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200);if(this.cacheArcLengths&&this.cacheArcLengths.length===a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c,d=this.getPoint(0),e,f=0;b.push(0);for(e=1;e<=a;e++)c=this.getPoint(e/a),f+=c.distanceTo(d),b.push(f),d=c;return this.cacheArcLengths=b},updateArcLengths:function(){this.needsUpdate=!0;this.getLengths()},getUtoTmapping:function(a,b){var c=this.getLengths(),d=0,e=c.length,f;f=b?b:a*c[e-1];for(var g=0,h=e-
......@@ -839,10 +839,10 @@ THREE.Curve.prototype={constructor:THREE.Curve,getPoint:function(a){console.warn
THREE.Curve.create=function(a,b){a.prototype=Object.create(THREE.Curve.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};THREE.CurvePath=function(){this.curves=[];this.autoClose=!1};
THREE.CurvePath.prototype=Object.assign(Object.create(THREE.Curve.prototype),{constructor:THREE.CurvePath,add:function(a){this.curves.push(a)},closePath:function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length-1].getPoint(1);a.equals(b)||this.curves.push(new THREE.LineCurve(b,a))},getPoint:function(a){var b=a*this.getLength(),c=this.getCurveLengths();for(a=0;a<c.length;){if(c[a]>=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=
this.getCurveLengths();return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;c<d;c++)b+=this.curves[c].getLength(),a.push(b);return this.cacheLengths=a},getSpacedPoints:function(a){a||(a=40);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));this.autoClose&&b.push(b[0]);return b},
getPoints:function(a){a=a||12;for(var b=[],c,d=0,e=this.curves;d<e.length;d++)for(var f=e[d],f=f.getPoints(f instanceof THREE.LineCurve?1:a),g=0;g<f.length;g++){var h=f[g];c&&c.equals(h)||(b.push(h),c=h)}this.autoClose&&1<b.length&&!b[b.length-1].equals(b[0])&&b.push(b[0]);return b},createPointsGeometry:function(a){a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){for(var b=
new THREE.Geometry,c=0,d=a.length;c<d;c++){var e=a[c];b.vertices.push(new THREE.Vector3(e.x,e.y,e.z||0))}return b}});THREE.Font=function(a){this.data=a};
Object.assign(THREE.Font.prototype,{generateShapes:function(a,b,c){void 0===b&&(b=100);void 0===c&&(c=4);var d=this.data;a=String(a).split("");var e=b/d.resolution,f=0;b=[];for(var g=0;g<a.length;g++){var h;h=e;var k=f,l=d.glyphs[a[g]]||d.glyphs["?"];if(l){var m=new THREE.ShapePath,p=[],n=THREE.ShapeUtils.b2,q=THREE.ShapeUtils.b3,r=void 0,s=void 0,v=s=r=void 0,t=void 0,u=void 0,C=void 0,w=void 0,E=void 0,t=void 0;if(l.o)for(var y=l._cachedOutline||(l._cachedOutline=l.o.split(" ")),z=0,B=y.length;z<
B;)switch(y[z++]){case "m":r=y[z++]*h+k;s=y[z++]*h;m.moveTo(r,s);break;case "l":r=y[z++]*h+k;s=y[z++]*h;m.lineTo(r,s);break;case "q":r=y[z++]*h+k;s=y[z++]*h;u=y[z++]*h+k;C=y[z++]*h;m.quadraticCurveTo(u,C,r,s);if(t=p[p.length-1])for(var v=t.x,t=t.y,F=1;F<=c;F++){var A=F/c;n(A,v,u,r);n(A,t,C,s)}break;case "b":if(r=y[z++]*h+k,s=y[z++]*h,u=y[z++]*h+k,C=y[z++]*h,w=y[z++]*h+k,E=y[z++]*h,m.bezierCurveTo(u,C,w,E,r,s),t=p[p.length-1])for(v=t.x,t=t.y,F=1;F<=c;F++)A=F/c,q(A,v,u,w,r),q(A,t,C,E,s)}h={offset:l.ha*
getPoints:function(a){a=a||12;for(var b=[],c,d=0,e=this.curves;d<e.length;d++)for(var f=e[d],f=f.getPoints(f instanceof THREE.EllipseCurve?2*a:f instanceof THREE.LineCurve?1:f instanceof THREE.SplineCurve?a*f.points.length:a),g=0;g<f.length;g++){var h=f[g];c&&c.equals(h)||(b.push(h),c=h)}this.autoClose&&1<b.length&&!b[b.length-1].equals(b[0])&&b.push(b[0]);return b},createPointsGeometry:function(a){a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){a=this.getSpacedPoints(a);
return this.createGeometry(a)},createGeometry:function(a){for(var b=new THREE.Geometry,c=0,d=a.length;c<d;c++){var e=a[c];b.vertices.push(new THREE.Vector3(e.x,e.y,e.z||0))}return b}});THREE.Font=function(a){this.data=a};
Object.assign(THREE.Font.prototype,{generateShapes:function(a,b,c){void 0===b&&(b=100);void 0===c&&(c=4);var d=this.data;a=String(a).split("");var e=b/d.resolution,f=0;b=[];for(var g=0;g<a.length;g++){var h;h=e;var k=f,l=d.glyphs[a[g]]||d.glyphs["?"];if(l){var m=new THREE.ShapePath,p=[],n=THREE.ShapeUtils.b2,q=THREE.ShapeUtils.b3,r=void 0,s=void 0,v=s=r=void 0,t=void 0,u=void 0,A=void 0,w=void 0,E=void 0,t=void 0;if(l.o)for(var y=l._cachedOutline||(l._cachedOutline=l.o.split(" ")),z=0,C=y.length;z<
C;)switch(y[z++]){case "m":r=y[z++]*h+k;s=y[z++]*h;m.moveTo(r,s);break;case "l":r=y[z++]*h+k;s=y[z++]*h;m.lineTo(r,s);break;case "q":r=y[z++]*h+k;s=y[z++]*h;u=y[z++]*h+k;A=y[z++]*h;m.quadraticCurveTo(u,A,r,s);if(t=p[p.length-1])for(var v=t.x,t=t.y,F=1;F<=c;F++){var B=F/c;n(B,v,u,r);n(B,t,A,s)}break;case "b":if(r=y[z++]*h+k,s=y[z++]*h,u=y[z++]*h+k,A=y[z++]*h,w=y[z++]*h+k,E=y[z++]*h,m.bezierCurveTo(u,A,w,E,r,s),t=p[p.length-1])for(v=t.x,t=t.y,F=1;F<=c;F++)B=F/c,q(B,v,u,w,r),q(B,t,A,E,s)}h={offset:l.ha*
h,path:m}}else h=void 0;f+=h.offset;b.push(h.path)}c=[];d=0;for(a=b.length;d<a;d++)Array.prototype.push.apply(c,b[d].toShapes());return c}});THREE.Path=function(a){THREE.CurvePath.call(this);this.currentPoint=new THREE.Vector2;a&&this.fromPoints(a)};
THREE.Path.prototype=Object.assign(Object.create(THREE.CurvePath.prototype),{constructor:THREE.Path,fromPoints:function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;b<c;b++)this.lineTo(a[b].x,a[b].y)},moveTo:function(a,b){this.currentPoint.set(a,b)},lineTo:function(a,b){var c=new THREE.LineCurve(this.currentPoint.clone(),new THREE.Vector2(a,b));this.curves.push(c);this.currentPoint.set(a,b)},quadraticCurveTo:function(a,b,c,d){a=new THREE.QuadraticBezierCurve(this.currentPoint.clone(),new THREE.Vector2(a,
b),new THREE.Vector2(c,d));this.curves.push(a);this.currentPoint.set(c,d)},bezierCurveTo:function(a,b,c,d,e,f){a=new THREE.CubicBezierCurve(this.currentPoint.clone(),new THREE.Vector2(a,b),new THREE.Vector2(c,d),new THREE.Vector2(e,f));this.curves.push(a);this.currentPoint.set(e,f)},splineThru:function(a){var b=[this.currentPoint.clone()].concat(a),b=new THREE.SplineCurve(b);this.curves.push(b);this.currentPoint.copy(a[a.length-1])},arc:function(a,b,c,d,e,f){this.absarc(a+this.currentPoint.x,b+this.currentPoint.y,
......@@ -874,10 +874,10 @@ k),r=0,s=0,v=0,t=0,u=0;g("z","y","x",-1,-1,c,b,a,f,e,0);g("z","y","x",1,-1,c,b,-
THREE.BoxBufferGeometry.prototype.constructor=THREE.BoxBufferGeometry;THREE.CircleGeometry=function(a,b,c,d){THREE.Geometry.call(this);this.type="CircleGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};this.fromBufferGeometry(new THREE.CircleBufferGeometry(a,b,c,d))};THREE.CircleGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CircleGeometry.prototype.constructor=THREE.CircleGeometry;
THREE.CircleBufferGeometry=function(a,b,c,d){THREE.BufferGeometry.call(this);this.type="CircleBufferGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};a=a||50;b=void 0!==b?Math.max(3,b):8;c=void 0!==c?c:0;d=void 0!==d?d:2*Math.PI;var e=b+2,f=new Float32Array(3*e),g=new Float32Array(3*e),e=new Float32Array(2*e);g[2]=1;e[0]=.5;e[1]=.5;for(var h=0,k=3,l=2;h<=b;h++,k+=3,l+=2){var m=c+h/b*d;f[k]=a*Math.cos(m);f[k+1]=a*Math.sin(m);g[k+2]=1;e[l]=(f[k]/a+1)/2;e[l+1]=(f[k+1]/a+1)/2}c=
[];for(k=1;k<=b;k++)c.push(k,k+1,0);this.setIndex(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.CylinderBufferGeometry=function(a,b,c,d,e,f,g,h){function k(c){var e,f,k,m=new THREE.Vector2,n=new THREE.Vector3,p=0,C=!0===c?a:b,K=!0===c?1:-1;f=t;for(e=1;e<=d;e++)r.setXYZ(t,0,w*K,0),s.setXYZ(t,0,K,0),m.x=.5,m.y=.5,v.setXY(t,m.x,m.y),t++;k=t;for(e=0;e<=d;e++){var H=e/d*h+g,M=Math.cos(H),H=Math.sin(H);n.x=C*H;n.y=w*K;n.z=C*M;r.setXYZ(t,n.x,n.y,n.z);s.setXYZ(t,0,K,0);m.x=.5*M+.5;m.y=.5*H*K+.5;v.setXY(t,m.x,m.y);t++}for(e=0;e<d;e++)m=f+e,n=k+e,!0===c?(q.setX(u,n),u++,q.setX(u,n+1)):(q.setX(u,
THREE.CylinderBufferGeometry=function(a,b,c,d,e,f,g,h){function k(c){var e,f,k,m=new THREE.Vector2,n=new THREE.Vector3,p=0,A=!0===c?a:b,K=!0===c?1:-1;f=t;for(e=1;e<=d;e++)r.setXYZ(t,0,w*K,0),s.setXYZ(t,0,K,0),m.x=.5,m.y=.5,v.setXY(t,m.x,m.y),t++;k=t;for(e=0;e<=d;e++){var H=e/d*h+g,M=Math.cos(H),H=Math.sin(H);n.x=A*H;n.y=w*K;n.z=A*M;r.setXYZ(t,n.x,n.y,n.z);s.setXYZ(t,0,K,0);m.x=.5*M+.5;m.y=.5*H*K+.5;v.setXY(t,m.x,m.y);t++}for(e=0;e<d;e++)m=f+e,n=k+e,!0===c?(q.setX(u,n),u++,q.setX(u,n+1)):(q.setX(u,
n+1),u++,q.setX(u,n)),u++,q.setX(u,m),u++,p+=3;l.addGroup(E,p,!0===c?1:2);E+=p}THREE.BufferGeometry.call(this);this.type="CylinderBufferGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};var l=this;a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=Math.floor(d)||8;e=Math.floor(e)||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var m=0;!1===f&&(0<a&&m++,0<b&&m++);var p=function(){var a=(d+1)*
(e+1);!1===f&&(a+=(d+1)*m+d*m);return a}(),n=function(){var a=d*e*6;!1===f&&(a+=d*m*3);return a}(),q=new THREE.BufferAttribute(new (65535<n?Uint32Array:Uint16Array)(n),1),r=new THREE.BufferAttribute(new Float32Array(3*p),3),s=new THREE.BufferAttribute(new Float32Array(3*p),3),v=new THREE.BufferAttribute(new Float32Array(2*p),2),t=0,u=0,C=[],w=c/2,E=0;(function(){var f,k,m=new THREE.Vector3,n=new THREE.Vector3,p=0,G=(b-a)/c;for(k=0;k<=e;k++){var J=[],P=k/e,K=P*(b-a)+a;for(f=0;f<=d;f++){var H=f/d;n.x=
K*Math.sin(H*h+g);n.y=-P*c+w;n.z=K*Math.cos(H*h+g);r.setXYZ(t,n.x,n.y,n.z);m.copy(n);if(0===a&&0===k||0===b&&k===e)m.x=Math.sin(H*h+g),m.z=Math.cos(H*h+g);m.setY(Math.sqrt(m.x*m.x+m.z*m.z)*G).normalize();s.setXYZ(t,m.x,m.y,m.z);v.setXY(t,H,1-P);J.push(t);t++}C.push(J)}for(f=0;f<d;f++)for(k=0;k<e;k++)m=C[k+1][f],n=C[k+1][f+1],G=C[k][f+1],q.setX(u,C[k][f]),u++,q.setX(u,m),u++,q.setX(u,G),u++,q.setX(u,m),u++,q.setX(u,n),u++,q.setX(u,G),u++,p+=6;l.addGroup(E,p,0);E+=p})();!1===f&&(0<a&&k(!0),0<b&&k(!1));
(e+1);!1===f&&(a+=(d+1)*m+d*m);return a}(),n=function(){var a=d*e*6;!1===f&&(a+=d*m*3);return a}(),q=new THREE.BufferAttribute(new (65535<n?Uint32Array:Uint16Array)(n),1),r=new THREE.BufferAttribute(new Float32Array(3*p),3),s=new THREE.BufferAttribute(new Float32Array(3*p),3),v=new THREE.BufferAttribute(new Float32Array(2*p),2),t=0,u=0,A=[],w=c/2,E=0;(function(){var f,k,m=new THREE.Vector3,n=new THREE.Vector3,p=0,G=(b-a)/c;for(k=0;k<=e;k++){var J=[],P=k/e,K=P*(b-a)+a;for(f=0;f<=d;f++){var H=f/d;n.x=
K*Math.sin(H*h+g);n.y=-P*c+w;n.z=K*Math.cos(H*h+g);r.setXYZ(t,n.x,n.y,n.z);m.copy(n);if(0===a&&0===k||0===b&&k===e)m.x=Math.sin(H*h+g),m.z=Math.cos(H*h+g);m.setY(Math.sqrt(m.x*m.x+m.z*m.z)*G).normalize();s.setXYZ(t,m.x,m.y,m.z);v.setXY(t,H,1-P);J.push(t);t++}A.push(J)}for(f=0;f<d;f++)for(k=0;k<e;k++)m=A[k+1][f],n=A[k+1][f+1],G=A[k][f+1],q.setX(u,A[k][f]),u++,q.setX(u,m),u++,q.setX(u,G),u++,q.setX(u,m),u++,q.setX(u,n),u++,q.setX(u,G),u++,p+=6;l.addGroup(E,p,0);E+=p})();!1===f&&(0<a&&k(!0),0<b&&k(!1));
this.setIndex(q);this.addAttribute("position",r);this.addAttribute("normal",s);this.addAttribute("uv",v)};THREE.CylinderBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.CylinderBufferGeometry.prototype.constructor=THREE.CylinderBufferGeometry;
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};this.fromBufferGeometry(new THREE.CylinderBufferGeometry(a,b,c,d,e,f,g,h));this.mergeVertices()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;
THREE.ConeBufferGeometry=function(a,b,c,d,e,f,g){THREE.CylinderBufferGeometry.call(this,0,a,b,c,d,e,f,g);this.type="ConeBufferGeometry";this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,thetaStart:f,thetaLength:g}};THREE.ConeBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.ConeBufferGeometry.prototype.constructor=THREE.ConeBufferGeometry;
......@@ -886,13 +886,13 @@ THREE.EdgesGeometry=function(a,b){function c(a,b){return a-b}THREE.BufferGeometr
face2:void 0}:f[q].face2=l}e=[];for(q in f)if(g=f[q],void 0===g.face2||h[g.face1].normal.dot(h[g.face2].normal)<=d)l=k[g.vert1],e.push(l.x),e.push(l.y),e.push(l.z),l=k[g.vert2],e.push(l.x),e.push(l.y),e.push(l.z);this.addAttribute("position",new THREE.BufferAttribute(new Float32Array(e),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.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(Math.abs(d*g-e*f)>Number.EPSILON){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,d>Number.EPSILON?
f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(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(I=a.length;0<=--I;){c=I;d=I-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*m,e=0;e<f;e++){var g=Q*e,h=Q*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+A,g=g+A,l=l+A,h=h+A;F.faces.push(new THREE.Face3(k,g,h,null,null,1));F.faces.push(new THREE.Face3(g,l,h,null,null,1));k=t.generateSideWallUV(F,
k,g,l,h);F.faceVertexUvs[0].push([k[0],k[1],k[3]]);F.faceVertexUvs[0].push([k[1],k[2],k[3]])}}}function f(a,b,c){F.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=A;b+=A;c+=A;F.faces.push(new THREE.Face3(a,b,c,null,null,0));a=t.generateTopUV(F,a,b,c);F.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,q=void 0!==b.steps?b.steps:1,r=b.extrudePath,s,v=!1,t=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,u,C,w,E;r&&(s=r.getSpacedPoints(q),v=!0,p=!1,u=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(r,q,!1),C=new THREE.Vector3,w=new THREE.Vector3,E=new THREE.Vector3);p||(l=k=m=0);var y,z,B,F=this,A=this.vertices.length,r=a.extractPoints(n),n=r.shape,G=r.holes;if(r=!THREE.ShapeUtils.isClockWise(n)){n=n.reverse();
z=0;for(B=G.length;z<B;z++)y=G[z],THREE.ShapeUtils.isClockWise(y)&&(G[z]=y.reverse());r=!1}var J=THREE.ShapeUtils.triangulateShape(n,G),P=n;z=0;for(B=G.length;z<B;z++)y=G[z],n=n.concat(y);var K,H,M,O,N,Q=n.length,L,D=J.length,r=[],I=0;M=P.length;K=M-1;for(H=I+1;I<M;I++,K++,H++)K===M&&(K=0),H===M&&(H=0),r[I]=d(P[I],P[K],P[H]);var aa=[],T,X=r.concat();z=0;for(B=G.length;z<B;z++){y=G[z];T=[];I=0;M=y.length;K=M-1;for(H=I+1;I<M;I++,K++,H++)K===M&&(K=0),H===M&&(H=0),T[I]=d(y[I],y[K],y[H]);aa.push(T);X=
X.concat(T)}for(K=0;K<m;K++){M=K/m;O=k*(1-M);H=l*Math.sin(M*Math.PI/2);I=0;for(M=P.length;I<M;I++)N=c(P[I],r[I],H),f(N.x,N.y,-O);z=0;for(B=G.length;z<B;z++)for(y=G[z],T=aa[z],I=0,M=y.length;I<M;I++)N=c(y[I],T[I],H),f(N.x,N.y,-O)}H=l;for(I=0;I<Q;I++)N=p?c(n[I],X[I],H):n[I],v?(w.copy(u.normals[0]).multiplyScalar(N.x),C.copy(u.binormals[0]).multiplyScalar(N.y),E.copy(s[0]).add(w).add(C),f(E.x,E.y,E.z)):f(N.x,N.y,0);for(M=1;M<=q;M++)for(I=0;I<Q;I++)N=p?c(n[I],X[I],H):n[I],v?(w.copy(u.normals[M]).multiplyScalar(N.x),
C.copy(u.binormals[M]).multiplyScalar(N.y),E.copy(s[M]).add(w).add(C),f(E.x,E.y,E.z)):f(N.x,N.y,h/q*M);for(K=m-1;0<=K;K--){M=K/m;O=k*(1-M);H=l*Math.sin(M*Math.PI/2);I=0;for(M=P.length;I<M;I++)N=c(P[I],r[I],H),f(N.x,N.y,h+O);z=0;for(B=G.length;z<B;z++)for(y=G[z],T=aa[z],I=0,M=y.length;I<M;I++)N=c(y[I],T[I],H),v?f(N.x,N.y+s[q-1].y,s[q-1].x+O):f(N.x,N.y,h+O)}(function(){if(p){var a;a=0*Q;for(I=0;I<D;I++)L=J[I],g(L[2]+a,L[1]+a,L[0]+a);a=q+2*m;a*=Q;for(I=0;I<D;I++)L=J[I],g(L[0]+a,L[1]+a,L[2]+a)}else{for(I=
0;I<D;I++)L=J[I],g(L[2],L[1],L[0]);for(I=0;I<D;I++)L=J[I],g(L[0]+Q*q,L[1]+Q*q,L[2]+Q*q)}})();(function(){var a=0;e(P,a);a+=P.length;z=0;for(B=G.length;z<B;z++)y=G[z],e(y,a),a+=y.length})()};
f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(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(I=a.length;0<=--I;){c=I;d=I-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*m,e=0;e<f;e++){var g=Q*e,h=Q*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+B,g=g+B,l=l+B,h=h+B;F.faces.push(new THREE.Face3(k,g,h,null,null,1));F.faces.push(new THREE.Face3(g,l,h,null,null,1));k=t.generateSideWallUV(F,
k,g,l,h);F.faceVertexUvs[0].push([k[0],k[1],k[3]]);F.faceVertexUvs[0].push([k[1],k[2],k[3]])}}}function f(a,b,c){F.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=B;b+=B;c+=B;F.faces.push(new THREE.Face3(a,b,c,null,null,0));a=t.generateTopUV(F,a,b,c);F.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,q=void 0!==b.steps?b.steps:1,r=b.extrudePath,s,v=!1,t=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,u,A,w,E;r&&(s=r.getSpacedPoints(q),v=!0,p=!1,u=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(r,q,!1),A=new THREE.Vector3,w=new THREE.Vector3,E=new THREE.Vector3);p||(l=k=m=0);var y,z,C,F=this,B=this.vertices.length,r=a.extractPoints(n),n=r.shape,G=r.holes;if(r=!THREE.ShapeUtils.isClockWise(n)){n=n.reverse();
z=0;for(C=G.length;z<C;z++)y=G[z],THREE.ShapeUtils.isClockWise(y)&&(G[z]=y.reverse());r=!1}var J=THREE.ShapeUtils.triangulateShape(n,G),P=n;z=0;for(C=G.length;z<C;z++)y=G[z],n=n.concat(y);var K,H,M,O,N,Q=n.length,L,D=J.length,r=[],I=0;M=P.length;K=M-1;for(H=I+1;I<M;I++,K++,H++)K===M&&(K=0),H===M&&(H=0),r[I]=d(P[I],P[K],P[H]);var aa=[],T,X=r.concat();z=0;for(C=G.length;z<C;z++){y=G[z];T=[];I=0;M=y.length;K=M-1;for(H=I+1;I<M;I++,K++,H++)K===M&&(K=0),H===M&&(H=0),T[I]=d(y[I],y[K],y[H]);aa.push(T);X=
X.concat(T)}for(K=0;K<m;K++){M=K/m;O=k*(1-M);H=l*Math.sin(M*Math.PI/2);I=0;for(M=P.length;I<M;I++)N=c(P[I],r[I],H),f(N.x,N.y,-O);z=0;for(C=G.length;z<C;z++)for(y=G[z],T=aa[z],I=0,M=y.length;I<M;I++)N=c(y[I],T[I],H),f(N.x,N.y,-O)}H=l;for(I=0;I<Q;I++)N=p?c(n[I],X[I],H):n[I],v?(w.copy(u.normals[0]).multiplyScalar(N.x),A.copy(u.binormals[0]).multiplyScalar(N.y),E.copy(s[0]).add(w).add(A),f(E.x,E.y,E.z)):f(N.x,N.y,0);for(M=1;M<=q;M++)for(I=0;I<Q;I++)N=p?c(n[I],X[I],H):n[I],v?(w.copy(u.normals[M]).multiplyScalar(N.x),
A.copy(u.binormals[M]).multiplyScalar(N.y),E.copy(s[M]).add(w).add(A),f(E.x,E.y,E.z)):f(N.x,N.y,h/q*M);for(K=m-1;0<=K;K--){M=K/m;O=k*(1-M);H=l*Math.sin(M*Math.PI/2);I=0;for(M=P.length;I<M;I++)N=c(P[I],r[I],H),f(N.x,N.y,h+O);z=0;for(C=G.length;z<C;z++)for(y=G[z],T=aa[z],I=0,M=y.length;I<M;I++)N=c(y[I],T[I],H),v?f(N.x,N.y+s[q-1].y,s[q-1].x+O):f(N.x,N.y,h+O)}(function(){if(p){var a;a=0*Q;for(I=0;I<D;I++)L=J[I],g(L[2]+a,L[1]+a,L[0]+a);a=q+2*m;a*=Q;for(I=0;I<D;I++)L=J[I],g(L[0]+a,L[1]+a,L[2]+a)}else{for(I=
0;I<D;I++)L=J[I],g(L[2],L[1],L[0]);for(I=0;I<D;I++)L=J[I],g(L[0]+Q*q,L[1]+Q*q,L[2]+Q*q)}})();(function(){var a=0;e(P,a);a+=P.length;z=0;for(C=G.length;z<C;z++)y=G[z],e(y,a),a+=y.length})()};
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d){a=a.vertices;b=a[b];c=a[c];d=a[d];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(c.x,c.y),new THREE.Vector2(d.x,d.y)]},generateSideWallUV:function(a,b,c,d,e){a=a.vertices;b=a[b];c=a[c];d=a[d];e=a[e];return.01>Math.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y,
1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===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.ShapeUtils.isClockWise(k))for(k=k.reverse(),e=0,f=l.length;e<f;e++)g=l[e],THREE.ShapeUtils.isClockWise(g)&&(l[e]=g.reverse());var m=THREE.ShapeUtils.triangulateShape(k,l);e=0;for(f=l.length;e<f;e++)g=l[e],k=k.concat(g);
......@@ -910,7 +910,7 @@ k);this.addAttribute("normal",l);this.addAttribute("uv",g)};THREE.RingBufferGeom
THREE.RingGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.RingGeometry.prototype.constructor=THREE.RingGeometry;THREE.SphereGeometry=function(a,b,c,d,e,f,g){THREE.Geometry.call(this);this.type="SphereGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};this.fromBufferGeometry(new THREE.SphereBufferGeometry(a,b,c,d,e,f,g))};THREE.SphereGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;
THREE.SphereBufferGeometry=function(a,b,c,d,e,f,g){THREE.BufferGeometry.call(this);this.type="SphereBufferGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};a=a||50;b=Math.max(3,Math.floor(b)||8);c=Math.max(2,Math.floor(c)||6);d=void 0!==d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;for(var h=f+g,k=(b+1)*(c+1),l=new THREE.BufferAttribute(new Float32Array(3*k),3),m=new THREE.BufferAttribute(new Float32Array(3*
k),3),k=new THREE.BufferAttribute(new Float32Array(2*k),2),p=0,n=[],q=new THREE.Vector3,r=0;r<=c;r++){for(var s=[],v=r/c,t=0;t<=b;t++){var u=t/b,C=-a*Math.cos(d+u*e)*Math.sin(f+v*g),w=a*Math.cos(f+v*g),E=a*Math.sin(d+u*e)*Math.sin(f+v*g);q.set(C,w,E).normalize();l.setXYZ(p,C,w,E);m.setXYZ(p,q.x,q.y,q.z);k.setXY(p,u,1-v);s.push(p);p++}n.push(s)}d=[];for(r=0;r<c;r++)for(t=0;t<b;t++)e=n[r][t+1],g=n[r][t],p=n[r+1][t],q=n[r+1][t+1],(0!==r||0<f)&&d.push(e,g,q),(r!==c-1||h<Math.PI)&&d.push(g,p,q);this.setIndex(new (65535<
k),3),k=new THREE.BufferAttribute(new Float32Array(2*k),2),p=0,n=[],q=new THREE.Vector3,r=0;r<=c;r++){for(var s=[],v=r/c,t=0;t<=b;t++){var u=t/b,A=-a*Math.cos(d+u*e)*Math.sin(f+v*g),w=a*Math.cos(f+v*g),E=a*Math.sin(d+u*e)*Math.sin(f+v*g);q.set(A,w,E).normalize();l.setXYZ(p,A,w,E);m.setXYZ(p,q.x,q.y,q.z);k.setXY(p,u,1-v);s.push(p);p++}n.push(s)}d=[];for(r=0;r<c;r++)for(t=0;t<b;t++)e=n[r][t+1],g=n[r][t],p=n[r+1][t],q=n[r+1][t+1],(0!==r||0<f)&&d.push(e,g,q),(r!==c-1||h<Math.PI)&&d.push(g,p,q);this.setIndex(new (65535<
l.count?THREE.Uint32Attribute:THREE.Uint16Attribute)(d,1));this.addAttribute("position",l);this.addAttribute("normal",m);this.addAttribute("uv",k);this.boundingSphere=new THREE.Sphere(new THREE.Vector3,a)};THREE.SphereBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.SphereBufferGeometry.prototype.constructor=THREE.SphereBufferGeometry;
THREE.TextGeometry=function(a,b){b=b||{};var c=b.font;if(!1===c instanceof THREE.Font)return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),new THREE.Geometry;c=c.generateShapes(a,b.size,b.curveSegments);b.amount=void 0!==b.height?b.height:50;void 0===b.bevelThickness&&(b.bevelThickness=10);void 0===b.bevelSize&&(b.bevelSize=8);void 0===b.bevelEnabled&&(b.bevelEnabled=!1);THREE.ExtrudeGeometry.call(this,c,b);this.type="TextGeometry"};
THREE.TextGeometry.prototype=Object.create(THREE.ExtrudeGeometry.prototype);THREE.TextGeometry.prototype.constructor=THREE.TextGeometry;
......@@ -919,8 +919,8 @@ v/d*e,u=s/c*Math.PI*2;q.x=(a+b*Math.cos(u))*Math.cos(t);q.y=(a+b*Math.cos(u))*Ma
3));this.addAttribute("normal",new THREE.BufferAttribute(k,3));this.addAttribute("uv",new THREE.BufferAttribute(f,2))};THREE.TorusBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.TorusBufferGeometry.prototype.constructor=THREE.TorusBufferGeometry;
THREE.TorusGeometry=function(a,b,c,d,e){THREE.Geometry.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};this.fromBufferGeometry(new THREE.TorusBufferGeometry(a,b,c,d,e))};THREE.TorusGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TorusGeometry.prototype.constructor=THREE.TorusGeometry;
THREE.TorusKnotBufferGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e){var f=Math.cos(a),g=Math.sin(a);a*=c/b;b=Math.cos(a);e.x=d*(2+b)*.5*f;e.y=d*(2+b)*g*.5;e.z=d*Math.sin(a)*.5}THREE.BufferGeometry.call(this);this.type="TorusKnotBufferGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};a=a||100;b=b||40;c=Math.floor(c)||64;d=Math.floor(d)||8;e=e||2;f=f||3;var h=(d+1)*(c+1),k=d*c*6,k=new THREE.BufferAttribute(new (65535<k?Uint32Array:Uint16Array)(k),1),l=new THREE.BufferAttribute(new Float32Array(3*
h),3),m=new THREE.BufferAttribute(new Float32Array(3*h),3),h=new THREE.BufferAttribute(new Float32Array(2*h),2),p,n,q=0,r=0,s=new THREE.Vector3,v=new THREE.Vector3,t=new THREE.Vector2,u=new THREE.Vector3,C=new THREE.Vector3,w=new THREE.Vector3,E=new THREE.Vector3,y=new THREE.Vector3;for(p=0;p<=c;++p)for(n=p/c*e*Math.PI*2,g(n,e,f,a,u),g(n+.01,e,f,a,C),E.subVectors(C,u),y.addVectors(C,u),w.crossVectors(E,y),y.crossVectors(w,E),w.normalize(),y.normalize(),n=0;n<=d;++n){var z=n/d*Math.PI*2,B=-b*Math.cos(z),
z=b*Math.sin(z);s.x=u.x+(B*y.x+z*w.x);s.y=u.y+(B*y.y+z*w.y);s.z=u.z+(B*y.z+z*w.z);l.setXYZ(q,s.x,s.y,s.z);v.subVectors(s,u).normalize();m.setXYZ(q,v.x,v.y,v.z);t.x=p/c;t.y=n/d;h.setXY(q,t.x,t.y);q++}for(n=1;n<=c;n++)for(p=1;p<=d;p++)a=(d+1)*n+(p-1),b=(d+1)*n+p,e=(d+1)*(n-1)+p,k.setX(r,(d+1)*(n-1)+(p-1)),r++,k.setX(r,a),r++,k.setX(r,e),r++,k.setX(r,a),r++,k.setX(r,b),r++,k.setX(r,e),r++;this.setIndex(k);this.addAttribute("position",l);this.addAttribute("normal",m);this.addAttribute("uv",h)};
h),3),m=new THREE.BufferAttribute(new Float32Array(3*h),3),h=new THREE.BufferAttribute(new Float32Array(2*h),2),p,n,q=0,r=0,s=new THREE.Vector3,v=new THREE.Vector3,t=new THREE.Vector2,u=new THREE.Vector3,A=new THREE.Vector3,w=new THREE.Vector3,E=new THREE.Vector3,y=new THREE.Vector3;for(p=0;p<=c;++p)for(n=p/c*e*Math.PI*2,g(n,e,f,a,u),g(n+.01,e,f,a,A),E.subVectors(A,u),y.addVectors(A,u),w.crossVectors(E,y),y.crossVectors(w,E),w.normalize(),y.normalize(),n=0;n<=d;++n){var z=n/d*Math.PI*2,C=-b*Math.cos(z),
z=b*Math.sin(z);s.x=u.x+(C*y.x+z*w.x);s.y=u.y+(C*y.y+z*w.y);s.z=u.z+(C*y.z+z*w.z);l.setXYZ(q,s.x,s.y,s.z);v.subVectors(s,u).normalize();m.setXYZ(q,v.x,v.y,v.z);t.x=p/c;t.y=n/d;h.setXY(q,t.x,t.y);q++}for(n=1;n<=c;n++)for(p=1;p<=d;p++)a=(d+1)*n+(p-1),b=(d+1)*n+p,e=(d+1)*(n-1)+p,k.setX(r,(d+1)*(n-1)+(p-1)),r++,k.setX(r,a),r++,k.setX(r,e),r++,k.setX(r,a),r++,k.setX(r,b),r++,k.setX(r,e),r++;this.setIndex(k);this.addAttribute("position",l);this.addAttribute("normal",m);this.addAttribute("uv",h)};
THREE.TorusKnotBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.TorusKnotBufferGeometry.prototype.constructor=THREE.TorusKnotBufferGeometry;
THREE.TorusKnotGeometry=function(a,b,c,d,e,f,g){THREE.Geometry.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};void 0!==g&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.");this.fromBufferGeometry(new THREE.TorusKnotBufferGeometry(a,b,c,d,e,f));this.mergeVertices()};THREE.TorusKnotGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.TorusKnotGeometry.prototype.constructor=THREE.TorusKnotGeometry;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册