|
@@ -96,7 +96,7 @@ f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-l,b[6]=n+a*c,b[10]=f*g):"ZXY"===a.order?(
|
|
|
g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+n,b[5]=f*h,b[9]=k*e-l,b[2]=l*e-k,b[6]=c*h,b[10]=n*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){console.warn("DEPRECATED: Matrix4's .setRotationFromQuaternion() has been deprecated in favor of makeRotationFromQuaternion. Please update your code.");return this.makeRotationFromQuaternion(a)},makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,k=e+e;a=c*g;var l=c*
|
|
|
h,c=c*k,n=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(n+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+n);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f){var g=this.elements;c.subVectors(d,e).normalize();0===c.length()&&(c.z=1);a.crossVectors(f,c).normalize();0===a.length()&&(c.x+=1E-4,a.crossVectors(f,c).normalize());b.crossVectors(c,a);g[0]=
|
|
|
a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],k=c[12],l=c[1],n=c[5],q=c[9],s=c[13],u=c[2],t=c[6],p=c[10],v=c[14],w=c[3],r=c[7],x=c[11],
|
|
|
-c=c[15],z=d[0],F=d[4],P=d[8],C=d[12],B=d[1],A=d[5],I=d[9],H=d[13],N=d[2],y=d[6],K=d[10],E=d[14],D=d[3],G=d[7],T=d[11],d=d[15];e[0]=f*z+g*B+h*N+k*D;e[4]=f*F+g*A+h*y+k*G;e[8]=f*P+g*I+h*K+k*T;e[12]=f*C+g*H+h*E+k*d;e[1]=l*z+n*B+q*N+s*D;e[5]=l*F+n*A+q*y+s*G;e[9]=l*P+n*I+q*K+s*T;e[13]=l*C+n*H+q*E+s*d;e[2]=u*z+t*B+p*N+v*D;e[6]=u*F+t*A+p*y+v*G;e[10]=u*P+t*I+p*K+v*T;e[14]=u*C+t*H+p*E+v*d;e[3]=w*z+r*B+x*N+c*D;e[7]=w*F+r*A+x*y+c*G;e[11]=w*P+r*I+x*K+c*T;e[15]=w*C+r*H+x*E+c*d;return this},multiplyToArray:function(a,
|
|
|
+c=c[15],z=d[0],F=d[4],P=d[8],C=d[12],B=d[1],A=d[5],I=d[9],H=d[13],N=d[2],y=d[6],K=d[10],D=d[14],E=d[3],G=d[7],T=d[11],d=d[15];e[0]=f*z+g*B+h*N+k*E;e[4]=f*F+g*A+h*y+k*G;e[8]=f*P+g*I+h*K+k*T;e[12]=f*C+g*H+h*D+k*d;e[1]=l*z+n*B+q*N+s*E;e[5]=l*F+n*A+q*y+s*G;e[9]=l*P+n*I+q*K+s*T;e[13]=l*C+n*H+q*D+s*d;e[2]=u*z+t*B+p*N+v*E;e[6]=u*F+t*A+p*y+v*G;e[10]=u*P+t*I+p*K+v*T;e[14]=u*C+t*H+p*D+v*d;e[3]=w*z+r*B+x*N+c*E;e[7]=w*F+r*A+x*y+c*G;e[11]=w*P+r*I+x*K+c*T;e[15]=w*C+r*H+x*D+c*d;return this},multiplyToArray:function(a,
|
|
|
b,c){var d=this.elements;this.multiplyMatrices(a,b);c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[5]=d[5];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12];c[13]=d[13];c[14]=d[14];c[15]=d[15];return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},multiplyVector3:function(a){console.warn("DEPRECATED: Matrix4's .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.");
|
|
|
return a.applyProjection(this)},multiplyVector4:function(a){console.warn("DEPRECATED: Matrix4's .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(){var a=new THREE.Vector3;return function(b){for(var c=0,d=b.length;c<d;c+=3)a.x=b[c],a.y=b[c+1],a.z=b[c+2],a.applyProjection(this),b[c]=a.x,b[c+1]=a.y,b[c+2]=a.z;return b}}(),rotateAxis:function(a){console.warn("DEPRECATED: Matrix4's .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");
|
|
|
a.transformDirection(this)},crossVector:function(a){console.warn("DEPRECATED: Matrix4's .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],n=a[6],q=a[10],s=a[14];return a[3]*(+e*h*n-d*k*n-e*g*q+c*k*q+d*g*s-c*h*s)+a[7]*(+b*h*s-b*k*q+e*f*q-d*f*s+d*k*l-e*h*l)+a[11]*(+b*k*n-b*g*s-e*f*n+c*f*s+e*g*l-c*k*l)+a[15]*(-d*g*l-b*h*n+b*g*q+d*f*n-c*f*
|
|
@@ -149,8 +149,8 @@ b)}}}}()};(function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c);thi
|
|
|
a.LOD)d.setFromMatrixPosition(f.matrixWorld),t=n.ray.origin.distanceTo(d),l(f.getObjectForDistance(t),n,u);else if(f instanceof a.Mesh){var p=f.geometry;null===p.boundingSphere&&p.computeBoundingSphere();b.copy(p.boundingSphere);b.applyMatrix4(f.matrixWorld);if(!1===n.ray.isIntersectionSphere(b))return u;e.getInverse(f.matrixWorld);c.copy(n.ray).applyMatrix4(e);if(null!==p.boundingBox&&!1===c.isIntersectionBox(p.boundingBox))return u;if(p instanceof a.BufferGeometry){var v=f.material;if(void 0===
|
|
|
v)return u;var w=p.attributes,r,x,z=n.precision;if(void 0!==w.index)for(var F=p.offsets,P=w.index.array,C=w.position.array,B=0,A=F.length;B<A;++B)for(var w=F[B].start,I=F[B].index,p=w,H=w+F[B].count;p<H;p+=3){w=I+P[p];r=I+P[p+1];x=I+P[p+2];g.set(C[3*w],C[3*w+1],C[3*w+2]);h.set(C[3*r],C[3*r+1],C[3*r+2]);k.set(C[3*x],C[3*x+1],C[3*x+2]);var N=v.side===a.BackSide?c.intersectTriangle(k,h,g,!0):c.intersectTriangle(g,h,k,v.side!==a.DoubleSide);null!==N&&(N.applyMatrix4(f.matrixWorld),t=n.ray.origin.distanceTo(N),
|
|
|
t<z||t<n.near||t>n.far||u.push({distance:t,point:N,indices:[w,r,x],face:null,faceIndex:null,object:f}))}else for(C=w.position.array,p=0,H=w.position.array.length;p<H;p+=3)w=p,r=p+1,x=p+2,g.set(C[3*w],C[3*w+1],C[3*w+2]),h.set(C[3*r],C[3*r+1],C[3*r+2]),k.set(C[3*x],C[3*x+1],C[3*x+2]),N=v.side===a.BackSide?c.intersectTriangle(k,h,g,!0):c.intersectTriangle(g,h,k,v.side!==a.DoubleSide),null!==N&&(N.applyMatrix4(f.matrixWorld),t=n.ray.origin.distanceTo(N),t<z||t<n.near||t>n.far||u.push({distance:t,point:N,
|
|
|
-indices:[w,r,x],face:null,faceIndex:null,object:f}))}else if(p instanceof a.Geometry)for(P=f.material instanceof a.MeshFaceMaterial,C=!0===P?f.material.materials:null,z=n.precision,F=p.vertices,B=0,A=p.faces.length;B<A;B++)if(I=p.faces[B],v=!0===P?C[I.materialIndex]:f.material,void 0!==v){w=F[I.a];r=F[I.b];x=F[I.c];if(!0===v.morphTargets){t=p.morphTargets;N=f.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var H=0,y=t.length;H<y;H++){var K=N[H];if(0!==K){var E=t[H].vertices;g.x+=
|
|
|
-(E[I.a].x-w.x)*K;g.y+=(E[I.a].y-w.y)*K;g.z+=(E[I.a].z-w.z)*K;h.x+=(E[I.b].x-r.x)*K;h.y+=(E[I.b].y-r.y)*K;h.z+=(E[I.b].z-r.z)*K;k.x+=(E[I.c].x-x.x)*K;k.y+=(E[I.c].y-x.y)*K;k.z+=(E[I.c].z-x.z)*K}}g.add(w);h.add(r);k.add(x);w=g;r=h;x=k}N=v.side===a.BackSide?c.intersectTriangle(x,r,w,!0):c.intersectTriangle(w,r,x,v.side!==a.DoubleSide);null!==N&&(N.applyMatrix4(f.matrixWorld),t=n.ray.origin.distanceTo(N),t<z||t<n.near||t>n.far||u.push({distance:t,point:N,face:I,faceIndex:B,object:f}))}}else if(f instanceof
|
|
|
+indices:[w,r,x],face:null,faceIndex:null,object:f}))}else if(p instanceof a.Geometry)for(P=f.material instanceof a.MeshFaceMaterial,C=!0===P?f.material.materials:null,z=n.precision,F=p.vertices,B=0,A=p.faces.length;B<A;B++)if(I=p.faces[B],v=!0===P?C[I.materialIndex]:f.material,void 0!==v){w=F[I.a];r=F[I.b];x=F[I.c];if(!0===v.morphTargets){t=p.morphTargets;N=f.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var H=0,y=t.length;H<y;H++){var K=N[H];if(0!==K){var D=t[H].vertices;g.x+=
|
|
|
+(D[I.a].x-w.x)*K;g.y+=(D[I.a].y-w.y)*K;g.z+=(D[I.a].z-w.z)*K;h.x+=(D[I.b].x-r.x)*K;h.y+=(D[I.b].y-r.y)*K;h.z+=(D[I.b].z-r.z)*K;k.x+=(D[I.c].x-x.x)*K;k.y+=(D[I.c].y-x.y)*K;k.z+=(D[I.c].z-x.z)*K}}g.add(w);h.add(r);k.add(x);w=g;r=h;x=k}N=v.side===a.BackSide?c.intersectTriangle(x,r,w,!0):c.intersectTriangle(w,r,x,v.side!==a.DoubleSide);null!==N&&(N.applyMatrix4(f.matrixWorld),t=n.ray.origin.distanceTo(N),t<z||t<n.near||t>n.far||u.push({distance:t,point:N,face:I,faceIndex:B,object:f}))}}else if(f instanceof
|
|
|
a.Line){z=n.linePrecision;v=z*z;p=f.geometry;null===p.boundingSphere&&p.computeBoundingSphere();b.copy(p.boundingSphere);b.applyMatrix4(f.matrixWorld);if(!1===n.ray.isIntersectionSphere(b))return u;e.getInverse(f.matrixWorld);c.copy(n.ray).applyMatrix4(e);if(p instanceof a.Geometry)for(F=p.vertices,z=F.length,w=new a.Vector3,r=new a.Vector3,x=f.type===a.LineStrip?1:2,p=0;p<z-1;p+=x)c.distanceSqToSegment(F[p],F[p+1],r,w)>v||(t=c.origin.distanceTo(r),t<n.near||t>n.far||u.push({distance:t,point:w.clone().applyMatrix4(f.matrixWorld),
|
|
|
face:null,faceIndex:null,object:f}))}},n=function(a,b,c){a=a.getDescendants();for(var d=0,e=a.length;d<e;d++)l(a[d],b,c)};a.Raycaster.prototype.precision=1E-4;a.Raycaster.prototype.linePrecision=1;a.Raycaster.prototype.set=function(a,b){this.ray.set(a,b)};a.Raycaster.prototype.intersectObject=function(a,b){var c=[];!0===b&&n(a,this,c);l(a,this,c);c.sort(f);return c};a.Raycaster.prototype.intersectObjects=function(a,b){for(var c=[],d=0,e=a.length;d<e;d++)l(a[d],this,c),!0===b&&n(a[d],this,c);c.sort(f);
|
|
|
return c}})(THREE);THREE.Object3D=function(){this.id=THREE.Object3DIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.parent=void 0;this.children=[];this.up=new THREE.Vector3(0,1,0);this.position=new THREE.Vector3;this._rotation=new THREE.Euler;this._quaternion=new THREE.Quaternion;this.scale=new THREE.Vector3(1,1,1);this._rotation._quaternion=this.quaternion;this._quaternion._euler=this.rotation;this.renderDepth=null;this.rotationAutoUpdate=!0;this.matrix=new THREE.Matrix4;this.matrixWorld=new THREE.Matrix4;
|
|
@@ -166,21 +166,21 @@ b){for(var c=0,d=this.children.length;c<d;c++){var e=this.children[c];if(e.name=
|
|
|
this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===a)void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)},clone:function(a,b){void 0===a&&(a=new THREE.Object3D);void 0===b&&(b=!0);
|
|
|
a.name=this.name;a.up.copy(this.up);a.position.copy(this.position);a.quaternion.copy(this.quaternion);a.scale.copy(this.scale);a.renderDepth=this.renderDepth;a.rotationAutoUpdate=this.rotationAutoUpdate;a.matrix.copy(this.matrix);a.matrixWorld.copy(this.matrixWorld);a.matrixAutoUpdate=this.matrixAutoUpdate;a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.visible=this.visible;a.castShadow=this.castShadow;a.receiveShadow=this.receiveShadow;a.frustumCulled=this.frustumCulled;a.userData=JSON.parse(JSON.stringify(this.userData));
|
|
|
if(!0===b)for(var c=0;c<this.children.length;c++)a.add(this.children[c].clone());return a}};THREE.EventDispatcher.prototype.apply(THREE.Object3D.prototype);THREE.Object3DIdCount=0;THREE.Projector=function(){function a(){if(n===s){var a=new THREE.RenderableVertex;q.push(a);s++;n++;return a}return q[n++]}function b(){if(t===v){var a=new THREE.RenderableFace;p.push(a);v++;t++;return a}return p[t++]}function c(){if(r===z){var a=new THREE.RenderableLine;x.push(a);z++;r++;return a}return x[r++]}function d(a,b){return a.z!==b.z?b.z-a.z:a.id!==b.id?a.id-b.id:0}function e(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=f&&0<=g&&0<=h)return!0;if(0>e&&0>f||0>g&&
|
|
|
-0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d<c)return!1;a.lerp(b,c);b.lerp(a,1-d);return!0}var f,g,h=[],k=0,l,n,q=[],s=0,u,t,p=[],v=0,w,r,x=[],z=0,F,P,C=[],B=0,A={objects:[],lights:[],elements:[]},I=new THREE.Vector3,H=new THREE.Vector3,N=new THREE.Vector3,y=new THREE.Vector3,K=new THREE.Vector4,E=new THREE.Box3(new THREE.Vector3(-1,-1,-1),new THREE.Vector3(1,1,1)),D=new THREE.Box3,G=Array(3),T=new THREE.Matrix4,Y=
|
|
|
+0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d<c)return!1;a.lerp(b,c);b.lerp(a,1-d);return!0}var f,g,h=[],k=0,l,n,q=[],s=0,u,t,p=[],v=0,w,r,x=[],z=0,F,P,C=[],B=0,A={objects:[],lights:[],elements:[]},I=new THREE.Vector3,H=new THREE.Vector3,N=new THREE.Vector3,y=new THREE.Vector3,K=new THREE.Vector4,D=new THREE.Box3(new THREE.Vector3(-1,-1,-1),new THREE.Vector3(1,1,1)),E=new THREE.Box3,G=Array(3),T=new THREE.Matrix4,Y=
|
|
|
new THREE.Matrix4,V,ja=new THREE.Matrix4,R=new THREE.Matrix3,pa=new THREE.Frustum,L=new THREE.Vector4,ka=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);Y.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);return a.applyProjection(Y)};this.unprojectVector=function(){var a=new THREE.Matrix4;return function(b,c){a.getInverse(c.projectionMatrix);Y.multiplyMatrices(c.matrixWorld,a);return b.applyProjection(Y)}}();this.pickingRay=function(a,b){a.z=
|
|
|
-1;var c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.sub(a).normalize();return new THREE.Raycaster(a,c)};var Q=function(a){if(!1!==a.visible){if(a instanceof THREE.Light)A.lights.push(a);else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Sprite)if(!1===a.frustumCulled||!0===pa.intersectsObject(a)){if(g===k){var b=new THREE.RenderableObject;h.push(b);k++;g++;f=b}else f=h[g++];f.id=a.id;f.object=a;null!==a.renderDepth?f.z=a.renderDepth:
|
|
|
(y.setFromMatrixPosition(a.matrixWorld),y.applyProjection(Y),f.z=y.z);A.objects.push(f)}for(var b=0,c=a.children.length;b<c;b++)Q(a.children[b])}},U=new function(){var d=[],e=null,f=new THREE.Matrix3,g=function(a){var b=a.positionWorld,c=a.positionScreen;b.copy(a.position).applyMatrix4(V);c.copy(b).applyMatrix4(Y);b=1/c.w;c.x*=b;c.y*=b;c.z*=b;a.visible=-1<=c.x&&1>=c.x&&-1<=c.y&&1>=c.y&&-1<=c.z&&1>=c.z},h=function(a,b,c){G[0]=a.positionScreen;G[1]=b.positionScreen;G[2]=c.positionScreen;return!0===
|
|
|
-a.visible||!0===b.visible||!0===c.visible||E.isIntersectionBox(D.setFromPoints(G))?0>(c.positionScreen.x-a.positionScreen.x)*(b.positionScreen.y-a.positionScreen.y)-(c.positionScreen.y-a.positionScreen.y)*(b.positionScreen.x-a.positionScreen.x):!1};return{setObject:function(a){e=a;f.getNormalMatrix(e.matrixWorld);d.length=0},projectVertex:g,checkTriangleVisibility:h,pushVertex:function(b,c,d){l=a();l.position.set(b,c,d);g(l)},pushNormal:function(a,b,c){d.push(a,b,c)},pushLine:function(a,b){var d=
|
|
|
+a.visible||!0===b.visible||!0===c.visible||D.isIntersectionBox(E.setFromPoints(G))?0>(c.positionScreen.x-a.positionScreen.x)*(b.positionScreen.y-a.positionScreen.y)-(c.positionScreen.y-a.positionScreen.y)*(b.positionScreen.x-a.positionScreen.x):!1};return{setObject:function(a){e=a;f.getNormalMatrix(e.matrixWorld);d.length=0},projectVertex:g,checkTriangleVisibility:h,pushVertex:function(b,c,d){l=a();l.position.set(b,c,d);g(l)},pushNormal:function(a,b,c){d.push(a,b,c)},pushLine:function(a,b){var d=
|
|
|
q[a],f=q[b];w=c();w.id=e.id;w.v1.copy(d);w.v2.copy(f);w.z=(d.positionScreen.z+f.positionScreen.z)/2;w.material=e.material;A.elements.push(w)},pushTriangle:function(a,c,g){var k=q[a],l=q[c],n=q[g];if(!0===h(k,l,n)){u=b();u.id=e.id;u.v1.copy(k);u.v2.copy(l);u.v3.copy(n);u.z=(k.positionScreen.z+l.positionScreen.z+n.positionScreen.z)/3;for(k=0;3>k;k++)l=3*arguments[k],n=u.vertexNormalsModel[k],n.set(d[l+0],d[l+1],d[l+2]),n.applyMatrix3(f).normalize();u.vertexNormalsLength=3;u.material=e.material;A.elements.push(u)}}}};
|
|
|
-this.projectScene=function(f,h,k,l){var p,s,v,x,y,z,E,G,D;P=r=t=0;A.elements.length=0;!0===f.autoUpdate&&f.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();T.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));Y.multiplyMatrices(h.projectionMatrix,T);pa.setFromMatrix(Y);g=0;A.objects.length=0;A.lights.length=0;Q(f);!0===k&&A.objects.sort(d);f=0;for(k=A.objects.length;f<k;f++)if(p=A.objects[f].object,s=p.geometry,U.setObject(p),V=p.matrixWorld,n=0,p instanceof THREE.Mesh)if(s instanceof
|
|
|
-THREE.BufferGeometry){if(z=s.attributes,x=s.offsets,void 0!==z.position){G=z.position.array;p=0;for(s=G.length;p<s;p+=3)U.pushVertex(G[p],G[p+1],G[p+2]);D=z.normal.array;p=0;for(s=D.length;p<s;p+=3)U.pushNormal(D[p],D[p+1],D[p+2]);if(void 0!==z.index)if(z=z.index.array,0<x.length)for(f=0;f<x.length;f++)for(s=x[f],G=s.index,p=s.start,s=s.start+s.count;p<s;p+=3)U.pushTriangle(z[p]+G,z[p+1]+G,z[p+2]+G);else for(p=0,s=z.length;p<s;p+=3)U.pushTriangle(z[p],z[p+1],z[p+2]);else for(p=0,s=G.length/3;p<s;p+=
|
|
|
-3)U.pushTriangle(p,p+1,p+2)}}else if(s instanceof THREE.Geometry2)for(v=s.vertices,x=p=0,s=v.length;p<s;p+=9,x+=3)U.pushVertex(v[p+0],v[p+1],v[p+2]),U.pushVertex(v[p+3],v[p+4],v[p+5]),U.pushVertex(v[p+6],v[p+7],v[p+8]),U.pushTriangle(x+0,x+1,x+2);else{if(s instanceof THREE.Geometry){v=s.vertices;x=s.faces;z=s.faceVertexUvs;R.getNormalMatrix(V);G=p.material instanceof THREE.MeshFaceMaterial;D=!0===G?p.material:null;for(var la=0,Ta=v.length;la<Ta;la++){var ma=v[la];U.pushVertex(ma.x,ma.y,ma.z)}la=0;
|
|
|
-for(Ta=x.length;la<Ta;la++){v=x[la];var Oa=!0===G?D.materials[v.materialIndex]:p.material;if(void 0!==Oa){E=Oa.side;var ma=q[v.a],Ka=q[v.b],Pa=q[v.c];if(!0===Oa.morphTargets){y=s.morphTargets;var Da=p.morphTargetInfluences,Ca=ma.position,na=Ka.position,Ra=Pa.position;I.set(0,0,0);H.set(0,0,0);N.set(0,0,0);for(var Ea=0,Za=y.length;Ea<Za;Ea++){var La=Da[Ea];if(0!==La){var Fa=y[Ea].vertices;I.x+=(Fa[v.a].x-Ca.x)*La;I.y+=(Fa[v.a].y-Ca.y)*La;I.z+=(Fa[v.a].z-Ca.z)*La;H.x+=(Fa[v.b].x-na.x)*La;H.y+=(Fa[v.b].y-
|
|
|
-na.y)*La;H.z+=(Fa[v.b].z-na.z)*La;N.x+=(Fa[v.c].x-Ra.x)*La;N.y+=(Fa[v.c].y-Ra.y)*La;N.z+=(Fa[v.c].z-Ra.z)*La}}ma.position.add(I);Ka.position.add(H);Pa.position.add(N);U.projectVertex(ma);U.projectVertex(Ka);U.projectVertex(Pa)}Da=U.checkTriangleVisibility(ma,Ka,Pa);if(Da!==(E===THREE.BackSide)){u=b();u.id=p.id;u.v1.copy(ma);u.v2.copy(Ka);u.v3.copy(Pa);u.normalModel.copy(v.normal);!1!==Da||E!==THREE.BackSide&&E!==THREE.DoubleSide||u.normalModel.negate();u.normalModel.applyMatrix3(R).normalize();u.centroidModel.copy(v.centroid).applyMatrix4(V);
|
|
|
-y=v.vertexNormals;Ca=0;for(na=Math.min(y.length,3);Ca<na;Ca++)Ra=u.vertexNormalsModel[Ca],Ra.copy(y[Ca]),!1!==Da||E!==THREE.BackSide&&E!==THREE.DoubleSide||Ra.negate(),Ra.applyMatrix3(R).normalize();u.vertexNormalsLength=y.length;y=0;for(Da=Math.min(z.length,3);y<Da;y++)if(E=z[y][la],void 0!==E)for(Ca=0,na=E.length;Ca<na;Ca++)u.uvs[y][Ca]=E[Ca];u.color=v.color;u.material=Oa;u.z=(ma.positionScreen.z+Ka.positionScreen.z+Pa.positionScreen.z)/3;A.elements.push(u)}}}}}else if(p instanceof THREE.Line)if(s instanceof
|
|
|
-THREE.BufferGeometry){if(z=s.attributes,void 0!==z.position){G=z.position.array;p=0;for(s=G.length;p<s;p+=3)U.pushVertex(G[p],G[p+1],G[p+2]);if(void 0!==z.index)for(z=z.index.array,p=0,s=z.length;p<s;p+=2)U.pushLine(z[p],z[p+1]);else for(p=0,s=G.length/3-1;p<s;p++)U.pushLine(p,p+1)}}else{if(s instanceof THREE.Geometry&&(ja.multiplyMatrices(Y,V),v=p.geometry.vertices,0!==v.length))for(ma=a(),ma.positionScreen.copy(v[0]).applyMatrix4(ja),s=p.type===THREE.LinePieces?2:1,la=1,Ta=v.length;la<Ta;la++)ma=
|
|
|
-a(),ma.positionScreen.copy(v[la]).applyMatrix4(ja),0<(la+1)%s||(Ka=q[n-2],L.copy(ma.positionScreen),ka.copy(Ka.positionScreen),!0===e(L,ka)&&(L.multiplyScalar(1/L.w),ka.multiplyScalar(1/ka.w),w=c(),w.id=p.id,w.v1.positionScreen.copy(L),w.v2.positionScreen.copy(ka),w.z=Math.max(L.z,ka.z),w.material=p.material,p.material.vertexColors===THREE.VertexColors&&(w.vertexColors[0].copy(p.geometry.colors[la]),w.vertexColors[1].copy(p.geometry.colors[la-1])),A.elements.push(w)))}else p instanceof THREE.Sprite&&
|
|
|
-(K.set(V.elements[12],V.elements[13],V.elements[14],1),K.applyMatrix4(Y),s=1/K.w,K.z*=s,-1<=K.z&&1>=K.z&&(P===B?(x=new THREE.RenderableSprite,C.push(x),B++,P++,F=x):F=C[P++],F.id=p.id,F.x=K.x*s,F.y=K.y*s,F.z=K.z,F.object=p,F.rotation=p.rotation,F.scale.x=p.scale.x*Math.abs(F.x-(K.x+h.projectionMatrix.elements[0])/(K.w+h.projectionMatrix.elements[12])),F.scale.y=p.scale.y*Math.abs(F.y-(K.y+h.projectionMatrix.elements[5])/(K.w+h.projectionMatrix.elements[13])),F.material=p.material,A.elements.push(F)));
|
|
|
+this.projectScene=function(f,h,k,l){var p,s,v,x,y,z,D,G,E;P=r=t=0;A.elements.length=0;!0===f.autoUpdate&&f.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();T.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));Y.multiplyMatrices(h.projectionMatrix,T);pa.setFromMatrix(Y);g=0;A.objects.length=0;A.lights.length=0;Q(f);!0===k&&A.objects.sort(d);f=0;for(k=A.objects.length;f<k;f++)if(p=A.objects[f].object,s=p.geometry,U.setObject(p),V=p.matrixWorld,n=0,p instanceof THREE.Mesh)if(s instanceof
|
|
|
+THREE.BufferGeometry){if(z=s.attributes,x=s.offsets,void 0!==z.position){G=z.position.array;p=0;for(s=G.length;p<s;p+=3)U.pushVertex(G[p],G[p+1],G[p+2]);E=z.normal.array;p=0;for(s=E.length;p<s;p+=3)U.pushNormal(E[p],E[p+1],E[p+2]);if(void 0!==z.index)if(z=z.index.array,0<x.length)for(f=0;f<x.length;f++)for(s=x[f],G=s.index,p=s.start,s=s.start+s.count;p<s;p+=3)U.pushTriangle(z[p]+G,z[p+1]+G,z[p+2]+G);else for(p=0,s=z.length;p<s;p+=3)U.pushTriangle(z[p],z[p+1],z[p+2]);else for(p=0,s=G.length/3;p<s;p+=
|
|
|
+3)U.pushTriangle(p,p+1,p+2)}}else if(s instanceof THREE.Geometry2)for(v=s.vertices,x=p=0,s=v.length;p<s;p+=9,x+=3)U.pushVertex(v[p+0],v[p+1],v[p+2]),U.pushVertex(v[p+3],v[p+4],v[p+5]),U.pushVertex(v[p+6],v[p+7],v[p+8]),U.pushTriangle(x+0,x+1,x+2);else{if(s instanceof THREE.Geometry){v=s.vertices;x=s.faces;z=s.faceVertexUvs;R.getNormalMatrix(V);G=p.material instanceof THREE.MeshFaceMaterial;E=!0===G?p.material:null;for(var la=0,Ta=v.length;la<Ta;la++){var ma=v[la];U.pushVertex(ma.x,ma.y,ma.z)}la=0;
|
|
|
+for(Ta=x.length;la<Ta;la++){v=x[la];var Oa=!0===G?E.materials[v.materialIndex]:p.material;if(void 0!==Oa){D=Oa.side;var ma=q[v.a],Ka=q[v.b],Pa=q[v.c];if(!0===Oa.morphTargets){y=s.morphTargets;var Ca=p.morphTargetInfluences,Da=ma.position,na=Ka.position,Ra=Pa.position;I.set(0,0,0);H.set(0,0,0);N.set(0,0,0);for(var Ea=0,Za=y.length;Ea<Za;Ea++){var La=Ca[Ea];if(0!==La){var Fa=y[Ea].vertices;I.x+=(Fa[v.a].x-Da.x)*La;I.y+=(Fa[v.a].y-Da.y)*La;I.z+=(Fa[v.a].z-Da.z)*La;H.x+=(Fa[v.b].x-na.x)*La;H.y+=(Fa[v.b].y-
|
|
|
+na.y)*La;H.z+=(Fa[v.b].z-na.z)*La;N.x+=(Fa[v.c].x-Ra.x)*La;N.y+=(Fa[v.c].y-Ra.y)*La;N.z+=(Fa[v.c].z-Ra.z)*La}}ma.position.add(I);Ka.position.add(H);Pa.position.add(N);U.projectVertex(ma);U.projectVertex(Ka);U.projectVertex(Pa)}Ca=U.checkTriangleVisibility(ma,Ka,Pa);if(!(!1===Ca&&D===THREE.FrontSide||!0===Ca&&D===THREE.BackSide)){u=b();u.id=p.id;u.v1.copy(ma);u.v2.copy(Ka);u.v3.copy(Pa);u.normalModel.copy(v.normal);!1!==Ca||D!==THREE.BackSide&&D!==THREE.DoubleSide||u.normalModel.negate();u.normalModel.applyMatrix3(R).normalize();
|
|
|
+u.centroidModel.copy(v.centroid).applyMatrix4(V);y=v.vertexNormals;Da=0;for(na=Math.min(y.length,3);Da<na;Da++)Ra=u.vertexNormalsModel[Da],Ra.copy(y[Da]),!1!==Ca||D!==THREE.BackSide&&D!==THREE.DoubleSide||Ra.negate(),Ra.applyMatrix3(R).normalize();u.vertexNormalsLength=y.length;y=0;for(Ca=Math.min(z.length,3);y<Ca;y++)if(D=z[y][la],void 0!==D)for(Da=0,na=D.length;Da<na;Da++)u.uvs[y][Da]=D[Da];u.color=v.color;u.material=Oa;u.z=(ma.positionScreen.z+Ka.positionScreen.z+Pa.positionScreen.z)/3;A.elements.push(u)}}}}}else if(p instanceof
|
|
|
+THREE.Line)if(s instanceof THREE.BufferGeometry){if(z=s.attributes,void 0!==z.position){G=z.position.array;p=0;for(s=G.length;p<s;p+=3)U.pushVertex(G[p],G[p+1],G[p+2]);if(void 0!==z.index)for(z=z.index.array,p=0,s=z.length;p<s;p+=2)U.pushLine(z[p],z[p+1]);else for(p=0,s=G.length/3-1;p<s;p++)U.pushLine(p,p+1)}}else{if(s instanceof THREE.Geometry&&(ja.multiplyMatrices(Y,V),v=p.geometry.vertices,0!==v.length))for(ma=a(),ma.positionScreen.copy(v[0]).applyMatrix4(ja),s=p.type===THREE.LinePieces?2:1,la=
|
|
|
+1,Ta=v.length;la<Ta;la++)ma=a(),ma.positionScreen.copy(v[la]).applyMatrix4(ja),0<(la+1)%s||(Ka=q[n-2],L.copy(ma.positionScreen),ka.copy(Ka.positionScreen),!0===e(L,ka)&&(L.multiplyScalar(1/L.w),ka.multiplyScalar(1/ka.w),w=c(),w.id=p.id,w.v1.positionScreen.copy(L),w.v2.positionScreen.copy(ka),w.z=Math.max(L.z,ka.z),w.material=p.material,p.material.vertexColors===THREE.VertexColors&&(w.vertexColors[0].copy(p.geometry.colors[la]),w.vertexColors[1].copy(p.geometry.colors[la-1])),A.elements.push(w)))}else p instanceof
|
|
|
+THREE.Sprite&&(K.set(V.elements[12],V.elements[13],V.elements[14],1),K.applyMatrix4(Y),s=1/K.w,K.z*=s,-1<=K.z&&1>=K.z&&(P===B?(x=new THREE.RenderableSprite,C.push(x),B++,P++,F=x):F=C[P++],F.id=p.id,F.x=K.x*s,F.y=K.y*s,F.z=K.z,F.object=p,F.rotation=p.rotation,F.scale.x=p.scale.x*Math.abs(F.x-(K.x+h.projectionMatrix.elements[0])/(K.w+h.projectionMatrix.elements[12])),F.scale.y=p.scale.y*Math.abs(F.y-(K.y+h.projectionMatrix.elements[5])/(K.w+h.projectionMatrix.elements[13])),F.material=p.material,A.elements.push(F)));
|
|
|
!0===l&&A.elements.sort(d);return A}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3};
|
|
|
THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();
|
|
|
return a}};THREE.Face4=function(a,b,c,d,e,f,g){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new THREE.Face3(a,b,c,e,f,g)};THREE.Geometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.buffersNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=
|
|
@@ -207,9 +207,9 @@ if(a){var b=this.boundingBox;3<=a.length&&(b.min.x=b.max.x=a[0],b.min.y=b.max.y=
|
|
|
{itemSize:3,array:new Float32Array(a)};else for(a=0,b=this.attributes.normal.array.length;a<b;a++)this.attributes.normal.array[a]=0;var e=this.attributes.position.array,f=this.attributes.normal.array,g,h,k,l,n,q,s=new THREE.Vector3,u=new THREE.Vector3,t=new THREE.Vector3,p=new THREE.Vector3,v=new THREE.Vector3;if(this.attributes.index){var w=this.attributes.index.array,r=this.offsets;c=0;for(d=r.length;c<d;++c){b=r[c].start;g=r[c].count;var x=r[c].index;a=b;for(b+=g;a<b;a+=3)g=x+w[a],h=x+w[a+1],k=
|
|
|
x+w[a+2],l=e[3*g],n=e[3*g+1],q=e[3*g+2],s.set(l,n,q),l=e[3*h],n=e[3*h+1],q=e[3*h+2],u.set(l,n,q),l=e[3*k],n=e[3*k+1],q=e[3*k+2],t.set(l,n,q),p.subVectors(t,u),v.subVectors(s,u),p.cross(v),f[3*g]+=p.x,f[3*g+1]+=p.y,f[3*g+2]+=p.z,f[3*h]+=p.x,f[3*h+1]+=p.y,f[3*h+2]+=p.z,f[3*k]+=p.x,f[3*k+1]+=p.y,f[3*k+2]+=p.z}}else for(a=0,b=e.length;a<b;a+=9)l=e[a],n=e[a+1],q=e[a+2],s.set(l,n,q),l=e[a+3],n=e[a+4],q=e[a+5],u.set(l,n,q),l=e[a+6],n=e[a+7],q=e[a+8],t.set(l,n,q),p.subVectors(t,u),v.subVectors(s,u),p.cross(v),
|
|
|
f[a]=p.x,f[a+1]=p.y,f[a+2]=p.z,f[a+3]=p.x,f[a+4]=p.y,f[a+5]=p.z,f[a+6]=p.x,f[a+7]=p.y,f[a+8]=p.z;this.normalizeNormals();this.normalsNeedUpdate=!0}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},computeTangents:function(){function a(a,b,c){q=d[3*a];s=d[3*a+1];u=d[3*a+2];t=d[3*b];p=d[3*b+1];v=d[3*b+2];w=d[3*c];r=d[3*c+1];x=d[3*c+2];z=f[2*a];F=f[2*a+1];P=f[2*b];C=f[2*b+
|
|
|
-1];B=f[2*c];A=f[2*c+1];I=t-q;H=w-q;N=p-s;y=r-s;K=v-u;E=x-u;D=P-z;G=B-z;T=C-F;Y=A-F;V=1/(D*Y-G*T);ja.set((Y*I-T*H)*V,(Y*N-T*y)*V,(Y*K-T*E)*V);R.set((D*H-G*I)*V,(D*y-G*N)*V,(D*E-G*K)*V);k[a].add(ja);k[b].add(ja);k[c].add(ja);l[a].add(R);l[b].add(R);l[c].add(R)}function b(a){Aa.x=e[3*a];Aa.y=e[3*a+1];Aa.z=e[3*a+2];Ga.copy(Aa);ra=k[a];za.copy(ra);za.sub(Aa.multiplyScalar(Aa.dot(ra))).normalize();Ia.crossVectors(Ga,ra);Ja=Ia.dot(l[a]);ta=0>Ja?-1:1;h[4*a]=za.x;h[4*a+1]=za.y;h[4*a+2]=za.z;h[4*a+3]=ta}if(void 0===
|
|
|
+1];B=f[2*c];A=f[2*c+1];I=t-q;H=w-q;N=p-s;y=r-s;K=v-u;D=x-u;E=P-z;G=B-z;T=C-F;Y=A-F;V=1/(E*Y-G*T);ja.set((Y*I-T*H)*V,(Y*N-T*y)*V,(Y*K-T*D)*V);R.set((E*H-G*I)*V,(E*y-G*N)*V,(E*D-G*K)*V);k[a].add(ja);k[b].add(ja);k[c].add(ja);l[a].add(R);l[b].add(R);l[c].add(R)}function b(a){Aa.x=e[3*a];Aa.y=e[3*a+1];Aa.z=e[3*a+2];Ga.copy(Aa);ra=k[a];za.copy(ra);za.sub(Aa.multiplyScalar(Aa.dot(ra))).normalize();Ia.crossVectors(Ga,ra);Ja=Ia.dot(l[a]);ta=0>Ja?-1:1;h[4*a]=za.x;h[4*a+1]=za.y;h[4*a+2]=za.z;h[4*a+3]=ta}if(void 0===
|
|
|
this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&(this.attributes.tangent={itemSize:4,array:new Float32Array(4*g)});for(var h=this.attributes.tangent.array,
|
|
|
-k=[],l=[],n=0;n<g;n++)k[n]=new THREE.Vector3,l[n]=new THREE.Vector3;var q,s,u,t,p,v,w,r,x,z,F,P,C,B,A,I,H,N,y,K,E,D,G,T,Y,V,ja=new THREE.Vector3,R=new THREE.Vector3,pa,L,ka,Q,U,O=this.offsets,n=0;for(L=O.length;n<L;++n){pa=O[n].start;ka=O[n].count;var ga=O[n].index,g=pa;for(pa+=ka;g<pa;g+=3)ka=ga+c[g],Q=ga+c[g+1],U=ga+c[g+2],a(ka,Q,U)}var za=new THREE.Vector3,Ia=new THREE.Vector3,Aa=new THREE.Vector3,Ga=new THREE.Vector3,ta,ra,Ja,n=0;for(L=O.length;n<L;++n)for(pa=O[n].start,ka=O[n].count,ga=O[n].index,
|
|
|
+k=[],l=[],n=0;n<g;n++)k[n]=new THREE.Vector3,l[n]=new THREE.Vector3;var q,s,u,t,p,v,w,r,x,z,F,P,C,B,A,I,H,N,y,K,D,E,G,T,Y,V,ja=new THREE.Vector3,R=new THREE.Vector3,pa,L,ka,Q,U,O=this.offsets,n=0;for(L=O.length;n<L;++n){pa=O[n].start;ka=O[n].count;var ga=O[n].index,g=pa;for(pa+=ka;g<pa;g+=3)ka=ga+c[g],Q=ga+c[g+1],U=ga+c[g+2],a(ka,Q,U)}var za=new THREE.Vector3,Ia=new THREE.Vector3,Aa=new THREE.Vector3,Ga=new THREE.Vector3,ta,ra,Ja,n=0;for(L=O.length;n<L;++n)for(pa=O[n].start,ka=O[n].count,ga=O[n].index,
|
|
|
g=pa,pa+=ka;g<pa;g+=3)ka=ga+c[g],Q=ga+c[g+1],U=ga+c[g+2],b(ka),b(Q),b(U)}},computeOffsets:function(a){var b=a;void 0===a&&(b=65535);Date.now();a=this.attributes.index.array;for(var c=this.attributes.position.array,d=a.length/3,e=new Uint16Array(a.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,n=0,q=new Int32Array(6),s=new Int32Array(c.length),u=new Int32Array(c.length),t=0;t<c.length;t++)s[t]=-1,u[t]=-1;for(c=0;c<d;c++){for(var p=n=0;3>p;p++)t=a[3*c+p],-1==s[t]?(q[2*p]=t,q[2*p+1]=-1,n++):
|
|
|
s[t]<k.index?(q[2*p]=t,q[2*p+1]=-1,l++):(q[2*p]=t,q[2*p+1]=s[t]);if(g+n>k.index+b)for(k={start:f,count:0,index:g},h.push(k),n=0;6>n;n+=2)p=q[n+1],-1<p&&p<k.index&&(q[n+1]=-1);for(n=0;6>n;n+=2)t=q[n],p=q[n+1],-1===p&&(p=g++),s[t]=p,u[p]=t,e[f++]=p-k.index,k.count++}this.reorderBuffers(e,u,g);return this.offsets=h},reorderBuffers:function(a,b,c){var d={},e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],f;for(f in this.attributes)if("index"!=
|
|
|
f)for(var g=this.attributes[f].array,h=0,k=e.length;h<k;h++){var l=e[h];if(g instanceof l){d[f]=new l(this.attributes[f].itemSize*c);break}}for(e=0;e<c;e++)for(f in g=b[e],this.attributes)if("index"!=f)for(var h=this.attributes[f].array,k=this.attributes[f].itemSize,l=d[f],n=0;n<k;n++)l[e*k+n]=h[g*k+n];this.attributes.index.array=a;for(f in this.attributes)"index"!=f&&(this.attributes[f].array=d[f],this.attributes[f].numItems=this.attributes[f].itemSize*c)},clone:function(){var a=new THREE.BufferGeometry,
|
|
@@ -269,14 +269,14 @@ b){b(a);if(void 0!==a.children)for(var c in a.children)q(a.children[c],b)}var s=
|
|
|
lights:{},fogs:{},empties:{},groups:{}};I.transform&&(H=I.transform.position,a=I.transform.rotation,c=I.transform.scale,H&&B.scene.position.fromArray(H),a&&B.scene.rotation.fromArray(a),c&&B.scene.scale.fromArray(c),H||a||c)&&(B.scene.updateMatrix(),B.scene.updateMatrixWorld());H=function(a){return function(){F-=a;n();s.onLoadComplete()}};for(var N in I.fogs)a=I.fogs[N],"linear"===a.type?w=new THREE.Fog(0,a.near,a.far):"exp2"===a.type&&(w=new THREE.FogExp2(0,a.density)),a=a.color,w.color.setRGB(a[0],
|
|
|
a[1],a[2]),B.fogs[N]=w;for(var y in I.geometries)w=I.geometries[y],w.type in this.geometryHandlers&&(z+=1,s.onLoadStart());for(var K in I.objects)q(I.objects[K],function(a){a.type&&a.type in s.hierarchyHandlers&&(z+=1,s.onLoadStart())});P=z;for(y in I.geometries)if(w=I.geometries[y],"cube"===w.type)t=new THREE.BoxGeometry(w.width,w.height,w.depth,w.widthSegments,w.heightSegments,w.depthSegments),t.name=y,B.geometries[y]=t;else if("plane"===w.type)t=new THREE.PlaneGeometry(w.width,w.height,w.widthSegments,
|
|
|
w.heightSegments),t.name=y,B.geometries[y]=t;else if("sphere"===w.type)t=new THREE.SphereGeometry(w.radius,w.widthSegments,w.heightSegments),t.name=y,B.geometries[y]=t;else if("cylinder"===w.type)t=new THREE.CylinderGeometry(w.topRad,w.botRad,w.height,w.radSegs,w.heightSegs),t.name=y,B.geometries[y]=t;else if("torus"===w.type)t=new THREE.TorusGeometry(w.radius,w.tube,w.segmentsR,w.segmentsT),t.name=y,B.geometries[y]=t;else if("icosahedron"===w.type)t=new THREE.IcosahedronGeometry(w.radius,w.subdivisions),
|
|
|
-t.name=y,B.geometries[y]=t;else if(w.type in this.geometryHandlers){K={};for(r in w)"type"!==r&&"url"!==r&&(K[r]=w[r]);this.geometryHandlers[w.type].loaderObject.load(d(w.url,I.urlBaseType),h(y),K)}else"embedded"===w.type&&(K=I.embeds[w.id],K.metadata=I.metadata,K&&(K=this.geometryHandlers.ascii.loaderObject.parse(K,""),l(y)(K.geometry,K.materials)));for(var E in I.textures)if(y=I.textures[E],y.url instanceof Array)for(F+=y.url.length,r=0;r<y.url.length;r++)s.onLoadStart();else F+=1,s.onLoadStart();
|
|
|
-C=F;for(E in I.textures){y=I.textures[E];void 0!==y.mapping&&void 0!==THREE[y.mapping]&&(y.mapping=new THREE[y.mapping]);if(y.url instanceof Array){K=y.url.length;w=[];for(r=0;r<K;r++)w[r]=d(y.url[r],I.urlBaseType);r=(r=/\.dds$/i.test(w[0]))?THREE.ImageUtils.loadCompressedTextureCube(w,y.mapping,H(K)):THREE.ImageUtils.loadTextureCube(w,y.mapping,H(K))}else r=/\.dds$/i.test(y.url),K=d(y.url,I.urlBaseType),w=H(1),r=r?THREE.ImageUtils.loadCompressedTexture(K,y.mapping,w):THREE.ImageUtils.loadTexture(K,
|
|
|
+t.name=y,B.geometries[y]=t;else if(w.type in this.geometryHandlers){K={};for(r in w)"type"!==r&&"url"!==r&&(K[r]=w[r]);this.geometryHandlers[w.type].loaderObject.load(d(w.url,I.urlBaseType),h(y),K)}else"embedded"===w.type&&(K=I.embeds[w.id],K.metadata=I.metadata,K&&(K=this.geometryHandlers.ascii.loaderObject.parse(K,""),l(y)(K.geometry,K.materials)));for(var D in I.textures)if(y=I.textures[D],y.url instanceof Array)for(F+=y.url.length,r=0;r<y.url.length;r++)s.onLoadStart();else F+=1,s.onLoadStart();
|
|
|
+C=F;for(D in I.textures){y=I.textures[D];void 0!==y.mapping&&void 0!==THREE[y.mapping]&&(y.mapping=new THREE[y.mapping]);if(y.url instanceof Array){K=y.url.length;w=[];for(r=0;r<K;r++)w[r]=d(y.url[r],I.urlBaseType);r=(r=/\.dds$/i.test(w[0]))?THREE.ImageUtils.loadCompressedTextureCube(w,y.mapping,H(K)):THREE.ImageUtils.loadTextureCube(w,y.mapping,H(K))}else r=/\.dds$/i.test(y.url),K=d(y.url,I.urlBaseType),w=H(1),r=r?THREE.ImageUtils.loadCompressedTexture(K,y.mapping,w):THREE.ImageUtils.loadTexture(K,
|
|
|
y.mapping,w),void 0!==THREE[y.minFilter]&&(r.minFilter=THREE[y.minFilter]),void 0!==THREE[y.magFilter]&&(r.magFilter=THREE[y.magFilter]),y.anisotropy&&(r.anisotropy=y.anisotropy),y.repeat&&(r.repeat.set(y.repeat[0],y.repeat[1]),1!==y.repeat[0]&&(r.wrapS=THREE.RepeatWrapping),1!==y.repeat[1]&&(r.wrapT=THREE.RepeatWrapping)),y.offset&&r.offset.set(y.offset[0],y.offset[1]),y.wrap&&(K={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==K[y.wrap[0]]&&(r.wrapS=K[y.wrap[0]]),void 0!==
|
|
|
-K[y.wrap[1]]&&(r.wrapT=K[y.wrap[1]]));B.textures[E]=r}var D,G;for(D in I.materials){E=I.materials[D];for(G in E.parameters)"envMap"===G||"map"===G||"lightMap"===G||"bumpMap"===G?E.parameters[G]=B.textures[E.parameters[G]]:"shading"===G?E.parameters[G]="flat"===E.parameters[G]?THREE.FlatShading:THREE.SmoothShading:"side"===G?E.parameters[G]="double"==E.parameters[G]?THREE.DoubleSide:"back"==E.parameters[G]?THREE.BackSide:THREE.FrontSide:"blending"===G?E.parameters[G]=E.parameters[G]in THREE?THREE[E.parameters[G]]:
|
|
|
-THREE.NormalBlending:"combine"===G?E.parameters[G]=E.parameters[G]in THREE?THREE[E.parameters[G]]:THREE.MultiplyOperation:"vertexColors"===G?"face"==E.parameters[G]?E.parameters[G]=THREE.FaceColors:E.parameters[G]&&(E.parameters[G]=THREE.VertexColors):"wrapRGB"===G&&(H=E.parameters[G],E.parameters[G]=new THREE.Vector3(H[0],H[1],H[2]));void 0!==E.parameters.opacity&&1>E.parameters.opacity&&(E.parameters.transparent=!0);E.parameters.normalMap?(H=THREE.ShaderLib.normalmap,y=THREE.UniformsUtils.clone(H.uniforms),
|
|
|
-r=E.parameters.color,K=E.parameters.specular,w=E.parameters.ambient,N=E.parameters.shininess,y.tNormal.value=B.textures[E.parameters.normalMap],E.parameters.normalScale&&y.uNormalScale.value.set(E.parameters.normalScale[0],E.parameters.normalScale[1]),E.parameters.map&&(y.tDiffuse.value=E.parameters.map,y.enableDiffuse.value=!0),E.parameters.envMap&&(y.tCube.value=E.parameters.envMap,y.enableReflection.value=!0,y.reflectivity.value=E.parameters.reflectivity),E.parameters.lightMap&&(y.tAO.value=E.parameters.lightMap,
|
|
|
-y.enableAO.value=!0),E.parameters.specularMap&&(y.tSpecular.value=B.textures[E.parameters.specularMap],y.enableSpecular.value=!0),E.parameters.displacementMap&&(y.tDisplacement.value=B.textures[E.parameters.displacementMap],y.enableDisplacement.value=!0,y.uDisplacementBias.value=E.parameters.displacementBias,y.uDisplacementScale.value=E.parameters.displacementScale),y.diffuse.value.setHex(r),y.specular.value.setHex(K),y.ambient.value.setHex(w),y.shininess.value=N,E.parameters.opacity&&(y.opacity.value=
|
|
|
-E.parameters.opacity),p=new THREE.ShaderMaterial({fragmentShader:H.fragmentShader,vertexShader:H.vertexShader,uniforms:y,lights:!0,fog:!0})):p=new THREE[E.type](E.parameters);p.name=D;B.materials[D]=p}for(D in I.materials)if(E=I.materials[D],E.parameters.materials){G=[];for(r=0;r<E.parameters.materials.length;r++)G.push(B.materials[E.parameters.materials[r]]);B.materials[D].materials=G}e();B.cameras&&I.defaults.camera&&(B.currentCamera=B.cameras[I.defaults.camera]);B.fogs&&I.defaults.fog&&(B.scene.fog=
|
|
|
+K[y.wrap[1]]&&(r.wrapT=K[y.wrap[1]]));B.textures[D]=r}var E,G;for(E in I.materials){D=I.materials[E];for(G in D.parameters)"envMap"===G||"map"===G||"lightMap"===G||"bumpMap"===G?D.parameters[G]=B.textures[D.parameters[G]]:"shading"===G?D.parameters[G]="flat"===D.parameters[G]?THREE.FlatShading:THREE.SmoothShading:"side"===G?D.parameters[G]="double"==D.parameters[G]?THREE.DoubleSide:"back"==D.parameters[G]?THREE.BackSide:THREE.FrontSide:"blending"===G?D.parameters[G]=D.parameters[G]in THREE?THREE[D.parameters[G]]:
|
|
|
+THREE.NormalBlending:"combine"===G?D.parameters[G]=D.parameters[G]in THREE?THREE[D.parameters[G]]:THREE.MultiplyOperation:"vertexColors"===G?"face"==D.parameters[G]?D.parameters[G]=THREE.FaceColors:D.parameters[G]&&(D.parameters[G]=THREE.VertexColors):"wrapRGB"===G&&(H=D.parameters[G],D.parameters[G]=new THREE.Vector3(H[0],H[1],H[2]));void 0!==D.parameters.opacity&&1>D.parameters.opacity&&(D.parameters.transparent=!0);D.parameters.normalMap?(H=THREE.ShaderLib.normalmap,y=THREE.UniformsUtils.clone(H.uniforms),
|
|
|
+r=D.parameters.color,K=D.parameters.specular,w=D.parameters.ambient,N=D.parameters.shininess,y.tNormal.value=B.textures[D.parameters.normalMap],D.parameters.normalScale&&y.uNormalScale.value.set(D.parameters.normalScale[0],D.parameters.normalScale[1]),D.parameters.map&&(y.tDiffuse.value=D.parameters.map,y.enableDiffuse.value=!0),D.parameters.envMap&&(y.tCube.value=D.parameters.envMap,y.enableReflection.value=!0,y.reflectivity.value=D.parameters.reflectivity),D.parameters.lightMap&&(y.tAO.value=D.parameters.lightMap,
|
|
|
+y.enableAO.value=!0),D.parameters.specularMap&&(y.tSpecular.value=B.textures[D.parameters.specularMap],y.enableSpecular.value=!0),D.parameters.displacementMap&&(y.tDisplacement.value=B.textures[D.parameters.displacementMap],y.enableDisplacement.value=!0,y.uDisplacementBias.value=D.parameters.displacementBias,y.uDisplacementScale.value=D.parameters.displacementScale),y.diffuse.value.setHex(r),y.specular.value.setHex(K),y.ambient.value.setHex(w),y.shininess.value=N,D.parameters.opacity&&(y.opacity.value=
|
|
|
+D.parameters.opacity),p=new THREE.ShaderMaterial({fragmentShader:H.fragmentShader,vertexShader:H.vertexShader,uniforms:y,lights:!0,fog:!0})):p=new THREE[D.type](D.parameters);p.name=E;B.materials[E]=p}for(E in I.materials)if(D=I.materials[E],D.parameters.materials){G=[];for(r=0;r<D.parameters.materials.length;r++)G.push(B.materials[D.parameters.materials[r]]);B.materials[E].materials=G}e();B.cameras&&I.defaults.camera&&(B.currentCamera=B.cameras[I.defaults.camera]);B.fogs&&I.defaults.fog&&(B.scene.fog=
|
|
|
B.fogs[I.defaults.fog]);s.callbackSync(B);n()}};THREE.TextureLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager};THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a,b,c,d){c=new THREE.ImageLoader(this.manager);c.setCrossOrigin(this.crossOrigin);c.load(a,function(a){a=new THREE.Texture(a);a.needsUpdate=!0;void 0!==b&&b(a)})},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.Material=function(){this.id=THREE.MaterialIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=!0;this.polygonOffset=!1;this.overdraw=this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.needsUpdate=this.visible=!0};
|
|
|
THREE.Material.prototype={constructor:THREE.Material,setValues:function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color?d.set(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]="overdraw"==b?Number(c):c}}},clone:function(a){void 0===a&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;
|
|
|
a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor=this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;a.visible=this.visible;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Material.prototype);
|
|
@@ -322,25 +322,25 @@ THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){va
|
|
|
function c(a,b,c,d){s(b);u(c);t(d);p(a.getStyle());y.stroke();va.expandByScalar(2*b)}function d(a){v(a.getStyle());y.fill()}function e(a){f(a.target)}function f(a){var b=a.wrapS===THREE.RepeatWrapping,c=a.wrapT===THREE.RepeatWrapping,d=a.image,e=document.createElement("canvas");e.width=d.width;e.height=d.height;var f=e.getContext("2d");f.setTransform(1,0,0,-1,0,d.height);f.drawImage(d,0,0);ma[a.id]=y.createPattern(e,!0===b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x":!1===b&&!0===c?"repeat-y":"no-repeat")}
|
|
|
function g(a,b,c,d,g,h,m,k,l,p,n,q,r){if(!(r instanceof THREE.DataTexture)){!1===r.hasEventListener("update",e)&&(void 0!==r.image&&0<r.image.width&&f(r),r.addEventListener("update",e));var s=ma[r.id];if(void 0!==s){v(s);var s=r.offset.x/r.repeat.x,u=r.offset.y/r.repeat.y,t=r.image.width*r.repeat.x;r=r.image.height*r.repeat.y;m=(m+s)*t;k=(k+u)*r;c-=a;d-=b;g-=a;h-=b;l=(l+s)*t-m;p=(p+u)*r-k;n=(n+s)*t-m;q=(q+u)*r-k;r=l*q-n*p;0!==r&&(s=1/r,r=(q*c-p*g)*s,p=(q*d-p*h)*s,c=(l*g-n*c)*s,d=(l*h-n*d)*s,a=a-r*
|
|
|
m-c*k,b=b-p*m-d*k,y.save(),y.transform(r,p,c,d,a,b),y.fill(),y.restore())}else v("rgba(0,0,0,1)"),y.fill()}}function h(a,b,c,d,e,f,g,h,m,k,l,p,n){var r,q;r=n.width-1;q=n.height-1;g*=r;h*=q;c-=a;d-=b;e-=a;f-=b;m=m*r-g;k=k*q-h;l=l*r-g;p=p*q-h;q=1/(m*p-l*k);r=(p*c-k*e)*q;k=(p*d-k*f)*q;c=(m*e-l*c)*q;d=(m*f-l*d)*q;a=a-r*g-c*h;b=b-k*g-d*h;y.save();y.transform(r,k,c,d,a,b);y.clip();y.drawImage(n,0,0);y.restore()}function k(a,b,c,d){wa[0]=255*a.r|0;wa[1]=255*a.g|0;wa[2]=255*a.b|0;wa[4]=255*b.r|0;wa[5]=255*
|
|
|
-b.g|0;wa[6]=255*b.b|0;wa[8]=255*c.r|0;wa[9]=255*c.g|0;wa[10]=255*c.b|0;wa[12]=255*d.r|0;wa[13]=255*d.g|0;wa[14]=255*d.b|0;Ua.putImageData(jb,0,0);kb.drawImage(m,0,0);return xa}function l(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function n(a){D!==a&&(D=y.globalAlpha=a)}function q(a){G!==a&&(a===THREE.NormalBlending?y.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?y.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&
|
|
|
+b.g|0;wa[6]=255*b.b|0;wa[8]=255*c.r|0;wa[9]=255*c.g|0;wa[10]=255*c.b|0;wa[12]=255*d.r|0;wa[13]=255*d.g|0;wa[14]=255*d.b|0;Ua.putImageData(jb,0,0);kb.drawImage(m,0,0);return xa}function l(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function n(a){E!==a&&(E=y.globalAlpha=a)}function q(a){G!==a&&(a===THREE.NormalBlending?y.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?y.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&
|
|
|
(y.globalCompositeOperation="darker"),G=a)}function s(a){V!==a&&(V=y.lineWidth=a)}function u(a){ja!==a&&(ja=y.lineCap=a)}function t(a){R!==a&&(R=y.lineJoin=a)}function p(a){T!==a&&(T=y.strokeStyle=a)}function v(a){Y!==a&&(Y=y.fillStyle=a)}function w(a,b){if(pa!==a||L!==b)y.setLineDash([a,b]),pa=a,L=b}console.log("THREE.CanvasRenderer",THREE.REVISION);var r=THREE.Math.smoothstep;a=a||{};var x=this,z,F,P,C=new THREE.Projector,B=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=B.width,I=
|
|
|
-B.height,H=Math.floor(A/2),N=Math.floor(I/2),y=B.getContext("2d"),K=new THREE.Color(0),E=0,D=1,G=0,T=null,Y=null,V=null,ja=null,R=null,pa=null,L=0,ka,Q,U,O;new THREE.RenderableVertex;new THREE.RenderableVertex;var ga,za,Ia,Aa,Ga,ta,ra=new THREE.Color,Ja=new THREE.Color,Z=new THREE.Color,Ba=new THREE.Color,Sa=new THREE.Color,Ya=new THREE.Color,la=new THREE.Color,Ta=new THREE.Color,ma={},Oa,Ka,Pa,Da,Ca,na,Ra,Ea,Za,La,Fa=new THREE.Box2,ha=new THREE.Box2,va=new THREE.Box2,lb=new THREE.Color,Fb=new THREE.Color,
|
|
|
+B.height,H=Math.floor(A/2),N=Math.floor(I/2),y=B.getContext("2d"),K=new THREE.Color(0),D=0,E=1,G=0,T=null,Y=null,V=null,ja=null,R=null,pa=null,L=0,ka,Q,U,O;new THREE.RenderableVertex;new THREE.RenderableVertex;var ga,za,Ia,Aa,Ga,ta,ra=new THREE.Color,Ja=new THREE.Color,Z=new THREE.Color,Ba=new THREE.Color,Sa=new THREE.Color,Ya=new THREE.Color,la=new THREE.Color,Ta=new THREE.Color,ma={},Oa,Ka,Pa,Ca,Da,na,Ra,Ea,Za,La,Fa=new THREE.Box2,ha=new THREE.Box2,va=new THREE.Box2,lb=new THREE.Color,Fb=new THREE.Color,
|
|
|
ya=new THREE.Color,fa=new THREE.Vector3,da=new THREE.Vector3,Ha=new THREE.Matrix3,m,Ua,jb,wa,xa,kb,ab=16;m=document.createElement("canvas");m.width=m.height=2;Ua=m.getContext("2d");Ua.fillStyle="rgba(0,0,0,1)";Ua.fillRect(0,0,2,2);jb=Ua.getImageData(0,0,2,2);wa=jb.data;xa=document.createElement("canvas");xa.width=xa.height=ab;kb=xa.getContext("2d");kb.translate(-ab/2,-ab/2);kb.scale(ab,ab);ab--;void 0===y.setLineDash&&(y.setLineDash=void 0!==y.mozDash?function(a){y.mozDash=null!==a[0]?a:null}:function(){});
|
|
|
this.domElement=B;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};this.setSize=function(a,b,c){A=a*this.devicePixelRatio;I=b*this.devicePixelRatio;H=Math.floor(A/2);N=Math.floor(I/2);B.width=A;B.height=I;1!==this.devicePixelRatio&&!1!==c&&(B.style.width=a+"px",
|
|
|
-B.style.height=b+"px");Fa.min.set(-H,-N);Fa.max.set(H,N);ha.min.set(-H,-N);ha.max.set(H,N);D=1;G=0;R=ja=V=Y=T=null};this.setClearColor=function(a,b){K.set(a);E=void 0!==b?b:1;ha.min.set(-H,-N);ha.max.set(H,N)};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){y.setTransform(1,0,0,-1,H,N);!1===ha.empty()&&(ha.intersect(Fa),ha.expandByScalar(2),
|
|
|
-1>E&&y.clearRect(ha.min.x|0,ha.min.y|0,ha.max.x-ha.min.x|0,ha.max.y-ha.min.y|0),0<E&&(q(THREE.NormalBlending),n(1),v("rgba("+Math.floor(255*K.r)+","+Math.floor(255*K.g)+","+Math.floor(255*K.b)+","+E+")"),y.fillRect(ha.min.x|0,ha.min.y|0,ha.max.x-ha.min.x|0,ha.max.y-ha.min.y|0)),ha.makeEmpty())};this.clearColor=function(){};this.clearDepth=function(){};this.clearStencil=function(){};this.render=function(a,m){if(!1===m instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
-else{!0===this.autoClear&&this.clear();y.setTransform(1,0,0,-1,H,N);x.info.render.vertices=0;x.info.render.faces=0;z=C.projectScene(a,m,this.sortObjects,this.sortElements);F=z.elements;P=z.lights;ka=m;Ha.getNormalMatrix(m.matrixWorldInverse);lb.setRGB(0,0,0);Fb.setRGB(0,0,0);ya.setRGB(0,0,0);for(var B=0,I=P.length;B<I;B++){var G=P[B],E=G.color;G instanceof THREE.AmbientLight?lb.add(E):G instanceof THREE.DirectionalLight?Fb.add(E):G instanceof THREE.PointLight&&ya.add(E)}B=0;for(I=F.length;B<I;B++){var A=
|
|
|
-F[B],D=A.material;if(void 0!==D&&!1!==D.visible){va.makeEmpty();if(A instanceof THREE.RenderableSprite){Q=A;Q.x*=H;Q.y*=N;G=Q;E=D;n(E.opacity);q(E.blending);var K=A.scale.x*H,A=A.scale.y*N,D=0.5*Math.sqrt(K*K+A*A);va.min.set(G.x-D,G.y-D);va.max.set(G.x+D,G.y+D);if(E instanceof THREE.SpriteMaterial||E instanceof THREE.ParticleSystemMaterial){var L=E.map;if(null!==L){!1===L.hasEventListener("update",e)&&(void 0!==L.image&&0<L.image.width&&f(L),L.addEventListener("update",e));D=ma[L.id];void 0!==D?v(D):
|
|
|
-v("rgba( 0, 0, 0, 1 )");var T=L.image,D=T.width*L.offset.x,V=T.height*L.offset.y,Y=T.width*L.repeat.x,L=T.height*L.repeat.y,T=K/Y,R=A/L;y.save();y.translate(G.x,G.y);0!==E.rotation&&y.rotate(E.rotation);y.translate(-K/2,-A/2);y.scale(T,R);y.translate(-D,-V);y.fillRect(D,V,Y,L)}else v(E.color.getStyle()),y.save(),y.translate(G.x,G.y),0!==E.rotation&&y.rotate(E.rotation),y.scale(K,-A),y.fillRect(-0.5,-0.5,1,1);y.restore()}else E instanceof THREE.SpriteCanvasMaterial&&(p(E.color.getStyle()),v(E.color.getStyle()),
|
|
|
-y.save(),y.translate(G.x,G.y),0!==E.rotation&&y.rotate(E.rotation),y.scale(K,A),E.program(y),y.restore())}else if(A instanceof THREE.RenderableLine){if(Q=A.v1,U=A.v2,Q.positionScreen.x*=H,Q.positionScreen.y*=N,U.positionScreen.x*=H,U.positionScreen.y*=N,va.setFromPoints([Q.positionScreen,U.positionScreen]),!0===Fa.isIntersectionBox(va))if(G=Q,E=U,K=A,A=D,n(A.opacity),q(A.blending),y.beginPath(),y.moveTo(G.positionScreen.x,G.positionScreen.y),y.lineTo(E.positionScreen.x,E.positionScreen.y),A instanceof
|
|
|
-THREE.LineBasicMaterial){s(A.linewidth);u(A.linecap);t(A.linejoin);if(A.vertexColors!==THREE.VertexColors)p(A.color.getStyle());else if(D=K.vertexColors[0].getStyle(),K=K.vertexColors[1].getStyle(),D===K)p(D);else{try{var fa=y.createLinearGradient(G.positionScreen.x,G.positionScreen.y,E.positionScreen.x,E.positionScreen.y);fa.addColorStop(0,D);fa.addColorStop(1,K)}catch(ja){fa=D}p(fa)}y.stroke();va.expandByScalar(2*A.linewidth)}else A instanceof THREE.LineDashedMaterial&&(s(A.linewidth),u(A.linecap),
|
|
|
-t(A.linejoin),p(A.color.getStyle()),w(A.dashSize,A.gapSize),y.stroke(),va.expandByScalar(2*A.linewidth),w(null,null))}else if(A instanceof THREE.RenderableFace){Q=A.v1;U=A.v2;O=A.v3;if(-1>Q.positionScreen.z||1<Q.positionScreen.z)continue;if(-1>U.positionScreen.z||1<U.positionScreen.z)continue;if(-1>O.positionScreen.z||1<O.positionScreen.z)continue;Q.positionScreen.x*=H;Q.positionScreen.y*=N;U.positionScreen.x*=H;U.positionScreen.y*=N;O.positionScreen.x*=H;O.positionScreen.y*=N;0<D.overdraw&&(l(Q.positionScreen,
|
|
|
-U.positionScreen,D.overdraw),l(U.positionScreen,O.positionScreen,D.overdraw),l(O.positionScreen,Q.positionScreen,D.overdraw));va.setFromPoints([Q.positionScreen,U.positionScreen,O.positionScreen]);if(!0===Fa.isIntersectionBox(va)){G=Q;E=U;K=O;x.info.render.vertices+=3;x.info.render.faces++;n(D.opacity);q(D.blending);ga=G.positionScreen.x;za=G.positionScreen.y;Ia=E.positionScreen.x;Aa=E.positionScreen.y;Ga=K.positionScreen.x;ta=K.positionScreen.y;var V=ga,Y=za,L=Ia,T=Aa,R=Ga,yc=ta;y.beginPath();y.moveTo(V,
|
|
|
-Y);y.lineTo(L,T);y.lineTo(R,yc);y.closePath();(D instanceof THREE.MeshLambertMaterial||D instanceof THREE.MeshPhongMaterial)&&null===D.map?(Ya.copy(D.color),la.copy(D.emissive),D.vertexColors===THREE.FaceColors&&Ya.multiply(A.color),!1===D.wireframe&&D.shading===THREE.SmoothShading&&3===A.vertexNormalsLength?(Ja.copy(lb),Z.copy(lb),Ba.copy(lb),b(A.v1.positionWorld,A.vertexNormalsModel[0],Ja),b(A.v2.positionWorld,A.vertexNormalsModel[1],Z),b(A.v3.positionWorld,A.vertexNormalsModel[2],Ba),Ja.multiply(Ya).add(la),
|
|
|
-Z.multiply(Ya).add(la),Ba.multiply(Ya).add(la),Sa.addColors(Z,Ba).multiplyScalar(0.5),Pa=k(Ja,Z,Ba,Sa),h(ga,za,Ia,Aa,Ga,ta,0,0,1,0,0,1,Pa)):(ra.copy(lb),b(A.centroidModel,A.normalModel,ra),ra.multiply(Ya).add(la),!0===D.wireframe?c(ra,D.wireframeLinewidth,D.wireframeLinecap,D.wireframeLinejoin):d(ra))):D instanceof THREE.MeshBasicMaterial||D instanceof THREE.MeshLambertMaterial||D instanceof THREE.MeshPhongMaterial?null!==D.map?D.map.mapping instanceof THREE.UVMapping&&(Da=A.uvs[0],g(ga,za,Ia,Aa,
|
|
|
-Ga,ta,Da[0].x,Da[0].y,Da[1].x,Da[1].y,Da[2].x,Da[2].y,D.map)):null!==D.envMap?D.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(da.copy(A.vertexNormalsModel[0]).applyMatrix3(Ha),Ca=0.5*da.x+0.5,na=0.5*da.y+0.5,da.copy(A.vertexNormalsModel[1]).applyMatrix3(Ha),Ra=0.5*da.x+0.5,Ea=0.5*da.y+0.5,da.copy(A.vertexNormalsModel[2]).applyMatrix3(Ha),Za=0.5*da.x+0.5,La=0.5*da.y+0.5,g(ga,za,Ia,Aa,Ga,ta,Ca,na,Ra,Ea,Za,La,D.envMap)):(ra.copy(D.color),D.vertexColors===THREE.FaceColors&&ra.multiply(A.color),
|
|
|
-!0===D.wireframe?c(ra,D.wireframeLinewidth,D.wireframeLinecap,D.wireframeLinejoin):d(ra)):D instanceof THREE.MeshDepthMaterial?(Oa=ka.near,Ka=ka.far,Ja.r=Ja.g=Ja.b=1-r(G.positionScreen.z*G.positionScreen.w,Oa,Ka),Z.r=Z.g=Z.b=1-r(E.positionScreen.z*E.positionScreen.w,Oa,Ka),Ba.r=Ba.g=Ba.b=1-r(K.positionScreen.z*K.positionScreen.w,Oa,Ka),Sa.addColors(Z,Ba).multiplyScalar(0.5),Pa=k(Ja,Z,Ba,Sa),h(ga,za,Ia,Aa,Ga,ta,0,0,1,0,0,1,Pa)):D instanceof THREE.MeshNormalMaterial&&(D.shading===THREE.FlatShading?
|
|
|
-(da.copy(A.normalModel).applyMatrix3(Ha),ra.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),!0===D.wireframe?c(ra,D.wireframeLinewidth,D.wireframeLinecap,D.wireframeLinejoin):d(ra)):D.shading===THREE.SmoothShading&&(da.copy(A.vertexNormalsModel[0]).applyMatrix3(Ha),Ja.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),da.copy(A.vertexNormalsModel[1]).applyMatrix3(Ha),Z.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),da.copy(A.vertexNormalsModel[2]).applyMatrix3(Ha),Ba.setRGB(da.x,
|
|
|
+B.style.height=b+"px");Fa.min.set(-H,-N);Fa.max.set(H,N);ha.min.set(-H,-N);ha.max.set(H,N);E=1;G=0;R=ja=V=Y=T=null};this.setClearColor=function(a,b){K.set(a);D=void 0!==b?b:1;ha.min.set(-H,-N);ha.max.set(H,N)};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){y.setTransform(1,0,0,-1,H,N);!1===ha.empty()&&(ha.intersect(Fa),ha.expandByScalar(2),
|
|
|
+1>D&&y.clearRect(ha.min.x|0,ha.min.y|0,ha.max.x-ha.min.x|0,ha.max.y-ha.min.y|0),0<D&&(q(THREE.NormalBlending),n(1),v("rgba("+Math.floor(255*K.r)+","+Math.floor(255*K.g)+","+Math.floor(255*K.b)+","+D+")"),y.fillRect(ha.min.x|0,ha.min.y|0,ha.max.x-ha.min.x|0,ha.max.y-ha.min.y|0)),ha.makeEmpty())};this.clearColor=function(){};this.clearDepth=function(){};this.clearStencil=function(){};this.render=function(a,m){if(!1===m instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
+else{!0===this.autoClear&&this.clear();y.setTransform(1,0,0,-1,H,N);x.info.render.vertices=0;x.info.render.faces=0;z=C.projectScene(a,m,this.sortObjects,this.sortElements);F=z.elements;P=z.lights;ka=m;Ha.getNormalMatrix(m.matrixWorldInverse);lb.setRGB(0,0,0);Fb.setRGB(0,0,0);ya.setRGB(0,0,0);for(var B=0,I=P.length;B<I;B++){var G=P[B],D=G.color;G instanceof THREE.AmbientLight?lb.add(D):G instanceof THREE.DirectionalLight?Fb.add(D):G instanceof THREE.PointLight&&ya.add(D)}B=0;for(I=F.length;B<I;B++){var A=
|
|
|
+F[B],E=A.material;if(void 0!==E&&!1!==E.visible){va.makeEmpty();if(A instanceof THREE.RenderableSprite){Q=A;Q.x*=H;Q.y*=N;G=Q;D=E;n(D.opacity);q(D.blending);var K=A.scale.x*H,A=A.scale.y*N,E=0.5*Math.sqrt(K*K+A*A);va.min.set(G.x-E,G.y-E);va.max.set(G.x+E,G.y+E);if(D instanceof THREE.SpriteMaterial||D instanceof THREE.ParticleSystemMaterial){var L=D.map;if(null!==L){!1===L.hasEventListener("update",e)&&(void 0!==L.image&&0<L.image.width&&f(L),L.addEventListener("update",e));E=ma[L.id];void 0!==E?v(E):
|
|
|
+v("rgba( 0, 0, 0, 1 )");var T=L.image,E=T.width*L.offset.x,V=T.height*L.offset.y,Y=T.width*L.repeat.x,L=T.height*L.repeat.y,T=K/Y,R=A/L;y.save();y.translate(G.x,G.y);0!==D.rotation&&y.rotate(D.rotation);y.translate(-K/2,-A/2);y.scale(T,R);y.translate(-E,-V);y.fillRect(E,V,Y,L)}else v(D.color.getStyle()),y.save(),y.translate(G.x,G.y),0!==D.rotation&&y.rotate(D.rotation),y.scale(K,-A),y.fillRect(-0.5,-0.5,1,1);y.restore()}else D instanceof THREE.SpriteCanvasMaterial&&(p(D.color.getStyle()),v(D.color.getStyle()),
|
|
|
+y.save(),y.translate(G.x,G.y),0!==D.rotation&&y.rotate(D.rotation),y.scale(K,A),D.program(y),y.restore())}else if(A instanceof THREE.RenderableLine){if(Q=A.v1,U=A.v2,Q.positionScreen.x*=H,Q.positionScreen.y*=N,U.positionScreen.x*=H,U.positionScreen.y*=N,va.setFromPoints([Q.positionScreen,U.positionScreen]),!0===Fa.isIntersectionBox(va))if(G=Q,D=U,K=A,A=E,n(A.opacity),q(A.blending),y.beginPath(),y.moveTo(G.positionScreen.x,G.positionScreen.y),y.lineTo(D.positionScreen.x,D.positionScreen.y),A instanceof
|
|
|
+THREE.LineBasicMaterial){s(A.linewidth);u(A.linecap);t(A.linejoin);if(A.vertexColors!==THREE.VertexColors)p(A.color.getStyle());else if(E=K.vertexColors[0].getStyle(),K=K.vertexColors[1].getStyle(),E===K)p(E);else{try{var fa=y.createLinearGradient(G.positionScreen.x,G.positionScreen.y,D.positionScreen.x,D.positionScreen.y);fa.addColorStop(0,E);fa.addColorStop(1,K)}catch(ja){fa=E}p(fa)}y.stroke();va.expandByScalar(2*A.linewidth)}else A instanceof THREE.LineDashedMaterial&&(s(A.linewidth),u(A.linecap),
|
|
|
+t(A.linejoin),p(A.color.getStyle()),w(A.dashSize,A.gapSize),y.stroke(),va.expandByScalar(2*A.linewidth),w(null,null))}else if(A instanceof THREE.RenderableFace){Q=A.v1;U=A.v2;O=A.v3;if(-1>Q.positionScreen.z||1<Q.positionScreen.z)continue;if(-1>U.positionScreen.z||1<U.positionScreen.z)continue;if(-1>O.positionScreen.z||1<O.positionScreen.z)continue;Q.positionScreen.x*=H;Q.positionScreen.y*=N;U.positionScreen.x*=H;U.positionScreen.y*=N;O.positionScreen.x*=H;O.positionScreen.y*=N;0<E.overdraw&&(l(Q.positionScreen,
|
|
|
+U.positionScreen,E.overdraw),l(U.positionScreen,O.positionScreen,E.overdraw),l(O.positionScreen,Q.positionScreen,E.overdraw));va.setFromPoints([Q.positionScreen,U.positionScreen,O.positionScreen]);if(!0===Fa.isIntersectionBox(va)){G=Q;D=U;K=O;x.info.render.vertices+=3;x.info.render.faces++;n(E.opacity);q(E.blending);ga=G.positionScreen.x;za=G.positionScreen.y;Ia=D.positionScreen.x;Aa=D.positionScreen.y;Ga=K.positionScreen.x;ta=K.positionScreen.y;var V=ga,Y=za,L=Ia,T=Aa,R=Ga,yc=ta;y.beginPath();y.moveTo(V,
|
|
|
+Y);y.lineTo(L,T);y.lineTo(R,yc);y.closePath();(E instanceof THREE.MeshLambertMaterial||E instanceof THREE.MeshPhongMaterial)&&null===E.map?(Ya.copy(E.color),la.copy(E.emissive),E.vertexColors===THREE.FaceColors&&Ya.multiply(A.color),!1===E.wireframe&&E.shading===THREE.SmoothShading&&3===A.vertexNormalsLength?(Ja.copy(lb),Z.copy(lb),Ba.copy(lb),b(A.v1.positionWorld,A.vertexNormalsModel[0],Ja),b(A.v2.positionWorld,A.vertexNormalsModel[1],Z),b(A.v3.positionWorld,A.vertexNormalsModel[2],Ba),Ja.multiply(Ya).add(la),
|
|
|
+Z.multiply(Ya).add(la),Ba.multiply(Ya).add(la),Sa.addColors(Z,Ba).multiplyScalar(0.5),Pa=k(Ja,Z,Ba,Sa),h(ga,za,Ia,Aa,Ga,ta,0,0,1,0,0,1,Pa)):(ra.copy(lb),b(A.centroidModel,A.normalModel,ra),ra.multiply(Ya).add(la),!0===E.wireframe?c(ra,E.wireframeLinewidth,E.wireframeLinecap,E.wireframeLinejoin):d(ra))):E instanceof THREE.MeshBasicMaterial||E instanceof THREE.MeshLambertMaterial||E instanceof THREE.MeshPhongMaterial?null!==E.map?E.map.mapping instanceof THREE.UVMapping&&(Ca=A.uvs[0],g(ga,za,Ia,Aa,
|
|
|
+Ga,ta,Ca[0].x,Ca[0].y,Ca[1].x,Ca[1].y,Ca[2].x,Ca[2].y,E.map)):null!==E.envMap?E.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(da.copy(A.vertexNormalsModel[0]).applyMatrix3(Ha),Da=0.5*da.x+0.5,na=0.5*da.y+0.5,da.copy(A.vertexNormalsModel[1]).applyMatrix3(Ha),Ra=0.5*da.x+0.5,Ea=0.5*da.y+0.5,da.copy(A.vertexNormalsModel[2]).applyMatrix3(Ha),Za=0.5*da.x+0.5,La=0.5*da.y+0.5,g(ga,za,Ia,Aa,Ga,ta,Da,na,Ra,Ea,Za,La,E.envMap)):(ra.copy(E.color),E.vertexColors===THREE.FaceColors&&ra.multiply(A.color),
|
|
|
+!0===E.wireframe?c(ra,E.wireframeLinewidth,E.wireframeLinecap,E.wireframeLinejoin):d(ra)):E instanceof THREE.MeshDepthMaterial?(Oa=ka.near,Ka=ka.far,Ja.r=Ja.g=Ja.b=1-r(G.positionScreen.z*G.positionScreen.w,Oa,Ka),Z.r=Z.g=Z.b=1-r(D.positionScreen.z*D.positionScreen.w,Oa,Ka),Ba.r=Ba.g=Ba.b=1-r(K.positionScreen.z*K.positionScreen.w,Oa,Ka),Sa.addColors(Z,Ba).multiplyScalar(0.5),Pa=k(Ja,Z,Ba,Sa),h(ga,za,Ia,Aa,Ga,ta,0,0,1,0,0,1,Pa)):E instanceof THREE.MeshNormalMaterial&&(E.shading===THREE.FlatShading?
|
|
|
+(da.copy(A.normalModel).applyMatrix3(Ha),ra.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),!0===E.wireframe?c(ra,E.wireframeLinewidth,E.wireframeLinecap,E.wireframeLinejoin):d(ra)):E.shading===THREE.SmoothShading&&(da.copy(A.vertexNormalsModel[0]).applyMatrix3(Ha),Ja.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),da.copy(A.vertexNormalsModel[1]).applyMatrix3(Ha),Z.setRGB(da.x,da.y,da.z).multiplyScalar(0.5).addScalar(0.5),da.copy(A.vertexNormalsModel[2]).applyMatrix3(Ha),Ba.setRGB(da.x,
|
|
|
da.y,da.z).multiplyScalar(0.5).addScalar(0.5),Sa.addColors(Z,Ba).multiplyScalar(0.5),Pa=k(Ja,Z,Ba,Sa),h(ga,za,Ia,Aa,Ga,ta,0,0,1,0,0,1,Pa)))}}ha.union(va)}}y.setTransform(1,0,0,1,0,0)}}};THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",
|
|
|
envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else if ( combine == 2 ) {\ngl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif",
|
|
|
envmap_pars_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n#ifdef USE_SKINNING\nvec4 worldPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif",
|
|
@@ -404,9 +404,9 @@ a.immediateRenderCallback?d.__webglObjectsImmediate.push({id:null,object:a,opaqu
|
|
|
THREE.Mesh||a instanceof THREE.ParticleSystem||a instanceof THREE.Line?x(b.__webglObjects,a):a instanceof THREE.Sprite?z(b.__webglSprites,a):a instanceof THREE.LensFlare?z(b.__webglFlares,a):(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)&&x(b.__webglObjectsImmediate,a);delete a.__webglActive}function x(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function z(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function F(a,b,c,d,e){Ja=0;d.needsUpdate&&
|
|
|
(d.program&&Jb(d),O.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(O.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,k=d.uniforms;g!==Ia&&(m.useProgram(g),Ia=g,f=!0);d.id!==Ga&&(Ga=d.id,f=!0);if(f||a!==ra)m.uniformMatrix4fv(h.projectionMatrix,!1,a.projectionMatrix.elements),a!==ra&&(ra=a);if(d.skinning)if(Eb&&e.useVertexTexture){if(null!==h.boneTexture){var l=P();m.uniform1i(h.boneTexture,l);O.setTexture(e.boneTexture,
|
|
|
l)}null!==h.boneTextureWidth&&m.uniform1i(h.boneTextureWidth,e.boneTextureWidth);null!==h.boneTextureHeight&&m.uniform1i(h.boneTextureHeight,e.boneTextureHeight)}else null!==h.boneGlobalMatrices&&m.uniformMatrix4fv(h.boneGlobalMatrices,!1,e.boneMatrices);if(f){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||
|
|
|
-d.lights){if(da){var p,n=l=0,r=0,q,s,u,t=Ha,v=t.directional.colors,w=t.directional.positions,x=t.point.colors,z=t.point.positions,A=t.point.distances,F=t.spot.colors,E=t.spot.positions,I=t.spot.distances,H=t.spot.directions,K=t.spot.anglesCos,L=t.spot.exponents,N=t.hemi.skyColors,T=t.hemi.groundColors,S=t.hemi.positions,V=0,Y=0,U=0,Q=0,ga=0,Aa=0,za=0,ta=0,R=p=0;c=u=R=0;for(f=b.length;c<f;c++)if(p=b[c],!p.onlyShadow)if(q=p.color,s=p.intensity,u=p.distance,p instanceof THREE.AmbientLight)p.visible&&
|
|
|
+d.lights){if(da){var p,n=l=0,r=0,q,s,u,t=Ha,v=t.directional.colors,w=t.directional.positions,x=t.point.colors,z=t.point.positions,A=t.point.distances,F=t.spot.colors,D=t.spot.positions,I=t.spot.distances,H=t.spot.directions,K=t.spot.anglesCos,L=t.spot.exponents,N=t.hemi.skyColors,T=t.hemi.groundColors,S=t.hemi.positions,V=0,Y=0,U=0,Q=0,ga=0,Aa=0,za=0,ta=0,R=p=0;c=u=R=0;for(f=b.length;c<f;c++)if(p=b[c],!p.onlyShadow)if(q=p.color,s=p.intensity,u=p.distance,p instanceof THREE.AmbientLight)p.visible&&
|
|
|
(O.gammaInput?(l+=q.r*q.r,n+=q.g*q.g,r+=q.b*q.b):(l+=q.r,n+=q.g,r+=q.b));else if(p instanceof THREE.DirectionalLight){if(ga+=1,p.visible&&(fa.setFromMatrixPosition(p.matrixWorld),ya.setFromMatrixPosition(p.target.matrixWorld),fa.sub(ya),fa.normalize(),0!==fa.x||0!==fa.y||0!==fa.z))p=3*V,w[p]=fa.x,w[p+1]=fa.y,w[p+2]=fa.z,O.gammaInput?C(v,p,q,s*s):B(v,p,q,s),V+=1}else p instanceof THREE.PointLight?(Aa+=1,p.visible&&(R=3*Y,O.gammaInput?C(x,R,q,s*s):B(x,R,q,s),ya.setFromMatrixPosition(p.matrixWorld),
|
|
|
-z[R]=ya.x,z[R+1]=ya.y,z[R+2]=ya.z,A[Y]=u,Y+=1)):p instanceof THREE.SpotLight?(za+=1,p.visible&&(R=3*U,O.gammaInput?C(F,R,q,s*s):B(F,R,q,s),ya.setFromMatrixPosition(p.matrixWorld),E[R]=ya.x,E[R+1]=ya.y,E[R+2]=ya.z,I[U]=u,fa.copy(ya),ya.setFromMatrixPosition(p.target.matrixWorld),fa.sub(ya),fa.normalize(),H[R]=fa.x,H[R+1]=fa.y,H[R+2]=fa.z,K[U]=Math.cos(p.angle),L[U]=p.exponent,U+=1)):p instanceof THREE.HemisphereLight&&(ta+=1,p.visible&&(fa.setFromMatrixPosition(p.matrixWorld),fa.normalize(),0!==fa.x||
|
|
|
+z[R]=ya.x,z[R+1]=ya.y,z[R+2]=ya.z,A[Y]=u,Y+=1)):p instanceof THREE.SpotLight?(za+=1,p.visible&&(R=3*U,O.gammaInput?C(F,R,q,s*s):B(F,R,q,s),ya.setFromMatrixPosition(p.matrixWorld),D[R]=ya.x,D[R+1]=ya.y,D[R+2]=ya.z,I[U]=u,fa.copy(ya),ya.setFromMatrixPosition(p.target.matrixWorld),fa.sub(ya),fa.normalize(),H[R]=fa.x,H[R+1]=fa.y,H[R+2]=fa.z,K[U]=Math.cos(p.angle),L[U]=p.exponent,U+=1)):p instanceof THREE.HemisphereLight&&(ta+=1,p.visible&&(fa.setFromMatrixPosition(p.matrixWorld),fa.normalize(),0!==fa.x||
|
|
|
0!==fa.y||0!==fa.z))&&(u=3*Q,S[u]=fa.x,S[u+1]=fa.y,S[u+2]=fa.z,q=p.color,p=p.groundColor,O.gammaInput?(s*=s,C(N,u,q,s),C(T,u,p,s)):(B(N,u,q,s),B(T,u,p,s)),Q+=1);c=3*V;for(f=Math.max(v.length,3*ga);c<f;c++)v[c]=0;c=3*Y;for(f=Math.max(x.length,3*Aa);c<f;c++)x[c]=0;c=3*U;for(f=Math.max(F.length,3*za);c<f;c++)F[c]=0;c=3*Q;for(f=Math.max(N.length,3*ta);c<f;c++)N[c]=0;c=3*Q;for(f=Math.max(T.length,3*ta);c<f;c++)T[c]=0;t.directional.length=V;t.point.length=Y;t.spot.length=U;t.hemi.length=Q;t.ambient[0]=
|
|
|
l;t.ambient[1]=n;t.ambient[2]=r;da=!1}c=Ha;k.ambientLightColor.value=c.ambient;k.directionalLightColor.value=c.directional.colors;k.directionalLightDirection.value=c.directional.positions;k.pointLightColor.value=c.point.colors;k.pointLightPosition.value=c.point.positions;k.pointLightDistance.value=c.point.distances;k.spotLightColor.value=c.spot.colors;k.spotLightPosition.value=c.spot.positions;k.spotLightDistance.value=c.spot.distances;k.spotLightDirection.value=c.spot.directions;k.spotLightAngleCos.value=
|
|
|
c.spot.anglesCos;k.spotLightExponent.value=c.spot.exponents;k.hemisphereLightSkyColor.value=c.hemi.skyColors;k.hemisphereLightGroundColor.value=c.hemi.groundColors;k.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){k.opacity.value=d.opacity;O.gammaInput?k.diffuse.value.copyGammaToLinear(d.color):k.diffuse.value=d.color;k.map.value=d.map;k.lightMap.value=d.lightMap;k.specularMap.value=
|
|
@@ -418,22 +418,22 @@ k.emissive.value.copyGammaToLinear(d.emissive)):(k.ambient.value=d.ambient,k.emi
|
|
|
n)m.uniform3f(f,l.r,l.g,l.b);else if("iv1"===n)m.uniform1iv(f,l);else if("iv"===n)m.uniform3iv(f,l);else if("fv1"===n)m.uniform1fv(f,l);else if("fv"===n)m.uniform3fv(f,l);else if("v2v"===n){void 0===c._array&&(c._array=new Float32Array(2*l.length));n=0;for(r=l.length;n<r;n++)t=2*n,c._array[t]=l[n].x,c._array[t+1]=l[n].y;m.uniform2fv(f,c._array)}else if("v3v"===n){void 0===c._array&&(c._array=new Float32Array(3*l.length));n=0;for(r=l.length;n<r;n++)t=3*n,c._array[t]=l[n].x,c._array[t+1]=l[n].y,c._array[t+
|
|
|
2]=l[n].z;m.uniform3fv(f,c._array)}else if("v4v"===n){void 0===c._array&&(c._array=new Float32Array(4*l.length));n=0;for(r=l.length;n<r;n++)t=4*n,c._array[t]=l[n].x,c._array[t+1]=l[n].y,c._array[t+2]=l[n].z,c._array[t+3]=l[n].w;m.uniform4fv(f,c._array)}else if("m4"===n)void 0===c._array&&(c._array=new Float32Array(16)),l.flattenToArray(c._array),m.uniformMatrix4fv(f,!1,c._array);else if("m4v"===n){void 0===c._array&&(c._array=new Float32Array(16*l.length));n=0;for(r=l.length;n<r;n++)l[n].flattenToArrayOffset(c._array,
|
|
|
16*n);m.uniformMatrix4fv(f,!1,c._array)}else if("t"===n){if(t=l,l=P(),m.uniform1i(f,l),t)if(t.image instanceof Array&&6===t.image.length){if(c=t,f=l,6===c.image.length)if(c.needsUpdate){c.image.__webglTextureCube||(c.addEventListener("dispose",yb),c.image.__webglTextureCube=m.createTexture(),O.info.memory.textures++);m.activeTexture(m.TEXTURE0+f);m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,c.flipY);f=c instanceof THREE.CompressedTexture;l=[];for(n=
|
|
|
-0;6>n;n++)O.autoScaleCubemaps&&!f?(r=l,t=n,v=c.image[n],x=cc,v.width<=x&&v.height<=x||(z=Math.max(v.width,v.height),w=Math.floor(v.width*x/z),x=Math.floor(v.height*x/z),z=document.createElement("canvas"),z.width=w,z.height=x,z.getContext("2d").drawImage(v,0,0,v.width,v.height,0,0,w,x),v=z),r[t]=v):l[n]=c.image[n];n=l[0];r=THREE.Math.isPowerOfTwo(n.width)&&THREE.Math.isPowerOfTwo(n.height);t=D(c.format);v=D(c.type);y(m.TEXTURE_CUBE_MAP,c,r);for(n=0;6>n;n++)if(f)for(x=l[n].mipmaps,z=0,A=x.length;z<
|
|
|
+0;6>n;n++)O.autoScaleCubemaps&&!f?(r=l,t=n,v=c.image[n],x=cc,v.width<=x&&v.height<=x||(z=Math.max(v.width,v.height),w=Math.floor(v.width*x/z),x=Math.floor(v.height*x/z),z=document.createElement("canvas"),z.width=w,z.height=x,z.getContext("2d").drawImage(v,0,0,v.width,v.height,0,0,w,x),v=z),r[t]=v):l[n]=c.image[n];n=l[0];r=THREE.Math.isPowerOfTwo(n.width)&&THREE.Math.isPowerOfTwo(n.height);t=E(c.format);v=E(c.type);y(m.TEXTURE_CUBE_MAP,c,r);for(n=0;6>n;n++)if(f)for(x=l[n].mipmaps,z=0,A=x.length;z<
|
|
|
A;z++)w=x[z],c.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+n,z,t,w.width,w.height,0,w.data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+n,z,t,w.width,w.height,0,t,v,w.data);else m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,t,t,v,l[n]);c.generateMipmaps&&r&&m.generateMipmap(m.TEXTURE_CUBE_MAP);c.needsUpdate=!1;if(c.onUpdate)c.onUpdate()}else m.activeTexture(m.TEXTURE0+f),m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}else t instanceof THREE.WebGLRenderTargetCube?
|
|
|
(c=t,m.activeTexture(m.TEXTURE0+l),m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture)):O.setTexture(t,l)}else if("tv"===n){void 0===c._array&&(c._array=[]);n=0;for(r=c.value.length;n<r;n++)c._array[n]=P();m.uniform1iv(f,c._array);n=0;for(r=c.value.length;n<r;n++)t=c.value[n],l=c._array[n],t&&O.setTexture(t,l)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+n);(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==h.cameraPosition&&(ya.setFromMatrixPosition(a.matrixWorld),
|
|
|
m.uniform3f(h.cameraPosition,ya.x,ya.y,ya.z));(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==h.viewMatrix&&m.uniformMatrix4fv(h.viewMatrix,!1,a.matrixWorldInverse.elements)}m.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrix.elements);h.normalMatrix&&m.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrix.elements);null!==h.modelMatrix&&m.uniformMatrix4fv(h.modelMatrix,!1,e.matrixWorld.elements);return g}function P(){var a=
|
|
|
-Ja;a>=kb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+kb);Ja+=1;return a}function C(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function B(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function A(a){a!==Ca&&(m.lineWidth(a),Ca=a)}function I(a,b,c){Ka!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),Ka=a);!a||Pa===b&&Da===c||(m.polygonOffset(b,c),Pa=b,Da=c)}function H(a){a=a.split("\n");for(var b=0,c=a.length;b<
|
|
|
-c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function N(a,b){var c;"fragment"===a?c=m.createShader(m.FRAGMENT_SHADER):"vertex"===a&&(c=m.createShader(m.VERTEX_SHADER));m.shaderSource(c,b);m.compileShader(c);return m.getShaderParameter(c,m.COMPILE_STATUS)?c:(console.error(m.getShaderInfoLog(c)),console.error(H(b)),null)}function y(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,D(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,D(b.wrapT)),m.texParameteri(a,m.TEXTURE_MAG_FILTER,D(b.magFilter)),m.texParameteri(a,
|
|
|
-m.TEXTURE_MIN_FILTER,D(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,E(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,E(b.minFilter)));wa&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,wa.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Ob)),b.__oldAnisotropy=b.anisotropy)}function K(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?
|
|
|
-(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function E(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?
|
|
|
-m.NEAREST:m.LINEAR}function D(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;
|
|
|
+Ja;a>=kb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+kb);Ja+=1;return a}function C(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function B(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function A(a){a!==Da&&(m.lineWidth(a),Da=a)}function I(a,b,c){Ka!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),Ka=a);!a||Pa===b&&Ca===c||(m.polygonOffset(b,c),Pa=b,Ca=c)}function H(a){a=a.split("\n");for(var b=0,c=a.length;b<
|
|
|
+c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function N(a,b){var c;"fragment"===a?c=m.createShader(m.FRAGMENT_SHADER):"vertex"===a&&(c=m.createShader(m.VERTEX_SHADER));m.shaderSource(c,b);m.compileShader(c);return m.getShaderParameter(c,m.COMPILE_STATUS)?c:(console.error(m.getShaderInfoLog(c)),console.error(H(b)),null)}function y(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,E(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,E(b.wrapT)),m.texParameteri(a,m.TEXTURE_MAG_FILTER,E(b.magFilter)),m.texParameteri(a,
|
|
|
+m.TEXTURE_MIN_FILTER,E(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,D(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,D(b.minFilter)));wa&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,wa.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Ob)),b.__oldAnisotropy=b.anisotropy)}function K(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?
|
|
|
+(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function D(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?
|
|
|
+m.NEAREST:m.LINEAR}function E(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;
|
|
|
if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;if(a===THREE.FloatType)return m.FLOAT;
|
|
|
if(a===THREE.AlphaFormat)return m.ALPHA;if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===THREE.SrcColorFactor)return m.SRC_COLOR;
|
|
|
if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;if(void 0!==xa){if(a===THREE.RGB_S3TC_DXT1_Format)return xa.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
|
|
if(a===THREE.RGBA_S3TC_DXT1_Format)return xa.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return xa.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return xa.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var G=void 0!==a.canvas?a.canvas:document.createElement("canvas"),T=void 0!==a.context?a.context:null,Y=void 0!==a.precision?a.precision:"highp",V={},ja=void 0!==a.alpha?a.alpha:!1,R=void 0!==a.premultipliedAlpha?
|
|
|
a.premultipliedAlpha:!0,pa=void 0!==a.antialias?a.antialias:!1,L=void 0!==a.stencil?a.stencil:!0,ka=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,Q=new THREE.Color(0),U=0;this.domElement=G;this.context=null;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=
|
|
|
this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var O=this,ga=[],za=0,Ia=null,Aa=null,Ga=-1,ta=null,ra=null,Ja=0,Z=-1,Ba=-1,Sa=-1,Ya=-1,la=-1,Ta=-1,ma=-1,
|
|
|
-Oa=-1,Ka=null,Pa=null,Da=null,Ca=null,na=0,Ra=0,Ea=G.width,Za=G.height,La=0,Fa=0,ha=new Uint8Array(16),va=new THREE.Frustum,lb=new THREE.Matrix4,Fb=new THREE.Matrix4,ya=new THREE.Vector3,fa=new THREE.Vector3,da=!0,Ha={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,Ua,jb,wa,xa;(function(){try{var a=
|
|
|
+Oa=-1,Ka=null,Pa=null,Ca=null,Da=null,na=0,Ra=0,Ea=G.width,Za=G.height,La=0,Fa=0,ha=new Uint8Array(16),va=new THREE.Frustum,lb=new THREE.Matrix4,Fb=new THREE.Matrix4,ya=new THREE.Vector3,fa=new THREE.Vector3,da=!0,Ha={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,Ua,jb,wa,xa;(function(){try{var a=
|
|
|
{alpha:ja,premultipliedAlpha:R,antialias:pa,stencil:L,preserveDrawingBuffer:ka};m=T||G.getContext("webgl",a)||G.getContext("experimental-webgl",a);if(null===m)throw"Error creating WebGL context.";}catch(b){console.error(b)}Ua=m.getExtension("OES_texture_float");m.getExtension("OES_texture_float_linear");jb=m.getExtension("OES_standard_derivatives");wa=m.getExtension("EXT_texture_filter_anisotropic")||m.getExtension("MOZ_EXT_texture_filter_anisotropic")||m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
|
|
|
xa=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");Ua||console.log("THREE.WebGLRenderer: Float textures not supported.");jb||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");wa||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");xa||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");void 0===m.getShaderPrecisionFormat&&
|
|
|
(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})})();m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);m.enable(m.BLEND);m.blendEquation(m.FUNC_ADD);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);m.viewport(na,Ra,Ea,Za);m.clearColor(Q.r,Q.g,Q.b,U);this.context=m;var kb=m.getParameter(m.MAX_TEXTURE_IMAGE_UNITS),ab=m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS);
|
|
@@ -474,7 +474,7 @@ null));f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDept
|
|
|
"transparent",b,k,n,!0,d));q(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP),m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=
|
|
|
function(a,b,c,d,e){var f=F(a,b,c,d,e);ta=-1;O.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,va):e.render(function(a){O.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;)t(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)r(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1);for(var b=
|
|
|
0,g=a.__webglObjects.length;b<g;b++){var h=a.__webglObjects[b].object;void 0===h.__webglInit&&(void 0!==h.__webglActive&&r(h,a),t(h,a));var k=h,l=k.geometry,p=void 0,q=void 0,s=void 0;if(l instanceof THREE.BufferGeometry){var u=m.DYNAMIC_DRAW,x=l.attributes,z=void 0,y=void 0;for(z in x)y=x[z],y.needsUpdate&&("index"===z?(m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,y.array,u)):(m.bindBuffer(m.ARRAY_BUFFER,y.buffer),m.bufferData(m.ARRAY_BUFFER,y.array,u)),y.needsUpdate=
|
|
|
-!1)}else if(l instanceof THREE.Geometry2){var A=l,F=m.DYNAMIC_DRAW;if(!1!==A.needsUpdate){var B=["vertices","normals","uvs"],D=V[A.id],E=void 0;for(E in B){var G=A[B[E]];m.bindBuffer(m.ARRAY_BUFFER,D[B[E]]);m.bufferData(m.ARRAY_BUFFER,G,F)}A.needsUpdate=!1}}else if(k instanceof THREE.Mesh){for(var I=0,O=l.geometryGroupsList.length;I<O;I++)if(p=l.geometryGroupsList[I],s=d(k,p),l.buffersNeedUpdate&&c(p,k),q=s.attributes&&v(s),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||
|
|
|
+!1)}else if(l instanceof THREE.Geometry2){var A=l,F=m.DYNAMIC_DRAW;if(!1!==A.needsUpdate){var B=["vertices","normals","uvs"],E=V[A.id],D=void 0;for(D in B){var G=A[B[D]];m.bindBuffer(m.ARRAY_BUFFER,E[B[D]]);m.bufferData(m.ARRAY_BUFFER,G,F)}A.needsUpdate=!1}}else if(k instanceof THREE.Mesh){for(var I=0,O=l.geometryGroupsList.length;I<O;I++)if(p=l.geometryGroupsList[I],s=d(k,p),l.buffersNeedUpdate&&c(p,k),q=s.attributes&&v(s),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||
|
|
|
l.normalsNeedUpdate||l.colorsNeedUpdate||l.tangentsNeedUpdate||q){var C=p,H=k,P=m.DYNAMIC_DRAW,K=!l.dynamic,L=s;if(C.__inittedArrays){var N=e(L),T=L.vertexColors?L.vertexColors:!1,Y=f(L),U=N===THREE.SmoothShading,S=void 0,Q=void 0,ga=void 0,R=void 0,Aa=void 0,Z=void 0,za=void 0,ta=void 0,ra=void 0,Ja=void 0,fa=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0,Ia=void 0,Ga=void 0,la=void 0,ha=void 0,ja=void 0,ka=void 0,ma=void 0,pa=void 0,Ba=void 0,wa=void 0,Ca=void 0,Da=void 0,Fa=void 0,Ka=void 0,Qa=
|
|
|
void 0,Pa=void 0,La=void 0,Ta=void 0,Oa=void 0,na=void 0,Ra=void 0,va=void 0,xa=void 0,Sa=void 0,Ya=void 0,Ea=0,Ha=0,Ua=0,Za=0,ab=0,mb=0,bb=0,wb=0,gb=0,ua=0,Ma=0,M=0,$a=void 0,nb=C.__vertexArray,jb=C.__uvArray,kb=C.__uv2Array,zb=C.__normalArray,cb=C.__tangentArray,ob=C.__colorArray,db=C.__skinIndexArray,eb=C.__skinWeightArray,Db=C.__morphTargetsArrays,Eb=C.__morphNormalsArrays,yb=C.__webglCustomAttributesList,J=void 0,Tb=C.__faceArray,Ab=C.__lineArray,Va=H.geometry,Ob=Va.elementsNeedUpdate,Ib=Va.uvsNeedUpdate,
|
|
|
Pb=Va.normalsNeedUpdate,Qb=Va.tangentsNeedUpdate,Rb=Va.colorsNeedUpdate,Sb=Va.morphTargetsNeedUpdate,hc=Va.vertices,ea=C.faces3,pb=Va.faces,Jb=Va.faceVertexUvs[0],nc=Va.faceVertexUvs[1],ic=Va.skinIndices,Ub=Va.skinWeights,Vb=Va.morphTargets,oc=Va.morphNormals;if(Va.verticesNeedUpdate){S=0;for(Q=ea.length;S<Q;S++)R=pb[ea[S]],aa=hc[R.a],ba=hc[R.b],ca=hc[R.c],nb[Ha]=aa.x,nb[Ha+1]=aa.y,nb[Ha+2]=aa.z,nb[Ha+3]=ba.x,nb[Ha+4]=ba.y,nb[Ha+5]=ba.z,nb[Ha+6]=ca.x,nb[Ha+7]=ca.y,nb[Ha+8]=ca.z,Ha+=9;m.bindBuffer(m.ARRAY_BUFFER,
|
|
@@ -516,11 +516,11 @@ m.getError()+"]"),console.error("Program Info Log: "+m.getProgramInfoLog(x)));m.
|
|
|
for(z=0;z<c.maxMorphTargets;z++)v.push("morphTarget"+z);for(z=0;z<c.maxMorphNormals;z++)v.push("morphNormal"+z);for(l in b)v.push(l);l=v;z=0;for(b=l.length;z<b;z++)v=l[z],x.attributes[v]=m.getAttribLocation(x,v);x.id=za++;ga.push({program:x,code:r,usedTimes:1});O.info.memory.programs=ga.length;l=x}a.program=l;z=a.program.attributes;if(a.morphTargets)for(a.numSupportedMorphTargets=0,b="morphTarget",l=0;l<this.maxMorphTargets;l++)x=b+l,0<=z[x]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(a.numSupportedMorphNormals=
|
|
|
0,b="morphNormal",l=0;l<this.maxMorphNormals;l++)x=b+l,0<=z[x]&&a.numSupportedMorphNormals++;a.uniformsList=[];for(k in a.uniforms)a.uniformsList.push([a.uniforms[k],k])};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):a===THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===
|
|
|
THREE.DoubleSide;a=a.side===THREE.BackSide;Z!==b&&(b?m.disable(m.CULL_FACE):m.enable(m.CULL_FACE),Z=b);Ba!==a&&(a?m.frontFace(m.CW):m.frontFace(m.CCW),Ba=a)};this.setDepthTest=function(a){ma!==a&&(a?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST),ma=a)};this.setDepthWrite=function(a){Oa!==a&&(m.depthMask(a),Oa=a)};this.setBlending=function(a,b,c,d){a!==Sa&&(a===THREE.NoBlending?m.disable(m.BLEND):a===THREE.AdditiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.SRC_ALPHA,m.ONE)):
|
|
|
-a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Sa=a);if(a===THREE.CustomBlending){if(b!==Ya&&(m.blendEquation(D(b)),Ya=b),c!==la||
|
|
|
-d!==Ta)m.blendFunc(D(c),D(d)),la=c,Ta=d}else Ta=la=Ya=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",yb),a.__webglTexture=m.createTexture(),O.info.memory.textures++);m.activeTexture(m.TEXTURE0+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&
|
|
|
-THREE.Math.isPowerOfTwo(c.height),e=D(a.format),f=D(a.type);y(m.TEXTURE_2D,a,d);var g=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<g.length&&d){for(var h=0,k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(a instanceof THREE.CompressedTexture)for(h=0,k=g.length;h<k;h++)c=g[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):
|
|
|
+a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Sa=a);if(a===THREE.CustomBlending){if(b!==Ya&&(m.blendEquation(E(b)),Ya=b),c!==la||
|
|
|
+d!==Ta)m.blendFunc(E(c),E(d)),la=c,Ta=d}else Ta=la=Ya=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",yb),a.__webglTexture=m.createTexture(),O.info.memory.textures++);m.activeTexture(m.TEXTURE0+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&
|
|
|
+THREE.Math.isPowerOfTwo(c.height),e=E(a.format),f=E(a.type);y(m.TEXTURE_2D,a,d);var g=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<g.length&&d){for(var h=0,k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(a instanceof THREE.CompressedTexture)for(h=0,k=g.length;h<k;h++)c=g[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):
|
|
|
m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);else if(0<g.length&&d){h=0;for(k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,e,f,c);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+b),m.bindTexture(m.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===
|
|
|
-a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Qb);a.__webglTexture=m.createTexture();O.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=D(a.format),e=D(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);y(m.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=m.createFramebuffer();a.__webglRenderbuffer[f]=m.createRenderbuffer();
|
|
|
+a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Qb);a.__webglTexture=m.createTexture();O.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=E(a.format),e=E(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);y(m.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=m.createFramebuffer();a.__webglRenderbuffer[f]=m.createRenderbuffer();
|
|
|
m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+f;m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer[f]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,h,g.__webglTexture,0);K(a.__webglRenderbuffer[f],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),
|
|
|
y(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):
|
|
|
K(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,null);m.bindRenderbuffer(m.RENDERBUFFER,null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ea,a=Za,d=na,e=Ra);b!==Aa&&(m.bindFramebuffer(m.FRAMEBUFFER,b),m.viewport(d,e,c,a),Aa=b);La=c;Fa=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);
|
|
@@ -630,10 +630,10 @@ THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||cons
|
|
|
(a=!0):d(f)==d(h)&&(a=!0),a?(c=-f,a=e,e=Math.sqrt(k)):(c=e,a=f,e=Math.sqrt(k/2));return new THREE.Vector2(c/e,a/e)}function e(c,d){var e,f;for(L=c.length;0<=--L;){e=L;f=L-1;0>f&&(f=c.length-1);for(var g=0,h=u+2*n,g=0;g<h;g++){var k=ja*g,l=ja*(g+1),p=d+e+k,k=d+f+k,q=d+f+l,l=d+e+l,s=c,t=g,v=h,w=e,y=f,p=p+N,k=k+N,q=q+N,l=l+N;H.faces.push(new THREE.Face3(p,k,l,null,null,r));H.faces.push(new THREE.Face3(k,q,l,null,null,r));p=x.generateSideWallUV(H,a,s,b,p,k,q,l,t,v,w,y);H.faceVertexUvs[0].push([p[0],p[1],
|
|
|
p[3]]);H.faceVertexUvs[0].push([p[1],p[2],p[3]])}}}function f(a,b,c){H.vertices.push(new THREE.Vector3(a,b,c))}function g(c,d,e,f){c+=N;d+=N;e+=N;H.faces.push(new THREE.Face3(c,d,e,null,null,w));c=f?x.generateBottomUV(H,a,b,c,d,e):x.generateTopUV(H,a,b,c,d,e);H.faceVertexUvs[0].push(c)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,l=void 0!==b.bevelSize?b.bevelSize:k-2,n=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,s=
|
|
|
void 0!==b.curveSegments?b.curveSegments:12,u=void 0!==b.steps?b.steps:1,t=b.extrudePath,p,v=!1,w=b.material,r=b.extrudeMaterial,x=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,z,F,P,C;t&&(p=t.getSpacedPoints(u),v=!0,q=!1,z=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(t,u,!1),F=new THREE.Vector3,P=new THREE.Vector3,C=new THREE.Vector3);q||(l=k=n=0);var B,A,I,H=this,N=this.vertices.length,t=a.extractPoints(s),s=t.shape,y=t.holes;if(t=!THREE.Shape.Utils.isClockWise(s)){s=
|
|
|
-s.reverse();A=0;for(I=y.length;A<I;A++)B=y[A],THREE.Shape.Utils.isClockWise(B)&&(y[A]=B.reverse());t=!1}var K=THREE.Shape.Utils.triangulateShape(s,y),E=s;A=0;for(I=y.length;A<I;A++)B=y[A],s=s.concat(B);var D,G,T,Y,V,ja=s.length,R,pa=K.length,t=[],L=0;T=E.length;D=T-1;for(G=L+1;L<T;L++,D++,G++)D===T&&(D=0),G===T&&(G=0),t[L]=d(E[L],E[D],E[G]);var ka=[],Q,U=t.concat();A=0;for(I=y.length;A<I;A++){B=y[A];Q=[];L=0;T=B.length;D=T-1;for(G=L+1;L<T;L++,D++,G++)D===T&&(D=0),G===T&&(G=0),Q[L]=d(B[L],B[D],B[G]);
|
|
|
-ka.push(Q);U=U.concat(Q)}for(D=0;D<n;D++){T=D/n;Y=k*(1-T);G=l*Math.sin(T*Math.PI/2);L=0;for(T=E.length;L<T;L++)V=c(E[L],t[L],G),f(V.x,V.y,-Y);A=0;for(I=y.length;A<I;A++)for(B=y[A],Q=ka[A],L=0,T=B.length;L<T;L++)V=c(B[L],Q[L],G),f(V.x,V.y,-Y)}G=l;for(L=0;L<ja;L++)V=q?c(s[L],U[L],G):s[L],v?(P.copy(z.normals[0]).multiplyScalar(V.x),F.copy(z.binormals[0]).multiplyScalar(V.y),C.copy(p[0]).add(P).add(F),f(C.x,C.y,C.z)):f(V.x,V.y,0);for(T=1;T<=u;T++)for(L=0;L<ja;L++)V=q?c(s[L],U[L],G):s[L],v?(P.copy(z.normals[T]).multiplyScalar(V.x),
|
|
|
-F.copy(z.binormals[T]).multiplyScalar(V.y),C.copy(p[T]).add(P).add(F),f(C.x,C.y,C.z)):f(V.x,V.y,h/u*T);for(D=n-1;0<=D;D--){T=D/n;Y=k*(1-T);G=l*Math.sin(T*Math.PI/2);L=0;for(T=E.length;L<T;L++)V=c(E[L],t[L],G),f(V.x,V.y,h+Y);A=0;for(I=y.length;A<I;A++)for(B=y[A],Q=ka[A],L=0,T=B.length;L<T;L++)V=c(B[L],Q[L],G),v?f(V.x,V.y+p[u-1].y,p[u-1].x+Y):f(V.x,V.y,h+Y)}(function(){if(q){var a;a=0*ja;for(L=0;L<pa;L++)R=K[L],g(R[2]+a,R[1]+a,R[0]+a,!0);a=u+2*n;a*=ja;for(L=0;L<pa;L++)R=K[L],g(R[0]+a,R[1]+a,R[2]+a,
|
|
|
-!1)}else{for(L=0;L<pa;L++)R=K[L],g(R[2],R[1],R[0],!0);for(L=0;L<pa;L++)R=K[L],g(R[0]+ja*u,R[1]+ja*u,R[2]+ja*u,!1)}})();(function(){var a=0;e(E,a);a+=E.length;A=0;for(I=y.length;A<I;A++)B=y[A],e(B,a),a+=B.length})()};
|
|
|
+s.reverse();A=0;for(I=y.length;A<I;A++)B=y[A],THREE.Shape.Utils.isClockWise(B)&&(y[A]=B.reverse());t=!1}var K=THREE.Shape.Utils.triangulateShape(s,y),D=s;A=0;for(I=y.length;A<I;A++)B=y[A],s=s.concat(B);var E,G,T,Y,V,ja=s.length,R,pa=K.length,t=[],L=0;T=D.length;E=T-1;for(G=L+1;L<T;L++,E++,G++)E===T&&(E=0),G===T&&(G=0),t[L]=d(D[L],D[E],D[G]);var ka=[],Q,U=t.concat();A=0;for(I=y.length;A<I;A++){B=y[A];Q=[];L=0;T=B.length;E=T-1;for(G=L+1;L<T;L++,E++,G++)E===T&&(E=0),G===T&&(G=0),Q[L]=d(B[L],B[E],B[G]);
|
|
|
+ka.push(Q);U=U.concat(Q)}for(E=0;E<n;E++){T=E/n;Y=k*(1-T);G=l*Math.sin(T*Math.PI/2);L=0;for(T=D.length;L<T;L++)V=c(D[L],t[L],G),f(V.x,V.y,-Y);A=0;for(I=y.length;A<I;A++)for(B=y[A],Q=ka[A],L=0,T=B.length;L<T;L++)V=c(B[L],Q[L],G),f(V.x,V.y,-Y)}G=l;for(L=0;L<ja;L++)V=q?c(s[L],U[L],G):s[L],v?(P.copy(z.normals[0]).multiplyScalar(V.x),F.copy(z.binormals[0]).multiplyScalar(V.y),C.copy(p[0]).add(P).add(F),f(C.x,C.y,C.z)):f(V.x,V.y,0);for(T=1;T<=u;T++)for(L=0;L<ja;L++)V=q?c(s[L],U[L],G):s[L],v?(P.copy(z.normals[T]).multiplyScalar(V.x),
|
|
|
+F.copy(z.binormals[T]).multiplyScalar(V.y),C.copy(p[T]).add(P).add(F),f(C.x,C.y,C.z)):f(V.x,V.y,h/u*T);for(E=n-1;0<=E;E--){T=E/n;Y=k*(1-T);G=l*Math.sin(T*Math.PI/2);L=0;for(T=D.length;L<T;L++)V=c(D[L],t[L],G),f(V.x,V.y,h+Y);A=0;for(I=y.length;A<I;A++)for(B=y[A],Q=ka[A],L=0,T=B.length;L<T;L++)V=c(B[L],Q[L],G),v?f(V.x,V.y+p[u-1].y,p[u-1].x+Y):f(V.x,V.y,h+Y)}(function(){if(q){var a;a=0*ja;for(L=0;L<pa;L++)R=K[L],g(R[2]+a,R[1]+a,R[0]+a,!0);a=u+2*n;a*=ja;for(L=0;L<pa;L++)R=K[L],g(R[0]+a,R[1]+a,R[2]+a,
|
|
|
+!1)}else{for(L=0;L<pa;L++)R=K[L],g(R[2],R[1],R[0],!0);for(L=0;L<pa;L++)R=K[L],g(R[0]+ja*u,R[1]+ja*u,R[2]+ja*u,!1)}})();(function(){var a=0;e(D,a);a+=D.length;A=0;for(I=y.length;A<I;A++)B=y[A],e(B,a),a+=B.length})()};
|
|
|
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d,e,f){b=a.vertices[e].x;e=a.vertices[e].y;c=a.vertices[f].x;f=a.vertices[f].y;return[new THREE.Vector2(a.vertices[d].x,a.vertices[d].y),new THREE.Vector2(b,e),new THREE.Vector2(c,f)]},generateBottomUV:function(a,b,c,d,e,f){return this.generateTopUV(a,b,c,d,e,f)},generateSideWallUV:function(a,b,c,d,e,f,g,h,k,l,n,q){b=a.vertices[e].x;c=a.vertices[e].y;e=a.vertices[e].z;d=a.vertices[f].x;k=a.vertices[f].y;f=a.vertices[f].z;l=a.vertices[g].x;
|
|
|
n=a.vertices[g].y;g=a.vertices[g].z;q=a.vertices[h].x;var s=a.vertices[h].y;a=a.vertices[h].z;return 0.01>Math.abs(c-k)?[new THREE.Vector2(b,1-e),new THREE.Vector2(d,1-f),new THREE.Vector2(l,1-g),new THREE.Vector2(q,1-a)]:[new THREE.Vector2(c,1-e),new THREE.Vector2(k,1-f),new THREE.Vector2(n,1-g),new THREE.Vector2(s,1-a)]}};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2;
|
|
|
THREE.ExtrudeGeometry.__v5=new THREE.Vector2;THREE.ExtrudeGeometry.__v6=new THREE.Vector2;THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);!1===a instanceof Array&&(a=[a]);this.shapebb=a[a.length-1].getBoundingBox();this.addShapeList(a,b);this.computeCentroids();this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this};
|
|
@@ -699,10 +699,10 @@ e[t++]=0;e[t++]=0;e[t++]=1;e[t++]=-1;e[t++]=1;e[t++]=0;e[t++]=1;e[t++]=1;e[t++]=
|
|
|
0,b.RGB,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);b.bindTexture(b.TEXTURE_2D,l);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)?(n=!1,q=a(THREE.ShaderFlares.lensFlare,d)):(n=!0,q=a(THREE.ShaderFlares.lensFlareVertexTexture,d));s={};u={};s.vertex=b.getAttribLocation(q,"position");s.uv=b.getAttribLocation(q,"uv");u.renderType=b.getUniformLocation(q,"renderType");u.map=b.getUniformLocation(q,"map");u.occlusionMap=b.getUniformLocation(q,"occlusionMap");u.opacity=
|
|
|
b.getUniformLocation(q,"opacity");u.color=b.getUniformLocation(q,"color");u.scale=b.getUniformLocation(q,"scale");u.rotation=b.getUniformLocation(q,"rotation");u.screenPosition=b.getUniformLocation(q,"screenPosition")};this.render=function(a,d,e,f){a=a.__webglFlares;var r=a.length;if(r){var x=new THREE.Vector3,z=f/e,F=0.5*e,P=0.5*f,C=16/f,B=new THREE.Vector2(C*z,C),A=new THREE.Vector3(1,1,0),I=new THREE.Vector2(1,1),H=u,C=s;b.useProgram(q);b.enableVertexAttribArray(s.vertex);b.enableVertexAttribArray(s.uv);
|
|
|
-b.uniform1i(H.occlusionMap,0);b.uniform1i(H.map,1);b.bindBuffer(b.ARRAY_BUFFER,g);b.vertexAttribPointer(C.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(C.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var N,y,K,E,D;for(N=0;N<r;N++)if(C=16/f,B.set(C*z,C),E=a[N],x.set(E.matrixWorld.elements[12],E.matrixWorld.elements[13],E.matrixWorld.elements[14]),x.applyMatrix4(d.matrixWorldInverse),x.applyProjection(d.projectionMatrix),A.copy(x),I.x=A.x*F+F,
|
|
|
+b.uniform1i(H.occlusionMap,0);b.uniform1i(H.map,1);b.bindBuffer(b.ARRAY_BUFFER,g);b.vertexAttribPointer(C.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(C.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var N,y,K,D,E;for(N=0;N<r;N++)if(C=16/f,B.set(C*z,C),D=a[N],x.set(D.matrixWorld.elements[12],D.matrixWorld.elements[13],D.matrixWorld.elements[14]),x.applyMatrix4(d.matrixWorldInverse),x.applyProjection(d.projectionMatrix),A.copy(x),I.x=A.x*F+F,
|
|
|
I.y=A.y*P+P,n||0<I.x&&I.x<e&&0<I.y&&I.y<f)for(b.activeTexture(b.TEXTURE1),b.bindTexture(b.TEXTURE_2D,k),b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,I.x-8,I.y-8,16,16,0),b.uniform1i(H.renderType,0),b.uniform2f(H.scale,B.x,B.y),b.uniform3f(H.screenPosition,A.x,A.y,A.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,l),b.copyTexImage2D(b.TEXTURE_2D,0,b.RGBA,I.x-8,I.y-8,16,16,0),b.uniform1i(H.renderType,1),b.disable(b.DEPTH_TEST),
|
|
|
-b.activeTexture(b.TEXTURE1),b.bindTexture(b.TEXTURE_2D,k),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0),E.positionScreen.copy(A),E.customUpdateCallback?E.customUpdateCallback(E):E.updateLensFlares(),b.uniform1i(H.renderType,2),b.enable(b.BLEND),y=0,K=E.lensFlares.length;y<K;y++)D=E.lensFlares[y],0.001<D.opacity&&0.001<D.scale&&(A.x=D.x,A.y=D.y,A.z=D.z,C=D.size*D.scale/f,B.x=C*z,B.y=C,b.uniform3f(H.screenPosition,A.x,A.y,A.z),b.uniform2f(H.scale,B.x,B.y),b.uniform1f(H.rotation,D.rotation),b.uniform1f(H.opacity,
|
|
|
-D.opacity),b.uniform3f(H.color,D.color.r,D.color.g,D.color.b),c.setBlending(D.blending,D.blendEquation,D.blendSrc,D.blendDst),c.setTexture(D.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,f,g=new THREE.Frustum,h=new THREE.Matrix4,k=new THREE.Vector3,l=new THREE.Vector3,n=new THREE.Vector3;this.init=function(g){a=g.context;b=g;g=THREE.ShaderLib.depthRGBA;var h=THREE.UniformsUtils.clone(g.uniforms);c=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h});d=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0});e=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,
|
|
|
+b.activeTexture(b.TEXTURE1),b.bindTexture(b.TEXTURE_2D,k),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0),D.positionScreen.copy(A),D.customUpdateCallback?D.customUpdateCallback(D):D.updateLensFlares(),b.uniform1i(H.renderType,2),b.enable(b.BLEND),y=0,K=D.lensFlares.length;y<K;y++)E=D.lensFlares[y],0.001<E.opacity&&0.001<E.scale&&(A.x=E.x,A.y=E.y,A.z=E.z,C=E.size*E.scale/f,B.x=C*z,B.y=C,b.uniform3f(H.screenPosition,A.x,A.y,A.z),b.uniform2f(H.scale,B.x,B.y),b.uniform1f(H.rotation,E.rotation),b.uniform1f(H.opacity,
|
|
|
+E.opacity),b.uniform3f(H.color,E.color.r,E.color.g,E.color.b),c.setBlending(E.blending,E.blendEquation,E.blendSrc,E.blendDst),c.setTexture(E.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,f,g=new THREE.Frustum,h=new THREE.Matrix4,k=new THREE.Vector3,l=new THREE.Vector3,n=new THREE.Vector3;this.init=function(g){a=g.context;b=g;g=THREE.ShaderLib.depthRGBA;var h=THREE.UniformsUtils.clone(g.uniforms);c=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h});d=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0});e=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,
|
|
|
vertexShader:g.vertexShader,uniforms:h,skinning:!0});f=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});c._shadowPass=!0;d._shadowPass=!0;e._shadowPass=!0;f._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&&this.update(a,c)};this.update=function(q,s){var u,t,p,v,w,r,x,z,F,P=[];v=0;a.clearColor(1,1,1,1);a.disable(a.BLEND);a.enable(a.CULL_FACE);a.frontFace(a.CCW);b.shadowMapCullFace===THREE.CullFaceFront?
|
|
|
a.cullFace(a.FRONT):a.cullFace(a.BACK);b.setDepthTest(!0);u=0;for(t=q.__lights.length;u<t;u++)if(p=q.__lights[u],p.castShadow)if(p instanceof THREE.DirectionalLight&&p.shadowCascade)for(w=0;w<p.shadowCascadeCount;w++){var C;if(p.shadowCascadeArray[w])C=p.shadowCascadeArray[w];else{F=p;x=w;C=new THREE.DirectionalLight;C.isVirtual=!0;C.onlyShadow=!0;C.castShadow=!0;C.shadowCameraNear=F.shadowCameraNear;C.shadowCameraFar=F.shadowCameraFar;C.shadowCameraLeft=F.shadowCameraLeft;C.shadowCameraRight=F.shadowCameraRight;
|
|
|
C.shadowCameraBottom=F.shadowCameraBottom;C.shadowCameraTop=F.shadowCameraTop;C.shadowCameraVisible=F.shadowCameraVisible;C.shadowDarkness=F.shadowDarkness;C.shadowBias=F.shadowCascadeBias[x];C.shadowMapWidth=F.shadowCascadeWidth[x];C.shadowMapHeight=F.shadowCascadeHeight[x];C.pointsWorld=[];C.pointsFrustum=[];z=C.pointsWorld;r=C.pointsFrustum;for(var B=0;8>B;B++)z[B]=new THREE.Vector3,r[B]=new THREE.Vector3;z=F.shadowCascadeNearZ[x];F=F.shadowCascadeFarZ[x];r[0].set(-1,-1,z);r[1].set(1,-1,z);r[2].set(-1,
|
|
@@ -718,8 +718,8 @@ var H=r.createShader(r.VERTEX_SHADER),N=r.createShader(r.FRAGMENT_SHADER);r.shad
|
|
|
r.shaderSource(N,["precision "+x.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n"));
|
|
|
r.compileShader(H);r.compileShader(N);r.attachShader(w,H);r.attachShader(w,N);r.linkProgram(w);A=w;p=r.getAttribLocation(A,"position");v=r.getAttribLocation(A,"uv");a=r.getUniformLocation(A,"uvOffset");b=r.getUniformLocation(A,"uvScale");c=r.getUniformLocation(A,"rotation");d=r.getUniformLocation(A,"scale");e=r.getUniformLocation(A,"color");f=r.getUniformLocation(A,"map");g=r.getUniformLocation(A,"opacity");h=r.getUniformLocation(A,"modelViewMatrix");k=r.getUniformLocation(A,"projectionMatrix");l=
|
|
|
r.getUniformLocation(A,"fogType");n=r.getUniformLocation(A,"fogDensity");q=r.getUniformLocation(A,"fogNear");s=r.getUniformLocation(A,"fogFar");u=r.getUniformLocation(A,"fogColor");t=r.getUniformLocation(A,"alphaTest");w=document.createElement("canvas");w.width=8;w.height=8;H=w.getContext("2d");H.fillStyle="#ffffff";H.fillRect(0,0,w.width,w.height);z=new THREE.Texture(w);z.needsUpdate=!0};this.render=function(F,H,N,y){N=F.__webglSprites;if(y=N.length){r.useProgram(A);r.enableVertexAttribArray(p);
|
|
|
-r.enableVertexAttribArray(v);r.disable(r.CULL_FACE);r.enable(r.BLEND);r.bindBuffer(r.ARRAY_BUFFER,C);r.vertexAttribPointer(p,2,r.FLOAT,!1,16,0);r.vertexAttribPointer(v,2,r.FLOAT,!1,16,8);r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,B);r.uniformMatrix4fv(k,!1,H.projectionMatrix.elements);r.activeTexture(r.TEXTURE0);r.uniform1i(f,0);var K=0,E=0,D=F.fog;D?(r.uniform3f(u,D.color.r,D.color.g,D.color.b),D instanceof THREE.Fog?(r.uniform1f(q,D.near),r.uniform1f(s,D.far),r.uniform1i(l,1),E=K=1):D instanceof THREE.FogExp2&&
|
|
|
-(r.uniform1f(n,D.density),r.uniform1i(l,2),E=K=2)):(r.uniform1i(l,0),E=K=0);for(var G,P=[],D=0;D<y;D++)G=N[D],!1!==G.visible&&(G._modelViewMatrix.multiplyMatrices(H.matrixWorldInverse,G.matrixWorld),G.z=-G._modelViewMatrix.elements[14]);N.sort(w);for(D=0;D<y;D++)G=N[D],!1!==G.visible&&(H=G.material,r.uniform1f(t,H.alphaTest),r.uniformMatrix4fv(h,!1,G._modelViewMatrix.elements),P[0]=G.scale.x,P[1]=G.scale.y,G=F.fog&&H.fog?E:0,K!==G&&(r.uniform1i(l,G),K=G),null!==H.map?(r.uniform2f(a,H.map.offset.x,
|
|
|
+r.enableVertexAttribArray(v);r.disable(r.CULL_FACE);r.enable(r.BLEND);r.bindBuffer(r.ARRAY_BUFFER,C);r.vertexAttribPointer(p,2,r.FLOAT,!1,16,0);r.vertexAttribPointer(v,2,r.FLOAT,!1,16,8);r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,B);r.uniformMatrix4fv(k,!1,H.projectionMatrix.elements);r.activeTexture(r.TEXTURE0);r.uniform1i(f,0);var K=0,D=0,E=F.fog;E?(r.uniform3f(u,E.color.r,E.color.g,E.color.b),E instanceof THREE.Fog?(r.uniform1f(q,E.near),r.uniform1f(s,E.far),r.uniform1i(l,1),D=K=1):E instanceof THREE.FogExp2&&
|
|
|
+(r.uniform1f(n,E.density),r.uniform1i(l,2),D=K=2)):(r.uniform1i(l,0),D=K=0);for(var G,P=[],E=0;E<y;E++)G=N[E],!1!==G.visible&&(G._modelViewMatrix.multiplyMatrices(H.matrixWorldInverse,G.matrixWorld),G.z=-G._modelViewMatrix.elements[14]);N.sort(w);for(E=0;E<y;E++)G=N[E],!1!==G.visible&&(H=G.material,r.uniform1f(t,H.alphaTest),r.uniformMatrix4fv(h,!1,G._modelViewMatrix.elements),P[0]=G.scale.x,P[1]=G.scale.y,G=F.fog&&H.fog?D:0,K!==G&&(r.uniform1i(l,G),K=G),null!==H.map?(r.uniform2f(a,H.map.offset.x,
|
|
|
H.map.offset.y),r.uniform2f(b,H.map.repeat.x,H.map.repeat.y)):(r.uniform2f(a,0,0),r.uniform2f(b,1,1)),r.uniform1f(g,H.opacity),r.uniform3f(e,H.color.r,H.color.g,H.color.b),r.uniform1f(c,H.rotation),r.uniform2fv(d,P),x.setBlending(H.blending,H.blendEquation,H.blendSrc,H.blendDst),x.setDepthTest(H.depthTest),x.setDepthWrite(H.depthWrite),H.map&&H.map.image&&H.map.image.width?x.setTexture(H.map,0):x.setTexture(z,0),r.drawElements(r.TRIANGLES,6,r.UNSIGNED_SHORT,0));r.enable(r.CULL_FACE)}}};THREE.DepthPassPlugin=function(){this.enabled=!1;this.renderTarget=null;var a,b,c,d,e,f,g=new THREE.Frustum,h=new THREE.Matrix4;this.init=function(g){a=g.context;b=g;g=THREE.ShaderLib.depthRGBA;var h=THREE.UniformsUtils.clone(g.uniforms);c=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h});d=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0});e=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,
|
|
|
vertexShader:g.vertexShader,uniforms:h,skinning:!0});f=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});c._shadowPass=!0;d._shadowPass=!0;e._shadowPass=!0;f._shadowPass=!0};this.render=function(a,b){this.enabled&&this.update(a,b)};this.update=function(k,l){var n,q,s,u,t,p;a.clearColor(1,1,1,1);a.disable(a.BLEND);b.setDepthTest(!0);!0===k.autoUpdate&&k.updateMatrixWorld();l.matrixWorldInverse.getInverse(l.matrixWorld);h.multiplyMatrices(l.projectionMatrix,
|
|
|
l.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(this.renderTarget);b.clear();p=k.__webglObjects;n=0;for(q=p.length;n<q;n++)s=p[n],t=s.object,s.render=!1,!t.visible||(t instanceof THREE.Mesh||t instanceof THREE.ParticleSystem)&&t.frustumCulled&&!g.intersectsObject(t)||(t._modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,t.matrixWorld),s.render=!0);var v;n=0;for(q=p.length;n<q;n++)s=p[n],s.render&&(t=s.object,s=s.buffer,t instanceof THREE.ParticleSystem&&!t.customDepthMaterial||((v=
|