From 0f966c12e20bb94f2f0e49433f8da9852bec8324 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Mon, 18 Nov 2013 17:31:36 +0900 Subject: [PATCH] Updated builds. --- build/three.js | 2 +- build/three.min.js | 349 ++++++++++++++++++++++----------------------- 2 files changed, 175 insertions(+), 176 deletions(-) diff --git a/build/three.js b/build/three.js index c3350966d5..f0fbf9c2f0 100644 --- a/build/three.js +++ b/build/three.js @@ -36327,7 +36327,7 @@ THREE.SpritePlugin = function () { sprite = sprites[ i ]; material = sprite.material; - if ( ! sprite.visible || material.opacity === 0 ) continue; + if ( sprite.visible === false ) continue; sprite._modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld ); sprite.z = - sprite._modelViewMatrix.elements[ 14 ]; diff --git a/build/three.min.js b/build/three.min.js index 57f6761306..d460bd5f1d 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -90,7 +90,7 @@ f*d,b[1]=f*e,b[5]=f*g,b[9]=-c,b[2]=i*c-k,b[6]=m+a*c,b[10]=f*h):"ZXY"===a.order?( h*g,b[4]=-e,b[8]=d*g,b[1]=a*e+m,b[5]=f*g,b[9]=i*e-k,b[2]=k*e-i,b[6]=c*g,b[10]=m*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){console.warn("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,h=c+c,g=d+d,i=e+e,a=c*h,k=c*g,c= c*i,m=d*g,d=d*i,e=e*i,h=f*h,g=f*g,f=f*i;b[0]=1-(m+e);b[4]=k-f;b[8]=c+g;b[1]=k+f;b[5]=1-(a+e);b[9]=d-h;b[2]=c-g;b[6]=d+h;b[10]=1-(a+m);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f){var h=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);h[0]=a.x; h[4]=b.x;h[8]=c.x;h[1]=a.y;h[5]=b.y;h[9]=c.y;h[2]=a.z;h[6]=b.z;h[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],h=c[4],g=c[8],i=c[12],k=c[1],m=c[5],l=c[9],p=c[13],s=c[2],r=c[6],q=c[10],n=c[14],v=c[3],u=c[7],t=c[11],c=c[15], -w=d[0],F=d[4],B=d[8],y=d[12],z=d[1],x=d[5],G=d[9],H=d[13],D=d[2],J=d[6],A=d[10],M=d[14],E=d[3],T=d[7],R=d[11],d=d[15];e[0]=f*w+h*z+g*D+i*E;e[4]=f*F+h*x+g*J+i*T;e[8]=f*B+h*G+g*A+i*R;e[12]=f*y+h*H+g*M+i*d;e[1]=k*w+m*z+l*D+p*E;e[5]=k*F+m*x+l*J+p*T;e[9]=k*B+m*G+l*A+p*R;e[13]=k*y+m*H+l*M+p*d;e[2]=s*w+r*z+q*D+n*E;e[6]=s*F+r*x+q*J+n*T;e[10]=s*B+r*G+q*A+n*R;e[14]=s*y+r*H+q*M+n*d;e[3]=v*w+u*z+t*D+c*E;e[7]=v*F+u*x+t*J+c*T;e[11]=v*B+u*G+t*A+c*R;e[15]=v*y+u*H+t*M+c*d;return this},multiplyToArray:function(a,b, +x=d[0],G=d[4],B=d[8],y=d[12],z=d[1],D=d[5],H=d[9],F=d[13],w=d[2],J=d[6],A=d[10],N=d[14],E=d[3],T=d[7],R=d[11],d=d[15];e[0]=f*x+h*z+g*w+i*E;e[4]=f*G+h*D+g*J+i*T;e[8]=f*B+h*H+g*A+i*R;e[12]=f*y+h*F+g*N+i*d;e[1]=k*x+m*z+l*w+p*E;e[5]=k*G+m*D+l*J+p*T;e[9]=k*B+m*H+l*A+p*R;e[13]=k*y+m*F+l*N+p*d;e[2]=s*x+r*z+q*w+n*E;e[6]=s*G+r*D+q*J+n*T;e[10]=s*B+r*H+q*A+n*R;e[14]=s*y+r*F+q*N+n*d;e[3]=v*x+u*z+t*w+c*E;e[7]=v*G+u*D+t*J+c*T;e[11]=v*B+u*H+t*A+c*R;e[15]=v*y+u*F+t*N+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;cf.scale.x)return s;s.push({distance:r,point:f.position,face:null,object:f})}else if(f instanceof a.LOD)d.getPositionFromMatrix(f.matrixWorld),r=m.ray.origin.distanceTo(d),k(f.getObjectForDistance(r),m,s);else if(f instanceof a.Mesh){var q=f.geometry;null===q.boundingSphere&&q.computeBoundingSphere();b.copy(q.boundingSphere);b.applyMatrix4(f.matrixWorld);if(!1===m.ray.isIntersectionSphere(b))return s;e.getInverse(f.matrixWorld);c.copy(m.ray).applyMatrix4(e);if(null!==q.boundingBox&&!1===c.isIntersectionBox(q.boundingBox))return s;if(q instanceof a.BufferGeometry){var n=f.material;if(void 0=== -n||!1===q.dynamic)return s;var v,u,t=m.precision;if(void 0!==q.attributes.index)for(var w=q.offsets,F=q.attributes.index.array,B=q.attributes.position.array,y=q.offsets.length,z=q.attributes.index.array.length/3,z=0;zm.far)||s.push({distance:r,point:v,face:null,faceIndex:null,object:f}));else{B=q.attributes.position.array;z=q.attributes.position.array.length;for(q=0;qm.far)||s.push({distance:r,point:v,face:null,faceIndex:null,object:f}))}}else if(q instanceof a.Geometry){F=f.material instanceof a.MeshFaceMaterial;B=!0===F?f.material.materials:null;t=m.precision;w=q.vertices;y=0;for(z=q.faces.length;ym.far)||s.push({distance:r,point:v,face:x,faceIndex:y,object:f})))}}else if(f instanceof a.Line){t=m.linePrecision;n=t*t;q=f.geometry;null===q.boundingSphere&&q.computeBoundingSphere();b.copy(q.boundingSphere);b.applyMatrix4(f.matrixWorld);if(!1===m.ray.isIntersectionSphere(b))return s;e.getInverse(f.matrixWorld);c.copy(m.ray).applyMatrix4(e);if(q instanceof a.Geometry){w=q.vertices;t=w.length;v=new a.Vector3;u=new a.Vector3;z=f.type===a.LineStrip?1: -2;for(q=0;qn||(r=c.origin.distanceTo(u),rm.far||s.push({distance:r,point:v.clone().applyMatrix4(f.matrixWorld),face:null,faceIndex:null,object:f}))}}},m=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;dm.far)||s.push({distance:r,point:v,face:null,faceIndex:null,object:f}))}}else if(q instanceof a.Geometry){G=f.material instanceof a.MeshFaceMaterial;B=!0===G?f.material.materials:null;t=m.precision;x=q.vertices;y=0;for(z=q.faces.length;ym.far)||s.push({distance:r,point:v,face:D,faceIndex:y,object:f})))}}else if(f instanceof a.Line){t=m.linePrecision;n=t*t;q=f.geometry;null===q.boundingSphere&&q.computeBoundingSphere();b.copy(q.boundingSphere);b.applyMatrix4(f.matrixWorld);if(!1===m.ray.isIntersectionSphere(b))return s;e.getInverse(f.matrixWorld);c.copy(m.ray).applyMatrix4(e);if(q instanceof a.Geometry){x=q.vertices;t=x.length;v=new a.Vector3;u=new a.Vector3;z=f.type===a.LineStrip?1: +2;for(q=0;qn||(r=c.origin.distanceTo(u),rm.far||s.push({distance:r,point:v.clone().applyMatrix4(f.matrixWorld),face:null,faceIndex:null,object:f}))}}},m=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;de&&0>f||0>h&&0>g)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>h?c=Math.max(c,h/(h-g)):0>g&&(d=Math.min(d,h/(h-g)));if(dg.positionScreen.x||1g.positionScreen.y||1g.positionScreen.z||1< -g.positionScreen.z)}fa=0;for(S=ra.length;fa(ia.positionScreen.x-O.positionScreen.x)*(P.positionScreen.y-O.positionScreen.y)-(ia.positionScreen.y-O.positionScreen.y)*(P.positionScreen.x-O.positionScreen.x),ca===THREE.DoubleSide|| -z===(ca===THREE.FrontSide)){if(p===r){var Ba=new THREE.RenderableFace3;s.push(Ba);r++;p++;l=Ba}else l=s[p++];l.id=X.id;l.v1.copy(O);l.v2.copy(P);l.v3.copy(ia);l.normalModel.copy(N.normal);!1===z&&(ca===THREE.BackSide||ca===THREE.DoubleSide)&&l.normalModel.negate();l.normalModel.applyMatrix3(T).normalize();l.normalModelView.copy(l.normalModel).applyMatrix3(R);l.centroidModel.copy(N.centroid).applyMatrix4(M);ia=N.vertexNormals;O=0;for(P=Math.min(ia.length,3);Ox.z&&(w===B?(ra=new THREE.RenderableSprite,F.push(ra),B++,w++,t=ra):t=F[w++],t.id=X.id,t.x=x.x*la,t.y=x.y*la,t.z=x.z,t.object=X,t.rotation=X.rotation,t.scale.x=X.scale.x*Math.abs(t.x-(x.x+f.projectionMatrix.elements[0])/(x.w+f.projectionMatrix.elements[12])), -t.scale.y=X.scale.y*Math.abs(t.y-(x.y+f.projectionMatrix.elements[5])/(x.w+f.projectionMatrix.elements[13])),t.material=X.material,y.elements.push(t)));!0===m&&y.elements.sort(b);return y}};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}; +f.push(b);h++;e++;d=b}else d=f[e++];d.id=a.id;d.object=a;null!==a.renderDepth?d.z=a.renderDepth:(z.getPositionFromMatrix(a.matrixWorld),z.applyProjection(A),d.z=z.z);return d},Y=function(a){if(!1!==a.visible){a instanceof THREE.Light?y.lights.push(a):a instanceof THREE.Mesh||a instanceof THREE.Line?(!1===a.frustumCulled||!0===Q.intersectsObject(a))&&y.objects.push(S(a)):a instanceof THREE.Sprite&&y.sprites.push(S(a));for(var b=0,c=a.children.length;bg.positionScreen.x||1g.positionScreen.y||1g.positionScreen.z|| +1(ia.positionScreen.x-O.positionScreen.x)*(P.positionScreen.y-O.positionScreen.y)-(ia.positionScreen.y-O.positionScreen.y)*(P.positionScreen.x-O.positionScreen.x), +aa===THREE.DoubleSide||z===(aa===THREE.FrontSide)){if(p===r){var Ca=new THREE.RenderableFace3;s.push(Ca);r++;p++;l=Ca}else l=s[p++];l.id=W.id;l.v1.copy(O);l.v2.copy(P);l.v3.copy(ia);l.normalModel.copy(ba.normal);!1===z&&(aa===THREE.BackSide||aa===THREE.DoubleSide)&&l.normalModel.negate();l.normalModel.applyMatrix3(T).normalize();l.normalModelView.copy(l.normalModel).applyMatrix3(R);l.centroidModel.copy(ba.centroid).applyMatrix4(N);ia=ba.vertexNormals;O=0;for(P=Math.min(ia.length,3);OD.z&&(x===B?(ra=new THREE.RenderableSprite,G.push(ra),B++,x++,t=ra):t=G[x++],t.id=W.id,t.x=D.x*la,t.y=D.y*la,t.z=D.z,t.object=W,t.rotation=W.rotation,t.scale.x=W.scale.x* +Math.abs(t.x-(D.x+f.projectionMatrix.elements[0])/(D.w+f.projectionMatrix.elements[12])),t.scale.y=W.scale.y*Math.abs(t.y-(D.y+f.projectionMatrix.elements[5])/(D.w+f.projectionMatrix.elements[13])),t.material=W.material,y.elements.push(t)));!0===m&&y.elements.sort(b);return y}};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;bd?-1:1,e.vertexTangents[c]=new THREE.Vector4(w.x,w.y,w.z,d)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;cd?-1:1,e.vertexTangents[c]=new THREE.Vector4(x.x,x.y,x.z,d)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;cd;d++)if(e[d]==e[(d+1)%3]){a.push(f);break}}for(f=a.length-1;0<=f;f--){e=a[f];this.faces.splice(e,1);c=0;for(h=this.faceVertexUvs.length;cZ?-1:1;h[4*a]=R.x;h[4*a+1]=R.y;h[4*a+2]=R.z;h[4*a+3]=C}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 b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,e=this.attributes.uv.array,f=c.length/3;void 0===this.attributes.tangent&& -(this.attributes.tangent={itemSize:4,array:new Float32Array(4*f)});for(var h=this.attributes.tangent.array,g=[],i=[],k=0;kY?-1:1;h[4*a]=R.x;h[4*a+1]=R.y;h[4*a+2]=R.z;h[4*a+3]=C}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 b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,e=this.attributes.uv.array,f=c.length/3;void 0===this.attributes.tangent&& +(this.attributes.tangent={itemSize:4,array:new Float32Array(4*f)});for(var h=this.attributes.tangent.array,g=[],i=[],k=0;ka.length?".":a.join("/"))+"/"},initMaterials:function(a,b){for(var c=[],d=0;da.opacity)i.transparent=a.transparent;void 0!==a.depthTest&&(i.depthTest=a.depthTest);void 0!==a.depthWrite&&(i.depthWrite=a.depthWrite);void 0!==a.visible&&(i.visible=a.visible);void 0!==a.flipSided&&(i.side=THREE.BackSide); void 0!==a.doubleSided&&(i.side=THREE.DoubleSide);void 0!==a.wireframe&&(i.wireframe=a.wireframe);void 0!==a.vertexColors&&("face"===a.vertexColors?i.vertexColors=THREE.FaceColors:a.vertexColors&&(i.vertexColors=THREE.VertexColors));a.colorDiffuse?i.color=f(a.colorDiffuse):a.DbgColor&&(i.color=a.DbgColor);a.colorSpecular&&(i.specular=f(a.colorSpecular));a.colorAmbient&&(i.ambient=f(a.colorAmbient));a.transparency&&(i.opacity=a.transparency);a.specularCoef&&(i.shininess=a.specularCoef);a.mapDiffuse&& b&&e(i,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap,a.mapDiffuseAnisotropy);a.mapLight&&b&&e(i,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap,a.mapLightAnisotropy);a.mapBump&&b&&e(i,"bumpMap",a.mapBump,a.mapBumpRepeat,a.mapBumpOffset,a.mapBumpWrap,a.mapBumpAnisotropy);a.mapNormal&&b&&e(i,"normalMap",a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap,a.mapNormalAnisotropy);a.mapSpecular&&b&&e(i,"specularMap",a.mapSpecular,a.mapSpecularRepeat, @@ -216,12 +216,12 @@ THREE.XHRLoader.prototype={constructor:THREE.XHRLoader,load:function(a,b,c,d){va THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b,c,d){var e=this,f=document.createElement("img");void 0!==b&&f.addEventListener("load",function(){e.manager.itemEnd(a);b(this)},!1);void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1);void 0!==d&&f.addEventListener("error",function(a){d(a)},!1);void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin);f.src=a;e.manager.itemStart(a);return f},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.JSONLoader=function(a){THREE.Loader.call(this,a);this.withCredentials=!1};THREE.JSONLoader.prototype=Object.create(THREE.Loader.prototype);THREE.JSONLoader.prototype.load=function(a,b,c){c=c&&"string"===typeof c?c:this.extractUrlBase(a);this.onLoadStart();this.loadAjaxJSON(this,a,b,c)}; THREE.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,e){var f=new XMLHttpRequest,h=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var g=JSON.parse(f.responseText),g=a.parse(g,d);c(g.geometry,g.materials)}else console.warn("THREE.JSONLoader: ["+b+"] seems to be unreachable or file there is empty");a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load ["+b+"] ["+f.status+"]");else f.readyState===f.LOADING?e&&(0===h&& (h=f.getResponseHeader("Content-Length")),e({total:h,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&void 0!==e&&(h=f.getResponseHeader("Content-Length"))};f.open("GET",b,!0);f.withCredentials=this.withCredentials;f.send(null)}; -THREE.JSONLoader.prototype.parse=function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1,e,f,h,g,i,k,m,l,p,s,r,q,n,v,u=a.faces;p=a.vertices;var t=a.normals,w=a.colors,F=0;if(void 0!==a.uvs){for(e=0;ef;f++)l=u[g++],v=n[2*l],l=n[2*l+1],v=new THREE.Vector2(v,l),2!==f&&c.faceVertexUvs[e][h].push(v),0!==f&&c.faceVertexUvs[e][h+1].push(v)}m&&(m=3*u[g++],s.normal.set(t[m++],t[m++],t[m]),q.normal.copy(s.normal));if(r)for(e=0;4>e;e++)m=3*u[g++],r=new THREE.Vector3(t[m++], -t[m++],t[m]),2!==e&&s.vertexNormals.push(r),0!==e&&q.vertexNormals.push(r);k&&(k=u[g++],k=w[k],s.color.setHex(k),q.color.setHex(k));if(p)for(e=0;4>e;e++)k=u[g++],k=w[k],2!==e&&s.vertexColors.push(new THREE.Color(k)),0!==e&&q.vertexColors.push(new THREE.Color(k));c.faces.push(s);c.faces.push(q)}else{s=new THREE.Face3;s.a=u[g++];s.b=u[g++];s.c=u[g++];h&&(h=u[g++],s.materialIndex=h);h=c.faces.length;if(e)for(e=0;ef;f++)l=u[g++],v=n[2*l],l=n[2*l+1], -v=new THREE.Vector2(v,l),c.faceVertexUvs[e][h].push(v)}m&&(m=3*u[g++],s.normal.set(t[m++],t[m++],t[m]));if(r)for(e=0;3>e;e++)m=3*u[g++],r=new THREE.Vector3(t[m++],t[m++],t[m]),s.vertexNormals.push(r);k&&(k=u[g++],s.color.setHex(w[k]));if(p)for(e=0;3>e;e++)k=u[g++],s.vertexColors.push(new THREE.Color(w[k]));c.faces.push(s)}if(a.skinWeights){g=0;for(i=a.skinWeights.length;gf;f++)l=u[g++],v=n[2*l],l=n[2*l+1],v=new THREE.Vector2(v,l),2!==f&&c.faceVertexUvs[e][h].push(v),0!==f&&c.faceVertexUvs[e][h+1].push(v)}m&&(m=3*u[g++],s.normal.set(t[m++],t[m++],t[m]),q.normal.copy(s.normal));if(r)for(e=0;4>e;e++)m=3*u[g++],r=new THREE.Vector3(t[m++], +t[m++],t[m]),2!==e&&s.vertexNormals.push(r),0!==e&&q.vertexNormals.push(r);k&&(k=u[g++],k=x[k],s.color.setHex(k),q.color.setHex(k));if(p)for(e=0;4>e;e++)k=u[g++],k=x[k],2!==e&&s.vertexColors.push(new THREE.Color(k)),0!==e&&q.vertexColors.push(new THREE.Color(k));c.faces.push(s);c.faces.push(q)}else{s=new THREE.Face3;s.a=u[g++];s.b=u[g++];s.c=u[g++];h&&(h=u[g++],s.materialIndex=h);h=c.faces.length;if(e)for(e=0;ef;f++)l=u[g++],v=n[2*l],l=n[2*l+1], +v=new THREE.Vector2(v,l),c.faceVertexUvs[e][h].push(v)}m&&(m=3*u[g++],s.normal.set(t[m++],t[m++],t[m]));if(r)for(e=0;3>e;e++)m=3*u[g++],r=new THREE.Vector3(t[m++],t[m++],t[m]),s.vertexNormals.push(r);k&&(k=u[g++],s.color.setHex(x[k]));if(p)for(e=0;3>e;e++)k=u[g++],s.vertexColors.push(new THREE.Color(x[k]));c.faces.push(s)}if(a.skinWeights){g=0;for(i=a.skinWeights.length;gA.parameters.opacity&&(A.parameters.transparent=!0);A.parameters.normalMap?(G=THREE.ShaderLib.normalmap,D=THREE.UniformsUtils.clone(G.uniforms),v=A.parameters.color,J=A.parameters.specular,n=A.parameters.ambient, -H=A.parameters.shininess,D.tNormal.value=y.textures[A.parameters.normalMap],A.parameters.normalScale&&D.uNormalScale.value.set(A.parameters.normalScale[0],A.parameters.normalScale[1]),A.parameters.map&&(D.tDiffuse.value=A.parameters.map,D.enableDiffuse.value=!0),A.parameters.envMap&&(D.tCube.value=A.parameters.envMap,D.enableReflection.value=!0,D.uReflectivity.value=A.parameters.reflectivity),A.parameters.lightMap&&(D.tAO.value=A.parameters.lightMap,D.enableAO.value=!0),A.parameters.specularMap&& -(D.tSpecular.value=y.textures[A.parameters.specularMap],D.enableSpecular.value=!0),A.parameters.displacementMap&&(D.tDisplacement.value=y.textures[A.parameters.displacementMap],D.enableDisplacement.value=!0,D.uDisplacementBias.value=A.parameters.displacementBias,D.uDisplacementScale.value=A.parameters.displacementScale),D.uDiffuseColor.value.setHex(v),D.uSpecularColor.value.setHex(J),D.uAmbientColor.value.setHex(n),D.uShininess.value=H,A.parameters.opacity&&(D.uOpacity.value=A.parameters.opacity), -r=new THREE.ShaderMaterial({fragmentShader:G.fragmentShader,vertexShader:G.vertexShader,uniforms:D,lights:!0,fog:!0})):r=new THREE[A.type](A.parameters);r.name=M;y.materials[M]=r}for(M in x.materials)if(A=x.materials[M],A.parameters.materials){E=[];for(v=0;vA.parameters.opacity&&(A.parameters.transparent=!0);A.parameters.normalMap?(H=THREE.ShaderLib.normalmap,w=THREE.UniformsUtils.clone(H.uniforms),v=A.parameters.color,J=A.parameters.specular,n=A.parameters.ambient, +F=A.parameters.shininess,w.tNormal.value=y.textures[A.parameters.normalMap],A.parameters.normalScale&&w.uNormalScale.value.set(A.parameters.normalScale[0],A.parameters.normalScale[1]),A.parameters.map&&(w.tDiffuse.value=A.parameters.map,w.enableDiffuse.value=!0),A.parameters.envMap&&(w.tCube.value=A.parameters.envMap,w.enableReflection.value=!0,w.uReflectivity.value=A.parameters.reflectivity),A.parameters.lightMap&&(w.tAO.value=A.parameters.lightMap,w.enableAO.value=!0),A.parameters.specularMap&& +(w.tSpecular.value=y.textures[A.parameters.specularMap],w.enableSpecular.value=!0),A.parameters.displacementMap&&(w.tDisplacement.value=y.textures[A.parameters.displacementMap],w.enableDisplacement.value=!0,w.uDisplacementBias.value=A.parameters.displacementBias,w.uDisplacementScale.value=A.parameters.displacementScale),w.uDiffuseColor.value.setHex(v),w.uSpecularColor.value.setHex(J),w.uAmbientColor.value.setHex(n),w.uShininess.value=F,A.parameters.opacity&&(w.uOpacity.value=A.parameters.opacity), +r=new THREE.ShaderMaterial({fragmentShader:H.fragmentShader,vertexShader:H.vertexShader,uniforms:w,lights:!0,fog:!0})):r=new THREE[A.type](A.parameters);r.name=N;y.materials[N]=r}for(N in D.materials)if(A=D.materials[N],A.parameters.materials){E=[];for(v=0;v=this.objects[d].distance)this.objects[d-1].object.visible=!1,this.objects[d].object.visible=!0;else break;for(;d=g||(g*=f.intensity,c.add(Ka.multiplyScalar(g)))}else f instanceof THREE.PointLight&&(h=sa.getPositionFromMatrix(f.matrixWorld),g=b.dot(sa.subVectors(h,a).normalize()),0>=g||(g*=0==f.distance?1:1-Math.min(a.distanceTo(h)/f.distance,1),0!=g&&(g*=f.intensity,c.add(Ka.multiplyScalar(g)))))}} -function c(a,b,c,d){m(b);l(c);p(d);s(a.getStyle());H.stroke();Ca.expandByScalar(2*b)}function d(a){r(a.getStyle());H.fill()}function e(a,b,c,e,f,h,g,j,i,k,m,l,n){if(!(n instanceof THREE.DataTexture||void 0===n.image||0===n.image.width)){if(!0===n.needsUpdate){var p=n.wrapS===THREE.RepeatWrapping,q=n.wrapT===THREE.RepeatWrapping;Fa[n.id]=H.createPattern(n.image,!0===p&&!0===q?"repeat":!0===p&&!1===q?"repeat-x":!1===p&&!0===q?"repeat-y":"no-repeat");n.needsUpdate=!1}void 0===Fa[n.id]?r("rgba(0,0,0,1)"): +THREE.Scene.prototype.clone=function(a){void 0===a&&(a=new THREE.Scene);THREE.Object3D.prototype.clone.call(this,a);null!==this.fog&&(a.fog=this.fog.clone());null!==this.overrideMaterial&&(a.overrideMaterial=this.overrideMaterial.clone());a.autoUpdate=this.autoUpdate;a.matrixAutoUpdate=this.matrixAutoUpdate;return a};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.CanvasRenderer=function(a){function b(a,b,c){for(var d=0,e=x.length;d=g||(g*=f.intensity,c.add(Ka.multiplyScalar(g)))}else f instanceof THREE.PointLight&&(h=sa.getPositionFromMatrix(f.matrixWorld),g=b.dot(sa.subVectors(h,a).normalize()),0>=g||(g*=0==f.distance?1:1-Math.min(a.distanceTo(h)/f.distance,1),0!=g&&(g*=f.intensity,c.add(Ka.multiplyScalar(g)))))}} +function c(a,b,c,d){m(b);l(c);p(d);s(a.getStyle());F.stroke();Da.expandByScalar(2*b)}function d(a){r(a.getStyle());F.fill()}function e(a,b,c,e,f,h,g,j,i,k,m,l,n){if(!(n instanceof THREE.DataTexture||void 0===n.image||0===n.image.width)){if(!0===n.needsUpdate){var p=n.wrapS===THREE.RepeatWrapping,q=n.wrapT===THREE.RepeatWrapping;Fa[n.id]=F.createPattern(n.image,!0===p&&!0===q?"repeat":!0===p&&!1===q?"repeat-x":!1===p&&!0===q?"repeat-y":"no-repeat");n.needsUpdate=!1}void 0===Fa[n.id]?r("rgba(0,0,0,1)"): r(Fa[n.id]);var p=n.offset.x/n.repeat.x,q=n.offset.y/n.repeat.y,s=n.image.width*n.repeat.x,t=n.image.height*n.repeat.y,g=(g+p)*s,j=(1-j+q)*t,c=c-a,e=e-b,f=f-a,h=h-b,i=(i+p)*s-g,k=(1-k+q)*t-j,m=(m+p)*s-g,l=(1-l+q)*t-j,p=i*l-m*k;0===p?(void 0===la[n.id]&&(b=document.createElement("canvas"),b.width=n.image.width,b.height=n.image.height,b=b.getContext("2d"),b.drawImage(n.image,0,0),la[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data),b=la[n.id],g=4*(Math.floor(g)+Math.floor(j)*n.image.width), -O.setRGB(b[g]/255,b[g+1]/255,b[g+2]/255),d(O)):(p=1/p,n=(l*c-k*f)*p,k=(l*e-k*h)*p,c=(i*f-m*c)*p,e=(i*h-m*e)*p,a=a-n*g-c*j,g=b-k*g-e*j,H.save(),H.transform(n,k,c,e,a,g),H.fill(),H.restore())}}function f(a,b,c,d,e,f,h,g,j,i,k,m,n){var l,p;l=n.width-1;p=n.height-1;h*=l;g*=p;c-=a;d-=b;e-=a;f-=b;j=j*l-h;i=i*p-g;k=k*l-h;m=m*p-g;p=1/(j*m-k*i);l=(m*c-i*e)*p;i=(m*d-i*f)*p;c=(j*e-k*c)*p;d=(j*f-k*d)*p;a=a-l*h-c*g;b=b-i*h-d*g;H.save();H.transform(l,i,c,d,a,b);H.clip();H.drawImage(n,0,0);H.restore()}function h(a, -b,c,d){ta[0]=255*a.r|0;ta[1]=255*a.g|0;ta[2]=255*a.b|0;ta[4]=255*b.r|0;ta[5]=255*b.g|0;ta[6]=255*b.b|0;ta[8]=255*c.r|0;ta[9]=255*c.g|0;ta[10]=255*c.b|0;ta[12]=255*d.r|0;ta[13]=255*d.g|0;ta[14]=255*d.b|0;j.putImageData(Oa,0,0);Da.drawImage(Pa,0,0);return La}function g(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 i(a){A!==a&&(A=H.globalAlpha=a)}function k(a){M!==a&&(a===THREE.NormalBlending?H.globalCompositeOperation="source-over": -a===THREE.AdditiveBlending?H.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&(H.globalCompositeOperation="darker"),M=a)}function m(a){R!==a&&(R=H.lineWidth=a)}function l(a){Q!==a&&(Q=H.lineCap=a)}function p(a){aa!==a&&(aa=H.lineJoin=a)}function s(a){E!==a&&(E=H.strokeStyle=a)}function r(a){T!==a&&(T=H.fillStyle=a)}function q(a,b){if(V!==a||C!==b)H.setLineDash([a,b]),V=a,C=b}console.log("THREE.CanvasRenderer",THREE.REVISION);var n=THREE.Math.smoothstep,a=a||{},v=this,u,t,w,F=new THREE.Projector, -B=void 0!==a.canvas?a.canvas:document.createElement("canvas"),y=B.width,z=B.height,x=Math.floor(y/2),G=Math.floor(z/2),H=B.getContext("2d"),D=new THREE.Color(0),J=0,A=1,M=0,E=null,T=null,R=null,Q=null,aa=null,V=null,C=0,S,Z,K,ea;new THREE.RenderableVertex;new THREE.RenderableVertex;var Ea,za,Ga,ya,N,fa,O=new THREE.Color,P=new THREE.Color,ca=new THREE.Color,X=new THREE.Color,ka=new THREE.Color,ra=new THREE.Color,ia=new THREE.Color,Ka=new THREE.Color,Fa={},la={},Ba,Ua,Qa,va,bb,cb,Ma,fb,sb,pb,ua=new THREE.Box2, -ma=new THREE.Box2,Ca=new THREE.Box2,gb=new THREE.Color,qa=new THREE.Color,ga=new THREE.Color,sa=new THREE.Vector3,Pa,j,Oa,ta,La,Da,Ra=16;Pa=document.createElement("canvas");Pa.width=Pa.height=2;j=Pa.getContext("2d");j.fillStyle="rgba(0,0,0,1)";j.fillRect(0,0,2,2);Oa=j.getImageData(0,0,2,2);ta=Oa.data;La=document.createElement("canvas");La.width=La.height=Ra;Da=La.getContext("2d");Da.translate(-Ra/2,-Ra/2);Da.scale(Ra,Ra);Ra--;void 0===H.setLineDash&&(H.setLineDash=void 0!==H.mozDash?function(a){H.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){y=a*this.devicePixelRatio;z=b*this.devicePixelRatio;x=Math.floor(y/2);G=Math.floor(z/2);B.width=y;B.height=z;1!==this.devicePixelRatio&& -!1!==c&&(B.style.width=a+"px",B.style.height=b+"px");ua.set(new THREE.Vector2(-x,-G),new THREE.Vector2(x,G));ma.set(new THREE.Vector2(-x,-G),new THREE.Vector2(x,G));A=1;M=0;aa=Q=R=T=E=null};this.setClearColor=function(a,b){D.set(a);J=void 0!==b?b:1;ma.set(new THREE.Vector2(-x,-G),new THREE.Vector2(x,G))};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(){H.setTransform(1,0,0,-1,x,G);!1===ma.empty()&&(ma.intersect(ua),ma.expandByScalar(2),1>J&&H.clearRect(ma.min.x|0,ma.min.y|0,ma.max.x-ma.min.x|0,ma.max.y-ma.min.y|0),0Z.positionScreen.z||1K.positionScreen.z||1ea.positionScreen.z||1J&&F.clearRect(ma.min.x|0,ma.min.y|0,ma.max.x-ma.min.x|0,ma.max.y-ma.min.y|0),0Y.positionScreen.z||1K.positionScreen.z||1da.positionScreen.z||1l;l++)K.autoScaleCubemaps&&!f?(n=k,r=l,t=c.image[l],v=ac,t.width<=v&&t.height<=v||(w=Math.max(t.width,t.height),u=Math.floor(t.width*v/w),v=Math.floor(t.height*v/w),w=document.createElement("canvas"),w.width=u,w.height=v,w.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,u,v),t=w),n[r]=t):k[l]=c.image[l];l=k[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);r=M(c.format);t=M(c.type);D(j.TEXTURE_CUBE_MAP, -c,n);for(l=0;6>l;l++)if(f){v=k[l].mipmaps;w=0;for(A=v.length;wl;l++)K.autoScaleCubemaps&&!f?(n=k,r=l,t=c.image[l],v=ac,t.width<=v&&t.height<=v||(x=Math.max(t.width,t.height),u=Math.floor(t.width*v/x),v=Math.floor(t.height*v/x),x=document.createElement("canvas"),x.width=u,x.height=v,x.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,u,v),t=x),n[r]=t):k[l]=c.image[l];l=k[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);r=N(c.format);t=N(c.type);w(j.TEXTURE_CUBE_MAP, +c,n);for(l=0;6>l;l++)if(f){v=k[l].mipmaps;x=0;for(A=v.length;x=Mb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Mb);P+=1;return a}function B(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 y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function z(a){a!==va&&(j.lineWidth(a),va=a)}function x(a,b,c){Ba!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),Ba=a); -if(a&&(Ua!==b||Qa!==c))j.polygonOffset(b,c),Ua=b,Qa=c}function G(a){for(var a=a.split("\n"),b=0,c=a.length;b=Mb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Mb);P+=1;return a}function B(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 y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function z(a){a!==va&&(j.lineWidth(a),va=a)}function D(a,b,c){Ca!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),Ca=a); +if(a&&(Ua!==b||Qa!==c))j.polygonOffset(b,c),Ua=b,Qa=c}function H(a){for(var a=a.split("\n"),b=0,c=a.length;bb;b++)j.deleteFramebuffer(a.__webglFramebuffer[b]),j.deleteRenderbuffer(a.__webglRenderbuffer[b]); else j.deleteFramebuffer(a.__webglFramebuffer),j.deleteRenderbuffer(a.__webglRenderbuffer);K.info.memory.textures--},Fb=function(a){a=a.target;a.removeEventListener("dispose",Fb);Gb(a)},Hb=function(a){void 0!==a.__webglVertexBuffer&&j.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&j.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&j.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&j.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&& j.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&j.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&j.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&j.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&j.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&j.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&j.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)j.deleteBuffer(a.__webglCustomAttributesList[b].buffer); -K.info.memory.geometries--},Gb=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=ea.length;ad.numSupportedMorphTargets?(l.sort(k),l.length=d.numSupportedMorphTargets):l.length>d.numSupportedMorphNormals?l.sort(k):0===l.length&&l.push([0,0]);for(m=0;mAa;Aa++)Fa=R[Aa],Ma[hb]=Fa.x,Ma[hb+1]=Fa.y,Ma[hb+2]=Fa.z,hb+=3;else for(Aa=0;3>Aa;Aa++)Ma[hb]=S.x,Ma[hb+1]=S.y,Ma[hb+2]=S.z,hb+=3;j.bindBuffer(j.ARRAY_BUFFER,x.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Ma,D)}if(yb&&Cb&&K){C=0;for(O=da.length;CAa;Aa++)Da=ca[Aa],bb[Oa]=Da.x,bb[Oa+1]=Da.y,Oa+=2;0Aa;Aa++)Ka=Ea[Aa],cb[Pa]=Ka.x,cb[Pa+1]=Ka.y,Pa+=2;0Ba;Ba++)Fa=R[Ba],Ma[hb]=Fa.x,Ma[hb+1]=Fa.y,Ma[hb+2]=Fa.z,hb+=3;else for(Ba=0;3>Ba;Ba++)Ma[hb]=S.x,Ma[hb+1]=S.y,Ma[hb+2]=S.z,hb+=3;j.bindBuffer(j.ARRAY_BUFFER,w.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Ma,F)}if(yb&&Cb&&K){C=0;for(O=ca.length;CBa;Ba++)Ea=ya[Ba],bb[Oa]=Ea.x,bb[Oa+1]=Ea.y,Oa+=2;0Ba;Ba++)Ka=ba[Ba],cb[Pa]=Ka.x,cb[Pa+1]=Ka.y,Pa+=2;0f;f++){a.__webglFramebuffer[f]=j.createFramebuffer();a.__webglRenderbuffer[f]=j.createRenderbuffer();j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var h=a,g=j.TEXTURE_CUBE_MAP_POSITIVE_X+f;j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer[f]);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,g,h.__webglTexture,0);J(a.__webglRenderbuffer[f],a)}c&&j.generateMipmap(j.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=j.createFramebuffer(),a.__webglRenderbuffer= -a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:j.createRenderbuffer(),j.bindTexture(j.TEXTURE_2D,a.__webglTexture),D(j.TEXTURE_2D,a,c),j.texImage2D(j.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=j.TEXTURE_2D,j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer),j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&& +a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:j.createRenderbuffer(),j.bindTexture(j.TEXTURE_2D,a.__webglTexture),w(j.TEXTURE_2D,a,c),j.texImage2D(j.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=j.TEXTURE_2D,j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer),j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&& a.stencilBuffer&&j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a.__webglRenderbuffer):J(a.__webglRenderbuffer,a),c&&j.generateMipmap(j.TEXTURE_2D);b?j.bindTexture(j.TEXTURE_CUBE_MAP,null):j.bindTexture(j.TEXTURE_2D,null);j.bindRenderbuffer(j.RENDERBUFFER,null);j.bindFramebuffer(j.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ma,a=fb,d=bb,e=cb);b!==Ga&&(j.bindFramebuffer(j.FRAMEBUFFER,b), j.viewport(d,e,c,a),Ga=b);sb=c;pb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format: THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null}; @@ -519,7 +518,7 @@ e.generateMipmaps=!1;e.needsUpdate=!0;c&&c(e)};f.onerror=d;f.open("GET",a,!0);f. b,c,d){var e=[];e.loadCount=0;var f=new THREE.CompressedTexture;f.image=e;void 0!==b&&(f.mapping=b);f.flipY=!1;f.generateMipmaps=!1;var h=new XMLHttpRequest;h.onload=function(){var a=THREE.ImageUtils.parseDDS(h.response,!0);if(a.isCubemap)for(var b=a.mipmaps.length/a.mipmapCount,d=0;d>8&255,i>>16&255,i>>24&255)),d}d.mipmapCount=1;g[2]&131072&&!1!==b&&(d.mipmapCount=Math.max(1,g[7]));d.isCubemap=g[28]&512?!0:!1;d.width=g[4];d.height=g[3];for(var g=g[1]+4,f=d.width,h=d.height,i=d.isCubemap?6:1,m=0;m>8&255,i>>16&255,i>>24&255)),d}d.mipmapCount=1;g[2]&131072&&!1!==b&&(d.mipmapCount=Math.max(1,g[7]));d.isCubemap=g[28]&512?!0:!1;d.width=g[4];d.height=g[3];for(var g=g[1]+4,f=d.width,h=d.height,i=d.isCubemap?6:1,m=0;ml-1?0:l-1,s=l+1>e-1?e-1:l+1,r=0>m-1?0:m-1,q=m+1>d-1?d-1:m+1,n=[],v=[0,0,g[4*(l*d+m)]/255*b];n.push([-1,0,g[4*(l*d+r)]/255*b]);n.push([-1,-1,g[4*(p*d+r)]/255*b]);n.push([0,-1,g[4*(p*d+m)]/255*b]);n.push([1,-1,g[4*(p*d+q)]/255*b]);n.push([1,0,g[4*(l*d+q)]/255*b]);n.push([1,1,g[4*(s*d+q)]/255*b]);n.push([0,1,g[4*(s*d+m)]/255*b]);n.push([-1,1,g[4*(s*d+r)]/255*b]);p=[];r=n.length;for(s=0;se)return null;var f=[],h=[],g=[],i,k,m;if(0=l--){console.log("Warning, unable to triangulate polygon!");break}i=k;e<=i&&(i=0);k=i+1;e<=k&&(k=0);m=k+1;e<=m&&(m=0);var p;a:{var s=p=void 0,r=void 0,q=void 0,n=void 0,v=void 0,u=void 0,t=void 0,w= -void 0,s=a[h[i]].x,r=a[h[i]].y,q=a[h[k]].x,n=a[h[k]].y,v=a[h[m]].x,u=a[h[m]].y;if(1E-10>(q-s)*(u-r)-(n-r)*(v-s))p=!1;else{var F=void 0,B=void 0,y=void 0,z=void 0,x=void 0,G=void 0,H=void 0,D=void 0,J=void 0,A=void 0,J=D=H=w=t=void 0,F=v-q,B=u-n,y=s-v,z=r-u,x=q-s,G=n-r;for(p=0;pe)return null;var f=[],h=[],g=[],i,k,m;if(0=l--){console.log("Warning, unable to triangulate polygon!");break}i=k;e<=i&&(i=0);k=i+1;e<=k&&(k=0);m=k+1;e<=m&&(m=0);var p;a:{var s=p=void 0,r=void 0,q=void 0,n=void 0,v=void 0,u=void 0,t=void 0,x= +void 0,s=a[h[i]].x,r=a[h[i]].y,q=a[h[k]].x,n=a[h[k]].y,v=a[h[m]].x,u=a[h[m]].y;if(1E-10>(q-s)*(u-r)-(n-r)*(v-s))p=!1;else{var G=void 0,B=void 0,y=void 0,z=void 0,D=void 0,H=void 0,F=void 0,w=void 0,J=void 0,A=void 0,J=w=F=x=t=void 0,G=v-q,B=u-n,y=s-v,z=r-u,D=q-s,H=n-r;for(p=0;pi)h=d+1;else if(0b&&(b=0);1g?(b=Math.atan2(b.y-a.y,b.x-a.x),a=Math.atan2(c.y-a.y,c.x-a.x),b>a&&(a+=2*Math.PI),c=(b+a)/2,a=-Math.cos(c),c=-Math.sin(c),new THREE.Vector2(a,c)):d.multiplyScalar(g).add(h).sub(a).clone()}function e(c,d){var e,f;for(C=c.length;0<=--C;){e=C;f=C-1;0>f&&(f=c.length-1);for(var g=0,h=s+2*m, -g=0;gMath.abs(c-i)?[new THREE.Vector2(b,1-e),new THREE.Vector2(d,1-f),new THREE.Vector2(k,1-h),new THREE.Vector2(l,1-a)]:[new THREE.Vector2(c,1-e),new THREE.Vector2(i,1-f),new THREE.Vector2(m,1-h),new THREE.Vector2(p,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=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(m=!1,l=a(THREE.ShaderFlares.lensFlare,d)):(m=!0,l=a(THREE.ShaderFlares.lensFlareVertexTexture,d));p={};s={};p.vertex=b.getAttribLocation(l,"position");p.uv=b.getAttribLocation(l,"uv");s.renderType=b.getUniformLocation(l,"renderType");s.map=b.getUniformLocation(l,"map");s.occlusionMap=b.getUniformLocation(l,"occlusionMap");s.opacity= -b.getUniformLocation(l,"opacity");s.color=b.getUniformLocation(l,"color");s.scale=b.getUniformLocation(l,"scale");s.rotation=b.getUniformLocation(l,"rotation");s.screenPosition=b.getUniformLocation(l,"screenPosition")};this.render=function(a,d,e,f){var a=a.__webglFlares,u=a.length;if(u){var t=new THREE.Vector3,w=f/e,F=0.5*e,B=0.5*f,y=16/f,z=new THREE.Vector2(y*w,y),x=new THREE.Vector3(1,1,0),G=new THREE.Vector2(1,1),H=s,y=p;b.useProgram(l);b.enableVertexAttribArray(p.vertex);b.enableVertexAttribArray(p.uv); -b.uniform1i(H.occlusionMap,0);b.uniform1i(H.map,1);b.bindBuffer(b.ARRAY_BUFFER,h);b.vertexAttribPointer(y.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(y.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.disable(b.CULL_FACE);b.depthMask(!1);var D,J,A,M,E;for(D=0;Dz;z++)w[z]=new THREE.Vector3,u[z]=new THREE.Vector3;w=F.shadowCascadeNearZ[t];F=F.shadowCascadeFarZ[t];u[0].set(-1,-1,w);u[1].set(1,-1,w);u[2].set(-1, -1,w);u[3].set(1,1,w);u[4].set(-1,-1,F);u[5].set(1,-1,F);u[6].set(-1,1,F);u[7].set(1,1,F);y.originalCamera=p;u=new THREE.Gyroscope;u.position=q.shadowCascadeOffset;u.add(y);u.add(y.target);p.add(u);q.shadowCascadeArray[v]=y;console.log("Created virtualLight",y)}t=q;w=v;F=t.shadowCascadeArray[w];F.position.copy(t.position);F.target.position.copy(t.target.position);F.lookAt(F.target);F.shadowCameraVisible=t.shadowCameraVisible;F.shadowDarkness=t.shadowDarkness;F.shadowBias=t.shadowCascadeBias[w];u=t.shadowCascadeNearZ[w]; -t=t.shadowCascadeFarZ[w];F=F.pointsFrustum;F[0].z=u;F[1].z=u;F[2].z=u;F[3].z=u;F[4].z=t;F[5].z=t;F[6].z=t;F[7].z=t;B[n]=y;n++}else B[n]=q,n++;s=0;for(r=B.length;sz;z++)x[z]=new THREE.Vector3,u[z]=new THREE.Vector3;x=G.shadowCascadeNearZ[t];G=G.shadowCascadeFarZ[t];u[0].set(-1,-1,x);u[1].set(1,-1,x);u[2].set(-1, +1,x);u[3].set(1,1,x);u[4].set(-1,-1,G);u[5].set(1,-1,G);u[6].set(-1,1,G);u[7].set(1,1,G);y.originalCamera=p;u=new THREE.Gyroscope;u.position=q.shadowCascadeOffset;u.add(y);u.add(y.target);p.add(u);q.shadowCascadeArray[v]=y;console.log("Created virtualLight",y)}t=q;x=v;G=t.shadowCascadeArray[x];G.position.copy(t.position);G.target.position.copy(t.target.position);G.lookAt(G.target);G.shadowCameraVisible=t.shadowCameraVisible;G.shadowDarkness=t.shadowDarkness;G.shadowBias=t.shadowCascadeBias[x];u=t.shadowCascadeNearZ[x]; +t=t.shadowCascadeFarZ[x];G=G.pointsFrustum;G[0].z=u;G[1].z=u;G[2].z=u;G[3].z=u;G[4].z=t;G[5].z=t;G[6].z=t;G[7].z=t;B[n]=y;n++}else B[n]=q,n++;s=0;for(r=B.length;st;t++)w=F[t],w.copy(u[t]),THREE.ShadowMapPlugin.__projector.unprojectVector(w,v),w.applyMatrix4(n.matrixWorldInverse),w.xk.x&&(k.x=w.x),w.yk.y&&(k.y=w.y),w.zk.z&& -(k.z=w.z);n.left=i.x;n.right=k.x;n.top=k.y;n.bottom=i.y;n.updateProjectionMatrix()}n=q.shadowMap;u=q.shadowMatrix;v=q.shadowCamera;v.position.getPositionFromMatrix(q.matrixWorld);m.getPositionFromMatrix(q.target.matrixWorld);v.lookAt(m);v.updateMatrixWorld();v.matrixWorldInverse.getInverse(v.matrixWorld);q.cameraHelper&&(q.cameraHelper.visible=q.shadowCameraVisible);q.shadowCameraVisible&&q.cameraHelper.update();u.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);u.multiply(v.projectionMatrix);u.multiply(v.matrixWorldInverse); -g.multiplyMatrices(v.projectionMatrix,v.matrixWorldInverse);h.setFromMatrix(g);b.setRenderTarget(n);b.clear();F=l.__webglObjects;q=0;for(n=F.length;q 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")); -t.compileShader(D);t.compileShader(J);t.attachShader(u,D);t.attachShader(u,J);t.linkProgram(u);G=u;n=t.getAttribLocation(G,"position");v=t.getAttribLocation(G,"uv");a=t.getUniformLocation(G,"uvOffset");b=t.getUniformLocation(G,"uvScale");c=t.getUniformLocation(G,"rotation");d=t.getUniformLocation(G,"scale");e=t.getUniformLocation(G,"halfViewport");f=t.getUniformLocation(G,"color");h=t.getUniformLocation(G,"map");g=t.getUniformLocation(G,"opacity");i=t.getUniformLocation(G,"modelViewMatrix");k=t.getUniformLocation(G, -"projectionMatrix");m=t.getUniformLocation(G,"fogType");l=t.getUniformLocation(G,"fogDensity");p=t.getUniformLocation(G,"fogNear");s=t.getUniformLocation(G,"fogFar");r=t.getUniformLocation(G,"fogColor");q=t.getUniformLocation(G,"alphaTest");u=document.createElement("canvas");u.width=8;u.height=8;D=u.getContext("2d");D.fillStyle="#ffffff";D.fillRect(0,0,u.width,u.height);F=new THREE.Texture(u);F.needsUpdate=!0};this.render=function(y,B,J,A){var M=y.__webglSprites,E=M.length;if(E){J*=0.5;A*=0.5;t.useProgram(G); -t.enableVertexAttribArray(n);t.enableVertexAttribArray(v);t.disable(t.CULL_FACE);t.enable(t.BLEND);t.bindBuffer(t.ARRAY_BUFFER,z);t.vertexAttribPointer(n,2,t.FLOAT,!1,16,0);t.vertexAttribPointer(v,2,t.FLOAT,!1,16,8);t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,x);t.uniformMatrix4fv(k,!1,B.projectionMatrix.elements);t.activeTexture(t.TEXTURE0);t.uniform1i(h,0);var T=0,R=0,Q=y.fog;Q?(t.uniform3f(r,Q.color.r,Q.color.g,Q.color.b),Q instanceof THREE.Fog?(t.uniform1f(p,Q.near),t.uniform1f(s,Q.far),t.uniform1i(m, -1),R=T=1):Q instanceof THREE.FogExp2&&(t.uniform1f(l,Q.density),t.uniform1i(m,2),R=T=2)):(t.uniform1i(m,0),R=T=0);for(var aa,V,C=[],Q=0;Qt;t++)x=G[t],x.copy(u[t]),THREE.ShadowMapPlugin.__projector.unprojectVector(x,v),x.applyMatrix4(n.matrixWorldInverse),x.xk.x&&(k.x=x.x),x.yk.y&&(k.y=x.y),x.zk.z&& +(k.z=x.z);n.left=i.x;n.right=k.x;n.top=k.y;n.bottom=i.y;n.updateProjectionMatrix()}n=q.shadowMap;u=q.shadowMatrix;v=q.shadowCamera;v.position.getPositionFromMatrix(q.matrixWorld);m.getPositionFromMatrix(q.target.matrixWorld);v.lookAt(m);v.updateMatrixWorld();v.matrixWorldInverse.getInverse(v.matrixWorld);q.cameraHelper&&(q.cameraHelper.visible=q.shadowCameraVisible);q.shadowCameraVisible&&q.cameraHelper.update();u.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);u.multiply(v.projectionMatrix);u.multiply(v.matrixWorldInverse); +g.multiplyMatrices(v.projectionMatrix,v.matrixWorldInverse);h.setFromMatrix(g);b.setRenderTarget(n);b.clear();G=l.__webglObjects;q=0;for(n=G.length;q 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")); +t.compileShader(w);t.compileShader(J);t.attachShader(u,w);t.attachShader(u,J);t.linkProgram(u);H=u;n=t.getAttribLocation(H,"position");v=t.getAttribLocation(H,"uv");a=t.getUniformLocation(H,"uvOffset");b=t.getUniformLocation(H,"uvScale");c=t.getUniformLocation(H,"rotation");d=t.getUniformLocation(H,"scale");e=t.getUniformLocation(H,"halfViewport");f=t.getUniformLocation(H,"color");h=t.getUniformLocation(H,"map");g=t.getUniformLocation(H,"opacity");i=t.getUniformLocation(H,"modelViewMatrix");k=t.getUniformLocation(H, +"projectionMatrix");m=t.getUniformLocation(H,"fogType");l=t.getUniformLocation(H,"fogDensity");p=t.getUniformLocation(H,"fogNear");s=t.getUniformLocation(H,"fogFar");r=t.getUniformLocation(H,"fogColor");q=t.getUniformLocation(H,"alphaTest");u=document.createElement("canvas");u.width=8;u.height=8;w=u.getContext("2d");w.fillStyle="#ffffff";w.fillRect(0,0,u.width,u.height);G=new THREE.Texture(u);G.needsUpdate=!0};this.render=function(y,w,B,A){var N=y.__webglSprites,E=N.length;if(E){B*=0.5;A*=0.5;t.useProgram(H); +t.enableVertexAttribArray(n);t.enableVertexAttribArray(v);t.disable(t.CULL_FACE);t.enable(t.BLEND);t.bindBuffer(t.ARRAY_BUFFER,z);t.vertexAttribPointer(n,2,t.FLOAT,!1,16,0);t.vertexAttribPointer(v,2,t.FLOAT,!1,16,8);t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,D);t.uniformMatrix4fv(k,!1,w.projectionMatrix.elements);t.activeTexture(t.TEXTURE0);t.uniform1i(h,0);var T=0,R=0,M=y.fog;M?(t.uniform3f(r,M.color.r,M.color.g,M.color.b),M instanceof THREE.Fog?(t.uniform1f(p,M.near),t.uniform1f(s,M.far),t.uniform1i(m, +1),R=T=1):M instanceof THREE.FogExp2&&(t.uniform1f(l,M.density),t.uniform1i(m,2),R=T=2)):(t.uniform1i(m,0),R=T=0);for(var Q,ha=[],M=0;M