|
@@ -214,76 +214,76 @@ b.n32,b.n43-b.n33,b.n44-b.n34);ma[5].set(b.n41+b.n31,b.n42+b.n32,b.n43+b.n33,b.n
|
|
|
f.count=0;for(c=e.materials.length;b<c;b++)d=e.materials[b],d.transparent?r(h,d):r(f,d)}function s(b){var c,d,e,f,h=b.object,g=b.buffer,i=b.opaque,j=b.transparent;j.count=0;b=i.count=0;for(e=h.materials.length;b<e;b++)if(c=h.materials[b],c instanceof THREE.MeshFaceMaterial){c=0;for(d=g.materials.length;c<d;c++)(f=g.materials[c])&&(f.transparent?r(j,f):r(i,f))}else(f=c)&&(f.transparent?r(j,f):r(i,f))}function p(b,c){return c.z-b.z}function D(b,d){var j,Ra,Ba,r=0,o,Ca,p,C,q=b.lights;na||(na=new THREE.Camera(J.shadowCameraFov,
|
|
|
d.aspect,J.shadowCameraNear,J.shadowCameraFar));j=0;for(Ra=q.length;j<Ra;j++)if(Ba=q[j],Ba instanceof THREE.SpotLight&&Ba.castShadow){J.shadowMap[r]||(J.shadowMap[r]=new THREE.WebGLRenderTarget(J.shadowMapWidth,J.shadowMapHeight,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat}));Oa[r]||(Oa[r]=new THREE.Matrix4);o=J.shadowMap[r];Ca=Oa[r];na.position.copy(Ba.position);na.target.position.copy(Ba.target.position);na.update(void 0,!0);b.update(void 0,!1,na);Ca.set(0.5,
|
|
|
0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);Ca.multiplySelf(na.projectionMatrix);Ca.multiplySelf(na.matrixWorldInverse);na.matrixWorldInverse.flattenToArray(Ma);na.projectionMatrix.flattenToArray(La);wa.multiply(na.projectionMatrix,na.matrixWorldInverse);k(wa);J.initWebGLObjects(b);ka(o);c.clearColor(1,1,1,1);J.clear();c.clearColor(sa.r,sa.g,sa.b,Na);Ca=b.__webglObjects.length;Ba=b.__webglObjectsImmediate.length;for(o=0;o<Ca;o++)p=b.__webglObjects[o],C=p.object,C.visible&&C.castShadow?!(C instanceof
|
|
|
-THREE.Mesh)||n(C)?(C.matrixWorld.flattenToArray(C._objectMatrixArray),U(C,na,!1),p.render=!0):p.render=!1:p.render=!1;h(!0);M(THREE.NormalBlending);for(o=0;o<Ca;o++)if(p=b.__webglObjects[o],p.render)C=p.object,buffer=p.buffer,i(C),p=C.geometry.morphTargets.length?Ta:Pa,f(na,q,null,p,buffer,C);for(o=0;o<Ba;o++)p=b.__webglObjectsImmediate[o],C=p.object,C.visible&&C.castShadow&&(C.matrixAutoUpdate&&C.matrixWorld.flattenToArray(C._objectMatrixArray),U(C,na,!1),i(C),program=e(na,q,null,Pa,C),C.render(function(b){g(b,
|
|
|
-program,Pa.shading)}));r++}}function F(b){c.enable(c.POLYGON_OFFSET_FILL);c.polygonOffset(0.1,1);c.enable(c.STENCIL_TEST);c.enable(c.DEPTH_TEST);c.depthMask(!1);c.colorMask(!1,!1,!1,!1);c.stencilFunc(c.ALWAYS,1,255);c.stencilOpSeparate(c.BACK,c.KEEP,c.INCR,c.KEEP);c.stencilOpSeparate(c.FRONT,c.KEEP,c.DECR,c.KEEP);var d,e=b.lights.length,f,h=b.lights,g=[],i,j,k,n,q,r=b.__webglShadowVolumes.length;for(d=0;d<e;d++)if(f=b.lights[d],f instanceof THREE.DirectionalLight&&f.castShadow){g[0]=-f.position.x;
|
|
|
-g[1]=-f.position.y;g[2]=-f.position.z;for(q=0;q<r;q++)f=b.__webglShadowVolumes[q].object,i=b.__webglShadowVolumes[q].buffer,j=f.materials[0],j.program||J.initMaterial(j,h,void 0,f),j=j.program,k=j.uniforms,n=j.attributes,R!==j&&(c.useProgram(j),R=j,c.uniformMatrix4fv(k.projectionMatrix,!1,La),c.uniformMatrix4fv(k.viewMatrix,!1,Ma),c.uniform3fv(k.directionalLightDirection,g)),f.matrixWorld.flattenToArray(f._objectMatrixArray),c.uniformMatrix4fv(k.objectMatrix,!1,f._objectMatrixArray),c.bindBuffer(c.ARRAY_BUFFER,
|
|
|
-i.__webglVertexBuffer),c.vertexAttribPointer(n.position,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,i.__webglNormalBuffer),c.vertexAttribPointer(n.normal,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,i.__webglFaceBuffer),c.cullFace(c.FRONT),c.drawElements(c.TRIANGLES,i.__webglFaceCount,c.UNSIGNED_SHORT,0),c.cullFace(c.BACK),c.drawElements(c.TRIANGLES,i.__webglFaceCount,c.UNSIGNED_SHORT,0)}c.disable(c.POLYGON_OFFSET_FILL);c.colorMask(!0,!0,!0,!0);c.stencilFunc(c.NOTEQUAL,0,255);c.stencilOp(c.KEEP,
|
|
|
-c.KEEP,c.KEEP);c.disable(c.DEPTH_TEST);T=da=-1;R=v.program;c.useProgram(v.program);c.uniformMatrix4fv(v.projectionLocation,!1,La);c.uniform1f(v.darknessLocation,v.darkness);c.bindBuffer(c.ARRAY_BUFFER,v.vertexBuffer);c.vertexAttribPointer(v.vertexLocation,3,c.FLOAT,!1,0,0);c.enableVertexAttribArray(v.vertexLocation);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.blendEquation(c.FUNC_ADD);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,v.elementBuffer);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);c.disable(c.STENCIL_TEST);
|
|
|
-c.enable(c.DEPTH_TEST);c.depthMask(K)}function G(b,d){var e,f,h;e=w.attributes;var g=w.uniforms,i=qa/la,j,k=[],n=la*0.5,q=qa*0.5,r=!0;c.useProgram(w.program);R=w.program;T=da=-1;Ua||(c.enableVertexAttribArray(w.attributes.position),c.enableVertexAttribArray(w.attributes.uv),Ua=!0);c.disable(c.CULL_FACE);c.enable(c.BLEND);c.depthMask(!0);c.bindBuffer(c.ARRAY_BUFFER,w.vertexBuffer);c.vertexAttribPointer(e.position,2,c.FLOAT,!1,16,0);c.vertexAttribPointer(e.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,
|
|
|
-w.elementBuffer);c.uniformMatrix4fv(g.projectionMatrix,!1,La);c.activeTexture(c.TEXTURE0);c.uniform1i(g.map,0);e=0;for(f=b.__webglSprites.length;e<f;e++)h=b.__webglSprites[e],h.useScreenCoordinates?h.z=-h.position.z:(h._modelViewMatrix.multiplyToArray(d.matrixWorldInverse,h.matrixWorld,h._modelViewMatrixArray),h.z=-h._modelViewMatrix.n34);b.__webglSprites.sort(p);e=0;for(f=b.__webglSprites.length;e<f;e++)h=b.__webglSprites[e],h.material===void 0&&h.map&&h.map.image&&h.map.image.width&&(h.useScreenCoordinates?
|
|
|
-(c.uniform1i(g.useScreenCoordinates,1),c.uniform3f(g.screenPosition,(h.position.x-n)/n,(q-h.position.y)/q,Math.max(0,Math.min(1,h.position.z)))):(c.uniform1i(g.useScreenCoordinates,0),c.uniform1i(g.affectedByDistance,h.affectedByDistance?1:0),c.uniformMatrix4fv(g.modelViewMatrix,!1,h._modelViewMatrixArray)),j=h.map.image.width/(h.scaleByViewport?qa:1),k[0]=j*i*h.scale.x,k[1]=j*h.scale.y,c.uniform2f(g.uvScale,h.uvScale.x,h.uvScale.y),c.uniform2f(g.uvOffset,h.uvOffset.x,h.uvOffset.y),c.uniform2f(g.alignment,
|
|
|
-h.alignment.x,h.alignment.y),c.uniform1f(g.opacity,h.opacity),c.uniform1f(g.rotation,h.rotation),c.uniform2fv(g.scale,k),h.mergeWith3D&&!r?(c.enable(c.DEPTH_TEST),r=!0):!h.mergeWith3D&&r&&(c.disable(c.DEPTH_TEST),r=!1),M(h.blending),ra(h.map,0),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0));c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(K)}function B(b,e){var d,f,h=b.__webglLensFlares.length,g,i,j,k=new THREE.Vector3,n=qa/la,q=la*0.5,r=qa*0.5,o=16/qa,p=[o*n,o],s=[1,1,0],u=[1,1],w=y.uniforms;
|
|
|
-d=y.attributes;c.useProgram(y.program);R=y.program;T=da=-1;Va||(c.enableVertexAttribArray(y.attributes.vertex),c.enableVertexAttribArray(y.attributes.uv),Va=!0);c.uniform1i(w.occlusionMap,0);c.uniform1i(w.map,1);c.bindBuffer(c.ARRAY_BUFFER,y.vertexBuffer);c.vertexAttribPointer(d.vertex,2,c.FLOAT,!1,16,0);c.vertexAttribPointer(d.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.elementBuffer);c.disable(c.CULL_FACE);c.depthMask(!1);c.activeTexture(c.TEXTURE0);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);
|
|
|
-c.activeTexture(c.TEXTURE1);for(f=0;f<h;f++)if(d=b.__webglLensFlares[f].object,k.set(d.matrixWorld.n14,d.matrixWorld.n24,d.matrixWorld.n34),e.matrixWorldInverse.multiplyVector3(k),e.projectionMatrix.multiplyVector3(k),s[0]=k.x,s[1]=k.y,s[2]=k.z,u[0]=s[0]*q+q,u[1]=s[1]*r+r,y.hasVertexTexture||u[0]>0&&u[0]<la&&u[1]>0&&u[1]<qa){c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.copyTexImage2D(c.TEXTURE_2D,0,c.RGB,u[0]-8,u[1]-8,16,16,0);c.uniform1i(w.renderType,0);c.uniform2fv(w.scale,p);c.uniform3fv(w.screenPosition,
|
|
|
-s);c.disable(c.BLEND);c.enable(c.DEPTH_TEST);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);c.copyTexImage2D(c.TEXTURE_2D,0,c.RGBA,u[0]-8,u[1]-8,16,16,0);c.uniform1i(w.renderType,1);c.disable(c.DEPTH_TEST);c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);d.positionScreen.x=s[0];d.positionScreen.y=s[1];d.positionScreen.z=s[2];d.customUpdateCallback?d.customUpdateCallback(d):d.updateLensFlares();c.uniform1i(w.renderType,
|
|
|
-2);c.enable(c.BLEND);g=0;for(i=d.lensFlares.length;g<i;g++)if(j=d.lensFlares[g],j.opacity>0.0010&&j.scale>0.0010)s[0]=j.x,s[1]=j.y,s[2]=j.z,o=j.size*j.scale/qa,p[0]=o*n,p[1]=o,c.uniform3fv(w.screenPosition,s),c.uniform2fv(w.scale,p),c.uniform1f(w.rotation,j.rotation),c.uniform1f(w.opacity,j.opacity),M(j.blending),ra(j.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0)}c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(K)}function U(b,c,d){b._modelViewMatrix.multiplyToArray(c.matrixWorldInverse,
|
|
|
-b.matrixWorld,b._modelViewMatrixArray);d&&THREE.Matrix4.makeInvert3x3(b._modelViewMatrix).transposeIntoArray(b._normalMatrixArray)}function ta(b){var c,d,e,f;f=b.__materials;b=0;for(d=f.length;b<d;b++)if(e=f[b],e.attributes)for(c in e.attributes)if(e.attributes[c].needsUpdate)return!0;return!1}function fa(b){var c,d,e,f;f=b.__materials;b=0;for(d=f.length;b<d;b++)if(e=f[b],e.attributes)for(c in e.attributes)e.attributes[c].needsUpdate=!1}function H(b){var e,f,h,g;if(b instanceof THREE.Mesh){f=b.geometry;
|
|
|
-for(e in f.geometryGroups)if(h=f.geometryGroups[e],g=ta(h),f.__dirtyVertices||f.__dirtyMorphTargets||f.__dirtyElements||f.__dirtyUvs||f.__dirtyNormals||f.__dirtyColors||f.__dirtyTangents||g){g=h;var i=b,j=c.DYNAMIC_DRAW;if(g.__inittedArrays){var k=void 0,n=void 0,r=void 0,q=void 0,o=r=void 0,p=void 0,s=void 0,u=void 0,w=void 0,y=void 0,B=void 0,D=void 0,F=void 0,x=void 0,v=void 0,L=void 0,G=void 0,t=q=u=q=s=p=void 0,m=void 0,A=m=t=p=void 0,J=void 0,K=A=m=t=r=r=o=u=q=A=m=t=J=A=m=t=J=A=m=t=void 0,H=
|
|
|
-0,I=0,R=0,S=0,M=0,N=0,V=0,O=0,ea=0,z=0,ga=0,A=t=0,A=void 0,ia=g.__vertexArray,aa=g.__uvArray,ca=g.__uv2Array,Q=g.__normalArray,W=g.__tangentArray,ja=g.__colorArray,X=g.__skinVertexAArray,Y=g.__skinVertexBArray,Z=g.__skinIndexArray,$=g.__skinWeightArray,da=g.__morphTargetsArrays,U=g.__webglCustomAttributes,m=void 0,P=g.__faceArray,T=g.__lineArray,ma=g.__needsSmoothNormals,y=g.__vertexColorType,w=g.__uvType,B=g.__normalType,oa=i.geometry,la=oa.__dirtyVertices,na=oa.__dirtyElements,ha=oa.__dirtyUvs,
|
|
|
-pa=oa.__dirtyNormals,qa=oa.__dirtyTangents,ra=oa.__dirtyColors,sa=oa.__dirtyMorphTargets,ka=oa.vertices,ua=g.faces,va=oa.faces,wa=oa.faceVertexUvs[0],xa=oa.faceVertexUvs[1],Ea=oa.skinVerticesA,Fa=oa.skinVerticesB,Ga=oa.skinIndices,za=oa.skinWeights,Aa=i instanceof THREE.ShadowVolume?oa.edgeFaces:void 0,ya=oa.morphTargets;if(U)for(K in U)U[K].offset=0,U[K].offsetSrc=0;k=0;for(n=ua.length;k<n;k++)if(r=ua[k],q=va[r],wa&&(D=wa[r]),xa&&(F=xa[r]),r=q.vertexNormals,o=q.normal,p=q.vertexColors,s=q.color,
|
|
|
-u=q.vertexTangents,q instanceof THREE.Face3){if(la)x=ka[q.a].position,v=ka[q.b].position,L=ka[q.c].position,ia[I]=x.x,ia[I+1]=x.y,ia[I+2]=x.z,ia[I+3]=v.x,ia[I+4]=v.y,ia[I+5]=v.z,ia[I+6]=L.x,ia[I+7]=L.y,ia[I+8]=L.z,I+=9;if(U)for(K in U)if(m=U[K],m.__original.needsUpdate)t=m.offset,A=m.offsetSrc,m.size===1?(m.boundTo===void 0||m.boundTo==="vertices"?(m.array[t]=m.value[q.a],m.array[t+1]=m.value[q.b],m.array[t+2]=m.value[q.c]):m.boundTo==="faces"?(A=m.value[A],m.array[t]=A,m.array[t+1]=A,m.array[t+2]=
|
|
|
-A,m.offsetSrc++):m.boundTo==="faceVertices"&&(m.array[t]=m.value[A],m.array[t+1]=m.value[A+1],m.array[t+2]=m.value[A+2],m.offsetSrc+=3),m.offset+=3):(m.boundTo===void 0||m.boundTo==="vertices"?(x=m.value[q.a],v=m.value[q.b],L=m.value[q.c]):m.boundTo==="faces"?(L=v=x=A=m.value[A],m.offsetSrc++):m.boundTo==="faceVertices"&&(x=m.value[A],v=m.value[A+1],L=m.value[A+2],m.offsetSrc+=3),m.size===2?(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=v.x,m.array[t+3]=v.y,m.array[t+4]=L.x,m.array[t+5]=L.y,m.offset+=
|
|
|
-6):m.size===3?(m.type==="c"?(m.array[t]=x.r,m.array[t+1]=x.g,m.array[t+2]=x.b,m.array[t+3]=v.r,m.array[t+4]=v.g,m.array[t+5]=v.b,m.array[t+6]=L.r,m.array[t+7]=L.g,m.array[t+8]=L.b):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=v.x,m.array[t+4]=v.y,m.array[t+5]=v.z,m.array[t+6]=L.x,m.array[t+7]=L.y,m.array[t+8]=L.z),m.offset+=9):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=x.w,m.array[t+4]=v.x,m.array[t+5]=v.y,m.array[t+6]=v.z,m.array[t+7]=v.w,m.array[t+8]=L.x,m.array[t+
|
|
|
-9]=L.y,m.array[t+10]=L.z,m.array[t+11]=L.w,m.offset+=12));if(sa){t=0;for(m=ya.length;t<m;t++)x=ya[t].vertices[q.a].position,v=ya[t].vertices[q.b].position,L=ya[t].vertices[q.c].position,A=da[t],A[ga]=x.x,A[ga+1]=x.y,A[ga+2]=x.z,A[ga+3]=v.x,A[ga+4]=v.y,A[ga+5]=v.z,A[ga+6]=L.x,A[ga+7]=L.y,A[ga+8]=L.z;ga+=9}if(za.length)t=za[q.a],m=za[q.b],A=za[q.c],$[z]=t.x,$[z+1]=t.y,$[z+2]=t.z,$[z+3]=t.w,$[z+4]=m.x,$[z+5]=m.y,$[z+6]=m.z,$[z+7]=m.w,$[z+8]=A.x,$[z+9]=A.y,$[z+10]=A.z,$[z+11]=A.w,t=Ga[q.a],m=Ga[q.b],
|
|
|
-A=Ga[q.c],Z[z]=t.x,Z[z+1]=t.y,Z[z+2]=t.z,Z[z+3]=t.w,Z[z+4]=m.x,Z[z+5]=m.y,Z[z+6]=m.z,Z[z+7]=m.w,Z[z+8]=A.x,Z[z+9]=A.y,Z[z+10]=A.z,Z[z+11]=A.w,t=Ea[q.a],m=Ea[q.b],A=Ea[q.c],X[z]=t.x,X[z+1]=t.y,X[z+2]=t.z,X[z+3]=1,X[z+4]=m.x,X[z+5]=m.y,X[z+6]=m.z,X[z+7]=1,X[z+8]=A.x,X[z+9]=A.y,X[z+10]=A.z,X[z+11]=1,t=Fa[q.a],m=Fa[q.b],A=Fa[q.c],Y[z]=t.x,Y[z+1]=t.y,Y[z+2]=t.z,Y[z+3]=1,Y[z+4]=m.x,Y[z+5]=m.y,Y[z+6]=m.z,Y[z+7]=1,Y[z+8]=A.x,Y[z+9]=A.y,Y[z+10]=A.z,Y[z+11]=1,z+=12;if(ra&&y)p.length==3&&y==THREE.VertexColors?
|
|
|
-(q=p[0],t=p[1],m=p[2]):m=t=q=s,ja[ea]=q.r,ja[ea+1]=q.g,ja[ea+2]=q.b,ja[ea+3]=t.r,ja[ea+4]=t.g,ja[ea+5]=t.b,ja[ea+6]=m.r,ja[ea+7]=m.g,ja[ea+8]=m.b,ea+=9;if(qa&&oa.hasTangents)p=u[0],s=u[1],q=u[2],W[V]=p.x,W[V+1]=p.y,W[V+2]=p.z,W[V+3]=p.w,W[V+4]=s.x,W[V+5]=s.y,W[V+6]=s.z,W[V+7]=s.w,W[V+8]=q.x,W[V+9]=q.y,W[V+10]=q.z,W[V+11]=q.w,V+=12;if(pa&&B)if(r.length==3&&ma)for(u=0;u<3;u++)o=r[u],Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;else for(u=0;u<3;u++)Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;if(ha&&D!==void 0&&w)for(u=
|
|
|
-0;u<3;u++)r=D[u],aa[R]=r.u,aa[R+1]=r.v,R+=2;if(ha&&F!==void 0&&w)for(u=0;u<3;u++)r=F[u],ca[S]=r.u,ca[S+1]=r.v,S+=2;na&&(P[M]=H,P[M+1]=H+1,P[M+2]=H+2,M+=3,T[O]=H,T[O+1]=H+1,T[O+2]=H,T[O+3]=H+2,T[O+4]=H+1,T[O+5]=H+2,O+=6,H+=3)}else if(q instanceof THREE.Face4){if(la)x=ka[q.a].position,v=ka[q.b].position,L=ka[q.c].position,G=ka[q.d].position,ia[I]=x.x,ia[I+1]=x.y,ia[I+2]=x.z,ia[I+3]=v.x,ia[I+4]=v.y,ia[I+5]=v.z,ia[I+6]=L.x,ia[I+7]=L.y,ia[I+8]=L.z,ia[I+9]=G.x,ia[I+10]=G.y,ia[I+11]=G.z,I+=12;if(U)for(K in U)if(m=
|
|
|
-U[K],m.__original.needsUpdate)t=m.offset,A=m.offsetSrc,m.size===1?(m.boundTo===void 0||m.boundTo==="vertices"?(m.array[t]=m.value[q.a],m.array[t+1]=m.value[q.b],m.array[t+2]=m.value[q.c],m.array[t+3]=m.value[q.d]):m.boundTo==="faces"?(A=m.value[A],m.array[t]=A,m.array[t+1]=A,m.array[t+2]=A,m.array[t+3]=A,m.offsetSrc++):m.boundTo==="faceVertices"&&(m.array[t]=m.value[A],m.array[t+1]=m.value[A+1],m.array[t+2]=m.value[A+2],m.array[t+3]=m.value[A+3],m.offsetSrc+=4),m.offset+=4):(m.boundTo===void 0||m.boundTo===
|
|
|
-"vertices"?(x=m.value[q.a],v=m.value[q.b],L=m.value[q.c],G=m.value[q.d]):m.boundTo==="faces"?(G=L=v=x=A=m.value[A],m.offsetSrc++):m.boundTo==="faceVertices"&&(x=m.value[A],v=m.value[A+1],L=m.value[A+2],G=m.value[A+3],m.offsetSrc+=4),m.size===2?(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=v.x,m.array[t+3]=v.y,m.array[t+4]=L.x,m.array[t+5]=L.y,m.array[t+6]=G.x,m.array[t+7]=G.y,m.offset+=8):m.size===3?(m.type==="c"?(m.array[t]=x.r,m.array[t+1]=x.g,m.array[t+2]=x.b,m.array[t+3]=v.r,m.array[t+4]=v.g,
|
|
|
-m.array[t+5]=v.b,m.array[t+6]=L.r,m.array[t+7]=L.g,m.array[t+8]=L.b,m.array[t+9]=G.r,m.array[t+10]=G.g,m.array[t+11]=G.b):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=v.x,m.array[t+4]=v.y,m.array[t+5]=v.z,m.array[t+6]=L.x,m.array[t+7]=L.y,m.array[t+8]=L.z,m.array[t+9]=G.x,m.array[t+10]=G.y,m.array[t+11]=G.z),m.offset+=12):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=x.w,m.array[t+4]=v.x,m.array[t+5]=v.y,m.array[t+6]=v.z,m.array[t+7]=v.w,m.array[t+8]=L.x,m.array[t+
|
|
|
-9]=L.y,m.array[t+10]=L.z,m.array[t+11]=L.w,m.array[t+12]=G.x,m.array[t+13]=G.y,m.array[t+14]=G.z,m.array[t+15]=G.w,m.offset+=16));if(sa){t=0;for(m=ya.length;t<m;t++)x=ya[t].vertices[q.a].position,v=ya[t].vertices[q.b].position,L=ya[t].vertices[q.c].position,G=ya[t].vertices[q.d].position,A=da[t],A[ga]=x.x,A[ga+1]=x.y,A[ga+2]=x.z,A[ga+3]=v.x,A[ga+4]=v.y,A[ga+5]=v.z,A[ga+6]=L.x,A[ga+7]=L.y,A[ga+8]=L.z,A[ga+9]=G.x,A[ga+10]=G.y,A[ga+11]=G.z;ga+=12}if(za.length)t=za[q.a],m=za[q.b],A=za[q.c],J=za[q.d],
|
|
|
-$[z]=t.x,$[z+1]=t.y,$[z+2]=t.z,$[z+3]=t.w,$[z+4]=m.x,$[z+5]=m.y,$[z+6]=m.z,$[z+7]=m.w,$[z+8]=A.x,$[z+9]=A.y,$[z+10]=A.z,$[z+11]=A.w,$[z+12]=J.x,$[z+13]=J.y,$[z+14]=J.z,$[z+15]=J.w,t=Ga[q.a],m=Ga[q.b],A=Ga[q.c],J=Ga[q.d],Z[z]=t.x,Z[z+1]=t.y,Z[z+2]=t.z,Z[z+3]=t.w,Z[z+4]=m.x,Z[z+5]=m.y,Z[z+6]=m.z,Z[z+7]=m.w,Z[z+8]=A.x,Z[z+9]=A.y,Z[z+10]=A.z,Z[z+11]=A.w,Z[z+12]=J.x,Z[z+13]=J.y,Z[z+14]=J.z,Z[z+15]=J.w,t=Ea[q.a],m=Ea[q.b],A=Ea[q.c],J=Ea[q.d],X[z]=t.x,X[z+1]=t.y,X[z+2]=t.z,X[z+3]=1,X[z+4]=m.x,X[z+5]=m.y,
|
|
|
-X[z+6]=m.z,X[z+7]=1,X[z+8]=A.x,X[z+9]=A.y,X[z+10]=A.z,X[z+11]=1,X[z+12]=J.x,X[z+13]=J.y,X[z+14]=J.z,X[z+15]=1,t=Fa[q.a],m=Fa[q.b],A=Fa[q.c],q=Fa[q.d],Y[z]=t.x,Y[z+1]=t.y,Y[z+2]=t.z,Y[z+3]=1,Y[z+4]=m.x,Y[z+5]=m.y,Y[z+6]=m.z,Y[z+7]=1,Y[z+8]=A.x,Y[z+9]=A.y,Y[z+10]=A.z,Y[z+11]=1,Y[z+12]=q.x,Y[z+13]=q.y,Y[z+14]=q.z,Y[z+15]=1,z+=16;if(ra&&y)p.length==4&&y==THREE.VertexColors?(q=p[0],t=p[1],m=p[2],p=p[3]):p=m=t=q=s,ja[ea]=q.r,ja[ea+1]=q.g,ja[ea+2]=q.b,ja[ea+3]=t.r,ja[ea+4]=t.g,ja[ea+5]=t.b,ja[ea+6]=m.r,
|
|
|
-ja[ea+7]=m.g,ja[ea+8]=m.b,ja[ea+9]=p.r,ja[ea+10]=p.g,ja[ea+11]=p.b,ea+=12;if(qa&&oa.hasTangents)p=u[0],s=u[1],q=u[2],u=u[3],W[V]=p.x,W[V+1]=p.y,W[V+2]=p.z,W[V+3]=p.w,W[V+4]=s.x,W[V+5]=s.y,W[V+6]=s.z,W[V+7]=s.w,W[V+8]=q.x,W[V+9]=q.y,W[V+10]=q.z,W[V+11]=q.w,W[V+12]=u.x,W[V+13]=u.y,W[V+14]=u.z,W[V+15]=u.w,V+=16;if(pa&&B)if(r.length==4&&ma)for(u=0;u<4;u++)o=r[u],Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;else for(u=0;u<4;u++)Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;if(ha&&D!==void 0&&w)for(u=0;u<4;u++)r=D[u],aa[R]=
|
|
|
-r.u,aa[R+1]=r.v,R+=2;if(ha&&F!==void 0&&w)for(u=0;u<4;u++)r=F[u],ca[S]=r.u,ca[S+1]=r.v,S+=2;na&&(P[M]=H,P[M+1]=H+1,P[M+2]=H+3,P[M+3]=H+1,P[M+4]=H+2,P[M+5]=H+3,M+=6,T[O]=H,T[O+1]=H+1,T[O+2]=H,T[O+3]=H+3,T[O+4]=H+1,T[O+5]=H+2,T[O+6]=H+2,T[O+7]=H+3,O+=8,H+=4)}if(Aa){k=0;for(n=Aa.length;k<n;k++)P[M]=Aa[k].a,P[M+1]=Aa[k].b,P[M+2]=Aa[k].c,P[M+3]=Aa[k].a,P[M+4]=Aa[k].c,P[M+5]=Aa[k].d,M+=6}la&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglVertexBuffer),c.bufferData(c.ARRAY_BUFFER,ia,j));if(U)for(K in U)m=U[K],m.__original.needsUpdate&&
|
|
|
-(c.bindBuffer(c.ARRAY_BUFFER,m.buffer),c.bufferData(c.ARRAY_BUFFER,m.array,j));if(sa){t=0;for(m=ya.length;t<m;t++)c.bindBuffer(c.ARRAY_BUFFER,g.__webglMorphTargetsBuffers[t]),c.bufferData(c.ARRAY_BUFFER,da[t],j)}ra&&ea>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglColorBuffer),c.bufferData(c.ARRAY_BUFFER,ja,j));pa&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglNormalBuffer),c.bufferData(c.ARRAY_BUFFER,Q,j));qa&&oa.hasTangents&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglTangentBuffer),c.bufferData(c.ARRAY_BUFFER,W,
|
|
|
-j));ha&&R>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglUVBuffer),c.bufferData(c.ARRAY_BUFFER,aa,j));ha&&S>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglUV2Buffer),c.bufferData(c.ARRAY_BUFFER,ca,j));na&&(c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,g.__webglFaceBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,P,j),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,g.__webglLineBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,T,j));z>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinVertexABuffer),c.bufferData(c.ARRAY_BUFFER,X,j),c.bindBuffer(c.ARRAY_BUFFER,
|
|
|
-g.__webglSkinVertexBBuffer),c.bufferData(c.ARRAY_BUFFER,Y,j),c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinIndicesBuffer),c.bufferData(c.ARRAY_BUFFER,Z,j),c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinWeightsBuffer),c.bufferData(c.ARRAY_BUFFER,$,j));i.dynamic||(delete g.__inittedArrays,delete g.__colorArray,delete g.__normalArray,delete g.__tangentArray,delete g.__uvArray,delete g.__uv2Array,delete g.__faceArray,delete g.__vertexArray,delete g.__lineArray,delete g.__skinVertexAArray,delete g.__skinVertexBArray,
|
|
|
-delete g.__skinIndexArray,delete g.__skinWeightArray)}}f.__dirtyVertices=!1;f.__dirtyMorphTargets=!1;f.__dirtyElements=!1;f.__dirtyUvs=!1;f.__dirtyNormals=!1;f.__dirtyTangents=!1;f.__dirtyColors=!1;fa(h)}else if(b instanceof THREE.Ribbon){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=c.DYNAMIC_DRAW;w=b.vertices;g=b.colors;y=w.length;i=g.length;B=b.__vertexArray;j=b.__colorArray;D=b.__dirtyColors;if(b.__dirtyVertices){for(k=0;k<y;k++)n=w[k].position,h=k*3,B[h]=n.x,B[h+1]=n.y,B[h+2]=n.z;
|
|
|
-c.bindBuffer(c.ARRAY_BUFFER,b.__webglVertexBuffer);c.bufferData(c.ARRAY_BUFFER,B,e)}if(D){for(k=0;k<i;k++)color=g[k],h=k*3,j[h]=color.r,j[h+1]=color.g,j[h+2]=color.b;c.bindBuffer(c.ARRAY_BUFFER,b.__webglColorBuffer);c.bufferData(c.ARRAY_BUFFER,j,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.Line){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=c.DYNAMIC_DRAW;w=b.vertices;g=b.colors;y=w.length;i=g.length;B=b.__vertexArray;j=b.__colorArray;D=b.__dirtyColors;if(b.__dirtyVertices){for(k=
|
|
|
-0;k<y;k++)n=w[k].position,h=k*3,B[h]=n.x,B[h+1]=n.y,B[h+2]=n.z;c.bindBuffer(c.ARRAY_BUFFER,b.__webglVertexBuffer);c.bufferData(c.ARRAY_BUFFER,B,e)}if(D){for(k=0;k<i;k++)color=g[k],h=k*3,j[h]=color.r,j[h+1]=color.g,j[h+2]=color.b;c.bindBuffer(c.ARRAY_BUFFER,b.__webglColorBuffer);c.bufferData(c.ARRAY_BUFFER,j,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.ParticleSystem)f=b.geometry,g=ta(f),(f.__dirtyVertices||f.__dirtyColors||b.sortParticles||g)&&d(f,c.DYNAMIC_DRAW,b),f.__dirtyVertices=
|
|
|
-!1,f.__dirtyColors=!1,fa(f)}function u(b,c){var d;for(d=b.length-1;d>=0;d--)b[d].object==c&&b.splice(d,1)}function P(b){function c(b){var f=[];d=0;for(e=b.length;d<e;d++)b[d]==void 0?f.push("undefined"):f.push(b[d].id);return f.join("_")}var d,e,f,g,h,i,j,k,q={},n=b.morphTargets!==void 0?b.morphTargets.length:0;b.geometryGroups={};f=0;for(g=b.faces.length;f<g;f++)h=b.faces[f],i=h.materials,j=c(i),q[j]==void 0&&(q[j]={hash:j,counter:0}),k=q[j].hash+"_"+q[j].counter,b.geometryGroups[k]==void 0&&(b.geometryGroups[k]=
|
|
|
-{faces:[],materials:i,vertices:0,numMorphTargets:n}),h=h instanceof THREE.Face3?3:4,b.geometryGroups[k].vertices+h>65535&&(q[j].counter+=1,k=q[j].hash+"_"+q[j].counter,b.geometryGroups[k]==void 0&&(b.geometryGroups[k]={faces:[],materials:i,vertices:0,numMorphTargets:n})),b.geometryGroups[k].faces.push(f),b.geometryGroups[k].vertices+=h}function I(b,c,d){b.push({buffer:c,object:d,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function M(b){if(b!=da){switch(b){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
|
|
|
-c.blendFunc(c.SRC_ALPHA,c.ONE);break;case THREE.SubtractiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ZERO,c.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ZERO,c.SRC_COLOR);break;default:c.blendEquationSeparate(c.FUNC_ADD,c.FUNC_ADD),c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA)}da=b}}function Q(b,d,e){(e.width&e.width-1)==0&&(e.height&e.height-1)==0?(c.texParameteri(b,c.TEXTURE_WRAP_S,N(d.wrapS)),c.texParameteri(b,
|
|
|
-c.TEXTURE_WRAP_T,N(d.wrapT)),c.texParameteri(b,c.TEXTURE_MAG_FILTER,N(d.magFilter)),c.texParameteri(b,c.TEXTURE_MIN_FILTER,N(d.minFilter)),c.generateMipmap(b)):(c.texParameteri(b,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(b,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),c.texParameteri(b,c.TEXTURE_MAG_FILTER,va(d.magFilter)),c.texParameteri(b,c.TEXTURE_MIN_FILTER,va(d.minFilter)))}function ra(b,d){if(b.needsUpdate){if(!b.__webglInit)b.__webglTexture=c.createTexture(),b.__webglInit=!0;c.bindTexture(c.TEXTURE_2D,
|
|
|
-b.__webglTexture);b.image.data?c.texImage2D(c.TEXTURE_2D,0,N(b.format),b.image.width,b.image.height,0,N(b.format),c.UNSIGNED_BYTE,b.image.data):c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,b.image);Q(c.TEXTURE_2D,b,b.image);c.bindTexture(c.TEXTURE_2D,null);b.needsUpdate=!1}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_2D,b.__webglTexture)}function ka(b){if(b&&!b.__webglFramebuffer){if(b.depthBuffer===void 0)b.depthBuffer=!0;if(b.stencilBuffer===void 0)b.stencilBuffer=!0;b.__webglFramebuffer=
|
|
|
-c.createFramebuffer();b.__webglRenderbuffer=c.createRenderbuffer();b.__webglTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,b.__webglTexture);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,N(b.wrapS));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,N(b.wrapT));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,N(b.magFilter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,N(b.minFilter));c.texImage2D(c.TEXTURE_2D,0,N(b.format),b.width,b.height,0,N(b.format),N(b.type),null);c.bindRenderbuffer(c.RENDERBUFFER,
|
|
|
-b.__webglRenderbuffer);c.bindFramebuffer(c.FRAMEBUFFER,b.__webglFramebuffer);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,b.__webglTexture,0);b.depthBuffer&&!b.stencilBuffer?(c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,b.width,b.height),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,b.__webglRenderbuffer)):b.depthBuffer&&b.stencilBuffer?(c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_STENCIL,b.width,b.height),c.framebufferRenderbuffer(c.FRAMEBUFFER,
|
|
|
-c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,b.__webglRenderbuffer)):c.renderbufferStorage(c.RENDERBUFFER,c.RGBA4,b.width,b.height);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null)}var d,e;b?(d=b.__webglFramebuffer,e=b.width,b=b.height):(d=null,e=la,b=qa);d!=pa&&(c.bindFramebuffer(c.FRAMEBUFFER,d),c.viewport(Ia,Ja,e,b),pa=d)}function aa(b,d){var e;b=="fragment"?e=c.createShader(c.FRAGMENT_SHADER):b=="vertex"&&(e=c.createShader(c.VERTEX_SHADER));
|
|
|
-c.shaderSource(e,d);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS))return console.error(c.getShaderInfoLog(e)),console.error(d),null;return e}function va(b){switch(b){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return c.NEAREST;default:return c.LINEAR}}function N(b){switch(b){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;
|
|
|
-case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return c.BYTE;case THREE.UnsignedByteType:return c.UNSIGNED_BYTE;case THREE.ShortType:return c.SHORT;case THREE.UnsignedShortType:return c.UNSIGNED_SHORT;
|
|
|
-case THREE.IntType:return c.INT;case THREE.UnsignedShortType:return c.UNSIGNED_INT;case THREE.FloatType:return c.FLOAT;case THREE.AlphaFormat:return c.ALPHA;case THREE.RGBFormat:return c.RGB;case THREE.RGBAFormat:return c.RGBA;case THREE.LuminanceFormat:return c.LUMINANCE;case THREE.LuminanceAlphaFormat:return c.LUMINANCE_ALPHA}return 0}var J=this,c,ha=[],R=null,pa=null,K=!0,ca=null,O=null,da=null,T=null,S=null,ua=null,Ha=null,Ia=0,Ja=0,la=0,qa=0,ma=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,
|
|
|
-new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],wa=new THREE.Matrix4,La=new Float32Array(16),Ma=new Float32Array(16),Ka=new THREE.Vector4,Sa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},xa=b.canvas!==void 0?b.canvas:document.createElement("canvas"),Qa=b.stencil!==void 0?b.stencil:!0,x=b.antialias!==void 0?b.antialias:!1,sa=b.clearColor!==void 0?new THREE.Color(b.clearColor):new THREE.Color(0),Na=b.clearAlpha!==
|
|
|
-void 0?b.clearAlpha:0;this.data={vertices:0,faces:0,drawCalls:0};this.maxMorphTargets=8;this.domElement=xa;this.sortObjects=this.autoClear=!0;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=!0;var na,Oa=[],b=THREE.ShaderLib.depthRGBA,Wa=THREE.UniformsUtils.clone(b.uniforms),Pa=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,
|
|
|
-vertexShader:b.vertexShader,uniforms:Wa}),Ta=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:Wa,morphTargets:!0});Pa._shadowPass=!0;Ta._shadowPass=!0;try{if(!(c=xa.getContext("experimental-webgl",{antialias:x,stencil:Qa})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+c.getParameter(c.VERSION)+" | "+c.getParameter(c.VENDOR)+" | "+c.getParameter(c.RENDERER)+" | "+c.getParameter(c.SHADING_LANGUAGE_VERSION))}catch(Ya){console.error(Ya)}c.clearColor(0,
|
|
|
-0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendEquation(c.FUNC_ADD);c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA);c.clearColor(sa.r,sa.g,sa.b,Na);this.context=c;var Xa=c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;if(Qa){var v={};v.vertices=new Float32Array(12);v.faces=new Uint16Array(6);v.darkness=0.5;v.vertices[0]=-20;v.vertices[1]=-20;v.vertices[2]=-1;v.vertices[3]=20;v.vertices[4]=-20;
|
|
|
-v.vertices[5]=-1;v.vertices[6]=20;v.vertices[7]=20;v.vertices[8]=-1;v.vertices[9]=-20;v.vertices[10]=20;v.vertices[11]=-1;v.faces[0]=0;v.faces[1]=1;v.faces[2]=2;v.faces[3]=0;v.faces[4]=2;v.faces[5]=3;v.vertexBuffer=c.createBuffer();v.elementBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,v.vertexBuffer);c.bufferData(c.ARRAY_BUFFER,v.vertices,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,v.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,v.faces,c.STATIC_DRAW);v.program=c.createProgram();
|
|
|
-c.attachShader(v.program,aa("fragment",THREE.ShaderLib.shadowPost.fragmentShader));c.attachShader(v.program,aa("vertex",THREE.ShaderLib.shadowPost.vertexShader));c.linkProgram(v.program);v.vertexLocation=c.getAttribLocation(v.program,"position");v.projectionLocation=c.getUniformLocation(v.program,"projectionMatrix");v.darknessLocation=c.getUniformLocation(v.program,"darkness")}var y={};y.vertices=new Float32Array(16);y.faces=new Uint16Array(6);x=0;y.vertices[x++]=-1;y.vertices[x++]=-1;y.vertices[x++]=
|
|
|
-0;y.vertices[x++]=0;y.vertices[x++]=1;y.vertices[x++]=-1;y.vertices[x++]=1;y.vertices[x++]=0;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=-1;y.vertices[x++]=1;y.vertices[x++]=0;y.vertices[x++]=1;x=0;y.faces[x++]=0;y.faces[x++]=1;y.faces[x++]=2;y.faces[x++]=0;y.faces[x++]=2;y.faces[x++]=3;y.vertexBuffer=c.createBuffer();y.elementBuffer=c.createBuffer();y.tempTexture=c.createTexture();y.occlusionTexture=c.createTexture();c.bindBuffer(c.ARRAY_BUFFER,y.vertexBuffer);
|
|
|
-c.bufferData(c.ARRAY_BUFFER,y.vertices,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,y.faces,c.STATIC_DRAW);c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGB,16,16,0,c.RGB,c.UNSIGNED_BYTE,null);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,
|
|
|
-c.NEAREST);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,16,16,0,c.RGBA,c.UNSIGNED_BYTE,null);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.NEAREST);c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0?(y.hasVertexTexture=!1,y.program=c.createProgram(),c.attachShader(y.program,
|
|
|
-aa("fragment",THREE.ShaderLib.lensFlare.fragmentShader)),c.attachShader(y.program,aa("vertex",THREE.ShaderLib.lensFlare.vertexShader))):(y.hasVertexTexture=!0,y.program=c.createProgram(),c.attachShader(y.program,aa("fragment",THREE.ShaderLib.lensFlareVertexTexture.fragmentShader)),c.attachShader(y.program,aa("vertex",THREE.ShaderLib.lensFlareVertexTexture.vertexShader)));c.linkProgram(y.program);y.attributes={};y.uniforms={};y.attributes.vertex=c.getAttribLocation(y.program,"position");y.attributes.uv=
|
|
|
-c.getAttribLocation(y.program,"UV");y.uniforms.renderType=c.getUniformLocation(y.program,"renderType");y.uniforms.map=c.getUniformLocation(y.program,"map");y.uniforms.occlusionMap=c.getUniformLocation(y.program,"occlusionMap");y.uniforms.opacity=c.getUniformLocation(y.program,"opacity");y.uniforms.scale=c.getUniformLocation(y.program,"scale");y.uniforms.rotation=c.getUniformLocation(y.program,"rotation");y.uniforms.screenPosition=c.getUniformLocation(y.program,"screenPosition");var Va=!1,w={};w.vertices=
|
|
|
-new Float32Array(16);w.faces=new Uint16Array(6);x=0;w.vertices[x++]=-1;w.vertices[x++]=-1;w.vertices[x++]=0;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=-1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=0;w.vertices[x++]=-1;w.vertices[x++]=1;w.vertices[x++]=0;x=w.vertices[x++]=0;w.faces[x++]=0;w.faces[x++]=1;w.faces[x++]=2;w.faces[x++]=0;w.faces[x++]=2;w.faces[x++]=3;w.vertexBuffer=c.createBuffer();w.elementBuffer=c.createBuffer();
|
|
|
-c.bindBuffer(c.ARRAY_BUFFER,w.vertexBuffer);c.bufferData(c.ARRAY_BUFFER,w.vertices,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,w.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,w.faces,c.STATIC_DRAW);w.program=c.createProgram();c.attachShader(w.program,aa("fragment",THREE.ShaderLib.sprite.fragmentShader));c.attachShader(w.program,aa("vertex",THREE.ShaderLib.sprite.vertexShader));c.linkProgram(w.program);w.attributes={};w.uniforms={};w.attributes.position=c.getAttribLocation(w.program,"position");
|
|
|
-w.attributes.uv=c.getAttribLocation(w.program,"uv");w.uniforms.uvOffset=c.getUniformLocation(w.program,"uvOffset");w.uniforms.uvScale=c.getUniformLocation(w.program,"uvScale");w.uniforms.rotation=c.getUniformLocation(w.program,"rotation");w.uniforms.scale=c.getUniformLocation(w.program,"scale");w.uniforms.alignment=c.getUniformLocation(w.program,"alignment");w.uniforms.map=c.getUniformLocation(w.program,"map");w.uniforms.opacity=c.getUniformLocation(w.program,"opacity");w.uniforms.useScreenCoordinates=
|
|
|
-c.getUniformLocation(w.program,"useScreenCoordinates");w.uniforms.affectedByDistance=c.getUniformLocation(w.program,"affectedByDistance");w.uniforms.screenPosition=c.getUniformLocation(w.program,"screenPosition");w.uniforms.modelViewMatrix=c.getUniformLocation(w.program,"modelViewMatrix");w.uniforms.projectionMatrix=c.getUniformLocation(w.program,"projectionMatrix");var Ua=!1;this.setSize=function(b,c){xa.width=b;xa.height=c;this.setViewport(0,0,xa.width,xa.height)};this.setViewport=function(b,d,
|
|
|
-e,f){Ia=b;Ja=d;la=e;qa=f;c.viewport(Ia,Ja,la,qa)};this.setScissor=function(b,d,e,f){c.scissor(b,d,e,f)};this.enableScissorTest=function(b){b?c.enable(c.SCISSOR_TEST):c.disable(c.SCISSOR_TEST)};this.enableDepthBufferWrite=function(b){K=b;c.depthMask(b)};this.setClearColorHex=function(b,d){sa.setHex(b);Na=d;c.clearColor(sa.r,sa.g,sa.b,Na)};this.setClearColor=function(b,d){sa.copy(b);Na=d;c.clearColor(sa.r,sa.g,sa.b,Na)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT|c.STENCIL_BUFFER_BIT)};
|
|
|
-this.setStencilShadowDarkness=function(b){v.darkness=b};this.getContext=function(){return c};this.initMaterial=function(b,d,e,f){var g,h,i;b instanceof THREE.MeshDepthMaterial?i="depth":b instanceof THREE.ShadowVolumeDynamicMaterial?i="shadowVolumeDynamic":b instanceof THREE.MeshNormalMaterial?i="normal":b instanceof THREE.MeshBasicMaterial?i="basic":b instanceof THREE.MeshLambertMaterial?i="lambert":b instanceof THREE.MeshPhongMaterial?i="phong":b instanceof THREE.LineBasicMaterial?i="basic":b instanceof
|
|
|
-THREE.ParticleBasicMaterial&&(i="particle_basic");if(i){var j=THREE.ShaderLib[i];b.uniforms=THREE.UniformsUtils.clone(j.uniforms);b.vertexShader=j.vertexShader;b.fragmentShader=j.fragmentShader}var k,n,q;k=q=j=0;for(n=d.length;k<n;k++)h=d[k],h instanceof THREE.SpotLight&&q++,h instanceof THREE.DirectionalLight&&q++,h instanceof THREE.PointLight&&j++;j+q<=4?k=q:(k=Math.ceil(4*q/(j+q)),j=4-k);h={directional:k,point:j};j=q=0;for(k=d.length;j<k;j++)n=d[j],n instanceof THREE.SpotLight&&n.castShadow&&q++;
|
|
|
-var r=50;if(f!==void 0&&f instanceof THREE.SkinnedMesh)r=f.bones.length;var o;a:{k=b.fragmentShader;n=b.vertexShader;var j=b.uniforms,d=b.attributes,e={map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,vertexColors:b.vertexColors,fog:e,sizeAttenuation:b.sizeAttenuation,skinning:b.skinning,morphTargets:b.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:h.directional,maxPointLights:h.point,maxBones:r,shadowMapEnabled:this.shadowMapEnabled&&f.receiveShadow,shadowMapSoft:this.shadowMapSoft,
|
|
|
-shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:q,alphaTest:b.alphaTest},p,f=[];i?f.push(i):(f.push(k),f.push(n));for(p in e)f.push(p),f.push(e[p]);i=f.join();p=0;for(f=ha.length;p<f;p++)if(ha[p].code==i){o=ha[p].program;break a}p=c.createProgram();f=[Xa?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?
|
|
|
-"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.vertexColors?"#define USE_COLOR":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapSoft?"#define SHADOWMAP_SOFT":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+THREE.Mesh)||n(C)?(C.matrixWorld.flattenToArray(C._objectMatrixArray),U(C,na,!1),p.render=!0):p.render=!1:p.render=!1;h(!0);M(THREE.NormalBlending);for(o=0;o<Ca;o++)if(p=b.__webglObjects[o],p.render)C=p.object,buffer=p.buffer,i(C),p=C.customDepthMaterial?C.customDepthMaterial:C.geometry.morphTargets.length?Ta:Pa,f(na,q,null,p,buffer,C);for(o=0;o<Ba;o++)p=b.__webglObjectsImmediate[o],C=p.object,C.visible&&C.castShadow&&(C.matrixAutoUpdate&&C.matrixWorld.flattenToArray(C._objectMatrixArray),U(C,na,
|
|
|
+!1),i(C),program=e(na,q,null,Pa,C),C.render(function(b){g(b,program,Pa.shading)}));r++}}function F(b){c.enable(c.POLYGON_OFFSET_FILL);c.polygonOffset(0.1,1);c.enable(c.STENCIL_TEST);c.enable(c.DEPTH_TEST);c.depthMask(!1);c.colorMask(!1,!1,!1,!1);c.stencilFunc(c.ALWAYS,1,255);c.stencilOpSeparate(c.BACK,c.KEEP,c.INCR,c.KEEP);c.stencilOpSeparate(c.FRONT,c.KEEP,c.DECR,c.KEEP);var d,e=b.lights.length,f,h=b.lights,g=[],i,j,k,n,q,r=b.__webglShadowVolumes.length;for(d=0;d<e;d++)if(f=b.lights[d],f instanceof
|
|
|
+THREE.DirectionalLight&&f.castShadow){g[0]=-f.position.x;g[1]=-f.position.y;g[2]=-f.position.z;for(q=0;q<r;q++)f=b.__webglShadowVolumes[q].object,i=b.__webglShadowVolumes[q].buffer,j=f.materials[0],j.program||J.initMaterial(j,h,void 0,f),j=j.program,k=j.uniforms,n=j.attributes,R!==j&&(c.useProgram(j),R=j,c.uniformMatrix4fv(k.projectionMatrix,!1,La),c.uniformMatrix4fv(k.viewMatrix,!1,Ma),c.uniform3fv(k.directionalLightDirection,g)),f.matrixWorld.flattenToArray(f._objectMatrixArray),c.uniformMatrix4fv(k.objectMatrix,
|
|
|
+!1,f._objectMatrixArray),c.bindBuffer(c.ARRAY_BUFFER,i.__webglVertexBuffer),c.vertexAttribPointer(n.position,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,i.__webglNormalBuffer),c.vertexAttribPointer(n.normal,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,i.__webglFaceBuffer),c.cullFace(c.FRONT),c.drawElements(c.TRIANGLES,i.__webglFaceCount,c.UNSIGNED_SHORT,0),c.cullFace(c.BACK),c.drawElements(c.TRIANGLES,i.__webglFaceCount,c.UNSIGNED_SHORT,0)}c.disable(c.POLYGON_OFFSET_FILL);c.colorMask(!0,
|
|
|
+!0,!0,!0);c.stencilFunc(c.NOTEQUAL,0,255);c.stencilOp(c.KEEP,c.KEEP,c.KEEP);c.disable(c.DEPTH_TEST);T=da=-1;R=v.program;c.useProgram(v.program);c.uniformMatrix4fv(v.projectionLocation,!1,La);c.uniform1f(v.darknessLocation,v.darkness);c.bindBuffer(c.ARRAY_BUFFER,v.vertexBuffer);c.vertexAttribPointer(v.vertexLocation,3,c.FLOAT,!1,0,0);c.enableVertexAttribArray(v.vertexLocation);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.blendEquation(c.FUNC_ADD);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,v.elementBuffer);
|
|
|
+c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);c.disable(c.STENCIL_TEST);c.enable(c.DEPTH_TEST);c.depthMask(K)}function G(b,d){var e,f,h;e=w.attributes;var g=w.uniforms,i=qa/la,j,k=[],n=la*0.5,q=qa*0.5,r=!0;c.useProgram(w.program);R=w.program;T=da=-1;Ua||(c.enableVertexAttribArray(w.attributes.position),c.enableVertexAttribArray(w.attributes.uv),Ua=!0);c.disable(c.CULL_FACE);c.enable(c.BLEND);c.depthMask(!0);c.bindBuffer(c.ARRAY_BUFFER,w.vertexBuffer);c.vertexAttribPointer(e.position,2,c.FLOAT,
|
|
|
+!1,16,0);c.vertexAttribPointer(e.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,w.elementBuffer);c.uniformMatrix4fv(g.projectionMatrix,!1,La);c.activeTexture(c.TEXTURE0);c.uniform1i(g.map,0);e=0;for(f=b.__webglSprites.length;e<f;e++)h=b.__webglSprites[e],h.useScreenCoordinates?h.z=-h.position.z:(h._modelViewMatrix.multiplyToArray(d.matrixWorldInverse,h.matrixWorld,h._modelViewMatrixArray),h.z=-h._modelViewMatrix.n34);b.__webglSprites.sort(p);e=0;for(f=b.__webglSprites.length;e<f;e++)h=
|
|
|
+b.__webglSprites[e],h.material===void 0&&h.map&&h.map.image&&h.map.image.width&&(h.useScreenCoordinates?(c.uniform1i(g.useScreenCoordinates,1),c.uniform3f(g.screenPosition,(h.position.x-n)/n,(q-h.position.y)/q,Math.max(0,Math.min(1,h.position.z)))):(c.uniform1i(g.useScreenCoordinates,0),c.uniform1i(g.affectedByDistance,h.affectedByDistance?1:0),c.uniformMatrix4fv(g.modelViewMatrix,!1,h._modelViewMatrixArray)),j=h.map.image.width/(h.scaleByViewport?qa:1),k[0]=j*i*h.scale.x,k[1]=j*h.scale.y,c.uniform2f(g.uvScale,
|
|
|
+h.uvScale.x,h.uvScale.y),c.uniform2f(g.uvOffset,h.uvOffset.x,h.uvOffset.y),c.uniform2f(g.alignment,h.alignment.x,h.alignment.y),c.uniform1f(g.opacity,h.opacity),c.uniform1f(g.rotation,h.rotation),c.uniform2fv(g.scale,k),h.mergeWith3D&&!r?(c.enable(c.DEPTH_TEST),r=!0):!h.mergeWith3D&&r&&(c.disable(c.DEPTH_TEST),r=!1),M(h.blending),ra(h.map,0),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0));c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(K)}function B(b,e){var d,f,h=b.__webglLensFlares.length,
|
|
|
+g,i,j,k=new THREE.Vector3,n=qa/la,q=la*0.5,r=qa*0.5,o=16/qa,p=[o*n,o],s=[1,1,0],u=[1,1],w=y.uniforms;d=y.attributes;c.useProgram(y.program);R=y.program;T=da=-1;Va||(c.enableVertexAttribArray(y.attributes.vertex),c.enableVertexAttribArray(y.attributes.uv),Va=!0);c.uniform1i(w.occlusionMap,0);c.uniform1i(w.map,1);c.bindBuffer(c.ARRAY_BUFFER,y.vertexBuffer);c.vertexAttribPointer(d.vertex,2,c.FLOAT,!1,16,0);c.vertexAttribPointer(d.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.elementBuffer);
|
|
|
+c.disable(c.CULL_FACE);c.depthMask(!1);c.activeTexture(c.TEXTURE0);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);c.activeTexture(c.TEXTURE1);for(f=0;f<h;f++)if(d=b.__webglLensFlares[f].object,k.set(d.matrixWorld.n14,d.matrixWorld.n24,d.matrixWorld.n34),e.matrixWorldInverse.multiplyVector3(k),e.projectionMatrix.multiplyVector3(k),s[0]=k.x,s[1]=k.y,s[2]=k.z,u[0]=s[0]*q+q,u[1]=s[1]*r+r,y.hasVertexTexture||u[0]>0&&u[0]<la&&u[1]>0&&u[1]<qa){c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.copyTexImage2D(c.TEXTURE_2D,
|
|
|
+0,c.RGB,u[0]-8,u[1]-8,16,16,0);c.uniform1i(w.renderType,0);c.uniform2fv(w.scale,p);c.uniform3fv(w.screenPosition,s);c.disable(c.BLEND);c.enable(c.DEPTH_TEST);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);c.copyTexImage2D(c.TEXTURE_2D,0,c.RGBA,u[0]-8,u[1]-8,16,16,0);c.uniform1i(w.renderType,1);c.disable(c.DEPTH_TEST);c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);d.positionScreen.x=s[0];d.positionScreen.y=
|
|
|
+s[1];d.positionScreen.z=s[2];d.customUpdateCallback?d.customUpdateCallback(d):d.updateLensFlares();c.uniform1i(w.renderType,2);c.enable(c.BLEND);g=0;for(i=d.lensFlares.length;g<i;g++)if(j=d.lensFlares[g],j.opacity>0.0010&&j.scale>0.0010)s[0]=j.x,s[1]=j.y,s[2]=j.z,o=j.size*j.scale/qa,p[0]=o*n,p[1]=o,c.uniform3fv(w.screenPosition,s),c.uniform2fv(w.scale,p),c.uniform1f(w.rotation,j.rotation),c.uniform1f(w.opacity,j.opacity),M(j.blending),ra(j.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,
|
|
|
+0)}c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(K)}function U(b,c,d){b._modelViewMatrix.multiplyToArray(c.matrixWorldInverse,b.matrixWorld,b._modelViewMatrixArray);d&&THREE.Matrix4.makeInvert3x3(b._modelViewMatrix).transposeIntoArray(b._normalMatrixArray)}function ta(b){var c,d,e,f;f=b.__materials;b=0;for(d=f.length;b<d;b++)if(e=f[b],e.attributes)for(c in e.attributes)if(e.attributes[c].needsUpdate)return!0;return!1}function fa(b){var c,d,e,f;f=b.__materials;b=0;for(d=f.length;b<d;b++)if(e=
|
|
|
+f[b],e.attributes)for(c in e.attributes)e.attributes[c].needsUpdate=!1}function H(b){var e,f,h,g;if(b instanceof THREE.Mesh){f=b.geometry;for(e in f.geometryGroups)if(h=f.geometryGroups[e],g=ta(h),f.__dirtyVertices||f.__dirtyMorphTargets||f.__dirtyElements||f.__dirtyUvs||f.__dirtyNormals||f.__dirtyColors||f.__dirtyTangents||g){g=h;var i=b,j=c.DYNAMIC_DRAW;if(g.__inittedArrays){var k=void 0,n=void 0,r=void 0,q=void 0,o=r=void 0,p=void 0,s=void 0,u=void 0,w=void 0,y=void 0,B=void 0,D=void 0,F=void 0,
|
|
|
+x=void 0,v=void 0,L=void 0,G=void 0,t=q=u=q=s=p=void 0,m=void 0,A=m=t=p=void 0,J=void 0,K=A=m=t=r=r=o=u=q=A=m=t=J=A=m=t=J=A=m=t=void 0,H=0,I=0,R=0,S=0,M=0,N=0,V=0,O=0,ea=0,z=0,ga=0,A=t=0,A=void 0,ia=g.__vertexArray,aa=g.__uvArray,ca=g.__uv2Array,Q=g.__normalArray,W=g.__tangentArray,ja=g.__colorArray,X=g.__skinVertexAArray,Y=g.__skinVertexBArray,Z=g.__skinIndexArray,$=g.__skinWeightArray,da=g.__morphTargetsArrays,U=g.__webglCustomAttributes,m=void 0,P=g.__faceArray,T=g.__lineArray,ma=g.__needsSmoothNormals,
|
|
|
+y=g.__vertexColorType,w=g.__uvType,B=g.__normalType,oa=i.geometry,la=oa.__dirtyVertices,na=oa.__dirtyElements,ha=oa.__dirtyUvs,pa=oa.__dirtyNormals,qa=oa.__dirtyTangents,ra=oa.__dirtyColors,sa=oa.__dirtyMorphTargets,ka=oa.vertices,ua=g.faces,va=oa.faces,wa=oa.faceVertexUvs[0],xa=oa.faceVertexUvs[1],Ea=oa.skinVerticesA,Fa=oa.skinVerticesB,Ga=oa.skinIndices,za=oa.skinWeights,Aa=i instanceof THREE.ShadowVolume?oa.edgeFaces:void 0,ya=oa.morphTargets;if(U)for(K in U)U[K].offset=0,U[K].offsetSrc=0;k=0;
|
|
|
+for(n=ua.length;k<n;k++)if(r=ua[k],q=va[r],wa&&(D=wa[r]),xa&&(F=xa[r]),r=q.vertexNormals,o=q.normal,p=q.vertexColors,s=q.color,u=q.vertexTangents,q instanceof THREE.Face3){if(la)x=ka[q.a].position,v=ka[q.b].position,L=ka[q.c].position,ia[I]=x.x,ia[I+1]=x.y,ia[I+2]=x.z,ia[I+3]=v.x,ia[I+4]=v.y,ia[I+5]=v.z,ia[I+6]=L.x,ia[I+7]=L.y,ia[I+8]=L.z,I+=9;if(U)for(K in U)if(m=U[K],m.__original.needsUpdate)t=m.offset,A=m.offsetSrc,m.size===1?(m.boundTo===void 0||m.boundTo==="vertices"?(m.array[t]=m.value[q.a],
|
|
|
+m.array[t+1]=m.value[q.b],m.array[t+2]=m.value[q.c]):m.boundTo==="faces"?(A=m.value[A],m.array[t]=A,m.array[t+1]=A,m.array[t+2]=A,m.offsetSrc++):m.boundTo==="faceVertices"&&(m.array[t]=m.value[A],m.array[t+1]=m.value[A+1],m.array[t+2]=m.value[A+2],m.offsetSrc+=3),m.offset+=3):(m.boundTo===void 0||m.boundTo==="vertices"?(x=m.value[q.a],v=m.value[q.b],L=m.value[q.c]):m.boundTo==="faces"?(L=v=x=A=m.value[A],m.offsetSrc++):m.boundTo==="faceVertices"&&(x=m.value[A],v=m.value[A+1],L=m.value[A+2],m.offsetSrc+=
|
|
|
+3),m.size===2?(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=v.x,m.array[t+3]=v.y,m.array[t+4]=L.x,m.array[t+5]=L.y,m.offset+=6):m.size===3?(m.type==="c"?(m.array[t]=x.r,m.array[t+1]=x.g,m.array[t+2]=x.b,m.array[t+3]=v.r,m.array[t+4]=v.g,m.array[t+5]=v.b,m.array[t+6]=L.r,m.array[t+7]=L.g,m.array[t+8]=L.b):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=v.x,m.array[t+4]=v.y,m.array[t+5]=v.z,m.array[t+6]=L.x,m.array[t+7]=L.y,m.array[t+8]=L.z),m.offset+=9):(m.array[t]=x.x,m.array[t+1]=
|
|
|
+x.y,m.array[t+2]=x.z,m.array[t+3]=x.w,m.array[t+4]=v.x,m.array[t+5]=v.y,m.array[t+6]=v.z,m.array[t+7]=v.w,m.array[t+8]=L.x,m.array[t+9]=L.y,m.array[t+10]=L.z,m.array[t+11]=L.w,m.offset+=12));if(sa){t=0;for(m=ya.length;t<m;t++)x=ya[t].vertices[q.a].position,v=ya[t].vertices[q.b].position,L=ya[t].vertices[q.c].position,A=da[t],A[ga]=x.x,A[ga+1]=x.y,A[ga+2]=x.z,A[ga+3]=v.x,A[ga+4]=v.y,A[ga+5]=v.z,A[ga+6]=L.x,A[ga+7]=L.y,A[ga+8]=L.z;ga+=9}if(za.length)t=za[q.a],m=za[q.b],A=za[q.c],$[z]=t.x,$[z+1]=t.y,
|
|
|
+$[z+2]=t.z,$[z+3]=t.w,$[z+4]=m.x,$[z+5]=m.y,$[z+6]=m.z,$[z+7]=m.w,$[z+8]=A.x,$[z+9]=A.y,$[z+10]=A.z,$[z+11]=A.w,t=Ga[q.a],m=Ga[q.b],A=Ga[q.c],Z[z]=t.x,Z[z+1]=t.y,Z[z+2]=t.z,Z[z+3]=t.w,Z[z+4]=m.x,Z[z+5]=m.y,Z[z+6]=m.z,Z[z+7]=m.w,Z[z+8]=A.x,Z[z+9]=A.y,Z[z+10]=A.z,Z[z+11]=A.w,t=Ea[q.a],m=Ea[q.b],A=Ea[q.c],X[z]=t.x,X[z+1]=t.y,X[z+2]=t.z,X[z+3]=1,X[z+4]=m.x,X[z+5]=m.y,X[z+6]=m.z,X[z+7]=1,X[z+8]=A.x,X[z+9]=A.y,X[z+10]=A.z,X[z+11]=1,t=Fa[q.a],m=Fa[q.b],A=Fa[q.c],Y[z]=t.x,Y[z+1]=t.y,Y[z+2]=t.z,Y[z+3]=1,Y[z+
|
|
|
+4]=m.x,Y[z+5]=m.y,Y[z+6]=m.z,Y[z+7]=1,Y[z+8]=A.x,Y[z+9]=A.y,Y[z+10]=A.z,Y[z+11]=1,z+=12;if(ra&&y)p.length==3&&y==THREE.VertexColors?(q=p[0],t=p[1],m=p[2]):m=t=q=s,ja[ea]=q.r,ja[ea+1]=q.g,ja[ea+2]=q.b,ja[ea+3]=t.r,ja[ea+4]=t.g,ja[ea+5]=t.b,ja[ea+6]=m.r,ja[ea+7]=m.g,ja[ea+8]=m.b,ea+=9;if(qa&&oa.hasTangents)p=u[0],s=u[1],q=u[2],W[V]=p.x,W[V+1]=p.y,W[V+2]=p.z,W[V+3]=p.w,W[V+4]=s.x,W[V+5]=s.y,W[V+6]=s.z,W[V+7]=s.w,W[V+8]=q.x,W[V+9]=q.y,W[V+10]=q.z,W[V+11]=q.w,V+=12;if(pa&&B)if(r.length==3&&ma)for(u=0;u<
|
|
|
+3;u++)o=r[u],Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;else for(u=0;u<3;u++)Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;if(ha&&D!==void 0&&w)for(u=0;u<3;u++)r=D[u],aa[R]=r.u,aa[R+1]=r.v,R+=2;if(ha&&F!==void 0&&w)for(u=0;u<3;u++)r=F[u],ca[S]=r.u,ca[S+1]=r.v,S+=2;na&&(P[M]=H,P[M+1]=H+1,P[M+2]=H+2,M+=3,T[O]=H,T[O+1]=H+1,T[O+2]=H,T[O+3]=H+2,T[O+4]=H+1,T[O+5]=H+2,O+=6,H+=3)}else if(q instanceof THREE.Face4){if(la)x=ka[q.a].position,v=ka[q.b].position,L=ka[q.c].position,G=ka[q.d].position,ia[I]=x.x,ia[I+1]=x.y,ia[I+
|
|
|
+2]=x.z,ia[I+3]=v.x,ia[I+4]=v.y,ia[I+5]=v.z,ia[I+6]=L.x,ia[I+7]=L.y,ia[I+8]=L.z,ia[I+9]=G.x,ia[I+10]=G.y,ia[I+11]=G.z,I+=12;if(U)for(K in U)if(m=U[K],m.__original.needsUpdate)t=m.offset,A=m.offsetSrc,m.size===1?(m.boundTo===void 0||m.boundTo==="vertices"?(m.array[t]=m.value[q.a],m.array[t+1]=m.value[q.b],m.array[t+2]=m.value[q.c],m.array[t+3]=m.value[q.d]):m.boundTo==="faces"?(A=m.value[A],m.array[t]=A,m.array[t+1]=A,m.array[t+2]=A,m.array[t+3]=A,m.offsetSrc++):m.boundTo==="faceVertices"&&(m.array[t]=
|
|
|
+m.value[A],m.array[t+1]=m.value[A+1],m.array[t+2]=m.value[A+2],m.array[t+3]=m.value[A+3],m.offsetSrc+=4),m.offset+=4):(m.boundTo===void 0||m.boundTo==="vertices"?(x=m.value[q.a],v=m.value[q.b],L=m.value[q.c],G=m.value[q.d]):m.boundTo==="faces"?(G=L=v=x=A=m.value[A],m.offsetSrc++):m.boundTo==="faceVertices"&&(x=m.value[A],v=m.value[A+1],L=m.value[A+2],G=m.value[A+3],m.offsetSrc+=4),m.size===2?(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=v.x,m.array[t+3]=v.y,m.array[t+4]=L.x,m.array[t+5]=L.y,m.array[t+
|
|
|
+6]=G.x,m.array[t+7]=G.y,m.offset+=8):m.size===3?(m.type==="c"?(m.array[t]=x.r,m.array[t+1]=x.g,m.array[t+2]=x.b,m.array[t+3]=v.r,m.array[t+4]=v.g,m.array[t+5]=v.b,m.array[t+6]=L.r,m.array[t+7]=L.g,m.array[t+8]=L.b,m.array[t+9]=G.r,m.array[t+10]=G.g,m.array[t+11]=G.b):(m.array[t]=x.x,m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=v.x,m.array[t+4]=v.y,m.array[t+5]=v.z,m.array[t+6]=L.x,m.array[t+7]=L.y,m.array[t+8]=L.z,m.array[t+9]=G.x,m.array[t+10]=G.y,m.array[t+11]=G.z),m.offset+=12):(m.array[t]=x.x,
|
|
|
+m.array[t+1]=x.y,m.array[t+2]=x.z,m.array[t+3]=x.w,m.array[t+4]=v.x,m.array[t+5]=v.y,m.array[t+6]=v.z,m.array[t+7]=v.w,m.array[t+8]=L.x,m.array[t+9]=L.y,m.array[t+10]=L.z,m.array[t+11]=L.w,m.array[t+12]=G.x,m.array[t+13]=G.y,m.array[t+14]=G.z,m.array[t+15]=G.w,m.offset+=16));if(sa){t=0;for(m=ya.length;t<m;t++)x=ya[t].vertices[q.a].position,v=ya[t].vertices[q.b].position,L=ya[t].vertices[q.c].position,G=ya[t].vertices[q.d].position,A=da[t],A[ga]=x.x,A[ga+1]=x.y,A[ga+2]=x.z,A[ga+3]=v.x,A[ga+4]=v.y,
|
|
|
+A[ga+5]=v.z,A[ga+6]=L.x,A[ga+7]=L.y,A[ga+8]=L.z,A[ga+9]=G.x,A[ga+10]=G.y,A[ga+11]=G.z;ga+=12}if(za.length)t=za[q.a],m=za[q.b],A=za[q.c],J=za[q.d],$[z]=t.x,$[z+1]=t.y,$[z+2]=t.z,$[z+3]=t.w,$[z+4]=m.x,$[z+5]=m.y,$[z+6]=m.z,$[z+7]=m.w,$[z+8]=A.x,$[z+9]=A.y,$[z+10]=A.z,$[z+11]=A.w,$[z+12]=J.x,$[z+13]=J.y,$[z+14]=J.z,$[z+15]=J.w,t=Ga[q.a],m=Ga[q.b],A=Ga[q.c],J=Ga[q.d],Z[z]=t.x,Z[z+1]=t.y,Z[z+2]=t.z,Z[z+3]=t.w,Z[z+4]=m.x,Z[z+5]=m.y,Z[z+6]=m.z,Z[z+7]=m.w,Z[z+8]=A.x,Z[z+9]=A.y,Z[z+10]=A.z,Z[z+11]=A.w,Z[z+
|
|
|
+12]=J.x,Z[z+13]=J.y,Z[z+14]=J.z,Z[z+15]=J.w,t=Ea[q.a],m=Ea[q.b],A=Ea[q.c],J=Ea[q.d],X[z]=t.x,X[z+1]=t.y,X[z+2]=t.z,X[z+3]=1,X[z+4]=m.x,X[z+5]=m.y,X[z+6]=m.z,X[z+7]=1,X[z+8]=A.x,X[z+9]=A.y,X[z+10]=A.z,X[z+11]=1,X[z+12]=J.x,X[z+13]=J.y,X[z+14]=J.z,X[z+15]=1,t=Fa[q.a],m=Fa[q.b],A=Fa[q.c],q=Fa[q.d],Y[z]=t.x,Y[z+1]=t.y,Y[z+2]=t.z,Y[z+3]=1,Y[z+4]=m.x,Y[z+5]=m.y,Y[z+6]=m.z,Y[z+7]=1,Y[z+8]=A.x,Y[z+9]=A.y,Y[z+10]=A.z,Y[z+11]=1,Y[z+12]=q.x,Y[z+13]=q.y,Y[z+14]=q.z,Y[z+15]=1,z+=16;if(ra&&y)p.length==4&&y==THREE.VertexColors?
|
|
|
+(q=p[0],t=p[1],m=p[2],p=p[3]):p=m=t=q=s,ja[ea]=q.r,ja[ea+1]=q.g,ja[ea+2]=q.b,ja[ea+3]=t.r,ja[ea+4]=t.g,ja[ea+5]=t.b,ja[ea+6]=m.r,ja[ea+7]=m.g,ja[ea+8]=m.b,ja[ea+9]=p.r,ja[ea+10]=p.g,ja[ea+11]=p.b,ea+=12;if(qa&&oa.hasTangents)p=u[0],s=u[1],q=u[2],u=u[3],W[V]=p.x,W[V+1]=p.y,W[V+2]=p.z,W[V+3]=p.w,W[V+4]=s.x,W[V+5]=s.y,W[V+6]=s.z,W[V+7]=s.w,W[V+8]=q.x,W[V+9]=q.y,W[V+10]=q.z,W[V+11]=q.w,W[V+12]=u.x,W[V+13]=u.y,W[V+14]=u.z,W[V+15]=u.w,V+=16;if(pa&&B)if(r.length==4&&ma)for(u=0;u<4;u++)o=r[u],Q[N]=o.x,Q[N+
|
|
|
+1]=o.y,Q[N+2]=o.z,N+=3;else for(u=0;u<4;u++)Q[N]=o.x,Q[N+1]=o.y,Q[N+2]=o.z,N+=3;if(ha&&D!==void 0&&w)for(u=0;u<4;u++)r=D[u],aa[R]=r.u,aa[R+1]=r.v,R+=2;if(ha&&F!==void 0&&w)for(u=0;u<4;u++)r=F[u],ca[S]=r.u,ca[S+1]=r.v,S+=2;na&&(P[M]=H,P[M+1]=H+1,P[M+2]=H+3,P[M+3]=H+1,P[M+4]=H+2,P[M+5]=H+3,M+=6,T[O]=H,T[O+1]=H+1,T[O+2]=H,T[O+3]=H+3,T[O+4]=H+1,T[O+5]=H+2,T[O+6]=H+2,T[O+7]=H+3,O+=8,H+=4)}if(Aa){k=0;for(n=Aa.length;k<n;k++)P[M]=Aa[k].a,P[M+1]=Aa[k].b,P[M+2]=Aa[k].c,P[M+3]=Aa[k].a,P[M+4]=Aa[k].c,P[M+5]=
|
|
|
+Aa[k].d,M+=6}la&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglVertexBuffer),c.bufferData(c.ARRAY_BUFFER,ia,j));if(U)for(K in U)m=U[K],m.__original.needsUpdate&&(c.bindBuffer(c.ARRAY_BUFFER,m.buffer),c.bufferData(c.ARRAY_BUFFER,m.array,j));if(sa){t=0;for(m=ya.length;t<m;t++)c.bindBuffer(c.ARRAY_BUFFER,g.__webglMorphTargetsBuffers[t]),c.bufferData(c.ARRAY_BUFFER,da[t],j)}ra&&ea>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglColorBuffer),c.bufferData(c.ARRAY_BUFFER,ja,j));pa&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglNormalBuffer),
|
|
|
+c.bufferData(c.ARRAY_BUFFER,Q,j));qa&&oa.hasTangents&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglTangentBuffer),c.bufferData(c.ARRAY_BUFFER,W,j));ha&&R>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglUVBuffer),c.bufferData(c.ARRAY_BUFFER,aa,j));ha&&S>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglUV2Buffer),c.bufferData(c.ARRAY_BUFFER,ca,j));na&&(c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,g.__webglFaceBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,P,j),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,g.__webglLineBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,
|
|
|
+T,j));z>0&&(c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinVertexABuffer),c.bufferData(c.ARRAY_BUFFER,X,j),c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinVertexBBuffer),c.bufferData(c.ARRAY_BUFFER,Y,j),c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinIndicesBuffer),c.bufferData(c.ARRAY_BUFFER,Z,j),c.bindBuffer(c.ARRAY_BUFFER,g.__webglSkinWeightsBuffer),c.bufferData(c.ARRAY_BUFFER,$,j));i.dynamic||(delete g.__inittedArrays,delete g.__colorArray,delete g.__normalArray,delete g.__tangentArray,delete g.__uvArray,delete g.__uv2Array,
|
|
|
+delete g.__faceArray,delete g.__vertexArray,delete g.__lineArray,delete g.__skinVertexAArray,delete g.__skinVertexBArray,delete g.__skinIndexArray,delete g.__skinWeightArray)}}f.__dirtyVertices=!1;f.__dirtyMorphTargets=!1;f.__dirtyElements=!1;f.__dirtyUvs=!1;f.__dirtyNormals=!1;f.__dirtyTangents=!1;f.__dirtyColors=!1;fa(h)}else if(b instanceof THREE.Ribbon){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=c.DYNAMIC_DRAW;w=b.vertices;g=b.colors;y=w.length;i=g.length;B=b.__vertexArray;j=b.__colorArray;
|
|
|
+D=b.__dirtyColors;if(b.__dirtyVertices){for(k=0;k<y;k++)n=w[k].position,h=k*3,B[h]=n.x,B[h+1]=n.y,B[h+2]=n.z;c.bindBuffer(c.ARRAY_BUFFER,b.__webglVertexBuffer);c.bufferData(c.ARRAY_BUFFER,B,e)}if(D){for(k=0;k<i;k++)color=g[k],h=k*3,j[h]=color.r,j[h+1]=color.g,j[h+2]=color.b;c.bindBuffer(c.ARRAY_BUFFER,b.__webglColorBuffer);c.bufferData(c.ARRAY_BUFFER,j,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.Line){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=c.DYNAMIC_DRAW;
|
|
|
+w=b.vertices;g=b.colors;y=w.length;i=g.length;B=b.__vertexArray;j=b.__colorArray;D=b.__dirtyColors;if(b.__dirtyVertices){for(k=0;k<y;k++)n=w[k].position,h=k*3,B[h]=n.x,B[h+1]=n.y,B[h+2]=n.z;c.bindBuffer(c.ARRAY_BUFFER,b.__webglVertexBuffer);c.bufferData(c.ARRAY_BUFFER,B,e)}if(D){for(k=0;k<i;k++)color=g[k],h=k*3,j[h]=color.r,j[h+1]=color.g,j[h+2]=color.b;c.bindBuffer(c.ARRAY_BUFFER,b.__webglColorBuffer);c.bufferData(c.ARRAY_BUFFER,j,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.ParticleSystem)f=
|
|
|
+b.geometry,g=ta(f),(f.__dirtyVertices||f.__dirtyColors||b.sortParticles||g)&&d(f,c.DYNAMIC_DRAW,b),f.__dirtyVertices=!1,f.__dirtyColors=!1,fa(f)}function u(b,c){var d;for(d=b.length-1;d>=0;d--)b[d].object==c&&b.splice(d,1)}function P(b){function c(b){var f=[];d=0;for(e=b.length;d<e;d++)b[d]==void 0?f.push("undefined"):f.push(b[d].id);return f.join("_")}var d,e,f,g,h,i,j,k,q={},n=b.morphTargets!==void 0?b.morphTargets.length:0;b.geometryGroups={};f=0;for(g=b.faces.length;f<g;f++)h=b.faces[f],i=h.materials,
|
|
|
+j=c(i),q[j]==void 0&&(q[j]={hash:j,counter:0}),k=q[j].hash+"_"+q[j].counter,b.geometryGroups[k]==void 0&&(b.geometryGroups[k]={faces:[],materials:i,vertices:0,numMorphTargets:n}),h=h instanceof THREE.Face3?3:4,b.geometryGroups[k].vertices+h>65535&&(q[j].counter+=1,k=q[j].hash+"_"+q[j].counter,b.geometryGroups[k]==void 0&&(b.geometryGroups[k]={faces:[],materials:i,vertices:0,numMorphTargets:n})),b.geometryGroups[k].faces.push(f),b.geometryGroups[k].vertices+=h}function I(b,c,d){b.push({buffer:c,object:d,
|
|
|
+opaque:{list:[],count:0},transparent:{list:[],count:0}})}function M(b){if(b!=da){switch(b){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.SRC_ALPHA,c.ONE);break;case THREE.SubtractiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ZERO,c.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ZERO,c.SRC_COLOR);break;default:c.blendEquationSeparate(c.FUNC_ADD,c.FUNC_ADD),c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA)}da=
|
|
|
+b}}function Q(b,d,e){(e.width&e.width-1)==0&&(e.height&e.height-1)==0?(c.texParameteri(b,c.TEXTURE_WRAP_S,N(d.wrapS)),c.texParameteri(b,c.TEXTURE_WRAP_T,N(d.wrapT)),c.texParameteri(b,c.TEXTURE_MAG_FILTER,N(d.magFilter)),c.texParameteri(b,c.TEXTURE_MIN_FILTER,N(d.minFilter)),c.generateMipmap(b)):(c.texParameteri(b,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(b,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),c.texParameteri(b,c.TEXTURE_MAG_FILTER,va(d.magFilter)),c.texParameteri(b,c.TEXTURE_MIN_FILTER,va(d.minFilter)))}
|
|
|
+function ra(b,d){if(b.needsUpdate){if(!b.__webglInit)b.__webglTexture=c.createTexture(),b.__webglInit=!0;c.bindTexture(c.TEXTURE_2D,b.__webglTexture);b.image.data?c.texImage2D(c.TEXTURE_2D,0,N(b.format),b.image.width,b.image.height,0,N(b.format),c.UNSIGNED_BYTE,b.image.data):c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,b.image);Q(c.TEXTURE_2D,b,b.image);c.bindTexture(c.TEXTURE_2D,null);b.needsUpdate=!1}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_2D,b.__webglTexture)}function ka(b){if(b&&
|
|
|
+!b.__webglFramebuffer){if(b.depthBuffer===void 0)b.depthBuffer=!0;if(b.stencilBuffer===void 0)b.stencilBuffer=!0;b.__webglFramebuffer=c.createFramebuffer();b.__webglRenderbuffer=c.createRenderbuffer();b.__webglTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,b.__webglTexture);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,N(b.wrapS));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,N(b.wrapT));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,N(b.magFilter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,
|
|
|
+N(b.minFilter));c.texImage2D(c.TEXTURE_2D,0,N(b.format),b.width,b.height,0,N(b.format),N(b.type),null);c.bindRenderbuffer(c.RENDERBUFFER,b.__webglRenderbuffer);c.bindFramebuffer(c.FRAMEBUFFER,b.__webglFramebuffer);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,b.__webglTexture,0);b.depthBuffer&&!b.stencilBuffer?(c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,b.width,b.height),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,b.__webglRenderbuffer)):
|
|
|
+b.depthBuffer&&b.stencilBuffer?(c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_STENCIL,b.width,b.height),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,b.__webglRenderbuffer)):c.renderbufferStorage(c.RENDERBUFFER,c.RGBA4,b.width,b.height);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null)}var d,e;b?(d=b.__webglFramebuffer,e=b.width,b=b.height):(d=null,e=la,b=qa);d!=pa&&(c.bindFramebuffer(c.FRAMEBUFFER,d),
|
|
|
+c.viewport(Ia,Ja,e,b),pa=d)}function aa(b,d){var e;b=="fragment"?e=c.createShader(c.FRAGMENT_SHADER):b=="vertex"&&(e=c.createShader(c.VERTEX_SHADER));c.shaderSource(e,d);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS))return console.error(c.getShaderInfoLog(e)),console.error(d),null;return e}function va(b){switch(b){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return c.NEAREST;default:return c.LINEAR}}function N(b){switch(b){case THREE.RepeatWrapping:return c.REPEAT;
|
|
|
+case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return c.BYTE;
|
|
|
+case THREE.UnsignedByteType:return c.UNSIGNED_BYTE;case THREE.ShortType:return c.SHORT;case THREE.UnsignedShortType:return c.UNSIGNED_SHORT;case THREE.IntType:return c.INT;case THREE.UnsignedShortType:return c.UNSIGNED_INT;case THREE.FloatType:return c.FLOAT;case THREE.AlphaFormat:return c.ALPHA;case THREE.RGBFormat:return c.RGB;case THREE.RGBAFormat:return c.RGBA;case THREE.LuminanceFormat:return c.LUMINANCE;case THREE.LuminanceAlphaFormat:return c.LUMINANCE_ALPHA}return 0}var J=this,c,ha=[],R=null,
|
|
|
+pa=null,K=!0,ca=null,O=null,da=null,T=null,S=null,ua=null,Ha=null,Ia=0,Ja=0,la=0,qa=0,ma=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],wa=new THREE.Matrix4,La=new Float32Array(16),Ma=new Float32Array(16),Ka=new THREE.Vector4,Sa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},xa=b.canvas!==void 0?b.canvas:document.createElement("canvas"),Qa=b.stencil!==void 0?
|
|
|
+b.stencil:!0,x=b.antialias!==void 0?b.antialias:!1,sa=b.clearColor!==void 0?new THREE.Color(b.clearColor):new THREE.Color(0),Na=b.clearAlpha!==void 0?b.clearAlpha:0;this.data={vertices:0,faces:0,drawCalls:0};this.maxMorphTargets=8;this.domElement=xa;this.sortObjects=this.autoClear=!0;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=
|
|
|
+!0;var na,Oa=[],b=THREE.ShaderLib.depthRGBA,Wa=THREE.UniformsUtils.clone(b.uniforms),Pa=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:Wa}),Ta=new THREE.MeshShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:Wa,morphTargets:!0});Pa._shadowPass=!0;Ta._shadowPass=!0;try{if(!(c=xa.getContext("experimental-webgl",{antialias:x,stencil:Qa})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+c.getParameter(c.VERSION)+
|
|
|
+" | "+c.getParameter(c.VENDOR)+" | "+c.getParameter(c.RENDERER)+" | "+c.getParameter(c.SHADING_LANGUAGE_VERSION))}catch(Ya){console.error(Ya)}c.clearColor(0,0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendEquation(c.FUNC_ADD);c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA);c.clearColor(sa.r,sa.g,sa.b,Na);this.context=c;var Xa=c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;if(Qa){var v={};v.vertices=
|
|
|
+new Float32Array(12);v.faces=new Uint16Array(6);v.darkness=0.5;v.vertices[0]=-20;v.vertices[1]=-20;v.vertices[2]=-1;v.vertices[3]=20;v.vertices[4]=-20;v.vertices[5]=-1;v.vertices[6]=20;v.vertices[7]=20;v.vertices[8]=-1;v.vertices[9]=-20;v.vertices[10]=20;v.vertices[11]=-1;v.faces[0]=0;v.faces[1]=1;v.faces[2]=2;v.faces[3]=0;v.faces[4]=2;v.faces[5]=3;v.vertexBuffer=c.createBuffer();v.elementBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,v.vertexBuffer);c.bufferData(c.ARRAY_BUFFER,v.vertices,c.STATIC_DRAW);
|
|
|
+c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,v.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,v.faces,c.STATIC_DRAW);v.program=c.createProgram();c.attachShader(v.program,aa("fragment",THREE.ShaderLib.shadowPost.fragmentShader));c.attachShader(v.program,aa("vertex",THREE.ShaderLib.shadowPost.vertexShader));c.linkProgram(v.program);v.vertexLocation=c.getAttribLocation(v.program,"position");v.projectionLocation=c.getUniformLocation(v.program,"projectionMatrix");v.darknessLocation=c.getUniformLocation(v.program,
|
|
|
+"darkness")}var y={};y.vertices=new Float32Array(16);y.faces=new Uint16Array(6);x=0;y.vertices[x++]=-1;y.vertices[x++]=-1;y.vertices[x++]=0;y.vertices[x++]=0;y.vertices[x++]=1;y.vertices[x++]=-1;y.vertices[x++]=1;y.vertices[x++]=0;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=1;y.vertices[x++]=-1;y.vertices[x++]=1;y.vertices[x++]=0;y.vertices[x++]=1;x=0;y.faces[x++]=0;y.faces[x++]=1;y.faces[x++]=2;y.faces[x++]=0;y.faces[x++]=2;y.faces[x++]=3;y.vertexBuffer=c.createBuffer();
|
|
|
+y.elementBuffer=c.createBuffer();y.tempTexture=c.createTexture();y.occlusionTexture=c.createTexture();c.bindBuffer(c.ARRAY_BUFFER,y.vertexBuffer);c.bufferData(c.ARRAY_BUFFER,y.vertices,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,y.faces,c.STATIC_DRAW);c.bindTexture(c.TEXTURE_2D,y.tempTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGB,16,16,0,c.RGB,c.UNSIGNED_BYTE,null);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,
|
|
|
+c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.NEAREST);c.bindTexture(c.TEXTURE_2D,y.occlusionTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,16,16,0,c.RGBA,c.UNSIGNED_BYTE,null);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,
|
|
|
+c.NEAREST);c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0?(y.hasVertexTexture=!1,y.program=c.createProgram(),c.attachShader(y.program,aa("fragment",THREE.ShaderLib.lensFlare.fragmentShader)),c.attachShader(y.program,aa("vertex",THREE.ShaderLib.lensFlare.vertexShader))):(y.hasVertexTexture=!0,y.program=c.createProgram(),c.attachShader(y.program,aa("fragment",THREE.ShaderLib.lensFlareVertexTexture.fragmentShader)),c.attachShader(y.program,aa("vertex",THREE.ShaderLib.lensFlareVertexTexture.vertexShader)));
|
|
|
+c.linkProgram(y.program);y.attributes={};y.uniforms={};y.attributes.vertex=c.getAttribLocation(y.program,"position");y.attributes.uv=c.getAttribLocation(y.program,"UV");y.uniforms.renderType=c.getUniformLocation(y.program,"renderType");y.uniforms.map=c.getUniformLocation(y.program,"map");y.uniforms.occlusionMap=c.getUniformLocation(y.program,"occlusionMap");y.uniforms.opacity=c.getUniformLocation(y.program,"opacity");y.uniforms.scale=c.getUniformLocation(y.program,"scale");y.uniforms.rotation=c.getUniformLocation(y.program,
|
|
|
+"rotation");y.uniforms.screenPosition=c.getUniformLocation(y.program,"screenPosition");var Va=!1,w={};w.vertices=new Float32Array(16);w.faces=new Uint16Array(6);x=0;w.vertices[x++]=-1;w.vertices[x++]=-1;w.vertices[x++]=0;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=-1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=1;w.vertices[x++]=0;w.vertices[x++]=-1;w.vertices[x++]=1;w.vertices[x++]=0;x=w.vertices[x++]=0;w.faces[x++]=0;w.faces[x++]=1;w.faces[x++]=
|
|
|
+2;w.faces[x++]=0;w.faces[x++]=2;w.faces[x++]=3;w.vertexBuffer=c.createBuffer();w.elementBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,w.vertexBuffer);c.bufferData(c.ARRAY_BUFFER,w.vertices,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,w.elementBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,w.faces,c.STATIC_DRAW);w.program=c.createProgram();c.attachShader(w.program,aa("fragment",THREE.ShaderLib.sprite.fragmentShader));c.attachShader(w.program,aa("vertex",THREE.ShaderLib.sprite.vertexShader));
|
|
|
+c.linkProgram(w.program);w.attributes={};w.uniforms={};w.attributes.position=c.getAttribLocation(w.program,"position");w.attributes.uv=c.getAttribLocation(w.program,"uv");w.uniforms.uvOffset=c.getUniformLocation(w.program,"uvOffset");w.uniforms.uvScale=c.getUniformLocation(w.program,"uvScale");w.uniforms.rotation=c.getUniformLocation(w.program,"rotation");w.uniforms.scale=c.getUniformLocation(w.program,"scale");w.uniforms.alignment=c.getUniformLocation(w.program,"alignment");w.uniforms.map=c.getUniformLocation(w.program,
|
|
|
+"map");w.uniforms.opacity=c.getUniformLocation(w.program,"opacity");w.uniforms.useScreenCoordinates=c.getUniformLocation(w.program,"useScreenCoordinates");w.uniforms.affectedByDistance=c.getUniformLocation(w.program,"affectedByDistance");w.uniforms.screenPosition=c.getUniformLocation(w.program,"screenPosition");w.uniforms.modelViewMatrix=c.getUniformLocation(w.program,"modelViewMatrix");w.uniforms.projectionMatrix=c.getUniformLocation(w.program,"projectionMatrix");var Ua=!1;this.setSize=function(b,
|
|
|
+c){xa.width=b;xa.height=c;this.setViewport(0,0,xa.width,xa.height)};this.setViewport=function(b,d,e,f){Ia=b;Ja=d;la=e;qa=f;c.viewport(Ia,Ja,la,qa)};this.setScissor=function(b,d,e,f){c.scissor(b,d,e,f)};this.enableScissorTest=function(b){b?c.enable(c.SCISSOR_TEST):c.disable(c.SCISSOR_TEST)};this.enableDepthBufferWrite=function(b){K=b;c.depthMask(b)};this.setClearColorHex=function(b,d){sa.setHex(b);Na=d;c.clearColor(sa.r,sa.g,sa.b,Na)};this.setClearColor=function(b,d){sa.copy(b);Na=d;c.clearColor(sa.r,
|
|
|
+sa.g,sa.b,Na)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT|c.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(b){v.darkness=b};this.getContext=function(){return c};this.initMaterial=function(b,d,e,f){var g,h,i;b instanceof THREE.MeshDepthMaterial?i="depth":b instanceof THREE.ShadowVolumeDynamicMaterial?i="shadowVolumeDynamic":b instanceof THREE.MeshNormalMaterial?i="normal":b instanceof THREE.MeshBasicMaterial?i="basic":b instanceof THREE.MeshLambertMaterial?i="lambert":
|
|
|
+b instanceof THREE.MeshPhongMaterial?i="phong":b instanceof THREE.LineBasicMaterial?i="basic":b instanceof THREE.ParticleBasicMaterial&&(i="particle_basic");if(i){var j=THREE.ShaderLib[i];b.uniforms=THREE.UniformsUtils.clone(j.uniforms);b.vertexShader=j.vertexShader;b.fragmentShader=j.fragmentShader}var k,n,q;k=q=j=0;for(n=d.length;k<n;k++)h=d[k],h instanceof THREE.SpotLight&&q++,h instanceof THREE.DirectionalLight&&q++,h instanceof THREE.PointLight&&j++;j+q<=4?k=q:(k=Math.ceil(4*q/(j+q)),j=4-k);
|
|
|
+h={directional:k,point:j};j=q=0;for(k=d.length;j<k;j++)n=d[j],n instanceof THREE.SpotLight&&n.castShadow&&q++;var r=50;if(f!==void 0&&f instanceof THREE.SkinnedMesh)r=f.bones.length;var o;a:{k=b.fragmentShader;n=b.vertexShader;var j=b.uniforms,d=b.attributes,e={map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,vertexColors:b.vertexColors,fog:e,sizeAttenuation:b.sizeAttenuation,skinning:b.skinning,morphTargets:b.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:h.directional,maxPointLights:h.point,
|
|
|
+maxBones:r,shadowMapEnabled:this.shadowMapEnabled&&f.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:q,alphaTest:b.alphaTest},p,f=[];i?f.push(i):(f.push(k),f.push(n));for(p in e)f.push(p),f.push(e[p]);i=f.join();p=0;for(f=ha.length;p<f;p++)if(ha[p].code==i){o=ha[p].program;break a}p=c.createProgram();f=[Xa?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,
|
|
|
+"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.vertexColors?"#define USE_COLOR":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapSoft?"#define SHADOWMAP_SOFT":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
h=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SHADOWS "+e.maxShadows,e.alphaTest?"#define ALPHATEST "+e.alphaTest:"",e.fog?"#define USE_FOG":"",e.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.vertexColors?"#define USE_COLOR":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapSoft?"#define SHADOWMAP_SOFT":
|
|
|
"",e.shadowMapSoft?"#define SHADOWMAP_WIDTH "+e.shadowMapWidth.toFixed(1):"",e.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+e.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");c.attachShader(p,aa("fragment",h+k));c.attachShader(p,aa("vertex",f+n));c.linkProgram(p);c.getProgramParameter(p,c.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+c.getProgramParameter(p,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");p.uniforms=
|
|
|
{};p.attributes={};var s,f=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(s in j)f.push(s);s=f;f=0;for(j=s.length;f<j;f++)k=s[f],p.uniforms[k]=c.getUniformLocation(p,k);f=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(s=0;s<e.maxMorphTargets;s++)f.push("morphTarget"+s);for(o in d)f.push(o);o=f;s=0;for(d=o.length;s<d;s++)e=
|