|
@@ -296,7 +296,7 @@ THREE.LOD.prototype.update=function(){var a=new THREE.Vector3,b=new THREE.Vector
|
|
|
THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===this.__lights.indexOf(a)&&this.__lights.push(a),a.target&&void 0===a.target.parent&&this.add(a.target);else if(!(a instanceof THREE.Camera||a instanceof THREE.Bone)){this.__objectsAdded.push(a);var b=this.__objectsRemoved.indexOf(a);-1!==b&&this.__objectsRemoved.splice(b,1)}for(b=0;b<a.children.length;b++)this.__addObject(a.children[b])};
|
|
|
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1);if(a.shadowCascadeArray)for(b=0;b<a.shadowCascadeArray.length;b++)this.__removeObject(a.shadowCascadeArray[b])}else a instanceof THREE.Camera||(this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1));for(b=0;b<a.children.length;b++)this.__removeObject(a.children[b])};
|
|
|
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=w.length;d<e;d++){var f=w[d];Ka.copy(f.color);if(f instanceof THREE.DirectionalLight){var h=ta.getPositionFromMatrix(f.matrixWorld).normalize(),g=b.dot(h);0>=g||(g*=f.intensity,c.add(Ka.multiplyScalar(g)))}else f instanceof THREE.PointLight&&(h=ta.getPositionFromMatrix(f.matrixWorld),g=b.dot(ta.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);n(d);s(a.getStyle());F.stroke();Ea.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;Ga[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===Ga[n.id]?r("rgba(0,0,0,1)"):
|
|
|
+function c(a,b,c,d){m(b);l(c);n(d);s(a.getStyle());F.stroke();Ea.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;Ga[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===Ga[n.id]?r("rgba(0,0,0,1)"):
|
|
|
r(Ga[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===ka[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),ka[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data),b=ka[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,F.save(),F.transform(n,k,c,e,a,g),F.fill(),F.restore())}}function f(a,b,c,d,e,f,h,g,j,i,k,m,l){var n,p;n=l.width-1;p=l.height-1;h*=n;g*=p;c-=a;d-=b;e-=a;f-=b;j=j*n-h;i=i*p-g;k=k*n-h;m=m*p-g;p=1/(j*m-k*i);n=(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-n*h-c*g;b=b-i*h-d*g;F.save();F.transform(n,i,c,d,a,b);F.clip();F.drawImage(l,0,0);F.restore()}function h(a,
|
|
|
b,c,d){ua[0]=255*a.r|0;ua[1]=255*a.g|0;ua[2]=255*a.b|0;ua[4]=255*b.r|0;ua[5]=255*b.g|0;ua[6]=255*b.b|0;ua[8]=255*c.r|0;ua[9]=255*c.g|0;ua[10]=255*c.b|0;ua[12]=255*d.r|0;ua[13]=255*d.g|0;ua[14]=255*d.b|0;j.putImageData(Oa,0,0);Fa.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){z!==a&&(z=F.globalAlpha=a)}function k(a){I!==a&&(a===THREE.NormalBlending?F.globalCompositeOperation="source-over":
|
|
@@ -312,11 +312,11 @@ F.save(),F.translate(B.x,B.y),F.rotate(-D.rotation),F.scale(A,z),F.fillRect(-0.5
|
|
|
R,D=K,I=A,A=z,i(A.opacity),k(A.blending),F.beginPath(),F.moveTo(B.positionScreen.x,B.positionScreen.y),F.lineTo(D.positionScreen.x,D.positionScreen.y),A instanceof THREE.LineBasicMaterial){m(A.linewidth);l(A.linecap);n(A.linejoin);if(A.vertexColors!==THREE.VertexColors)s(A.color.getStyle());else if(z=I.vertexColors[0].getStyle(),I=I.vertexColors[1].getStyle(),z===I)s(z);else{try{var M=F.createLinearGradient(B.positionScreen.x,B.positionScreen.y,D.positionScreen.x,D.positionScreen.y);M.addColorStop(0,
|
|
|
z);M.addColorStop(1,I)}catch(C){M=z}s(M)}F.stroke();Ea.expandByScalar(2*A.linewidth)}else A instanceof THREE.LineDashedMaterial&&(m(A.linewidth),l(A.linecap),n(A.linejoin),s(A.color.getStyle()),q(A.dashSize,A.gapSize),F.stroke(),Ea.expandByScalar(2*A.linewidth),q(null,null))}else if(A instanceof THREE.RenderableFace3){R=A.v1;K=A.v2;ca=A.v3;if(-1>R.positionScreen.z||1<R.positionScreen.z)continue;if(-1>K.positionScreen.z||1<K.positionScreen.z)continue;if(-1>ca.positionScreen.z||1<ca.positionScreen.z)continue;
|
|
|
R.positionScreen.x*=x;R.positionScreen.y*=J;K.positionScreen.x*=x;K.positionScreen.y*=J;ca.positionScreen.x*=x;ca.positionScreen.y*=J;0<z.overdraw&&(g(R.positionScreen,K.positionScreen,z.overdraw),g(K.positionScreen,ca.positionScreen,z.overdraw),g(ca.positionScreen,R.positionScreen,z.overdraw));Ea.setFromPoints([R.positionScreen,K.positionScreen,ca.positionScreen]);if(!0===va.isIntersectionBox(Ea)){B=R;D=K;I=ca;t.info.render.vertices+=3;t.info.render.faces++;i(z.opacity);k(z.blending);wa=B.positionScreen.x;
|
|
|
-Ba=B.positionScreen.y;P=D.positionScreen.x;Aa=D.positionScreen.y;Z=I.positionScreen.x;da=I.positionScreen.y;var S=wa,N=Ba,ia=P,ka=Aa,na=Z,pa=da;F.beginPath();F.moveTo(S,N);F.lineTo(ia,ka);F.lineTo(na,pa);F.closePath();(z instanceof THREE.MeshLambertMaterial||z instanceof THREE.MeshPhongMaterial)&&null===z.map?(sa.copy(z.color),ga.copy(z.emissive),z.vertexColors===THREE.FaceColors&&sa.multiply(A.color),!1===z.wireframe&&z.shading==THREE.SmoothShading&&3==A.vertexNormalsLength?(ba.copy(gb),$.copy(gb),
|
|
|
+Ba=B.positionScreen.y;P=D.positionScreen.x;Aa=D.positionScreen.y;Z=I.positionScreen.x;da=I.positionScreen.y;var S=wa,N=Ba,ia=P,ka=Aa,na=Z,pa=da;F.beginPath();F.moveTo(S,N);F.lineTo(ia,ka);F.lineTo(na,pa);F.closePath();(z instanceof THREE.MeshLambertMaterial||z instanceof THREE.MeshPhongMaterial)&&null===z.map?(sa.copy(z.color),ga.copy(z.emissive),z.vertexColors===THREE.FaceColors&&sa.multiply(A.color),!1===z.wireframe&&z.shading===THREE.SmoothShading&&3===A.vertexNormalsLength?(ba.copy(gb),$.copy(gb),
|
|
|
V.copy(gb),b(A.v1.positionWorld,A.vertexNormalsModel[0],ba),b(A.v2.positionWorld,A.vertexNormalsModel[1],$),b(A.v3.positionWorld,A.vertexNormalsModel[2],V),ba.multiply(sa).add(ga),$.multiply(sa).add(ga),V.multiply(sa).add(ga),ja.addColors($,V).multiplyScalar(0.5),Qa=h(ba,$,V,ja),f(wa,Ba,P,Aa,Z,da,0,0,1,0,0,1,Qa)):(O.copy(gb),b(A.centroidModel,A.normalModel,O),O.multiply(sa).add(ga),!0===z.wireframe?c(O,z.wireframeLinewidth,z.wireframeLinecap,z.wireframeLinejoin):d(O))):z instanceof THREE.MeshBasicMaterial||
|
|
|
z instanceof THREE.MeshLambertMaterial||z instanceof THREE.MeshPhongMaterial?null!==z.map?z.map.mapping instanceof THREE.UVMapping&&(xa=A.uvs[0],e(wa,Ba,P,Aa,Z,da,xa[0].x,xa[0].y,xa[1].x,xa[1].y,xa[2].x,xa[2].y,z.map)):null!==z.envMap?z.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(ta.copy(A.vertexNormalsModelView[0]),bb=0.5*ta.x+0.5,cb=0.5*ta.y+0.5,ta.copy(A.vertexNormalsModelView[1]),Ma=0.5*ta.x+0.5,fb=0.5*ta.y+0.5,ta.copy(A.vertexNormalsModelView[2]),sb=0.5*ta.x+0.5,pb=0.5*ta.y+
|
|
|
0.5,e(wa,Ba,P,Aa,Z,da,bb,cb,Ma,fb,sb,pb,z.envMap)):(O.copy(z.color),z.vertexColors===THREE.FaceColors&&O.multiply(A.color),!0===z.wireframe?c(O,z.wireframeLinewidth,z.wireframeLinecap,z.wireframeLinejoin):d(O)):z instanceof THREE.MeshDepthMaterial?(Da=Q.near,Ua=Q.far,ba.r=ba.g=ba.b=1-p(B.positionScreen.z*B.positionScreen.w,Da,Ua),$.r=$.g=$.b=1-p(D.positionScreen.z*D.positionScreen.w,Da,Ua),V.r=V.g=V.b=1-p(I.positionScreen.z*I.positionScreen.w,Da,Ua),ja.addColors($,V).multiplyScalar(0.5),Qa=h(ba,$,
|
|
|
-V,ja),f(wa,Ba,P,Aa,Z,da,0,0,1,0,0,1,Qa)):z instanceof THREE.MeshNormalMaterial&&(B=void 0,z.shading==THREE.FlatShading?(B=A.normalModelView,O.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),!0===z.wireframe?c(O,z.wireframeLinewidth,z.wireframeLinecap,z.wireframeLinejoin):d(O)):z.shading==THREE.SmoothShading&&(B=A.vertexNormalsModelView[0],ba.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),B=A.vertexNormalsModelView[1],$.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),B=A.vertexNormalsModelView[2],
|
|
|
+V,ja),f(wa,Ba,P,Aa,Z,da,0,0,1,0,0,1,Qa)):z instanceof THREE.MeshNormalMaterial&&(B=void 0,z.shading===THREE.FlatShading?(B=A.normalModelView,O.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),!0===z.wireframe?c(O,z.wireframeLinewidth,z.wireframeLinecap,z.wireframeLinejoin):d(O)):z.shading===THREE.SmoothShading&&(B=A.vertexNormalsModelView[0],ba.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),B=A.vertexNormalsModelView[1],$.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),B=A.vertexNormalsModelView[2],
|
|
|
V.setRGB(B.x,B.y,B.z).multiplyScalar(0.5).addScalar(0.5),ja.addColors($,V).multiplyScalar(0.5),Qa=h(ba,$,V,ja),f(wa,Ba,P,Aa,Z,da,0,0,1,0,0,1,Qa)))}}la.union(Ea)}}F.setTransform(1,0,0,1,0,0)}}};THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",
|
|
|
envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else if ( combine == 2 ) {\ngl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif",
|
|
|
envmap_pars_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n#ifdef USE_SKINNING\nvec4 worldPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif",
|