From 5f663538480140f638e0398659deb8a2579cbfc5 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Tue, 5 Feb 2013 13:26:05 +0100 Subject: [PATCH] Updated builds. --- build/three.js | 50 ++-- build/three.min.js | 579 +++++++++++++++++++++++---------------------- editor/index.html | 2 +- 3 files changed, 321 insertions(+), 310 deletions(-) diff --git a/build/three.js b/build/three.js index 81d9d7cddf..aa65e7781b 100644 --- a/build/three.js +++ b/build/three.js @@ -4026,6 +4026,8 @@ THREE.extend( THREE.Matrix4.prototype, { return function () { + console.warn( 'DEPRECATED: Matrix4\'s .getPosition() has been removed. Use Vector3.getPositionFromMatrix( matrix ) instead.' ); + var te = this.elements; return v1.set( te[12], te[13], te[14] ); @@ -5890,6 +5892,7 @@ THREE.EventDispatcher = function () { var localRay = new THREE.Ray(); var facePlane = new THREE.Plane(); var intersectPoint = new THREE.Vector3(); + var matrixPosition = new THREE.Vector3(); var inverseMatrix = new THREE.Matrix4(); @@ -5903,7 +5906,8 @@ THREE.EventDispatcher = function () { if ( object instanceof THREE.Particle ) { - var distance = raycaster.ray.distanceToPoint( object.matrixWorld.getPosition() ); + matrixPosition.getPositionFromMatrix( object.matrixWorld ); + var distance = raycaster.ray.distanceToPoint( matrixPosition ); if ( distance > object.scale.x ) { @@ -5923,8 +5927,9 @@ THREE.EventDispatcher = function () { } else if ( object instanceof THREE.Mesh ) { // Checking boundingSphere distance to ray + matrixPosition.getPositionFromMatrix( object.matrixWorld ); sphere.set( - object.matrixWorld.getPosition(), + matrixPosition, object.geometry.boundingSphere.radius * object.matrixWorld.getMaxScaleOnAxis() ); if ( ! raycaster.ray.isIntersectionSphere( sphere ) ) { @@ -21970,7 +21975,7 @@ THREE.WebGLRenderer = function ( parameters ) { } else { - _vector3.copy( object.matrixWorld.getPosition() ); + _vector3.getPositionFromMatrix( object.matrixWorld ); _vector3.applyProjection( _projScreenMatrix ); webglObject.z = _vector3.z; @@ -23180,8 +23185,8 @@ THREE.WebGLRenderer = function ( parameters ) { if ( p_uniforms.cameraPosition !== null ) { - var position = camera.matrixWorld.getPosition(); - _gl.uniform3f( p_uniforms.cameraPosition, position.x, position.y, position.z ); + _vector3.getPositionFromMatrix( camera.matrixWorld ); + _gl.uniform3f( p_uniforms.cameraPosition, _vector3.x, _vector3.y, _vector3.z ); } @@ -23782,8 +23787,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! light.visible ) continue; - _direction.copy( light.matrixWorld.getPosition() ); - _direction.sub( light.target.matrixWorld.getPosition() ); + _direction.getPositionFromMatrix( light.matrixWorld ); + _vector3.getPositionFromMatrix( light.target.matrixWorld ); + _direction.sub( _vector3 ); _direction.normalize(); // skip lights with undefined direction @@ -23827,11 +23833,11 @@ THREE.WebGLRenderer = function ( parameters ) { } - position = light.matrixWorld.getPosition(); + _vector3.getPositionFromMatrix( light.matrixWorld ); - pointPositions[ pointOffset ] = position.x; - pointPositions[ pointOffset + 1 ] = position.y; - pointPositions[ pointOffset + 2 ] = position.z; + pointPositions[ pointOffset ] = _vector3.x; + pointPositions[ pointOffset + 1 ] = _vector3.y; + pointPositions[ pointOffset + 2 ] = _vector3.z; pointDistances[ pointLength ] = distance; @@ -23855,16 +23861,17 @@ THREE.WebGLRenderer = function ( parameters ) { } - position = light.matrixWorld.getPosition(); + _vector3.getPositionFromMatrix( light.matrixWorld ); - spotPositions[ spotOffset ] = position.x; - spotPositions[ spotOffset + 1 ] = position.y; - spotPositions[ spotOffset + 2 ] = position.z; + spotPositions[ spotOffset ] = _vector3.x; + spotPositions[ spotOffset + 1 ] = _vector3.y; + spotPositions[ spotOffset + 2 ] = _vector3.z; spotDistances[ spotLength ] = distance; - _direction.copy( position ); - _direction.sub( light.target.matrixWorld.getPosition() ); + _direction.copy( _vector3 ); + _vector3.getPositionFromMatrix( light.target.matrixWorld ); + _direction.sub( _vector3 ); _direction.normalize(); spotDirections[ spotOffset ] = _direction.x; @@ -23882,7 +23889,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! light.visible ) continue; - _direction.copy( light.matrixWorld.getPosition() ); + _direction.getPositionFromMatrix( light.matrixWorld ); _direction.normalize(); // skip lights with undefined direction @@ -34769,7 +34776,9 @@ THREE.ShadowMapPlugin = function () { _projScreenMatrix = new THREE.Matrix4(), _min = new THREE.Vector3(), - _max = new THREE.Vector3(); + _max = new THREE.Vector3(), + + _matrixPosition = new THREE.Vector3(); this.init = function ( renderer ) { @@ -34954,7 +34963,8 @@ THREE.ShadowMapPlugin = function () { shadowCamera = light.shadowCamera; shadowCamera.position.getPositionFromMatrix( light.matrixWorld ); - shadowCamera.lookAt( light.target.matrixWorld.getPosition() ); + _matrixPosition.getPositionFromMatrix( light.target.matrixWorld ); + shadowCamera.lookAt( _matrixPosition ); shadowCamera.updateMatrixWorld(); shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld ); diff --git a/build/three.min.js b/build/three.min.js index 7ec2d1577c..1c77fcd6b9 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -70,38 +70,39 @@ this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z THREE.extend(THREE.Matrix3.prototype,{set:function(a,b,c,d,e,f,g,h,i){var k=this.elements;k[0]=a;k[3]=b;k[6]=c;k[1]=d;k[4]=e;k[7]=f;k[2]=g;k[5]=h;k[8]=i;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},copy:function(a){a=a.elements;this.set(a[0],a[3],a[6],a[1],a[4],a[7],a[2],a[5],a[8]);return this},multiplyVector3:function(a){console.warn("DEPRECATED: Matrix3's .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.");return a.applyMatrix3(this)},multiplyVector3Array:function(){var a= new THREE.Vector3;return function(b){for(var c=0,d=b.length;c=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)- this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},clampPoint:function(a,b){var c=this.center.distanceToSquared(a),d=b||new THREE.Vector3;d.copy(a);c>this.radius*this.radius&&(d.sub(this.center).normalize(),d.multiplyScalar(this.radius).add(this.center));return d},getBoundingBox:function(a){a=a||new THREE.Box3;a.set(this.center,this.center);a.expandByScalar(this.radius);return a},transform:function(a){this.center.applyMatrix4(a); this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius},clone:function(){return(new THREE.Sphere).copy(this)}});THREE.Frustum=function(a,b,c,d,e,f){this.planes=[void 0!==a?a:new THREE.Plane,void 0!==b?b:new THREE.Plane,void 0!==c?c:new THREE.Plane,void 0!==d?d:new THREE.Plane,void 0!==e?e:new THREE.Plane,void 0!==f?f:new THREE.Plane]}; -THREE.extend(THREE.Frustum.prototype,{set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,a=c[0],d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],i=c[6],k=c[7],l=c[8],n=c[9],m=c[10],s=c[11],q=c[12],r=c[13],p=c[14],c=c[15];b[0].setComponents(f-a,k-g,s-l,c-q).normalize();b[1].setComponents(f+ -a,k+g,s+l,c+q).normalize();b[2].setComponents(f+d,k+h,s+n,c+r).normalize();b[3].setComponents(f-d,k-h,s-n,c-r).normalize();b[4].setComponents(f-e,k-i,s-m,c-p).normalize();b[5].setComponents(f+e,k+i,s+m,c+p).normalize();return this},intersectsObject:function(){var a=new THREE.Vector3;return function(b){var c=b.matrixWorld,d=this.planes,b=-b.geometry.boundingSphere.radius*c.getMaxScaleOnAxis();a.getPositionFromMatrix(c);for(c=0;6>c;c++)if(d[c].distanceToPoint(a)c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,a=c[0],d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],i=c[6],k=c[7],l=c[8],n=c[9],m=c[10],s=c[11],r=c[12],p=c[13],q=c[14],c=c[15];b[0].setComponents(f-a,k-g,s-l,c-r).normalize();b[1].setComponents(f+ +a,k+g,s+l,c+r).normalize();b[2].setComponents(f+d,k+h,s+n,c+p).normalize();b[3].setComponents(f-d,k-h,s-n,c-p).normalize();b[4].setComponents(f-e,k-i,s-m,c-q).normalize();b[5].setComponents(f+e,k+i,s+m,c+q).normalize();return this},intersectsObject:function(){var a=new THREE.Vector3;return function(b){var c=b.matrixWorld,d=this.planes,b=-b.geometry.boundingSphere.radius*c.getMaxScaleOnAxis();a.getPositionFromMatrix(c);for(c=0;6>c;c++)if(d[c].distanceToPoint(a)d;d++)if(b[d].distanceToPoint(c)c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0},clone:function(){return(new THREE.Frustum).copy(this)}});THREE.Plane=function(a,b){this.normal=void 0!==a?a:new THREE.Vector3(1,0,0);this.constant=void 0!==b?b:0}; THREE.extend(THREE.Plane.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(), copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(a, @@ -118,11 +119,11 @@ THREE.extend(THREE.Triangle.prototype,{constructor:THREE.Triangle,set:function(a midpoint:function(a){return(a||new THREE.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return THREE.Triangle.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new THREE.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return THREE.Triangle.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return THREE.Triangle.containsPoint(a,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&& a.b.equals(this.b)&&a.c.equals(this.c)},clone:function(){return(new THREE.Triangle).copy(this)}});THREE.Vertex=function(a){console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead.");return a};THREE.UV=function(a,b){console.warn("THREE.UV has been DEPRECATED. Use THREE.Vector2 instead.");return new THREE.Vector2(a,b)};THREE.Clock=function(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}; THREE.extend(THREE.Clock.prototype,{start:function(){this.oldTime=this.startTime=void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();this.running=!0},stop:function(){this.getElapsedTime();this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now(), -a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a}});THREE.EventDispatcher=function(){var a={};this.addEventListener=function(b,c){void 0===a[b]&&(a[b]=[]);-1===a[b].indexOf(c)&&a[b].push(c)};this.removeEventListener=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)};this.dispatchEvent=function(b){var c=a[b.type];if(void 0!==c){b.target=this;for(var d=0,e=c.length;dg.scale.x)return i;i.push({distance:h,point:g.position,face:null,object:g})}else if(g instanceof a.Mesh){b.set(g.matrixWorld.getPosition(), -g.geometry.boundingSphere.radius*g.matrixWorld.getMaxScaleOnAxis());if(!h.ray.isIntersectionSphere(b))return i;var m=g.geometry,s=m.vertices,q=g.material instanceof a.MeshFaceMaterial,r=!0===q?g.material.materials:null,p=g.material.side,t,x,w,v=h.precision;g.matrixRotationWorld.extractRotation(g.matrixWorld);f.getInverse(g.matrixWorld);c.copy(h.ray).transform(f);for(var H=0,F=m.faces.length;Hz)){p=p.side;if(p!==a.DoubleSide&&(t=c.direction.dot(d.normal),!(p===a.FrontSide?0>t:0h.far)){e=c.at(z,e);if(A instanceof a.Face3){if(p=s[A.a],t=s[A.b],x=s[A.c],!a.Triangle.containsPoint(e,p,t,x))continue}else if(A instanceof a.Face4){if(p=s[A.a],t=s[A.b],x=s[A.c],w=s[A.d],!a.Triangle.containsPoint(e,p,t,w)&&!a.Triangle.containsPoint(e,t,x,w))continue}else throw Error("face type not supported");i.push({distance:z, -point:h.ray.at(z),face:A,faceIndex:H,object:g})}}}}}},i=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;dh.scale.x)return k;k.push({distance:i,point:h.position,face:null,object:h})}else if(h instanceof +a.Mesh){f.getPositionFromMatrix(h.matrixWorld);b.set(f,h.geometry.boundingSphere.radius*h.matrixWorld.getMaxScaleOnAxis());if(!i.ray.isIntersectionSphere(b))return k;var s=h.geometry,r=s.vertices,p=h.material instanceof a.MeshFaceMaterial,q=!0===p?h.material.materials:null,x=h.material.side,t,v,w,D=i.precision;h.matrixRotationWorld.extractRotation(h.matrixWorld);g.getInverse(h.matrixWorld);c.copy(i.ray).transform(g);for(var K=0,A=s.faces.length;KF)){x=x.side;if(x!==a.DoubleSide&&(t=c.direction.dot(d.normal),!(x===a.FrontSide?0>t:0i.far)){e=c.at(F,e);if(z instanceof a.Face3){if(x=r[z.a],t=r[z.b],v=r[z.c],!a.Triangle.containsPoint(e,x,t,v))continue}else if(z instanceof a.Face4){if(x=r[z.a],t=r[z.b],v=r[z.c],w=r[z.d],!a.Triangle.containsPoint(e,x,t,w)&&!a.Triangle.containsPoint(e,t,v,w))continue}else throw Error("face type not supported"); +k.push({distance:F,point:i.ray.at(F),face:z,faceIndex:K,object:h})}}}}}},k=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;de&&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 e,f,g=[],h=0,i,k,l=[],n=0,m,s,q=[],r=0,p,t=[],x=0,w,v,H=[],F=0,A,z,K=[],I=0,E={objects:[],sprites:[],lights:[],elements:[]},V=new THREE.Vector3,B=new THREE.Vector4,T=new THREE.Box3(new THREE.Vector3(-1,-1,-1),new THREE.Vector3(1,1,1)),C=new THREE.Box3,G=Array(3),M=Array(4),W=new THREE.Matrix4,ua=new THREE.Matrix4,Ha,oa=new THREE.Matrix4,J=new THREE.Matrix3,da=new THREE.Matrix3,ka=new THREE.Vector3,Y=new THREE.Frustum,L=new THREE.Vector4,va=new THREE.Vector4; +c)return!1;a.lerp(b,c);b.lerp(a,1-d);return!0}var e,f,g=[],h=0,i,k,l=[],n=0,m,s,r=[],p=0,q,x=[],t=0,v,w,D=[],K=0,A,z,F=[],H=0,G={objects:[],sprites:[],lights:[],elements:[]},V=new THREE.Vector3,B=new THREE.Vector4,T=new THREE.Box3(new THREE.Vector3(-1,-1,-1),new THREE.Vector3(1,1,1)),C=new THREE.Box3,I=Array(3),M=Array(4),W=new THREE.Matrix4,ua=new THREE.Matrix4,Ha,oa=new THREE.Matrix4,J=new THREE.Matrix3,da=new THREE.Matrix3,ka=new THREE.Vector3,Y=new THREE.Frustum,L=new THREE.Vector4,va=new THREE.Vector4; this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);ua.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);return a.applyProjection(ua)};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);ua.multiplyMatrices(b.matrixWorld,b.projectionMatrixInverse);return a.applyProjection(ua)};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)};this.projectScene=function(g,h,n,ta){var Ma=!1,ga,ja,ma,X,ha,ra,fa,Da,Ya,Za,ia,Qa,Ta;z=v=p=s=0;E.elements.length=0;g.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();W.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));ua.multiplyMatrices(h.projectionMatrix,W);da.getInverse(W);da.transpose();Y.setFromMatrix(ua);f=0;E.objects.length=0;E.sprites.length=0;E.lights.length=0;var Ra=function(b){for(var c=0,d=b.children.length;ci.positionScreen.x||1i.positionScreen.y||1i.positionScreen.z||1(fa.positionScreen.x-X.positionScreen.x)*(ha.positionScreen.y-X.positionScreen.y)-(fa.positionScreen.y-X.positionScreen.y)*(ha.positionScreen.x-X.positionScreen.x),ra===THREE.DoubleSide||Ma===(ra===THREE.FrontSide))s===r?(ia=new THREE.RenderableFace3,q.push(ia),r++,s++,m=ia):m=q[s++],m.v1.copy(X),m.v2.copy(ha),m.v3.copy(fa); +c)};this.projectScene=function(g,h,n,ta){var Ma=!1,ga,ja,ma,X,ha,ra,fa,Da,Za,$a,ia,Ra,Ua;z=w=q=s=0;G.elements.length=0;g.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();W.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));ua.multiplyMatrices(h.projectionMatrix,W);da.getInverse(W);da.transpose();Y.setFromMatrix(ua);f=0;G.objects.length=0;G.sprites.length=0;G.lights.length=0;var Sa=function(b){for(var c=0,d=b.children.length;ci.positionScreen.x||1i.positionScreen.y||1i.positionScreen.z||1(fa.positionScreen.x-X.positionScreen.x)*(ha.positionScreen.y-X.positionScreen.y)-(fa.positionScreen.y-X.positionScreen.y)*(ha.positionScreen.x-X.positionScreen.x),ra===THREE.DoubleSide||Ma===(ra===THREE.FrontSide))s===p?(ia=new THREE.RenderableFace3,r.push(ia),p++,s++,m=ia):m=r[s++],m.v1.copy(X),m.v2.copy(ha),m.v3.copy(fa); else continue;else continue;else if(ja instanceof THREE.Face4)if(X=l[ja.a],ha=l[ja.b],fa=l[ja.c],ia=l[ja.d],M[0]=X.positionScreen,M[1]=ha.positionScreen,M[2]=fa.positionScreen,M[3]=ia.positionScreen,!0===X.visible||!0===ha.visible||!0===fa.visible||!0===ia.visible||T.isIntersectionBox(C.setFromPoints(M)))if(Ma=0>(ia.positionScreen.x-X.positionScreen.x)*(ha.positionScreen.y-X.positionScreen.y)-(ia.positionScreen.y-X.positionScreen.y)*(ha.positionScreen.x-X.positionScreen.x)||0>(ha.positionScreen.x- -fa.positionScreen.x)*(ia.positionScreen.y-fa.positionScreen.y)-(ha.positionScreen.y-fa.positionScreen.y)*(ia.positionScreen.x-fa.positionScreen.x),ra===THREE.DoubleSide||Ma===(ra===THREE.FrontSide)){if(p===x){var ob=new THREE.RenderableFace4;t.push(ob);x++;p++;m=ob}else m=t[p++];m.v1.copy(X);m.v2.copy(ha);m.v3.copy(fa);m.v4.copy(ia)}else continue;else continue;m.normalModel.copy(ja.normal);!1===Ma&&(ra===THREE.BackSide||ra===THREE.DoubleSide)&&m.normalModel.negate();m.normalModel.applyMatrix3(J).normalize(); -m.normalModelView.copy(m.normalModel).applyMatrix3(da);m.centroidModel.copy(ja.centroid).applyMatrix4(Ha);fa=ja.vertexNormals;X=0;for(ha=fa.length;XB.z&&(z===I?(Ma=new THREE.RenderableParticle,K.push(Ma),I++,z++,A=Ma):A=K[z++],A.object=Da,A.x=B.x/B.w,A.y=B.y/B.w, -A.z=B.z,A.rotation=Da.rotation.z,A.scale.x=Da.scale.x*Math.abs(A.x-(B.x+h.projectionMatrix.elements[0])/(B.w+h.projectionMatrix.elements[12])),A.scale.y=Da.scale.y*Math.abs(A.y-(B.y+h.projectionMatrix.elements[5])/(B.w+h.projectionMatrix.elements[13])),A.material=Da.material,E.elements.push(A)));!0===ta&&E.elements.sort(c);return E}};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}; +fa.positionScreen.x)*(ia.positionScreen.y-fa.positionScreen.y)-(ha.positionScreen.y-fa.positionScreen.y)*(ia.positionScreen.x-fa.positionScreen.x),ra===THREE.DoubleSide||Ma===(ra===THREE.FrontSide)){if(q===t){var pb=new THREE.RenderableFace4;x.push(pb);t++;q++;m=pb}else m=x[q++];m.v1.copy(X);m.v2.copy(ha);m.v3.copy(fa);m.v4.copy(ia)}else continue;else continue;m.normalModel.copy(ja.normal);!1===Ma&&(ra===THREE.BackSide||ra===THREE.DoubleSide)&&m.normalModel.negate();m.normalModel.applyMatrix3(J).normalize(); +m.normalModelView.copy(m.normalModel).applyMatrix3(da);m.centroidModel.copy(ja.centroid).applyMatrix4(Ha);fa=ja.vertexNormals;X=0;for(ha=fa.length;XB.z&&(z===H?(Ma=new THREE.RenderableParticle,F.push(Ma),H++,z++,A=Ma):A=F[z++],A.object=Da,A.x=B.x/B.w,A.y=B.y/B.w, +A.z=B.z,A.rotation=Da.rotation.z,A.scale.x=Da.scale.x*Math.abs(A.x-(B.x+h.projectionMatrix.elements[0])/(B.w+h.projectionMatrix.elements[12])),A.scale.y=Da.scale.y*Math.abs(A.y-(B.y+h.projectionMatrix.elements[5])/(B.w+h.projectionMatrix.elements[13])),A.material=Da.material,G.elements.push(A)));!0===ta&&G.elements.sort(c);return G}};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;be?-1:1,f.vertexTangents[d]=new THREE.Vector4(B.x,B.y,B.z,e)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;ce?-1:1,f.vertexTangents[d]=new THREE.Vector4(B.x,B.y,B.z,e)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;ci;i++)if(h[i]==h[(i+1)%3]){e.push(f);break}}else if(a instanceof THREE.Face4){a.a=c[a.a];a.b=c[a.b];a.c=c[a.c];a.d=c[a.d];h=[a.a,a.b,a.c,a.d];d=-1;for(i=0;4>i;i++)h[i]==h[(i+1)%4]&&(0<=d&&e.push(f),d=i);if(0<=d){h.splice(d,1);var l=new THREE.Face3(h[0],h[1],h[2],a.normal,a.color,a.materialIndex);h=0;for(i=this.faceVertexUvs.length;hb.max.x&&(b.max.x=c),db.max.y&&(b.max.y=d),eb.max.z&&(b.max.z=e)}if(void 0===a||0===a.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere= new THREE.Sphere);var a=this.attributes.position.array;if(a){for(var b,c=0,d,e,f=0,g=a.length;fc&&(c=b);this.boundingSphere.radius=Math.sqrt(c)}},computeVertexNormals:function(){if(this.attributes.position){var a,b,c,d;a=this.attributes.position.array.length;if(void 0===this.attributes.normal)this.attributes.normal={itemSize:3,array:new Float32Array(a),numItems:a};else{a=0;for(b=this.attributes.normal.array.length;aka?-1:1;h[4*a]=W.x;h[4*a+1]=W.y;h[4*a+2]=W.z;h[4*a+3]=J}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;if(void 0===this.attributes.tangent){var g=4*f;this.attributes.tangent={itemSize:4,array:new Float32Array(g),numItems:g}}for(var h=this.attributes.tangent.array,i=[],k=[],g=0;ga.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, @@ -189,34 +190,34 @@ a.mapSpecularOffset,a.mapSpecularWrap,a.mapSpecularAnisotropy);a.mapBumpScale&&( k.uSpecularColor.value.setHex(i.specular),k.uAmbientColor.value.setHex(i.ambient),k.uShininess.value=i.shininess,void 0!==i.opacity&&(k.uOpacity.value=i.opacity),h=new THREE.ShaderMaterial({fragmentShader:h.fragmentShader,vertexShader:h.vertexShader,uniforms:k,lights:!0,fog:!0}),i.transparent&&(h.transparent=!0)):h=new THREE[h](i);void 0!==a.DbgName&&(h.name=a.DbgName);return h}};THREE.ImageLoader=function(){THREE.EventDispatcher.call(this);this.crossOrigin=null};THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b){var c=this;void 0===b&&(b=new Image);b.addEventListener("load",function(){c.dispatchEvent({type:"load",content:b})},!1);b.addEventListener("error",function(){c.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);c.crossOrigin&&(b.crossOrigin=c.crossOrigin);b.src=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,g=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var h=JSON.parse(f.responseText);a.createModel(h,c,d)}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===g&&(g=f.getResponseHeader("Content-Length")), e({total:g,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&(g=f.getResponseHeader("Content-Length"))};f.open("GET",b,!0);f.withCredentials=this.withCredentials;f.send(null)}; -THREE.JSONLoader.prototype.createModel=function(a,b,c){var d=new THREE.Geometry,e=void 0!==a.scale?1/a.scale:1,f,g,h,i,k,l,n,m,s,q,r,p,t,x,w,v=a.faces;q=a.vertices;var H=a.normals,F=a.colors,A=0;for(f=0;fC.parameters.opacity&& -(C.parameters.transparent=!0);C.parameters.normalMap?(E=THREE.ShaderLib.normalmap,B=THREE.UniformsUtils.clone(E.uniforms),p=C.parameters.color,T=C.parameters.specular,r=C.parameters.ambient,V=C.parameters.shininess,B.tNormal.value=z.textures[C.parameters.normalMap],C.parameters.normalScale&&B.uNormalScale.value.set(C.parameters.normalScale[0],C.parameters.normalScale[1]),C.parameters.map&&(B.tDiffuse.value=C.parameters.map,B.enableDiffuse.value=!0),C.parameters.envMap&&(B.tCube.value=C.parameters.envMap, +THREE.SceneLoader.prototype.parse=function(a,b,c){function d(a,b){return"relativeToHTML"==b?a:n+"/"+a}function e(){f(z.scene,H.objects)}function f(a,b){var c,e,g,i,k,n,p;for(p in b)if(void 0===z.objects[p]){var q=b[p],w=null;if(q.type&&q.type in l.hierarchyHandlerMap){if(void 0===q.loading){e={type:1,url:1,material:1,position:1,rotation:1,scale:1,visible:1,children:1,properties:1,skin:1,morph:1,mirroredLoop:1,duration:1};g={};for(var C in q)C in e||(g[C]=q[C]);s=z.materials[q.material];q.loading= +!0;e=l.hierarchyHandlerMap[q.type].loaderObject;e.options?e.load(d(q.url,H.urlBaseType),h(p,a,s,q)):e.load(d(q.url,H.urlBaseType),h(p,a,s,q),g)}}else if(void 0!==q.geometry){if(m=z.geometries[q.geometry]){w=!1;s=z.materials[q.material];w=s instanceof THREE.ShaderMaterial;g=q.position;i=q.rotation;k=q.scale;c=q.matrix;n=q.quaternion;q.material||(s=new THREE.MeshFaceMaterial(z.face_materials[q.geometry]));s instanceof THREE.MeshFaceMaterial&&0===s.materials.length&&(s=new THREE.MeshFaceMaterial(z.face_materials[q.geometry])); +if(s instanceof THREE.MeshFaceMaterial)for(e=0;eC.parameters.opacity&& +(C.parameters.transparent=!0);C.parameters.normalMap?(G=THREE.ShaderLib.normalmap,B=THREE.UniformsUtils.clone(G.uniforms),q=C.parameters.color,T=C.parameters.specular,p=C.parameters.ambient,V=C.parameters.shininess,B.tNormal.value=z.textures[C.parameters.normalMap],C.parameters.normalScale&&B.uNormalScale.value.set(C.parameters.normalScale[0],C.parameters.normalScale[1]),C.parameters.map&&(B.tDiffuse.value=C.parameters.map,B.enableDiffuse.value=!0),C.parameters.envMap&&(B.tCube.value=C.parameters.envMap, B.enableReflection.value=!0,B.uReflectivity.value=C.parameters.reflectivity),C.parameters.lightMap&&(B.tAO.value=C.parameters.lightMap,B.enableAO.value=!0),C.parameters.specularMap&&(B.tSpecular.value=z.textures[C.parameters.specularMap],B.enableSpecular.value=!0),C.parameters.displacementMap&&(B.tDisplacement.value=z.textures[C.parameters.displacementMap],B.enableDisplacement.value=!0,B.uDisplacementBias.value=C.parameters.displacementBias,B.uDisplacementScale.value=C.parameters.displacementScale), -B.uDiffuseColor.value.setHex(p),B.uSpecularColor.value.setHex(T),B.uAmbientColor.value.setHex(r),B.uShininess.value=V,C.parameters.opacity&&(B.uOpacity.value=C.parameters.opacity),s=new THREE.ShaderMaterial({fragmentShader:E.fragmentShader,vertexShader:E.vertexShader,uniforms:B,lights:!0,fog:!0})):s=new THREE[C.type](C.parameters);z.materials[G]=s}for(G in I.materials)if(C=I.materials[G],C.parameters.materials){M=[];for(p=0;pH&&w.clearRect(qa.min.x|0,qa.min.y|0,qa.max.x-qa.min.x|0,qa.max.y-qa.min.y|0),0=j||(j*=f.intensity,c.add(Da.multiplyScalar(j)))}else f instanceof THREE.PointLight&&(g=$a.getPositionFromMatrix(f.matrixWorld),j=b.dot($a.subVectors(g,a).normalize()),0>=j||(j*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=j&&(j*=f.intensity,c.add(Da.multiplyScalar(j)))))}}function r(a,d,e,f,g,j,h,i){k.info.render.vertices+= -3;k.info.render.faces++;b(i.opacity);c(i.blending);oa=a.positionScreen.x;J=a.positionScreen.y;da=d.positionScreen.x;ka=d.positionScreen.y;Y=e.positionScreen.x;L=e.positionScreen.y;v(oa,J,da,ka,Y,L);(i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial)&&null===i.map?(ra.copy(i.color),fa.copy(i.emissive),i.vertexColors===THREE.FaceColors&&ra.multiply(h.color),!0===fc?!1===i.wireframe&&i.shading==THREE.SmoothShading&&3==h.vertexNormalsLength?(ja.copy(ub),ma.copy(ub),X.copy(ub), -q(h.v1.positionWorld,h.vertexNormalsModel[0],ja),q(h.v2.positionWorld,h.vertexNormalsModel[1],ma),q(h.v3.positionWorld,h.vertexNormalsModel[2],X),ja.multiply(ra).add(fa),ma.multiply(ra).add(fa),X.multiply(ra).add(fa),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):(ga.copy(ub),q(h.centroidModel,h.normalModel,ga),ga.multiply(ra).add(fa),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):!0===i.wireframe?B(i.color,i.wireframeLinewidth, -i.wireframeLinecap,i.wireframeLinejoin):A(i.color)):i instanceof THREE.MeshBasicMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial?null!==i.map?i.map.mapping instanceof THREE.UVMapping&&(Ra=h.uvs[0],F(oa,J,da,ka,Y,L,Ra[f].x,Ra[f].y,Ra[g].x,Ra[g].y,Ra[j].x,Ra[j].y,i.map)):null!==i.envMap?i.envMap.mapping instanceof THREE.SphericalReflectionMapping&&($a.copy(h.vertexNormalsModelView[f]),eb=0.5*$a.x+0.5,ob=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[g]),Hb=0.5*$a.x+ -0.5,Ib=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[j]),ec=0.5*$a.x+0.5,mc=0.5*$a.y+0.5,F(oa,J,da,ka,Y,L,eb,ob,Hb,Ib,ec,mc,i.envMap)):(ga.copy(i.color),i.vertexColors===THREE.FaceColors&&ga.multiply(h.color),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i instanceof THREE.MeshDepthMaterial?(ia=p.near,Qa=p.far,g=1-K(a.positionScreen.z*a.positionScreen.w,ia,Qa),ja.setRGB(g,g,g),g=1-K(d.positionScreen.z*d.positionScreen.w,ia,Qa),ma.setRGB(g,g,g),g=1-K(e.positionScreen.z* -e.positionScreen.w,ia,Qa),X.setRGB(g,g,g),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):i instanceof THREE.MeshNormalMaterial&&(i.shading==THREE.FlatShading?(d=h.normalModelView,ga.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i.shading==THREE.SmoothShading&&(d=h.vertexNormalsModelView[f],ja.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[g], -ma.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[j],X.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)))}function v(a,b,c,d,e,f){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.closePath()}function z(a,b,c,d,e,f,g,j){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.lineTo(g,j);w.closePath()}function B(a,b,c,j){d(b);e(c);f(j);g(a.getStyle());w.stroke(); -Ea.expandByScalar(2*b)}function A(a){h(a.getStyle());w.fill()}function F(a,b,c,d,e,f,g,j,i,ea,k,l,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var n=m.wrapS==THREE.RepeatWrapping,fb=m.wrapT==THREE.RepeatWrapping;Ya[m.id]=w.createPattern(m.image,!0===n&&!0===fb?"repeat":!0===n&&!1===fb?"repeat-x":!1===n&&!0===fb?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===Ya[m.id]?h("rgba(0,0,0,1)"):h(Ya[m.id]);var n=m.offset.x/m.repeat.x,fb=m.offset.y/m.repeat.y, -q=m.image.width*m.repeat.x,p=m.image.height*m.repeat.y,g=(g+n)*q,j=(1-j+fb)*p,c=c-a,d=d-b,e=e-a,f=f-b,i=(i+n)*q-g,ea=(1-ea+fb)*p-j,k=(k+n)*q-g,l=(1-l+fb)*p-j,n=i*l-k*ea;0===n?(void 0===Za[m.id]&&(b=document.createElement("canvas"),b.width=m.image.width,b.height=m.image.height,b=b.getContext("2d"),b.drawImage(m.image,0,0),Za[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=Za[m.id],g=4*(Math.floor(g)+Math.floor(j)*m.image.width),ga.setRGB(b[g]/255,b[g+1]/255,b[g+2]/255),A(ga)):(n=1/n, -m=(l*c-ea*e)*n,ea=(l*d-ea*f)*n,c=(i*e-k*c)*n,d=(i*f-k*d)*n,a=a-m*g-c*j,g=b-ea*g-d*j,w.save(),w.transform(m,ea,c,d,a,g),w.fill(),w.restore())}}function E(a,b,c,d,e,f,g,j,h,i,ea,k,m){var l,n;l=m.width-1;n=m.height-1;g*=l;j*=n;c-=a;d-=b;e-=a;f-=b;h=h*l-g;i=i*n-j;ea=ea*l-g;k=k*n-j;n=1/(h*k-ea*i);l=(k*c-i*e)*n;i=(k*d-i*f)*n;c=(h*e-ea*c)*n;d=(h*f-ea*d)*n;a=a-l*g-c*j;b=b-i*g-d*j;w.save();w.transform(l,i,c,d,a,b);w.clip();w.drawImage(m,0,0);w.restore()}function H(a,b,c,d){ab[0]=255*a.r|0;ab[1]=255*a.g|0; -ab[2]=255*a.b|0;ab[4]=255*b.r|0;ab[5]=255*b.g|0;ab[6]=255*b.b|0;ab[8]=255*c.r|0;ab[9]=255*c.g|0;ab[10]=255*c.b|0;ab[12]=255*d.r|0;ab[13]=255*d.g|0;ab[14]=255*d.b|0;j.putImageData(xb,0,0);Ua.drawImage(wb,0,0);return nb}function K(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function I(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===p instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera."); -else{!0===this.autoClear&&this.clear();w.setTransform(1,0,0,-1,t,x);k.info.render.vertices=0;k.info.render.faces=0;l=s.projectScene(a,p,this.sortObjects,this.sortElements);n=l.elements;m=l.lights;fc=0>1,od=ea.height>>1,Ab=ib.scale.x*t,Bb=ib.scale.y*x,fb=Ab*yc,zb=Bb*od,Ea.min.set(aa.x-fb,aa.y-zb),Ea.max.set(aa.x+fb,aa.y+zb),!1!==pb.isIntersectionBox(Ea)&&(w.save(),w.translate(aa.x,aa.y),w.rotate(-ib.rotation),w.scale(Ab,-Bb),w.translate(-yc,-od),w.drawImage(ea,0,0),w.restore())):O instanceof THREE.ParticleCanvasMaterial&&(fb=ib.scale.x*t,zb=ib.scale.y*x,Ea.min.set(aa.x-fb,aa.y-zb),Ea.max.set(aa.x+ -fb,aa.y+zb),!1!==pb.isIntersectionBox(Ea)&&(g(O.color.getStyle()),h(O.color.getStyle()),w.save(),w.translate(aa.x,aa.y),w.rotate(-ib.rotation),w.scale(fb,zb),O.program(w),w.restore()))}else if(ea instanceof THREE.RenderableLine)C=ea.v1,G=ea.v2,C.positionScreen.x*=t,C.positionScreen.y*=x,G.positionScreen.x*=t,G.positionScreen.y*=x,Ea.setFromPoints([C.positionScreen,G.positionScreen]),!0===pb.isIntersectionBox(Ea)&&(aa=C,ib=G,b(O.opacity),c(O.blending),w.beginPath(),w.moveTo(aa.positionScreen.x,aa.positionScreen.y), -w.lineTo(ib.positionScreen.x,ib.positionScreen.y),O instanceof THREE.LineBasicMaterial?(d(O.linewidth),e(O.linecap),f(O.linejoin),g(O.color.getStyle()),i(null,null),w.stroke(),Ea.expandByScalar(2*O.linewidth)):O instanceof THREE.LineDashedMaterial&&(d(O.linewidth),e(O.linecap),f(O.linejoin),g(O.color.getStyle()),i(O.dashSize,O.gapSize),w.stroke(),Ea.expandByScalar(2*O.linewidth)));else if(ea instanceof THREE.RenderableFace3){C=ea.v1;G=ea.v2;M=ea.v3;if(-1>C.positionScreen.z||1G.positionScreen.z||1M.positionScreen.z||1C.positionScreen.z||1G.positionScreen.z||1M.positionScreen.z||1W.positionScreen.z||1D&&v.clearRect(qa.min.x|0,qa.min.y|0,qa.max.x-qa.min.x|0,qa.max.y-qa.min.y|0),0=j||(j*=f.intensity,c.add(Da.multiplyScalar(j)))}else f instanceof THREE.PointLight&&(g=ab.getPositionFromMatrix(f.matrixWorld),j=b.dot(ab.subVectors(g,a).normalize()),0>=j||(j*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=j&&(j*=f.intensity,c.add(Da.multiplyScalar(j)))))}}function r(a,d,e,f,g,j,h,i){k.info.render.vertices+= +3;k.info.render.faces++;b(i.opacity);c(i.blending);oa=a.positionScreen.x;J=a.positionScreen.y;da=d.positionScreen.x;ka=d.positionScreen.y;Y=e.positionScreen.x;L=e.positionScreen.y;z(oa,J,da,ka,Y,L);(i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial)&&null===i.map?(ra.copy(i.color),fa.copy(i.emissive),i.vertexColors===THREE.FaceColors&&ra.multiply(h.color),!0===gc?!1===i.wireframe&&i.shading==THREE.SmoothShading&&3==h.vertexNormalsLength?(ja.copy(vb),ma.copy(vb),X.copy(vb), +q(h.v1.positionWorld,h.vertexNormalsModel[0],ja),q(h.v2.positionWorld,h.vertexNormalsModel[1],ma),q(h.v3.positionWorld,h.vertexNormalsModel[2],X),ja.multiply(ra).add(fa),ma.multiply(ra).add(fa),X.multiply(ra).add(fa),ha.addColors(ma,X).multiplyScalar(0.5),Ua=G(ja,ma,X,ha),F(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ua)):(ga.copy(vb),q(h.centroidModel,h.normalModel,ga),ga.multiply(ra).add(fa),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):!0===i.wireframe?B(i.color,i.wireframeLinewidth, +i.wireframeLinecap,i.wireframeLinejoin):A(i.color)):i instanceof THREE.MeshBasicMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial?null!==i.map?i.map.mapping instanceof THREE.UVMapping&&(Sa=h.uvs[0],D(oa,J,da,ka,Y,L,Sa[f].x,Sa[f].y,Sa[g].x,Sa[g].y,Sa[j].x,Sa[j].y,i.map)):null!==i.envMap?i.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(ab.copy(h.vertexNormalsModelView[f]),fb=0.5*ab.x+0.5,pb=0.5*ab.y+0.5,ab.copy(h.vertexNormalsModelView[g]),Ib=0.5*ab.x+ +0.5,Jb=0.5*ab.y+0.5,ab.copy(h.vertexNormalsModelView[j]),fc=0.5*ab.x+0.5,mc=0.5*ab.y+0.5,D(oa,J,da,ka,Y,L,fb,pb,Ib,Jb,fc,mc,i.envMap)):(ga.copy(i.color),i.vertexColors===THREE.FaceColors&&ga.multiply(h.color),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i instanceof THREE.MeshDepthMaterial?(ia=p.near,Ra=p.far,g=1-K(a.positionScreen.z*a.positionScreen.w,ia,Ra),ja.setRGB(g,g,g),g=1-K(d.positionScreen.z*d.positionScreen.w,ia,Ra),ma.setRGB(g,g,g),g=1-K(e.positionScreen.z* +e.positionScreen.w,ia,Ra),X.setRGB(g,g,g),ha.addColors(ma,X).multiplyScalar(0.5),Ua=G(ja,ma,X,ha),F(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ua)):i instanceof THREE.MeshNormalMaterial&&(i.shading==THREE.FlatShading?(d=h.normalModelView,ga.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i.shading==THREE.SmoothShading&&(d=h.vertexNormalsModelView[f],ja.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[g], +ma.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[j],X.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),ha.addColors(ma,X).multiplyScalar(0.5),Ua=G(ja,ma,X,ha),F(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ua)))}function z(a,b,c,d,e,f){v.beginPath();v.moveTo(a,b);v.lineTo(c,d);v.lineTo(e,f);v.closePath()}function w(a,b,c,d,e,f,g,j){v.beginPath();v.moveTo(a,b);v.lineTo(c,d);v.lineTo(e,f);v.lineTo(g,j);v.closePath()}function B(a,b,c,j){d(b);e(c);f(j);g(a.getStyle());v.stroke(); +Ea.expandByScalar(2*b)}function A(a){h(a.getStyle());v.fill()}function D(a,b,c,d,e,f,g,j,i,ea,k,m,l){if(!(l instanceof THREE.DataTexture||void 0===l.image||0==l.image.width)){if(!0===l.needsUpdate){var n=l.wrapS==THREE.RepeatWrapping,gb=l.wrapT==THREE.RepeatWrapping;Za[l.id]=v.createPattern(l.image,!0===n&&!0===gb?"repeat":!0===n&&!1===gb?"repeat-x":!1===n&&!0===gb?"repeat-y":"no-repeat");l.needsUpdate=!1}void 0===Za[l.id]?h("rgba(0,0,0,1)"):h(Za[l.id]);var n=l.offset.x/l.repeat.x,gb=l.offset.y/l.repeat.y, +p=l.image.width*l.repeat.x,q=l.image.height*l.repeat.y,g=(g+n)*p,j=(1-j+gb)*q,c=c-a,d=d-b,e=e-a,f=f-b,i=(i+n)*p-g,ea=(1-ea+gb)*q-j,k=(k+n)*p-g,m=(1-m+gb)*q-j,n=i*m-k*ea;0===n?(void 0===$a[l.id]&&(b=document.createElement("canvas"),b.width=l.image.width,b.height=l.image.height,b=b.getContext("2d"),b.drawImage(l.image,0,0),$a[l.id]=b.getImageData(0,0,l.image.width,l.image.height).data),b=$a[l.id],g=4*(Math.floor(g)+Math.floor(j)*l.image.width),ga.setRGB(b[g]/255,b[g+1]/255,b[g+2]/255),A(ga)):(n=1/n, +l=(m*c-ea*e)*n,ea=(m*d-ea*f)*n,c=(i*e-k*c)*n,d=(i*f-k*d)*n,a=a-l*g-c*j,g=b-ea*g-d*j,v.save(),v.transform(l,ea,c,d,a,g),v.fill(),v.restore())}}function F(a,b,c,d,e,f,g,j,h,i,ea,k,l){var n,m;n=l.width-1;m=l.height-1;g*=n;j*=m;c-=a;d-=b;e-=a;f-=b;h=h*n-g;i=i*m-j;ea=ea*n-g;k=k*m-j;m=1/(h*k-ea*i);n=(k*c-i*e)*m;i=(k*d-i*f)*m;c=(h*e-ea*c)*m;d=(h*f-ea*d)*m;a=a-n*g-c*j;b=b-i*g-d*j;v.save();v.transform(n,i,c,d,a,b);v.clip();v.drawImage(l,0,0);v.restore()}function G(a,b,c,d){bb[0]=255*a.r|0;bb[1]=255*a.g|0; +bb[2]=255*a.b|0;bb[4]=255*b.r|0;bb[5]=255*b.g|0;bb[6]=255*b.b|0;bb[8]=255*c.r|0;bb[9]=255*c.g|0;bb[10]=255*c.b|0;bb[12]=255*d.r|0;bb[13]=255*d.g|0;bb[14]=255*d.b|0;j.putImageData(yb,0,0);Va.drawImage(xb,0,0);return ob}function K(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function H(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===p instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera."); +else{!0===this.autoClear&&this.clear();v.setTransform(1,0,0,-1,x,t);k.info.render.vertices=0;k.info.render.faces=0;l=s.projectScene(a,p,this.sortObjects,this.sortElements);n=l.elements;m=l.lights;gc=0>1,od=ea.height>>1,Bb=jb.scale.x*x,Cb=jb.scale.y*t,gb=Bb*yc,Ab=Cb*od,Ea.min.set(aa.x-gb,aa.y-Ab),Ea.max.set(aa.x+gb,aa.y+Ab),!1!==qb.isIntersectionBox(Ea)&&(v.save(),v.translate(aa.x,aa.y),v.rotate(-jb.rotation),v.scale(Bb,-Cb),v.translate(-yc,-od),v.drawImage(ea,0,0),v.restore())):O instanceof THREE.ParticleCanvasMaterial&&(gb=jb.scale.x*x,Ab=jb.scale.y*t,Ea.min.set(aa.x-gb,aa.y-Ab),Ea.max.set(aa.x+ +gb,aa.y+Ab),!1!==qb.isIntersectionBox(Ea)&&(g(O.color.getStyle()),h(O.color.getStyle()),v.save(),v.translate(aa.x,aa.y),v.rotate(-jb.rotation),v.scale(gb,Ab),O.program(v),v.restore()))}else if(ea instanceof THREE.RenderableLine)C=ea.v1,I=ea.v2,C.positionScreen.x*=x,C.positionScreen.y*=t,I.positionScreen.x*=x,I.positionScreen.y*=t,Ea.setFromPoints([C.positionScreen,I.positionScreen]),!0===qb.isIntersectionBox(Ea)&&(aa=C,jb=I,b(O.opacity),c(O.blending),v.beginPath(),v.moveTo(aa.positionScreen.x,aa.positionScreen.y), +v.lineTo(jb.positionScreen.x,jb.positionScreen.y),O instanceof THREE.LineBasicMaterial?(d(O.linewidth),e(O.linecap),f(O.linejoin),g(O.color.getStyle()),i(null,null),v.stroke(),Ea.expandByScalar(2*O.linewidth)):O instanceof THREE.LineDashedMaterial&&(d(O.linewidth),e(O.linecap),f(O.linejoin),g(O.color.getStyle()),i(O.dashSize,O.gapSize),v.stroke(),Ea.expandByScalar(2*O.linewidth)));else if(ea instanceof THREE.RenderableFace3){C=ea.v1;I=ea.v2;M=ea.v3;if(-1>C.positionScreen.z||1I.positionScreen.z||1M.positionScreen.z||1C.positionScreen.z||1I.positionScreen.z||1M.positionScreen.z||1W.positionScreen.z||1l;l++)L.autoScaleCubemaps&&!f?(n=k,s=l,t=c.image[l],v=id,t.width<=v&&t.height<=v||(x=Math.max(t.width,t.height),w=Math.floor(t.width*v/x),v=Math.floor(t.height*v/x),x=document.createElement("canvas"),x.width=w,x.height=v,x.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,w,v),t=x),n[s]=t):k[l]=c.image[l];l=k[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);s=G(c.format);t=G(c.type);B(j.TEXTURE_CUBE_MAP,c,n);for(l=0;6>l;l++)if(f){v= -k[l].mipmaps;x=0;for(C=v.length;x=Oc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Oc); -ma+=1;return a}function A(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function z(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 K(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function I(a,b,c){Qa!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),Qa=a);if(a&&(Ta!==b||Ra!==c))j.polygonOffset(b,c),Ta=b,Ra=c}function E(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);L.info.memory.textures--},O=function(a){a=a.target;a.removeEventListener("dispose",O);aa(a)},aa=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=va.length;am;m++)L.autoScaleCubemaps&&!f?(n=k,r=m,t=c.image[m],x=id,t.width<=x&&t.height<=x||(w=Math.max(t.width,t.height),v=Math.floor(t.width*x/w),x=Math.floor(t.height*x/w),w=document.createElement("canvas"),w.width=v,w.height=x,w.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,v,x),t=w),n[r]=t):k[m]=c.image[m];m=k[0];n=0===(m.width&m.width-1)&&0===(m.height&m.height-1);r=I(c.format); +t=I(c.type);B(j.TEXTURE_CUBE_MAP,c,n);for(m=0;6>m;m++)if(f){x=k[m].mipmaps;w=0;for(C=x.length;w=Oc&&console.warn("WebGLRenderer: trying to use "+ +a+" texture units while this GPU supports only "+Oc);ma+=1;return a}function A(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function z(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 F(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function H(a,b,c){Ra!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),Ra=a);if(a&&(Ua!==b||Sa!==c))j.polygonOffset(b,c), +Ua=b,Sa=c}function G(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);L.info.memory.textures--},O=function(a){a=a.target;a.removeEventListener("dispose",O);aa(a)},aa=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=va.length;ad.numSupportedMorphTargets?(i.sort(m),i.length=d.numSupportedMorphTargets):i.length>d.numSupportedMorphNormals?i.sort(m):0===i.length&&i.push([0,0]);for(h=0;hya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=nc.y,Db[jb+2]=nc.z,jb+=3;else for(ya=0;3>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;D=0;for(U=xa.length;Dya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=nc.y,Db[jb+ -2]=nc.z,jb+=3;else for(ya=0;4>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Db,qa)}if(Ec&&qd&&$a){D=0;for(U=wa.length;Dya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;D=0;for(U=xa.length;Dya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;0ya;ya++)Ac=pb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;D=0;for(U=xa.length;Dya;ya++)Ac=pb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;0ya;ya++)nc=$a[ya],Eb[kb]=nc.x,Eb[kb+1]=nc.y,Eb[kb+2]=nc.z,kb+=3;else for(ya=0;3>ya;ya++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+2]=Va.z,kb+=3;E=0;for(U=xa.length;Eya;ya++)nc=$a[ya],Eb[kb]=nc.x,Eb[kb+1]=nc.y,Eb[kb+ +2]=nc.z,kb+=3;else for(ya=0;4>ya;ya++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+2]=Va.z,kb+=3;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Eb,qa)}if(Ec&&qd&&ab){E=0;for(U=wa.length;Eya;ya++)zc=pb[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;E=0;for(U=xa.length;Eya;ya++)zc=pb[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;0ya;ya++)Ac=qb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;E=0;for(U=xa.length;Eya;ya++)Ac=qb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=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 g=a,i=j.TEXTURE_CUBE_MAP_POSITIVE_X+f;j.bindFramebuffer(j.FRAMEBUFFER, +j.createTexture();L.info.memory.textures++;var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=I(a.format),e=I(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];j.bindTexture(j.TEXTURE_CUBE_MAP,a.__webglTexture);B(j.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;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 g=a,i=j.TEXTURE_CUBE_MAP_POSITIVE_X+f;j.bindFramebuffer(j.FRAMEBUFFER, a.__webglFramebuffer[f]);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,i,g.__webglTexture,0);T(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),B(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):T(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=Ib,a=ec,d=ob,e=Hb);b!==Gb&&(j.bindFramebuffer(j.FRAMEBUFFER,b),j.viewport(d,e,c,a),Gb=b);mc=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){THREE.EventDispatcher.call(this);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); +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=Jb,a=fc,d=pb,e=Ib);b!==Hb&&(j.bindFramebuffer(j.FRAMEBUFFER,b),j.viewport(d,e,c,a),Hb=b);mc=c;qb=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){THREE.EventDispatcher.call(this);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}; THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;a.shareDepthFrom=this.shareDepthFrom;return a}; THREE.WebGLRenderTarget.prototype.dispose=function(){this.dispatchEvent({type:"dispose"})};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)};THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidModel=new THREE.Vector3;this.normalModel=new THREE.Vector3;this.normalModelView=new THREE.Vector3;this.vertexNormalsLength=0;this.vertexNormalsModel=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsModelView=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.material=this.color=null;this.uvs=[[]];this.z=null};THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidModel=new THREE.Vector3;this.normalModel=new THREE.Vector3;this.normalModelView=new THREE.Vector3;this.vertexNormalsLength=0;this.vertexNormalsModel=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsModelView=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]; -this.material=this.color=null;this.uvs=[[]];this.z=null};THREE.RenderableObject=function(){this.z=this.object=null};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=this.object=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.material=null};THREE.ColorUtils={adjustHSV:function(a,b,c,d){var e=THREE.ColorUtils.__hsv;a.getHSV(e);e.h=THREE.Math.clamp(e.h+b,0,1);e.s=THREE.Math.clamp(e.s+c,0,1);e.v=THREE.Math.clamp(e.v+d,0,1);a.setHSV(e.h,e.s,e.v)}};THREE.ColorUtils.__hsv={h:0,s:0,v:0};THREE.GeometryUtils={merge:function(a,b){var c,d,e=a.vertices.length,f=b instanceof THREE.Mesh?b.geometry:b,g=a.vertices,h=f.vertices,i=a.faces,k=f.faces,l=a.faceVertexUvs[0],f=f.faceVertexUvs[0];b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),c=b.matrix,d=new THREE.Matrix3,d.getInverse(c),d.transpose());for(var n=0,m=h.length;na?b(c,e-1):k[e]>8&255,i>>16&255,i>>24&255)),d}d.mipmapCount=1;h[2]&131072&&!1!==b&&(d.mipmapCount=Math.max(1,h[7]));d.isCubemap=h[28]&512?!0:!1;d.width=h[4];d.height=h[3];for(var h=h[1]+4,f=d.width,g=d.height,i=d.isCubemap? 6:1,k=0;kn-1?0:n-1,s=n+1>e-1?e-1:n+1,q=0>l-1?0:l-1,r=l+1>d-1?d-1:l+1,p=[],t=[0,0,h[4*(n*d+l)]/255*b];p.push([-1,0,h[4*(n*d+q)]/255*b]);p.push([-1,-1,h[4*(m*d+q)]/255*b]);p.push([0,-1,h[4*(m*d+l)]/255*b]);p.push([1,-1,h[4*(m*d+r)]/255*b]);p.push([1,0,h[4*(n*d+r)]/255*b]);p.push([1,1,h[4*(s*d+r)]/255*b]);p.push([0,1,h[4*(s*d+l)]/255*b]);p.push([-1,1,h[4*(s*d+q)]/255*b]);m=[];q=p.length;for(s=0;sn-1?0:n-1,s=n+1>e-1?e-1:n+1,r=0>l-1?0:l-1,p=l+1>d-1?d-1:l+1,q=[],x=[0,0,h[4*(n*d+l)]/255*b];q.push([-1,0,h[4*(n*d+r)]/255*b]);q.push([-1,-1,h[4*(m*d+r)]/255*b]);q.push([0,-1,h[4*(m*d+l)]/255*b]);q.push([1,-1,h[4*(m*d+p)]/255*b]);q.push([1,0,h[4*(n*d+p)]/255*b]);q.push([1,1,h[4*(s*d+p)]/255*b]);q.push([0,1,h[4*(s*d+l)]/255*b]);q.push([-1,1,h[4*(s*d+r)]/255*b]);m=[];r=q.length;for(s=0;se)return null;var f=[],g=[],h=[],i,k,l;if(0=n--){console.log("Warning, unable to triangulate polygon!");break}i=k;e<=i&&(i=0);k=i+1;e<=k&&(k=0);l=k+1;e<=l&&(l=0);var m;a:{var s=m=void 0,q=void 0,r=void 0,p=void 0,t=void 0,x=void 0,w=void 0,v= -void 0,s=a[g[i]].x,q=a[g[i]].y,r=a[g[k]].x,p=a[g[k]].y,t=a[g[l]].x,x=a[g[l]].y;if(1E-10>(r-s)*(x-q)-(p-q)*(t-s))m=!1;else{var H=void 0,F=void 0,A=void 0,z=void 0,K=void 0,I=void 0,E=void 0,V=void 0,B=void 0,T=void 0,B=V=E=v=w=void 0,H=t-r,F=x-p,A=s-t,z=q-x,K=r-s,I=p-q;for(m=0;me)return null;var f=[],g=[],h=[],i,k,l;if(0=n--){console.log("Warning, unable to triangulate polygon!");break}i=k;e<=i&&(i=0);k=i+1;e<=k&&(k=0);l=k+1;e<=l&&(l=0);var m;a:{var s=m=void 0,r=void 0,p=void 0,q=void 0,x=void 0,t=void 0,v=void 0,w= +void 0,s=a[g[i]].x,r=a[g[i]].y,p=a[g[k]].x,q=a[g[k]].y,x=a[g[l]].x,t=a[g[l]].y;if(1E-10>(p-s)*(t-r)-(q-r)*(x-s))m=!1;else{var D=void 0,K=void 0,A=void 0,z=void 0,F=void 0,H=void 0,G=void 0,V=void 0,B=void 0,T=void 0,B=V=G=w=v=void 0,D=x-p,K=t-q,A=s-x,z=r-t,F=p-s,H=q-r;for(m=0;mi)g=d+1;else if(0b&&(b=0);1Math.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; +THREE.Path.prototype.getPoints=function(a,b){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(a,b);var a=a||12,c=[],d,e,f,g,h,i,k,l,n,m,s,r,p;d=0;for(e=this.actions.length;dMath.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; THREE.Path.prototype.toShapes=function(){var a,b,c,d,e=[],f=new THREE.Path;a=0;for(b=this.actions.length;a -h&&(h+=c.length);h%=c.length;0>g&&(g+=k.length);g%=k.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:k.length-1;r=[k[g],c[h],c[e]];r=THREE.FontUtils.Triangulate.area(r);p=[k[g],k[f],c[h]];p=THREE.FontUtils.Triangulate.area(p);n+m>r+p&&(h=s,g=l,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=k.length),g%=k.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:k.length-1);n=c.slice(0,h);m=c.slice(h);s=k.slice(g);l=k.slice(0,g);f=[k[g],k[f],c[h]];q.push([k[g],c[h],c[e]]);q.push(f);c=n.concat(s).concat(l).concat(m)}return{shape:c, -isolatedPts:q,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Utils.removeHoles(a,b),d=c.allpoints,e=c.isolatedPts,c=THREE.FontUtils.Triangulate(c.shape,!1),f,g,h,i,k={};f=0;for(g=d.length;fd;d++)i=h[d].x+":"+h[d].y,i=k[i],void 0!==i&&(h[d]=i)}f=0;for(g=e.length;fd;d++)i=h[d].x+":"+h[d].y,i=k[i],void 0!==i&&(h[d]=i)}return c.concat(e)}, +THREE.Shape.Utils={removeHoles:function(a,b){var c=a.concat(),d=c.concat(),e,f,g,h,i,k,l,n,m,s,r=[];for(i=0;i +h&&(h+=c.length);h%=c.length;0>g&&(g+=k.length);g%=k.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:k.length-1;p=[k[g],c[h],c[e]];p=THREE.FontUtils.Triangulate.area(p);q=[k[g],k[f],c[h]];q=THREE.FontUtils.Triangulate.area(q);n+m>p+q&&(h=s,g=l,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=k.length),g%=k.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:k.length-1);n=c.slice(0,h);m=c.slice(h);s=k.slice(g);l=k.slice(0,g);f=[k[g],k[f],c[h]];r.push([k[g],c[h],c[e]]);r.push(f);c=n.concat(s).concat(l).concat(m)}return{shape:c, +isolatedPts:r,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Utils.removeHoles(a,b),d=c.allpoints,e=c.isolatedPts,c=THREE.FontUtils.Triangulate(c.shape,!1),f,g,h,i,k={};f=0;for(g=d.length;fd;d++)i=h[d].x+":"+h[d].y,i=k[i],void 0!==i&&(h[d]=i)}f=0;for(g=e.length;fd;d++)i=h[d].x+":"+h[d].y,i=k[i],void 0!==i&&(h[d]=i)}return c.concat(e)}, isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+ this.b3p3(a,e)}};THREE.AnimationHandler=function(){var a=[],b={},c={update:function(b){for(var c=0;ca.hierarchy[c].keys[d].time&& (a.hierarchy[c].keys[d].time=0),void 0!==a.hierarchy[c].keys[d].rot&&!(a.hierarchy[c].keys[d].rot instanceof THREE.Quaternion)){var h=a.hierarchy[c].keys[d].rot;a.hierarchy[c].keys[d].rot=new THREE.Quaternion(h[0],h[1],h[2],h[3])}if(a.hierarchy[c].keys.length&&void 0!==a.hierarchy[c].keys[0].morphTargets){h={};for(d=0;dg?(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(i).sub(a).clone()}function e(c,d){var e,f;for(J=c.length;0<=--J;){e=J;f=J-1;0>f&&(f=c.length-1);for(var g=0,i=s+2*l, -g=0;gMath.abs(c-i)?[new THREE.Vector2(b,1-e),new THREE.Vector2(d,1-f),new THREE.Vector2(k,1-g),new THREE.Vector2(n,1-a)]:[new THREE.Vector2(c,1-e),new THREE.Vector2(i,1-f),new THREE.Vector2(l,1-g),new THREE.Vector2(m,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;cd?(d=new THREE.Face3(a.index,b.index,c.index,[a.clone(),b.clone(),c.clone()]),d.centroid.add(a).add(b).add(c).divideScalar(3),d.normal=d.centroid.clone().normalize(),i.faces.push(d),d=Math.atan2(d.centroid.z,-d.centroid.x),i.faceVertexUvs[0].push([h(a.uv, a,d),h(b.uv,b,d),h(c.uv,c,d)])):(d-=1,f(a,g(a,b),g(a,c),d),f(g(a,b),b,g(b,c),d),f(g(a,c),g(b,c),c,d),f(g(a,b),g(b,c),g(a,c),d))}function g(a,b){n[a.index]||(n[a.index]=[]);n[b.index]||(n[b.index]=[]);var c=n[a.index][b.index];void 0===c&&(n[a.index][b.index]=n[b.index][a.index]=c=e((new THREE.Vector3).addVectors(a,b).divideScalar(2)));return c}function h(a,b,c){0>c&&1===a.x&&(a=new THREE.Vector2(a.x-1,a.y));0===b.x&&0===b.z&&(a=new THREE.Vector2(c/2/Math.PI+0.5,a.y));return a}THREE.Geometry.call(this); -for(var c=c||1,d=d||0,i=this,k=0,l=a.length;k=l){for(k=0;3>k;k++){l=[i[k],i[(k+1)%3]];n=!0;for(m=0;mh;h++)void 0===f[g[h]]&&(f[g[h]]=e++,this.vertices.push(a[g[h]])),g[h]=f[g[h]]}for(d=0;dd.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&(d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.startFrame+THREE.Math.clamp(Math.floor(d.time/e),0,d.length-1),g=d.weight; -f!==d.currentFrame&&(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);e=d.time%e/e;d.directionBackwards&&(e=1-e);this.morphTargetInfluences[d.currentFrame]=e*g;this.morphTargetInfluences[d.lastFrame]=(1-e)*g}}};THREE.LensFlarePlugin=function(){function a(a,c){var d=b.createProgram(),e=b.createShader(b.FRAGMENT_SHADER),f=b.createShader(b.VERTEX_SHADER),g="precision "+c+" float;\n";b.shaderSource(e,g+a.fragmentShader);b.shaderSource(f,g+a.vertexShader);b.compileShader(e);b.compileShader(f);b.attachShader(d,e);b.attachShader(d,f);b.linkProgram(d);return d}var b,c,d,e,f,g,h,i,k,l,n,m,s;this.init=function(q){b=q.context;c=q;d=q.getPrecision();e=new Float32Array(16);f=new Uint16Array(6);q=0;e[q++]=-1;e[q++]=-1; -e[q++]=0;e[q++]=0;e[q++]=1;e[q++]=-1;e[q++]=1;e[q++]=0;e[q++]=1;e[q++]=1;e[q++]=1;e[q++]=1;e[q++]=-1;e[q++]=1;e[q++]=0;e[q++]=1;q=0;f[q++]=0;f[q++]=1;f[q++]=2;f[q++]=0;f[q++]=2;f[q++]=3;g=b.createBuffer();h=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,g);b.bufferData(b.ARRAY_BUFFER,e,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.bufferData(b.ELEMENT_ARRAY_BUFFER,f,b.STATIC_DRAW);i=b.createTexture();k=b.createTexture();b.bindTexture(b.TEXTURE_2D,i);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16, +f!==d.currentFrame&&(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);e=d.time%e/e;d.directionBackwards&&(e=1-e);this.morphTargetInfluences[d.currentFrame]=e*g;this.morphTargetInfluences[d.lastFrame]=(1-e)*g}}};THREE.LensFlarePlugin=function(){function a(a,c){var d=b.createProgram(),e=b.createShader(b.FRAGMENT_SHADER),f=b.createShader(b.VERTEX_SHADER),g="precision "+c+" float;\n";b.shaderSource(e,g+a.fragmentShader);b.shaderSource(f,g+a.vertexShader);b.compileShader(e);b.compileShader(f);b.attachShader(d,e);b.attachShader(d,f);b.linkProgram(d);return d}var b,c,d,e,f,g,h,i,k,l,n,m,s;this.init=function(r){b=r.context;c=r;d=r.getPrecision();e=new Float32Array(16);f=new Uint16Array(6);r=0;e[r++]=-1;e[r++]=-1; +e[r++]=0;e[r++]=0;e[r++]=1;e[r++]=-1;e[r++]=1;e[r++]=0;e[r++]=1;e[r++]=1;e[r++]=1;e[r++]=1;e[r++]=-1;e[r++]=1;e[r++]=0;e[r++]=1;r=0;f[r++]=0;f[r++]=1;f[r++]=2;f[r++]=0;f[r++]=2;f[r++]=3;g=b.createBuffer();h=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,g);b.bufferData(b.ARRAY_BUFFER,e,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.bufferData(b.ELEMENT_ARRAY_BUFFER,f,b.STATIC_DRAW);i=b.createTexture();k=b.createTexture();b.bindTexture(b.TEXTURE_2D,i);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16, 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,k);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,16,16,0,b.RGBA,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE); b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);0>=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(l=!1,n=a(THREE.ShaderFlares.lensFlare,d)):(l=!0,n=a(THREE.ShaderFlares.lensFlareVertexTexture,d));m={};s={};m.vertex=b.getAttribLocation(n,"position");m.uv=b.getAttribLocation(n,"uv");s.renderType=b.getUniformLocation(n,"renderType");s.map=b.getUniformLocation(n,"map");s.occlusionMap=b.getUniformLocation(n,"occlusionMap");s.opacity= -b.getUniformLocation(n,"opacity");s.color=b.getUniformLocation(n,"color");s.scale=b.getUniformLocation(n,"scale");s.rotation=b.getUniformLocation(n,"rotation");s.screenPosition=b.getUniformLocation(n,"screenPosition")};this.render=function(a,d,e,f){var a=a.__webglFlares,x=a.length;if(x){var w=new THREE.Vector3,v=f/e,H=0.5*e,F=0.5*f,A=16/f,z=new THREE.Vector2(A*v,A),K=new THREE.Vector3(1,1,0),I=new THREE.Vector2(1,1),E=s,A=m;b.useProgram(n);b.enableVertexAttribArray(m.vertex);b.enableVertexAttribArray(m.uv); -b.uniform1i(E.occlusionMap,0);b.uniform1i(E.map,1);b.bindBuffer(b.ARRAY_BUFFER,g);b.vertexAttribPointer(A.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(A.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var V,B,T,C,G;for(V=0;VA;A++)w[A]=new THREE.Vector3,t[A]=new THREE.Vector3;w=v.shadowCascadeNearZ[x];v=v.shadowCascadeFarZ[x];t[0].set(-1,-1,w);t[1].set(1,-1,w);t[2].set(-1, -1,w);t[3].set(1,1,w);t[4].set(-1,-1,v);t[5].set(1,-1,v);t[6].set(-1,1,v);t[7].set(1,1,v);F.originalCamera=n;t=new THREE.Gyroscope;t.position=q.shadowCascadeOffset;t.add(F);t.add(F.target);n.add(t);q.shadowCascadeArray[p]=F;console.log("Created virtualLight",F)}x=q;w=p;v=x.shadowCascadeArray[w];v.position.copy(x.position);v.target.position.copy(x.target.position);v.lookAt(v.target);v.shadowCameraVisible=x.shadowCameraVisible;v.shadowDarkness=x.shadowDarkness;v.shadowBias=x.shadowCascadeBias[w];t=x.shadowCascadeNearZ[w]; -x=x.shadowCascadeFarZ[w];v=v.pointsFrustum;v[0].z=t;v[1].z=t;v[2].z=t;v[3].z=t;v[4].z=x;v[5].z=x;v[6].z=x;v[7].z=x;H[r]=F;r++}else H[r]=q,r++;m=0;for(s=H.length;mx;x++)w=v[x],w.copy(t[x]),THREE.ShadowMapPlugin.__projector.unprojectVector(w,p),w.applyMatrix4(r.matrixWorldInverse),w.xk.x&&(k.x=w.x),w.yk.y&&(k.y=w.y),w.zk.z&& -(k.z=w.z);r.left=i.x;r.right=k.x;r.top=k.y;r.bottom=i.y;r.updateProjectionMatrix()}r=q.shadowMap;t=q.shadowMatrix;p=q.shadowCamera;p.position.getPositionFromMatrix(q.matrixWorld);p.lookAt(q.target.matrixWorld.getPosition());p.updateMatrixWorld();p.matrixWorldInverse.getInverse(p.matrixWorld);q.cameraHelper&&(q.cameraHelper.visible=q.shadowCameraVisible);q.shadowCameraVisible&&q.cameraHelper.update();t.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);t.multiply(p.projectionMatrix);t.multiply(p.matrixWorldInverse); -h.multiplyMatrices(p.projectionMatrix,p.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(r);b.clear();v=l.__webglObjects;q=0;for(r=v.length;qz;z++)w[z]=new THREE.Vector3,t[z]=new THREE.Vector3;w=D.shadowCascadeNearZ[v];D=D.shadowCascadeFarZ[v];t[0].set(-1,-1,w);t[1].set(1,-1,w);t[2].set(-1, +1,w);t[3].set(1,1,w);t[4].set(-1,-1,D);t[5].set(1,-1,D);t[6].set(-1,1,D);t[7].set(1,1,D);A.originalCamera=m;t=new THREE.Gyroscope;t.position=p.shadowCascadeOffset;t.add(A);t.add(A.target);m.add(t);p.shadowCascadeArray[x]=A;console.log("Created virtualLight",A)}v=p;w=x;D=v.shadowCascadeArray[w];D.position.copy(v.position);D.target.position.copy(v.target.position);D.lookAt(D.target);D.shadowCameraVisible=v.shadowCameraVisible;D.shadowDarkness=v.shadowDarkness;D.shadowBias=v.shadowCascadeBias[w];t=v.shadowCascadeNearZ[w]; +v=v.shadowCascadeFarZ[w];D=D.pointsFrustum;D[0].z=t;D[1].z=t;D[2].z=t;D[3].z=t;D[4].z=v;D[5].z=v;D[6].z=v;D[7].z=v;K[q]=A;q++}else K[q]=p,q++;s=0;for(r=K.length;sv;v++)w=D[v],w.copy(t[v]),THREE.ShadowMapPlugin.__projector.unprojectVector(w,x),w.applyMatrix4(q.matrixWorldInverse),w.xk.x&&(k.x=w.x),w.yk.y&&(k.y=w.y),w.zk.z&& +(k.z=w.z);q.left=i.x;q.right=k.x;q.top=k.y;q.bottom=i.y;q.updateProjectionMatrix()}q=p.shadowMap;t=p.shadowMatrix;x=p.shadowCamera;x.position.getPositionFromMatrix(p.matrixWorld);l.getPositionFromMatrix(p.target.matrixWorld);x.lookAt(l);x.updateMatrixWorld();x.matrixWorldInverse.getInverse(x.matrixWorld);p.cameraHelper&&(p.cameraHelper.visible=p.shadowCameraVisible);p.shadowCameraVisible&&p.cameraHelper.update();t.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);t.multiply(x.projectionMatrix);t.multiply(x.matrixWorldInverse); +h.multiplyMatrices(x.projectionMatrix,x.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(q);b.clear();D=n.__webglObjects;p=0;for(q=D.length;p 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}"}}; diff --git a/editor/index.html b/editor/index.html index 651ade2908..25255ae56f 100644 --- a/editor/index.html +++ b/editor/index.html @@ -309,7 +309,7 @@ worker.onmessage = function ( event ) { - event.data.metadata = { 'format': 2 }; + event.data.metadata = { format: 2 }; handleJSON( event.data ); }; -- GitLab