提交 3c618a86 编写于 作者: A alteredq

Fixed too aggressive projection matrix uniform caching.

This was causing troubles for camera changing mid-frame (like for shadow maps).
上级 f83c6a41
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -31,8 +31,8 @@ THREE.Matrix3.prototype={constructor:THREE.Matrix3,transpose:function(){var a,b= ...@@ -31,8 +31,8 @@ THREE.Matrix3.prototype={constructor:THREE.Matrix3,transpose:function(){var a,b=
THREE.Matrix4=function(a,b,c,d,e,f,h,i,k,l,j,n,p,o,m,r){this.set(void 0!==a?a:1,b||0,c||0,d||0,e||0,void 0!==f?f:1,h||0,i||0,k||0,l||0,void 0!==j?j:1,n||0,p||0,o||0,m||0,void 0!==r?r:1);this.flat=Array(16);this.m33=new THREE.Matrix3}; THREE.Matrix4=function(a,b,c,d,e,f,h,i,k,l,j,n,p,o,m,r){this.set(void 0!==a?a:1,b||0,c||0,d||0,e||0,void 0!==f?f:1,h||0,i||0,k||0,l||0,void 0!==j?j:1,n||0,p||0,o||0,m||0,void 0!==r?r:1);this.flat=Array(16);this.m33=new THREE.Matrix3};
THREE.Matrix4.prototype={constructor:THREE.Matrix4,set:function(a,b,c,d,e,f,h,i,k,l,j,n,p,o,m,r){this.n11=a;this.n12=b;this.n13=c;this.n14=d;this.n21=e;this.n22=f;this.n23=h;this.n24=i;this.n31=k;this.n32=l;this.n33=j;this.n34=n;this.n41=p;this.n42=o;this.n43=m;this.n44=r;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(a){this.set(a.n11,a.n12,a.n13,a.n14,a.n21,a.n22,a.n23,a.n24,a.n31,a.n32,a.n33,a.n34,a.n41,a.n42,a.n43,a.n44);return this},lookAt:function(a, THREE.Matrix4.prototype={constructor:THREE.Matrix4,set:function(a,b,c,d,e,f,h,i,k,l,j,n,p,o,m,r){this.n11=a;this.n12=b;this.n13=c;this.n14=d;this.n21=e;this.n22=f;this.n23=h;this.n24=i;this.n31=k;this.n32=l;this.n33=j;this.n34=n;this.n41=p;this.n42=o;this.n43=m;this.n44=r;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(a){this.set(a.n11,a.n12,a.n13,a.n14,a.n21,a.n22,a.n23,a.n24,a.n31,a.n32,a.n33,a.n34,a.n41,a.n42,a.n43,a.n44);return this},lookAt:function(a,
b,c){var d=THREE.Matrix4.__v1,e=THREE.Matrix4.__v2,f=THREE.Matrix4.__v3;f.sub(a,b).normalize();if(0===f.length())f.z=1;d.cross(c,f).normalize();0===d.length()&&(f.x+=1.0E-4,d.cross(c,f).normalize());e.cross(f,d).normalize();this.n11=d.x;this.n12=e.x;this.n13=f.x;this.n21=d.y;this.n22=e.y;this.n23=f.y;this.n31=d.z;this.n32=e.z;this.n33=f.z;return this},multiply:function(a,b){var c=a.n11,d=a.n12,e=a.n13,f=a.n14,h=a.n21,i=a.n22,k=a.n23,l=a.n24,j=a.n31,n=a.n32,p=a.n33,o=a.n34,m=a.n41,r=a.n42,t=a.n43, b,c){var d=THREE.Matrix4.__v1,e=THREE.Matrix4.__v2,f=THREE.Matrix4.__v3;f.sub(a,b).normalize();if(0===f.length())f.z=1;d.cross(c,f).normalize();0===d.length()&&(f.x+=1.0E-4,d.cross(c,f).normalize());e.cross(f,d).normalize();this.n11=d.x;this.n12=e.x;this.n13=f.x;this.n21=d.y;this.n22=e.y;this.n23=f.y;this.n31=d.z;this.n32=e.z;this.n33=f.z;return this},multiply:function(a,b){var c=a.n11,d=a.n12,e=a.n13,f=a.n14,h=a.n21,i=a.n22,k=a.n23,l=a.n24,j=a.n31,n=a.n32,p=a.n33,o=a.n34,m=a.n41,r=a.n42,t=a.n43,
z=a.n44,y=b.n11,J=b.n12,K=b.n13,u=b.n14,B=b.n21,H=b.n22,A=b.n23,M=b.n24,N=b.n31,I=b.n32,ia=b.n33,ua=b.n34,S=b.n41,$=b.n42,Y=b.n43,D=b.n44;this.n11=c*y+d*B+e*N+f*S;this.n12=c*J+d*H+e*I+f*$;this.n13=c*K+d*A+e*ia+f*Y;this.n14=c*u+d*M+e*ua+f*D;this.n21=h*y+i*B+k*N+l*S;this.n22=h*J+i*H+k*I+l*$;this.n23=h*K+i*A+k*ia+l*Y;this.n24=h*u+i*M+k*ua+l*D;this.n31=j*y+n*B+p*N+o*S;this.n32=j*J+n*H+p*I+o*$;this.n33=j*K+n*A+p*ia+o*Y;this.n34=j*u+n*M+p*ua+o*D;this.n41=m*y+r*B+t*N+z*S;this.n42=m*J+r*H+t*I+z*$;this.n43= z=a.n44,y=b.n11,J=b.n12,K=b.n13,u=b.n14,B=b.n21,H=b.n22,A=b.n23,M=b.n24,N=b.n31,I=b.n32,S=b.n33,ua=b.n34,ka=b.n41,$=b.n42,Z=b.n43,D=b.n44;this.n11=c*y+d*B+e*N+f*ka;this.n12=c*J+d*H+e*I+f*$;this.n13=c*K+d*A+e*S+f*Z;this.n14=c*u+d*M+e*ua+f*D;this.n21=h*y+i*B+k*N+l*ka;this.n22=h*J+i*H+k*I+l*$;this.n23=h*K+i*A+k*S+l*Z;this.n24=h*u+i*M+k*ua+l*D;this.n31=j*y+n*B+p*N+o*ka;this.n32=j*J+n*H+p*I+o*$;this.n33=j*K+n*A+p*S+o*Z;this.n34=j*u+n*M+p*ua+o*D;this.n41=m*y+r*B+t*N+z*ka;this.n42=m*J+r*H+t*I+z*$;this.n43=
m*K+r*A+t*ia+z*Y;this.n44=m*u+r*M+t*ua+z*D;return this},multiplySelf:function(a){return this.multiply(this,a)},multiplyToArray:function(a,b,c){this.multiply(a,b);c[0]=this.n11;c[1]=this.n21;c[2]=this.n31;c[3]=this.n41;c[4]=this.n12;c[5]=this.n22;c[6]=this.n32;c[7]=this.n42;c[8]=this.n13;c[9]=this.n23;c[10]=this.n33;c[11]=this.n43;c[12]=this.n14;c[13]=this.n24;c[14]=this.n34;c[15]=this.n44;return this},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*= m*K+r*A+t*S+z*Z;this.n44=m*u+r*M+t*ua+z*D;return this},multiplySelf:function(a){return this.multiply(this,a)},multiplyToArray:function(a,b,c){this.multiply(a,b);c[0]=this.n11;c[1]=this.n21;c[2]=this.n31;c[3]=this.n41;c[4]=this.n12;c[5]=this.n22;c[6]=this.n32;c[7]=this.n42;c[8]=this.n13;c[9]=this.n23;c[10]=this.n33;c[11]=this.n43;c[12]=this.n14;c[13]=this.n24;c[14]=this.n34;c[15]=this.n44;return this},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=
a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a;return this},multiplyVector3:function(a){var b=a.x,c=a.y,d=a.z,e=1/(this.n41*b+this.n42*c+this.n43*d+this.n44);a.x=(this.n11*b+this.n12*c+this.n13*d+this.n14)*e;a.y=(this.n21*b+this.n22*c+this.n23*d+this.n24)*e;a.z=(this.n31*b+this.n32*c+this.n33*d+this.n34)*e;return a},multiplyVector4:function(a){var b=a.x,c=a.y,d=a.z,e=a.w;a.x=this.n11*b+this.n12*c+this.n13*d+this.n14*e;a.y= a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a;return this},multiplyVector3:function(a){var b=a.x,c=a.y,d=a.z,e=1/(this.n41*b+this.n42*c+this.n43*d+this.n44);a.x=(this.n11*b+this.n12*c+this.n13*d+this.n14)*e;a.y=(this.n21*b+this.n22*c+this.n23*d+this.n24)*e;a.z=(this.n31*b+this.n32*c+this.n33*d+this.n34)*e;return a},multiplyVector4:function(a){var b=a.x,c=a.y,d=a.z,e=a.w;a.x=this.n11*b+this.n12*c+this.n13*d+this.n14*e;a.y=
this.n21*b+this.n22*c+this.n23*d+this.n24*e;a.z=this.n31*b+this.n32*c+this.n33*d+this.n34*e;a.w=this.n41*b+this.n42*c+this.n43*d+this.n44*e;return a},rotateAxis:function(a){var b=a.x,c=a.y,d=a.z;a.x=b*this.n11+c*this.n12+d*this.n13;a.y=b*this.n21+c*this.n22+d*this.n23;a.z=b*this.n31+c*this.n32+d*this.n33;a.normalize();return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31* this.n21*b+this.n22*c+this.n23*d+this.n24*e;a.z=this.n31*b+this.n32*c+this.n33*d+this.n34*e;a.w=this.n41*b+this.n42*c+this.n43*d+this.n44*e;return a},rotateAxis:function(a){var b=a.x,c=a.y,d=a.z;a.x=b*this.n11+c*this.n12+d*this.n13;a.y=b*this.n21+c*this.n22+d*this.n23;a.z=b*this.n31+c*this.n32+d*this.n33;a.normalize();return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*
a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},determinant:function(){var a=this.n11,b=this.n12,c=this.n13,d=this.n14,e=this.n21,f=this.n22,h=this.n23,i=this.n24,k=this.n31,l=this.n32,j=this.n33,n=this.n34,p=this.n41,o=this.n42,m=this.n43,r=this.n44;return d*h*l*p-c*i*l*p-d*f*j*p+b*i*j*p+c*f*n*p-b*h*n*p-d*h*k*o+c*i*k*o+d*e*j*o-a*i*j*o-c*e*n*o+a*h*n*o+d*f*k*m-b*i*k*m-d*e*l*m+a*i*l*m+b*e*n*m-a*f*n*m-c*f*k*r+b*h*k*r+c*e*l*r-a*h*l*r- a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},determinant:function(){var a=this.n11,b=this.n12,c=this.n13,d=this.n14,e=this.n21,f=this.n22,h=this.n23,i=this.n24,k=this.n31,l=this.n32,j=this.n33,n=this.n34,p=this.n41,o=this.n42,m=this.n43,r=this.n44;return d*h*l*p-c*i*l*p-d*f*j*p+b*i*j*p+c*f*n*p-b*h*n*p-d*h*k*o+c*i*k*o+d*e*j*o-a*i*j*o-c*e*n*o+a*h*n*o+d*f*k*m-b*i*k*m-d*e*l*m+a*i*l*m+b*e*n*m-a*f*n*m-c*f*k*r+b*h*k*r+c*e*l*r-a*h*l*r-
...@@ -63,16 +63,16 @@ this.children.indexOf(a)){void 0!==a.parent&&a.parent.remove(a);a.parent=this;th ...@@ -63,16 +63,16 @@ this.children.indexOf(a)){void 0!==a.parent&&a.parent.remove(a);a.parent=this;th
a||b&&(e=e.getChildByName(a,b),void 0!==e))return e}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder);if(1!==this.scale.x||1!==this.scale.y||1!==this.scale.z)this.matrix.scale(this.scale),this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z));this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate&& a||b&&(e=e.getChildByName(a,b),void 0!==e))return e}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder);if(1!==this.scale.x||1!==this.scale.y||1!==this.scale.z)this.matrix.scale(this.scale),this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z));this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate&&
this.updateMatrix();if(this.matrixWorldNeedsUpdate||a)this.parent?this.matrixWorld.multiply(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)}};THREE.Object3DCount=0; this.updateMatrix();if(this.matrixWorldNeedsUpdate||a)this.parent?this.matrixWorld.multiply(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)}};THREE.Object3DCount=0;
THREE.Projector=function(){function a(){var a=h[f]=h[f]||new THREE.RenderableObject;f++;return a}function b(){var a=l[k]=l[k]||new THREE.RenderableVertex;k++;return a}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,g=b.z+b.w,f=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=g&&0<=f&&0<=h)return!0;if(0>e&&0>g||0>f&&0>h)return!1;0>e?c=Math.max(c,e/(e-g)):0>g&&(d=Math.min(d,e/(e-g)));0>f?c=Math.max(c,f/(f-h)):0>h&&(d=Math.min(d,f/(f-h)));if(d<c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0} THREE.Projector=function(){function a(){var a=h[f]=h[f]||new THREE.RenderableObject;f++;return a}function b(){var a=l[k]=l[k]||new THREE.RenderableVertex;k++;return a}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,g=b.z+b.w,f=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=g&&0<=f&&0<=h)return!0;if(0>e&&0>g||0>f&&0>h)return!1;0>e?c=Math.max(c,e/(e-g)):0>g&&(d=Math.min(d,e/(e-g)));0>f?c=Math.max(c,f/(f-h)):0>h&&(d=Math.min(d,f/(f-h)));if(d<c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}
var e,f,h=[],i,k,l=[],j,n,p=[],o,m=[],r,t,z=[],y,J,K=[],u={objects:[],sprites:[],lights:[],elements:[]},B=new THREE.Vector3,H=new THREE.Vector4,A=new THREE.Matrix4,M=new THREE.Matrix4,N=new THREE.Frustum,I=new THREE.Vector4,ia=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);A.multiply(b.projectionMatrix,b.matrixWorldInverse);A.multiplyVector3(a);return a};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);A.multiply(b.matrixWorld, var e,f,h=[],i,k,l=[],j,n,p=[],o,m=[],r,t,z=[],y,J,K=[],u={objects:[],sprites:[],lights:[],elements:[]},B=new THREE.Vector3,H=new THREE.Vector4,A=new THREE.Matrix4,M=new THREE.Matrix4,N=new THREE.Frustum,I=new THREE.Vector4,S=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);A.multiply(b.projectionMatrix,b.matrixWorldInverse);A.multiplyVector3(a);return a};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);A.multiply(b.matrixWorld,
b.projectionMatrixInverse);A.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectGraph=function(b,d){f=0;u.objects.length=0;u.sprites.length=0;u.lights.length=0;var h=function(b){if(!1!==b.visible){(b instanceof THREE.Mesh||b instanceof THREE.Line)&&(!1===b.frustumCulled||N.contains(b))?(A.multiplyVector3(B.copy(b.position)),e=a(),e.object= b.projectionMatrixInverse);A.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectGraph=function(b,d){f=0;u.objects.length=0;u.sprites.length=0;u.lights.length=0;var h=function(b){if(!1!==b.visible){(b instanceof THREE.Mesh||b instanceof THREE.Line)&&(!1===b.frustumCulled||N.contains(b))?(A.multiplyVector3(B.copy(b.position)),e=a(),e.object=
b,e.z=B.z,u.objects.push(e)):b instanceof THREE.Sprite||b instanceof THREE.Particle?(A.multiplyVector3(B.copy(b.position)),e=a(),e.object=b,e.z=B.z,u.sprites.push(e)):b instanceof THREE.Light&&u.lights.push(b);for(var c=0,g=b.children.length;c<g;c++)h(b.children[c])}};h(b);d&&u.objects.sort(c);return u};this.projectScene=function(a,e,f){var h=e.near,D=e.far,g,B,Z,oa,Q,L,qa,va,ba,ya,Ca,Ma,mb,Sa,Pa,Na;J=t=o=n=0;u.elements.length=0;void 0===e.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."), b,e.z=B.z,u.objects.push(e)):b instanceof THREE.Sprite||b instanceof THREE.Particle?(A.multiplyVector3(B.copy(b.position)),e=a(),e.object=b,e.z=B.z,u.sprites.push(e)):b instanceof THREE.Light&&u.lights.push(b);for(var c=0,g=b.children.length;c<g;c++)h(b.children[c])}};h(b);d&&u.objects.sort(c);return u};this.projectScene=function(a,e,f){var h=e.near,D=e.far,g,B,ba,pa,Q,L,W,ya,ca,Ea,Ba,Na,Oa,Pa,Ta,Ua;J=t=o=n=0;u.elements.length=0;void 0===e.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),
a.add(e));a.updateMatrixWorld();e.matrixWorldInverse.getInverse(e.matrixWorld);A.multiply(e.projectionMatrix,e.matrixWorldInverse);N.setFromMatrix(A);u=this.projectGraph(a,!1);for(a=0,g=u.objects.length;a<g;a++)if(ba=u.objects[a].object,ya=ba.matrixWorld,Ma=ba.material,k=0,ba instanceof THREE.Mesh){Ca=ba.geometry;mb=ba.geometry.materials;oa=Ca.vertices;Sa=Ca.faces;Pa=Ca.faceVertexUvs;Ca=ba.matrixRotationWorld.extractRotation(ya);for(B=0,Z=oa.length;B<Z;B++)i=b(),i.positionWorld.copy(oa[B].position), a.add(e));a.updateMatrixWorld();e.matrixWorldInverse.getInverse(e.matrixWorld);A.multiply(e.projectionMatrix,e.matrixWorldInverse);N.setFromMatrix(A);u=this.projectGraph(a,!1);for(a=0,g=u.objects.length;a<g;a++)if(ca=u.objects[a].object,Ea=ca.matrixWorld,Na=ca.material,k=0,ca instanceof THREE.Mesh){Ba=ca.geometry;Oa=ca.geometry.materials;pa=Ba.vertices;Pa=Ba.faces;Ta=Ba.faceVertexUvs;Ba=ca.matrixRotationWorld.extractRotation(Ea);for(B=0,ba=pa.length;B<ba;B++)i=b(),i.positionWorld.copy(pa[B].position),
ya.multiplyVector3(i.positionWorld),i.positionScreen.copy(i.positionWorld),A.multiplyVector4(i.positionScreen),i.positionScreen.x/=i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,i.visible=i.positionScreen.z>h&&i.positionScreen.z<D;for(oa=0,B=Sa.length;oa<B;oa++){Z=Sa[oa];if(Z instanceof THREE.Face3)if(Q=l[Z.a],L=l[Z.b],qa=l[Z.c],Q.visible&&L.visible&&qa.visible&&(ba.doubleSided||ba.flipSided!=0>(qa.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(qa.positionScreen.y- Ea.multiplyVector3(i.positionWorld),i.positionScreen.copy(i.positionWorld),A.multiplyVector4(i.positionScreen),i.positionScreen.x/=i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,i.visible=i.positionScreen.z>h&&i.positionScreen.z<D;for(pa=0,B=Pa.length;pa<B;pa++){ba=Pa[pa];if(ba instanceof THREE.Face3)if(Q=l[ba.a],L=l[ba.b],W=l[ba.c],Q.visible&&L.visible&&W.visible&&(ca.doubleSided||ca.flipSided!=0>(W.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(W.positionScreen.y-
Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)))va=p[n]=p[n]||new THREE.RenderableFace3,n++,j=va,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(qa);else continue;else if(Z instanceof THREE.Face4)if(Q=l[Z.a],L=l[Z.b],qa=l[Z.c],va=l[Z.d],Q.visible&&L.visible&&qa.visible&&va.visible&&(ba.doubleSided||ba.flipSided!=(0>(va.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(va.positionScreen.y-Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)||0>(L.positionScreen.x- Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)))ya=p[n]=p[n]||new THREE.RenderableFace3,n++,j=ya,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(W);else continue;else if(ba instanceof THREE.Face4)if(Q=l[ba.a],L=l[ba.b],W=l[ba.c],ya=l[ba.d],Q.visible&&L.visible&&W.visible&&ya.visible&&(ca.doubleSided||ca.flipSided!=(0>(ya.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(ya.positionScreen.y-Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)||0>(L.positionScreen.x-
qa.positionScreen.x)*(va.positionScreen.y-qa.positionScreen.y)-(L.positionScreen.y-qa.positionScreen.y)*(va.positionScreen.x-qa.positionScreen.x))))Na=m[o]=m[o]||new THREE.RenderableFace4,o++,j=Na,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(qa),j.v4.copy(va);else continue;j.normalWorld.copy(Z.normal);Ca.multiplyVector3(j.normalWorld);j.centroidWorld.copy(Z.centroid);ya.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);A.multiplyVector3(j.centroidScreen);qa=Z.vertexNormals;for(Q=0,L= W.positionScreen.x)*(ya.positionScreen.y-W.positionScreen.y)-(L.positionScreen.y-W.positionScreen.y)*(ya.positionScreen.x-W.positionScreen.x))))Ua=m[o]=m[o]||new THREE.RenderableFace4,o++,j=Ua,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(W),j.v4.copy(ya);else continue;j.normalWorld.copy(ba.normal);Ba.multiplyVector3(j.normalWorld);j.centroidWorld.copy(ba.centroid);Ea.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);A.multiplyVector3(j.centroidScreen);W=ba.vertexNormals;for(Q=0,L=W.length;Q<
qa.length;Q<L;Q++)va=j.vertexNormalsWorld[Q],va.copy(qa[Q]),Ca.multiplyVector3(va);for(Q=0,L=Pa.length;Q<L;Q++)if(Na=Pa[Q][oa])for(qa=0,va=Na.length;qa<va;qa++)j.uvs[Q][qa]=Na[qa];j.material=Ma;j.faceMaterial=null!==Z.materialIndex?mb[Z.materialIndex]:null;j.z=j.centroidScreen.z;u.elements.push(j)}}else if(ba instanceof THREE.Line){M.multiply(A,ya);oa=ba.geometry.vertices;Q=b();Q.positionScreen.copy(oa[0].position);M.multiplyVector4(Q.positionScreen);for(B=1,Z=oa.length;B<Z;B++)if(Q=b(),Q.positionScreen.copy(oa[B].position), L;Q++)ya=j.vertexNormalsWorld[Q],ya.copy(W[Q]),Ba.multiplyVector3(ya);for(Q=0,L=Ta.length;Q<L;Q++)if(Ua=Ta[Q][pa])for(W=0,ya=Ua.length;W<ya;W++)j.uvs[Q][W]=Ua[W];j.material=Na;j.faceMaterial=null!==ba.materialIndex?Oa[ba.materialIndex]:null;j.z=j.centroidScreen.z;u.elements.push(j)}}else if(ca instanceof THREE.Line){M.multiply(A,Ea);pa=ca.geometry.vertices;Q=b();Q.positionScreen.copy(pa[0].position);M.multiplyVector4(Q.positionScreen);for(B=1,ba=pa.length;B<ba;B++)if(Q=b(),Q.positionScreen.copy(pa[B].position),
M.multiplyVector4(Q.positionScreen),L=l[k-2],I.copy(Q.positionScreen),ia.copy(L.positionScreen),d(I,ia))I.multiplyScalar(1/I.w),ia.multiplyScalar(1/ia.w),ba=z[t]=z[t]||new THREE.RenderableLine,t++,r=ba,r.v1.positionScreen.copy(I),r.v2.positionScreen.copy(ia),r.z=Math.max(I.z,ia.z),r.material=Ma,u.elements.push(r)}for(a=0,g=u.sprites.length;a<g;a++)if(ba=u.sprites[a].object,ya=ba.matrixWorld,ba instanceof THREE.Particle&&(H.set(ya.n14,ya.n24,ya.n34,1),A.multiplyVector4(H),H.z/=H.w,0<H.z&&1>H.z))h= M.multiplyVector4(Q.positionScreen),L=l[k-2],I.copy(Q.positionScreen),S.copy(L.positionScreen),d(I,S))I.multiplyScalar(1/I.w),S.multiplyScalar(1/S.w),ca=z[t]=z[t]||new THREE.RenderableLine,t++,r=ca,r.v1.positionScreen.copy(I),r.v2.positionScreen.copy(S),r.z=Math.max(I.z,S.z),r.material=Na,u.elements.push(r)}for(a=0,g=u.sprites.length;a<g;a++)if(ca=u.sprites[a].object,Ea=ca.matrixWorld,ca instanceof THREE.Particle&&(H.set(Ea.n14,Ea.n24,Ea.n34,1),A.multiplyVector4(H),H.z/=H.w,0<H.z&&1>H.z))h=K[J]=K[J]||
K[J]=K[J]||new THREE.RenderableParticle,J++,y=h,y.x=H.x/H.w,y.y=H.y/H.w,y.z=H.z,y.rotation=ba.rotation.z,y.scale.x=ba.scale.x*Math.abs(y.x-(H.x+e.projectionMatrix.n11)/(H.w+e.projectionMatrix.n14)),y.scale.y=ba.scale.y*Math.abs(y.y-(H.y+e.projectionMatrix.n22)/(H.w+e.projectionMatrix.n24)),y.material=ba.material,u.elements.push(y);f&&u.elements.sort(c);return u}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,void 0!==d?d:1)}; new THREE.RenderableParticle,J++,y=h,y.x=H.x/H.w,y.y=H.y/H.w,y.z=H.z,y.rotation=ca.rotation.z,y.scale.x=ca.scale.x*Math.abs(y.x-(H.x+e.projectionMatrix.n11)/(H.w+e.projectionMatrix.n14)),y.scale.y=ca.scale.y*Math.abs(y.y-(H.y+e.projectionMatrix.n22)/(H.w+e.projectionMatrix.n24)),y.material=ca.material,u.elements.push(y);f&&u.elements.sort(c);return u}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,void 0!==d?d:1)};
THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a){var b=Math.PI/360,c=a.x*b,d=a.y*b,e=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-e),e=Math.sin(-e),f=Math.cos(c),c=Math.sin(c),h=a*b,i=d*e;this.w=h*f-i*c;this.x=h*c+i*f;this.y=d*b*f+a*e*c;this.z=a*e*f-d*b*c;return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c); THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a){var b=Math.PI/360,c=a.x*b,d=a.y*b,e=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-e),e=Math.sin(-e),f=Math.cos(c),c=Math.sin(c),h=a*b,i=d*e;this.w=h*f-i*c;this.x=h*c+i*f;this.y=d*b*f+a*e*c;this.z=a*e*f-d*b*c;return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);
this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31?-Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z); this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31?-Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z);
this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);0===a?this.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b= this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);0===a?this.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b=
...@@ -88,11 +88,11 @@ b;a++)c=this.faces[a],c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid ...@@ -88,11 +88,11 @@ b;a++)c=this.faces[a],c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid
b,c,d,e,f,h=new THREE.Vector3,i=new THREE.Vector3;for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],d=this.vertices[c.a],e=this.vertices[c.b],f=this.vertices[c.c],h.sub(f.position,e.position),i.sub(d.position,e.position),h.crossSelf(i),h.isZero()||h.normalize(),c.normal.copy(h)},computeVertexNormals:function(){var a,b,c,d;if(void 0===this.__tmpVertices){d=this.__tmpVertices=Array(this.vertices.length);for(a=0,b=this.vertices.length;a<b;a++)d[a]=new THREE.Vector3;for(a=0,b=this.faces.length;a<b;a++)if(c= b,c,d,e,f,h=new THREE.Vector3,i=new THREE.Vector3;for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],d=this.vertices[c.a],e=this.vertices[c.b],f=this.vertices[c.c],h.sub(f.position,e.position),i.sub(d.position,e.position),h.crossSelf(i),h.isZero()||h.normalize(),c.normal.copy(h)},computeVertexNormals:function(){var a,b,c,d;if(void 0===this.__tmpVertices){d=this.__tmpVertices=Array(this.vertices.length);for(a=0,b=this.vertices.length;a<b;a++)d[a]=new THREE.Vector3;for(a=0,b=this.faces.length;a<b;a++)if(c=
this.faces[a],c instanceof THREE.Face3)c.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];else if(c instanceof THREE.Face4)c.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]}else{d=this.__tmpVertices;for(a=0,b=this.vertices.length;a<b;a++)d[a].set(0,0,0)}for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],c instanceof THREE.Face3?(d[c.a].addSelf(c.normal),d[c.b].addSelf(c.normal),d[c.c].addSelf(c.normal)):c instanceof THREE.Face4&&(d[c.a].addSelf(c.normal), this.faces[a],c instanceof THREE.Face3)c.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];else if(c instanceof THREE.Face4)c.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]}else{d=this.__tmpVertices;for(a=0,b=this.vertices.length;a<b;a++)d[a].set(0,0,0)}for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],c instanceof THREE.Face3?(d[c.a].addSelf(c.normal),d[c.b].addSelf(c.normal),d[c.c].addSelf(c.normal)):c instanceof THREE.Face4&&(d[c.a].addSelf(c.normal),
d[c.b].addSelf(c.normal),d[c.c].addSelf(c.normal),d[c.d].addSelf(c.normal));for(a=0,b=this.vertices.length;a<b;a++)d[a].normalize();for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],c instanceof THREE.Face3?(c.vertexNormals[0].copy(d[c.a]),c.vertexNormals[1].copy(d[c.b]),c.vertexNormals[2].copy(d[c.c])):c instanceof THREE.Face4&&(c.vertexNormals[0].copy(d[c.a]),c.vertexNormals[1].copy(d[c.b]),c.vertexNormals[2].copy(d[c.c]),c.vertexNormals[3].copy(d[c.d]))},computeTangents:function(){function a(a, d[c.b].addSelf(c.normal),d[c.c].addSelf(c.normal),d[c.d].addSelf(c.normal));for(a=0,b=this.vertices.length;a<b;a++)d[a].normalize();for(a=0,b=this.faces.length;a<b;a++)c=this.faces[a],c instanceof THREE.Face3?(c.vertexNormals[0].copy(d[c.a]),c.vertexNormals[1].copy(d[c.b]),c.vertexNormals[2].copy(d[c.c])):c instanceof THREE.Face4&&(c.vertexNormals[0].copy(d[c.a]),c.vertexNormals[1].copy(d[c.b]),c.vertexNormals[2].copy(d[c.c]),c.vertexNormals[3].copy(d[c.d]))},computeTangents:function(){function a(a,
b,c,d,e,f,A){i=a.vertices[b].position;k=a.vertices[c].position;l=a.vertices[d].position;j=h[e];n=h[f];p=h[A];o=k.x-i.x;m=l.x-i.x;r=k.y-i.y;t=l.y-i.y;z=k.z-i.z;y=l.z-i.z;J=n.u-j.u;K=p.u-j.u;u=n.v-j.v;B=p.v-j.v;H=1/(J*B-K*u);I.set((B*o-u*m)*H,(B*r-u*t)*H,(B*z-u*y)*H);ia.set((J*m-K*o)*H,(J*t-K*r)*H,(J*y-K*z)*H);M[b].addSelf(I);M[c].addSelf(I);M[d].addSelf(I);N[b].addSelf(ia);N[c].addSelf(ia);N[d].addSelf(ia)}var b,c,d,e,f,h,i,k,l,j,n,p,o,m,r,t,z,y,J,K,u,B,H,A,M=[],N=[],I=new THREE.Vector3,ia=new THREE.Vector3, b,c,d,e,f,A){i=a.vertices[b].position;k=a.vertices[c].position;l=a.vertices[d].position;j=h[e];n=h[f];p=h[A];o=k.x-i.x;m=l.x-i.x;r=k.y-i.y;t=l.y-i.y;z=k.z-i.z;y=l.z-i.z;J=n.u-j.u;K=p.u-j.u;u=n.v-j.v;B=p.v-j.v;H=1/(J*B-K*u);I.set((B*o-u*m)*H,(B*r-u*t)*H,(B*z-u*y)*H);S.set((J*m-K*o)*H,(J*t-K*r)*H,(J*y-K*z)*H);M[b].addSelf(I);M[c].addSelf(I);M[d].addSelf(I);N[b].addSelf(S);N[c].addSelf(S);N[d].addSelf(S)}var b,c,d,e,f,h,i,k,l,j,n,p,o,m,r,t,z,y,J,K,u,B,H,A,M=[],N=[],I=new THREE.Vector3,S=new THREE.Vector3,
ua=new THREE.Vector3,S=new THREE.Vector3,$=new THREE.Vector3;for(b=0,c=this.vertices.length;b<c;b++)M[b]=new THREE.Vector3,N[b]=new THREE.Vector3;for(b=0,c=this.faces.length;b<c;b++)f=this.faces[b],h=this.faceVertexUvs[0][b],f instanceof THREE.Face3?a(this,f.a,f.b,f.c,0,1,2):f instanceof THREE.Face4&&(a(this,f.a,f.b,f.c,0,1,2),a(this,f.a,f.b,f.d,0,1,3));var Y=["a","b","c","d"];for(b=0,c=this.faces.length;b<c;b++){f=this.faces[b];for(d=0;d<f.vertexNormals.length;d++)$.copy(f.vertexNormals[d]),e=f[Y[d]], ua=new THREE.Vector3,ka=new THREE.Vector3,$=new THREE.Vector3;for(b=0,c=this.vertices.length;b<c;b++)M[b]=new THREE.Vector3,N[b]=new THREE.Vector3;for(b=0,c=this.faces.length;b<c;b++)f=this.faces[b],h=this.faceVertexUvs[0][b],f instanceof THREE.Face3?a(this,f.a,f.b,f.c,0,1,2):f instanceof THREE.Face4&&(a(this,f.a,f.b,f.c,0,1,2),a(this,f.a,f.b,f.d,0,1,3));var Z=["a","b","c","d"];for(b=0,c=this.faces.length;b<c;b++){f=this.faces[b];for(d=0;d<f.vertexNormals.length;d++)$.copy(f.vertexNormals[d]),e=f[Z[d]],
A=M[e],ua.copy(A),ua.subSelf($.multiplyScalar($.dot(A))).normalize(),S.cross(f.vertexNormals[d],A),e=S.dot(N[e]),e=0>e?-1:1,f.vertexTangents[d]=new THREE.Vector4(ua.x,ua.y,ua.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0<this.vertices.length){var a;a=this.vertices[0].position;this.boundingBox?(this.boundingBox.min.copy(a),this.boundingBox.max.copy(a)):this.boundingBox={min:a.clone(),max:a.clone()};for(var b=this.boundingBox.min,c=this.boundingBox.max,d=1,e=this.vertices.length;d<e;d++){a= A=M[e],ua.copy(A),ua.subSelf($.multiplyScalar($.dot(A))).normalize(),ka.cross(f.vertexNormals[d],A),e=ka.dot(N[e]),e=0>e?-1:1,f.vertexTangents[d]=new THREE.Vector4(ua.x,ua.y,ua.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0<this.vertices.length){var a;a=this.vertices[0].position;this.boundingBox?(this.boundingBox.min.copy(a),this.boundingBox.max.copy(a)):this.boundingBox={min:a.clone(),max:a.clone()};for(var b=this.boundingBox.min,c=this.boundingBox.max,d=1,e=this.vertices.length;d<
this.vertices[d].position;if(a.x<b.x)b.x=a.x;else if(a.x>c.x)c.x=a.x;if(a.y<b.y)b.y=a.y;else if(a.y>c.y)c.y=a.y;if(a.z<b.z)b.z=a.z;else if(a.z>c.z)c.z=a.z}}},computeBoundingSphere:function(){for(var a,b=0,c=0,d=this.vertices.length;c<d;c++)a=this.vertices[c].position.length(),a>b&&(b=a);this.boundingSphere={radius:b}},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,h;for(f=0,h=this.vertices.length;f<h;f++)d=this.vertices[f].position,d=[Math.round(d.x*e),Math.round(d.y*e),Math.round(d.z* e;d++){a=this.vertices[d].position;if(a.x<b.x)b.x=a.x;else if(a.x>c.x)c.x=a.x;if(a.y<b.y)b.y=a.y;else if(a.y>c.y)c.y=a.y;if(a.z<b.z)b.z=a.z;else if(a.z>c.z)c.z=a.z}}},computeBoundingSphere:function(){for(var a,b=0,c=0,d=this.vertices.length;c<d;c++)a=this.vertices[c].position.length(),a>b&&(b=a);this.boundingSphere={radius:b}},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,h;for(f=0,h=this.vertices.length;f<h;f++)d=this.vertices[f].position,d=[Math.round(d.x*e),Math.round(d.y*e),
e)].join("_"),void 0===a[d]?(a[d]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[d]];for(f=0,h=this.faces.length;f<h;f++)if(a=this.faces[f],a instanceof THREE.Face3)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c];else if(a instanceof THREE.Face4)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c],a.d=c[a.d];this.vertices=b}};THREE.GeometryCount=0; Math.round(d.z*e)].join("_"),void 0===a[d]?(a[d]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[d]];for(f=0,h=this.faces.length;f<h;f++)if(a=this.faces[f],a instanceof THREE.Face3)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c];else if(a instanceof THREE.Face4)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c],a.d=c[a.d];this.vertices=b}};THREE.GeometryCount=0;
THREE.Spline=function(a){function b(a,b,c,d,e,f,h){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*h+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,h,i,k,l,j,n,p;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;f=Math.floor(e);h=e-f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>this.points.length-2?f:f+1;c[3]=f>this.points.length-3?f:f+2;l=this.points[c[0]];j=this.points[c[1]]; THREE.Spline=function(a){function b(a,b,c,d,e,f,h){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*h+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,h,i,k,l,j,n,p;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;f=Math.floor(e);h=e-f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>this.points.length-2?f:f+1;c[3]=f>this.points.length-3?f:f+2;l=this.points[c[0]];j=this.points[c[1]];
n=this.points[c[2]];p=this.points[c[3]];i=h*h;k=h*i;d.x=b(l.x,j.x,n.x,p.x,h,i,k);d.y=b(l.y,j.y,n.y,p.y,h,i,k);d.z=b(l.z,j.z,n.z,p.z,h,i,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,h=new THREE.Vector3,i=[],j=0;i[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b=a/c,d=this.getPoint(b),h.copy(d),j+=h.distanceTo(f), n=this.points[c[2]];p=this.points[c[3]];i=h*h;k=h*i;d.x=b(l.x,j.x,n.x,p.x,h,i,k);d.y=b(l.y,j.y,n.y,p.y,h,i,k);d.z=b(l.z,j.z,n.z,p.z,h,i,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,h=new THREE.Vector3,i=[],j=0;i[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b=a/c,d=this.getPoint(b),h.copy(d),j+=h.distanceTo(f),
f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(i[b]=j,e=b);i[i.length]=j;return{chunks:i,total:j}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,h,i=[],j=new THREE.Vector3,l=this.getLength();i.push(j.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=l.chunks[b]-l.chunks[b-1];h=Math.ceil(a*c/l.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<h-1;c++)d=e+c*(1/h)*(f-e),d=this.getPoint(d),i.push(j.copy(d).clone());i.push(j.copy(this.points[b]).clone())}this.points= f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(i[b]=j,e=b);i[i.length]=j;return{chunks:i,total:j}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,h,i=[],j=new THREE.Vector3,l=this.getLength();i.push(j.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=l.chunks[b]-l.chunks[b-1];h=Math.ceil(a*c/l.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<h-1;c++)d=e+c*(1/h)*(f-e),d=this.getPoint(d),i.push(j.copy(d).clone());i.push(j.copy(this.points[b]).clone())}this.points=
...@@ -186,43 +186,43 @@ THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragme ...@@ -186,43 +186,43 @@ THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragme
THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}}; THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};
THREE.WebGLRenderer=function(a){function b(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){if(void 0===a.__webglCustomAttributesList)a.__webglCustomAttributesList=[];for(var e in d.attributes){var f=d.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var h=1;"v2"===f.type?h=2:"v3"===f.type?h=3:"v4"===f.type?h=4:"c"===f.type&&(h=3);f.size=h;f.array=new Float32Array(c*h);f.buffer=g.createBuffer();f.buffer.belongsToAttribute=e;f.needsUpdate=!0}a.__webglCustomAttributesList.push(f)}}} THREE.WebGLRenderer=function(a){function b(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){if(void 0===a.__webglCustomAttributesList)a.__webglCustomAttributesList=[];for(var e in d.attributes){var f=d.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var h=1;"v2"===f.type?h=2:"v3"===f.type?h=3:"v4"===f.type?h=4:"c"===f.type&&(h=3);f.size=h;f.array=new Float32Array(c*h);f.buffer=g.createBuffer();f.buffer.belongsToAttribute=e;f.needsUpdate=!0}a.__webglCustomAttributesList.push(f)}}}
function c(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMaterial))return a.material;if(0<=b.materialIndex)return a.geometry.materials[b.materialIndex]}function d(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function e(a){return a.map||a.lightMap||a instanceof THREE.ShaderMaterial?!0:!1}function f(a,b,c){var d,e,f,h,i=a.vertices;h=i.length; function c(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMaterial))return a.material;if(0<=b.materialIndex)return a.geometry.materials[b.materialIndex]}function d(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function e(a){return a.map||a.lightMap||a instanceof THREE.ShaderMaterial?!0:!1}function f(a,b,c){var d,e,f,h,i=a.vertices;h=i.length;
var j=a.colors,l=j.length,n=a.__vertexArray,m=a.__colorArray,k=a.__sortArray,p=a.__dirtyVertices,o=a.__dirtyColors,r=a.__webglCustomAttributesList;if(c.sortParticles){Ta.multiplySelf(c.matrixWorld);for(d=0;d<h;d++)e=i[d].position,Ua.copy(e),Ta.multiplyVector3(Ua),k[d]=[Ua.z,d];k.sort(function(a,b){return b[0]-a[0]});for(d=0;d<h;d++)e=i[k[d][1]].position,f=3*d,n[f]=e.x,n[f+1]=e.y,n[f+2]=e.z;for(d=0;d<l;d++)f=3*d,e=j[k[d][1]],m[f]=e.r,m[f+1]=e.g,m[f+2]=e.b;if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j], var j=a.colors,l=j.length,n=a.__vertexArray,m=a.__colorArray,k=a.__sortArray,p=a.__dirtyVertices,o=a.__dirtyColors,r=a.__webglCustomAttributesList;if(c.sortParticles){Va.multiplySelf(c.matrixWorld);for(d=0;d<h;d++)e=i[d].position,Ia.copy(e),Va.multiplyVector3(Ia),k[d]=[Ia.z,d];k.sort(function(a,b){return b[0]-a[0]});for(d=0;d<h;d++)e=i[k[d][1]].position,f=3*d,n[f]=e.x,n[f+1]=e.y,n[f+2]=e.z;for(d=0;d<l;d++)f=3*d,e=j[k[d][1]],m[f]=e.r,m[f+1]=e.g,m[f+2]=e.b;if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j],
void 0===i.boundTo||"vertices"===i.boundTo)if(f=0,e=i.value.length,1===i.size)for(d=0;d<e;d++)h=k[d][1],i.array[d]=i.value[h];else if(2===i.size)for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.x,i.array[f+1]=h.y,f+=2;else if(3===i.size)if("c"===i.type)for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.r,i.array[f+1]=h.g,i.array[f+2]=h.b,f+=3;else for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,f+=3;else if(4===i.size)for(d=0;d<e;d++)h=k[d][1],h=i.value[h], void 0===i.boundTo||"vertices"===i.boundTo)if(f=0,e=i.value.length,1===i.size)for(d=0;d<e;d++)h=k[d][1],i.array[d]=i.value[h];else if(2===i.size)for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.x,i.array[f+1]=h.y,f+=2;else if(3===i.size)if("c"===i.type)for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.r,i.array[f+1]=h.g,i.array[f+2]=h.b,f+=3;else for(d=0;d<e;d++)h=k[d][1],h=i.value[h],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,f+=3;else if(4===i.size)for(d=0;d<e;d++)h=k[d][1],h=i.value[h],
i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,i.array[f+3]=h.w,f+=4}else{if(p)for(d=0;d<h;d++)e=i[d].position,f=3*d,n[f]=e.x,n[f+1]=e.y,n[f+2]=e.z;if(o)for(d=0;d<l;d++)e=j[d],f=3*d,m[f]=e.r,m[f+1]=e.g,m[f+2]=e.b;if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j],i.needsUpdate&&(void 0===i.boundTo||"vertices"===i.boundTo))if(e=i.value.length,f=0,1===i.size)for(d=0;d<e;d++)i.array[d]=i.value[d];else if(2===i.size)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,f+=2;else if(3===i.size)if("c"=== i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,i.array[f+3]=h.w,f+=4}else{if(p)for(d=0;d<h;d++)e=i[d].position,f=3*d,n[f]=e.x,n[f+1]=e.y,n[f+2]=e.z;if(o)for(d=0;d<l;d++)e=j[d],f=3*d,m[f]=e.r,m[f+1]=e.g,m[f+2]=e.b;if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j],i.needsUpdate&&(void 0===i.boundTo||"vertices"===i.boundTo))if(e=i.value.length,f=0,1===i.size)for(d=0;d<e;d++)i.array[d]=i.value[d];else if(2===i.size)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,f+=2;else if(3===i.size)if("c"===
i.type)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.r,i.array[f+1]=h.g,i.array[f+2]=h.b,f+=3;else for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,f+=3;else if(4===i.size)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,i.array[f+3]=h.w,f+=4}if(p||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,a.__webglVertexBuffer),g.bufferData(g.ARRAY_BUFFER,n,b);if(o||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,a.__webglColorBuffer),g.bufferData(g.ARRAY_BUFFER, i.type)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.r,i.array[f+1]=h.g,i.array[f+2]=h.b,f+=3;else for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,f+=3;else if(4===i.size)for(d=0;d<e;d++)h=i.value[d],i.array[f]=h.x,i.array[f+1]=h.y,i.array[f+2]=h.z,i.array[f+3]=h.w,f+=4}if(p||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,a.__webglVertexBuffer),g.bufferData(g.ARRAY_BUFFER,n,b);if(o||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,a.__webglColorBuffer),g.bufferData(g.ARRAY_BUFFER,
m,b);if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j],i.needsUpdate||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,i.buffer),g.bufferData(g.ARRAY_BUFFER,i.array,b)}function h(a,b){return b.z-a.z}function i(a,b,c){if(a.length)for(var d=0,g=a.length;d<g;d++)Z=null,Q=L=Ma=Ca=ya=-1,a[d].render(b,c,bc,cc),Z=null,Q=L=Ma=Ca=ya=-1}function k(a,b,c,d,g,e,f,h){var i,j,l,n;b?(j=a.length-1,n=b=-1):(j=0,b=a.length,n=1);for(var m=j;m!==b;m+=n)if(i=a[m],i.render){j=i.object;l=i.buffer;if(h)i=h;else{i=i[c];if(!i)continue; m,b);if(r)for(j=0,l=r.length;j<l;j++)if(i=r[j],i.needsUpdate||c.sortParticles)g.bindBuffer(g.ARRAY_BUFFER,i.buffer),g.bufferData(g.ARRAY_BUFFER,i.array,b)}function h(a,b){return b.z-a.z}function i(a,b,c){if(a.length)for(var d=0,g=a.length;d<g;d++)W=ba=null,Q=L=Oa=Na=Ba=-1,a[d].render(b,c,cc,dc),W=ba=null,Q=L=Oa=Na=Ba=-1}function k(a,b,c,d,g,e,f,h){var i,j,l,n;b?(j=a.length-1,n=b=-1):(j=0,b=a.length,n=1);for(var m=j;m!==b;m+=n)if(i=a[m],i.render){j=i.object;l=i.buffer;if(h)i=h;else{i=i[c];if(!i)continue;
f&&D.setBlending(i.blending);D.setDepthTest(i.depthTest);D.setDepthWrite(i.depthWrite);z(i.polygonOffset,i.polygonOffsetFactor,i.polygonOffsetUnits)}D.setObjectFaces(j);l instanceof THREE.BufferGeometry?D.renderBufferDirect(d,g,e,i,l,j):D.renderBuffer(d,g,e,i,l,j)}}function l(a,b,c,d,g,e,f){for(var h,i,j=0,l=a.length;j<l;j++)if(h=a[j],i=h.object,i.visible){if(f)h=f;else{h=h[b];if(!h)continue;e&&D.setBlending(h.blending);D.setDepthTest(h.depthTest);D.setDepthWrite(h.depthWrite);z(h.polygonOffset,h.polygonOffsetFactor, f&&D.setBlending(i.blending);D.setDepthTest(i.depthTest);D.setDepthWrite(i.depthWrite);z(i.polygonOffset,i.polygonOffsetFactor,i.polygonOffsetUnits)}D.setObjectFaces(j);l instanceof THREE.BufferGeometry?D.renderBufferDirect(d,g,e,i,l,j):D.renderBuffer(d,g,e,i,l,j)}}function l(a,b,c,d,g,e,f){for(var h,i,j=0,l=a.length;j<l;j++)if(h=a[j],i=h.object,i.visible){if(f)h=f;else{h=h[b];if(!h)continue;e&&D.setBlending(h.blending);D.setDepthTest(h.depthTest);D.setDepthWrite(h.depthWrite);z(h.polygonOffset,h.polygonOffsetFactor,
h.polygonOffsetUnits)}D.renderImmediateObject(c,d,g,h,i)}}function j(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function n(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function p(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function o(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function m(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function r(a,b,c,d,e){d.program||D.initMaterial(d,b,c,e);if(d.morphTargets&& h.polygonOffsetUnits)}D.renderImmediateObject(c,d,g,h,i)}}function j(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function n(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function p(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function o(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function m(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function r(a,b,c,d,e){d.program||D.initMaterial(d,b,c,e);if(d.morphTargets&&
!e.__webglMorphTargetInfluences){e.__webglMorphTargetInfluences=new Float32Array(D.maxMorphTargets);for(var f=0,h=D.maxMorphTargets;f<h;f++)e.__webglMorphTargetInfluences[f]=0}var i=!1,f=d.program,h=f.uniforms,j=d.uniforms;f!==Z&&(g.useProgram(f),Z=f,i=!0);if(d.id!==Q)Q=d.id,i=!0;if(i){g.uniformMatrix4fv(h.projectionMatrix,!1,a._projectionMatrixArray);if(c&&d.fog)if(j.fogColor.value=c.color,c instanceof THREE.Fog)j.fogNear.value=c.near,j.fogFar.value=c.far;else if(c instanceof THREE.FogExp2)j.fogDensity.value= !e.__webglMorphTargetInfluences){e.__webglMorphTargetInfluences=new Float32Array(D.maxMorphTargets);for(var f=0,h=D.maxMorphTargets;f<h;f++)e.__webglMorphTargetInfluences[f]=0}var i=!1,f=d.program,h=f.uniforms,j=d.uniforms;f!==ba&&(g.useProgram(f),ba=f,i=!0);if(d.id!==Q)Q=d.id,i=!0;if(i||a!==W)g.uniformMatrix4fv(h.projectionMatrix,!1,a._projectionMatrixArray),a!==W&&(W=a);if(i){if(c&&d.fog)if(j.fogColor.value=c.color,c instanceof THREE.Fog)j.fogNear.value=c.near,j.fogFar.value=c.far;else if(c instanceof
c.density;if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){var l,n=0,m=0,k=0,p,o,r,t=dc,u=t.directional.colors,z=t.directional.positions,y=t.point.colors,A=t.point.positions,K=t.point.distances,M=0,I=0,N=r=0;for(c=0,i=b.length;c<i;c++)if(l=b[c],!l.onlyShadow)if(p=l.color,o=l.intensity,r=l.distance,l instanceof THREE.AmbientLight)D.gammaInput?(n+=p.r*p.r,m+=p.g*p.g,k+=p.b*p.b):(n+=p.r,m+=p.g,k+=p.b);else if(l instanceof THREE.DirectionalLight)r=3*M,D.gammaInput? THREE.FogExp2)j.fogDensity.value=c.density;if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){var l,n=0,m=0,k=0,p,o,r,t=ec,u=t.directional.colors,z=t.directional.positions,y=t.point.colors,A=t.point.positions,K=t.point.distances,M=0,I=0,N=r=0;for(c=0,i=b.length;c<i;c++)if(l=b[c],!l.onlyShadow)if(p=l.color,o=l.intensity,r=l.distance,l instanceof THREE.AmbientLight)D.gammaInput?(n+=p.r*p.r,m+=p.g*p.g,k+=p.b*p.b):(n+=p.r,m+=p.g,k+=p.b);else if(l instanceof THREE.DirectionalLight)r=
(u[r]=p.r*p.r*o*o,u[r+1]=p.g*p.g*o*o,u[r+2]=p.b*p.b*o*o):(u[r]=p.r*o,u[r+1]=p.g*o,u[r+2]=p.b*o),Ia.copy(l.matrixWorld.getPosition()),Ia.subSelf(l.target.matrixWorld.getPosition()),Ia.normalize(),z[r]=Ia.x,z[r+1]=Ia.y,z[r+2]=Ia.z,M+=1;else if(l instanceof THREE.PointLight||l instanceof THREE.SpotLight)N=3*I,D.gammaInput?(y[N]=p.r*p.r*o*o,y[N+1]=p.g*p.g*o*o,y[N+2]=p.b*p.b*o*o):(y[N]=p.r*o,y[N+1]=p.g*o,y[N+2]=p.b*o),l=l.matrixWorld.getPosition(),A[N]=l.x,A[N+1]=l.y,A[N+2]=l.z,K[I]=r,I+=1;for(c=3*M,i= 3*M,D.gammaInput?(u[r]=p.r*p.r*o*o,u[r+1]=p.g*p.g*o*o,u[r+2]=p.b*p.b*o*o):(u[r]=p.r*o,u[r+1]=p.g*o,u[r+2]=p.b*o),ib.copy(l.matrixWorld.getPosition()),ib.subSelf(l.target.matrixWorld.getPosition()),ib.normalize(),z[r]=ib.x,z[r+1]=ib.y,z[r+2]=ib.z,M+=1;else if(l instanceof THREE.PointLight||l instanceof THREE.SpotLight)N=3*I,D.gammaInput?(y[N]=p.r*p.r*o*o,y[N+1]=p.g*p.g*o*o,y[N+2]=p.b*p.b*o*o):(y[N]=p.r*o,y[N+1]=p.g*o,y[N+2]=p.b*o),l=l.matrixWorld.getPosition(),A[N]=l.x,A[N+1]=l.y,A[N+2]=l.z,K[I]=r,
u.length;c<i;c++)u[c]=0;for(c=3*I,i=y.length;c<i;c++)y[c]=0;t.point.length=I;t.directional.length=M;t.ambient[0]=n;t.ambient[1]=m;t.ambient[2]=k;c=dc;j.ambientLightColor.value=c.ambient;j.directionalLightColor.value=c.directional.colors;j.directionalLightDirection.value=c.directional.positions;j.pointLightColor.value=c.point.colors;j.pointLightPosition.value=c.point.positions;j.pointLightDistance.value=c.point.distances}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial|| I+=1;for(c=3*M,i=u.length;c<i;c++)u[c]=0;for(c=3*I,i=y.length;c<i;c++)y[c]=0;t.point.length=I;t.directional.length=M;t.ambient[0]=n;t.ambient[1]=m;t.ambient[2]=k;c=ec;j.ambientLightColor.value=c.ambient;j.directionalLightColor.value=c.directional.colors;j.directionalLightDirection.value=c.directional.positions;j.pointLightColor.value=c.point.colors;j.pointLightPosition.value=c.point.positions;j.pointLightDistance.value=c.point.distances}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||
d instanceof THREE.MeshPhongMaterial)j.opacity.value=d.opacity,D.gammaInput?j.diffuse.value.copyGammaToLinear(d.color):j.diffuse.value=d.color,(j.map.texture=d.map)&&j.offsetRepeat.value.set(d.map.offset.x,d.map.offset.y,d.map.repeat.x,d.map.repeat.y),j.lightMap.texture=d.lightMap,j.envMap.texture=d.envMap,j.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1,j.reflectivity.value=d.reflectivity,j.refractionRatio.value=d.refractionRatio,j.combine.value=d.combine,j.useRefract.value= d instanceof THREE.MeshPhongMaterial)j.opacity.value=d.opacity,D.gammaInput?j.diffuse.value.copyGammaToLinear(d.color):j.diffuse.value=d.color,(j.map.texture=d.map)&&j.offsetRepeat.value.set(d.map.offset.x,d.map.offset.y,d.map.repeat.x,d.map.repeat.y),j.lightMap.texture=d.lightMap,j.envMap.texture=d.envMap,j.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1,j.reflectivity.value=d.reflectivity,j.refractionRatio.value=d.refractionRatio,j.combine.value=d.combine,j.useRefract.value=
d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping;if(d instanceof THREE.LineBasicMaterial)j.diffuse.value=d.color,j.opacity.value=d.opacity;else if(d instanceof THREE.ParticleBasicMaterial)j.psColor.value=d.color,j.opacity.value=d.opacity,j.size.value=d.size,j.scale.value=H.height/2,j.map.texture=d.map;else if(d instanceof THREE.MeshPhongMaterial)j.shininess.value=d.shininess,D.gammaInput?(j.ambient.value.copyGammaToLinear(d.ambient),j.specular.value.copyGammaToLinear(d.specular)): d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping;if(d instanceof THREE.LineBasicMaterial)j.diffuse.value=d.color,j.opacity.value=d.opacity;else if(d instanceof THREE.ParticleBasicMaterial)j.psColor.value=d.color,j.opacity.value=d.opacity,j.size.value=d.size,j.scale.value=H.height/2,j.map.texture=d.map;else if(d instanceof THREE.MeshPhongMaterial)j.shininess.value=d.shininess,D.gammaInput?(j.ambient.value.copyGammaToLinear(d.ambient),j.specular.value.copyGammaToLinear(d.specular)):
(j.ambient.value=d.ambient,j.specular.value=d.specular),d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB);else if(d instanceof THREE.MeshLambertMaterial)D.gammaInput?j.ambient.value.copyGammaToLinear(d.ambient):j.ambient.value=d.ambient,d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB);else if(d instanceof THREE.MeshDepthMaterial)j.mNear.value=a.near,j.mFar.value=a.far,j.opacity.value=d.opacity;else if(d instanceof THREE.MeshNormalMaterial)j.opacity.value=d.opacity;if(e.receiveShadow&&!d._shadowPass&&j.shadowMatrix){i= (j.ambient.value=d.ambient,j.specular.value=d.specular),d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB);else if(d instanceof THREE.MeshLambertMaterial)D.gammaInput?j.ambient.value.copyGammaToLinear(d.ambient):j.ambient.value=d.ambient,d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB);else if(d instanceof THREE.MeshDepthMaterial)j.mNear.value=a.near,j.mFar.value=a.far,j.opacity.value=d.opacity;else if(d instanceof THREE.MeshNormalMaterial)j.opacity.value=d.opacity;if(e.receiveShadow&&!d._shadowPass&&j.shadowMatrix){i=
c=0;for(n=b.length;i<n;i++)if(m=b[i],m.castShadow&&(m instanceof THREE.SpotLight||m instanceof THREE.DirectionalLight))j.shadowMap.texture[c]=m.shadowMap,j.shadowMapSize.value[c]=m.shadowMapSize,j.shadowMatrix.value[c]=m.shadowMatrix,j.shadowDarkness.value[c]=m.shadowDarkness,j.shadowBias.value[c]=m.shadowBias,c++}b=d.uniformsList;for(j=0,c=b.length;j<c;j++)if(m=f.uniforms[b[j][1]])if(i=b[j][0],k=i.type,n=i.value,"i"===k)g.uniform1i(m,n);else if("f"===k)g.uniform1f(m,n);else if("v2"===k)g.uniform2f(m, c=0;for(n=b.length;i<n;i++)if(m=b[i],m.castShadow&&(m instanceof THREE.SpotLight||m instanceof THREE.DirectionalLight))j.shadowMap.texture[c]=m.shadowMap,j.shadowMapSize.value[c]=m.shadowMapSize,j.shadowMatrix.value[c]=m.shadowMatrix,j.shadowDarkness.value[c]=m.shadowDarkness,j.shadowBias.value[c]=m.shadowBias,c++}b=d.uniformsList;for(j=0,c=b.length;j<c;j++)if(m=f.uniforms[b[j][1]])if(i=b[j][0],k=i.type,n=i.value,"i"===k)g.uniform1i(m,n);else if("f"===k)g.uniform1f(m,n);else if("v2"===k)g.uniform2f(m,
n.x,n.y);else if("v3"===k)g.uniform3f(m,n.x,n.y,n.z);else if("v4"===k)g.uniform4f(m,n.x,n.y,n.z,n.w);else if("c"===k)g.uniform3f(m,n.r,n.g,n.b);else if("fv1"===k)g.uniform1fv(m,n);else if("fv"===k)g.uniform3fv(m,n);else if("v2v"===k){if(!i._array)i._array=new Float32Array(2*n.length);for(k=0,t=n.length;k<t;k++)u=2*k,i._array[u]=n[k].x,i._array[u+1]=n[k].y;g.uniform2fv(m,i._array)}else if("v3v"===k){if(!i._array)i._array=new Float32Array(3*n.length);for(k=0,t=n.length;k<t;k++)u=3*k,i._array[u]=n[k].x, n.x,n.y);else if("v3"===k)g.uniform3f(m,n.x,n.y,n.z);else if("v4"===k)g.uniform4f(m,n.x,n.y,n.z,n.w);else if("c"===k)g.uniform3f(m,n.r,n.g,n.b);else if("fv1"===k)g.uniform1fv(m,n);else if("fv"===k)g.uniform3fv(m,n);else if("v2v"===k){if(!i._array)i._array=new Float32Array(2*n.length);for(k=0,t=n.length;k<t;k++)u=2*k,i._array[u]=n[k].x,i._array[u+1]=n[k].y;g.uniform2fv(m,i._array)}else if("v3v"===k){if(!i._array)i._array=new Float32Array(3*n.length);for(k=0,t=n.length;k<t;k++)u=3*k,i._array[u]=n[k].x,
i._array[u+1]=n[k].y,i._array[u+2]=n[k].z;g.uniform3fv(m,i._array)}else if("v4v"==k){if(!i._array)i._array=new Float32Array(4*n.length);for(k=0,t=n.length;k<t;k++)u=4*k,i._array[u]=n[k].x,i._array[u+1]=n[k].y,i._array[u+2]=n[k].z,i._array[u+3]=n[k].w;g.uniform4fv(m,i._array)}else if("m4"===k){if(!i._array)i._array=new Float32Array(16);n.flattenToArray(i._array);g.uniformMatrix4fv(m,!1,i._array)}else if("m4v"===k){if(!i._array)i._array=new Float32Array(16*n.length);for(k=0,t=n.length;k<t;k++)n[k].flattenToArrayOffset(i._array, i._array[u+1]=n[k].y,i._array[u+2]=n[k].z;g.uniform3fv(m,i._array)}else if("v4v"==k){if(!i._array)i._array=new Float32Array(4*n.length);for(k=0,t=n.length;k<t;k++)u=4*k,i._array[u]=n[k].x,i._array[u+1]=n[k].y,i._array[u+2]=n[k].z,i._array[u+3]=n[k].w;g.uniform4fv(m,i._array)}else if("m4"===k){if(!i._array)i._array=new Float32Array(16);n.flattenToArray(i._array);g.uniformMatrix4fv(m,!1,i._array)}else if("m4v"===k){if(!i._array)i._array=new Float32Array(16*n.length);for(k=0,t=n.length;k<t;k++)n[k].flattenToArrayOffset(i._array,
16*k);g.uniformMatrix4fv(m,!1,i._array)}else if("t"===k){if(g.uniform1i(m,n),m=i.texture)if(m.image instanceof Array&&6===m.image.length){if(i=m,6===i.image.length)if(i.needsUpdate){if(!i.image.__webglTextureCube)i.image.__webglTextureCube=g.createTexture();g.activeTexture(g.TEXTURE0+n);g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube);n=[];for(m=0;6>m;m++){k=n;t=m;if(D.autoScaleCubemaps){if(u=i.image[m],y=tc,!(u.width<=y&&u.height<=y))A=Math.max(u.width,u.height),z=Math.floor(u.width* 16*k);g.uniformMatrix4fv(m,!1,i._array)}else if("t"===k){if(g.uniform1i(m,n),m=i.texture)if(m.image instanceof Array&&6===m.image.length){if(i=m,6===i.image.length)if(i.needsUpdate){if(!i.image.__webglTextureCube)i.image.__webglTextureCube=g.createTexture();g.activeTexture(g.TEXTURE0+n);g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube);n=[];for(m=0;6>m;m++){k=n;t=m;if(D.autoScaleCubemaps){if(u=i.image[m],y=uc,!(u.width<=y&&u.height<=y))A=Math.max(u.width,u.height),z=Math.floor(u.width*
y/A),y=Math.floor(u.height*y/A),A=document.createElement("canvas"),A.width=z,A.height=y,A.getContext("2d").drawImage(u,0,0,u.width,u.height,0,0,z,y),u=A}else u=i.image[m];k[t]=u}m=n[0];k=0===(m.width&m.width-1)&&0===(m.height&m.height-1);t=B(i.format);u=B(i.type);J(g.TEXTURE_CUBE_MAP,i,k);for(m=0;6>m;m++)g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+m,0,t,t,u,n[m]);i.generateMipmaps&&k&&g.generateMipmap(g.TEXTURE_CUBE_MAP);i.needsUpdate=!1;if(i.onUpdated)i.onUpdated()}else g.activeTexture(g.TEXTURE0+ y/A),y=Math.floor(u.height*y/A),A=document.createElement("canvas"),A.width=z,A.height=y,A.getContext("2d").drawImage(u,0,0,u.width,u.height,0,0,z,y),u=A}else u=i.image[m];k[t]=u}m=n[0];k=0===(m.width&m.width-1)&&0===(m.height&m.height-1);t=B(i.format);u=B(i.type);J(g.TEXTURE_CUBE_MAP,i,k);for(m=0;6>m;m++)g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+m,0,t,t,u,n[m]);i.generateMipmaps&&k&&g.generateMipmap(g.TEXTURE_CUBE_MAP);i.needsUpdate=!1;if(i.onUpdated)i.onUpdated()}else g.activeTexture(g.TEXTURE0+
n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube)}else m instanceof THREE.WebGLRenderTargetCube?(i=m,g.activeTexture(g.TEXTURE0+n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.__webglTexture)):D.setTexture(m,n)}else if("tv"===k){if(!i._array){i._array=[];for(k=0,t=i.texture.length;k<t;k++)i._array[k]=n+k}g.uniform1iv(m,i._array);for(k=0,t=i.texture.length;k<t;k++)(m=i.texture[k])&&D.setTexture(m,i._array[k])}(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&& n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube)}else m instanceof THREE.WebGLRenderTargetCube?(i=m,g.activeTexture(g.TEXTURE0+n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.__webglTexture)):D.setTexture(m,n)}else if("tv"===k){if(!i._array){i._array=[];for(k=0,t=i.texture.length;k<t;k++)i._array[k]=n+k}g.uniform1iv(m,i._array);for(k=0,t=i.texture.length;k<t;k++)(m=i.texture[k])&&D.setTexture(m,i._array[k])}(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&
null!==h.cameraPosition&&g.uniform3f(h.cameraPosition,a.position.x,a.position.y,a.position.z);(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==h.viewMatrix&&g.uniformMatrix4fv(h.viewMatrix,!1,a._viewMatrixArray);d.skinning&&(g.uniformMatrix4fv(h.cameraInverseMatrix,!1,a._viewMatrixArray),g.uniformMatrix4fv(h.boneGlobalMatrices,!1,e.boneMatrices))}g.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrixArray);h.normalMatrix&& null!==h.cameraPosition&&g.uniform3f(h.cameraPosition,a.position.x,a.position.y,a.position.z);(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==h.viewMatrix&&g.uniformMatrix4fv(h.viewMatrix,!1,a._viewMatrixArray);d.skinning&&(g.uniformMatrix4fv(h.cameraInverseMatrix,!1,a._viewMatrixArray),g.uniformMatrix4fv(h.boneGlobalMatrices,!1,e.boneMatrices))}g.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrixArray);h.normalMatrix&&
g.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrixArray);(d instanceof THREE.ShaderMaterial||d.envMap||d.skinning||e.receiveShadow)&&null!==h.objectMatrix&&g.uniformMatrix4fv(h.objectMatrix,!1,e._objectMatrixArray);return f}function t(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function z(a,b,c){mb!==a&&(a?g.enable(g.POLYGON_OFFSET_FILL):g.disable(g.POLYGON_OFFSET_FILL), g.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrixArray);(d instanceof THREE.ShaderMaterial||d.envMap||d.skinning||e.receiveShadow)&&null!==h.objectMatrix&&g.uniformMatrix4fv(h.objectMatrix,!1,e._objectMatrixArray);return f}function t(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function z(a,b,c){Pa!==a&&(a?g.enable(g.POLYGON_OFFSET_FILL):g.disable(g.POLYGON_OFFSET_FILL),
mb=a);if(a&&(Sa!==b||Pa!==c))g.polygonOffset(b,c),Sa=b,Pa=c}function y(a,b){var c;"fragment"===a?c=g.createShader(g.FRAGMENT_SHADER):"vertex"===a&&(c=g.createShader(g.VERTEX_SHADER));g.shaderSource(c,b);g.compileShader(c);return!g.getShaderParameter(c,g.COMPILE_STATUS)?(console.error(g.getShaderInfoLog(c)),console.error(b),null):c}function J(a,b,c){c?(g.texParameteri(a,g.TEXTURE_WRAP_S,B(b.wrapS)),g.texParameteri(a,g.TEXTURE_WRAP_T,B(b.wrapT)),g.texParameteri(a,g.TEXTURE_MAG_FILTER,B(b.magFilter)), Pa=a);if(a&&(Ta!==b||Ua!==c))g.polygonOffset(b,c),Ta=b,Ua=c}function y(a,b){var c;"fragment"===a?c=g.createShader(g.FRAGMENT_SHADER):"vertex"===a&&(c=g.createShader(g.VERTEX_SHADER));g.shaderSource(c,b);g.compileShader(c);return!g.getShaderParameter(c,g.COMPILE_STATUS)?(console.error(g.getShaderInfoLog(c)),console.error(b),null):c}function J(a,b,c){c?(g.texParameteri(a,g.TEXTURE_WRAP_S,B(b.wrapS)),g.texParameteri(a,g.TEXTURE_WRAP_T,B(b.wrapT)),g.texParameteri(a,g.TEXTURE_MAG_FILTER,B(b.magFilter)),
g.texParameteri(a,g.TEXTURE_MIN_FILTER,B(b.minFilter))):(g.texParameteri(a,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(a,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texParameteri(a,g.TEXTURE_MAG_FILTER,u(b.magFilter)),g.texParameteri(a,g.TEXTURE_MIN_FILTER,u(b.minFilter)))}function K(a,b){g.bindRenderbuffer(g.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_COMPONENT16,b.width,b.height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_ATTACHMENT,g.RENDERBUFFER, g.texParameteri(a,g.TEXTURE_MIN_FILTER,B(b.minFilter))):(g.texParameteri(a,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(a,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texParameteri(a,g.TEXTURE_MAG_FILTER,u(b.magFilter)),g.texParameteri(a,g.TEXTURE_MIN_FILTER,u(b.minFilter)))}function K(a,b){g.bindRenderbuffer(g.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_COMPONENT16,b.width,b.height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_ATTACHMENT,g.RENDERBUFFER,
a)):b.depthBuffer&&b.stencilBuffer?(g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_STENCIL,b.width,b.height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_STENCIL_ATTACHMENT,g.RENDERBUFFER,a)):g.renderbufferStorage(g.RENDERBUFFER,g.RGBA4,b.width,b.height)}function u(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return g.NEAREST;default:return g.LINEAR}}function B(a){switch(a){case THREE.RepeatWrapping:return g.REPEAT;case THREE.ClampToEdgeWrapping:return g.CLAMP_TO_EDGE; a)):b.depthBuffer&&b.stencilBuffer?(g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_STENCIL,b.width,b.height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_STENCIL_ATTACHMENT,g.RENDERBUFFER,a)):g.renderbufferStorage(g.RENDERBUFFER,g.RGBA4,b.width,b.height)}function u(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return g.NEAREST;default:return g.LINEAR}}function B(a){switch(a){case THREE.RepeatWrapping:return g.REPEAT;case THREE.ClampToEdgeWrapping:return g.CLAMP_TO_EDGE;
case THREE.MirroredRepeatWrapping:return g.MIRRORED_REPEAT;case THREE.NearestFilter:return g.NEAREST;case THREE.NearestMipMapNearestFilter:return g.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return g.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return g.LINEAR;case THREE.LinearMipMapNearestFilter:return g.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return g.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return g.BYTE;case THREE.UnsignedByteType:return g.UNSIGNED_BYTE;case THREE.ShortType:return g.SHORT; case THREE.MirroredRepeatWrapping:return g.MIRRORED_REPEAT;case THREE.NearestFilter:return g.NEAREST;case THREE.NearestMipMapNearestFilter:return g.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return g.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return g.LINEAR;case THREE.LinearMipMapNearestFilter:return g.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return g.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return g.BYTE;case THREE.UnsignedByteType:return g.UNSIGNED_BYTE;case THREE.ShortType:return g.SHORT;
case THREE.UnsignedShortType:return g.UNSIGNED_SHORT;case THREE.IntType:return g.INT;case THREE.UnsignedShortType:return g.UNSIGNED_INT;case THREE.FloatType:return g.FLOAT;case THREE.AlphaFormat:return g.ALPHA;case THREE.RGBFormat:return g.RGB;case THREE.RGBAFormat:return g.RGBA;case THREE.LuminanceFormat:return g.LUMINANCE;case THREE.LuminanceAlphaFormat:return g.LUMINANCE_ALPHA}return 0}var a=a||{},H=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.precision?a.precision: case THREE.UnsignedShortType:return g.UNSIGNED_SHORT;case THREE.IntType:return g.INT;case THREE.UnsignedShortType:return g.UNSIGNED_INT;case THREE.FloatType:return g.FLOAT;case THREE.AlphaFormat:return g.ALPHA;case THREE.RGBFormat:return g.RGB;case THREE.RGBAFormat:return g.RGBA;case THREE.LuminanceFormat:return g.LUMINANCE;case THREE.LuminanceAlphaFormat:return g.LUMINANCE_ALPHA}return 0}var a=a||{},H=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.precision?a.precision:
"mediump",M=void 0!==a.alpha?a.alpha:!0,N=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,I=void 0!==a.antialias?a.antialias:!1,ia=void 0!==a.stencil?a.stencil:!0,ua=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,S=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),$=void 0!==a.clearAlpha?a.clearAlpha:0,Y=void 0!==a.maxLights?a.maxLights:4;this.domElement=H;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth= "mediump",M=void 0!==a.alpha?a.alpha:!0,N=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,I=void 0!==a.antialias?a.antialias:!1,S=void 0!==a.stencil?a.stencil:!0,ua=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ka=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),$=void 0!==a.clearAlpha?a.clearAlpha:0,Z=void 0!==a.maxLights?a.maxLights:4;this.domElement=H;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=
this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var D=this,g,lb=[],Z=null,oa=null,Q=-1,L=null,qa=0,va=null,ba=null,ya=null,Ca=null,Ma=null,mb=null,Sa= this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var D=this,g,Sa=[],ba=null,pa=null,Q=-1,L=null,W=null,ya=0,ca=null,Ea=null,Ba=null,Na=null,Oa=null,Pa=
null,Pa=null,Na=null,zb=0,Fb=0,Pb=0,Ab=0,bc=0,cc=0,Gb=new THREE.Frustum,Ta=new THREE.Matrix4,Ua=new THREE.Vector4,Ia=new THREE.Vector3,dc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};g=function(){var a;try{if(!(a=H.getContext("experimental-webgl",{alpha:M,premultipliedAlpha:N,antialias:I,stencil:ia,preserveDrawingBuffer:ua})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+ null,Ta=null,Ua=null,nb=null,Fb=0,Pb=0,Ab=0,Gb=0,cc=0,dc=0,Qb=new THREE.Frustum,Va=new THREE.Matrix4,Ia=new THREE.Vector4,ib=new THREE.Vector3,ec={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};g=function(){var a;try{if(!(a=H.getContext("experimental-webgl",{alpha:M,premultipliedAlpha:N,antialias:I,stencil:S,preserveDrawingBuffer:ua})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+
" | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();g.clearColor(0,0,0,1);g.clearDepth(1);g.clearStencil(0);g.enable(g.DEPTH_TEST);g.depthFunc(g.LEQUAL);g.frontFace(g.CCW);g.cullFace(g.BACK);g.enable(g.CULL_FACE);g.enable(g.BLEND);g.blendEquation(g.FUNC_ADD);g.blendFunc(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA);g.clearColor(S.r,S.g,S.b,$);this.context=g;var ec=g.getParameter(g.MAX_VERTEX_TEXTURE_IMAGE_UNITS); " | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();g.clearColor(0,0,0,1);g.clearDepth(1);g.clearStencil(0);g.enable(g.DEPTH_TEST);g.depthFunc(g.LEQUAL);g.frontFace(g.CCW);g.cullFace(g.BACK);g.enable(g.CULL_FACE);g.enable(g.BLEND);g.blendEquation(g.FUNC_ADD);g.blendFunc(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA);g.clearColor(ka.r,ka.g,ka.b,$);this.context=g;var fc=g.getParameter(g.MAX_VERTEX_TEXTURE_IMAGE_UNITS);
g.getParameter(g.MAX_TEXTURE_SIZE);var tc=g.getParameter(g.MAX_CUBE_MAP_TEXTURE_SIZE);this.getContext=function(){return g};this.supportsVertexTextures=function(){return 0<ec};this.setSize=function(a,b){H.width=a;H.height=b;this.setViewport(0,0,H.width,H.height)};this.setViewport=function(a,b,c,d){zb=a;Fb=b;Pb=c;Ab=d;g.viewport(zb,Fb,Pb,Ab)};this.setScissor=function(a,b,c,d){g.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?g.enable(g.SCISSOR_TEST):g.disable(g.SCISSOR_TEST)};this.setClearColorHex= g.getParameter(g.MAX_TEXTURE_SIZE);var uc=g.getParameter(g.MAX_CUBE_MAP_TEXTURE_SIZE);this.getContext=function(){return g};this.supportsVertexTextures=function(){return 0<fc};this.setSize=function(a,b){H.width=a;H.height=b;this.setViewport(0,0,H.width,H.height)};this.setViewport=function(a,b,c,d){Fb=a;Pb=b;Ab=c;Gb=d;g.viewport(Fb,Pb,Ab,Gb)};this.setScissor=function(a,b,c,d){g.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?g.enable(g.SCISSOR_TEST):g.disable(g.SCISSOR_TEST)};this.setClearColorHex=
function(a,b){S.setHex(a);$=b;g.clearColor(S.r,S.g,S.b,$)};this.setClearColor=function(a,b){S.copy(a);$=b;g.clearColor(S.r,S.g,S.b,$)};this.getClearColor=function(){return S};this.getClearAlpha=function(){return $};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=g.COLOR_BUFFER_BIT;if(void 0===b||b)d|=g.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=g.STENCIL_BUFFER_BIT;g.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this); function(a,b){ka.setHex(a);$=b;g.clearColor(ka.r,ka.g,ka.b,$)};this.setClearColor=function(a,b){ka.copy(a);$=b;g.clearColor(ka.r,ka.g,ka.b,$)};this.getClearColor=function(){return ka};this.getClearAlpha=function(){return $};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=g.COLOR_BUFFER_BIT;if(void 0===b||b)d|=g.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=g.STENCIL_BUFFER_BIT;g.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);
this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];g.deleteBuffer(c.__webglVertexBuffer);g.deleteBuffer(c.__webglNormalBuffer);g.deleteBuffer(c.__webglTangentBuffer); this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];g.deleteBuffer(c.__webglVertexBuffer);g.deleteBuffer(c.__webglNormalBuffer);g.deleteBuffer(c.__webglTangentBuffer);
g.deleteBuffer(c.__webglColorBuffer);g.deleteBuffer(c.__webglUVBuffer);g.deleteBuffer(c.__webglUV2Buffer);g.deleteBuffer(c.__webglSkinVertexABuffer);g.deleteBuffer(c.__webglSkinVertexBBuffer);g.deleteBuffer(c.__webglSkinIndicesBuffer);g.deleteBuffer(c.__webglSkinWeightsBuffer);g.deleteBuffer(c.__webglFaceBuffer);g.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,e=c.numMorphTargets;d<e;d++)g.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d= g.deleteBuffer(c.__webglColorBuffer);g.deleteBuffer(c.__webglUVBuffer);g.deleteBuffer(c.__webglUV2Buffer);g.deleteBuffer(c.__webglSkinVertexABuffer);g.deleteBuffer(c.__webglSkinVertexBBuffer);g.deleteBuffer(c.__webglSkinIndicesBuffer);g.deleteBuffer(c.__webglSkinWeightsBuffer);g.deleteBuffer(c.__webglFaceBuffer);g.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,e=c.numMorphTargets;d<e;d++)g.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d=
void 0,c.__webglCustomAttributesList)g.deleteBuffer(c.__webglCustomAttributesList[d].buffer);D.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer),g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer),g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer), void 0,c.__webglCustomAttributesList)g.deleteBuffer(c.__webglCustomAttributesList[d].buffer);D.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer),g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer),g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,g.deleteBuffer(a.__webglVertexBuffer),
g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,g.deleteTexture(a.__webglTexture),D.info.memory.textures--};this.updateShadowMap=function(a,b){Z=null;Q=L=Ma=Ca=ya=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=g.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=g.createBuffer();a.hasPos&&(g.bindBuffer(g.ARRAY_BUFFER,a.__webglVertexBuffer), g.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,g.deleteTexture(a.__webglTexture),D.info.memory.textures--};this.updateShadowMap=function(a,b){ba=null;Q=L=Oa=Na=Ba=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=g.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=g.createBuffer();a.hasPos&&(g.bindBuffer(g.ARRAY_BUFFER,a.__webglVertexBuffer),
g.bufferData(g.ARRAY_BUFFER,a.positionArray,g.DYNAMIC_DRAW),g.enableVertexAttribArray(b.attributes.position),g.vertexAttribPointer(b.attributes.position,3,g.FLOAT,!1,0,0));if(a.hasNormal){g.bindBuffer(g.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,e,f,h,i,j,n,m,k,l,p=3*a.count;for(l=0;l<p;l+=9)c=a.normalArray,d=c[l],e=c[l+1],f=c[l+2],h=c[l+3],j=c[l+4],m=c[l+5],i=c[l+6],n=c[l+7],k=c[l+8],d=(d+h+i)/3,e=(e+j+n)/3,f=(f+m+k)/3,c[l]=d,c[l+1]=e,c[l+2]=f,c[l+3]=d,c[l+4]=e,c[l+5]=f, g.bufferData(g.ARRAY_BUFFER,a.positionArray,g.DYNAMIC_DRAW),g.enableVertexAttribArray(b.attributes.position),g.vertexAttribPointer(b.attributes.position,3,g.FLOAT,!1,0,0));if(a.hasNormal){g.bindBuffer(g.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,e,f,h,i,j,n,m,k,l,p=3*a.count;for(l=0;l<p;l+=9)c=a.normalArray,d=c[l],e=c[l+1],f=c[l+2],h=c[l+3],j=c[l+4],m=c[l+5],i=c[l+6],n=c[l+7],k=c[l+8],d=(d+h+i)/3,e=(e+j+n)/3,f=(f+m+k)/3,c[l]=d,c[l+1]=e,c[l+2]=f,c[l+3]=d,c[l+4]=e,c[l+5]=f,
c[l+6]=d,c[l+7]=e,c[l+8]=f}g.bufferData(g.ARRAY_BUFFER,a.normalArray,g.DYNAMIC_DRAW);g.enableVertexAttribArray(b.attributes.normal);g.vertexAttribPointer(b.attributes.normal,3,g.FLOAT,!1,0,0)}g.drawArrays(g.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(0!==d.opacity&&(c=r(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==L&&(L=d,b=!0),f instanceof THREE.Mesh)){f=e.offsets;d=0;for(c=f.length;d<c;++d)b&&(g.bindBuffer(g.ARRAY_BUFFER,e.vertexPositionBuffer), c[l+6]=d,c[l+7]=e,c[l+8]=f}g.bufferData(g.ARRAY_BUFFER,a.normalArray,g.DYNAMIC_DRAW);g.enableVertexAttribArray(b.attributes.normal);g.vertexAttribPointer(b.attributes.normal,3,g.FLOAT,!1,0,0)}g.drawArrays(g.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(0!==d.opacity&&(c=r(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==L&&(L=d,b=!0),f instanceof THREE.Mesh)){f=e.offsets;d=0;for(c=f.length;d<c;++d)b&&(g.bindBuffer(g.ARRAY_BUFFER,e.vertexPositionBuffer),
g.vertexAttribPointer(a.position,e.vertexPositionBuffer.itemSize,g.FLOAT,!1,0,12*f[d].index),0<=a.normal&&e.vertexNormalBuffer&&(g.bindBuffer(g.ARRAY_BUFFER,e.vertexNormalBuffer),g.vertexAttribPointer(a.normal,e.vertexNormalBuffer.itemSize,g.FLOAT,!1,0,12*f[d].index)),0<=a.uv&&e.vertexUvBuffer&&(e.vertexUvBuffer?(g.bindBuffer(g.ARRAY_BUFFER,e.vertexUvBuffer),g.vertexAttribPointer(a.uv,e.vertexUvBuffer.itemSize,g.FLOAT,!1,0,8*f[d].index),g.enableVertexAttribArray(a.uv)):g.disableVertexAttribArray(a.uv)), g.vertexAttribPointer(a.position,e.vertexPositionBuffer.itemSize,g.FLOAT,!1,0,12*f[d].index),0<=a.normal&&e.vertexNormalBuffer&&(g.bindBuffer(g.ARRAY_BUFFER,e.vertexNormalBuffer),g.vertexAttribPointer(a.normal,e.vertexNormalBuffer.itemSize,g.FLOAT,!1,0,12*f[d].index)),0<=a.uv&&e.vertexUvBuffer&&(e.vertexUvBuffer?(g.bindBuffer(g.ARRAY_BUFFER,e.vertexUvBuffer),g.vertexAttribPointer(a.uv,e.vertexUvBuffer.itemSize,g.FLOAT,!1,0,8*f[d].index),g.enableVertexAttribArray(a.uv)):g.disableVertexAttribArray(a.uv)),
...@@ -232,75 +232,75 @@ e.id+2*c.id+(d.wireframe?1:0);c!==L&&(L=c,a=!0);if(!d.morphTargets&&0<=b.positio ...@@ -232,75 +232,75 @@ e.id+2*c.id+(d.wireframe?1:0);c!==L&&(L=c,a=!0);if(!d.morphTargets&&0<=b.positio
n&&(l=m,n=i[l]);g.bindBuffer(g.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);g.vertexAttribPointer(c["morphTarget"+h],3,g.FLOAT,!1,0,0);f.__webglMorphTargetInfluences[h]=n;j[l]=1;n=-1;h++}}null!==d.program.uniforms.morphTargetInfluences&&g.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(h=0,i=e.__webglCustomAttributesList.length;h<i;h++)c=e.__webglCustomAttributesList[h],0<=b[c.buffer.belongsToAttribute]&&(g.bindBuffer(g.ARRAY_BUFFER, n&&(l=m,n=i[l]);g.bindBuffer(g.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);g.vertexAttribPointer(c["morphTarget"+h],3,g.FLOAT,!1,0,0);f.__webglMorphTargetInfluences[h]=n;j[l]=1;n=-1;h++}}null!==d.program.uniforms.morphTargetInfluences&&g.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(h=0,i=e.__webglCustomAttributesList.length;h<i;h++)c=e.__webglCustomAttributesList[h],0<=b[c.buffer.belongsToAttribute]&&(g.bindBuffer(g.ARRAY_BUFFER,
c.buffer),g.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,g.FLOAT,!1,0,0));0<=b.color&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglColorBuffer),g.vertexAttribPointer(b.color,3,g.FLOAT,!1,0,0));0<=b.normal&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglNormalBuffer),g.vertexAttribPointer(b.normal,3,g.FLOAT,!1,0,0));0<=b.tangent&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglTangentBuffer),g.vertexAttribPointer(b.tangent,4,g.FLOAT,!1,0,0));0<=b.uv&&(e.__webglUVBuffer?(g.bindBuffer(g.ARRAY_BUFFER,e.__webglUVBuffer), c.buffer),g.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,g.FLOAT,!1,0,0));0<=b.color&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglColorBuffer),g.vertexAttribPointer(b.color,3,g.FLOAT,!1,0,0));0<=b.normal&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglNormalBuffer),g.vertexAttribPointer(b.normal,3,g.FLOAT,!1,0,0));0<=b.tangent&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglTangentBuffer),g.vertexAttribPointer(b.tangent,4,g.FLOAT,!1,0,0));0<=b.uv&&(e.__webglUVBuffer?(g.bindBuffer(g.ARRAY_BUFFER,e.__webglUVBuffer),
g.vertexAttribPointer(b.uv,2,g.FLOAT,!1,0,0),g.enableVertexAttribArray(b.uv)):g.disableVertexAttribArray(b.uv));0<=b.uv2&&(e.__webglUV2Buffer?(g.bindBuffer(g.ARRAY_BUFFER,e.__webglUV2Buffer),g.vertexAttribPointer(b.uv2,2,g.FLOAT,!1,0,0),g.enableVertexAttribArray(b.uv2)):g.disableVertexAttribArray(b.uv2));d.skinning&&0<=b.skinVertexA&&0<=b.skinVertexB&&0<=b.skinIndex&&0<=b.skinWeight&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinVertexABuffer),g.vertexAttribPointer(b.skinVertexA,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER, g.vertexAttribPointer(b.uv,2,g.FLOAT,!1,0,0),g.enableVertexAttribArray(b.uv)):g.disableVertexAttribArray(b.uv));0<=b.uv2&&(e.__webglUV2Buffer?(g.bindBuffer(g.ARRAY_BUFFER,e.__webglUV2Buffer),g.vertexAttribPointer(b.uv2,2,g.FLOAT,!1,0,0),g.enableVertexAttribArray(b.uv2)):g.disableVertexAttribArray(b.uv2));d.skinning&&0<=b.skinVertexA&&0<=b.skinVertexB&&0<=b.skinIndex&&0<=b.skinWeight&&(g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinVertexABuffer),g.vertexAttribPointer(b.skinVertexA,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,
e.__webglSkinVertexBBuffer),g.vertexAttribPointer(b.skinVertexB,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),g.vertexAttribPointer(b.skinIndex,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),g.vertexAttribPointer(b.skinWeight,4,g.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==Na&&(g.lineWidth(d),Na=d),a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),g.drawElements(g.LINES,e.__webglLineCount,g.UNSIGNED_SHORT, e.__webglSkinVertexBBuffer),g.vertexAttribPointer(b.skinVertexB,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),g.vertexAttribPointer(b.skinIndex,4,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),g.vertexAttribPointer(b.skinWeight,4,g.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==nb&&(g.lineWidth(d),nb=d),a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),g.drawElements(g.LINES,e.__webglLineCount,g.UNSIGNED_SHORT,
0)):(a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),g.drawElements(g.TRIANGLES,e.__webglFaceCount,g.UNSIGNED_SHORT,0)),D.info.render.calls++,D.info.render.vertices+=e.__webglFaceCount,D.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?g.LINE_STRIP:g.LINES,d=d.linewidth,d!==Na&&(g.lineWidth(d),Na=d),g.drawArrays(f,0,e.__webglLineCount),D.info.render.calls++):f instanceof THREE.ParticleSystem?(g.drawArrays(g.POINTS,0,e.__webglParticleCount),D.info.render.calls++, 0)):(a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),g.drawElements(g.TRIANGLES,e.__webglFaceCount,g.UNSIGNED_SHORT,0)),D.info.render.calls++,D.info.render.vertices+=e.__webglFaceCount,D.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?g.LINE_STRIP:g.LINES,d=d.linewidth,d!==nb&&(g.lineWidth(d),nb=d),g.drawArrays(f,0,e.__webglLineCount),D.info.render.calls++):f instanceof THREE.ParticleSystem?(g.drawArrays(g.POINTS,0,e.__webglParticleCount),D.info.render.calls++,
D.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(g.drawArrays(g.TRIANGLE_STRIP,0,e.__webglVertexCount),D.info.render.calls++)}};this.render=function(a,b,c,d){var e,f,j,n,m=a.lights,p=a.fog;Q=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);void 0===b.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();i(this.renderPluginsPre,a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces= D.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(g.drawArrays(g.TRIANGLE_STRIP,0,e.__webglVertexCount),D.info.render.calls++)}};this.render=function(a,b,c,d){var e,f,j,n,m=a.lights,p=a.fog;Q=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);void 0===b.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();i(this.renderPluginsPre,a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces=
0;D.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Ta.multiply(b.projectionMatrix,b.matrixWorldInverse);Gb.setFromMatrix(Ta);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil); 0;D.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Va.multiply(b.projectionMatrix,b.matrixWorldInverse);Qb.setFromMatrix(Va);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
n=a.__webglObjects;for(d=0,e=n.length;d<e;d++)if(f=n[d],j=f.object,f.render=!1,j.visible&&(!(j instanceof THREE.Mesh||j instanceof THREE.ParticleSystem)||!j.frustumCulled||Gb.contains(j))){j.matrixWorld.flattenToArray(j._objectMatrixArray);t(j,b);var o=f,r=o.object,u=o.buffer,y=void 0,y=y=void 0,y=r.material;if(y instanceof THREE.MeshFaceMaterial){if(y=u.materialIndex,0<=y)y=r.geometry.materials[y],y.transparent?(o.transparent=y,o.opaque=null):(o.opaque=y,o.transparent=null)}else if(y)y.transparent? n=a.__webglObjects;for(d=0,e=n.length;d<e;d++)if(f=n[d],j=f.object,f.render=!1,j.visible&&(!(j instanceof THREE.Mesh||j instanceof THREE.ParticleSystem)||!j.frustumCulled||Qb.contains(j))){j.matrixWorld.flattenToArray(j._objectMatrixArray);t(j,b);var o=f,r=o.object,u=o.buffer,y=void 0,y=y=void 0,y=r.material;if(y instanceof THREE.MeshFaceMaterial){if(y=u.materialIndex,0<=y)y=r.geometry.materials[y],y.transparent?(o.transparent=y,o.opaque=null):(o.opaque=y,o.transparent=null)}else if(y)y.transparent?
(o.transparent=y,o.opaque=null):(o.opaque=y,o.transparent=null);f.render=!0;if(this.sortObjects)j.renderDepth?f.z=j.renderDepth:(Ua.copy(j.position),Ta.multiplyVector3(Ua),f.z=Ua.z)}this.sortObjects&&n.sort(h);n=a.__webglObjectsImmediate;for(d=0,e=n.length;d<e;d++)if(f=n[d],j=f.object,j.visible)j.matrixAutoUpdate&&j.matrixWorld.flattenToArray(j._objectMatrixArray),t(j,b),j=f.object.material,j.transparent?(f.transparent=j,f.opaque=null):(f.opaque=j,f.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending), (o.transparent=y,o.opaque=null):(o.opaque=y,o.transparent=null);f.render=!0;if(this.sortObjects)j.renderDepth?f.z=j.renderDepth:(Ia.copy(j.position),Va.multiplyVector3(Ia),f.z=Ia.z)}this.sortObjects&&n.sort(h);n=a.__webglObjectsImmediate;for(d=0,e=n.length;d<e;d++)if(f=n[d],j=f.object,j.visible)j.matrixAutoUpdate&&j.matrixWorld.flattenToArray(j._objectMatrixArray),t(j,b),j=f.object.material,j.transparent?(f.transparent=j,f.opaque=null):(f.opaque=j,f.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending),
this.setDepthTest(a.overrideMaterial.depthTest),this.setDepthWrite(a.overrideMaterial.depthWrite),z(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),k(a.__webglObjects,!1,"",b,m,p,!0,a.overrideMaterial),l(a.__webglObjectsImmediate,"",b,m,p,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),k(a.__webglObjects,!0,"opaque",b,m,p,!1),l(a.__webglObjectsImmediate,"opaque",b,m,p,!1),k(a.__webglObjects,!1,"transparent",b,m,p,!0),l(a.__webglObjectsImmediate, this.setDepthTest(a.overrideMaterial.depthTest),this.setDepthWrite(a.overrideMaterial.depthWrite),z(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),k(a.__webglObjects,!1,"",b,m,p,!0,a.overrideMaterial),l(a.__webglObjectsImmediate,"",b,m,p,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),k(a.__webglObjects,!0,"opaque",b,m,p,!1),l(a.__webglObjectsImmediate,"opaque",b,m,p,!1),k(a.__webglObjects,!1,"transparent",b,m,p,!0),l(a.__webglObjectsImmediate,
"transparent",b,m,p,!0));i(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(g.bindTexture(g.TEXTURE_CUBE_MAP,c.__webglTexture),g.generateMipmap(g.TEXTURE_CUBE_MAP),g.bindTexture(g.TEXTURE_CUBE_MAP,null)):(g.bindTexture(g.TEXTURE_2D,c.__webglTexture),g.generateMipmap(g.TEXTURE_2D),g.bindTexture(g.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)};this.renderImmediateObject= "transparent",b,m,p,!0));i(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(g.bindTexture(g.TEXTURE_CUBE_MAP,c.__webglTexture),g.generateMipmap(g.TEXTURE_CUBE_MAP),g.bindTexture(g.TEXTURE_CUBE_MAP,null)):(g.bindTexture(g.TEXTURE_2D,c.__webglTexture),g.generateMipmap(g.TEXTURE_2D),g.bindTexture(g.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)};this.renderImmediateObject=
function(a,b,c,d,e){var f=r(a,b,c,d,e);L=-1;D.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,g,Gb):e.render(function(a){D.renderBufferImmediate(a,f,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var h=a.__objectsAdded[0],i=a,l=void 0,k=void 0,r=void 0;if(!h.__webglInit)if(h.__webglInit=!0,h._modelViewMatrix=new THREE.Matrix4,h._normalMatrixArray= function(a,b,c,d,e){var f=r(a,b,c,d,e);L=-1;D.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,g,Qb):e.render(function(a){D.renderBufferImmediate(a,f,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var h=a.__objectsAdded[0],i=a,l=void 0,k=void 0,r=void 0;if(!h.__webglInit)if(h.__webglInit=!0,h._modelViewMatrix=new THREE.Matrix4,h._normalMatrixArray=
new Float32Array(9),h._modelViewMatrixArray=new Float32Array(16),h._objectMatrixArray=new Float32Array(16),h.matrixWorld.flattenToArray(h._objectMatrixArray),h instanceof THREE.Mesh){if(k=h.geometry,k instanceof THREE.Geometry){if(void 0===k.geometryGroups){var t=k,u=void 0,y=void 0,z=void 0,A=void 0,H=void 0,B=void 0,J=void 0,K={},M=t.morphTargets.length;t.geometryGroups={};for(u=0,y=t.faces.length;u<y;u++)z=t.faces[u],A=z.materialIndex,B=void 0!==A?A:-1,void 0===K[B]&&(K[B]={hash:B,counter:0}), new Float32Array(9),h._modelViewMatrixArray=new Float32Array(16),h._objectMatrixArray=new Float32Array(16),h.matrixWorld.flattenToArray(h._objectMatrixArray),h instanceof THREE.Mesh){if(k=h.geometry,k instanceof THREE.Geometry){if(void 0===k.geometryGroups){var t=k,u=void 0,y=void 0,z=void 0,A=void 0,H=void 0,B=void 0,J=void 0,K={},M=t.morphTargets.length;t.geometryGroups={};for(u=0,y=t.faces.length;u<y;u++)z=t.faces[u],A=z.materialIndex,B=void 0!==A?A:-1,void 0===K[B]&&(K[B]={hash:B,counter:0}),
J=K[B].hash+"_"+K[B].counter,void 0===t.geometryGroups[J]&&(t.geometryGroups[J]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:M}),H=z instanceof THREE.Face3?3:4,65535<t.geometryGroups[J].vertices+H&&(K[B].counter+=1,J=K[B].hash+"_"+K[B].counter,void 0===t.geometryGroups[J]&&(t.geometryGroups[J]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:M})),z instanceof THREE.Face3?t.geometryGroups[J].faces3.push(u):t.geometryGroups[J].faces4.push(u),t.geometryGroups[J].vertices+= J=K[B].hash+"_"+K[B].counter,void 0===t.geometryGroups[J]&&(t.geometryGroups[J]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:M}),H=z instanceof THREE.Face3?3:4,65535<t.geometryGroups[J].vertices+H&&(K[B].counter+=1,J=K[B].hash+"_"+K[B].counter,void 0===t.geometryGroups[J]&&(t.geometryGroups[J]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:M})),z instanceof THREE.Face3?t.geometryGroups[J].faces3.push(u):t.geometryGroups[J].faces4.push(u),t.geometryGroups[J].vertices+=
H;t.geometryGroupsList=[];var N=void 0;for(N in t.geometryGroups)t.geometryGroups[N].id=qa++,t.geometryGroupsList.push(t.geometryGroups[N])}for(l in k.geometryGroups)if(r=k.geometryGroups[l],!r.__webglVertexBuffer){var I=r;I.__webglVertexBuffer=g.createBuffer();I.__webglNormalBuffer=g.createBuffer();I.__webglTangentBuffer=g.createBuffer();I.__webglColorBuffer=g.createBuffer();I.__webglUVBuffer=g.createBuffer();I.__webglUV2Buffer=g.createBuffer();I.__webglSkinVertexABuffer=g.createBuffer();I.__webglSkinVertexBBuffer= H;t.geometryGroupsList=[];var N=void 0;for(N in t.geometryGroups)t.geometryGroups[N].id=ya++,t.geometryGroupsList.push(t.geometryGroups[N])}for(l in k.geometryGroups)if(r=k.geometryGroups[l],!r.__webglVertexBuffer){var I=r;I.__webglVertexBuffer=g.createBuffer();I.__webglNormalBuffer=g.createBuffer();I.__webglTangentBuffer=g.createBuffer();I.__webglColorBuffer=g.createBuffer();I.__webglUVBuffer=g.createBuffer();I.__webglUV2Buffer=g.createBuffer();I.__webglSkinVertexABuffer=g.createBuffer();I.__webglSkinVertexBBuffer=
g.createBuffer();I.__webglSkinIndicesBuffer=g.createBuffer();I.__webglSkinWeightsBuffer=g.createBuffer();I.__webglFaceBuffer=g.createBuffer();I.__webglLineBuffer=g.createBuffer();if(I.numMorphTargets){var Q=void 0,$=void 0;I.__webglMorphTargetsBuffers=[];for(Q=0,$=I.numMorphTargets;Q<$;Q++)I.__webglMorphTargetsBuffers.push(g.createBuffer())}D.info.memory.geometries++;var L=r,Y=h,Z=Y.geometry,ba=L.faces3,ia=L.faces4,S=3*ba.length+4*ia.length,ua=1*ba.length+2*ia.length,va=3*ba.length+4*ia.length,oa= g.createBuffer();I.__webglSkinIndicesBuffer=g.createBuffer();I.__webglSkinWeightsBuffer=g.createBuffer();I.__webglFaceBuffer=g.createBuffer();I.__webglLineBuffer=g.createBuffer();if(I.numMorphTargets){var Q=void 0,$=void 0;I.__webglMorphTargetsBuffers=[];for(Q=0,$=I.numMorphTargets;Q<$;Q++)I.__webglMorphTargetsBuffers.push(g.createBuffer())}D.info.memory.geometries++;var L=r,Z=h,W=Z.geometry,ba=L.faces3,ca=L.faces4,S=3*ba.length+4*ca.length,ka=1*ba.length+2*ca.length,ua=3*ba.length+4*ca.length,pa=
c(Y,L),ya=e(oa),Ca=d(oa),Na=oa.vertexColors?oa.vertexColors:!1;L.__vertexArray=new Float32Array(3*S);if(Ca)L.__normalArray=new Float32Array(3*S);if(Z.hasTangents)L.__tangentArray=new Float32Array(4*S);if(Na)L.__colorArray=new Float32Array(3*S);if(ya){if(0<Z.faceUvs.length||0<Z.faceVertexUvs.length)L.__uvArray=new Float32Array(2*S);if(1<Z.faceUvs.length||1<Z.faceVertexUvs.length)L.__uv2Array=new Float32Array(2*S)}if(Y.geometry.skinWeights.length&&Y.geometry.skinIndices.length)L.__skinVertexAArray= c(Z,L),Ba=e(pa),Ea=d(pa),Na=pa.vertexColors?pa.vertexColors:!1;L.__vertexArray=new Float32Array(3*S);if(Ea)L.__normalArray=new Float32Array(3*S);if(W.hasTangents)L.__tangentArray=new Float32Array(4*S);if(Na)L.__colorArray=new Float32Array(3*S);if(Ba){if(0<W.faceUvs.length||0<W.faceVertexUvs.length)L.__uvArray=new Float32Array(2*S);if(1<W.faceUvs.length||1<W.faceVertexUvs.length)L.__uv2Array=new Float32Array(2*S)}if(Z.geometry.skinWeights.length&&Z.geometry.skinIndices.length)L.__skinVertexAArray=
new Float32Array(4*S),L.__skinVertexBArray=new Float32Array(4*S),L.__skinIndexArray=new Float32Array(4*S),L.__skinWeightArray=new Float32Array(4*S);L.__faceArray=new Uint16Array(3*ua);L.__lineArray=new Uint16Array(2*va);if(L.numMorphTargets){L.__morphTargetsArrays=[];for(var Ma=0,lb=L.numMorphTargets;Ma<lb;Ma++)L.__morphTargetsArrays.push(new Float32Array(3*S))}L.__webglFaceCount=3*ua;L.__webglLineCount=2*va;if(oa.attributes){if(void 0===L.__webglCustomAttributesList)L.__webglCustomAttributesList= new Float32Array(4*S),L.__skinVertexBArray=new Float32Array(4*S),L.__skinIndexArray=new Float32Array(4*S),L.__skinWeightArray=new Float32Array(4*S);L.__faceArray=new Uint16Array(3*ka);L.__lineArray=new Uint16Array(2*ua);if(L.numMorphTargets){L.__morphTargetsArrays=[];for(var Oa=0,Ua=L.numMorphTargets;Oa<Ua;Oa++)L.__morphTargetsArrays.push(new Float32Array(3*S))}L.__webglFaceCount=3*ka;L.__webglLineCount=2*ua;if(pa.attributes){if(void 0===L.__webglCustomAttributesList)L.__webglCustomAttributesList=
[];var Sa=void 0;for(Sa in oa.attributes){var Pa=oa.attributes[Sa],Fa={},Ua;for(Ua in Pa)Fa[Ua]=Pa[Ua];if(!Fa.__webglInitialized||Fa.createUniqueBuffers){Fa.__webglInitialized=!0;var Ia=1;"v2"===Fa.type?Ia=2:"v3"===Fa.type?Ia=3:"v4"===Fa.type?Ia=4:"c"===Fa.type&&(Ia=3);Fa.size=Ia;Fa.array=new Float32Array(S*Ia);Fa.buffer=g.createBuffer();Fa.buffer.belongsToAttribute=Sa;Pa.needsUpdate=!0;Fa.__original=Pa}L.__webglCustomAttributesList.push(Fa)}}L.__inittedArrays=!0;k.__dirtyVertices=!0;k.__dirtyMorphTargets= [];var Sa=void 0;for(Sa in pa.attributes){var Pa=pa.attributes[Sa],Fa={},Ta;for(Ta in Pa)Fa[Ta]=Pa[Ta];if(!Fa.__webglInitialized||Fa.createUniqueBuffers){Fa.__webglInitialized=!0;var Ia=1;"v2"===Fa.type?Ia=2:"v3"===Fa.type?Ia=3:"v4"===Fa.type?Ia=4:"c"===Fa.type&&(Ia=3);Fa.size=Ia;Fa.array=new Float32Array(S*Ia);Fa.buffer=g.createBuffer();Fa.buffer.belongsToAttribute=Sa;Pa.needsUpdate=!0;Fa.__original=Pa}L.__webglCustomAttributesList.push(Fa)}}L.__inittedArrays=!0;k.__dirtyVertices=!0;k.__dirtyMorphTargets=
!0;k.__dirtyElements=!0;k.__dirtyUvs=!0;k.__dirtyNormals=!0;k.__dirtyTangents=!0;k.__dirtyColors=!0}}}else if(h instanceof THREE.Ribbon){if(k=h.geometry,!k.__webglVertexBuffer){var mb=k;mb.__webglVertexBuffer=g.createBuffer();mb.__webglColorBuffer=g.createBuffer();D.info.memory.geometries++;var Ta=k,zb=Ta.vertices.length;Ta.__vertexArray=new Float32Array(3*zb);Ta.__colorArray=new Float32Array(3*zb);Ta.__webglVertexCount=zb;k.__dirtyVertices=!0;k.__dirtyColors=!0}}else if(h instanceof THREE.Line){if(k= !0;k.__dirtyElements=!0;k.__dirtyUvs=!0;k.__dirtyNormals=!0;k.__dirtyTangents=!0;k.__dirtyColors=!0}}}else if(h instanceof THREE.Ribbon){if(k=h.geometry,!k.__webglVertexBuffer){var ib=k;ib.__webglVertexBuffer=g.createBuffer();ib.__webglColorBuffer=g.createBuffer();D.info.memory.geometries++;var Va=k,nb=Va.vertices.length;Va.__vertexArray=new Float32Array(3*nb);Va.__colorArray=new Float32Array(3*nb);Va.__webglVertexCount=nb;k.__dirtyVertices=!0;k.__dirtyColors=!0}}else if(h instanceof THREE.Line){if(k=
h.geometry,!k.__webglVertexBuffer){var Fb=k;Fb.__webglVertexBuffer=g.createBuffer();Fb.__webglColorBuffer=g.createBuffer();D.info.memory.geometries++;var Qb=k,Pb=h,Ab=Qb.vertices.length;Qb.__vertexArray=new Float32Array(3*Ab);Qb.__colorArray=new Float32Array(3*Ab);Qb.__webglLineCount=Ab;b(Qb,Pb);k.__dirtyVertices=!0;k.__dirtyColors=!0}}else if(h instanceof THREE.ParticleSystem&&(k=h.geometry,!k.__webglVertexBuffer)){var Gb=k;Gb.__webglVertexBuffer=g.createBuffer();Gb.__webglColorBuffer=g.createBuffer(); h.geometry,!k.__webglVertexBuffer){var Fb=k;Fb.__webglVertexBuffer=g.createBuffer();Fb.__webglColorBuffer=g.createBuffer();D.info.memory.geometries++;var Rb=k,Pb=h,Ab=Rb.vertices.length;Rb.__vertexArray=new Float32Array(3*Ab);Rb.__colorArray=new Float32Array(3*Ab);Rb.__webglLineCount=Ab;b(Rb,Pb);k.__dirtyVertices=!0;k.__dirtyColors=!0}}else if(h instanceof THREE.ParticleSystem&&(k=h.geometry,!k.__webglVertexBuffer)){var Gb=k;Gb.__webglVertexBuffer=g.createBuffer();Gb.__webglColorBuffer=g.createBuffer();
D.info.geometries++;var Hb=k,bc=h,uc=Hb.vertices.length;Hb.__vertexArray=new Float32Array(3*uc);Hb.__colorArray=new Float32Array(3*uc);Hb.__sortArray=[];Hb.__webglParticleCount=uc;b(Hb,bc);k.__dirtyVertices=!0;k.__dirtyColors=!0}if(!h.__webglActive){if(h instanceof THREE.Mesh)if(k=h.geometry,k instanceof THREE.BufferGeometry)j(i.__webglObjects,k,h);else for(l in k.geometryGroups)r=k.geometryGroups[l],j(i.__webglObjects,r,h);else h instanceof THREE.Ribbon||h instanceof THREE.Line||h instanceof THREE.ParticleSystem? D.info.geometries++;var Hb=k,Qb=h,vc=Hb.vertices.length;Hb.__vertexArray=new Float32Array(3*vc);Hb.__colorArray=new Float32Array(3*vc);Hb.__sortArray=[];Hb.__webglParticleCount=vc;b(Hb,Qb);k.__dirtyVertices=!0;k.__dirtyColors=!0}if(!h.__webglActive){if(h instanceof THREE.Mesh)if(k=h.geometry,k instanceof THREE.BufferGeometry)j(i.__webglObjects,k,h);else for(l in k.geometryGroups)r=k.geometryGroups[l],j(i.__webglObjects,r,h);else h instanceof THREE.Ribbon||h instanceof THREE.Line||h instanceof THREE.ParticleSystem?
(k=h.geometry,j(i.__webglObjects,k,h)):void 0!==THREE.MarchingCubes&&h instanceof THREE.MarchingCubes||h.immediateRenderCallback?i.__webglObjectsImmediate.push({object:h,opaque:null,transparent:null}):h instanceof THREE.Sprite?i.__webglSprites.push(h):h instanceof THREE.LensFlare&&i.__webglFlares.push(h);h.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var Ja=a.__objectsRemoved[0],fc=a;Ja instanceof THREE.Mesh||Ja instanceof THREE.ParticleSystem||Ja instanceof THREE.Ribbon|| (k=h.geometry,j(i.__webglObjects,k,h)):void 0!==THREE.MarchingCubes&&h instanceof THREE.MarchingCubes||h.immediateRenderCallback?i.__webglObjectsImmediate.push({object:h,opaque:null,transparent:null}):h instanceof THREE.Sprite?i.__webglSprites.push(h):h instanceof THREE.LensFlare&&i.__webglFlares.push(h);h.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var Ja=a.__objectsRemoved[0],gc=a;Ja instanceof THREE.Mesh||Ja instanceof THREE.ParticleSystem||Ja instanceof THREE.Ribbon||
Ja instanceof THREE.Line?o(fc.__webglObjects,Ja):Ja instanceof THREE.Sprite?m(fc.__webglSprites,Ja):Ja instanceof THREE.LensFlare?m(fc.__webglFlares,Ja):(Ja instanceof THREE.MarchingCubes||Ja.immediateRenderCallback)&&o(fc.__webglObjectsImmediate,Ja);Ja.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var vc=0,cc=a.__webglObjects.length;vc<cc;vc++){var Qa=a.__webglObjects[vc].object,R=Qa.geometry,Rb=void 0,Ib=void 0,Aa=void 0;if(Qa instanceof THREE.Mesh)if(R instanceof THREE.BufferGeometry)R.__dirtyVertices= Ja instanceof THREE.Line?o(gc.__webglObjects,Ja):Ja instanceof THREE.Sprite?m(gc.__webglSprites,Ja):Ja instanceof THREE.LensFlare?m(gc.__webglFlares,Ja):(Ja instanceof THREE.MarchingCubes||Ja.immediateRenderCallback)&&o(gc.__webglObjectsImmediate,Ja);Ja.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var wc=0,cc=a.__webglObjects.length;wc<cc;wc++){var Qa=a.__webglObjects[wc].object,R=Qa.geometry,Sb=void 0,Ib=void 0,za=void 0;if(Qa instanceof THREE.Mesh)if(R instanceof THREE.BufferGeometry)R.__dirtyVertices=
!1,R.__dirtyElements=!1,R.__dirtyUvs=!1,R.__dirtyNormals=!1,R.__dirtyColors=!1;else{for(var wc=0,dc=R.geometryGroupsList.length;wc<dc;wc++)if(Rb=R.geometryGroupsList[wc],Aa=c(Qa,Rb),Ib=Aa.attributes&&n(Aa),R.__dirtyVertices||R.__dirtyMorphTargets||R.__dirtyElements||R.__dirtyUvs||R.__dirtyNormals||R.__dirtyColors||R.__dirtyTangents||Ib){var O=Rb,ec=Qa,Ga=g.DYNAMIC_DRAW,tc=!R.dynamic,gc=Aa;if(O.__inittedArrays){var Ec=d(gc),xc=gc.vertexColors?gc.vertexColors:!1,Fc=e(gc),Gc=Ec===THREE.SmoothShading, !1,R.__dirtyElements=!1,R.__dirtyUvs=!1,R.__dirtyNormals=!1,R.__dirtyColors=!1;else{for(var xc=0,dc=R.geometryGroupsList.length;xc<dc;xc++)if(Sb=R.geometryGroupsList[xc],za=c(Qa,Sb),Ib=za.attributes&&n(za),R.__dirtyVertices||R.__dirtyMorphTargets||R.__dirtyElements||R.__dirtyUvs||R.__dirtyNormals||R.__dirtyColors||R.__dirtyTangents||Ib){var O=Sb,ec=Qa,Ga=g.DYNAMIC_DRAW,fc=!R.dynamic,hc=za;if(O.__inittedArrays){var Fc=d(hc),yc=hc.vertexColors?hc.vertexColors:!1,Gc=e(hc),Hc=Fc===THREE.SmoothShading,
v=void 0,C=void 0,Oa=void 0,x=void 0,Jb=void 0,nb=void 0,Ra=void 0,hc=void 0,hb=void 0,Kb=void 0,Lb=void 0,E=void 0,F=void 0,G=void 0,W=void 0,Va=void 0,Wa=void 0,Xa=void 0,Sb=void 0,Ya=void 0,Za=void 0,$a=void 0,Tb=void 0,ab=void 0,bb=void 0,cb=void 0,Ub=void 0,db=void 0,eb=void 0,fb=void 0,Vb=void 0,ob=void 0,pb=void 0,qb=void 0,ic=void 0,rb=void 0,sb=void 0,tb=void 0,jc=void 0,T=void 0,Hc=void 0,ub=void 0,Mb=void 0,Nb=void 0,Ha=void 0,Ic=void 0,pa=void 0,ja=0,na=0,ib=0,jb=0,Ka=0,wa=0,X=0,xa=0, v=void 0,C=void 0,Ma=void 0,x=void 0,Jb=void 0,ob=void 0,Ra=void 0,ic=void 0,jb=void 0,Kb=void 0,Lb=void 0,E=void 0,F=void 0,G=void 0,X=void 0,Wa=void 0,Xa=void 0,Ya=void 0,Tb=void 0,Za=void 0,$a=void 0,ab=void 0,Ub=void 0,bb=void 0,cb=void 0,db=void 0,Vb=void 0,eb=void 0,fb=void 0,gb=void 0,Wb=void 0,pb=void 0,qb=void 0,rb=void 0,jc=void 0,sb=void 0,tb=void 0,ub=void 0,kc=void 0,T=void 0,Ic=void 0,vb=void 0,Mb=void 0,Nb=void 0,Ha=void 0,Jc=void 0,qa=void 0,ja=0,oa=0,kb=0,lb=0,Ka=0,va=0,Y=0,wa=0,
ka=0,w=0,la=0,s=0,Da=void 0,ra=O.__vertexArray,Wb=O.__uvArray,Xb=O.__uv2Array,La=O.__normalArray,ca=O.__tangentArray,sa=O.__colorArray,da=O.__skinVertexAArray,ea=O.__skinVertexBArray,fa=O.__skinIndexArray,ga=O.__skinWeightArray,yc=O.__morphTargetsArrays,zc=O.__webglCustomAttributesList,q=void 0,gb=O.__faceArray,Ea=O.__lineArray,za=ec.geometry,Qc=za.__dirtyElements,Jc=za.__dirtyUvs,Rc=za.__dirtyNormals,Sc=za.__dirtyTangents,Tc=za.__dirtyColors,Uc=za.__dirtyMorphTargets,Bb=za.vertices,U=O.faces3,V= la=0,w=0,ma=0,s=0,Ca=void 0,ra=O.__vertexArray,Xb=O.__uvArray,Yb=O.__uv2Array,La=O.__normalArray,da=O.__tangentArray,sa=O.__colorArray,ea=O.__skinVertexAArray,fa=O.__skinVertexBArray,ga=O.__skinIndexArray,ha=O.__skinWeightArray,zc=O.__morphTargetsArrays,Ac=O.__webglCustomAttributesList,q=void 0,hb=O.__faceArray,Da=O.__lineArray,xa=ec.geometry,uc=xa.__dirtyElements,Kc=xa.__dirtyUvs,Rc=xa.__dirtyNormals,Sc=xa.__dirtyTangents,Tc=xa.__dirtyColors,Uc=xa.__dirtyMorphTargets,Bb=xa.vertices,U=O.faces3,V=
O.faces4,ma=za.faces,Ac=za.faceVertexUvs[0],Bc=za.faceVertexUvs[1],Cb=za.skinVerticesA,Db=za.skinVerticesB,Eb=za.skinIndices,vb=za.skinWeights,wb=za.morphTargets;if(za.__dirtyVertices){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],E=Bb[x.a].position,F=Bb[x.b].position,G=Bb[x.c].position,ra[na]=E.x,ra[na+1]=E.y,ra[na+2]=E.z,ra[na+3]=F.x,ra[na+4]=F.y,ra[na+5]=F.z,ra[na+6]=G.x,ra[na+7]=G.y,ra[na+8]=G.z,na+=9;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],E=Bb[x.a].position,F=Bb[x.b].position,G=Bb[x.c].position,W=Bb[x.d].position, O.faces4,na=xa.faces,Bc=xa.faceVertexUvs[0],Cc=xa.faceVertexUvs[1],Cb=xa.skinVerticesA,Db=xa.skinVerticesB,Eb=xa.skinIndices,wb=xa.skinWeights,xb=xa.morphTargets;if(xa.__dirtyVertices){for(v=0,C=U.length;v<C;v++)x=na[U[v]],E=Bb[x.a].position,F=Bb[x.b].position,G=Bb[x.c].position,ra[oa]=E.x,ra[oa+1]=E.y,ra[oa+2]=E.z,ra[oa+3]=F.x,ra[oa+4]=F.y,ra[oa+5]=F.z,ra[oa+6]=G.x,ra[oa+7]=G.y,ra[oa+8]=G.z,oa+=9;for(v=0,C=V.length;v<C;v++)x=na[V[v]],E=Bb[x.a].position,F=Bb[x.b].position,G=Bb[x.c].position,X=Bb[x.d].position,
ra[na]=E.x,ra[na+1]=E.y,ra[na+2]=E.z,ra[na+3]=F.x,ra[na+4]=F.y,ra[na+5]=F.z,ra[na+6]=G.x,ra[na+7]=G.y,ra[na+8]=G.z,ra[na+9]=W.x,ra[na+10]=W.y,ra[na+11]=W.z,na+=12;g.bindBuffer(g.ARRAY_BUFFER,O.__webglVertexBuffer);g.bufferData(g.ARRAY_BUFFER,ra,Ga)}if(Uc)for(Ha=0,Ic=wb.length;Ha<Ic;Ha++){la=0;for(v=0,C=U.length;v<C;v++)x=ma[U[v]],E=wb[Ha].vertices[x.a].position,F=wb[Ha].vertices[x.b].position,G=wb[Ha].vertices[x.c].position,pa=yc[Ha],pa[la]=E.x,pa[la+1]=E.y,pa[la+2]=E.z,pa[la+3]=F.x,pa[la+4]=F.y, ra[oa]=E.x,ra[oa+1]=E.y,ra[oa+2]=E.z,ra[oa+3]=F.x,ra[oa+4]=F.y,ra[oa+5]=F.z,ra[oa+6]=G.x,ra[oa+7]=G.y,ra[oa+8]=G.z,ra[oa+9]=X.x,ra[oa+10]=X.y,ra[oa+11]=X.z,oa+=12;g.bindBuffer(g.ARRAY_BUFFER,O.__webglVertexBuffer);g.bufferData(g.ARRAY_BUFFER,ra,Ga)}if(Uc)for(Ha=0,Jc=xb.length;Ha<Jc;Ha++){ma=0;for(v=0,C=U.length;v<C;v++)x=na[U[v]],E=xb[Ha].vertices[x.a].position,F=xb[Ha].vertices[x.b].position,G=xb[Ha].vertices[x.c].position,qa=zc[Ha],qa[ma]=E.x,qa[ma+1]=E.y,qa[ma+2]=E.z,qa[ma+3]=F.x,qa[ma+4]=F.y,
pa[la+5]=F.z,pa[la+6]=G.x,pa[la+7]=G.y,pa[la+8]=G.z,la+=9;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],E=wb[Ha].vertices[x.a].position,F=wb[Ha].vertices[x.b].position,G=wb[Ha].vertices[x.c].position,W=wb[Ha].vertices[x.d].position,pa=yc[Ha],pa[la]=E.x,pa[la+1]=E.y,pa[la+2]=E.z,pa[la+3]=F.x,pa[la+4]=F.y,pa[la+5]=F.z,pa[la+6]=G.x,pa[la+7]=G.y,pa[la+8]=G.z,pa[la+9]=W.x,pa[la+10]=W.y,pa[la+11]=W.z,la+=12;g.bindBuffer(g.ARRAY_BUFFER,O.__webglMorphTargetsBuffers[Ha]);g.bufferData(g.ARRAY_BUFFER,yc[Ha],Ga)}if(vb.length){for(v= qa[ma+5]=F.z,qa[ma+6]=G.x,qa[ma+7]=G.y,qa[ma+8]=G.z,ma+=9;for(v=0,C=V.length;v<C;v++)x=na[V[v]],E=xb[Ha].vertices[x.a].position,F=xb[Ha].vertices[x.b].position,G=xb[Ha].vertices[x.c].position,X=xb[Ha].vertices[x.d].position,qa=zc[Ha],qa[ma]=E.x,qa[ma+1]=E.y,qa[ma+2]=E.z,qa[ma+3]=F.x,qa[ma+4]=F.y,qa[ma+5]=F.z,qa[ma+6]=G.x,qa[ma+7]=G.y,qa[ma+8]=G.z,qa[ma+9]=X.x,qa[ma+10]=X.y,qa[ma+11]=X.z,ma+=12;g.bindBuffer(g.ARRAY_BUFFER,O.__webglMorphTargetsBuffers[Ha]);g.bufferData(g.ARRAY_BUFFER,zc[Ha],Ga)}if(wb.length){for(v=
0,C=U.length;v<C;v++)x=ma[U[v]],ab=vb[x.a],bb=vb[x.b],cb=vb[x.c],ga[w]=ab.x,ga[w+1]=ab.y,ga[w+2]=ab.z,ga[w+3]=ab.w,ga[w+4]=bb.x,ga[w+5]=bb.y,ga[w+6]=bb.z,ga[w+7]=bb.w,ga[w+8]=cb.x,ga[w+9]=cb.y,ga[w+10]=cb.z,ga[w+11]=cb.w,db=Eb[x.a],eb=Eb[x.b],fb=Eb[x.c],fa[w]=db.x,fa[w+1]=db.y,fa[w+2]=db.z,fa[w+3]=db.w,fa[w+4]=eb.x,fa[w+5]=eb.y,fa[w+6]=eb.z,fa[w+7]=eb.w,fa[w+8]=fb.x,fa[w+9]=fb.y,fa[w+10]=fb.z,fa[w+11]=fb.w,ob=Cb[x.a],pb=Cb[x.b],qb=Cb[x.c],da[w]=ob.x,da[w+1]=ob.y,da[w+2]=ob.z,da[w+3]=1,da[w+4]=pb.x, 0,C=U.length;v<C;v++)x=na[U[v]],bb=wb[x.a],cb=wb[x.b],db=wb[x.c],ha[w]=bb.x,ha[w+1]=bb.y,ha[w+2]=bb.z,ha[w+3]=bb.w,ha[w+4]=cb.x,ha[w+5]=cb.y,ha[w+6]=cb.z,ha[w+7]=cb.w,ha[w+8]=db.x,ha[w+9]=db.y,ha[w+10]=db.z,ha[w+11]=db.w,eb=Eb[x.a],fb=Eb[x.b],gb=Eb[x.c],ga[w]=eb.x,ga[w+1]=eb.y,ga[w+2]=eb.z,ga[w+3]=eb.w,ga[w+4]=fb.x,ga[w+5]=fb.y,ga[w+6]=fb.z,ga[w+7]=fb.w,ga[w+8]=gb.x,ga[w+9]=gb.y,ga[w+10]=gb.z,ga[w+11]=gb.w,pb=Cb[x.a],qb=Cb[x.b],rb=Cb[x.c],ea[w]=pb.x,ea[w+1]=pb.y,ea[w+2]=pb.z,ea[w+3]=1,ea[w+4]=qb.x,
da[w+5]=pb.y,da[w+6]=pb.z,da[w+7]=1,da[w+8]=qb.x,da[w+9]=qb.y,da[w+10]=qb.z,da[w+11]=1,rb=Db[x.a],sb=Db[x.b],tb=Db[x.c],ea[w]=rb.x,ea[w+1]=rb.y,ea[w+2]=rb.z,ea[w+3]=1,ea[w+4]=sb.x,ea[w+5]=sb.y,ea[w+6]=sb.z,ea[w+7]=1,ea[w+8]=tb.x,ea[w+9]=tb.y,ea[w+10]=tb.z,ea[w+11]=1,w+=12;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],ab=vb[x.a],bb=vb[x.b],cb=vb[x.c],Ub=vb[x.d],ga[w]=ab.x,ga[w+1]=ab.y,ga[w+2]=ab.z,ga[w+3]=ab.w,ga[w+4]=bb.x,ga[w+5]=bb.y,ga[w+6]=bb.z,ga[w+7]=bb.w,ga[w+8]=cb.x,ga[w+9]=cb.y,ga[w+10]=cb.z,ga[w+ ea[w+5]=qb.y,ea[w+6]=qb.z,ea[w+7]=1,ea[w+8]=rb.x,ea[w+9]=rb.y,ea[w+10]=rb.z,ea[w+11]=1,sb=Db[x.a],tb=Db[x.b],ub=Db[x.c],fa[w]=sb.x,fa[w+1]=sb.y,fa[w+2]=sb.z,fa[w+3]=1,fa[w+4]=tb.x,fa[w+5]=tb.y,fa[w+6]=tb.z,fa[w+7]=1,fa[w+8]=ub.x,fa[w+9]=ub.y,fa[w+10]=ub.z,fa[w+11]=1,w+=12;for(v=0,C=V.length;v<C;v++)x=na[V[v]],bb=wb[x.a],cb=wb[x.b],db=wb[x.c],Vb=wb[x.d],ha[w]=bb.x,ha[w+1]=bb.y,ha[w+2]=bb.z,ha[w+3]=bb.w,ha[w+4]=cb.x,ha[w+5]=cb.y,ha[w+6]=cb.z,ha[w+7]=cb.w,ha[w+8]=db.x,ha[w+9]=db.y,ha[w+10]=db.z,ha[w+
11]=cb.w,ga[w+12]=Ub.x,ga[w+13]=Ub.y,ga[w+14]=Ub.z,ga[w+15]=Ub.w,db=Eb[x.a],eb=Eb[x.b],fb=Eb[x.c],Vb=Eb[x.d],fa[w]=db.x,fa[w+1]=db.y,fa[w+2]=db.z,fa[w+3]=db.w,fa[w+4]=eb.x,fa[w+5]=eb.y,fa[w+6]=eb.z,fa[w+7]=eb.w,fa[w+8]=fb.x,fa[w+9]=fb.y,fa[w+10]=fb.z,fa[w+11]=fb.w,fa[w+12]=Vb.x,fa[w+13]=Vb.y,fa[w+14]=Vb.z,fa[w+15]=Vb.w,ob=Cb[x.a],pb=Cb[x.b],qb=Cb[x.c],ic=Cb[x.d],da[w]=ob.x,da[w+1]=ob.y,da[w+2]=ob.z,da[w+3]=1,da[w+4]=pb.x,da[w+5]=pb.y,da[w+6]=pb.z,da[w+7]=1,da[w+8]=qb.x,da[w+9]=qb.y,da[w+10]=qb.z, 11]=db.w,ha[w+12]=Vb.x,ha[w+13]=Vb.y,ha[w+14]=Vb.z,ha[w+15]=Vb.w,eb=Eb[x.a],fb=Eb[x.b],gb=Eb[x.c],Wb=Eb[x.d],ga[w]=eb.x,ga[w+1]=eb.y,ga[w+2]=eb.z,ga[w+3]=eb.w,ga[w+4]=fb.x,ga[w+5]=fb.y,ga[w+6]=fb.z,ga[w+7]=fb.w,ga[w+8]=gb.x,ga[w+9]=gb.y,ga[w+10]=gb.z,ga[w+11]=gb.w,ga[w+12]=Wb.x,ga[w+13]=Wb.y,ga[w+14]=Wb.z,ga[w+15]=Wb.w,pb=Cb[x.a],qb=Cb[x.b],rb=Cb[x.c],jc=Cb[x.d],ea[w]=pb.x,ea[w+1]=pb.y,ea[w+2]=pb.z,ea[w+3]=1,ea[w+4]=qb.x,ea[w+5]=qb.y,ea[w+6]=qb.z,ea[w+7]=1,ea[w+8]=rb.x,ea[w+9]=rb.y,ea[w+10]=rb.z,
da[w+11]=1,da[w+12]=ic.x,da[w+13]=ic.y,da[w+14]=ic.z,da[w+15]=1,rb=Db[x.a],sb=Db[x.b],tb=Db[x.c],jc=Db[x.d],ea[w]=rb.x,ea[w+1]=rb.y,ea[w+2]=rb.z,ea[w+3]=1,ea[w+4]=sb.x,ea[w+5]=sb.y,ea[w+6]=sb.z,ea[w+7]=1,ea[w+8]=tb.x,ea[w+9]=tb.y,ea[w+10]=tb.z,ea[w+11]=1,ea[w+12]=jc.x,ea[w+13]=jc.y,ea[w+14]=jc.z,ea[w+15]=1,w+=16;0<w&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinVertexABuffer),g.bufferData(g.ARRAY_BUFFER,da,Ga),g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinVertexBBuffer),g.bufferData(g.ARRAY_BUFFER,ea,Ga), ea[w+11]=1,ea[w+12]=jc.x,ea[w+13]=jc.y,ea[w+14]=jc.z,ea[w+15]=1,sb=Db[x.a],tb=Db[x.b],ub=Db[x.c],kc=Db[x.d],fa[w]=sb.x,fa[w+1]=sb.y,fa[w+2]=sb.z,fa[w+3]=1,fa[w+4]=tb.x,fa[w+5]=tb.y,fa[w+6]=tb.z,fa[w+7]=1,fa[w+8]=ub.x,fa[w+9]=ub.y,fa[w+10]=ub.z,fa[w+11]=1,fa[w+12]=kc.x,fa[w+13]=kc.y,fa[w+14]=kc.z,fa[w+15]=1,w+=16;0<w&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinVertexABuffer),g.bufferData(g.ARRAY_BUFFER,ea,Ga),g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinVertexBBuffer),g.bufferData(g.ARRAY_BUFFER,fa,Ga),
g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinIndicesBuffer),g.bufferData(g.ARRAY_BUFFER,fa,Ga),g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinWeightsBuffer),g.bufferData(g.ARRAY_BUFFER,ga,Ga))}if(Tc&&xc){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],Ra=x.vertexColors,hc=x.color,3===Ra.length&&xc===THREE.VertexColors?(Ya=Ra[0],Za=Ra[1],$a=Ra[2]):$a=Za=Ya=hc,sa[ka]=Ya.r,sa[ka+1]=Ya.g,sa[ka+2]=Ya.b,sa[ka+3]=Za.r,sa[ka+4]=Za.g,sa[ka+5]=Za.b,sa[ka+6]=$a.r,sa[ka+7]=$a.g,sa[ka+8]=$a.b,ka+=9;for(v=0,C=V.length;v<C;v++)x=ma[V[v]], g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinIndicesBuffer),g.bufferData(g.ARRAY_BUFFER,ga,Ga),g.bindBuffer(g.ARRAY_BUFFER,O.__webglSkinWeightsBuffer),g.bufferData(g.ARRAY_BUFFER,ha,Ga))}if(Tc&&yc){for(v=0,C=U.length;v<C;v++)x=na[U[v]],Ra=x.vertexColors,ic=x.color,3===Ra.length&&yc===THREE.VertexColors?(Za=Ra[0],$a=Ra[1],ab=Ra[2]):ab=$a=Za=ic,sa[la]=Za.r,sa[la+1]=Za.g,sa[la+2]=Za.b,sa[la+3]=$a.r,sa[la+4]=$a.g,sa[la+5]=$a.b,sa[la+6]=ab.r,sa[la+7]=ab.g,sa[la+8]=ab.b,la+=9;for(v=0,C=V.length;v<C;v++)x=na[V[v]],
Ra=x.vertexColors,hc=x.color,4===Ra.length&&xc===THREE.VertexColors?(Ya=Ra[0],Za=Ra[1],$a=Ra[2],Tb=Ra[3]):Tb=$a=Za=Ya=hc,sa[ka]=Ya.r,sa[ka+1]=Ya.g,sa[ka+2]=Ya.b,sa[ka+3]=Za.r,sa[ka+4]=Za.g,sa[ka+5]=Za.b,sa[ka+6]=$a.r,sa[ka+7]=$a.g,sa[ka+8]=$a.b,sa[ka+9]=Tb.r,sa[ka+10]=Tb.g,sa[ka+11]=Tb.b,ka+=12;0<ka&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglColorBuffer),g.bufferData(g.ARRAY_BUFFER,sa,Ga))}if(Sc&&za.hasTangents){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],hb=x.vertexTangents,Va=hb[0],Wa=hb[1],Xa=hb[2],ca[X]= Ra=x.vertexColors,ic=x.color,4===Ra.length&&yc===THREE.VertexColors?(Za=Ra[0],$a=Ra[1],ab=Ra[2],Ub=Ra[3]):Ub=ab=$a=Za=ic,sa[la]=Za.r,sa[la+1]=Za.g,sa[la+2]=Za.b,sa[la+3]=$a.r,sa[la+4]=$a.g,sa[la+5]=$a.b,sa[la+6]=ab.r,sa[la+7]=ab.g,sa[la+8]=ab.b,sa[la+9]=Ub.r,sa[la+10]=Ub.g,sa[la+11]=Ub.b,la+=12;0<la&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglColorBuffer),g.bufferData(g.ARRAY_BUFFER,sa,Ga))}if(Sc&&xa.hasTangents){for(v=0,C=U.length;v<C;v++)x=na[U[v]],jb=x.vertexTangents,Wa=jb[0],Xa=jb[1],Ya=jb[2],da[Y]=
Va.x,ca[X+1]=Va.y,ca[X+2]=Va.z,ca[X+3]=Va.w,ca[X+4]=Wa.x,ca[X+5]=Wa.y,ca[X+6]=Wa.z,ca[X+7]=Wa.w,ca[X+8]=Xa.x,ca[X+9]=Xa.y,ca[X+10]=Xa.z,ca[X+11]=Xa.w,X+=12;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],hb=x.vertexTangents,Va=hb[0],Wa=hb[1],Xa=hb[2],Sb=hb[3],ca[X]=Va.x,ca[X+1]=Va.y,ca[X+2]=Va.z,ca[X+3]=Va.w,ca[X+4]=Wa.x,ca[X+5]=Wa.y,ca[X+6]=Wa.z,ca[X+7]=Wa.w,ca[X+8]=Xa.x,ca[X+9]=Xa.y,ca[X+10]=Xa.z,ca[X+11]=Xa.w,ca[X+12]=Sb.x,ca[X+13]=Sb.y,ca[X+14]=Sb.z,ca[X+15]=Sb.w,X+=16;g.bindBuffer(g.ARRAY_BUFFER,O.__webglTangentBuffer); Wa.x,da[Y+1]=Wa.y,da[Y+2]=Wa.z,da[Y+3]=Wa.w,da[Y+4]=Xa.x,da[Y+5]=Xa.y,da[Y+6]=Xa.z,da[Y+7]=Xa.w,da[Y+8]=Ya.x,da[Y+9]=Ya.y,da[Y+10]=Ya.z,da[Y+11]=Ya.w,Y+=12;for(v=0,C=V.length;v<C;v++)x=na[V[v]],jb=x.vertexTangents,Wa=jb[0],Xa=jb[1],Ya=jb[2],Tb=jb[3],da[Y]=Wa.x,da[Y+1]=Wa.y,da[Y+2]=Wa.z,da[Y+3]=Wa.w,da[Y+4]=Xa.x,da[Y+5]=Xa.y,da[Y+6]=Xa.z,da[Y+7]=Xa.w,da[Y+8]=Ya.x,da[Y+9]=Ya.y,da[Y+10]=Ya.z,da[Y+11]=Ya.w,da[Y+12]=Tb.x,da[Y+13]=Tb.y,da[Y+14]=Tb.z,da[Y+15]=Tb.w,Y+=16;g.bindBuffer(g.ARRAY_BUFFER,O.__webglTangentBuffer);
g.bufferData(g.ARRAY_BUFFER,ca,Ga)}if(Rc&&Ec){for(v=0,C=U.length;v<C;v++)if(x=ma[U[v]],Jb=x.vertexNormals,nb=x.normal,3===Jb.length&&Gc)for(T=0;3>T;T++)ub=Jb[T],La[wa]=ub.x,La[wa+1]=ub.y,La[wa+2]=ub.z,wa+=3;else for(T=0;3>T;T++)La[wa]=nb.x,La[wa+1]=nb.y,La[wa+2]=nb.z,wa+=3;for(v=0,C=V.length;v<C;v++)if(x=ma[V[v]],Jb=x.vertexNormals,nb=x.normal,4===Jb.length&&Gc)for(T=0;4>T;T++)ub=Jb[T],La[wa]=ub.x,La[wa+1]=ub.y,La[wa+2]=ub.z,wa+=3;else for(T=0;4>T;T++)La[wa]=nb.x,La[wa+1]=nb.y,La[wa+2]=nb.z,wa+=3; g.bufferData(g.ARRAY_BUFFER,da,Ga)}if(Rc&&Fc){for(v=0,C=U.length;v<C;v++)if(x=na[U[v]],Jb=x.vertexNormals,ob=x.normal,3===Jb.length&&Hc)for(T=0;3>T;T++)vb=Jb[T],La[va]=vb.x,La[va+1]=vb.y,La[va+2]=vb.z,va+=3;else for(T=0;3>T;T++)La[va]=ob.x,La[va+1]=ob.y,La[va+2]=ob.z,va+=3;for(v=0,C=V.length;v<C;v++)if(x=na[V[v]],Jb=x.vertexNormals,ob=x.normal,4===Jb.length&&Hc)for(T=0;4>T;T++)vb=Jb[T],La[va]=vb.x,La[va+1]=vb.y,La[va+2]=vb.z,va+=3;else for(T=0;4>T;T++)La[va]=ob.x,La[va+1]=ob.y,La[va+2]=ob.z,va+=3;
g.bindBuffer(g.ARRAY_BUFFER,O.__webglNormalBuffer);g.bufferData(g.ARRAY_BUFFER,La,Ga)}if(Jc&&Ac&&Fc){for(v=0,C=U.length;v<C;v++)if(Oa=U[v],x=ma[Oa],Kb=Ac[Oa],void 0!==Kb)for(T=0;3>T;T++)Mb=Kb[T],Wb[ib]=Mb.u,Wb[ib+1]=Mb.v,ib+=2;for(v=0,C=V.length;v<C;v++)if(Oa=V[v],x=ma[Oa],Kb=Ac[Oa],void 0!==Kb)for(T=0;4>T;T++)Mb=Kb[T],Wb[ib]=Mb.u,Wb[ib+1]=Mb.v,ib+=2;0<ib&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglUVBuffer),g.bufferData(g.ARRAY_BUFFER,Wb,Ga))}if(Jc&&Bc&&Fc){for(v=0,C=U.length;v<C;v++)if(Oa=U[v],x=ma[Oa], g.bindBuffer(g.ARRAY_BUFFER,O.__webglNormalBuffer);g.bufferData(g.ARRAY_BUFFER,La,Ga)}if(Kc&&Bc&&Gc){for(v=0,C=U.length;v<C;v++)if(Ma=U[v],x=na[Ma],Kb=Bc[Ma],void 0!==Kb)for(T=0;3>T;T++)Mb=Kb[T],Xb[kb]=Mb.u,Xb[kb+1]=Mb.v,kb+=2;for(v=0,C=V.length;v<C;v++)if(Ma=V[v],x=na[Ma],Kb=Bc[Ma],void 0!==Kb)for(T=0;4>T;T++)Mb=Kb[T],Xb[kb]=Mb.u,Xb[kb+1]=Mb.v,kb+=2;0<kb&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglUVBuffer),g.bufferData(g.ARRAY_BUFFER,Xb,Ga))}if(Kc&&Cc&&Gc){for(v=0,C=U.length;v<C;v++)if(Ma=U[v],x=na[Ma],
Lb=Bc[Oa],void 0!==Lb)for(T=0;3>T;T++)Nb=Lb[T],Xb[jb]=Nb.u,Xb[jb+1]=Nb.v,jb+=2;for(v=0,C=V.length;v<C;v++)if(Oa=V[v],x=ma[Oa],Lb=Bc[Oa],void 0!==Lb)for(T=0;4>T;T++)Nb=Lb[T],Xb[jb]=Nb.u,Xb[jb+1]=Nb.v,jb+=2;0<jb&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglUV2Buffer),g.bufferData(g.ARRAY_BUFFER,Xb,Ga))}if(Qc){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],gb[Ka]=ja,gb[Ka+1]=ja+1,gb[Ka+2]=ja+2,Ka+=3,Ea[xa]=ja,Ea[xa+1]=ja+1,Ea[xa+2]=ja,Ea[xa+3]=ja+2,Ea[xa+4]=ja+1,Ea[xa+5]=ja+2,xa+=6,ja+=3;for(v=0,C=V.length;v<C;v++)x= Lb=Cc[Ma],void 0!==Lb)for(T=0;3>T;T++)Nb=Lb[T],Yb[lb]=Nb.u,Yb[lb+1]=Nb.v,lb+=2;for(v=0,C=V.length;v<C;v++)if(Ma=V[v],x=na[Ma],Lb=Cc[Ma],void 0!==Lb)for(T=0;4>T;T++)Nb=Lb[T],Yb[lb]=Nb.u,Yb[lb+1]=Nb.v,lb+=2;0<lb&&(g.bindBuffer(g.ARRAY_BUFFER,O.__webglUV2Buffer),g.bufferData(g.ARRAY_BUFFER,Yb,Ga))}if(uc){for(v=0,C=U.length;v<C;v++)x=na[U[v]],hb[Ka]=ja,hb[Ka+1]=ja+1,hb[Ka+2]=ja+2,Ka+=3,Da[wa]=ja,Da[wa+1]=ja+1,Da[wa+2]=ja,Da[wa+3]=ja+2,Da[wa+4]=ja+1,Da[wa+5]=ja+2,wa+=6,ja+=3;for(v=0,C=V.length;v<C;v++)x=
ma[V[v]],gb[Ka]=ja,gb[Ka+1]=ja+1,gb[Ka+2]=ja+3,gb[Ka+3]=ja+1,gb[Ka+4]=ja+2,gb[Ka+5]=ja+3,Ka+=6,Ea[xa]=ja,Ea[xa+1]=ja+1,Ea[xa+2]=ja,Ea[xa+3]=ja+3,Ea[xa+4]=ja+1,Ea[xa+5]=ja+2,Ea[xa+6]=ja+2,Ea[xa+7]=ja+3,xa+=8,ja+=4;g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,O.__webglFaceBuffer);g.bufferData(g.ELEMENT_ARRAY_BUFFER,gb,Ga);g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,O.__webglLineBuffer);g.bufferData(g.ELEMENT_ARRAY_BUFFER,Ea,Ga)}if(zc)for(T=0,Hc=zc.length;T<Hc;T++)if(q=zc[T],q.__original.needsUpdate){s=0;if(1===q.size)if(void 0=== na[V[v]],hb[Ka]=ja,hb[Ka+1]=ja+1,hb[Ka+2]=ja+3,hb[Ka+3]=ja+1,hb[Ka+4]=ja+2,hb[Ka+5]=ja+3,Ka+=6,Da[wa]=ja,Da[wa+1]=ja+1,Da[wa+2]=ja,Da[wa+3]=ja+3,Da[wa+4]=ja+1,Da[wa+5]=ja+2,Da[wa+6]=ja+2,Da[wa+7]=ja+3,wa+=8,ja+=4;g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,O.__webglFaceBuffer);g.bufferData(g.ELEMENT_ARRAY_BUFFER,hb,Ga);g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,O.__webglLineBuffer);g.bufferData(g.ELEMENT_ARRAY_BUFFER,Da,Ga)}if(Ac)for(T=0,Ic=Ac.length;T<Ic;T++)if(q=Ac[T],q.__original.needsUpdate){s=0;if(1===q.size)if(void 0===
q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],q.array[s]=q.value[x.a],q.array[s+1]=q.value[x.b],q.array[s+2]=q.value[x.c],s+=3;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],q.array[s]=q.value[x.a],q.array[s+1]=q.value[x.b],q.array[s+2]=q.value[x.c],q.array[s+3]=q.value[x.d],s+=4}else{if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)Da=q.value[U[v]],q.array[s]=Da,q.array[s+1]=Da,q.array[s+2]=Da,s+=3;for(v=0,C=V.length;v<C;v++)Da=q.value[V[v]],q.array[s]=Da,q.array[s+1]=Da,q.array[s+ q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=na[U[v]],q.array[s]=q.value[x.a],q.array[s+1]=q.value[x.b],q.array[s+2]=q.value[x.c],s+=3;for(v=0,C=V.length;v<C;v++)x=na[V[v]],q.array[s]=q.value[x.a],q.array[s+1]=q.value[x.b],q.array[s+2]=q.value[x.c],q.array[s+3]=q.value[x.d],s+=4}else{if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)Ca=q.value[U[v]],q.array[s]=Ca,q.array[s+1]=Ca,q.array[s+2]=Ca,s+=3;for(v=0,C=V.length;v<C;v++)Ca=q.value[V[v]],q.array[s]=Ca,q.array[s+1]=Ca,q.array[s+
2]=Da,q.array[s+3]=Da,s+=4}}else if(2===q.size)if(void 0===q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,s+=6;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],W=q.value[x.d],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,q.array[s+6]=W.x,q.array[s+ 2]=Ca,q.array[s+3]=Ca,s+=4}}else if(2===q.size)if(void 0===q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=na[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,s+=6;for(v=0,C=V.length;v<C;v++)x=na[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],X=q.value[x.d],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,q.array[s+6]=X.x,q.array[s+
7]=W.y,s+=8}else{if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Da=q.value[U[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,s+=6;for(v=0,C=V.length;v<C;v++)W=G=F=E=Da=q.value[V[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,q.array[s+6]=W.x,q.array[s+7]=W.y,s+=8}}else if(3===q.size){var P;P="c"===q.type?["r","g","b"]:["x","y","z"];if(void 0===q.boundTo||"vertices"===q.boundTo){for(v= 7]=X.y,s+=8}else{if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Ca=q.value[U[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,s+=6;for(v=0,C=V.length;v<C;v++)X=G=F=E=Ca=q.value[V[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=F.x,q.array[s+3]=F.y,q.array[s+4]=G.x,q.array[s+5]=G.y,q.array[s+6]=X.x,q.array[s+7]=X.y,s+=8}}else if(3===q.size){var P;P="c"===q.type?["r","g","b"]:["x","y","z"];if(void 0===q.boundTo||"vertices"===q.boundTo){for(v=
0,C=U.length;v<C;v++)x=ma[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],s+=9;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],W=q.value[x.d],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+ 0,C=U.length;v<C;v++)x=na[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],s+=9;for(v=0,C=V.length;v<C;v++)x=na[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],X=q.value[x.d],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+
6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],q.array[s+9]=W[P[0]],q.array[s+10]=W[P[1]],q.array[s+11]=W[P[2]],s+=12}else if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Da=q.value[U[v]],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],s+=9;for(v=0,C=V.length;v<C;v++)W=G=F=E=Da=q.value[V[v]],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]], 6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],q.array[s+9]=X[P[0]],q.array[s+10]=X[P[1]],q.array[s+11]=X[P[2]],s+=12}else if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Ca=q.value[U[v]],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],s+=9;for(v=0,C=V.length;v<C;v++)X=G=F=E=Ca=q.value[V[v]],q.array[s]=E[P[0]],q.array[s+1]=E[P[1]],q.array[s+2]=E[P[2]],
q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],q.array[s+9]=W[P[0]],q.array[s+10]=W[P[1]],q.array[s+11]=W[P[2]],s+=12}}else if(4===q.size)if(void 0===q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=ma[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+ q.array[s+3]=F[P[0]],q.array[s+4]=F[P[1]],q.array[s+5]=F[P[2]],q.array[s+6]=G[P[0]],q.array[s+7]=G[P[1]],q.array[s+8]=G[P[2]],q.array[s+9]=X[P[0]],q.array[s+10]=X[P[1]],q.array[s+11]=X[P[2]],s+=12}}else if(4===q.size)if(void 0===q.boundTo||"vertices"===q.boundTo){for(v=0,C=U.length;v<C;v++)x=na[U[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+
9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,s+=12;for(v=0,C=V.length;v<C;v++)x=ma[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],W=q.value[x.d],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,q.array[s+12]=W.x,q.array[s+13]=W.y,q.array[s+14]=W.z,q.array[s+15]=W.w,s+=16}else if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Da=q.value[U[v]], 9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,s+=12;for(v=0,C=V.length;v<C;v++)x=na[V[v]],E=q.value[x.a],F=q.value[x.b],G=q.value[x.c],X=q.value[x.d],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,q.array[s+12]=X.x,q.array[s+13]=X.y,q.array[s+14]=X.z,q.array[s+15]=X.w,s+=16}else if("faces"===q.boundTo){for(v=0,C=U.length;v<C;v++)G=F=E=Ca=q.value[U[v]],
q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,s+=12;for(v=0,C=V.length;v<C;v++)W=G=F=E=Da=q.value[V[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,q.array[s+12]=W.x,q.array[s+13]=W.y, q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,s+=12;for(v=0,C=V.length;v<C;v++)X=G=F=E=Ca=q.value[V[v]],q.array[s]=E.x,q.array[s+1]=E.y,q.array[s+2]=E.z,q.array[s+3]=E.w,q.array[s+4]=F.x,q.array[s+5]=F.y,q.array[s+6]=F.z,q.array[s+7]=F.w,q.array[s+8]=G.x,q.array[s+9]=G.y,q.array[s+10]=G.z,q.array[s+11]=G.w,q.array[s+12]=X.x,q.array[s+13]=X.y,
q.array[s+14]=W.z,q.array[s+15]=W.w,s+=16}g.bindBuffer(g.ARRAY_BUFFER,q.buffer);g.bufferData(g.ARRAY_BUFFER,q.array,Ga)}tc&&(delete O.__inittedArrays,delete O.__colorArray,delete O.__normalArray,delete O.__tangentArray,delete O.__uvArray,delete O.__uv2Array,delete O.__faceArray,delete O.__vertexArray,delete O.__lineArray,delete O.__skinVertexAArray,delete O.__skinVertexBArray,delete O.__skinIndexArray,delete O.__skinWeightArray)}}R.__dirtyVertices=!1;R.__dirtyMorphTargets=!1;R.__dirtyElements=!1; q.array[s+14]=X.z,q.array[s+15]=X.w,s+=16}g.bindBuffer(g.ARRAY_BUFFER,q.buffer);g.bufferData(g.ARRAY_BUFFER,q.array,Ga)}fc&&(delete O.__inittedArrays,delete O.__colorArray,delete O.__normalArray,delete O.__tangentArray,delete O.__uvArray,delete O.__uv2Array,delete O.__faceArray,delete O.__vertexArray,delete O.__lineArray,delete O.__skinVertexAArray,delete O.__skinVertexBArray,delete O.__skinIndexArray,delete O.__skinWeightArray)}}R.__dirtyVertices=!1;R.__dirtyMorphTargets=!1;R.__dirtyElements=!1;
R.__dirtyUvs=!1;R.__dirtyNormals=!1;R.__dirtyColors=!1;R.__dirtyTangents=!1;Aa.attributes&&p(Aa)}else if(Qa instanceof THREE.Ribbon){if(R.__dirtyVertices||R.__dirtyColors){var xb=R,Kc=g.DYNAMIC_DRAW,Yb=void 0,Zb=void 0,kc=void 0,yb=void 0,lc=void 0,Lc=xb.vertices,Mc=xb.colors,Vc=Lc.length,Wc=Mc.length,mc=xb.__vertexArray,nc=xb.__colorArray,Xc=xb.__dirtyColors;if(xb.__dirtyVertices){for(Yb=0;Yb<Vc;Yb++)kc=Lc[Yb].position,yb=3*Yb,mc[yb]=kc.x,mc[yb+1]=kc.y,mc[yb+2]=kc.z;g.bindBuffer(g.ARRAY_BUFFER,xb.__webglVertexBuffer); R.__dirtyUvs=!1;R.__dirtyNormals=!1;R.__dirtyColors=!1;R.__dirtyTangents=!1;za.attributes&&p(za)}else if(Qa instanceof THREE.Ribbon){if(R.__dirtyVertices||R.__dirtyColors){var yb=R,Lc=g.DYNAMIC_DRAW,Zb=void 0,$b=void 0,lc=void 0,zb=void 0,mc=void 0,Mc=yb.vertices,Nc=yb.colors,Vc=Mc.length,Wc=Nc.length,nc=yb.__vertexArray,oc=yb.__colorArray,Xc=yb.__dirtyColors;if(yb.__dirtyVertices){for(Zb=0;Zb<Vc;Zb++)lc=Mc[Zb].position,zb=3*Zb,nc[zb]=lc.x,nc[zb+1]=lc.y,nc[zb+2]=lc.z;g.bindBuffer(g.ARRAY_BUFFER,yb.__webglVertexBuffer);
g.bufferData(g.ARRAY_BUFFER,mc,Kc)}if(Xc){for(Zb=0;Zb<Wc;Zb++)lc=Mc[Zb],yb=3*Zb,nc[yb]=lc.r,nc[yb+1]=lc.g,nc[yb+2]=lc.b;g.bindBuffer(g.ARRAY_BUFFER,xb.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,nc,Kc)}}R.__dirtyVertices=!1;R.__dirtyColors=!1}else if(Qa instanceof THREE.Line){Aa=c(Qa,Rb);Ib=Aa.attributes&&n(Aa);if(R.__dirtyVertices||R.__dirtyColors||Ib){var kb=R,Cc=g.DYNAMIC_DRAW,$b=void 0,ac=void 0,oc=void 0,ha=void 0,pc=void 0,Nc=kb.vertices,Oc=kb.colors,Yc=Nc.length,Zc=Oc.length,qc=kb.__vertexArray, g.bufferData(g.ARRAY_BUFFER,nc,Lc)}if(Xc){for($b=0;$b<Wc;$b++)mc=Nc[$b],zb=3*$b,oc[zb]=mc.r,oc[zb+1]=mc.g,oc[zb+2]=mc.b;g.bindBuffer(g.ARRAY_BUFFER,yb.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,oc,Lc)}}R.__dirtyVertices=!1;R.__dirtyColors=!1}else if(Qa instanceof THREE.Line){za=c(Qa,Sb);Ib=za.attributes&&n(za);if(R.__dirtyVertices||R.__dirtyColors||Ib){var mb=R,Dc=g.DYNAMIC_DRAW,ac=void 0,bc=void 0,pc=void 0,ia=void 0,qc=void 0,Oc=mb.vertices,Pc=mb.colors,Yc=Oc.length,Zc=Pc.length,rc=mb.__vertexArray,
rc=kb.__colorArray,$c=kb.__dirtyColors,Dc=kb.__webglCustomAttributesList,sc=void 0,Pc=void 0,ta=void 0,Ob=void 0,Ba=void 0,aa=void 0;if(kb.__dirtyVertices){for($b=0;$b<Yc;$b++)oc=Nc[$b].position,ha=3*$b,qc[ha]=oc.x,qc[ha+1]=oc.y,qc[ha+2]=oc.z;g.bindBuffer(g.ARRAY_BUFFER,kb.__webglVertexBuffer);g.bufferData(g.ARRAY_BUFFER,qc,Cc)}if($c){for(ac=0;ac<Zc;ac++)pc=Oc[ac],ha=3*ac,rc[ha]=pc.r,rc[ha+1]=pc.g,rc[ha+2]=pc.b;g.bindBuffer(g.ARRAY_BUFFER,kb.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,rc,Cc)}if(Dc)for(sc= sc=mb.__colorArray,$c=mb.__dirtyColors,Ec=mb.__webglCustomAttributesList,tc=void 0,Qc=void 0,ta=void 0,Ob=void 0,Aa=void 0,aa=void 0;if(mb.__dirtyVertices){for(ac=0;ac<Yc;ac++)pc=Oc[ac].position,ia=3*ac,rc[ia]=pc.x,rc[ia+1]=pc.y,rc[ia+2]=pc.z;g.bindBuffer(g.ARRAY_BUFFER,mb.__webglVertexBuffer);g.bufferData(g.ARRAY_BUFFER,rc,Dc)}if($c){for(bc=0;bc<Zc;bc++)qc=Pc[bc],ia=3*bc,sc[ia]=qc.r,sc[ia+1]=qc.g,sc[ia+2]=qc.b;g.bindBuffer(g.ARRAY_BUFFER,mb.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,sc,Dc)}if(Ec)for(tc=
0,Pc=Dc.length;sc<Pc;sc++)if(aa=Dc[sc],aa.needsUpdate&&(void 0===aa.boundTo||"vertices"===aa.boundTo)){ha=0;Ob=aa.value.length;if(1===aa.size)for(ta=0;ta<Ob;ta++)aa.array[ta]=aa.value[ta];else if(2===aa.size)for(ta=0;ta<Ob;ta++)Ba=aa.value[ta],aa.array[ha]=Ba.x,aa.array[ha+1]=Ba.y,ha+=2;else if(3===aa.size)if("c"===aa.type)for(ta=0;ta<Ob;ta++)Ba=aa.value[ta],aa.array[ha]=Ba.r,aa.array[ha+1]=Ba.g,aa.array[ha+2]=Ba.b,ha+=3;else for(ta=0;ta<Ob;ta++)Ba=aa.value[ta],aa.array[ha]=Ba.x,aa.array[ha+1]=Ba.y, 0,Qc=Ec.length;tc<Qc;tc++)if(aa=Ec[tc],aa.needsUpdate&&(void 0===aa.boundTo||"vertices"===aa.boundTo)){ia=0;Ob=aa.value.length;if(1===aa.size)for(ta=0;ta<Ob;ta++)aa.array[ta]=aa.value[ta];else if(2===aa.size)for(ta=0;ta<Ob;ta++)Aa=aa.value[ta],aa.array[ia]=Aa.x,aa.array[ia+1]=Aa.y,ia+=2;else if(3===aa.size)if("c"===aa.type)for(ta=0;ta<Ob;ta++)Aa=aa.value[ta],aa.array[ia]=Aa.r,aa.array[ia+1]=Aa.g,aa.array[ia+2]=Aa.b,ia+=3;else for(ta=0;ta<Ob;ta++)Aa=aa.value[ta],aa.array[ia]=Aa.x,aa.array[ia+1]=Aa.y,
aa.array[ha+2]=Ba.z,ha+=3;else if(4===aa.size)for(ta=0;ta<Ob;ta++)Ba=aa.value[ta],aa.array[ha]=Ba.x,aa.array[ha+1]=Ba.y,aa.array[ha+2]=Ba.z,aa.array[ha+3]=Ba.w,ha+=4;g.bindBuffer(g.ARRAY_BUFFER,aa.buffer);g.bufferData(g.ARRAY_BUFFER,aa.array,Cc)}}R.__dirtyVertices=!1;R.__dirtyColors=!1;Aa.attributes&&p(Aa)}else if(Qa instanceof THREE.ParticleSystem)Aa=c(Qa,Rb),Ib=Aa.attributes&&n(Aa),(R.__dirtyVertices||R.__dirtyColors||Qa.sortParticles||Ib)&&f(R,g.DYNAMIC_DRAW,Qa),R.__dirtyVertices=!1,R.__dirtyColors= aa.array[ia+2]=Aa.z,ia+=3;else if(4===aa.size)for(ta=0;ta<Ob;ta++)Aa=aa.value[ta],aa.array[ia]=Aa.x,aa.array[ia+1]=Aa.y,aa.array[ia+2]=Aa.z,aa.array[ia+3]=Aa.w,ia+=4;g.bindBuffer(g.ARRAY_BUFFER,aa.buffer);g.bufferData(g.ARRAY_BUFFER,aa.array,Dc)}}R.__dirtyVertices=!1;R.__dirtyColors=!1;za.attributes&&p(za)}else if(Qa instanceof THREE.ParticleSystem)za=c(Qa,Sb),Ib=za.attributes&&n(za),(R.__dirtyVertices||R.__dirtyColors||Qa.sortParticles||Ib)&&f(R,g.DYNAMIC_DRAW,Qa),R.__dirtyVertices=!1,R.__dirtyColors=
!1,Aa.attributes&&p(Aa)}};this.initMaterial=function(a,b,c,d){var e,f,h,i,j;a instanceof THREE.MeshDepthMaterial?j="depth":a instanceof THREE.MeshNormalMaterial?j="normal":a instanceof THREE.MeshBasicMaterial?j="basic":a instanceof THREE.MeshLambertMaterial?j="lambert":a instanceof THREE.MeshPhongMaterial?j="phong":a instanceof THREE.LineBasicMaterial?j="basic":a instanceof THREE.ParticleBasicMaterial&&(j="particle_basic");if(j){var k=THREE.ShaderLib[j];a.uniforms=THREE.UniformsUtils.clone(k.uniforms); !1,za.attributes&&p(za)}};this.initMaterial=function(a,b,c,d){var e,f,h,i,j;a instanceof THREE.MeshDepthMaterial?j="depth":a instanceof THREE.MeshNormalMaterial?j="normal":a instanceof THREE.MeshBasicMaterial?j="basic":a instanceof THREE.MeshLambertMaterial?j="lambert":a instanceof THREE.MeshPhongMaterial?j="phong":a instanceof THREE.LineBasicMaterial?j="basic":a instanceof THREE.ParticleBasicMaterial&&(j="particle_basic");if(j){var k=THREE.ShaderLib[j];a.uniforms=THREE.UniformsUtils.clone(k.uniforms);
a.vertexShader=k.vertexShader;a.fragmentShader=k.fragmentShader}var n,l;f=k=0;for(n=0,l=b.length;n<l;n++)e=b[n],e.onlyShadow||(e instanceof THREE.DirectionalLight&&f++,e instanceof THREE.PointLight&&k++,e instanceof THREE.SpotLight&&k++);k+f<=Y?n=f:(n=Math.ceil(Y*f/(k+f)),k=Y-n);e=n;f=k;var m=0;for(k=0,n=b.length;k<n;k++)l=b[k],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight)&&m++;var p=50;if(void 0!==d&&d instanceof THREE.SkinnedMesh)p=d.bones.length;var o;a:{n=a.fragmentShader; a.vertexShader=k.vertexShader;a.fragmentShader=k.fragmentShader}var n,l;f=k=0;for(n=0,l=b.length;n<l;n++)e=b[n],e.onlyShadow||(e instanceof THREE.DirectionalLight&&f++,e instanceof THREE.PointLight&&k++,e instanceof THREE.SpotLight&&k++);k+f<=Z?n=f:(n=Math.ceil(Z*f/(k+f)),k=Z-n);e=n;f=k;var m=0;for(k=0,n=b.length;k<n;k++)l=b[k],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight)&&m++;var p=50;if(void 0!==d&&d instanceof THREE.SkinnedMesh)p=d.bones.length;var o;a:{n=a.fragmentShader;
l=a.vertexShader;var k=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:e,maxPointLights:f,maxBones:p,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround},r,d=[]; l=a.vertexShader;var k=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:e,maxPointLights:f,maxBones:p,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround},r,d=[];
j?d.push(j):(d.push(n),d.push(l));for(r in c)d.push(r),d.push(c[r]);j=d.join();for(r=0,d=lb.length;r<d;r++)if(lb[r].code===j){o=lb[r].program;break a}r=g.createProgram();d=[0<ec?"#define VERTEX_TEXTURES":"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones, j?d.push(j):(d.push(n),d.push(l));for(r in c)d.push(r),d.push(c[r]);j=d.join();for(r=0,d=Sa.length;r<d;r++)if(Sa[r].code===j){o=Sa[r].program;break a}r=g.createProgram();d=[0<fc?"#define VERTEX_TEXTURES":"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,
c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n"); c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
e=["precision "+A+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap? e=["precision "+A+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?
"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");g.attachShader(r,y("fragment",e+n));g.attachShader(r,y("vertex",d+l));g.linkProgram(r);g.getProgramParameter(r,g.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+ "#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");g.attachShader(r,y("fragment",e+n));g.attachShader(r,y("vertex",d+l));g.linkProgram(r);g.getProgramParameter(r,g.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+
g.getProgramParameter(r,g.VALIDATE_STATUS)+", gl error ["+g.getError()+"]");r.uniforms={};r.attributes={};var t,d="viewMatrix,modelViewMatrix,projectionMatrix,normalMatrix,objectMatrix,cameraPosition,cameraInverseMatrix,boneGlobalMatrices,morphTargetInfluences".split(",");for(t in k)d.push(t);t=d;for(d=0,k=t.length;d<k;d++)n=t[d],r.uniforms[n]=g.getUniformLocation(r,n);d="position,normal,uv,uv2,tangent,color,skinVertexA,skinVertexB,skinIndex,skinWeight".split(",");for(t=0;t<c.maxMorphTargets;t++)d.push("morphTarget"+ g.getProgramParameter(r,g.VALIDATE_STATUS)+", gl error ["+g.getError()+"]");r.uniforms={};r.attributes={};var t,d="viewMatrix,modelViewMatrix,projectionMatrix,normalMatrix,objectMatrix,cameraPosition,cameraInverseMatrix,boneGlobalMatrices,morphTargetInfluences".split(",");for(t in k)d.push(t);t=d;for(d=0,k=t.length;d<k;d++)n=t[d],r.uniforms[n]=g.getUniformLocation(r,n);d="position,normal,uv,uv2,tangent,color,skinVertexA,skinVertexB,skinIndex,skinWeight".split(",");for(t=0;t<c.maxMorphTargets;t++)d.push("morphTarget"+
t);for(o in b)d.push(o);o=d;for(t=0,b=o.length;t<b;t++)c=o[t],r.attributes[c]=g.getAttribLocation(r,c);r.id=lb.length;lb.push({program:r,code:j});D.info.memory.programs=lb.length;o=r}a.program=o;o=a.program.attributes;0<=o.position&&g.enableVertexAttribArray(o.position);0<=o.color&&g.enableVertexAttribArray(o.color);0<=o.normal&&g.enableVertexAttribArray(o.normal);0<=o.tangent&&g.enableVertexAttribArray(o.tangent);a.skinning&&0<=o.skinVertexA&&0<=o.skinVertexB&&0<=o.skinIndex&&0<=o.skinWeight&&(g.enableVertexAttribArray(o.skinVertexA), t);for(o in b)d.push(o);o=d;for(t=0,b=o.length;t<b;t++)c=o[t],r.attributes[c]=g.getAttribLocation(r,c);r.id=Sa.length;Sa.push({program:r,code:j});D.info.memory.programs=Sa.length;o=r}a.program=o;o=a.program.attributes;0<=o.position&&g.enableVertexAttribArray(o.position);0<=o.color&&g.enableVertexAttribArray(o.color);0<=o.normal&&g.enableVertexAttribArray(o.normal);0<=o.tangent&&g.enableVertexAttribArray(o.tangent);a.skinning&&0<=o.skinVertexA&&0<=o.skinVertexB&&0<=o.skinIndex&&0<=o.skinWeight&&(g.enableVertexAttribArray(o.skinVertexA),
g.enableVertexAttribArray(o.skinVertexB),g.enableVertexAttribArray(o.skinIndex),g.enableVertexAttribArray(o.skinWeight));if(a.attributes)for(i in a.attributes)void 0!==o[i]&&0<=o[i]&&g.enableVertexAttribArray(o[i]);if(a.morphTargets)for(i=a.numSupportedMorphTargets=0;i<this.maxMorphTargets;i++)t="morphTarget"+i,0<=o[t]&&(g.enableVertexAttribArray(o[t]),a.numSupportedMorphTargets++);a.uniformsList=[];for(h in a.uniforms)a.uniformsList.push([a.uniforms[h],h])};this.setFaceCulling=function(a,b){a?(!b|| g.enableVertexAttribArray(o.skinVertexB),g.enableVertexAttribArray(o.skinIndex),g.enableVertexAttribArray(o.skinWeight));if(a.attributes)for(i in a.attributes)void 0!==o[i]&&0<=o[i]&&g.enableVertexAttribArray(o[i]);if(a.morphTargets)for(i=a.numSupportedMorphTargets=0;i<this.maxMorphTargets;i++)t="morphTarget"+i,0<=o[t]&&(g.enableVertexAttribArray(o[t]),a.numSupportedMorphTargets++);a.uniformsList=[];for(h in a.uniforms)a.uniformsList.push([a.uniforms[h],h])};this.setFaceCulling=function(a,b){a?(!b||
"ccw"===b?g.frontFace(g.CCW):g.frontFace(g.CW),"back"===a?g.cullFace(g.BACK):"front"===a?g.cullFace(g.FRONT):g.cullFace(g.FRONT_AND_BACK),g.enable(g.CULL_FACE)):g.disable(g.CULL_FACE)};this.setObjectFaces=function(a){if(va!==a.doubleSided)a.doubleSided?g.disable(g.CULL_FACE):g.enable(g.CULL_FACE),va=a.doubleSided;if(ba!==a.flipSided)a.flipSided?g.frontFace(g.CW):g.frontFace(g.CCW),ba=a.flipSided};this.setDepthTest=function(a){Ca!==a&&(a?g.enable(g.DEPTH_TEST):g.disable(g.DEPTH_TEST),Ca=a)};this.setDepthWrite= "ccw"===b?g.frontFace(g.CCW):g.frontFace(g.CW),"back"===a?g.cullFace(g.BACK):"front"===a?g.cullFace(g.FRONT):g.cullFace(g.FRONT_AND_BACK),g.enable(g.CULL_FACE)):g.disable(g.CULL_FACE)};this.setObjectFaces=function(a){if(ca!==a.doubleSided)a.doubleSided?g.disable(g.CULL_FACE):g.enable(g.CULL_FACE),ca=a.doubleSided;if(Ea!==a.flipSided)a.flipSided?g.frontFace(g.CW):g.frontFace(g.CCW),Ea=a.flipSided};this.setDepthTest=function(a){Na!==a&&(a?g.enable(g.DEPTH_TEST):g.disable(g.DEPTH_TEST),Na=a)};this.setDepthWrite=
function(a){Ma!==a&&(g.depthMask(a),Ma=a)};this.setBlending=function(a){if(a!==ya){switch(a){case THREE.AdditiveBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.SRC_ALPHA,g.ONE);break;case THREE.SubtractiveBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.ZERO,g.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.ZERO,g.SRC_COLOR);break;default:g.blendEquationSeparate(g.FUNC_ADD,g.FUNC_ADD),g.blendFuncSeparate(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA,g.ONE, function(a){Oa!==a&&(g.depthMask(a),Oa=a)};this.setBlending=function(a){if(a!==Ba){switch(a){case THREE.AdditiveBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.SRC_ALPHA,g.ONE);break;case THREE.SubtractiveBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.ZERO,g.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:g.blendEquation(g.FUNC_ADD);g.blendFunc(g.ZERO,g.SRC_COLOR);break;default:g.blendEquationSeparate(g.FUNC_ADD,g.FUNC_ADD),g.blendFuncSeparate(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA,g.ONE,
g.ONE_MINUS_SRC_ALPHA)}ya=a}};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=g.createTexture(),D.info.memory.textures++;g.activeTexture(g.TEXTURE0+b);g.bindTexture(g.TEXTURE_2D,a.__webglTexture);var c=a.image,d=0===(c.width&c.width-1)&&0===(c.height&c.height-1),e=B(a.format),f=B(a.type);J(g.TEXTURE_2D,a,d);a instanceof THREE.DataTexture?g.texImage2D(g.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data):g.texImage2D(g.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&& g.ONE_MINUS_SRC_ALPHA)}Ba=a}};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=g.createTexture(),D.info.memory.textures++;g.activeTexture(g.TEXTURE0+b);g.bindTexture(g.TEXTURE_2D,a.__webglTexture);var c=a.image,d=0===(c.width&c.width-1)&&0===(c.height&c.height-1),e=B(a.format),f=B(a.type);J(g.TEXTURE_2D,a,d);a instanceof THREE.DataTexture?g.texImage2D(g.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data):g.texImage2D(g.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&
d&&g.generateMipmap(g.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else g.activeTexture(g.TEXTURE0+b),g.bindTexture(g.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(void 0===a.depthBuffer)a.depthBuffer=!0;if(void 0===a.stencilBuffer)a.stencilBuffer=!0;a.__webglTexture=g.createTexture();var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=B(a.format),e=B(a.type);if(b){a.__webglFramebuffer= d&&g.generateMipmap(g.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else g.activeTexture(g.TEXTURE0+b),g.bindTexture(g.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(void 0===a.depthBuffer)a.depthBuffer=!0;if(void 0===a.stencilBuffer)a.stencilBuffer=!0;a.__webglTexture=g.createTexture();var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=B(a.format),e=B(a.type);if(b){a.__webglFramebuffer=
[];a.__webglRenderbuffer=[];g.bindTexture(g.TEXTURE_CUBE_MAP,a.__webglTexture);J(g.TEXTURE_CUBE_MAP,a,c);for(c=0;6>c;c++){a.__webglFramebuffer[c]=g.createFramebuffer();a.__webglRenderbuffer[c]=g.createRenderbuffer();g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,e,null);var f=a,h=g.TEXTURE_CUBE_MAP_POSITIVE_X+c;g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer[c]);g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,h,f.__webglTexture,0);K(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer= [];a.__webglRenderbuffer=[];g.bindTexture(g.TEXTURE_CUBE_MAP,a.__webglTexture);J(g.TEXTURE_CUBE_MAP,a,c);for(c=0;6>c;c++){a.__webglFramebuffer[c]=g.createFramebuffer();a.__webglRenderbuffer[c]=g.createRenderbuffer();g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,e,null);var f=a,h=g.TEXTURE_CUBE_MAP_POSITIVE_X+c;g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer[c]);g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,h,f.__webglTexture,0);K(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer=
g.createFramebuffer(),a.__webglRenderbuffer=g.createRenderbuffer(),g.bindTexture(g.TEXTURE_2D,a.__webglTexture),J(g.TEXTURE_2D,a,c),g.texImage2D(g.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=g.TEXTURE_2D,g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer),g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,d,a.__webglTexture,0),K(a.__webglRenderbuffer,a);b?g.bindTexture(g.TEXTURE_CUBE_MAP,null):g.bindTexture(g.TEXTURE_2D,null);g.bindRenderbuffer(g.RENDERBUFFER,null);g.bindFramebuffer(g.FRAMEBUFFER, g.createFramebuffer(),a.__webglRenderbuffer=g.createRenderbuffer(),g.bindTexture(g.TEXTURE_2D,a.__webglTexture),J(g.TEXTURE_2D,a,c),g.texImage2D(g.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=g.TEXTURE_2D,g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer),g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,d,a.__webglTexture,0),K(a.__webglRenderbuffer,a);b?g.bindTexture(g.TEXTURE_CUBE_MAP,null):g.bindTexture(g.TEXTURE_2D,null);g.bindRenderbuffer(g.RENDERBUFFER,null);g.bindFramebuffer(g.FRAMEBUFFER,
null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Pb,a=Ab,e=zb,c=Fb);b!==oa&&(g.bindFramebuffer(g.FRAMEBUFFER,b),g.viewport(e,c,d,a),oa=b);bc=d;cc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)}; null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Ab,a=Gb,e=Fb,c=Pb);b!==pa&&(g.bindFramebuffer(g.FRAMEBUFFER,b),g.viewport(e,c,d,a),pa=b);cc=d;dc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:THREE.RGBAFormat;this.type=void 0!==c.type?c.type: THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:THREE.RGBAFormat;this.type=void 0!==c.type?c.type:
THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0}; THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0};
THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;return a};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0}; THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;return a};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};
...@@ -359,10 +359,10 @@ THREE.LensFlarePlugin=function(){function a(a){var c=b.createProgram(),d=b.creat ...@@ -359,10 +359,10 @@ THREE.LensFlarePlugin=function(){function a(a){var c=b.createProgram(),d=b.creat
b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);b.bindTexture(b.TEXTURE_2D,k);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,16,16,0,b.RGBA,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST); b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);b.bindTexture(b.TEXTURE_2D,k);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,16,16,0,b.RGBA,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);
b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);0>=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(l=!1,j=a(THREE.ShaderFlares.lensFlare)):(l=!0,j=a(THREE.ShaderFlares.lensFlareVertexTexture));n={};p={};n.vertex=b.getAttribLocation(j,"position");n.uv=b.getAttribLocation(j,"uv");p.renderType=b.getUniformLocation(j,"renderType");p.map=b.getUniformLocation(j,"map");p.occlusionMap=b.getUniformLocation(j,"occlusionMap");p.opacity=b.getUniformLocation(j,"opacity");p.color=b.getUniformLocation(j, b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);0>=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(l=!1,j=a(THREE.ShaderFlares.lensFlare)):(l=!0,j=a(THREE.ShaderFlares.lensFlareVertexTexture));n={};p={};n.vertex=b.getAttribLocation(j,"position");n.uv=b.getAttribLocation(j,"uv");p.renderType=b.getUniformLocation(j,"renderType");p.map=b.getUniformLocation(j,"map");p.occlusionMap=b.getUniformLocation(j,"occlusionMap");p.opacity=b.getUniformLocation(j,"opacity");p.color=b.getUniformLocation(j,
"color");p.scale=b.getUniformLocation(j,"scale");p.rotation=b.getUniformLocation(j,"rotation");p.screenPosition=b.getUniformLocation(j,"screenPosition");o=!1};this.render=function(a,d,e,z){var a=a.__webglFlares,y=a.length;if(y){var J=new THREE.Vector3,K=z/e,u=0.5*e,B=0.5*z,H=16/z,A=new THREE.Vector2(H*K,H),M=new THREE.Vector3(1,1,0),N=new THREE.Vector2(1,1),I=p,H=n;b.useProgram(j);o||(b.enableVertexAttribArray(n.vertex),b.enableVertexAttribArray(n.uv),o=!0);b.uniform1i(I.occlusionMap,0);b.uniform1i(I.map, "color");p.scale=b.getUniformLocation(j,"scale");p.rotation=b.getUniformLocation(j,"rotation");p.screenPosition=b.getUniformLocation(j,"screenPosition");o=!1};this.render=function(a,d,e,z){var a=a.__webglFlares,y=a.length;if(y){var J=new THREE.Vector3,K=z/e,u=0.5*e,B=0.5*z,H=16/z,A=new THREE.Vector2(H*K,H),M=new THREE.Vector3(1,1,0),N=new THREE.Vector2(1,1),I=p,H=n;b.useProgram(j);o||(b.enableVertexAttribArray(n.vertex),b.enableVertexAttribArray(n.uv),o=!0);b.uniform1i(I.occlusionMap,0);b.uniform1i(I.map,
1);b.bindBuffer(b.ARRAY_BUFFER,f);b.vertexAttribPointer(H.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(H.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var ia,ua,S,$,Y;for(ia=0;ia<y;ia++)if(H=16/z,A.set(H*K,H),$=a[ia],J.set($.matrixWorld.n14,$.matrixWorld.n24,$.matrixWorld.n34),d.matrixWorldInverse.multiplyVector3(J),d.projectionMatrix.multiplyVector3(J),M.copy(J),N.x=M.x*u+u,N.y=M.y*B+B,l||0<N.x&&N.x<e&&0<N.y&&N.y<z){b.activeTexture(b.TEXTURE1); 1);b.bindBuffer(b.ARRAY_BUFFER,f);b.vertexAttribPointer(H.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(H.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var S,ua,ka,$,Z;for(S=0;S<y;S++)if(H=16/z,A.set(H*K,H),$=a[S],J.set($.matrixWorld.n14,$.matrixWorld.n24,$.matrixWorld.n34),d.matrixWorldInverse.multiplyVector3(J),d.projectionMatrix.multiplyVector3(J),M.copy(J),N.x=M.x*u+u,N.y=M.y*B+B,l||0<N.x&&N.x<e&&0<N.y&&N.y<z){b.activeTexture(b.TEXTURE1);
b.bindTexture(b.TEXTURE_2D,i);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,N.x-8,N.y-8,16,16,0);b.uniform1i(I.renderType,0);b.uniform2f(I.scale,A.x,A.y);b.uniform3f(I.screenPosition,M.x,M.y,M.z);b.disable(b.BLEND);b.enable(b.DEPTH_TEST);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);b.activeTexture(b.TEXTURE0);b.bindTexture(b.TEXTURE_2D,k);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGBA,N.x-8,N.y-8,16,16,0);b.uniform1i(I.renderType,1);b.disable(b.DEPTH_TEST);b.activeTexture(b.TEXTURE1);b.bindTexture(b.TEXTURE_2D, b.bindTexture(b.TEXTURE_2D,i);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,N.x-8,N.y-8,16,16,0);b.uniform1i(I.renderType,0);b.uniform2f(I.scale,A.x,A.y);b.uniform3f(I.screenPosition,M.x,M.y,M.z);b.disable(b.BLEND);b.enable(b.DEPTH_TEST);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);b.activeTexture(b.TEXTURE0);b.bindTexture(b.TEXTURE_2D,k);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGBA,N.x-8,N.y-8,16,16,0);b.uniform1i(I.renderType,1);b.disable(b.DEPTH_TEST);b.activeTexture(b.TEXTURE1);b.bindTexture(b.TEXTURE_2D,
i);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);$.positionScreen.copy(M);$.customUpdateCallback?$.customUpdateCallback($):$.updateLensFlares();b.uniform1i(I.renderType,2);b.enable(b.BLEND);for(ua=0,S=$.lensFlares.length;ua<S;ua++)if(Y=$.lensFlares[ua],0.0010<Y.opacity&&0.0010<Y.scale)M.x=Y.x,M.y=Y.y,M.z=Y.z,H=Y.size*Y.scale/z,A.x=H*K,A.y=H,b.uniform3f(I.screenPosition,M.x,M.y,M.z),b.uniform2f(I.scale,A.x,A.y),b.uniform1f(I.rotation,Y.rotation),b.uniform1f(I.opacity,Y.opacity),b.uniform3f(I.color, i);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);$.positionScreen.copy(M);$.customUpdateCallback?$.customUpdateCallback($):$.updateLensFlares();b.uniform1i(I.renderType,2);b.enable(b.BLEND);for(ua=0,ka=$.lensFlares.length;ua<ka;ua++)if(Z=$.lensFlares[ua],0.0010<Z.opacity&&0.0010<Z.scale)M.x=Z.x,M.y=Z.y,M.z=Z.z,H=Z.size*Z.scale/z,A.x=H*K,A.y=H,b.uniform3f(I.screenPosition,M.x,M.y,M.z),b.uniform2f(I.scale,A.x,A.y),b.uniform1f(I.rotation,Z.rotation),b.uniform1f(I.opacity,Z.opacity),b.uniform3f(I.color,
Y.color.r,Y.color.g,Y.color.b),c.setBlending(Y.blending),c.setTexture(Y.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0)}b.enable(b.CULL_FACE);b.enable(b.DEPTH_TEST);b.depthMask(!0)}}}; Z.color.r,Z.color.g,Z.color.b),c.setBlending(Z.blending),c.setTexture(Z.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0)}b.enable(b.CULL_FACE);b.enable(b.DEPTH_TEST);b.depthMask(!0)}}};
THREE.ShadowMapPlugin=function(){var a,b,c,d,e=new THREE.Frustum,f=new THREE.Matrix4;this.init=function(e){a=e.context;b=e;var e=THREE.ShaderLib.depthRGBA,f=THREE.UniformsUtils.clone(e.uniforms);c=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f});d=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f,morphTargets:!0});c._shadowPass=!0;d._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&& THREE.ShadowMapPlugin=function(){var a,b,c,d,e=new THREE.Frustum,f=new THREE.Matrix4;this.init=function(e){a=e.context;b=e;var e=THREE.ShaderLib.depthRGBA,f=THREE.UniformsUtils.clone(e.uniforms);c=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f});d=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f,morphTargets:!0});c._shadowPass=!0;d._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&&
this.update(a,c)};this.update=function(h){var i,k,l,j,n,p,o,m,r,t=h.lights;a.clearColor(1,1,1,1);a.disable(a.BLEND);b.shadowMapCullFrontFaces&&a.cullFace(a.FRONT);b.setDepthTest(!0);for(i=0,k=t.length;i<k;i++)if(m=t[i],m.castShadow){if(!m.shadowMap)m.shadowMap=new THREE.WebGLRenderTarget(m.shadowMapWidth,m.shadowMapHeight,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat}),m.shadowMapSize=new THREE.Vector2(m.shadowMapWidth,m.shadowMapHeight),m.shadowMatrix=new THREE.Matrix4; this.update(a,c)};this.update=function(h){var i,k,l,j,n,p,o,m,r,t=h.lights;a.clearColor(1,1,1,1);a.disable(a.BLEND);b.shadowMapCullFrontFaces&&a.cullFace(a.FRONT);b.setDepthTest(!0);for(i=0,k=t.length;i<k;i++)if(m=t[i],m.castShadow){if(!m.shadowMap)m.shadowMap=new THREE.WebGLRenderTarget(m.shadowMapWidth,m.shadowMapHeight,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat}),m.shadowMapSize=new THREE.Vector2(m.shadowMapWidth,m.shadowMapHeight),m.shadowMatrix=new THREE.Matrix4;
if(!m.shadowCamera){if(m instanceof THREE.SpotLight)m.shadowCamera=new THREE.PerspectiveCamera(m.shadowCameraFov,m.shadowMapWidth/m.shadowMapHeight,m.shadowCameraNear,m.shadowCameraFar);else if(m instanceof THREE.DirectionalLight)m.shadowCamera=new THREE.OrthographicCamera(m.shadowCameraLeft,m.shadowCameraRight,m.shadowCameraTop,m.shadowCameraBottom,m.shadowCameraNear,m.shadowCameraFar);else{console.error("Unsupported light type for shadow");continue}h.add(m.shadowCamera);b.autoUpdateScene&&h.updateMatrixWorld()}if(m.shadowCameraVisible&& if(!m.shadowCamera){if(m instanceof THREE.SpotLight)m.shadowCamera=new THREE.PerspectiveCamera(m.shadowCameraFov,m.shadowMapWidth/m.shadowMapHeight,m.shadowCameraNear,m.shadowCameraFar);else if(m instanceof THREE.DirectionalLight)m.shadowCamera=new THREE.OrthographicCamera(m.shadowCameraLeft,m.shadowCameraRight,m.shadowCameraTop,m.shadowCameraBottom,m.shadowCameraNear,m.shadowCameraFar);else{console.error("Unsupported light type for shadow");continue}h.add(m.shadowCamera);b.autoUpdateScene&&h.updateMatrixWorld()}if(m.shadowCameraVisible&&
......
...@@ -108,6 +108,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -108,6 +108,7 @@ THREE.WebGLRenderer = function ( parameters ) {
_currentFramebuffer = null, _currentFramebuffer = null,
_currentMaterialId = -1, _currentMaterialId = -1,
_currentGeometryGroupHash = null, _currentGeometryGroupHash = null,
_currentCamera = null,
_geometryGroupCounter = 0, _geometryGroupCounter = 0,
// GL state cache // GL state cache
...@@ -3291,6 +3292,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3291,6 +3292,7 @@ THREE.WebGLRenderer = function ( parameters ) {
for ( var i = 0, il = plugins.length; i < il; i ++ ) { for ( var i = 0, il = plugins.length; i < il; i ++ ) {
_currentProgram = null; _currentProgram = null;
_currentCamera = null;
_oldBlending = -1; _oldBlending = -1;
_oldDepthTest = -1; _oldDepthTest = -1;
_oldDepthWrite = -1; _oldDepthWrite = -1;
...@@ -3300,6 +3302,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3300,6 +3302,7 @@ THREE.WebGLRenderer = function ( parameters ) {
plugins[ i ].render( scene, camera, _currentWidth, _currentHeight ); plugins[ i ].render( scene, camera, _currentWidth, _currentHeight );
_currentProgram = null; _currentProgram = null;
_currentCamera = null;
_oldBlending = -1; _oldBlending = -1;
_oldDepthTest = -1; _oldDepthTest = -1;
_oldDepthWrite = -1; _oldDepthWrite = -1;
...@@ -4169,10 +4172,16 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -4169,10 +4172,16 @@ THREE.WebGLRenderer = function ( parameters ) {
} }
if ( refreshMaterial ) { if ( refreshMaterial || camera !== _currentCamera ) {
_gl.uniformMatrix4fv( p_uniforms.projectionMatrix, false, camera._projectionMatrixArray ); _gl.uniformMatrix4fv( p_uniforms.projectionMatrix, false, camera._projectionMatrixArray );
if ( camera !== _currentCamera ) _currentCamera = camera;
}
if ( refreshMaterial ) {
// refresh uniforms common to several materials // refresh uniforms common to several materials
if ( fog && material.fog ) { if ( fog && material.fog ) {
...@@ -4245,7 +4254,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -4245,7 +4254,7 @@ THREE.WebGLRenderer = function ( parameters ) {
material instanceof THREE.MeshPhongMaterial || material instanceof THREE.MeshPhongMaterial ||
material.envMap ) { material.envMap ) {
if( p_uniforms.cameraPosition !== null ) { if ( p_uniforms.cameraPosition !== null ) {
_gl.uniform3f( p_uniforms.cameraPosition, camera.position.x, camera.position.y, camera.position.z ); _gl.uniform3f( p_uniforms.cameraPosition, camera.position.x, camera.position.y, camera.position.z );
...@@ -4258,7 +4267,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -4258,7 +4267,7 @@ THREE.WebGLRenderer = function ( parameters ) {
material instanceof THREE.ShaderMaterial || material instanceof THREE.ShaderMaterial ||
material.skinning ) { material.skinning ) {
if( p_uniforms.viewMatrix !== null ) { if ( p_uniforms.viewMatrix !== null ) {
_gl.uniformMatrix4fv( p_uniforms.viewMatrix, false, camera._viewMatrixArray ); _gl.uniformMatrix4fv( p_uniforms.viewMatrix, false, camera._viewMatrixArray );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册