|
@@ -239,9 +239,9 @@ b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.bounding
|
|
|
this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,g,f,h,k=new THREE.Vector3,l=new THREE.Vector3,m=new THREE.Vector3,p=new THREE.Vector3,n=new THREE.Vector3;if(a.index)for(var q=a.index.array,s=0<this.offsets.length?this.offsets:[{start:0,
|
|
|
count:q.length,index:0}],r=0,u=s.length;r<u;++r){e=s[r].start;g=s[r].count;for(var x=s[r].index,d=e,e=e+g;d<e;d+=3)g=3*(x+q[d]),f=3*(x+q[d+1]),h=3*(x+q[d+2]),k.fromArray(b,g),l.fromArray(b,f),m.fromArray(b,h),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[g]+=p.x,c[g+1]+=p.y,c[g+2]+=p.z,c[f]+=p.x,c[f+1]+=p.y,c[f+2]+=p.z,c[h]+=p.x,c[h+1]+=p.y,c[h+2]+=p.z}else for(d=0,e=b.length;d<e;d+=9)k.fromArray(b,d),l.fromArray(b,d+3),m.fromArray(b,d+6),p.subVectors(m,l),n.subVectors(k,l),p.cross(n),c[d]=p.x,
|
|
|
c[d+1]=p.y,c[d+2]=p.z,c[d+3]=p.x,c[d+4]=p.y,c[d+5]=p.z,c[d+6]=p.x,c[d+7]=p.y,c[d+8]=p.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){p.fromArray(d,3*a);n.fromArray(d,3*b);q.fromArray(d,3*c);s.fromArray(g,2*a);r.fromArray(g,2*b);u.fromArray(g,2*c);x=n.x-p.x;v=q.x-p.x;z=n.y-p.y;w=q.y-p.y;H=n.z-p.z;I=q.z-p.z;y=r.x-s.x;D=u.x-s.x;F=r.y-s.y;B=u.y-s.y;C=1/(y*B-D*F);S.set((B*x-F*v)*C,(B*z-F*w)*C,(B*H-F*I)*C);G.set((y*v-D*x)*C,(y*w-D*z)*C,(y*I-D*H)*C);k[a].add(S);
|
|
|
-k[b].add(S);k[c].add(S);l[a].add(G);l[b].add(G);l[c].add(G)}function b(a){aa.fromArray(e,3*a);ea.copy(aa);la=k[a];T.copy(la);T.sub(aa.multiplyScalar(aa.dot(la))).normalize();L.crossVectors(ea,la);oa=L.dot(l[a]);fa=0>oa?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=fa}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
|
|
|
+k[b].add(S);k[c].add(S);l[a].add(G);l[b].add(G);l[c].add(G)}function b(a){$.fromArray(e,3*a);ea.copy($);la=k[a];T.copy(la);T.sub($.multiplyScalar($.dot(la))).normalize();L.crossVectors(ea,la);oa=L.dot(l[a]);fa=0>oa?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=fa}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
|
|
|
else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,g=this.attributes.uv.array,f=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*f),4));for(var h=this.attributes.tangent.array,k=[],l=[],m=0;m<f;m++)k[m]=new THREE.Vector3,l[m]=new THREE.Vector3;var p=new THREE.Vector3,n=new THREE.Vector3,q=new THREE.Vector3,s=new THREE.Vector2,r=new THREE.Vector2,u=new THREE.Vector2,x,v,z,w,H,I,
|
|
|
-y,D,F,B,C,S=new THREE.Vector3,G=new THREE.Vector3,A,E,J,M,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length,0);var U=this.drawcalls,m=0;for(E=U.length;m<E;++m){A=U[m].start;J=U[m].count;var Q=U[m].index,f=A;for(A+=J;f<A;f+=3)J=Q+c[f],M=Q+c[f+1],R=Q+c[f+2],a(J,M,R)}var T=new THREE.Vector3,L=new THREE.Vector3,aa=new THREE.Vector3,ea=new THREE.Vector3,fa,la,oa,m=0;for(E=U.length;m<E;++m)for(A=U[m].start,J=U[m].count,Q=U[m].index,f=A,A+=J;f<A;f+=3)J=Q+c[f],M=Q+c[f+1],R=Q+c[f+2],b(J),b(M),b(R)}},
|
|
|
+y,D,F,B,C,S=new THREE.Vector3,G=new THREE.Vector3,A,E,J,M,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length,0);var U=this.drawcalls,m=0;for(E=U.length;m<E;++m){A=U[m].start;J=U[m].count;var Q=U[m].index,f=A;for(A+=J;f<A;f+=3)J=Q+c[f],M=Q+c[f+1],R=Q+c[f+2],a(J,M,R)}var T=new THREE.Vector3,L=new THREE.Vector3,$=new THREE.Vector3,ea=new THREE.Vector3,fa,la,oa,m=0;for(E=U.length;m<E;++m)for(A=U[m].start,J=U[m].count,Q=U[m].index,f=A,A+=J;f<A;f+=3)J=Q+c[f],M=Q+c[f+1],R=Q+c[f+2],b(J),b(M),b(R)}},
|
|
|
computeOffsets:function(a){void 0===a&&(a=THREE.BufferGeometry.MaxIndex);for(var b=this.attributes.index.array,c=this.attributes.position.array,d=b.length/3,e=new (65535<c.length/3&&65535<THREE.BufferGeometry.MaxIndex?Uint32Array:Uint16Array)(b.length),g=0,f=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,m=0,p=new Int32Array(6),n=new Int32Array(c.length),q=new Int32Array(c.length),s=0;s<c.length;s++)n[s]=-1,q[s]=-1;for(c=0;c<d;c++){for(var r=m=0;3>r;r++)s=b[3*c+r],-1===n[s]?(p[2*r]=s,p[2*r+1]=-1,m++):
|
|
|
n[s]<k.index?(p[2*r]=s,p[2*r+1]=-1,l++):(p[2*r]=s,p[2*r+1]=n[s]);if(f+m>k.index+a)for(k={start:g,count:0,index:f},h.push(k),m=0;6>m;m+=2)r=p[m+1],-1<r&&r<k.index&&(p[m+1]=-1);for(m=0;6>m;m+=2)s=p[m],r=p[m+1],-1===r&&(r=f++),n[s]=r,q[r]=s,e[g++]=r-k.index,k.count++}this.reorderBuffers(e,q,f);return this.drawcalls=this.offsets=h},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a);else{void 0===
|
|
|
b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,g=a.attributes[d],f=g.array,h=0,g=g.itemSize*b;h<f.length;h++,g++)e[g]=f[h];return this}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,g=a.length;e<g;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!==e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize*
|
|
@@ -490,30 +490,30 @@ tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.Sh
|
|
|
THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,
|
|
|
"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",
|
|
|
THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
|
|
|
-THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===Q&&(a*=d,b*=d,c*=d);t.clearColor(a,b,c,d)}function c(){N.init();t.viewport(Ia,Ja,Ca,wa);b(aa.r,aa.g,aa.b,ea)}function d(){Va=kb=null;xa="";Wa=-1;db=!0;N.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=Z.get(a);if(a.image&&b.__image__webglTextureCube)t.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;t.deleteTexture(b.__webglTexture)}Z.delete(a)}Da.textures--}function g(a){var b=a.target;
|
|
|
-b.removeEventListener("dispose",g);a=Z.get(b);if(b&&void 0!==a.__webglTexture){t.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)t.deleteFramebuffer(a.__webglFramebuffer[b]),t.deleteRenderbuffer(a.__webglRenderbuffer[b]);else t.deleteFramebuffer(a.__webglFramebuffer),t.deleteRenderbuffer(a.__webglRenderbuffer);Z.delete(a)}Da.textures--}function f(a){a=a.target;a.removeEventListener("dispose",f);h(a);Z.delete(a)}function h(a){var b=Z.get(a).program.program;
|
|
|
+THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===Q&&(a*=d,b*=d,c*=d);t.clearColor(a,b,c,d)}function c(){N.init();t.viewport(Ia,Ja,Ca,wa);b($.r,$.g,$.b,ea)}function d(){Va=kb=null;xa="";Wa=-1;db=!0;N.reset()}function e(a){a=a.target;a.removeEventListener("dispose",e);a:{var b=aa.get(a);if(a.image&&b.__image__webglTextureCube)t.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;t.deleteTexture(b.__webglTexture)}aa.delete(a)}Da.textures--}function g(a){var b=a.target;
|
|
|
+b.removeEventListener("dispose",g);a=aa.get(b);if(b&&void 0!==a.__webglTexture){t.deleteTexture(a.__webglTexture);if(b instanceof THREE.WebGLRenderTargetCube)for(b=0;6>b;b++)t.deleteFramebuffer(a.__webglFramebuffer[b]),t.deleteRenderbuffer(a.__webglRenderbuffer[b]);else t.deleteFramebuffer(a.__webglFramebuffer),t.deleteRenderbuffer(a.__webglRenderbuffer);aa.delete(a)}Da.textures--}function f(a){a=a.target;a.removeEventListener("dispose",f);h(a);aa.delete(a)}function h(a){var b=aa.get(a).program.program;
|
|
|
if(void 0!==b){a.program=void 0;a=0;for(var c=va.length;a!==c;++a){var d=va[a];if(d.program===b){0===--d.usedTimes&&(c-=1,va[a]=va[c],va.pop(),t.deleteProgram(b),Da.programs=c);break}}}}function k(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=V.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}var f=c.attributes;b=b.getAttributes();
|
|
|
a=a.defaultAttributeValues;for(var g in b){var h=b[g];if(0<=h){var k=f[g];if(void 0!==k){var l=k.itemSize;N.enableAttribute(h);var n=pa.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var m=k.data,p=m.stride,k=k.offset;t.bindBuffer(t.ARRAY_BUFFER,n);t.vertexAttribPointer(h,l,t.FLOAT,!1,p*m.array.BYTES_PER_ELEMENT,(d*p+k)*m.array.BYTES_PER_ELEMENT);if(m instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
return}e.vertexAttribDivisorANGLE(h,m.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=m.meshPerAttribute*m.count)}}else if(t.bindBuffer(t.ARRAY_BUFFER,n),t.vertexAttribPointer(h,l,t.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0===
|
|
|
c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[g],void 0!==l))switch(l.length){case 2:t.vertexAttrib2fv(h,l);break;case 3:t.vertexAttrib3fv(h,l);break;case 4:t.vertexAttrib4fv(h,l);break;default:t.vertexAttrib1fv(h,l)}}}N.disableUnusedAttributes()}function l(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-b.object.material.id:a.z!==b.z?
|
|
|
a.z-b.z:a.id-b.id}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function p(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),pa.init(a),a instanceof THREE.Light)fa.push(a);else if(a instanceof THREE.Sprite)Ha.push(a);else if(a instanceof THREE.LensFlare)Pa.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=a.material;
|
|
|
-b.transparent?Ga.push(a):Ba.push(a)}else{var c=pa.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Xa.intersectsObject(a)||(b=a.material,Z.get(b)&&(b.program=Z.get(b).program),b.transparent?oa.push(c):la.push(c),!0===ja.sortObjects&&(na.setFromMatrixPosition(a.matrixWorld),na.applyProjection(Qa),c.z=na.z))}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);
|
|
|
+b.transparent?Ga.push(a):Ba.push(a)}else{var c=pa.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Xa.intersectsObject(a)||(b=a.material,aa.get(b)&&(b.program=aa.get(b).program),b.transparent?oa.push(c):la.push(c),!0===ja.sortObjects&&(na.setFromMatrixPosition(a.matrixWorld),na.applyProjection(Qa),c.z=na.z))}b=0;for(c=a.children.length;b<c;b++)p(a.children[b])}}function n(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);
|
|
|
l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(f=k.material);if(f instanceof THREE.MeshFaceMaterial)for(var l=f.materials,n=0,m=l.length;n<m;n++)ja.renderBufferDirect(b,c,d,l[n],k);else ja.renderBufferDirect(b,c,d,f,k)}}function q(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g],l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);!0===k.visible&&(null===e&&(f=k.material),ja.renderImmediateObject(b,
|
|
|
c,d,f,k))}}function s(a){r(a);!0===a.transparent?N.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):N.setBlending(THREE.NoBlending);N.setDepthFunc(a.depthFunc);N.setDepthTest(a.depthTest);N.setDepthWrite(a.depthWrite);N.setColorWrite(a.colorWrite);N.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function r(a){a.side!==THREE.DoubleSide?N.enable(t.CULL_FACE):N.disable(t.CULL_FACE);N.setFlipSided(a.side===
|
|
|
-THREE.BackSide)}function u(a,b,c,d,g){var k,l,n,m;eb=0;var p=Z.get(d);if(d.needsUpdate||!p.program){a:{for(var q=Z.get(d),s=Zb[d.type],r=0,y=0,u=0,D=0,A=0,C=b.length;A<C;A++){var I=b[A];I.onlyShadow||!1===I.visible||(I instanceof THREE.DirectionalLight&&r++,I instanceof THREE.PointLight&&y++,I instanceof THREE.SpotLight&&u++,I instanceof THREE.HemisphereLight&&D++)}k=r;l=y;n=u;m=D;for(var G,J=0,M=0,R=b.length;M<R;M++){var la=b[M];la.castShadow&&(la instanceof THREE.SpotLight&&J++,la instanceof THREE.DirectionalLight&&
|
|
|
+THREE.BackSide)}function u(a,b,c,d,g){var k,l,n,m;eb=0;var p=aa.get(d);if(d.needsUpdate||!p.program){a:{for(var q=aa.get(d),s=Zb[d.type],r=0,y=0,u=0,D=0,A=0,C=b.length;A<C;A++){var I=b[A];I.onlyShadow||!1===I.visible||(I instanceof THREE.DirectionalLight&&r++,I instanceof THREE.PointLight&&y++,I instanceof THREE.SpotLight&&u++,I instanceof THREE.HemisphereLight&&D++)}k=r;l=y;n=u;m=D;for(var G,J=0,M=0,R=b.length;M<R;M++){var la=b[M];la.castShadow&&(la instanceof THREE.SpotLight&&J++,la instanceof THREE.DirectionalLight&&
|
|
|
!la.shadowCascade&&J++)}G=J;var S;if(lb&&g&&g.skeleton&&g.skeleton.useVertexTexture)S=1024;else{var Q=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((Q-20)/4);void 0!==g&&g instanceof THREE.SkinnedMesh&&(U=Math.min(g.skeleton.bones.length,U),U<g.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+g.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));S=U}var P={precision:E,supportsVertexTextures:mb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&
|
|
|
d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:S,useVertexTexture:lb&&g&&g.skeleton&&g.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,
|
|
|
maxMorphTargets:ja.maxMorphTargets,maxMorphNormals:ja.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:n,maxHemiLights:m,maxShadows:G,shadowMapEnabled:ma.enabled&&g.receiveShadow&&0<G,shadowMapType:ma.type,shadowMapDebug:ma.debug,shadowMapCascade:ma.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];s?T.push(s):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),
|
|
|
-T.push(d.defines[V]);for(V in P)T.push(V),T.push(P[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==s)break a;else Ga=!1;else d.addEventListener("dispose",f);if(s){var Ba=THREE.ShaderLib[s];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var aa,Ha=0,fa=va.length;Ha<
|
|
|
-fa;Ha++){var ea=va[Ha];if(ea.code===oa){aa=ea;Ga&&aa.usedTimes++;break}}void 0===aa&&(d.__webglShader=q.__webglShader,aa=new THREE.WebGLProgram(ja,oa,d,P),va.push(aa),Da.programs=va.length);q.program=aa;var Pa=aa.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ja.maxMorphTargets;ua++)0<=Pa["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ja.maxMorphNormals;ua++)0<=Pa["morphNormal"+ua]&&d.numSupportedMorphNormals++;
|
|
|
-q.uniformsList=[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ia=pa[xa];Ia&&q.uniformsList.push([q.__webglShader.uniforms[xa],Ia])}}d.needsUpdate=!1}var Ja=!1,Ca=!1,wa=!1,Ya=p.program,ca=Ya.getUniforms(),K=p.__webglShader.uniforms;Ya.id!==kb&&(t.useProgram(Ya.program),kb=Ya.id,wa=Ca=Ja=!0);d.id!==Wa&&(-1===Wa&&(wa=!0),Wa=d.id,Ca=!0);if(Ja||a!==Va)t.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&t.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/
|
|
|
-Math.LN2)),a!==Va&&(Va=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),t.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&t.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(g.bindMatrix&&
|
|
|
-null!==ca.bindMatrix&&t.uniformMatrix4fv(ca.bindMatrix,!1,g.bindMatrix.elements),g.bindMatrixInverse&&null!==ca.bindMatrixInverse&&t.uniformMatrix4fv(ca.bindMatrixInverse,!1,g.bindMatrixInverse.elements),lb&&g.skeleton&&g.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Qa=v();t.uniform1i(ca.boneTexture,Qa);ja.setTexture(g.skeleton.boneTexture,Qa)}null!==ca.boneTextureWidth&&t.uniform1i(ca.boneTextureWidth,g.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&t.uniform1i(ca.boneTextureHeight,
|
|
|
-g.skeleton.boneTextureHeight)}else g.skeleton&&g.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&t.uniformMatrix4fv(ca.boneGlobalMatrices,!1,g.skeleton.boneMatrices);if(Ca){c&&d.fog&&(K.fogColor.value=c.color,c instanceof THREE.Fog?(K.fogNear.value=c.near,K.fogFar.value=c.far):c instanceof THREE.FogExp2&&(K.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(db){var wa=!0,ba,ra,$,nb=0,ob=0,pb=0,Ka,Xa,cb,Ra,qb,da=Nb,rb=da.directional.colors,
|
|
|
-sb=da.directional.positions,tb=da.point.colors,ub=da.point.positions,ib=da.point.distances,jb=da.point.decays,vb=da.spot.colors,wb=da.spot.positions,Ib=da.spot.distances,xb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,yb=da.hemi.skyColors,zb=da.hemi.groundColors,Ab=da.hemi.positions,Za=0,La=0,ya=0,Sa=0,Bb=0,Cb=0,Db=0,fb=0,$a=0,ab=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)$=b[ba],$.onlyShadow||(Ka=$.color,Ra=$.intensity,qb=$.distance,$ instanceof THREE.AmbientLight?
|
|
|
-$.visible&&(nb+=Ka.r,ob+=Ka.g,pb+=Ka.b):$ instanceof THREE.DirectionalLight?(Bb+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),$a=3*Za,sb[$a+0]=ga.x,sb[$a+1]=ga.y,sb[$a+2]=ga.z,z(rb,$a,Ka,Ra),Za+=1)):$ instanceof THREE.PointLight?(Cb+=1,$.visible&&(ab=3*La,z(tb,ab,Ka,Ra),na.setFromMatrixPosition($.matrixWorld),ub[ab+0]=na.x,ub[ab+1]=na.y,ub[ab+2]=na.z,ib[La]=qb,jb[La]=0===$.distance?0:$.decay,La+=1)):$ instanceof THREE.SpotLight?
|
|
|
-(Db+=1,$.visible&&(Ea=3*ya,z(vb,Ea,Ka,Ra),ga.setFromMatrixPosition($.matrixWorld),wb[Ea+0]=ga.x,wb[Ea+1]=ga.y,wb[Ea+2]=ga.z,Ib[ya]=qb,na.setFromMatrixPosition($.target.matrixWorld),ga.sub(na),ga.normalize(),xb[Ea+0]=ga.x,xb[Ea+1]=ga.y,xb[Ea+2]=ga.z,Jb[ya]=Math.cos($.angle),Kb[ya]=$.exponent,Lb[ya]=0===$.distance?0:$.decay,ya+=1)):$ instanceof THREE.HemisphereLight&&(fb+=1,$.visible&&(ga.setFromMatrixPosition($.matrixWorld),ga.normalize(),Ta=3*Sa,Ab[Ta+0]=ga.x,Ab[Ta+1]=ga.y,Ab[Ta+2]=ga.z,Xa=$.color,
|
|
|
-cb=$.groundColor,z(yb,Ta,Xa,Ra),z(zb,Ta,cb,Ra),Sa+=1)));ba=3*Za;for(ra=Math.max(rb.length,3*Bb);ba<ra;ba++)rb[ba]=0;ba=3*La;for(ra=Math.max(tb.length,3*Cb);ba<ra;ba++)tb[ba]=0;ba=3*ya;for(ra=Math.max(vb.length,3*Db);ba<ra;ba++)vb[ba]=0;ba=3*Sa;for(ra=Math.max(yb.length,3*fb);ba<ra;ba++)yb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*fb);ba<ra;ba++)zb[ba]=0;da.directional.length=Za;da.point.length=La;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=nb;da.ambient[1]=ob;da.ambient[2]=pb;db=!1}if(wa){var ka=
|
|
|
+T.push(d.defines[V]);for(V in P)T.push(V),T.push(P[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==s)break a;else Ga=!1;else d.addEventListener("dispose",f);if(s){var Ba=THREE.ShaderLib[s];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var $,Ha=0,fa=va.length;Ha<
|
|
|
+fa;Ha++){var ea=va[Ha];if(ea.code===oa){$=ea;Ga&&$.usedTimes++;break}}void 0===$&&(d.__webglShader=q.__webglShader,$=new THREE.WebGLProgram(ja,oa,d,P),va.push($),Da.programs=va.length);q.program=$;var Pa=$.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ja.maxMorphTargets;ua++)0<=Pa["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ja.maxMorphNormals;ua++)0<=Pa["morphNormal"+ua]&&d.numSupportedMorphNormals++;q.uniformsList=
|
|
|
+[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ia=pa[xa];Ia&&q.uniformsList.push([q.__webglShader.uniforms[xa],Ia])}}d.needsUpdate=!1}var Ja=!1,Ca=!1,wa=!1,Ya=p.program,ca=Ya.getUniforms(),K=p.__webglShader.uniforms;Ya.id!==kb&&(t.useProgram(Ya.program),kb=Ya.id,wa=Ca=Ja=!0);d.id!==Wa&&(-1===Wa&&(wa=!0),Wa=d.id,Ca=!0);if(Ja||a!==Va)t.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&t.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==
|
|
|
+Va&&(Va=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),t.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ca.viewMatrix&&t.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(g.bindMatrix&&null!==
|
|
|
+ca.bindMatrix&&t.uniformMatrix4fv(ca.bindMatrix,!1,g.bindMatrix.elements),g.bindMatrixInverse&&null!==ca.bindMatrixInverse&&t.uniformMatrix4fv(ca.bindMatrixInverse,!1,g.bindMatrixInverse.elements),lb&&g.skeleton&&g.skeleton.useVertexTexture){if(null!==ca.boneTexture){var Qa=v();t.uniform1i(ca.boneTexture,Qa);ja.setTexture(g.skeleton.boneTexture,Qa)}null!==ca.boneTextureWidth&&t.uniform1i(ca.boneTextureWidth,g.skeleton.boneTextureWidth);null!==ca.boneTextureHeight&&t.uniform1i(ca.boneTextureHeight,
|
|
|
+g.skeleton.boneTextureHeight)}else g.skeleton&&g.skeleton.boneMatrices&&null!==ca.boneGlobalMatrices&&t.uniformMatrix4fv(ca.boneGlobalMatrices,!1,g.skeleton.boneMatrices);if(Ca){c&&d.fog&&(K.fogColor.value=c.color,c instanceof THREE.Fog?(K.fogNear.value=c.near,K.fogFar.value=c.far):c instanceof THREE.FogExp2&&(K.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(db){var wa=!0,ba,ra,Z,nb=0,ob=0,pb=0,Ka,Xa,cb,Ra,qb,da=Nb,rb=da.directional.colors,
|
|
|
+sb=da.directional.positions,tb=da.point.colors,ub=da.point.positions,ib=da.point.distances,jb=da.point.decays,vb=da.spot.colors,wb=da.spot.positions,Ib=da.spot.distances,xb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,yb=da.hemi.skyColors,zb=da.hemi.groundColors,Ab=da.hemi.positions,Za=0,La=0,ya=0,Sa=0,Bb=0,Cb=0,Db=0,fb=0,$a=0,ab=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)Z=b[ba],Z.onlyShadow||(Ka=Z.color,Ra=Z.intensity,qb=Z.distance,Z instanceof THREE.AmbientLight?
|
|
|
+Z.visible&&(nb+=Ka.r,ob+=Ka.g,pb+=Ka.b):Z instanceof THREE.DirectionalLight?(Bb+=1,Z.visible&&(ga.setFromMatrixPosition(Z.matrixWorld),na.setFromMatrixPosition(Z.target.matrixWorld),ga.sub(na),ga.normalize(),$a=3*Za,sb[$a+0]=ga.x,sb[$a+1]=ga.y,sb[$a+2]=ga.z,z(rb,$a,Ka,Ra),Za+=1)):Z instanceof THREE.PointLight?(Cb+=1,Z.visible&&(ab=3*La,z(tb,ab,Ka,Ra),na.setFromMatrixPosition(Z.matrixWorld),ub[ab+0]=na.x,ub[ab+1]=na.y,ub[ab+2]=na.z,ib[La]=qb,jb[La]=0===Z.distance?0:Z.decay,La+=1)):Z instanceof THREE.SpotLight?
|
|
|
+(Db+=1,Z.visible&&(Ea=3*ya,z(vb,Ea,Ka,Ra),ga.setFromMatrixPosition(Z.matrixWorld),wb[Ea+0]=ga.x,wb[Ea+1]=ga.y,wb[Ea+2]=ga.z,Ib[ya]=qb,na.setFromMatrixPosition(Z.target.matrixWorld),ga.sub(na),ga.normalize(),xb[Ea+0]=ga.x,xb[Ea+1]=ga.y,xb[Ea+2]=ga.z,Jb[ya]=Math.cos(Z.angle),Kb[ya]=Z.exponent,Lb[ya]=0===Z.distance?0:Z.decay,ya+=1)):Z instanceof THREE.HemisphereLight&&(fb+=1,Z.visible&&(ga.setFromMatrixPosition(Z.matrixWorld),ga.normalize(),Ta=3*Sa,Ab[Ta+0]=ga.x,Ab[Ta+1]=ga.y,Ab[Ta+2]=ga.z,Xa=Z.color,
|
|
|
+cb=Z.groundColor,z(yb,Ta,Xa,Ra),z(zb,Ta,cb,Ra),Sa+=1)));ba=3*Za;for(ra=Math.max(rb.length,3*Bb);ba<ra;ba++)rb[ba]=0;ba=3*La;for(ra=Math.max(tb.length,3*Cb);ba<ra;ba++)tb[ba]=0;ba=3*ya;for(ra=Math.max(vb.length,3*Db);ba<ra;ba++)vb[ba]=0;ba=3*Sa;for(ra=Math.max(yb.length,3*fb);ba<ra;ba++)yb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*fb);ba<ra;ba++)zb[ba]=0;da.directional.length=Za;da.point.length=La;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=nb;da.ambient[1]=ob;da.ambient[2]=pb;db=!1}if(wa){var ka=
|
|
|
Nb;K.ambientLightColor.value=ka.ambient;K.directionalLightColor.value=ka.directional.colors;K.directionalLightDirection.value=ka.directional.positions;K.pointLightColor.value=ka.point.colors;K.pointLightPosition.value=ka.point.positions;K.pointLightDistance.value=ka.point.distances;K.pointLightDecay.value=ka.point.decays;K.spotLightColor.value=ka.spot.colors;K.spotLightPosition.value=ka.spot.positions;K.spotLightDistance.value=ka.spot.distances;K.spotLightDirection.value=ka.spot.directions;K.spotLightAngleCos.value=
|
|
|
ka.spot.anglesCos;K.spotLightExponent.value=ka.spot.exponents;K.spotLightDecay.value=ka.spot.decays;K.hemisphereLightSkyColor.value=ka.hemi.skyColors;K.hemisphereLightGroundColor.value=ka.hemi.groundColors;K.hemisphereLightDirection.value=ka.hemi.positions;x(K,!0)}else x(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){K.opacity.value=d.opacity;K.diffuse.value=d.color;K.map.value=d.map;K.specularMap.value=d.specularMap;K.alphaMap.value=
|
|
|
d.alphaMap;d.bumpMap&&(K.bumpMap.value=d.bumpMap,K.bumpScale.value=d.bumpScale);d.normalMap&&(K.normalMap.value=d.normalMap,K.normalScale.value.copy(d.normalScale));var za;d.map?za=d.map:d.specularMap?za=d.specularMap:d.normalMap?za=d.normalMap:d.bumpMap?za=d.bumpMap:d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Ob=za.offset,Pb=za.repeat;K.offsetRepeat.value.set(Ob.x,Ob.y,Pb.x,Pb.y)}K.envMap.value=d.envMap;K.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?
|
|
@@ -524,17 +524,17 @@ Aa.shadowMapSize,K.shadowMatrix.value[Ua]=Aa.shadowMatrix,K.shadowDarkness.value
|
|
|
case "1iv":t.uniform1iv(Y,O);break;case "3iv":t.uniform3iv(Y,O);break;case "1fv":t.uniform1fv(Y,O);break;case "2fv":t.uniform2fv(Y,O);break;case "3fv":t.uniform3fv(Y,O);break;case "4fv":t.uniform4fv(Y,O);break;case "Matrix3fv":t.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":t.uniformMatrix4fv(Y,!1,O);break;case "i":t.uniform1i(Y,O);break;case "f":t.uniform1f(Y,O);break;case "v2":t.uniform2f(Y,O.x,O.y);break;case "v3":t.uniform3f(Y,O.x,O.y,O.z);break;case "v4":t.uniform4f(Y,O.x,O.y,O.z,O.w);break;
|
|
|
case "c":t.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":t.uniform1iv(Y,O);break;case "iv":t.uniform3iv(Y,O);break;case "fv1":t.uniform1fv(Y,O);break;case "fv":t.uniform3fv(Y,O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,qa=O.length;W<qa;W++)ta=2*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y;t.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(qa=O.length;W<qa;W++)ta=3*W,X._array[ta+0]=O[W].x,X._array[ta+
|
|
|
1]=O[W].y,X._array[ta+2]=O[W].z;t.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(qa=O.length;W<qa;W++)ta=4*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z,X._array[ta+3]=O[W].w;t.uniform4fv(Y,X._array);break;case "m3":t.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,9*W);t.uniformMatrix3fv(Y,!1,
|
|
|
-X._array);break;case "m4":t.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,16*W);t.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Ma=v();t.uniform1i(Y,Ma);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ha=sa,Tb=Ma,hb=Z.get(ha);if(6===ha.image.length)if(ha.needsUpdate){hb.__image__webglTextureCube||(ha.addEventListener("dispose",
|
|
|
+X._array);break;case "m4":t.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,16*W);t.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Ma=v();t.uniform1i(Y,Ma);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ha=sa,Tb=Ma,hb=aa.get(ha);if(6===ha.image.length)if(ha.needsUpdate){hb.__image__webglTextureCube||(ha.addEventListener("dispose",
|
|
|
e),hb.__image__webglTextureCube=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+Tb);N.bindTexture(t.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,ha.flipY);for(var Ub=ha instanceof THREE.CompressedTexture,Gb=ha.image[0]instanceof THREE.DataTexture,Na=[],ia=0;6>ia;ia++)Na[ia]=!ja.autoScaleCubemaps||Ub||Gb?Gb?ha.image[ia].image:ha.image[ia]:H(ha.image[ia],ac);var Vb=Na[0],Wb=THREE.Math.isPowerOfTwo(Vb.width)&&THREE.Math.isPowerOfTwo(Vb.height),Fa=F(ha.format),
|
|
|
Hb=F(ha.type);w(t.TEXTURE_CUBE_MAP,ha,Wb);for(ia=0;6>ia;ia++)if(Ub)for(var Oa,Xb=Na[ia].mipmaps,bb=0,bc=Xb.length;bb<bc;bb++)Oa=Xb[bb],ha.format!==THREE.RGBAFormat&&ha.format!==THREE.RGBFormat?-1<Yb().indexOf(Fa)?N.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Oa.width,Oa.height,0,Oa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,bb,Fa,Oa.width,Oa.height,0,Fa,Hb,Oa.data);
|
|
|
else Gb?N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Na[ia].width,Na[ia].height,0,Fa,Hb,Na[ia].data):N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Fa,Hb,Na[ia]);ha.generateMipmaps&&Wb&&t.generateMipmap(t.TEXTURE_CUBE_MAP);ha.needsUpdate=!1;if(ha.onUpdate)ha.onUpdate(ha)}else N.activeTexture(t.TEXTURE0+Tb),N.bindTexture(t.TEXTURE_CUBE_MAP,hb.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;N.activeTexture(t.TEXTURE0+Ma);N.bindTexture(t.TEXTURE_CUBE_MAP,
|
|
|
-Z.get(cc).__webglTexture)}else ja.setTexture(sa,Ma);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=v();t.uniform1iv(Y,X._array);W=0;for(qa=X.value.length;W<qa;W++)sa=X.value[W],Ma=X._array[W],sa&&ja.setTexture(sa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Sb)}}}}t.uniformMatrix4fv(ca.modelViewMatrix,!1,g._modelViewMatrix.elements);ca.normalMatrix&&t.uniformMatrix3fv(ca.normalMatrix,!1,g._normalMatrix.elements);null!==
|
|
|
+aa.get(cc).__webglTexture)}else ja.setTexture(sa,Ma);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=v();t.uniform1iv(Y,X._array);W=0;for(qa=X.value.length;W<qa;W++)sa=X.value[W],Ma=X._array[W],sa&&ja.setTexture(sa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Sb)}}}}t.uniformMatrix4fv(ca.modelViewMatrix,!1,g._modelViewMatrix.elements);ca.normalMatrix&&t.uniformMatrix3fv(ca.normalMatrix,!1,g._normalMatrix.elements);null!==
|
|
|
ca.modelMatrix&&t.uniformMatrix4fv(ca.modelMatrix,!1,g.matrixWorld.elements);return Ya}function x(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=
|
|
|
b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function v(){var a=eb;a>=cb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+cb);eb+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function w(a,b,c){c?(t.texParameteri(a,t.TEXTURE_WRAP_S,F(b.wrapS)),t.texParameteri(a,t.TEXTURE_WRAP_T,F(b.wrapT)),
|
|
|
t.texParameteri(a,t.TEXTURE_MAG_FILTER,F(b.magFilter)),t.texParameteri(a,t.TEXTURE_MIN_FILTER,F(b.minFilter))):(t.texParameteri(a,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(a,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),t.texParameteri(a,t.TEXTURE_MAG_FILTER,D(b.magFilter)),
|
|
|
-t.texParameteri(a,t.TEXTURE_MIN_FILTER,D(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||Z.get(b).__currentAnisotropy)&&(t.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
|
|
|
-ja.getMaxAnisotropy())),Z.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function I(a,b,c){t.bindFramebuffer(t.FRAMEBUFFER,a);
|
|
|
-t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,c,Z.get(b).__webglTexture,0)}function y(a,b){t.bindRenderbuffer(t.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,b.width,b.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,b.width,b.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,
|
|
|
+t.texParameteri(a,t.TEXTURE_MIN_FILTER,D(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||aa.get(b).__currentAnisotropy)&&(t.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
|
|
|
+ja.getMaxAnisotropy())),aa.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function I(a,b,c){t.bindFramebuffer(t.FRAMEBUFFER,
|
|
|
+a);t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,c,aa.get(b).__webglTexture,0)}function y(a,b){t.bindRenderbuffer(t.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,b.width,b.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,b.width,b.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,
|
|
|
a)):t.renderbufferStorage(t.RENDERBUFFER,t.RGBA4,b.width,b.height)}function D(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?t.NEAREST:t.LINEAR}function F(a){var b;if(a===THREE.RepeatWrapping)return t.REPEAT;if(a===THREE.ClampToEdgeWrapping)return t.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return t.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return t.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return t.NEAREST_MIPMAP_NEAREST;
|
|
|
if(a===THREE.NearestMipMapLinearFilter)return t.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return t.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return t.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return t.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return t.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return t.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return t.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return t.UNSIGNED_SHORT_5_6_5;
|
|
|
if(a===THREE.ByteType)return t.BYTE;if(a===THREE.ShortType)return t.SHORT;if(a===THREE.UnsignedShortType)return t.UNSIGNED_SHORT;if(a===THREE.IntType)return t.INT;if(a===THREE.UnsignedIntType)return t.UNSIGNED_INT;if(a===THREE.FloatType)return t.FLOAT;b=V.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return t.ALPHA;if(a===THREE.RGBFormat)return t.RGB;if(a===THREE.RGBAFormat)return t.RGBA;if(a===THREE.LuminanceFormat)return t.LUMINANCE;
|
|
@@ -542,17 +542,17 @@ if(a===THREE.LuminanceAlphaFormat)return t.LUMINANCE_ALPHA;if(a===THREE.AddEquat
|
|
|
if(a===THREE.DstAlphaFactor)return t.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return t.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return t.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return t.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return t.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
|
if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
|
|
|
if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var B=void 0!==a.canvas?a.canvas:document.createElement("canvas"),C=void 0!==a.context?a.context:null,S=B.width,G=B.height,A=1,E=void 0!==a.precision?a.precision:"highp",J=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,Q=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?
|
|
|
-a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,aa=new THREE.Color(0),ea=0,fa=[],la=[],oa=[],Ba=[],Ga=[],Ha=[],Pa=[];this.domElement=B;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ja=this,va=[],kb=null,ua=null,Wa=-1,xa="",Va=null,eb=0,Ia=0,Ja=0,Ca=B.width,wa=
|
|
|
+a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,$=new THREE.Color(0),ea=0,fa=[],la=[],oa=[],Ba=[],Ga=[],Ha=[],Pa=[];this.domElement=B;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ja=this,va=[],kb=null,ua=null,Wa=-1,xa="",Va=null,eb=0,Ia=0,Ja=0,Ca=B.width,wa=
|
|
|
B.height,ib=0,jb=0,Xa=new THREE.Frustum,Qa=new THREE.Matrix4,na=new THREE.Vector3,ga=new THREE.Vector3,db=!0,Nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},Da={programs:0,geometries:0,textures:0},P={calls:0,vertices:0,faces:0,points:0};this.info={render:P,memory:Da,
|
|
|
-programs:va};var t;try{a={alpha:J,depth:M,stencil:R,antialias:U,premultipliedAlpha:Q,preserveDrawingBuffer:T};t=C||B.getContext("webgl",a)||B.getContext("experimental-webgl",a);if(null===t){if(null!==B.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}B.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();Z.clear()},!1)}catch(Ib){console.error("THREE.WebGLRenderer: "+Ib)}var N=new THREE.WebGLState(t,
|
|
|
-F);void 0===t.getShaderPrecisionFormat&&(t.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var Z=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(t,Z,this.info),V=new THREE.WebGLExtensions(t);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);
|
|
|
+programs:va};var t;try{a={alpha:J,depth:M,stencil:R,antialias:U,premultipliedAlpha:Q,preserveDrawingBuffer:T};t=C||B.getContext("webgl",a)||B.getContext("experimental-webgl",a);if(null===t){if(null!==B.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}B.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();aa.clear()},!1)}catch(Ib){console.error("THREE.WebGLRenderer: "+Ib)}var N=new THREE.WebGLState(t,
|
|
|
+F);void 0===t.getShaderPrecisionFormat&&(t.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var aa=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(t,aa,this.info),V=new THREE.WebGLExtensions(t);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);
|
|
|
L&&V.get("EXT_frag_depth");c();this.context=t;this.extensions=V;this.state=N;var ma=new THREE.WebGLShadowMap(this,fa,pa);this.shadowMap=ma;var cb=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),C=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jb=t.getParameter(t.MAX_TEXTURE_SIZE),ac=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),mb=0<C,lb=mb&&V.get("OES_texture_float"),Kb=V.get("ANGLE_instanced_arrays"),J=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),C=t.getShaderPrecisionFormat(t.VERTEX_SHADER,
|
|
|
t.MEDIUM_FLOAT),M=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT);a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT);var Yb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=t.getParameter(t.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),J=0<J.precision&&0<M.precision,C=0<C.precision&&0<a.precision;"highp"!==E||J||(C?(E="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):
|
|
|
(E="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==E||C||(E="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Lb=new THREE.SpritePlugin(this,Ha),Mb=new THREE.LensFlarePlugin(this,Pa);this.getContext=function(){return t};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return mb};this.supportsInstancedArrays=function(){return Kb};this.supportsFloatTextures=
|
|
|
function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;
|
|
|
return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?t.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return E};this.getPixelRatio=function(){return A};this.setPixelRatio=function(a){void 0!==a&&(A=a)};this.getSize=function(){return{width:S,height:G}};this.setSize=function(a,b,c){S=a;G=b;B.width=a*A;B.height=b*A;!1!==c&&(B.style.width=a+"px",B.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,
|
|
|
-b,c,d){Ia=a*A;Ja=b*A;Ca=c*A;wa=d*A;t.viewport(Ia,Ja,Ca,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*A,b*A,c*A,d*A)};this.enableScissorTest=function(a){N.setScissorTest(a)};this.getClearColor=function(){return aa};this.setClearColor=function(a,c){aa.set(a);ea=void 0!==c?c:1;b(aa.r,aa.g,aa.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b(aa.r,aa.g,aa.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=t.COLOR_BUFFER_BIT;if(void 0===b||b)d|=t.DEPTH_BUFFER_BIT;
|
|
|
-if(void 0===c||c)d|=t.STENCIL_BUFFER_BIT;t.clear(d)};this.clearColor=function(){t.clear(t.COLOR_BUFFER_BIT)};this.clearDepth=function(){t.clear(t.DEPTH_BUFFER_BIT)};this.clearStencil=function(){t.clear(t.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.renderBufferImmediate=function(a,b,c){N.initAttributes();var d=Z.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=t.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&
|
|
|
+b,c,d){Ia=a*A;Ja=b*A;Ca=c*A;wa=d*A;t.viewport(Ia,Ja,Ca,wa)};this.setScissor=function(a,b,c,d){t.scissor(a*A,b*A,c*A,d*A)};this.enableScissorTest=function(a){N.setScissorTest(a)};this.getClearColor=function(){return $};this.setClearColor=function(a,c){$.set(a);ea=void 0!==c?c:1;b($.r,$.g,$.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b($.r,$.g,$.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=t.COLOR_BUFFER_BIT;if(void 0===b||b)d|=t.DEPTH_BUFFER_BIT;
|
|
|
+if(void 0===c||c)d|=t.STENCIL_BUFFER_BIT;t.clear(d)};this.clearColor=function(){t.clear(t.COLOR_BUFFER_BIT)};this.clearDepth=function(){t.clear(t.DEPTH_BUFFER_BIT)};this.clearStencil=function(){t.clear(t.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.renderBufferImmediate=function(a,b,c){N.initAttributes();var d=aa.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=t.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&
|
|
|
(d.__webglNormalBuffer=t.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=t.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=t.createBuffer());b=b.getAttributes();a.hasPositions&&(t.bindBuffer(t.ARRAY_BUFFER,d.__webglVertexBuffer),t.bufferData(t.ARRAY_BUFFER,a.positionArray,t.DYNAMIC_DRAW),N.enableAttribute(b.position),t.vertexAttribPointer(b.position,3,t.FLOAT,!1,0,0));if(a.hasNormals){t.bindBuffer(t.ARRAY_BUFFER,d.__webglNormalBuffer);if(!1===c instanceof
|
|
|
THREE.MeshPhongMaterial&&c.shading===THREE.FlatShading){var e,f,g,h,k,l,n,m,p,q,s,r=3*a.count;for(s=0;s<r;s+=9)q=a.normalArray,e=q[s],f=q[s+1],g=q[s+2],h=q[s+3],l=q[s+4],m=q[s+5],k=q[s+6],n=q[s+7],p=q[s+8],e=(e+h+k)/3,f=(f+l+n)/3,g=(g+m+p)/3,q[s]=e,q[s+1]=f,q[s+2]=g,q[s+3]=e,q[s+4]=f,q[s+5]=g,q[s+6]=e,q[s+7]=f,q[s+8]=g}t.bufferData(t.ARRAY_BUFFER,a.normalArray,t.DYNAMIC_DRAW);N.enableAttribute(b.normal);t.vertexAttribPointer(b.normal,3,t.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(t.bindBuffer(t.ARRAY_BUFFER,
|
|
|
d.__webglUvBuffer),t.bufferData(t.ARRAY_BUFFER,a.uvArray,t.DYNAMIC_DRAW),N.enableAttribute(b.uv),t.vertexAttribPointer(b.uv,2,t.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(t.bindBuffer(t.ARRAY_BUFFER,d.__webglColorBuffer),t.bufferData(t.ARRAY_BUFFER,a.colorArray,t.DYNAMIC_DRAW),N.enableAttribute(b.color),t.vertexAttribPointer(b.color,3,t.FLOAT,!1,0,0));N.disableUnusedAttributes();t.drawArrays(t.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e){if(!1!==d.visible){s(d);
|
|
@@ -566,19 +566,19 @@ b&&(k(d,a,f,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(e,c[m].cou
|
|
|
Uint32Array&&V.get("OES_element_index_uint")?(h=t.UNSIGNED_INT,l=4):(h=t.UNSIGNED_SHORT,l=2),e=f.offsets,0===e.length)c&&(k(d,a,f,0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,m.array.length,h,0),P.calls++,P.points+=m.array.length;else for(1<e.length&&(c=!0),m=0,g=e.length;m<g;m++)p=e[m].index,c&&(k(d,a,f,p),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)),t.drawElements(b,e[m].count,h,e[m].start*l),P.calls++,P.points+=e[m].count;else if(c&&k(d,a,f,0),d=f.attributes.position,e=f.offsets,0===
|
|
|
e.length)t.drawArrays(b,0,d.array.length/3),P.calls++,P.points+=d.array.length/3;else for(m=0,g=e.length;m<g;m++)t.drawArrays(b,e[m].index,e[m].count),P.calls++,P.points+=e[m].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;xa="";Wa=-1;Va=null;db=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);
|
|
|
Qa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Xa.setFromMatrix(Qa);fa.length=0;la.length=0;oa.length=0;Ba.length=0;Ga.length=0;Ha.length=0;Pa.length=0;p(a);!0===ja.sortObjects&&(la.sort(l),oa.sort(m));pa.update(la);pa.update(oa);ma.render(a,b);P.calls=0;P.vertices=0;P.faces=0;P.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,n(la,b,fa,e,d),n(oa,b,fa,e,d),q(Ba,b,fa,
|
|
|
-e,d),q(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),n(la,b,fa,e,null),q(Ba,b,fa,e,null),n(oa,b,fa,e,null),q(Ga,b,fa,e,null));Lb.render(a,b);Mb.render(a,b,ib,jb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(t.TEXTURE_CUBE_MAP,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),N.bindTexture(t.TEXTURE_CUBE_MAP,null)):(N.bindTexture(t.TEXTURE_2D,Z.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),
|
|
|
+e,d),q(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),n(la,b,fa,e,null),q(Ba,b,fa,e,null),n(oa,b,fa,e,null),q(Ga,b,fa,e,null));Lb.render(a,b);Mb.render(a,b,ib,jb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(t.TEXTURE_CUBE_MAP,aa.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_CUBE_MAP),N.bindTexture(t.TEXTURE_CUBE_MAP,null)):(N.bindTexture(t.TEXTURE_2D,aa.get(c).__webglTexture),t.generateMipmap(t.TEXTURE_2D),
|
|
|
N.bindTexture(t.TEXTURE_2D,null)));N.setDepthTest(!0);N.setDepthWrite(!0);N.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){s(d);var f=u(a,b,c,d,e);xa="";e.render(function(a){ja.renderBufferImmediate(a,f,d)})};var Zb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===
|
|
|
-THREE.CullFaceNone?N.disable(t.CULL_FACE):(b===THREE.FrontFaceDirectionCW?t.frontFace(t.CW):t.frontFace(t.CCW),a===THREE.CullFaceBack?t.cullFace(t.BACK):a===THREE.CullFaceFront?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK),N.enable(t.CULL_FACE))};this.setMaterialFaces=r;this.uploadTexture=function(a,b){var c=Z.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+b);N.bindTexture(t.TEXTURE_2D,
|
|
|
+THREE.CullFaceNone?N.disable(t.CULL_FACE):(b===THREE.FrontFaceDirectionCW?t.frontFace(t.CW):t.frontFace(t.CCW),a===THREE.CullFaceBack?t.cullFace(t.BACK):a===THREE.CullFaceFront?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK),N.enable(t.CULL_FACE))};this.setMaterialFaces=r;this.uploadTexture=function(a,b){var c=aa.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=t.createTexture(),Da.textures++);N.activeTexture(t.TEXTURE0+b);N.bindTexture(t.TEXTURE_2D,
|
|
|
c.__webglTexture);t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,a.flipY);t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);t.pixelStorei(t.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Jb);var d=a.image,c=THREE.Math.isPowerOfTwo(d.width)&&THREE.Math.isPowerOfTwo(d.height),f=F(a.format),g=F(a.type);w(t.TEXTURE_2D,a,c);var h=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<h.length&&c){for(var k=0,l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,f,d.width,d.height,0,f,g,d.data);
|
|
|
a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,f,d.width,d.height,0,f,g,d.data);else if(a instanceof THREE.CompressedTexture)for(k=0,l=h.length;k<l;k++)d=h[k],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Yb().indexOf(f)?N.compressedTexImage2D(t.TEXTURE_2D,k,f,d.width,d.height,0,d.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):N.texImage2D(t.TEXTURE_2D,k,f,d.width,d.height,0,f,g,d.data);else if(0<h.length&&c){k=
|
|
|
-0;for(l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,f,f,g,d);a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,f,f,g,a.image);a.generateMipmaps&&c&&t.generateMipmap(t.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){a.image&&!1!==a.image.complete&&!0===a.__webglInit&&void 0===Z.get(a).__webglInit&&(a.needsUpdate=!0);if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",
|
|
|
-a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a):ja.uploadTexture(a,b)}else N.activeTexture(t.TEXTURE0+b),N.bindTexture(t.TEXTURE_2D,Z.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===Z.get(a).__webglFramebuffer){var c=Z.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",g);c.__webglTexture=t.createTexture();
|
|
|
-Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=F(a.format),f=F(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);w(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,f,null),I(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],
|
|
|
-a);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=t.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:t.createRenderbuffer(),N.bindTexture(t.TEXTURE_2D,c.__webglTexture),w(t.TEXTURE_2D,a,d),N.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,f,null),I(c.__webglFramebuffer,a,t.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):
|
|
|
-a.depthBuffer&&a.stencilBuffer&&t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?N.bindTexture(t.TEXTURE_CUBE_MAP,null):N.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=Z.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ia,e=Ja);
|
|
|
-b!==ua&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),ua=b);ib=c;jb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(Z.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var g=!1;Z.get(a).__webglFramebuffer!==
|
|
|
-ua&&(t.bindFramebuffer(t.FRAMEBUFFER,Z.get(a).__webglFramebuffer),g=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&t.bindFramebuffer(t.FRAMEBUFFER,ua)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
|
|
|
-this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
|
|
|
+0;for(l=h.length;k<l;k++)d=h[k],N.texImage2D(t.TEXTURE_2D,k,f,f,g,d);a.generateMipmaps=!1}else N.texImage2D(t.TEXTURE_2D,0,f,f,g,a.image);a.generateMipmaps&&c&&t.generateMipmap(t.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate(a)};this.setTexture=function(a,b){if(!0===a.needsUpdate){var c=a.image;void 0===c?console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",a):!1===c.complete?console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",
|
|
|
+a):ja.uploadTexture(a,b)}else N.activeTexture(t.TEXTURE0+b),N.bindTexture(t.TEXTURE_2D,aa.get(a).__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===aa.get(a).__webglFramebuffer){var c=aa.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",g);c.__webglTexture=t.createTexture();Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=
|
|
|
+F(a.format),f=F(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture);w(t.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=t.createFramebuffer(),c.__webglRenderbuffer[h]=t.createRenderbuffer(),N.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,f,null),I(c.__webglFramebuffer[h],a,t.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],a);a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=
|
|
|
+t.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:t.createRenderbuffer(),N.bindTexture(t.TEXTURE_2D,c.__webglTexture),w(t.TEXTURE_2D,a,d),N.texImage2D(t.TEXTURE_2D,0,e,a.width,a.height,0,e,f,null),I(c.__webglFramebuffer,a,t.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&t.framebufferRenderbuffer(t.FRAMEBUFFER,
|
|
|
+t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&t.generateMipmap(t.TEXTURE_2D);b?N.bindTexture(t.TEXTURE_CUBE_MAP,null):N.bindTexture(t.TEXTURE_2D,null);t.bindRenderbuffer(t.RENDERBUFFER,null);t.bindFramebuffer(t.FRAMEBUFFER,null)}a?(c=aa.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ia,e=Ja);b!==ua&&(t.bindFramebuffer(t.FRAMEBUFFER,b),t.viewport(d,e,c,a),ua=b);
|
|
|
+ib=c;jb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(aa.get(a).__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var g=!1;aa.get(a).__webglFramebuffer!==ua&&(t.bindFramebuffer(t.FRAMEBUFFER,aa.get(a).__webglFramebuffer),
|
|
|
+g=!0);t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE?t.readPixels(b,c,d,e,t.RGBA,t.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&t.bindFramebuffer(t.FRAMEBUFFER,ua)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=
|
|
|
+function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
|
|
|
ma.type=a}},shadowMapCullFace:{get:function(){return ma.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");ma.cullFace=a}},shadowMapDebug:{get:function(){return ma.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");ma.debug=a}},shadowMapCascade:{get:function(){return ma.cascade},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCascade is now .shadowMap.cascade.");ma.cascade=a}}})};
|
|
|
THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();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=void 0!==c.shareDepthFrom?c.shareDepthFrom:null};
|
|
@@ -763,9 +763,9 @@ THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||cons
|
|
|
!0):-1E-10>d?-1E-10>f&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(L=a.length;0<=--L;){c=L;d=L-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*m,e=0;e<f;e++){var g=U*e,h=U*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+B,g=g+B,l=l+B,h=h+B;F.faces.push(new THREE.Face3(k,g,h));F.faces.push(new THREE.Face3(g,l,h));k=x.generateSideWallUV(F,k,g,l,h);F.faceVertexUvs[0].push([k[0],k[1],k[3]]);F.faceVertexUvs[0].push([k[1],
|
|
|
k[2],k[3]])}}}function g(a,b,c){F.vertices.push(new THREE.Vector3(a,b,c))}function f(a,b,c){a+=B;b+=B;c+=B;F.faces.push(new THREE.Face3(a,b,c));a=x.generateTopUV(F,a,b,c);F.faceVertexUvs[0].push(a)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,l=void 0!==b.bevelSize?b.bevelSize:k-2,m=void 0!==b.bevelSegments?b.bevelSegments:3,p=void 0!==b.bevelEnabled?b.bevelEnabled:!0,n=void 0!==b.curveSegments?b.curveSegments:12,q=void 0!==b.steps?b.steps:1,s=b.extrudePath,
|
|
|
r,u=!1,x=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,v,z,w,H;s&&(r=s.getSpacedPoints(q),u=!0,p=!1,v=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(s,q,!1),z=new THREE.Vector3,w=new THREE.Vector3,H=new THREE.Vector3);p||(l=k=m=0);var I,y,D,F=this,B=this.vertices.length,s=a.extractPoints(n),n=s.shape,C=s.holes;if(s=!THREE.Shape.Utils.isClockWise(n)){n=n.reverse();y=0;for(D=C.length;y<D;y++)I=C[y],THREE.Shape.Utils.isClockWise(I)&&(C[y]=I.reverse());s=
|
|
|
-!1}var S=THREE.Shape.Utils.triangulateShape(n,C),G=n;y=0;for(D=C.length;y<D;y++)I=C[y],n=n.concat(I);var A,E,J,M,R,U=n.length,Q,T=S.length,s=[],L=0;J=G.length;A=J-1;for(E=L+1;L<J;L++,A++,E++)A===J&&(A=0),E===J&&(E=0),s[L]=d(G[L],G[A],G[E]);var aa=[],ea,fa=s.concat();y=0;for(D=C.length;y<D;y++){I=C[y];ea=[];L=0;J=I.length;A=J-1;for(E=L+1;L<J;L++,A++,E++)A===J&&(A=0),E===J&&(E=0),ea[L]=d(I[L],I[A],I[E]);aa.push(ea);fa=fa.concat(ea)}for(A=0;A<m;A++){J=A/m;M=k*(1-J);E=l*Math.sin(J*Math.PI/2);L=0;for(J=
|
|
|
-G.length;L<J;L++)R=c(G[L],s[L],E),g(R.x,R.y,-M);y=0;for(D=C.length;y<D;y++)for(I=C[y],ea=aa[y],L=0,J=I.length;L<J;L++)R=c(I[L],ea[L],E),g(R.x,R.y,-M)}E=l;for(L=0;L<U;L++)R=p?c(n[L],fa[L],E):n[L],u?(w.copy(v.normals[0]).multiplyScalar(R.x),z.copy(v.binormals[0]).multiplyScalar(R.y),H.copy(r[0]).add(w).add(z),g(H.x,H.y,H.z)):g(R.x,R.y,0);for(J=1;J<=q;J++)for(L=0;L<U;L++)R=p?c(n[L],fa[L],E):n[L],u?(w.copy(v.normals[J]).multiplyScalar(R.x),z.copy(v.binormals[J]).multiplyScalar(R.y),H.copy(r[J]).add(w).add(z),
|
|
|
-g(H.x,H.y,H.z)):g(R.x,R.y,h/q*J);for(A=m-1;0<=A;A--){J=A/m;M=k*(1-J);E=l*Math.sin(J*Math.PI/2);L=0;for(J=G.length;L<J;L++)R=c(G[L],s[L],E),g(R.x,R.y,h+M);y=0;for(D=C.length;y<D;y++)for(I=C[y],ea=aa[y],L=0,J=I.length;L<J;L++)R=c(I[L],ea[L],E),u?g(R.x,R.y+r[q-1].y,r[q-1].x+M):g(R.x,R.y,h+M)}(function(){if(p){var a;a=0*U;for(L=0;L<T;L++)Q=S[L],f(Q[2]+a,Q[1]+a,Q[0]+a);a=q+2*m;a*=U;for(L=0;L<T;L++)Q=S[L],f(Q[0]+a,Q[1]+a,Q[2]+a)}else{for(L=0;L<T;L++)Q=S[L],f(Q[2],Q[1],Q[0]);for(L=0;L<T;L++)Q=S[L],f(Q[0]+
|
|
|
+!1}var S=THREE.Shape.Utils.triangulateShape(n,C),G=n;y=0;for(D=C.length;y<D;y++)I=C[y],n=n.concat(I);var A,E,J,M,R,U=n.length,Q,T=S.length,s=[],L=0;J=G.length;A=J-1;for(E=L+1;L<J;L++,A++,E++)A===J&&(A=0),E===J&&(E=0),s[L]=d(G[L],G[A],G[E]);var $=[],ea,fa=s.concat();y=0;for(D=C.length;y<D;y++){I=C[y];ea=[];L=0;J=I.length;A=J-1;for(E=L+1;L<J;L++,A++,E++)A===J&&(A=0),E===J&&(E=0),ea[L]=d(I[L],I[A],I[E]);$.push(ea);fa=fa.concat(ea)}for(A=0;A<m;A++){J=A/m;M=k*(1-J);E=l*Math.sin(J*Math.PI/2);L=0;for(J=
|
|
|
+G.length;L<J;L++)R=c(G[L],s[L],E),g(R.x,R.y,-M);y=0;for(D=C.length;y<D;y++)for(I=C[y],ea=$[y],L=0,J=I.length;L<J;L++)R=c(I[L],ea[L],E),g(R.x,R.y,-M)}E=l;for(L=0;L<U;L++)R=p?c(n[L],fa[L],E):n[L],u?(w.copy(v.normals[0]).multiplyScalar(R.x),z.copy(v.binormals[0]).multiplyScalar(R.y),H.copy(r[0]).add(w).add(z),g(H.x,H.y,H.z)):g(R.x,R.y,0);for(J=1;J<=q;J++)for(L=0;L<U;L++)R=p?c(n[L],fa[L],E):n[L],u?(w.copy(v.normals[J]).multiplyScalar(R.x),z.copy(v.binormals[J]).multiplyScalar(R.y),H.copy(r[J]).add(w).add(z),
|
|
|
+g(H.x,H.y,H.z)):g(R.x,R.y,h/q*J);for(A=m-1;0<=A;A--){J=A/m;M=k*(1-J);E=l*Math.sin(J*Math.PI/2);L=0;for(J=G.length;L<J;L++)R=c(G[L],s[L],E),g(R.x,R.y,h+M);y=0;for(D=C.length;y<D;y++)for(I=C[y],ea=$[y],L=0,J=I.length;L<J;L++)R=c(I[L],ea[L],E),u?g(R.x,R.y+r[q-1].y,r[q-1].x+M):g(R.x,R.y,h+M)}(function(){if(p){var a;a=0*U;for(L=0;L<T;L++)Q=S[L],f(Q[2]+a,Q[1]+a,Q[0]+a);a=q+2*m;a*=U;for(L=0;L<T;L++)Q=S[L],f(Q[0]+a,Q[1]+a,Q[2]+a)}else{for(L=0;L<T;L++)Q=S[L],f(Q[2],Q[1],Q[0]);for(L=0;L<T;L++)Q=S[L],f(Q[0]+
|
|
|
U*q,Q[1]+U*q,Q[2]+U*q)}})();(function(){var a=0;e(G,a);a+=G.length;y=0;for(D=C.length;y<D;y++)I=C[y],e(I,a),a+=I.length})()};
|
|
|
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d){a=a.vertices;b=a[b];c=a[c];d=a[d];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(c.x,c.y),new THREE.Vector2(d.x,d.y)]},generateSideWallUV:function(a,b,c,d,e){a=a.vertices;b=a[b];c=a[c];d=a[d];e=a[e];return.01>Math.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y,
|
|
|
1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this};
|