|
@@ -126,16 +126,16 @@ this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)t
|
|
|
a.matrixAutoUpdate=this.matrixAutoUpdate;a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.quaternion.copy(this.quaternion);a.useQuaternion=this.useQuaternion;a.visible=this.visible;a.castShadow=this.castShadow;a.receiveShadow=this.receiveShadow;a.frustumCulled=this.frustumCulled;for(var b=0;b<this.children.length;b++)a.add(this.children[b].clone());return a}};THREE.Object3D.__m1=new THREE.Matrix4;THREE.Object3D.defaultEulerOrder="XYZ";THREE.Object3DIdCount=0;THREE.Projector=function(){function a(){if(f===h){var a=new THREE.RenderableObject;g.push(a);h++;f++;return a}return g[f++]}function b(){if(k===n){var a=new THREE.RenderableVertex;m.push(a);n++;k++;return a}return m[k++]}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=f&&0<=g&&0<=h)return!0;if(0>e&&0>f||0>g&&0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d<
|
|
|
c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}var e,f,g=[],h=0,i,k,m=[],n=0,l,s,q=[],p=0,r,v=[],x=0,w,t,J=[],E=0,C,z,G=[],F=0,I={objects:[],sprites:[],lights:[],elements:[]},$=new THREE.Vector3,B=new THREE.Vector4,R=new THREE.Matrix4,A=new THREE.Matrix4,H,K=new THREE.Matrix4,M=new THREE.Matrix3,P=new THREE.Matrix3,ga=new THREE.Vector3,ra=new THREE.Frustum,L=new THREE.Vector4,oa=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);A.multiply(b.projectionMatrix,
|
|
|
b.matrixWorldInverse);return a.applyMatrix4(A)};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);A.multiply(b.matrixWorld,b.projectionMatrixInverse);return a.applyMatrix4(A)};this.pickingRay=function(a,b){a.z=-1;var c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Raycaster(a,c)};this.projectScene=function(g,h,n,W){var ja=h.near,fa=h.far,aa=!1,ma,Q,ka,va,Ea,na,wa,qa,$a,rb,La,db,pb;
|
|
|
-z=t=r=s=0;I.elements.length=0;g.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();R.getInverse(h.matrixWorld);A.multiply(h.projectionMatrix,R);P.getInverse(R);P.transpose();ra.setFromMatrix(A);f=0;I.objects.length=0;I.sprites.length=0;I.lights.length=0;var Nb=function(b){for(var c=0,d=b.children.length;c<d;c++){var f=b.children[c];if(!1!==f.visible){if(f instanceof THREE.Light)I.lights.push(f);else if(f instanceof THREE.Mesh||f instanceof THREE.Line){if(!1===f.frustumCulled||!0===ra.contains(f))e=
|
|
|
-a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.objects.push(e)}else f instanceof THREE.Sprite||f instanceof THREE.Particle?(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.sprites.push(e)):(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.objects.push(e));Nb(f)}}};Nb(g);!0===n&&I.objects.sort(c);
|
|
|
-g=0;for(n=I.objects.length;g<n;g++)if(qa=I.objects[g].object,H=qa.matrixWorld,k=0,qa instanceof THREE.Mesh){$a=qa.geometry;ka=$a.vertices;rb=$a.faces;$a=$a.faceVertexUvs;M.getInverse(H);M.transpose();db=qa.material instanceof THREE.MeshFaceMaterial;pb=!0===db?qa.material:null;ma=0;for(Q=ka.length;ma<Q;ma++)i=b(),i.positionWorld.copy(ka[ma]),i.positionWorld.applyMatrix4(H),i.positionScreen.copy(i.positionWorld),i.positionScreen.applyMatrix4(A),i.positionScreen.x/=i.positionScreen.w,i.positionScreen.y/=
|
|
|
-i.positionScreen.w,i.visible=i.positionScreen.z>ja&&i.positionScreen.z<fa;ka=0;for(ma=rb.length;ka<ma;ka++){Q=rb[ka];var yb=!0===db?pb.materials[Q.materialIndex]:qa.material;if(void 0!==yb){na=yb.side;if(Q instanceof THREE.Face3)if(va=m[Q.a],Ea=m[Q.b],wa=m[Q.c],!0===va.visible&&!0===Ea.visible&&!0===wa.visible)if(aa=0>(wa.positionScreen.x-va.positionScreen.x)*(Ea.positionScreen.y-va.positionScreen.y)-(wa.positionScreen.y-va.positionScreen.y)*(Ea.positionScreen.x-va.positionScreen.x),na===THREE.DoubleSide||
|
|
|
-aa===(na===THREE.FrontSide))s===p?(La=new THREE.RenderableFace3,q.push(La),p++,s++,l=La):l=q[s++],l.v1.copy(va),l.v2.copy(Ea),l.v3.copy(wa);else continue;else continue;else if(Q instanceof THREE.Face4)if(va=m[Q.a],Ea=m[Q.b],wa=m[Q.c],La=m[Q.d],!0===va.visible&&!0===Ea.visible&&!0===wa.visible&&!0===La.visible)if(aa=0>(La.positionScreen.x-va.positionScreen.x)*(Ea.positionScreen.y-va.positionScreen.y)-(La.positionScreen.y-va.positionScreen.y)*(Ea.positionScreen.x-va.positionScreen.x)||0>(Ea.positionScreen.x-
|
|
|
-wa.positionScreen.x)*(La.positionScreen.y-wa.positionScreen.y)-(Ea.positionScreen.y-wa.positionScreen.y)*(La.positionScreen.x-wa.positionScreen.x),na===THREE.DoubleSide||aa===(na===THREE.FrontSide)){if(r===x){var Ra=new THREE.RenderableFace4;v.push(Ra);x++;r++;l=Ra}else l=v[r++];l.v1.copy(va);l.v2.copy(Ea);l.v3.copy(wa);l.v4.copy(La)}else continue;else continue;l.normalModel.copy(Q.normal);!1===aa&&(na===THREE.BackSide||na===THREE.DoubleSide)&&l.normalModel.negate();l.normalModel.applyMatrix3(M);
|
|
|
-l.normalModel.normalize();l.normalModelView.copy(l.normalModel);l.normalModelView.applyMatrix3(P);l.centroidModel.copy(Q.centroid);l.centroidModel.applyMatrix4(H);wa=Q.vertexNormals;va=0;for(Ea=wa.length;va<Ea;va++)La=l.vertexNormalsModel[va],La.copy(wa[va]),!1===aa&&(na===THREE.BackSide||na===THREE.DoubleSide)&&La.negate(),La.applyMatrix3(M),La.normalize(),Ra=l.vertexNormalsModelView[va],Ra.copy(La),Ra.applyMatrix3(P);l.vertexNormalsLength=wa.length;na=0;for(va=$a.length;na<va;na++)if(La=$a[na][ka],
|
|
|
-void 0!==La){Ea=0;for(wa=La.length;Ea<wa;Ea++)l.uvs[na][Ea]=La[Ea]}l.color=Q.color;l.material=yb;ga.copy(l.centroidModel);ga.applyMatrix4(A);l.z=ga.z;I.elements.push(l)}}}else if(qa instanceof THREE.Line){K.multiply(A,H);ka=qa.geometry.vertices;va=b();va.positionScreen.copy(ka[0]);va.positionScreen.applyMatrix4(K);rb=qa.type===THREE.LinePieces?2:1;ma=1;for(Q=ka.length;ma<Q;ma++)va=b(),va.positionScreen.copy(ka[ma]),va.positionScreen.applyMatrix4(K),0<(ma+1)%rb||(Ea=m[k-2],L.copy(va.positionScreen),
|
|
|
-oa.copy(Ea.positionScreen),!0===d(L,oa)&&(L.multiplyScalar(1/L.w),oa.multiplyScalar(1/oa.w),t===E?($a=new THREE.RenderableLine,J.push($a),E++,t++,w=$a):w=J[t++],w.v1.positionScreen.copy(L),w.v2.positionScreen.copy(oa),w.z=Math.max(L.z,oa.z),w.material=qa.material,I.elements.push(w)))}g=0;for(n=I.sprites.length;g<n;g++)qa=I.sprites[g].object,H=qa.matrixWorld,qa instanceof THREE.Particle&&(B.set(H.elements[12],H.elements[13],H.elements[14],1),B.applyMatrix4(A),B.z/=B.w,0<B.z&&1>B.z&&(z===F?(ja=new THREE.RenderableParticle,
|
|
|
-G.push(ja),F++,z++,C=ja):C=G[z++],C.object=qa,C.x=B.x/B.w,C.y=B.y/B.w,C.z=B.z,C.rotation=qa.rotation.z,C.scale.x=qa.scale.x*Math.abs(C.x-(B.x+h.projectionMatrix.elements[0])/(B.w+h.projectionMatrix.elements[12])),C.scale.y=qa.scale.y*Math.abs(C.y-(B.y+h.projectionMatrix.elements[5])/(B.w+h.projectionMatrix.elements[13])),C.material=qa.material,I.elements.push(C)));!0===W&&I.elements.sort(c);return I}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3};
|
|
|
+z=t=r=s=0;I.elements.length=0;g.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();R.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));A.multiply(h.projectionMatrix,R);P.getInverse(R);P.transpose();ra.setFromMatrix(A);f=0;I.objects.length=0;I.sprites.length=0;I.lights.length=0;var Nb=function(b){for(var c=0,d=b.children.length;c<d;c++){var f=b.children[c];if(!1!==f.visible){if(f instanceof THREE.Light)I.lights.push(f);else if(f instanceof THREE.Mesh||f instanceof THREE.Line){if(!1===
|
|
|
+f.frustumCulled||!0===ra.contains(f))e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.objects.push(e)}else f instanceof THREE.Sprite||f instanceof THREE.Particle?(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.sprites.push(e)):(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:($.copy(f.matrixWorld.getPosition()),$.applyMatrix4(A),e.z=$.z),I.objects.push(e));
|
|
|
+Nb(f)}}};Nb(g);!0===n&&I.objects.sort(c);g=0;for(n=I.objects.length;g<n;g++)if(qa=I.objects[g].object,H=qa.matrixWorld,k=0,qa instanceof THREE.Mesh){$a=qa.geometry;ka=$a.vertices;rb=$a.faces;$a=$a.faceVertexUvs;M.getInverse(H);M.transpose();db=qa.material instanceof THREE.MeshFaceMaterial;pb=!0===db?qa.material:null;ma=0;for(Q=ka.length;ma<Q;ma++)i=b(),i.positionWorld.copy(ka[ma]),i.positionWorld.applyMatrix4(H),i.positionScreen.copy(i.positionWorld),i.positionScreen.applyMatrix4(A),i.positionScreen.x/=
|
|
|
+i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,i.visible=i.positionScreen.z>ja&&i.positionScreen.z<fa;ka=0;for(ma=rb.length;ka<ma;ka++){Q=rb[ka];var yb=!0===db?pb.materials[Q.materialIndex]:qa.material;if(void 0!==yb){na=yb.side;if(Q instanceof THREE.Face3)if(va=m[Q.a],Ea=m[Q.b],wa=m[Q.c],!0===va.visible&&!0===Ea.visible&&!0===wa.visible)if(aa=0>(wa.positionScreen.x-va.positionScreen.x)*(Ea.positionScreen.y-va.positionScreen.y)-(wa.positionScreen.y-va.positionScreen.y)*(Ea.positionScreen.x-
|
|
|
+va.positionScreen.x),na===THREE.DoubleSide||aa===(na===THREE.FrontSide))s===p?(La=new THREE.RenderableFace3,q.push(La),p++,s++,l=La):l=q[s++],l.v1.copy(va),l.v2.copy(Ea),l.v3.copy(wa);else continue;else continue;else if(Q instanceof THREE.Face4)if(va=m[Q.a],Ea=m[Q.b],wa=m[Q.c],La=m[Q.d],!0===va.visible&&!0===Ea.visible&&!0===wa.visible&&!0===La.visible)if(aa=0>(La.positionScreen.x-va.positionScreen.x)*(Ea.positionScreen.y-va.positionScreen.y)-(La.positionScreen.y-va.positionScreen.y)*(Ea.positionScreen.x-
|
|
|
+va.positionScreen.x)||0>(Ea.positionScreen.x-wa.positionScreen.x)*(La.positionScreen.y-wa.positionScreen.y)-(Ea.positionScreen.y-wa.positionScreen.y)*(La.positionScreen.x-wa.positionScreen.x),na===THREE.DoubleSide||aa===(na===THREE.FrontSide)){if(r===x){var Ra=new THREE.RenderableFace4;v.push(Ra);x++;r++;l=Ra}else l=v[r++];l.v1.copy(va);l.v2.copy(Ea);l.v3.copy(wa);l.v4.copy(La)}else continue;else continue;l.normalModel.copy(Q.normal);!1===aa&&(na===THREE.BackSide||na===THREE.DoubleSide)&&l.normalModel.negate();
|
|
|
+l.normalModel.applyMatrix3(M);l.normalModel.normalize();l.normalModelView.copy(l.normalModel);l.normalModelView.applyMatrix3(P);l.centroidModel.copy(Q.centroid);l.centroidModel.applyMatrix4(H);wa=Q.vertexNormals;va=0;for(Ea=wa.length;va<Ea;va++)La=l.vertexNormalsModel[va],La.copy(wa[va]),!1===aa&&(na===THREE.BackSide||na===THREE.DoubleSide)&&La.negate(),La.applyMatrix3(M),La.normalize(),Ra=l.vertexNormalsModelView[va],Ra.copy(La),Ra.applyMatrix3(P);l.vertexNormalsLength=wa.length;na=0;for(va=$a.length;na<
|
|
|
+va;na++)if(La=$a[na][ka],void 0!==La){Ea=0;for(wa=La.length;Ea<wa;Ea++)l.uvs[na][Ea]=La[Ea]}l.color=Q.color;l.material=yb;ga.copy(l.centroidModel);ga.applyMatrix4(A);l.z=ga.z;I.elements.push(l)}}}else if(qa instanceof THREE.Line){K.multiply(A,H);ka=qa.geometry.vertices;va=b();va.positionScreen.copy(ka[0]);va.positionScreen.applyMatrix4(K);rb=qa.type===THREE.LinePieces?2:1;ma=1;for(Q=ka.length;ma<Q;ma++)va=b(),va.positionScreen.copy(ka[ma]),va.positionScreen.applyMatrix4(K),0<(ma+1)%rb||(Ea=m[k-2],
|
|
|
+L.copy(va.positionScreen),oa.copy(Ea.positionScreen),!0===d(L,oa)&&(L.multiplyScalar(1/L.w),oa.multiplyScalar(1/oa.w),t===E?($a=new THREE.RenderableLine,J.push($a),E++,t++,w=$a):w=J[t++],w.v1.positionScreen.copy(L),w.v2.positionScreen.copy(oa),w.z=Math.max(L.z,oa.z),w.material=qa.material,I.elements.push(w)))}g=0;for(n=I.sprites.length;g<n;g++)qa=I.sprites[g].object,H=qa.matrixWorld,qa instanceof THREE.Particle&&(B.set(H.elements[12],H.elements[13],H.elements[14],1),B.applyMatrix4(A),B.z/=B.w,0<B.z&&
|
|
|
+1>B.z&&(z===F?(ja=new THREE.RenderableParticle,G.push(ja),F++,z++,C=ja):C=G[z++],C.object=qa,C.x=B.x/B.w,C.y=B.y/B.w,C.z=B.z,C.rotation=qa.rotation.z,C.scale.x=qa.scale.x*Math.abs(C.x-(B.x+h.projectionMatrix.elements[0])/(B.w+h.projectionMatrix.elements[12])),C.scale.y=qa.scale.y*Math.abs(C.y-(B.y+h.projectionMatrix.elements[5])/(B.w+h.projectionMatrix.elements[13])),C.material=qa.material,I.elements.push(C)));!0===W&&I.elements.sort(c);return I}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3};
|
|
|
THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();
|
|
|
return a}};THREE.Face4=function(a,b,c,d,e,f,g){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=f instanceof THREE.Color?f:new THREE.Color;this.vertexColors=f instanceof Array?f:[];this.vertexTangents=[];this.materialIndex=void 0!==g?g:0;this.centroid=new THREE.Vector3};
|
|
|
THREE.Face4.prototype={constructor:THREE.Face4,clone:function(){var a=new THREE.Face4(this.a,this.b,this.c,this.d);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();
|
|
@@ -234,7 +234,7 @@ a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wirefr
|
|
|
this.reflectivity=1;this.refractionRatio=0.98;this.fog=!0;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.MeshPhongMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
THREE.MeshPhongMaterial.prototype.clone=function(){var a=new THREE.MeshPhongMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.ambient.copy(this.ambient);a.emissive.copy(this.emissive);a.specular.copy(this.specular);a.shininess=this.shininess;a.metal=this.metal;a.perPixel=this.perPixel;a.wrapAround=this.wrapAround;a.wrapRGB.copy(this.wrapRGB);a.map=this.map;a.lightMap=this.lightMap;a.bumpMap=this.bumpMap;a.bumpScale=this.bumpScale;a.normalMap=this.normalMap;a.normalScale.copy(this.normalScale);
|
|
|
a.specularMap=this.specularMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap;a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;a.morphNormals=this.morphNormals;return a};THREE.MeshDepthMaterial=function(a){THREE.Material.call(this);this.wireframe=!1;this.wireframeLinewidth=1;this.setValues(a)};THREE.MeshDepthMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshDepthMaterial.prototype.clone=function(){var a=new THREE.LineBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshNormalMaterial=function(a){THREE.Material.call(this,a);this.shading=THREE.FlatShading;this.wireframe=!1;this.wireframeLinewidth=1;this.setValues(a)};THREE.MeshNormalMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshNormalMaterial.prototype.clone=function(){var a=new THREE.MeshNormalMaterial;THREE.Material.prototype.clone.call(this,a);a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshFaceMaterial=function(a){this.materials=a instanceof Array?a:[]};THREE.MeshFaceMaterial.prototype.clone=function(){return new THREE.MeshFaceMaterial(this.materials.slice(0))};THREE.ParticleBasicMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.map=null;this.size=1;this.sizeAttenuation=!0;this.vertexColors=!1;this.fog=!0;this.setValues(a)};THREE.ParticleBasicMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
-THREE.ParticleBasicMaterial.prototype.clone=function(){var a=new THREE.ParticleBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.size=this.size;a.sizeAttenuation=this.sizeAttenuation;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.ParticleCanvasMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.program=function(){};this.setValues(a)};THREE.ParticleCanvasMaterial.prototype=Object.create(THREE.Material.prototype);THREE.ParticleCanvasMaterial.prototype.clone=function(){var a=new THREE.ParticleCanvasMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.program=this.program;return a};THREE.ParticleDOMMaterial=function(a){this.element=a};THREE.ParticleDOMMaterial.prototype.clone=function(){return new THREE.ParticleDOMMaterial(this.element)};THREE.ShaderMaterial=function(a){THREE.Material.call(this);this.vertexShader=this.fragmentShader="void main() {}";this.uniforms={};this.defines={};this.attributes=null;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.ShaderMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
+THREE.ParticleBasicMaterial.prototype.clone=function(){var a=new THREE.ParticleBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.size=this.size;a.sizeAttenuation=this.sizeAttenuation;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.ParticleCanvasMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.program=function(){};this.setValues(a)};THREE.ParticleCanvasMaterial.prototype=Object.create(THREE.Material.prototype);THREE.ParticleCanvasMaterial.prototype.clone=function(){var a=new THREE.ParticleCanvasMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.program=this.program;return a};THREE.ShaderMaterial=function(a){THREE.Material.call(this);this.vertexShader=this.fragmentShader="void main() {}";this.uniforms={};this.defines={};this.attributes=null;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.ShaderMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
THREE.ShaderMaterial.prototype.clone=function(){var a=new THREE.ShaderMaterial;THREE.Material.prototype.clone.call(this,a);a.fragmentShader=this.fragmentShader;a.vertexShader=this.vertexShader;a.uniforms=THREE.UniformsUtils.clone(this.uniforms);a.attributes=this.attributes;a.defines=this.defines;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.fog=this.fog;a.lights=this.lights;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=
|
|
|
this.morphTargets;a.morphNormals=this.morphNormals;return a};THREE.SpriteMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.map=new THREE.Texture;this.useScreenCoordinates=!0;this.depthTest=!this.useScreenCoordinates;this.sizeAttenuation=!this.useScreenCoordinates;this.scaleByViewport=!this.sizeAttenuation;this.alignment=THREE.SpriteAlignment.center.clone();this.fog=!1;this.uvOffset=new THREE.Vector2(0,0);this.uvScale=new THREE.Vector2(1,1);this.setValues(a);a=a||{};void 0===a.depthTest&&(this.depthTest=!this.useScreenCoordinates);
|
|
|
void 0===a.sizeAttenuation&&(this.sizeAttenuation=!this.useScreenCoordinates);void 0===a.scaleByViewport&&(this.scaleByViewport=!this.sizeAttenuation)};THREE.SpriteMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
@@ -418,60 +418,60 @@ j.createBuffer();K.__webglUVBuffer=j.createBuffer();K.__webglUV2Buffer=j.createB
|
|
|
d(q,b);n.verticesNeedUpdate=!0;n.morphTargetsNeedUpdate=!0;n.elementsNeedUpdate=!0;n.uvsNeedUpdate=!0;n.normalsNeedUpdate=!0;n.tangentsNeedUpdate=!0;n.colorsNeedUpdate=!0}}else n instanceof THREE.BufferGeometry&&h(n);else if(b instanceof THREE.Ribbon){if(n=b.geometry,!n.__webglVertexBuffer){var fa=n;fa.__webglVertexBuffer=j.createBuffer();fa.__webglColorBuffer=j.createBuffer();fa.__webglNormalBuffer=j.createBuffer();O.info.memory.geometries++;var M=n,ja=b,P=M.vertices.length;M.__vertexArray=new Float32Array(3*
|
|
|
P);M.__colorArray=new Float32Array(3*P);M.__normalArray=new Float32Array(3*P);M.__webglVertexCount=P;c(M,ja);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(n=b.geometry,!n.__webglVertexBuffer){var R=n;R.__webglVertexBuffer=j.createBuffer();R.__webglColorBuffer=j.createBuffer();R.__webglLineDistanceBuffer=j.createBuffer();O.info.memory.geometries++;var aa=n,X=b,ka=aa.vertices.length;aa.__vertexArray=new Float32Array(3*ka);aa.__colorArray=new Float32Array(3*
|
|
|
ka);aa.__lineDistanceArray=new Float32Array(1*ka);aa.__webglLineCount=ka;c(aa,X);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.lineDistancesNeedUpdate=!0}}else if(b instanceof THREE.ParticleSystem&&(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof THREE.Geometry){var $=n;$.__webglVertexBuffer=j.createBuffer();$.__webglColorBuffer=j.createBuffer();O.info.memory.geometries++;var Z=n,ma=b,ga=Z.vertices.length;Z.__vertexArray=new Float32Array(3*ga);Z.__colorArray=new Float32Array(3*ga);Z.__sortArray=
|
|
|
-[];Z.__webglParticleCount=ga;c(Z,ma);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,n instanceof THREE.BufferGeometry)r(k.__webglObjects,n,b);else for(m in n.geometryGroups)q=n.geometryGroups[m],r(k.__webglObjects,q,b);else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(n=b.geometry,r(k.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?
|
|
|
-k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var ba=a.__objectsRemoved[0],oa=a;ba instanceof THREE.Mesh||ba instanceof THREE.ParticleSystem||ba instanceof THREE.Ribbon||ba instanceof THREE.Line?w(oa.__webglObjects,ba):ba instanceof THREE.Sprite?t(oa.__webglSprites,ba):ba instanceof THREE.LensFlare?
|
|
|
-t(oa.__webglFlares,ba):(ba instanceof THREE.ImmediateRenderObject||ba.immediateRenderCallback)&&w(oa.__webglObjectsImmediate,ba);ba.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var qa=0,Ea=a.__webglObjects.length;qa<Ea;qa++){var la=a.__webglObjects[qa].object,V=la.geometry,wa=void 0,ra=void 0,na=void 0;if(la instanceof THREE.Mesh)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate)&&
|
|
|
-i(V,j.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.elementsNeedUpdate=!1,V.uvsNeedUpdate=!1,V.normalsNeedUpdate=!1,V.colorsNeedUpdate=!1,V.tangentsNeedUpdate=!1;else{for(var Aa=0,La=V.geometryGroupsList.length;Aa<La;Aa++)if(wa=V.geometryGroupsList[Aa],na=e(la,wa),V.buffersNeedUpdate&&d(wa,la),ra=na.attributes&&v(na),V.verticesNeedUpdate||V.morphTargetsNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate||ra){var xa=wa,Ia=la,sa=j.DYNAMIC_DRAW,
|
|
|
-$a=!V.dynamic,Ha=na;if(xa.__inittedArrays){var Ua=f(Ha),Qa=Ha.vertexColors?Ha.vertexColors:!1,Xa=g(Ha),Va=Ua===THREE.SmoothShading,D=void 0,Y=void 0,Ra=void 0,N=void 0,ab=void 0,Ya=void 0,Sa=void 0,rb=void 0,db=void 0,ob=void 0,pb=void 0,S=void 0,T=void 0,U=void 0,ua=void 0,eb=void 0,fb=void 0,jb=void 0,yb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,zb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,Ab=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Cb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Eb=void 0,Ba=void 0,Nb=void 0,tb=void 0,
|
|
|
-Fb=void 0,vc=void 0,gb=void 0,kc=void 0,bb=void 0,cb=void 0,lc=void 0,ec=void 0,Ta=0,Za=0,fc=0,gc=0,Gb=0,mb=0,Fa=0,qb=0,Wa=0,da=0,pa=0,y=0,Ca=void 0,hb=xa.__vertexArray,Ac=xa.__uvArray,Bc=xa.__uv2Array,Hb=xa.__normalArray,Ma=xa.__tangentArray,ib=xa.__colorArray,Na=xa.__skinIndexArray,Oa=xa.__skinWeightArray,pc=xa.__morphTargetsArrays,qc=xa.__morphNormalsArrays,ed=xa.__webglCustomAttributesList,u=void 0,$b=xa.__faceArray,Db=xa.__lineArray,ub=Ia.geometry,Jc=ub.elementsNeedUpdate,zc=ub.uvsNeedUpdate,
|
|
|
-Kc=ub.normalsNeedUpdate,Lc=ub.tangentsNeedUpdate,bd=ub.colorsNeedUpdate,cd=ub.morphTargetsNeedUpdate,rc=ub.vertices,ya=xa.faces3,za=xa.faces4,nb=ub.faces,fd=ub.faceVertexUvs[0],gd=ub.faceVertexUvs[1],sc=ub.skinIndices,mc=ub.skinWeights,nc=ub.morphTargets,Mc=ub.morphNormals;if(ub.verticesNeedUpdate){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=rc[N.a],T=rc[N.b],U=rc[N.c],hb[Za]=S.x,hb[Za+1]=S.y,hb[Za+2]=S.z,hb[Za+3]=T.x,hb[Za+4]=T.y,hb[Za+5]=T.z,hb[Za+6]=U.x,hb[Za+7]=U.y,hb[Za+8]=U.z,Za+=9;D=0;for(Y=
|
|
|
-za.length;D<Y;D++)N=nb[za[D]],S=rc[N.a],T=rc[N.b],U=rc[N.c],ua=rc[N.d],hb[Za]=S.x,hb[Za+1]=S.y,hb[Za+2]=S.z,hb[Za+3]=T.x,hb[Za+4]=T.y,hb[Za+5]=T.z,hb[Za+6]=U.x,hb[Za+7]=U.y,hb[Za+8]=U.z,hb[Za+9]=ua.x,hb[Za+10]=ua.y,hb[Za+11]=ua.z,Za+=12;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,hb,sa)}if(cd){gb=0;for(kc=nc.length;gb<kc;gb++){D=pa=0;for(Y=ya.length;D<Y;D++)lc=ya[D],N=nb[lc],S=nc[gb].vertices[N.a],T=nc[gb].vertices[N.b],U=nc[gb].vertices[N.c],bb=pc[gb],bb[pa]=S.x,
|
|
|
-bb[pa+1]=S.y,bb[pa+2]=S.z,bb[pa+3]=T.x,bb[pa+4]=T.y,bb[pa+5]=T.z,bb[pa+6]=U.x,bb[pa+7]=U.y,bb[pa+8]=U.z,Ha.morphNormals&&(Va?(ec=Mc[gb].vertexNormals[lc],Ob=ec.a,Pb=ec.b,Qb=ec.c):Qb=Pb=Ob=Mc[gb].faceNormals[lc],cb=qc[gb],cb[pa]=Ob.x,cb[pa+1]=Ob.y,cb[pa+2]=Ob.z,cb[pa+3]=Pb.x,cb[pa+4]=Pb.y,cb[pa+5]=Pb.z,cb[pa+6]=Qb.x,cb[pa+7]=Qb.y,cb[pa+8]=Qb.z),pa+=9;D=0;for(Y=za.length;D<Y;D++)lc=za[D],N=nb[lc],S=nc[gb].vertices[N.a],T=nc[gb].vertices[N.b],U=nc[gb].vertices[N.c],ua=nc[gb].vertices[N.d],bb=pc[gb],
|
|
|
-bb[pa]=S.x,bb[pa+1]=S.y,bb[pa+2]=S.z,bb[pa+3]=T.x,bb[pa+4]=T.y,bb[pa+5]=T.z,bb[pa+6]=U.x,bb[pa+7]=U.y,bb[pa+8]=U.z,bb[pa+9]=ua.x,bb[pa+10]=ua.y,bb[pa+11]=ua.z,Ha.morphNormals&&(Va?(ec=Mc[gb].vertexNormals[lc],Ob=ec.a,Pb=ec.b,Qb=ec.c,zb=ec.d):zb=Qb=Pb=Ob=Mc[gb].faceNormals[lc],cb=qc[gb],cb[pa]=Ob.x,cb[pa+1]=Ob.y,cb[pa+2]=Ob.z,cb[pa+3]=Pb.x,cb[pa+4]=Pb.y,cb[pa+5]=Pb.z,cb[pa+6]=Qb.x,cb[pa+7]=Qb.y,cb[pa+8]=Qb.z,cb[pa+9]=zb.x,cb[pa+10]=zb.y,cb[pa+11]=zb.z),pa+=12;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglMorphTargetsBuffers[gb]);
|
|
|
-j.bufferData(j.ARRAY_BUFFER,pc[gb],sa);Ha.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglMorphNormalsBuffers[gb]),j.bufferData(j.ARRAY_BUFFER,qc[gb],sa))}}if(mc.length){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],Ub=mc[N.a],Vb=mc[N.b],Wb=mc[N.c],Oa[da]=Ub.x,Oa[da+1]=Ub.y,Oa[da+2]=Ub.z,Oa[da+3]=Ub.w,Oa[da+4]=Vb.x,Oa[da+5]=Vb.y,Oa[da+6]=Vb.z,Oa[da+7]=Vb.w,Oa[da+8]=Wb.x,Oa[da+9]=Wb.y,Oa[da+10]=Wb.z,Oa[da+11]=Wb.w,Xb=sc[N.a],Yb=sc[N.b],Zb=sc[N.c],Na[da]=Xb.x,Na[da+1]=Xb.y,Na[da+2]=Xb.z,Na[da+3]=Xb.w,
|
|
|
-Na[da+4]=Yb.x,Na[da+5]=Yb.y,Na[da+6]=Yb.z,Na[da+7]=Yb.w,Na[da+8]=Zb.x,Na[da+9]=Zb.y,Na[da+10]=Zb.z,Na[da+11]=Zb.w,da+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],Ub=mc[N.a],Vb=mc[N.b],Wb=mc[N.c],Cb=mc[N.d],Oa[da]=Ub.x,Oa[da+1]=Ub.y,Oa[da+2]=Ub.z,Oa[da+3]=Ub.w,Oa[da+4]=Vb.x,Oa[da+5]=Vb.y,Oa[da+6]=Vb.z,Oa[da+7]=Vb.w,Oa[da+8]=Wb.x,Oa[da+9]=Wb.y,Oa[da+10]=Wb.z,Oa[da+11]=Wb.w,Oa[da+12]=Cb.x,Oa[da+13]=Cb.y,Oa[da+14]=Cb.z,Oa[da+15]=Cb.w,Xb=sc[N.a],Yb=sc[N.b],Zb=sc[N.c],Eb=sc[N.d],Na[da]=Xb.x,Na[da+1]=Xb.y,
|
|
|
-Na[da+2]=Xb.z,Na[da+3]=Xb.w,Na[da+4]=Yb.x,Na[da+5]=Yb.y,Na[da+6]=Yb.z,Na[da+7]=Yb.w,Na[da+8]=Zb.x,Na[da+9]=Zb.y,Na[da+10]=Zb.z,Na[da+11]=Zb.w,Na[da+12]=Eb.x,Na[da+13]=Eb.y,Na[da+14]=Eb.z,Na[da+15]=Eb.w,da+=16;0<da&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,Na,sa),j.bindBuffer(j.ARRAY_BUFFER,xa.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Oa,sa))}if(bd&&Qa){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],Sa=N.vertexColors,rb=N.color,3===Sa.length&&Qa===
|
|
|
-THREE.VertexColors?(Rb=Sa[0],Sb=Sa[1],Tb=Sa[2]):Tb=Sb=Rb=rb,ib[Wa]=Rb.r,ib[Wa+1]=Rb.g,ib[Wa+2]=Rb.b,ib[Wa+3]=Sb.r,ib[Wa+4]=Sb.g,ib[Wa+5]=Sb.b,ib[Wa+6]=Tb.r,ib[Wa+7]=Tb.g,ib[Wa+8]=Tb.b,Wa+=9;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],Sa=N.vertexColors,rb=N.color,4===Sa.length&&Qa===THREE.VertexColors?(Rb=Sa[0],Sb=Sa[1],Tb=Sa[2],Ab=Sa[3]):Ab=Tb=Sb=Rb=rb,ib[Wa]=Rb.r,ib[Wa+1]=Rb.g,ib[Wa+2]=Rb.b,ib[Wa+3]=Sb.r,ib[Wa+4]=Sb.g,ib[Wa+5]=Sb.b,ib[Wa+6]=Tb.r,ib[Wa+7]=Tb.g,ib[Wa+8]=Tb.b,ib[Wa+9]=Ab.r,ib[Wa+10]=Ab.g,
|
|
|
-ib[Wa+11]=Ab.b,Wa+=12;0<Wa&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,ib,sa))}if(Lc&&ub.hasTangents){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],db=N.vertexTangents,eb=db[0],fb=db[1],jb=db[2],Ma[Fa]=eb.x,Ma[Fa+1]=eb.y,Ma[Fa+2]=eb.z,Ma[Fa+3]=eb.w,Ma[Fa+4]=fb.x,Ma[Fa+5]=fb.y,Ma[Fa+6]=fb.z,Ma[Fa+7]=fb.w,Ma[Fa+8]=jb.x,Ma[Fa+9]=jb.y,Ma[Fa+10]=jb.z,Ma[Fa+11]=jb.w,Fa+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],db=N.vertexTangents,eb=db[0],fb=db[1],jb=db[2],yb=db[3],Ma[Fa]=
|
|
|
-eb.x,Ma[Fa+1]=eb.y,Ma[Fa+2]=eb.z,Ma[Fa+3]=eb.w,Ma[Fa+4]=fb.x,Ma[Fa+5]=fb.y,Ma[Fa+6]=fb.z,Ma[Fa+7]=fb.w,Ma[Fa+8]=jb.x,Ma[Fa+9]=jb.y,Ma[Fa+10]=jb.z,Ma[Fa+11]=jb.w,Ma[Fa+12]=yb.x,Ma[Fa+13]=yb.y,Ma[Fa+14]=yb.z,Ma[Fa+15]=yb.w,Fa+=16;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,Ma,sa)}if(Kc&&Ua){D=0;for(Y=ya.length;D<Y;D++)if(N=nb[ya[D]],ab=N.vertexNormals,Ya=N.normal,3===ab.length&&Va)for(Ba=0;3>Ba;Ba++)tb=ab[Ba],Hb[mb]=tb.x,Hb[mb+1]=tb.y,Hb[mb+2]=tb.z,mb+=3;else for(Ba=
|
|
|
-0;3>Ba;Ba++)Hb[mb]=Ya.x,Hb[mb+1]=Ya.y,Hb[mb+2]=Ya.z,mb+=3;D=0;for(Y=za.length;D<Y;D++)if(N=nb[za[D]],ab=N.vertexNormals,Ya=N.normal,4===ab.length&&Va)for(Ba=0;4>Ba;Ba++)tb=ab[Ba],Hb[mb]=tb.x,Hb[mb+1]=tb.y,Hb[mb+2]=tb.z,mb+=3;else for(Ba=0;4>Ba;Ba++)Hb[mb]=Ya.x,Hb[mb+1]=Ya.y,Hb[mb+2]=Ya.z,mb+=3;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Hb,sa)}if(zc&&fd&&Xa){D=0;for(Y=ya.length;D<Y;D++)if(Ra=ya[D],ob=fd[Ra],void 0!==ob)for(Ba=0;3>Ba;Ba++)Fb=ob[Ba],Ac[fc]=Fb.x,Ac[fc+
|
|
|
-1]=Fb.y,fc+=2;D=0;for(Y=za.length;D<Y;D++)if(Ra=za[D],ob=fd[Ra],void 0!==ob)for(Ba=0;4>Ba;Ba++)Fb=ob[Ba],Ac[fc]=Fb.x,Ac[fc+1]=Fb.y,fc+=2;0<fc&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,Ac,sa))}if(zc&&gd&&Xa){D=0;for(Y=ya.length;D<Y;D++)if(Ra=ya[D],pb=gd[Ra],void 0!==pb)for(Ba=0;3>Ba;Ba++)vc=pb[Ba],Bc[gc]=vc.x,Bc[gc+1]=vc.y,gc+=2;D=0;for(Y=za.length;D<Y;D++)if(Ra=za[D],pb=gd[Ra],void 0!==pb)for(Ba=0;4>Ba;Ba++)vc=pb[Ba],Bc[gc]=vc.x,Bc[gc+1]=vc.y,gc+=2;0<gc&&(j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-xa.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Bc,sa))}if(Jc){D=0;for(Y=ya.length;D<Y;D++)$b[Gb]=Ta,$b[Gb+1]=Ta+1,$b[Gb+2]=Ta+2,Gb+=3,Db[qb]=Ta,Db[qb+1]=Ta+1,Db[qb+2]=Ta,Db[qb+3]=Ta+2,Db[qb+4]=Ta+1,Db[qb+5]=Ta+2,qb+=6,Ta+=3;D=0;for(Y=za.length;D<Y;D++)$b[Gb]=Ta,$b[Gb+1]=Ta+1,$b[Gb+2]=Ta+3,$b[Gb+3]=Ta+1,$b[Gb+4]=Ta+2,$b[Gb+5]=Ta+3,Gb+=6,Db[qb]=Ta,Db[qb+1]=Ta+1,Db[qb+2]=Ta,Db[qb+3]=Ta+3,Db[qb+4]=Ta+1,Db[qb+5]=Ta+2,Db[qb+6]=Ta+2,Db[qb+7]=Ta+3,qb+=8,Ta+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,xa.__webglFaceBuffer);
|
|
|
-j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,sa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,xa.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Db,sa)}if(ed){Ba=0;for(Nb=ed.length;Ba<Nb;Ba++)if(u=ed[Ba],u.__original.needsUpdate){y=0;if(1===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],u.array[y]=u.value[N.a],u.array[y+1]=u.value[N.b],u.array[y+2]=u.value[N.c],y+=3;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],u.array[y]=u.value[N.a],u.array[y+1]=u.value[N.b],u.array[y+
|
|
|
-2]=u.value[N.c],u.array[y+3]=u.value[N.d],y+=4}else{if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],u.array[y]=Ca,u.array[y+1]=Ca,u.array[y+2]=Ca,y+=3;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],u.array[y]=Ca,u.array[y+1]=Ca,u.array[y+2]=Ca,u.array[y+3]=Ca,y+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,
|
|
|
-u.array[y+4]=U.x,u.array[y+5]=U.y,y+=6;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,u.array[y+6]=ua.x,u.array[y+7]=ua.y,y+=8}else{if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=u.value[ya[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,y+=6;D=0;for(Y=za.length;D<Y;D++)ua=U=T=
|
|
|
-S=Ca=u.value[za[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,u.array[y+6]=ua.x,u.array[y+7]=ua.y,y+=8}}else if(3===u.size){var ca;ca="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+
|
|
|
-6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=ua[ca[1]],u.array[y+11]=ua[ca[2]],y+=12}else if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=
|
|
|
-u.value[ya[D]],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)ua=U=T=S=Ca=u.value[za[D]],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=
|
|
|
-ua[ca[1]],u.array[y+11]=ua[ca[2]],y+=12}else if("faceVertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],S=Ca[0],T=Ca[1],U=Ca[2],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],S=Ca[0],T=Ca[1],U=Ca[2],ua=Ca[3],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=
|
|
|
-T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=ua[ca[1]],u.array[y+11]=ua[ca[2]],y+=12}}else if(4===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+
|
|
|
-9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+15]=ua.w,y+=16}else if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=
|
|
|
-u.value[ya[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)ua=U=T=S=Ca=u.value[za[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,
|
|
|
-u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+15]=ua.w,y+=16}else if("faceVertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],S=Ca[0],T=Ca[1],U=Ca[2],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],S=Ca[0],T=Ca[1],U=Ca[2],ua=Ca[3],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=
|
|
|
-S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+15]=ua.w,y+=16}j.bindBuffer(j.ARRAY_BUFFER,u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,sa)}}$a&&(delete xa.__inittedArrays,delete xa.__colorArray,delete xa.__normalArray,delete xa.__tangentArray,delete xa.__uvArray,delete xa.__uv2Array,delete xa.__faceArray,delete xa.__vertexArray,
|
|
|
-delete xa.__lineArray,delete xa.__skinIndexArray,delete xa.__skinWeightArray)}}V.verticesNeedUpdate=!1;V.morphTargetsNeedUpdate=!1;V.elementsNeedUpdate=!1;V.uvsNeedUpdate=!1;V.normalsNeedUpdate=!1;V.colorsNeedUpdate=!1;V.tangentsNeedUpdate=!1;V.buffersNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof THREE.Ribbon){na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.normalsNeedUpdate||ra){var Ib=V,Nc=j.DYNAMIC_DRAW,Cc=void 0,Dc=void 0,Ec=void 0,Oc=void 0,Da=void 0,
|
|
|
-Pc=void 0,Qc=void 0,Rc=void 0,md=void 0,kb=void 0,wc=void 0,Ja=void 0,vb=void 0,nd=Ib.vertices,od=Ib.colors,pd=Ib.normals,dd=nd.length,yd=od.length,zd=pd.length,Sc=Ib.__vertexArray,Tc=Ib.__colorArray,Uc=Ib.__normalArray,Ad=Ib.colorsNeedUpdate,Bd=Ib.normalsNeedUpdate,hd=Ib.__webglCustomAttributesList;if(Ib.verticesNeedUpdate){for(Cc=0;Cc<dd;Cc++)Oc=nd[Cc],Da=3*Cc,Sc[Da]=Oc.x,Sc[Da+1]=Oc.y,Sc[Da+2]=Oc.z;j.bindBuffer(j.ARRAY_BUFFER,Ib.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Sc,Nc)}if(Ad){for(Dc=
|
|
|
-0;Dc<yd;Dc++)Pc=od[Dc],Da=3*Dc,Tc[Da]=Pc.r,Tc[Da+1]=Pc.g,Tc[Da+2]=Pc.b;j.bindBuffer(j.ARRAY_BUFFER,Ib.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Tc,Nc)}if(Bd){for(Ec=0;Ec<zd;Ec++)Qc=pd[Ec],Da=3*Ec,Uc[Da]=Qc.x,Uc[Da+1]=Qc.y,Uc[Da+2]=Qc.z;j.bindBuffer(j.ARRAY_BUFFER,Ib.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Uc,Nc)}if(hd){Rc=0;for(md=hd.length;Rc<md;Rc++)if(Ja=hd[Rc],Ja.needsUpdate&&(void 0===Ja.boundTo||"vertices"===Ja.boundTo)){Da=0;wc=Ja.value.length;if(1===Ja.size)for(kb=0;kb<wc;kb++)Ja.array[kb]=
|
|
|
-Ja.value[kb];else if(2===Ja.size)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.x,Ja.array[Da+1]=vb.y,Da+=2;else if(3===Ja.size)if("c"===Ja.type)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.r,Ja.array[Da+1]=vb.g,Ja.array[Da+2]=vb.b,Da+=3;else for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.x,Ja.array[Da+1]=vb.y,Ja.array[Da+2]=vb.z,Da+=3;else if(4===Ja.size)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.x,Ja.array[Da+1]=vb.y,Ja.array[Da+2]=vb.z,Ja.array[Da+3]=vb.w,Da+=4;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-Ja.buffer);j.bufferData(j.ARRAY_BUFFER,Ja.array,Nc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.normalsNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof THREE.Line){na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.lineDistancesNeedUpdate||ra){var Jb=V,Vc=j.DYNAMIC_DRAW,Fc=void 0,Gc=void 0,Hc=void 0,Wc=void 0,Pa=void 0,Xc=void 0,qd=Jb.vertices,rd=Jb.colors,sd=Jb.lineDistances,Cd=qd.length,Dd=rd.length,Ed=sd.length,Yc=Jb.__vertexArray,Zc=Jb.__colorArray,
|
|
|
-td=Jb.__lineDistanceArray,Fd=Jb.colorsNeedUpdate,Gd=Jb.lineDistancesNeedUpdate,id=Jb.__webglCustomAttributesList,$c=void 0,ud=void 0,lb=void 0,xc=void 0,wb=void 0,Ka=void 0;if(Jb.verticesNeedUpdate){for(Fc=0;Fc<Cd;Fc++)Wc=qd[Fc],Pa=3*Fc,Yc[Pa]=Wc.x,Yc[Pa+1]=Wc.y,Yc[Pa+2]=Wc.z;j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Yc,Vc)}if(Fd){for(Gc=0;Gc<Dd;Gc++)Xc=rd[Gc],Pa=3*Gc,Zc[Pa]=Xc.r,Zc[Pa+1]=Xc.g,Zc[Pa+2]=Xc.b;j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-Zc,Vc)}if(Gd){for(Hc=0;Hc<Ed;Hc++)td[Hc]=sd[Hc];j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglLineDistanceBuffer);j.bufferData(j.ARRAY_BUFFER,td,Vc)}if(id){$c=0;for(ud=id.length;$c<ud;$c++)if(Ka=id[$c],Ka.needsUpdate&&(void 0===Ka.boundTo||"vertices"===Ka.boundTo)){Pa=0;xc=Ka.value.length;if(1===Ka.size)for(lb=0;lb<xc;lb++)Ka.array[lb]=Ka.value[lb];else if(2===Ka.size)for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Pa+=2;else if(3===Ka.size)if("c"===Ka.type)for(lb=0;lb<xc;lb++)wb=
|
|
|
-Ka.value[lb],Ka.array[Pa]=wb.r,Ka.array[Pa+1]=wb.g,Ka.array[Pa+2]=wb.b,Pa+=3;else for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Ka.array[Pa+2]=wb.z,Pa+=3;else if(4===Ka.size)for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Ka.array[Pa+2]=wb.z,Ka.array[Pa+3]=wb.w,Pa+=4;j.bindBuffer(j.ARRAY_BUFFER,Ka.buffer);j.bufferData(j.ARRAY_BUFFER,Ka.array,Vc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.lineDistancesNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof
|
|
|
-THREE.ParticleSystem)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||V.colorsNeedUpdate)&&i(V,j.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1;else{na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||la.sortParticles||ra){var ac=V,jd=j.DYNAMIC_DRAW,Ic=la,xb=void 0,bc=void 0,cc=void 0,ia=void 0,dc=void 0,oc=void 0,ad=ac.vertices,kd=ad.length,ld=ac.colors,vd=ld.length,tc=ac.__vertexArray,uc=ac.__colorArray,hc=ac.__sortArray,wd=ac.verticesNeedUpdate,
|
|
|
-xd=ac.colorsNeedUpdate,ic=ac.__webglCustomAttributesList,Lb=void 0,yc=void 0,ta=void 0,Mb=void 0,Ga=void 0,ha=void 0;if(Ic.sortParticles){sb.copy(jc);sb.multiplySelf(Ic.matrixWorld);for(xb=0;xb<kd;xb++)cc=ad[xb],Kb.copy(cc),Kb.applyMatrix4(sb),hc[xb]=[Kb.z,xb];hc.sort(l);for(xb=0;xb<kd;xb++)cc=ad[hc[xb][1]],ia=3*xb,tc[ia]=cc.x,tc[ia+1]=cc.y,tc[ia+2]=cc.z;for(bc=0;bc<vd;bc++)ia=3*bc,oc=ld[hc[bc][1]],uc[ia]=oc.r,uc[ia+1]=oc.g,uc[ia+2]=oc.b;if(ic){Lb=0;for(yc=ic.length;Lb<yc;Lb++)if(ha=ic[Lb],void 0===
|
|
|
-ha.boundTo||"vertices"===ha.boundTo)if(ia=0,Mb=ha.value.length,1===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],ha.array[ta]=ha.value[dc];else if(2===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ia+=2;else if(3===ha.size)if("c"===ha.type)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.r,ha.array[ia+1]=Ga.g,ha.array[ia+2]=Ga.b,ia+=3;else for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+
|
|
|
-2]=Ga.z,ia+=3;else if(4===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ha.array[ia+3]=Ga.w,ia+=4}}else{if(wd)for(xb=0;xb<kd;xb++)cc=ad[xb],ia=3*xb,tc[ia]=cc.x,tc[ia+1]=cc.y,tc[ia+2]=cc.z;if(xd)for(bc=0;bc<vd;bc++)oc=ld[bc],ia=3*bc,uc[ia]=oc.r,uc[ia+1]=oc.g,uc[ia+2]=oc.b;if(ic){Lb=0;for(yc=ic.length;Lb<yc;Lb++)if(ha=ic[Lb],ha.needsUpdate&&(void 0===ha.boundTo||"vertices"===ha.boundTo))if(Mb=ha.value.length,ia=0,1===ha.size)for(ta=
|
|
|
-0;ta<Mb;ta++)ha.array[ta]=ha.value[ta];else if(2===ha.size)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ia+=2;else if(3===ha.size)if("c"===ha.type)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.r,ha.array[ia+1]=Ga.g,ha.array[ia+2]=Ga.b,ia+=3;else for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ia+=3;else if(4===ha.size)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ha.array[ia+
|
|
|
-3]=Ga.w,ia+=4}}if(wd||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,tc,jd);if(xd||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,uc,jd);if(ic){Lb=0;for(yc=ic.length;Lb<yc;Lb++)if(ha=ic[Lb],ha.needsUpdate||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ha.buffer),j.bufferData(j.ARRAY_BUFFER,ha.array,jd)}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;na.attributes&&x(na)}}};this.initMaterial=function(a,
|
|
|
-b,c,d){var e,f,g,h;a.addEventListener("dispose",Ya);var i,k,l,n,m;a instanceof THREE.MeshDepthMaterial?m="depth":a instanceof THREE.MeshNormalMaterial?m="normal":a instanceof THREE.MeshBasicMaterial?m="basic":a instanceof THREE.MeshLambertMaterial?m="lambert":a instanceof THREE.MeshPhongMaterial?m="phong":a instanceof THREE.LineBasicMaterial?m="basic":a instanceof THREE.LineDashedMaterial?m="dashed":a instanceof THREE.ParticleBasicMaterial&&(m="particle_basic");if(m){var p=THREE.ShaderLib[m];a.uniforms=
|
|
|
-THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;h=p;p=q=0;for(r=b.length;p<r;p++)s=b[p],s.castShadow&&(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;ob&&d&&d.useVertexTexture?
|
|
|
-l=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),l=b);a:{s=a.fragmentShader;r=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,
|
|
|
-vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:ob&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&
|
|
|
-d.receiveShadow,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,w,d=[];m?d.push(m):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);for(t in c)d.push(t),d.push(c[t]);m=d.join();t=0;for(v=W.length;t<v;t++)if(d=W[t],d.code===m){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";
|
|
|
-c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");v=[];for(w in q)d=q[w],!1!==d&&(d="#define "+w+" "+d,v.push(d));d=v.join("\n");w=j.createProgram();v=["precision "+M+" float;",d,qc?"#define VERTEX_TEXTURES":"",O.gammaInput?"#define GAMMA_INPUT":"",O.gammaOutput?"#define GAMMA_OUTPUT":"",O.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+
|
|
|
-c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":
|
|
|
-"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?
|
|
|
-"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\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;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+[];Z.__webglParticleCount=ga;c(Z,ma);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,n instanceof THREE.BufferGeometry)r(k.__webglObjects,n,b);else{if(n instanceof THREE.Geometry)for(m in n.geometryGroups)q=n.geometryGroups[m],r(k.__webglObjects,q,b)}else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(n=b.geometry,r(k.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||
|
|
|
+b.immediateRenderCallback?k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var ba=a.__objectsRemoved[0],oa=a;ba instanceof THREE.Mesh||ba instanceof THREE.ParticleSystem||ba instanceof THREE.Ribbon||ba instanceof THREE.Line?w(oa.__webglObjects,ba):ba instanceof THREE.Sprite?t(oa.__webglSprites,
|
|
|
+ba):ba instanceof THREE.LensFlare?t(oa.__webglFlares,ba):(ba instanceof THREE.ImmediateRenderObject||ba.immediateRenderCallback)&&w(oa.__webglObjectsImmediate,ba);ba.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var qa=0,Ea=a.__webglObjects.length;qa<Ea;qa++){var la=a.__webglObjects[qa].object,V=la.geometry,wa=void 0,ra=void 0,na=void 0;if(la instanceof THREE.Mesh)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||
|
|
|
+V.tangentsNeedUpdate)&&i(V,j.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.elementsNeedUpdate=!1,V.uvsNeedUpdate=!1,V.normalsNeedUpdate=!1,V.colorsNeedUpdate=!1,V.tangentsNeedUpdate=!1;else{for(var Aa=0,La=V.geometryGroupsList.length;Aa<La;Aa++)if(wa=V.geometryGroupsList[Aa],na=e(la,wa),V.buffersNeedUpdate&&d(wa,la),ra=na.attributes&&v(na),V.verticesNeedUpdate||V.morphTargetsNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate||ra){var xa=
|
|
|
+wa,Ia=la,sa=j.DYNAMIC_DRAW,$a=!V.dynamic,Ha=na;if(xa.__inittedArrays){var Ua=f(Ha),Qa=Ha.vertexColors?Ha.vertexColors:!1,Xa=g(Ha),Va=Ua===THREE.SmoothShading,D=void 0,Y=void 0,Ra=void 0,N=void 0,ab=void 0,Ya=void 0,Sa=void 0,rb=void 0,db=void 0,ob=void 0,pb=void 0,S=void 0,T=void 0,U=void 0,ua=void 0,eb=void 0,fb=void 0,jb=void 0,yb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,zb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,Ab=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Cb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Eb=void 0,
|
|
|
+Ba=void 0,Nb=void 0,tb=void 0,Fb=void 0,vc=void 0,gb=void 0,kc=void 0,bb=void 0,cb=void 0,lc=void 0,ec=void 0,Ta=0,Za=0,fc=0,gc=0,Gb=0,mb=0,Fa=0,qb=0,Wa=0,da=0,pa=0,y=0,Ca=void 0,hb=xa.__vertexArray,Ac=xa.__uvArray,Bc=xa.__uv2Array,Hb=xa.__normalArray,Ma=xa.__tangentArray,ib=xa.__colorArray,Na=xa.__skinIndexArray,Oa=xa.__skinWeightArray,pc=xa.__morphTargetsArrays,qc=xa.__morphNormalsArrays,ed=xa.__webglCustomAttributesList,u=void 0,$b=xa.__faceArray,Db=xa.__lineArray,ub=Ia.geometry,Jc=ub.elementsNeedUpdate,
|
|
|
+zc=ub.uvsNeedUpdate,Kc=ub.normalsNeedUpdate,Lc=ub.tangentsNeedUpdate,bd=ub.colorsNeedUpdate,cd=ub.morphTargetsNeedUpdate,rc=ub.vertices,ya=xa.faces3,za=xa.faces4,nb=ub.faces,fd=ub.faceVertexUvs[0],gd=ub.faceVertexUvs[1],sc=ub.skinIndices,mc=ub.skinWeights,nc=ub.morphTargets,Mc=ub.morphNormals;if(ub.verticesNeedUpdate){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=rc[N.a],T=rc[N.b],U=rc[N.c],hb[Za]=S.x,hb[Za+1]=S.y,hb[Za+2]=S.z,hb[Za+3]=T.x,hb[Za+4]=T.y,hb[Za+5]=T.z,hb[Za+6]=U.x,hb[Za+7]=U.y,hb[Za+8]=
|
|
|
+U.z,Za+=9;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=rc[N.a],T=rc[N.b],U=rc[N.c],ua=rc[N.d],hb[Za]=S.x,hb[Za+1]=S.y,hb[Za+2]=S.z,hb[Za+3]=T.x,hb[Za+4]=T.y,hb[Za+5]=T.z,hb[Za+6]=U.x,hb[Za+7]=U.y,hb[Za+8]=U.z,hb[Za+9]=ua.x,hb[Za+10]=ua.y,hb[Za+11]=ua.z,Za+=12;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,hb,sa)}if(cd){gb=0;for(kc=nc.length;gb<kc;gb++){D=pa=0;for(Y=ya.length;D<Y;D++)lc=ya[D],N=nb[lc],S=nc[gb].vertices[N.a],T=nc[gb].vertices[N.b],U=nc[gb].vertices[N.c],
|
|
|
+bb=pc[gb],bb[pa]=S.x,bb[pa+1]=S.y,bb[pa+2]=S.z,bb[pa+3]=T.x,bb[pa+4]=T.y,bb[pa+5]=T.z,bb[pa+6]=U.x,bb[pa+7]=U.y,bb[pa+8]=U.z,Ha.morphNormals&&(Va?(ec=Mc[gb].vertexNormals[lc],Ob=ec.a,Pb=ec.b,Qb=ec.c):Qb=Pb=Ob=Mc[gb].faceNormals[lc],cb=qc[gb],cb[pa]=Ob.x,cb[pa+1]=Ob.y,cb[pa+2]=Ob.z,cb[pa+3]=Pb.x,cb[pa+4]=Pb.y,cb[pa+5]=Pb.z,cb[pa+6]=Qb.x,cb[pa+7]=Qb.y,cb[pa+8]=Qb.z),pa+=9;D=0;for(Y=za.length;D<Y;D++)lc=za[D],N=nb[lc],S=nc[gb].vertices[N.a],T=nc[gb].vertices[N.b],U=nc[gb].vertices[N.c],ua=nc[gb].vertices[N.d],
|
|
|
+bb=pc[gb],bb[pa]=S.x,bb[pa+1]=S.y,bb[pa+2]=S.z,bb[pa+3]=T.x,bb[pa+4]=T.y,bb[pa+5]=T.z,bb[pa+6]=U.x,bb[pa+7]=U.y,bb[pa+8]=U.z,bb[pa+9]=ua.x,bb[pa+10]=ua.y,bb[pa+11]=ua.z,Ha.morphNormals&&(Va?(ec=Mc[gb].vertexNormals[lc],Ob=ec.a,Pb=ec.b,Qb=ec.c,zb=ec.d):zb=Qb=Pb=Ob=Mc[gb].faceNormals[lc],cb=qc[gb],cb[pa]=Ob.x,cb[pa+1]=Ob.y,cb[pa+2]=Ob.z,cb[pa+3]=Pb.x,cb[pa+4]=Pb.y,cb[pa+5]=Pb.z,cb[pa+6]=Qb.x,cb[pa+7]=Qb.y,cb[pa+8]=Qb.z,cb[pa+9]=zb.x,cb[pa+10]=zb.y,cb[pa+11]=zb.z),pa+=12;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+xa.__webglMorphTargetsBuffers[gb]);j.bufferData(j.ARRAY_BUFFER,pc[gb],sa);Ha.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglMorphNormalsBuffers[gb]),j.bufferData(j.ARRAY_BUFFER,qc[gb],sa))}}if(mc.length){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],Ub=mc[N.a],Vb=mc[N.b],Wb=mc[N.c],Oa[da]=Ub.x,Oa[da+1]=Ub.y,Oa[da+2]=Ub.z,Oa[da+3]=Ub.w,Oa[da+4]=Vb.x,Oa[da+5]=Vb.y,Oa[da+6]=Vb.z,Oa[da+7]=Vb.w,Oa[da+8]=Wb.x,Oa[da+9]=Wb.y,Oa[da+10]=Wb.z,Oa[da+11]=Wb.w,Xb=sc[N.a],Yb=sc[N.b],Zb=sc[N.c],Na[da]=Xb.x,Na[da+
|
|
|
+1]=Xb.y,Na[da+2]=Xb.z,Na[da+3]=Xb.w,Na[da+4]=Yb.x,Na[da+5]=Yb.y,Na[da+6]=Yb.z,Na[da+7]=Yb.w,Na[da+8]=Zb.x,Na[da+9]=Zb.y,Na[da+10]=Zb.z,Na[da+11]=Zb.w,da+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],Ub=mc[N.a],Vb=mc[N.b],Wb=mc[N.c],Cb=mc[N.d],Oa[da]=Ub.x,Oa[da+1]=Ub.y,Oa[da+2]=Ub.z,Oa[da+3]=Ub.w,Oa[da+4]=Vb.x,Oa[da+5]=Vb.y,Oa[da+6]=Vb.z,Oa[da+7]=Vb.w,Oa[da+8]=Wb.x,Oa[da+9]=Wb.y,Oa[da+10]=Wb.z,Oa[da+11]=Wb.w,Oa[da+12]=Cb.x,Oa[da+13]=Cb.y,Oa[da+14]=Cb.z,Oa[da+15]=Cb.w,Xb=sc[N.a],Yb=sc[N.b],Zb=sc[N.c],
|
|
|
+Eb=sc[N.d],Na[da]=Xb.x,Na[da+1]=Xb.y,Na[da+2]=Xb.z,Na[da+3]=Xb.w,Na[da+4]=Yb.x,Na[da+5]=Yb.y,Na[da+6]=Yb.z,Na[da+7]=Yb.w,Na[da+8]=Zb.x,Na[da+9]=Zb.y,Na[da+10]=Zb.z,Na[da+11]=Zb.w,Na[da+12]=Eb.x,Na[da+13]=Eb.y,Na[da+14]=Eb.z,Na[da+15]=Eb.w,da+=16;0<da&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,Na,sa),j.bindBuffer(j.ARRAY_BUFFER,xa.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Oa,sa))}if(bd&&Qa){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],Sa=N.vertexColors,
|
|
|
+rb=N.color,3===Sa.length&&Qa===THREE.VertexColors?(Rb=Sa[0],Sb=Sa[1],Tb=Sa[2]):Tb=Sb=Rb=rb,ib[Wa]=Rb.r,ib[Wa+1]=Rb.g,ib[Wa+2]=Rb.b,ib[Wa+3]=Sb.r,ib[Wa+4]=Sb.g,ib[Wa+5]=Sb.b,ib[Wa+6]=Tb.r,ib[Wa+7]=Tb.g,ib[Wa+8]=Tb.b,Wa+=9;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],Sa=N.vertexColors,rb=N.color,4===Sa.length&&Qa===THREE.VertexColors?(Rb=Sa[0],Sb=Sa[1],Tb=Sa[2],Ab=Sa[3]):Ab=Tb=Sb=Rb=rb,ib[Wa]=Rb.r,ib[Wa+1]=Rb.g,ib[Wa+2]=Rb.b,ib[Wa+3]=Sb.r,ib[Wa+4]=Sb.g,ib[Wa+5]=Sb.b,ib[Wa+6]=Tb.r,ib[Wa+7]=Tb.g,ib[Wa+8]=
|
|
|
+Tb.b,ib[Wa+9]=Ab.r,ib[Wa+10]=Ab.g,ib[Wa+11]=Ab.b,Wa+=12;0<Wa&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,ib,sa))}if(Lc&&ub.hasTangents){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],db=N.vertexTangents,eb=db[0],fb=db[1],jb=db[2],Ma[Fa]=eb.x,Ma[Fa+1]=eb.y,Ma[Fa+2]=eb.z,Ma[Fa+3]=eb.w,Ma[Fa+4]=fb.x,Ma[Fa+5]=fb.y,Ma[Fa+6]=fb.z,Ma[Fa+7]=fb.w,Ma[Fa+8]=jb.x,Ma[Fa+9]=jb.y,Ma[Fa+10]=jb.z,Ma[Fa+11]=jb.w,Fa+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],db=N.vertexTangents,eb=db[0],
|
|
|
+fb=db[1],jb=db[2],yb=db[3],Ma[Fa]=eb.x,Ma[Fa+1]=eb.y,Ma[Fa+2]=eb.z,Ma[Fa+3]=eb.w,Ma[Fa+4]=fb.x,Ma[Fa+5]=fb.y,Ma[Fa+6]=fb.z,Ma[Fa+7]=fb.w,Ma[Fa+8]=jb.x,Ma[Fa+9]=jb.y,Ma[Fa+10]=jb.z,Ma[Fa+11]=jb.w,Ma[Fa+12]=yb.x,Ma[Fa+13]=yb.y,Ma[Fa+14]=yb.z,Ma[Fa+15]=yb.w,Fa+=16;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,Ma,sa)}if(Kc&&Ua){D=0;for(Y=ya.length;D<Y;D++)if(N=nb[ya[D]],ab=N.vertexNormals,Ya=N.normal,3===ab.length&&Va)for(Ba=0;3>Ba;Ba++)tb=ab[Ba],Hb[mb]=tb.x,Hb[mb+1]=
|
|
|
+tb.y,Hb[mb+2]=tb.z,mb+=3;else for(Ba=0;3>Ba;Ba++)Hb[mb]=Ya.x,Hb[mb+1]=Ya.y,Hb[mb+2]=Ya.z,mb+=3;D=0;for(Y=za.length;D<Y;D++)if(N=nb[za[D]],ab=N.vertexNormals,Ya=N.normal,4===ab.length&&Va)for(Ba=0;4>Ba;Ba++)tb=ab[Ba],Hb[mb]=tb.x,Hb[mb+1]=tb.y,Hb[mb+2]=tb.z,mb+=3;else for(Ba=0;4>Ba;Ba++)Hb[mb]=Ya.x,Hb[mb+1]=Ya.y,Hb[mb+2]=Ya.z,mb+=3;j.bindBuffer(j.ARRAY_BUFFER,xa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Hb,sa)}if(zc&&fd&&Xa){D=0;for(Y=ya.length;D<Y;D++)if(Ra=ya[D],ob=fd[Ra],void 0!==ob)for(Ba=
|
|
|
+0;3>Ba;Ba++)Fb=ob[Ba],Ac[fc]=Fb.x,Ac[fc+1]=Fb.y,fc+=2;D=0;for(Y=za.length;D<Y;D++)if(Ra=za[D],ob=fd[Ra],void 0!==ob)for(Ba=0;4>Ba;Ba++)Fb=ob[Ba],Ac[fc]=Fb.x,Ac[fc+1]=Fb.y,fc+=2;0<fc&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,Ac,sa))}if(zc&&gd&&Xa){D=0;for(Y=ya.length;D<Y;D++)if(Ra=ya[D],pb=gd[Ra],void 0!==pb)for(Ba=0;3>Ba;Ba++)vc=pb[Ba],Bc[gc]=vc.x,Bc[gc+1]=vc.y,gc+=2;D=0;for(Y=za.length;D<Y;D++)if(Ra=za[D],pb=gd[Ra],void 0!==pb)for(Ba=0;4>Ba;Ba++)vc=pb[Ba],Bc[gc]=
|
|
|
+vc.x,Bc[gc+1]=vc.y,gc+=2;0<gc&&(j.bindBuffer(j.ARRAY_BUFFER,xa.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Bc,sa))}if(Jc){D=0;for(Y=ya.length;D<Y;D++)$b[Gb]=Ta,$b[Gb+1]=Ta+1,$b[Gb+2]=Ta+2,Gb+=3,Db[qb]=Ta,Db[qb+1]=Ta+1,Db[qb+2]=Ta,Db[qb+3]=Ta+2,Db[qb+4]=Ta+1,Db[qb+5]=Ta+2,qb+=6,Ta+=3;D=0;for(Y=za.length;D<Y;D++)$b[Gb]=Ta,$b[Gb+1]=Ta+1,$b[Gb+2]=Ta+3,$b[Gb+3]=Ta+1,$b[Gb+4]=Ta+2,$b[Gb+5]=Ta+3,Gb+=6,Db[qb]=Ta,Db[qb+1]=Ta+1,Db[qb+2]=Ta,Db[qb+3]=Ta+3,Db[qb+4]=Ta+1,Db[qb+5]=Ta+2,Db[qb+6]=Ta+2,Db[qb+7]=
|
|
|
+Ta+3,qb+=8,Ta+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,xa.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,sa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,xa.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Db,sa)}if(ed){Ba=0;for(Nb=ed.length;Ba<Nb;Ba++)if(u=ed[Ba],u.__original.needsUpdate){y=0;if(1===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],u.array[y]=u.value[N.a],u.array[y+1]=u.value[N.b],u.array[y+2]=u.value[N.c],y+=3;D=0;for(Y=za.length;D<
|
|
|
+Y;D++)N=nb[za[D]],u.array[y]=u.value[N.a],u.array[y+1]=u.value[N.b],u.array[y+2]=u.value[N.c],u.array[y+3]=u.value[N.d],y+=4}else{if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],u.array[y]=Ca,u.array[y+1]=Ca,u.array[y+2]=Ca,y+=3;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],u.array[y]=Ca,u.array[y+1]=Ca,u.array[y+2]=Ca,u.array[y+3]=Ca,y+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],
|
|
|
+U=u.value[N.c],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,y+=6;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,u.array[y+6]=ua.x,u.array[y+7]=ua.y,y+=8}else{if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=u.value[ya[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+
|
|
|
+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,y+=6;D=0;for(Y=za.length;D<Y;D++)ua=U=T=S=Ca=u.value[za[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=T.x,u.array[y+3]=T.y,u.array[y+4]=U.x,u.array[y+5]=U.y,u.array[y+6]=ua.x,u.array[y+7]=ua.y,y+=8}}else if(3===u.size){var ca;ca="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=
|
|
|
+S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=ua[ca[1]],u.array[y+11]=
|
|
|
+ua[ca[2]],y+=12}else if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=u.value[ya[D]],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)ua=U=T=S=Ca=u.value[za[D]],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],
|
|
|
+u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=ua[ca[1]],u.array[y+11]=ua[ca[2]],y+=12}else if("faceVertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],S=Ca[0],T=Ca[1],U=Ca[2],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],y+=9;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],S=Ca[0],T=Ca[1],U=Ca[2],ua=
|
|
|
+Ca[3],u.array[y]=S[ca[0]],u.array[y+1]=S[ca[1]],u.array[y+2]=S[ca[2]],u.array[y+3]=T[ca[0]],u.array[y+4]=T[ca[1]],u.array[y+5]=T[ca[2]],u.array[y+6]=U[ca[0]],u.array[y+7]=U[ca[1]],u.array[y+8]=U[ca[2]],u.array[y+9]=ua[ca[0]],u.array[y+10]=ua[ca[1]],u.array[y+11]=ua[ca[2]],y+=12}}else if(4===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)N=nb[ya[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+
|
|
|
+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)N=nb[za[D]],S=u.value[N.a],T=u.value[N.b],U=u.value[N.c],ua=u.value[N.d],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+
|
|
|
+15]=ua.w,y+=16}else if("faces"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)U=T=S=Ca=u.value[ya[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)ua=U=T=S=Ca=u.value[za[D]],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+
|
|
|
+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+15]=ua.w,y+=16}else if("faceVertices"===u.boundTo){D=0;for(Y=ya.length;D<Y;D++)Ca=u.value[ya[D]],S=Ca[0],T=Ca[1],U=Ca[2],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,y+=12;D=0;for(Y=za.length;D<Y;D++)Ca=u.value[za[D]],
|
|
|
+S=Ca[0],T=Ca[1],U=Ca[2],ua=Ca[3],u.array[y]=S.x,u.array[y+1]=S.y,u.array[y+2]=S.z,u.array[y+3]=S.w,u.array[y+4]=T.x,u.array[y+5]=T.y,u.array[y+6]=T.z,u.array[y+7]=T.w,u.array[y+8]=U.x,u.array[y+9]=U.y,u.array[y+10]=U.z,u.array[y+11]=U.w,u.array[y+12]=ua.x,u.array[y+13]=ua.y,u.array[y+14]=ua.z,u.array[y+15]=ua.w,y+=16}j.bindBuffer(j.ARRAY_BUFFER,u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,sa)}}$a&&(delete xa.__inittedArrays,delete xa.__colorArray,delete xa.__normalArray,delete xa.__tangentArray,
|
|
|
+delete xa.__uvArray,delete xa.__uv2Array,delete xa.__faceArray,delete xa.__vertexArray,delete xa.__lineArray,delete xa.__skinIndexArray,delete xa.__skinWeightArray)}}V.verticesNeedUpdate=!1;V.morphTargetsNeedUpdate=!1;V.elementsNeedUpdate=!1;V.uvsNeedUpdate=!1;V.normalsNeedUpdate=!1;V.colorsNeedUpdate=!1;V.tangentsNeedUpdate=!1;V.buffersNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof THREE.Ribbon){na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.normalsNeedUpdate||
|
|
|
+ra){var Ib=V,Nc=j.DYNAMIC_DRAW,Cc=void 0,Dc=void 0,Ec=void 0,Oc=void 0,Da=void 0,Pc=void 0,Qc=void 0,Rc=void 0,md=void 0,kb=void 0,wc=void 0,Ja=void 0,vb=void 0,nd=Ib.vertices,od=Ib.colors,pd=Ib.normals,dd=nd.length,yd=od.length,zd=pd.length,Sc=Ib.__vertexArray,Tc=Ib.__colorArray,Uc=Ib.__normalArray,Ad=Ib.colorsNeedUpdate,Bd=Ib.normalsNeedUpdate,hd=Ib.__webglCustomAttributesList;if(Ib.verticesNeedUpdate){for(Cc=0;Cc<dd;Cc++)Oc=nd[Cc],Da=3*Cc,Sc[Da]=Oc.x,Sc[Da+1]=Oc.y,Sc[Da+2]=Oc.z;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+Ib.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Sc,Nc)}if(Ad){for(Dc=0;Dc<yd;Dc++)Pc=od[Dc],Da=3*Dc,Tc[Da]=Pc.r,Tc[Da+1]=Pc.g,Tc[Da+2]=Pc.b;j.bindBuffer(j.ARRAY_BUFFER,Ib.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Tc,Nc)}if(Bd){for(Ec=0;Ec<zd;Ec++)Qc=pd[Ec],Da=3*Ec,Uc[Da]=Qc.x,Uc[Da+1]=Qc.y,Uc[Da+2]=Qc.z;j.bindBuffer(j.ARRAY_BUFFER,Ib.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Uc,Nc)}if(hd){Rc=0;for(md=hd.length;Rc<md;Rc++)if(Ja=hd[Rc],Ja.needsUpdate&&(void 0===Ja.boundTo||"vertices"===
|
|
|
+Ja.boundTo)){Da=0;wc=Ja.value.length;if(1===Ja.size)for(kb=0;kb<wc;kb++)Ja.array[kb]=Ja.value[kb];else if(2===Ja.size)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.x,Ja.array[Da+1]=vb.y,Da+=2;else if(3===Ja.size)if("c"===Ja.type)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.r,Ja.array[Da+1]=vb.g,Ja.array[Da+2]=vb.b,Da+=3;else for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=vb.x,Ja.array[Da+1]=vb.y,Ja.array[Da+2]=vb.z,Da+=3;else if(4===Ja.size)for(kb=0;kb<wc;kb++)vb=Ja.value[kb],Ja.array[Da]=
|
|
|
+vb.x,Ja.array[Da+1]=vb.y,Ja.array[Da+2]=vb.z,Ja.array[Da+3]=vb.w,Da+=4;j.bindBuffer(j.ARRAY_BUFFER,Ja.buffer);j.bufferData(j.ARRAY_BUFFER,Ja.array,Nc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.normalsNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof THREE.Line){na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.lineDistancesNeedUpdate||ra){var Jb=V,Vc=j.DYNAMIC_DRAW,Fc=void 0,Gc=void 0,Hc=void 0,Wc=void 0,Pa=void 0,Xc=void 0,qd=Jb.vertices,rd=Jb.colors,
|
|
|
+sd=Jb.lineDistances,Cd=qd.length,Dd=rd.length,Ed=sd.length,Yc=Jb.__vertexArray,Zc=Jb.__colorArray,td=Jb.__lineDistanceArray,Fd=Jb.colorsNeedUpdate,Gd=Jb.lineDistancesNeedUpdate,id=Jb.__webglCustomAttributesList,$c=void 0,ud=void 0,lb=void 0,xc=void 0,wb=void 0,Ka=void 0;if(Jb.verticesNeedUpdate){for(Fc=0;Fc<Cd;Fc++)Wc=qd[Fc],Pa=3*Fc,Yc[Pa]=Wc.x,Yc[Pa+1]=Wc.y,Yc[Pa+2]=Wc.z;j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Yc,Vc)}if(Fd){for(Gc=0;Gc<Dd;Gc++)Xc=rd[Gc],Pa=
|
|
|
+3*Gc,Zc[Pa]=Xc.r,Zc[Pa+1]=Xc.g,Zc[Pa+2]=Xc.b;j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Zc,Vc)}if(Gd){for(Hc=0;Hc<Ed;Hc++)td[Hc]=sd[Hc];j.bindBuffer(j.ARRAY_BUFFER,Jb.__webglLineDistanceBuffer);j.bufferData(j.ARRAY_BUFFER,td,Vc)}if(id){$c=0;for(ud=id.length;$c<ud;$c++)if(Ka=id[$c],Ka.needsUpdate&&(void 0===Ka.boundTo||"vertices"===Ka.boundTo)){Pa=0;xc=Ka.value.length;if(1===Ka.size)for(lb=0;lb<xc;lb++)Ka.array[lb]=Ka.value[lb];else if(2===Ka.size)for(lb=0;lb<xc;lb++)wb=
|
|
|
+Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Pa+=2;else if(3===Ka.size)if("c"===Ka.type)for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.r,Ka.array[Pa+1]=wb.g,Ka.array[Pa+2]=wb.b,Pa+=3;else for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Ka.array[Pa+2]=wb.z,Pa+=3;else if(4===Ka.size)for(lb=0;lb<xc;lb++)wb=Ka.value[lb],Ka.array[Pa]=wb.x,Ka.array[Pa+1]=wb.y,Ka.array[Pa+2]=wb.z,Ka.array[Pa+3]=wb.w,Pa+=4;j.bindBuffer(j.ARRAY_BUFFER,Ka.buffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
+Ka.array,Vc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.lineDistancesNeedUpdate=!1;na.attributes&&x(na)}else if(la instanceof THREE.ParticleSystem)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||V.colorsNeedUpdate)&&i(V,j.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1;else{na=e(la,V);ra=na.attributes&&v(na);if(V.verticesNeedUpdate||V.colorsNeedUpdate||la.sortParticles||ra){var ac=V,jd=j.DYNAMIC_DRAW,Ic=la,xb=void 0,bc=void 0,cc=void 0,ia=void 0,dc=void 0,
|
|
|
+oc=void 0,ad=ac.vertices,kd=ad.length,ld=ac.colors,vd=ld.length,tc=ac.__vertexArray,uc=ac.__colorArray,hc=ac.__sortArray,wd=ac.verticesNeedUpdate,xd=ac.colorsNeedUpdate,ic=ac.__webglCustomAttributesList,Lb=void 0,yc=void 0,ta=void 0,Mb=void 0,Ga=void 0,ha=void 0;if(Ic.sortParticles){sb.copy(jc);sb.multiplySelf(Ic.matrixWorld);for(xb=0;xb<kd;xb++)cc=ad[xb],Kb.copy(cc),Kb.applyMatrix4(sb),hc[xb]=[Kb.z,xb];hc.sort(l);for(xb=0;xb<kd;xb++)cc=ad[hc[xb][1]],ia=3*xb,tc[ia]=cc.x,tc[ia+1]=cc.y,tc[ia+2]=cc.z;
|
|
|
+for(bc=0;bc<vd;bc++)ia=3*bc,oc=ld[hc[bc][1]],uc[ia]=oc.r,uc[ia+1]=oc.g,uc[ia+2]=oc.b;if(ic){Lb=0;for(yc=ic.length;Lb<yc;Lb++)if(ha=ic[Lb],void 0===ha.boundTo||"vertices"===ha.boundTo)if(ia=0,Mb=ha.value.length,1===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],ha.array[ta]=ha.value[dc];else if(2===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ia+=2;else if(3===ha.size)if("c"===ha.type)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.r,ha.array[ia+
|
|
|
+1]=Ga.g,ha.array[ia+2]=Ga.b,ia+=3;else for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ia+=3;else if(4===ha.size)for(ta=0;ta<Mb;ta++)dc=hc[ta][1],Ga=ha.value[dc],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ha.array[ia+3]=Ga.w,ia+=4}}else{if(wd)for(xb=0;xb<kd;xb++)cc=ad[xb],ia=3*xb,tc[ia]=cc.x,tc[ia+1]=cc.y,tc[ia+2]=cc.z;if(xd)for(bc=0;bc<vd;bc++)oc=ld[bc],ia=3*bc,uc[ia]=oc.r,uc[ia+1]=oc.g,uc[ia+2]=oc.b;if(ic){Lb=0;for(yc=ic.length;Lb<
|
|
|
+yc;Lb++)if(ha=ic[Lb],ha.needsUpdate&&(void 0===ha.boundTo||"vertices"===ha.boundTo))if(Mb=ha.value.length,ia=0,1===ha.size)for(ta=0;ta<Mb;ta++)ha.array[ta]=ha.value[ta];else if(2===ha.size)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ia+=2;else if(3===ha.size)if("c"===ha.type)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.r,ha.array[ia+1]=Ga.g,ha.array[ia+2]=Ga.b,ia+=3;else for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,
|
|
|
+ia+=3;else if(4===ha.size)for(ta=0;ta<Mb;ta++)Ga=ha.value[ta],ha.array[ia]=Ga.x,ha.array[ia+1]=Ga.y,ha.array[ia+2]=Ga.z,ha.array[ia+3]=Ga.w,ia+=4}}if(wd||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,tc,jd);if(xd||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,uc,jd);if(ic){Lb=0;for(yc=ic.length;Lb<yc;Lb++)if(ha=ic[Lb],ha.needsUpdate||Ic.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ha.buffer),j.bufferData(j.ARRAY_BUFFER,
|
|
|
+ha.array,jd)}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;na.attributes&&x(na)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",Ya);var i,k,l,n,m;a instanceof THREE.MeshDepthMaterial?m="depth":a instanceof THREE.MeshNormalMaterial?m="normal":a instanceof THREE.MeshBasicMaterial?m="basic":a instanceof THREE.MeshLambertMaterial?m="lambert":a instanceof THREE.MeshPhongMaterial?m="phong":a instanceof THREE.LineBasicMaterial?m="basic":a instanceof THREE.LineDashedMaterial?
|
|
|
+m="dashed":a instanceof THREE.ParticleBasicMaterial&&(m="particle_basic");if(m){var p=THREE.ShaderLib[m];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;h=p;p=q=0;for(r=b.length;p<r;p++)s=b[p],s.castShadow&&
|
|
|
+(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;ob&&d&&d.useVertexTexture?l=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),l=b);a:{s=a.fragmentShader;r=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;
|
|
|
+var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:ob&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,
|
|
|
+maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,w,d=[];m?d.push(m):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);for(t in c)d.push(t),d.push(c[t]);
|
|
|
+m=d.join();t=0;for(v=W.length;t<v;t++)if(d=W[t],d.code===m){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");v=[];for(w in q)d=q[w],!1!==d&&(d="#define "+w+" "+d,v.push(d));d=v.join("\n");w=j.createProgram();v=["precision "+M+" float;",d,qc?"#define VERTEX_TEXTURES":"",O.gammaInput?"#define GAMMA_INPUT":"",O.gammaOutput?"#define GAMMA_OUTPUT":"",O.physicallyBasedShading?
|
|
|
+"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?
|
|
|
+"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
|
|
|
+"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\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;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
t=["precision "+M+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",d,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",O.gammaInput?"#define GAMMA_INPUT":"",O.gammaOutput?"#define GAMMA_OUTPUT":"",O.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",
|
|
|
c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
|
|
|
"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");t=$("fragment",t+s);v=$("vertex",v+r);j.attachShader(w,v);j.attachShader(w,t);j.linkProgram(w);j.getProgramParameter(w,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+j.getProgramParameter(w,j.VALIDATE_STATUS)+", gl error ["+
|