|
@@ -190,7 +190,7 @@ x.parameters.map;a.enableDiffuse.value=true}if(x.parameters.lightMap){a.tAO.text
|
|
uniforms:a,lights:true,fog:true})}else M=new THREE[x.type](x.parameters);N.materials[m]=M}e(N.scene,B.objects);i.callbackSync(N);h()};THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};
|
|
uniforms:a,lights:true,fog:true})}else M=new THREE[x.type](x.parameters);N.materials[m]=M}e(N.scene,B.objects);i.callbackSync(N);h()};THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};
|
|
THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=true;b.dispatchEvent({type:"load",content:a})},false);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},false);if(b.crossOrigin)c.crossOrigin=b.crossOrigin;c.src=a}};
|
|
THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=true;b.dispatchEvent({type:"load",content:a})},false);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},false);if(b.crossOrigin)c.crossOrigin=b.crossOrigin;c.src=a}};
|
|
THREE.Material=function(){this.id=THREE.MaterialCount++;this.name="";this.side=THREE.FrontSide;this.opacity=1;this.transparent=false;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=true;this.polygonOffset=false;this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.overdraw=false;this.needsUpdate=this.visible=true};
|
|
THREE.Material=function(){this.id=THREE.MaterialCount++;this.name="";this.side=THREE.FrontSide;this.opacity=1;this.transparent=false;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=true;this.polygonOffset=false;this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.overdraw=false;this.needsUpdate=this.visible=true};
|
|
-THREE.Material.prototype.setValues=function(a){if(a!==void 0)for(var b in a){var c=a[b];if(c!==void 0&&b in this){var d=this[b];d instanceof THREE.Color&&c instanceof THREE.Color?d.copy(c):d instanceof THREE.Color&&typeof c==="number"?d.setHex(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]=c}}};
|
|
|
|
|
|
+THREE.Material.prototype.setValues=function(a){if(a!==void 0)for(var b in a){var c=a[b];if(c===void 0)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color&&c instanceof THREE.Color?d.copy(c):d instanceof THREE.Color&&typeof c==="number"?d.setHex(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]=c}}};
|
|
THREE.Material.prototype.clone=function(a){a===void 0&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor=this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;
|
|
THREE.Material.prototype.clone=function(a){a===void 0&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor=this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;
|
|
a.visible=this.visible;return a};THREE.MaterialCount=0;THREE.LineBasicMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.vertexColors=false;this.fog=true;this.setValues(a)};THREE.LineBasicMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
a.visible=this.visible;return a};THREE.MaterialCount=0;THREE.LineBasicMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.vertexColors=false;this.fog=true;this.setValues(a)};THREE.LineBasicMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
THREE.LineBasicMaterial.prototype.clone=function(){var a=new THREE.LineBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.linewidth=this.linewidth;a.linecap=this.linecap;a.linejoin=this.linejoin;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};
|
|
THREE.LineBasicMaterial.prototype.clone=function(){var a=new THREE.LineBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.linewidth=this.linewidth;a.linecap=this.linecap;a.linejoin=this.linejoin;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};
|
|
@@ -270,13 +270,14 @@ mc(ca,I,ba,X,da,na,1,0,1,1,0,1,Ja)}}}function x(a,b,c,d,e,f){o.beginPath();o.mov
|
|
l-m*j;if(p===0){if(ja[n.id]===void 0){b=document.createElement("canvas");b.width=n.image.width;b.height=n.image.height;b=b.getContext("2d");b.drawImage(n.image,0,0);ja[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data}b=ja[n.id];h=(Math.floor(h)+Math.floor(k)*n.image.width)*4;V.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255);Gb(V)}else{p=1/p;n=(l*c-j*f)*p;j=(l*d-j*g)*p;c=(i*f-m*c)*p;d=(i*g-m*d)*p;a=a-n*h-c*k;h=b-j*h-d*k;o.save();o.transform(n,j,c,d,a,h);o.fill();o.restore()}}}function mc(a,b,c,d,
|
|
l-m*j;if(p===0){if(ja[n.id]===void 0){b=document.createElement("canvas");b.width=n.image.width;b.height=n.image.height;b=b.getContext("2d");b.drawImage(n.image,0,0);ja[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data}b=ja[n.id];h=(Math.floor(h)+Math.floor(k)*n.image.width)*4;V.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255);Gb(V)}else{p=1/p;n=(l*c-j*f)*p;j=(l*d-j*g)*p;c=(i*f-m*c)*p;d=(i*g-m*d)*p;a=a-n*h-c*k;h=b-j*h-d*k;o.save();o.transform(n,j,c,d,a,h);o.fill();o.restore()}}}function mc(a,b,c,d,
|
|
e,f,g,h,k,i,j,m,l){var n,p;n=l.width-1;p=l.height-1;g=g*n;h=h*p;c=c-a;d=d-b;e=e-a;f=f-b;k=k*n-g;i=i*p-h;j=j*n-g;m=m*p-h;p=1/(k*m-j*i);n=(m*c-i*e)*p;i=(m*d-i*f)*p;c=(k*e-j*c)*p;d=(k*f-j*d)*p;a=a-n*g-c*h;b=b-i*g-d*h;o.save();o.transform(n,i,c,d,a,b);o.clip();o.drawImage(l,0,0);o.restore()}function Ic(a,b,c,d){var e=~~(a.r*255),f=~~(a.g*255),a=~~(a.b*255),g=~~(b.r*255),h=~~(b.g*255),b=~~(b.b*255),i=~~(c.r*255),j=~~(c.g*255),c=~~(c.b*255),m=~~(d.r*255),l=~~(d.g*255),d=~~(d.b*255);Xa[0]=e<0?0:e>255?255:
|
|
e,f,g,h,k,i,j,m,l){var n,p;n=l.width-1;p=l.height-1;g=g*n;h=h*p;c=c-a;d=d-b;e=e-a;f=f-b;k=k*n-g;i=i*p-h;j=j*n-g;m=m*p-h;p=1/(k*m-j*i);n=(m*c-i*e)*p;i=(m*d-i*f)*p;c=(k*e-j*c)*p;d=(k*f-j*d)*p;a=a-n*g-c*h;b=b-i*g-d*h;o.save();o.transform(n,i,c,d,a,b);o.clip();o.drawImage(l,0,0);o.restore()}function Ic(a,b,c,d){var e=~~(a.r*255),f=~~(a.g*255),a=~~(a.b*255),g=~~(b.r*255),h=~~(b.g*255),b=~~(b.b*255),i=~~(c.r*255),j=~~(c.g*255),c=~~(c.b*255),m=~~(d.r*255),l=~~(d.g*255),d=~~(d.b*255);Xa[0]=e<0?0:e>255?255:
|
|
e;Xa[1]=f<0?0:f>255?255:f;Xa[2]=a<0?0:a>255?255:a;Xa[4]=g<0?0:g>255?255:g;Xa[5]=h<0?0:h>255?255:h;Xa[6]=b<0?0:b>255?255:b;Xa[8]=i<0?0:i>255?255:i;Xa[9]=j<0?0:j>255?255:j;Xa[10]=c<0?0:c>255?255:c;Xa[12]=m<0?0:m>255?255:m;Xa[13]=l<0?0:l>255?255:l;Xa[14]=d<0?0:d>255?255:d;$a.putImageData(Fb,0,0);cb.drawImage(k,0,0);return ob}function gc(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function nc(a){a=(a+1)*0.5;return a<0?0:a>1?1:a}function Qb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;if(e!==0){e=1/Math.sqrt(e);
|
|
e;Xa[1]=f<0?0:f>255?255:f;Xa[2]=a<0?0:a>255?255:a;Xa[4]=g<0?0:g>255?255:g;Xa[5]=h<0?0:h>255?255:h;Xa[6]=b<0?0:b>255?255:b;Xa[8]=i<0?0:i>255?255:i;Xa[9]=j<0?0:j>255?255:j;Xa[10]=c<0?0:c>255?255:c;Xa[12]=m<0?0:m>255?255:m;Xa[13]=l<0?0:l>255?255:l;Xa[14]=d<0?0:d>255?255:d;$a.putImageData(Fb,0,0);cb.drawImage(k,0,0);return ob}function gc(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function nc(a){a=(a+1)*0.5;return a<0?0:a>1?1:a}function Qb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;if(e!==0){e=1/Math.sqrt(e);
|
|
-c=c*e;d=d*e;b.x=b.x+c;b.y=b.y+d;a.x=a.x-c;a.y=a.y-d}}var Jc,ld,Qa,Hb;this.autoClear===true?this.clear():o.setTransform(1,0,0,-1,p,r);f.info.render.vertices=0;f.info.render.faces=0;g=j.projectScene(a,l,this.sortElements);h=g.elements;i=g.lights;hb=i.length>0;hb===true&&m(i);Jc=0;for(ld=h.length;Jc<ld;Jc++){Qa=h[Jc];Hb=Qa.material;if(!(Hb===void 0||Hb.visible===false)){ua.empty();if(Qa instanceof THREE.RenderableParticle){u=Qa;u.x=u.x*p;u.y=u.y*r;q(u,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableLine){u=
|
|
|
|
-Qa.v1;H=Qa.v2;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;ua.addPoint(u.positionScreen.x,u.positionScreen.y);ua.addPoint(H.positionScreen.x,H.positionScreen.y);Ta.intersects(ua)===true&&s(u,H,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableFace3){u=Qa.v1;H=Qa.v2;J=Qa.v3;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*
|
|
|
|
-p;H.positionScreen.y=H.positionScreen.y*r;J.positionScreen.x=J.positionScreen.x*p;J.positionScreen.y=J.positionScreen.y*r;if(Hb.overdraw===true){Qb(u.positionScreen,H.positionScreen);Qb(H.positionScreen,J.positionScreen);Qb(J.positionScreen,u.positionScreen)}ua.add3Points(u.positionScreen.x,u.positionScreen.y,H.positionScreen.x,H.positionScreen.y,J.positionScreen.x,J.positionScreen.y);Ta.intersects(ua)===true&&t(u,H,J,0,1,2,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableFace4){u=Qa.v1;H=Qa.v2;J=Qa.v3;
|
|
|
|
-M=Qa.v4;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;J.positionScreen.x=J.positionScreen.x*p;J.positionScreen.y=J.positionScreen.y*r;M.positionScreen.x=M.positionScreen.x*p;M.positionScreen.y=M.positionScreen.y*r;O.positionScreen.copy(H.positionScreen);Z.positionScreen.copy(M.positionScreen);if(Hb.overdraw===true){Qb(u.positionScreen,H.positionScreen);Qb(H.positionScreen,M.positionScreen);
|
|
|
|
-Qb(M.positionScreen,u.positionScreen);Qb(J.positionScreen,O.positionScreen);Qb(J.positionScreen,Z.positionScreen)}ua.addPoint(u.positionScreen.x,u.positionScreen.y);ua.addPoint(H.positionScreen.x,H.positionScreen.y);ua.addPoint(J.positionScreen.x,J.positionScreen.y);ua.addPoint(M.positionScreen.x,M.positionScreen.y);Ta.intersects(ua)===true&&w(u,H,J,M,O,Z,Qa,Hb,a)}Ga.addRectangle(ua)}}o.setTransform(1,0,0,1,0,0)}};
|
|
|
|
-THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",
|
|
|
|
-envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * vReflect.x, vReflect.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * vReflect.x, vReflect.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity );\n} else {\ngl_FragColor.xyz = gl_FragColor.xyz * cubeColor.xyz;\n}\n#endif",
|
|
|
|
|
|
+c=c*e;d=d*e;b.x=b.x+c;b.y=b.y+d;a.x=a.x-c;a.y=a.y-d}}if(l instanceof THREE.Camera===false)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{var Jc,ld,Qa,Hb;this.autoClear===true?this.clear():o.setTransform(1,0,0,-1,p,r);f.info.render.vertices=0;f.info.render.faces=0;g=j.projectScene(a,l,this.sortElements);h=g.elements;i=g.lights;hb=i.length>0;hb===true&&m(i);Jc=0;for(ld=h.length;Jc<ld;Jc++){Qa=h[Jc];Hb=Qa.material;if(!(Hb===void 0||Hb.visible===false)){ua.empty();
|
|
|
|
+if(Qa instanceof THREE.RenderableParticle){u=Qa;u.x=u.x*p;u.y=u.y*r;q(u,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableLine){u=Qa.v1;H=Qa.v2;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;ua.addPoint(u.positionScreen.x,u.positionScreen.y);ua.addPoint(H.positionScreen.x,H.positionScreen.y);Ta.intersects(ua)===true&&s(u,H,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableFace3){u=Qa.v1;H=Qa.v2;
|
|
|
|
+J=Qa.v3;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;J.positionScreen.x=J.positionScreen.x*p;J.positionScreen.y=J.positionScreen.y*r;if(Hb.overdraw===true){Qb(u.positionScreen,H.positionScreen);Qb(H.positionScreen,J.positionScreen);Qb(J.positionScreen,u.positionScreen)}ua.add3Points(u.positionScreen.x,u.positionScreen.y,H.positionScreen.x,H.positionScreen.y,J.positionScreen.x,J.positionScreen.y);
|
|
|
|
+Ta.intersects(ua)===true&&t(u,H,J,0,1,2,Qa,Hb,a)}else if(Qa instanceof THREE.RenderableFace4){u=Qa.v1;H=Qa.v2;J=Qa.v3;M=Qa.v4;u.positionScreen.x=u.positionScreen.x*p;u.positionScreen.y=u.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;J.positionScreen.x=J.positionScreen.x*p;J.positionScreen.y=J.positionScreen.y*r;M.positionScreen.x=M.positionScreen.x*p;M.positionScreen.y=M.positionScreen.y*r;O.positionScreen.copy(H.positionScreen);Z.positionScreen.copy(M.positionScreen);
|
|
|
|
+if(Hb.overdraw===true){Qb(u.positionScreen,H.positionScreen);Qb(H.positionScreen,M.positionScreen);Qb(M.positionScreen,u.positionScreen);Qb(J.positionScreen,O.positionScreen);Qb(J.positionScreen,Z.positionScreen)}ua.addPoint(u.positionScreen.x,u.positionScreen.y);ua.addPoint(H.positionScreen.x,H.positionScreen.y);ua.addPoint(J.positionScreen.x,J.positionScreen.y);ua.addPoint(M.positionScreen.x,M.positionScreen.y);Ta.intersects(ua)===true&&w(u,H,J,M,O,Z,Qa,Hb,a)}Ga.addRectangle(ua)}}o.setTransform(1,
|
|
|
|
+0,0,1,0,0)}}};
|
|
|
|
+THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#endif",
|
|
|
|
+envmap_fragment:"#ifdef USE_ENVMAP\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * vReflect.x, vReflect.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * vReflect.x, vReflect.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity );\n} else {\ngl_FragColor.xyz = gl_FragColor.xyz * cubeColor.xyz;\n}\n#endif",
|
|
envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = modelMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",
|
|
envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = modelMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",
|
|
map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform vec4 offsetRepeat;\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n#endif",map_fragment:"#ifdef USE_MAP\n#ifdef GAMMA_INPUT\nvec4 texelColor = texture2D( map, vUv );\ntexelColor.xyz *= texelColor.xyz;\ngl_FragColor = gl_FragColor * texelColor;\n#else\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif\n#endif",
|
|
map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform vec4 offsetRepeat;\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n#endif",map_fragment:"#ifdef USE_MAP\n#ifdef GAMMA_INPUT\nvec4 texelColor = texture2D( map, vUv );\ntexelColor.xyz *= texelColor.xyz;\ngl_FragColor = gl_FragColor * texelColor;\n#else\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif\n#endif",
|
|
lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_lambert_pars_vertex:"uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#if MAX_SPOT_LIGHTS > 0\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\nuniform float spotLightAngle[ MAX_SPOT_LIGHTS ];\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif",
|
|
lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_lambert_pars_vertex:"uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#if MAX_SPOT_LIGHTS > 0\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\nuniform float spotLightAngle[ MAX_SPOT_LIGHTS ];\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif",
|
|
@@ -373,72 +374,72 @@ e.__webglColorBuffer);k.vertexAttribPointer(b.color,3,k.FLOAT,false,0,0)}if(b.no
|
|
if(b.uv2>=0)if(e.__webglUV2Buffer){k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer);k.vertexAttribPointer(b.uv2,2,k.FLOAT,false,0,0);k.enableVertexAttribArray(b.uv2)}else k.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexABuffer);k.vertexAttribPointer(b.skinVertexA,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexBBuffer);k.vertexAttribPointer(b.skinVertexB,4,k.FLOAT,
|
|
if(b.uv2>=0)if(e.__webglUV2Buffer){k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer);k.vertexAttribPointer(b.uv2,2,k.FLOAT,false,0,0);k.enableVertexAttribArray(b.uv2)}else k.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexABuffer);k.vertexAttribPointer(b.skinVertexA,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexBBuffer);k.vertexAttribPointer(b.skinVertexB,4,k.FLOAT,
|
|
false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==mb){k.lineWidth(d);mb=d}a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)}else{a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer);
|
|
false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==mb){k.lineWidth(d);mb=d}a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)}else{a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer);
|
|
k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)}F.info.render.calls++;F.info.render.vertices=F.info.render.vertices+e.__webglFaceCount;F.info.render.faces=F.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES;d=d.linewidth;if(d!==mb){k.lineWidth(d);mb=d}k.drawArrays(f,0,e.__webglLineCount);F.info.render.calls++}else if(f instanceof THREE.ParticleSystem){k.drawArrays(k.POINTS,0,e.__webglParticleCount);F.info.render.calls++;
|
|
k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)}F.info.render.calls++;F.info.render.vertices=F.info.render.vertices+e.__webglFaceCount;F.info.render.faces=F.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES;d=d.linewidth;if(d!==mb){k.lineWidth(d);mb=d}k.drawArrays(f,0,e.__webglLineCount);F.info.render.calls++}else if(f instanceof THREE.ParticleSystem){k.drawArrays(k.POINTS,0,e.__webglParticleCount);F.info.render.calls++;
|
|
-F.info.render.points=F.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount);F.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,n=a.__lights,o=a.fog;ca=-1;Ua=true;this.autoUpdateScene&&a.updateMatrixWorld();b.parent===void 0&&b.updateMatrixWorld();if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);
|
|
|
|
-b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);ua.multiply(b.projectionMatrix,b.matrixWorldInverse);Ga.setFromMatrix(ua);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);F.info.render.calls=0;F.info.render.vertices=0;F.info.render.faces=0;F.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;
|
|
|
|
-for(e=m.length;d<e;d++){f=m[d];h=f.object;f.render=false;if(h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ga.contains(h))){s(h,b);var p=f,r=p.object,q=p.buffer,u=void 0,u=u=void 0,u=r.material;if(u instanceof THREE.MeshFaceMaterial){u=q.materialIndex;if(u>=0){u=r.geometry.materials[u];if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent=null}}}else if(u)if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent=
|
|
|
|
-null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{sa.copy(h.matrixWorld.getPosition());ua.multiplyVector3(sa);f.z=sa.z}}}this.sortObjects&&m.sort(g);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d<e;d++){f=m[d];h=f.object;if(h.visible){s(h,b);h=f.object.material;if(h.transparent){f.transparent=h;f.opaque=null}else{f.opaque=h;f.transparent=null}}}if(a.overrideMaterial){d=a.overrideMaterial;this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst);this.setDepthTest(d.depthTest);
|
|
|
|
-this.setDepthWrite(d.depthWrite);x(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);j(a.__webglObjects,false,"",b,n,o,true,d);l(a.__webglObjectsImmediate,"",b,n,o,false,d)}else{this.setBlending(THREE.NormalBlending);j(a.__webglObjects,true,"opaque",b,n,o,false);l(a.__webglObjectsImmediate,"opaque",b,n,o,false);j(a.__webglObjects,false,"transparent",b,n,o,true);l(a.__webglObjectsImmediate,"transparent",b,n,o,true)}i(this.renderPluginsPost,a,b);if(c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&
|
|
|
|
-c.minFilter!==THREE.LinearFilter)if(c instanceof THREE.WebGLRenderTargetCube){k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture);k.generateMipmap(k.TEXTURE_CUBE_MAP);k.bindTexture(k.TEXTURE_CUBE_MAP,null)}else{k.bindTexture(k.TEXTURE_2D,c.__webglTexture);k.generateMipmap(k.TEXTURE_2D);k.bindTexture(k.TEXTURE_2D,null)}this.setDepthTest(true);this.setDepthWrite(true)};this.renderImmediateObject=function(a,b,c,d,e){var f=q(a,b,c,d,e);I=-1;F.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,
|
|
|
|
-k,Ga):e.render(function(a){F.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,j=void 0,l=void 0;if(!g.__webglInit){g.__webglInit=true;g._modelViewMatrix=new THREE.Matrix4;g._normalMatrix=new THREE.Matrix3;if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.Geometry){if(j.geometryGroups===void 0){var q=
|
|
|
|
-j,s=void 0,u=void 0,t=void 0,w=void 0,x=void 0,z=void 0,A=void 0,C={},E=q.morphTargets.length,B=q.morphNormals.length;q.geometryGroups={};s=0;for(u=q.faces.length;s<u;s++){t=q.faces[s];w=t.materialIndex;z=w!==void 0?w:-1;C[z]===void 0&&(C[z]={hash:z,counter:0});A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B});x=t instanceof THREE.Face3?3:4;if(q.geometryGroups[A].vertices+x>65535){C[z].counter=
|
|
|
|
-C[z].counter+1;A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B})}t instanceof THREE.Face3?q.geometryGroups[A].faces3.push(s):q.geometryGroups[A].faces4.push(s);q.geometryGroups[A].vertices=q.geometryGroups[A].vertices+x}q.geometryGroupsList=[];var H=void 0;for(H in q.geometryGroups){q.geometryGroups[H].id=na++;q.geometryGroupsList.push(q.geometryGroups[H])}}for(i in j.geometryGroups){l=
|
|
|
|
-j.geometryGroups[i];if(!l.__webglVertexBuffer){var I=l;I.__webglVertexBuffer=k.createBuffer();I.__webglNormalBuffer=k.createBuffer();I.__webglTangentBuffer=k.createBuffer();I.__webglColorBuffer=k.createBuffer();I.__webglUVBuffer=k.createBuffer();I.__webglUV2Buffer=k.createBuffer();I.__webglSkinVertexABuffer=k.createBuffer();I.__webglSkinVertexBBuffer=k.createBuffer();I.__webglSkinIndicesBuffer=k.createBuffer();I.__webglSkinWeightsBuffer=k.createBuffer();I.__webglFaceBuffer=k.createBuffer();I.__webglLineBuffer=
|
|
|
|
-k.createBuffer();var W=void 0,P=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];W=0;for(P=I.numMorphTargets;W<P;W++)I.__webglMorphTargetsBuffers.push(k.createBuffer())}if(I.numMorphNormals){I.__webglMorphNormalsBuffers=[];W=0;for(P=I.numMorphNormals;W<P;W++)I.__webglMorphNormalsBuffers.push(k.createBuffer())}F.info.memory.geometries++;var G=l,J=g,Y=J.geometry,M=G.faces3,N=G.faces4,O=M.length*3+N.length*4,V=M.length*1+N.length*2,Q=M.length*3+N.length*4,aa=c(J,G),Z=e(aa),X=d(aa),ca=aa.vertexColors?
|
|
|
|
-aa.vertexColors:false;G.__vertexArray=new Float32Array(O*3);if(X)G.__normalArray=new Float32Array(O*3);if(Y.hasTangents)G.__tangentArray=new Float32Array(O*4);if(ca)G.__colorArray=new Float32Array(O*3);if(Z){if(Y.faceUvs.length>0||Y.faceVertexUvs.length>0)G.__uvArray=new Float32Array(O*2);if(Y.faceUvs.length>1||Y.faceVertexUvs.length>1)G.__uv2Array=new Float32Array(O*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){G.__skinVertexAArray=new Float32Array(O*4);G.__skinVertexBArray=
|
|
|
|
-new Float32Array(O*4);G.__skinIndexArray=new Float32Array(O*4);G.__skinWeightArray=new Float32Array(O*4)}G.__faceArray=new Uint16Array(V*3);G.__lineArray=new Uint16Array(Q*2);var ga=void 0,da=void 0;if(G.numMorphTargets){G.__morphTargetsArrays=[];ga=0;for(da=G.numMorphTargets;ga<da;ga++)G.__morphTargetsArrays.push(new Float32Array(O*3))}if(G.numMorphNormals){G.__morphNormalsArrays=[];ga=0;for(da=G.numMorphNormals;ga<da;ga++)G.__morphNormalsArrays.push(new Float32Array(O*3))}G.__webglFaceCount=V*3;
|
|
|
|
-G.__webglLineCount=Q*2;if(aa.attributes){if(G.__webglCustomAttributesList===void 0)G.__webglCustomAttributesList=[];var ba=void 0;for(ba in aa.attributes){var ja=aa.attributes[ba],ma={},oa;for(oa in ja)ma[oa]=ja[oa];if(!ma.__webglInitialized||ma.createUniqueBuffers){ma.__webglInitialized=true;var Fa=1;ma.type==="v2"?Fa=2:ma.type==="v3"?Fa=3:ma.type==="v4"?Fa=4:ma.type==="c"&&(Fa=3);ma.size=Fa;ma.array=new Float32Array(O*Fa);ma.buffer=k.createBuffer();ma.buffer.belongsToAttribute=ba;ja.needsUpdate=
|
|
|
|
-true;ma.__original=ja}G.__webglCustomAttributesList.push(ma)}}G.__inittedArrays=true;j.verticesNeedUpdate=true;j.morphTargetsNeedUpdate=true;j.elementsNeedUpdate=true;j.uvsNeedUpdate=true;j.normalsNeedUpdate=true;j.tangentsNeedUpdate=true;j.colorsNeedUpdate=true}}}else if(j instanceof THREE.BufferGeometry){var Sa=j,Ja=void 0,sa=void 0,ua=void 0;for(Ja in Sa.attributes){ua=Ja==="index"?k.ELEMENT_ARRAY_BUFFER:k.ARRAY_BUFFER;sa=Sa.attributes[Ja];sa.buffer=k.createBuffer();k.bindBuffer(ua,sa.buffer);
|
|
|
|
-k.bufferData(ua,sa.array,k.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){j=g.geometry;if(!j.__webglVertexBuffer){var Ba=j;Ba.__webglVertexBuffer=k.createBuffer();Ba.__webglColorBuffer=k.createBuffer();F.info.memory.geometries++;var Ga=j,Ia=Ga.vertices.length;Ga.__vertexArray=new Float32Array(Ia*3);Ga.__colorArray=new Float32Array(Ia*3);Ga.__webglVertexCount=Ia;j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){j=g.geometry;if(!j.__webglVertexBuffer){var mb=j;mb.__webglVertexBuffer=
|
|
|
|
-k.createBuffer();mb.__webglColorBuffer=k.createBuffer();F.info.memory.geometries++;var gb=j,Xa=g,Ua=gb.vertices.length;gb.__vertexArray=new Float32Array(Ua*3);gb.__colorArray=new Float32Array(Ua*3);gb.__webglLineCount=Ua;b(gb,Xa);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){j=g.geometry;if(!j.__webglVertexBuffer){var $a=j;$a.__webglVertexBuffer=k.createBuffer();$a.__webglColorBuffer=k.createBuffer();F.info.geometries++;var Ta=j,Ob=g,nb=Ta.vertices.length;
|
|
|
|
-Ta.__vertexArray=new Float32Array(nb*3);Ta.__colorArray=new Float32Array(nb*3);Ta.__sortArray=[];Ta.__webglParticleCount=nb;b(Ta,Ob);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.BufferGeometry)m(h.__webglObjects,j,g);else for(i in j.geometryGroups){l=j.geometryGroups[i];m(h.__webglObjects,l,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){j=g.geometry;m(h.__webglObjects,
|
|
|
|
-j,g)}else g instanceof THREE.ImmediateRenderObject||g.immediateRenderCallback?h.__webglObjectsImmediate.push({object:g,opaque:null,transparent:null}):g instanceof THREE.Sprite?h.__webglSprites.push(g):g instanceof THREE.LensFlare&&h.__webglFlares.push(g);g.__webglActive=true}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var db=a.__objectsRemoved[0],jb=a;db instanceof THREE.Mesh||db instanceof THREE.ParticleSystem||db instanceof THREE.Ribbon||db instanceof THREE.Line?r(jb.__webglObjects,
|
|
|
|
-db):db instanceof THREE.Sprite?o(jb.__webglSprites,db):db instanceof THREE.LensFlare?o(jb.__webglFlares,db):(db instanceof THREE.ImmediateRenderObject||db.immediateRenderCallback)&&r(jb.__webglObjectsImmediate,db);db.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var hb=0,ob=a.__webglObjects.length;hb<ob;hb++){var kb=a.__webglObjects[hb].object,ea=kb.geometry,cb=void 0,oc=void 0,Ya=void 0;if(kb instanceof THREE.Mesh)if(ea instanceof THREE.BufferGeometry){if(ea.verticesNeedUpdate||ea.elementsNeedUpdate||
|
|
|
|
-ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate){var Ib=ea,pc=k.DYNAMIC_DRAW,ec=!ea.dynamic,qc=Ib.attributes,Fb=qc.index,dc=qc.position,Yc=qc.normal,Zc=qc.uv,$c=qc.color,ad=qc.tangent;if(Ib.elementsNeedUpdate&&Fb!==void 0){k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,Fb.buffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb.array,pc)}if(Ib.verticesNeedUpdate&&dc!==void 0){k.bindBuffer(k.ARRAY_BUFFER,dc.buffer);k.bufferData(k.ARRAY_BUFFER,dc.array,pc)}if(Ib.normalsNeedUpdate&&Yc!==
|
|
|
|
-void 0){k.bindBuffer(k.ARRAY_BUFFER,Yc.buffer);k.bufferData(k.ARRAY_BUFFER,Yc.array,pc)}if(Ib.uvsNeedUpdate&&Zc!==void 0){k.bindBuffer(k.ARRAY_BUFFER,Zc.buffer);k.bufferData(k.ARRAY_BUFFER,Zc.array,pc)}if(Ib.colorsNeedUpdate&&$c!==void 0){k.bindBuffer(k.ARRAY_BUFFER,$c.buffer);k.bufferData(k.ARRAY_BUFFER,$c.array,pc)}if(Ib.tangentsNeedUpdate&&ad!==void 0){k.bindBuffer(k.ARRAY_BUFFER,ad.buffer);k.bufferData(k.ARRAY_BUFFER,ad.array,pc)}if(ec){var md=void 0;for(md in Ib.attributes)delete Ib.attributes[md].array}}ea.verticesNeedUpdate=
|
|
|
|
-false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false}else{for(var bd=0,yd=ea.geometryGroupsList.length;bd<yd;bd++){cb=ea.geometryGroupsList[bd];Ya=c(kb,cb);oc=Ya.attributes&&n(Ya);if(ea.verticesNeedUpdate||ea.morphTargetsNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate||oc){var ha=cb,zd=kb,ab=k.DYNAMIC_DRAW,Ad=!ea.dynamic,hc=Ya;if(ha.__inittedArrays){var nd=
|
|
|
|
-d(hc),cd=hc.vertexColors?hc.vertexColors:false,od=e(hc),Kc=nd===THREE.SmoothShading,D=void 0,U=void 0,ib=void 0,L=void 0,rc=void 0,Rb=void 0,lb=void 0,Lc=void 0,Jb=void 0,sc=void 0,tc=void 0,R=void 0,S=void 0,T=void 0,ia=void 0,pb=void 0,qb=void 0,rb=void 0,xc=void 0,sb=void 0,tb=void 0,ub=void 0,yc=void 0,vb=void 0,wb=void 0,xb=void 0,zc=void 0,yb=void 0,zb=void 0,Ab=void 0,Ac=void 0,Bb=void 0,Cb=void 0,Db=void 0,Bc=void 0,Sb=void 0,Tb=void 0,Ub=void 0,Mc=void 0,Vb=void 0,Wb=void 0,Xb=void 0,Nc=
|
|
|
|
-void 0,pa=void 0,pd=void 0,Yb=void 0,uc=void 0,vc=void 0,Ma=void 0,qd=void 0,Ka=void 0,La=void 0,Zb=void 0,Kb=void 0,Ca=0,Ha=0,Lb=0,Mb=0,eb=0,Ra=0,ra=0,Va=0,Da=0,K=0,fa=0,y=0,qa=void 0,Na=ha.__vertexArray,Cc=ha.__uvArray,Dc=ha.__uv2Array,fb=ha.__normalArray,va=ha.__tangentArray,Oa=ha.__colorArray,wa=ha.__skinVertexAArray,xa=ha.__skinVertexBArray,ya=ha.__skinIndexArray,za=ha.__skinWeightArray,dd=ha.__morphTargetsArrays,ed=ha.__morphNormalsArrays,fd=ha.__webglCustomAttributesList,v=void 0,Eb=ha.__faceArray,
|
|
|
|
-bb=ha.__lineArray,Wa=zd.geometry,Bd=Wa.elementsNeedUpdate,rd=Wa.uvsNeedUpdate,Cd=Wa.normalsNeedUpdate,Dd=Wa.tangentsNeedUpdate,Ed=Wa.colorsNeedUpdate,Fd=Wa.morphTargetsNeedUpdate,ic=Wa.vertices,ka=ha.faces3,la=ha.faces4,Ea=Wa.faces,gd=Wa.faceVertexUvs[0],hd=Wa.faceVertexUvs[1],jc=Wa.skinVerticesA,kc=Wa.skinVerticesB,lc=Wa.skinIndices,$b=Wa.skinWeights,ac=Wa.morphTargets,Oc=Wa.morphNormals;if(Wa.verticesNeedUpdate){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=ic[L.a];S=ic[L.b];T=ic[L.c];Na[Ha]=R.x;Na[Ha+
|
|
|
|
-1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Ha=Ha+9}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=ic[L.a];S=ic[L.b];T=ic[L.c];ia=ic[L.d];Na[Ha]=R.x;Na[Ha+1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Na[Ha+9]=ia.x;Na[Ha+10]=ia.y;Na[Ha+11]=ia.z;Ha=Ha+12}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Na,ab)}if(Fd){Ma=0;for(qd=ac.length;Ma<qd;Ma++){D=fa=0;for(U=ka.length;D<
|
|
|
|
-U;D++){Zb=ka[D];L=Ea[Zb];R=ac[Ma].vertices[L.a];S=ac[Ma].vertices[L.b];T=ac[Ma].vertices[L.c];Ka=dd[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ma].vertexNormals[Zb];sb=Kb.a;tb=Kb.b;ub=Kb.c}else ub=tb=sb=Oc[Ma].faceNormals[Zb];La=ed[Ma];La[fa]=sb.x;La[fa+1]=sb.y;La[fa+2]=sb.z;La[fa+3]=tb.x;La[fa+4]=tb.y;La[fa+5]=tb.z;La[fa+6]=ub.x;La[fa+7]=ub.y;La[fa+8]=ub.z}fa=fa+9}D=0;for(U=la.length;D<U;D++){Zb=
|
|
|
|
-la[D];L=Ea[Zb];R=ac[Ma].vertices[L.a];S=ac[Ma].vertices[L.b];T=ac[Ma].vertices[L.c];ia=ac[Ma].vertices[L.d];Ka=dd[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;Ka[fa+9]=ia.x;Ka[fa+10]=ia.y;Ka[fa+11]=ia.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ma].vertexNormals[Zb];sb=Kb.a;tb=Kb.b;ub=Kb.c;yc=Kb.d}else yc=ub=tb=sb=Oc[Ma].faceNormals[Zb];La=ed[Ma];La[fa]=sb.x;La[fa+1]=sb.y;La[fa+2]=sb.z;La[fa+3]=tb.x;La[fa+4]=tb.y;La[fa+5]=tb.z;La[fa+
|
|
|
|
-6]=ub.x;La[fa+7]=ub.y;La[fa+8]=ub.z;La[fa+9]=yc.x;La[fa+10]=yc.y;La[fa+11]=yc.z}fa=fa+12}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglMorphTargetsBuffers[Ma]);k.bufferData(k.ARRAY_BUFFER,dd[Ma],ab);if(hc.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglMorphNormalsBuffers[Ma]);k.bufferData(k.ARRAY_BUFFER,ed[Ma],ab)}}}if($b.length){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];yb=$b[L.a];zb=$b[L.b];Ab=$b[L.c];za[K]=yb.x;za[K+1]=yb.y;za[K+2]=yb.z;za[K+3]=yb.w;za[K+4]=zb.x;za[K+5]=zb.y;za[K+6]=zb.z;za[K+7]=zb.w;
|
|
|
|
-za[K+8]=Ab.x;za[K+9]=Ab.y;za[K+10]=Ab.z;za[K+11]=Ab.w;Bb=lc[L.a];Cb=lc[L.b];Db=lc[L.c];ya[K]=Bb.x;ya[K+1]=Bb.y;ya[K+2]=Bb.z;ya[K+3]=Bb.w;ya[K+4]=Cb.x;ya[K+5]=Cb.y;ya[K+6]=Cb.z;ya[K+7]=Cb.w;ya[K+8]=Db.x;ya[K+9]=Db.y;ya[K+10]=Db.z;ya[K+11]=Db.w;Sb=jc[L.a];Tb=jc[L.b];Ub=jc[L.c];wa[K]=Sb.x;wa[K+1]=Sb.y;wa[K+2]=Sb.z;wa[K+3]=1;wa[K+4]=Tb.x;wa[K+5]=Tb.y;wa[K+6]=Tb.z;wa[K+7]=1;wa[K+8]=Ub.x;wa[K+9]=Ub.y;wa[K+10]=Ub.z;wa[K+11]=1;Vb=kc[L.a];Wb=kc[L.b];Xb=kc[L.c];xa[K]=Vb.x;xa[K+1]=Vb.y;xa[K+2]=Vb.z;xa[K+3]=
|
|
|
|
-1;xa[K+4]=Wb.x;xa[K+5]=Wb.y;xa[K+6]=Wb.z;xa[K+7]=1;xa[K+8]=Xb.x;xa[K+9]=Xb.y;xa[K+10]=Xb.z;xa[K+11]=1;K=K+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];yb=$b[L.a];zb=$b[L.b];Ab=$b[L.c];Ac=$b[L.d];za[K]=yb.x;za[K+1]=yb.y;za[K+2]=yb.z;za[K+3]=yb.w;za[K+4]=zb.x;za[K+5]=zb.y;za[K+6]=zb.z;za[K+7]=zb.w;za[K+8]=Ab.x;za[K+9]=Ab.y;za[K+10]=Ab.z;za[K+11]=Ab.w;za[K+12]=Ac.x;za[K+13]=Ac.y;za[K+14]=Ac.z;za[K+15]=Ac.w;Bb=lc[L.a];Cb=lc[L.b];Db=lc[L.c];Bc=lc[L.d];ya[K]=Bb.x;ya[K+1]=Bb.y;ya[K+2]=Bb.z;ya[K+3]=Bb.w;ya[K+
|
|
|
|
-4]=Cb.x;ya[K+5]=Cb.y;ya[K+6]=Cb.z;ya[K+7]=Cb.w;ya[K+8]=Db.x;ya[K+9]=Db.y;ya[K+10]=Db.z;ya[K+11]=Db.w;ya[K+12]=Bc.x;ya[K+13]=Bc.y;ya[K+14]=Bc.z;ya[K+15]=Bc.w;Sb=jc[L.a];Tb=jc[L.b];Ub=jc[L.c];Mc=jc[L.d];wa[K]=Sb.x;wa[K+1]=Sb.y;wa[K+2]=Sb.z;wa[K+3]=1;wa[K+4]=Tb.x;wa[K+5]=Tb.y;wa[K+6]=Tb.z;wa[K+7]=1;wa[K+8]=Ub.x;wa[K+9]=Ub.y;wa[K+10]=Ub.z;wa[K+11]=1;wa[K+12]=Mc.x;wa[K+13]=Mc.y;wa[K+14]=Mc.z;wa[K+15]=1;Vb=kc[L.a];Wb=kc[L.b];Xb=kc[L.c];Nc=kc[L.d];xa[K]=Vb.x;xa[K+1]=Vb.y;xa[K+2]=Vb.z;xa[K+3]=1;xa[K+4]=Wb.x;
|
|
|
|
-xa[K+5]=Wb.y;xa[K+6]=Wb.z;xa[K+7]=1;xa[K+8]=Xb.x;xa[K+9]=Xb.y;xa[K+10]=Xb.z;xa[K+11]=1;xa[K+12]=Nc.x;xa[K+13]=Nc.y;xa[K+14]=Nc.z;xa[K+15]=1;K=K+16}if(K>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinVertexABuffer);k.bufferData(k.ARRAY_BUFFER,wa,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinVertexBBuffer);k.bufferData(k.ARRAY_BUFFER,xa,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinIndicesBuffer);k.bufferData(k.ARRAY_BUFFER,ya,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinWeightsBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
|
-za,ab)}}if(Ed&&cd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];lb=L.vertexColors;Lc=L.color;if(lb.length===3&&cd===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2]}else xb=wb=vb=Lc;Oa[Da]=vb.r;Oa[Da+1]=vb.g;Oa[Da+2]=vb.b;Oa[Da+3]=wb.r;Oa[Da+4]=wb.g;Oa[Da+5]=wb.b;Oa[Da+6]=xb.r;Oa[Da+7]=xb.g;Oa[Da+8]=xb.b;Da=Da+9}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];lb=L.vertexColors;Lc=L.color;if(lb.length===4&&cd===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2];zc=lb[3]}else zc=xb=wb=vb=Lc;Oa[Da]=vb.r;Oa[Da+1]=vb.g;
|
|
|
|
-Oa[Da+2]=vb.b;Oa[Da+3]=wb.r;Oa[Da+4]=wb.g;Oa[Da+5]=wb.b;Oa[Da+6]=xb.r;Oa[Da+7]=xb.g;Oa[Da+8]=xb.b;Oa[Da+9]=zc.r;Oa[Da+10]=zc.g;Oa[Da+11]=zc.b;Da=Da+12}if(Da>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Oa,ab)}}if(Dd&&Wa.hasTangents){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];Jb=L.vertexTangents;pb=Jb[0];qb=Jb[1];rb=Jb[2];va[ra]=pb.x;va[ra+1]=pb.y;va[ra+2]=pb.z;va[ra+3]=pb.w;va[ra+4]=qb.x;va[ra+5]=qb.y;va[ra+6]=qb.z;va[ra+7]=qb.w;va[ra+8]=rb.x;va[ra+9]=rb.y;va[ra+
|
|
|
|
-10]=rb.z;va[ra+11]=rb.w;ra=ra+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];Jb=L.vertexTangents;pb=Jb[0];qb=Jb[1];rb=Jb[2];xc=Jb[3];va[ra]=pb.x;va[ra+1]=pb.y;va[ra+2]=pb.z;va[ra+3]=pb.w;va[ra+4]=qb.x;va[ra+5]=qb.y;va[ra+6]=qb.z;va[ra+7]=qb.w;va[ra+8]=rb.x;va[ra+9]=rb.y;va[ra+10]=rb.z;va[ra+11]=rb.w;va[ra+12]=xc.x;va[ra+13]=xc.y;va[ra+14]=xc.z;va[ra+15]=xc.w;ra=ra+16}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,va,ab)}if(Cd&&nd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];
|
|
|
|
-rc=L.vertexNormals;Rb=L.normal;if(rc.length===3&&Kc)for(pa=0;pa<3;pa++){Yb=rc[pa];fb[Ra]=Yb.x;fb[Ra+1]=Yb.y;fb[Ra+2]=Yb.z;Ra=Ra+3}else for(pa=0;pa<3;pa++){fb[Ra]=Rb.x;fb[Ra+1]=Rb.y;fb[Ra+2]=Rb.z;Ra=Ra+3}}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];rc=L.vertexNormals;Rb=L.normal;if(rc.length===4&&Kc)for(pa=0;pa<4;pa++){Yb=rc[pa];fb[Ra]=Yb.x;fb[Ra+1]=Yb.y;fb[Ra+2]=Yb.z;Ra=Ra+3}else for(pa=0;pa<4;pa++){fb[Ra]=Rb.x;fb[Ra+1]=Rb.y;fb[Ra+2]=Rb.z;Ra=Ra+3}}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglNormalBuffer);
|
|
|
|
-k.bufferData(k.ARRAY_BUFFER,fb,ab)}if(rd&&gd&&od){D=0;for(U=ka.length;D<U;D++){ib=ka[D];L=Ea[ib];sc=gd[ib];if(sc!==void 0)for(pa=0;pa<3;pa++){uc=sc[pa];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}D=0;for(U=la.length;D<U;D++){ib=la[D];L=Ea[ib];sc=gd[ib];if(sc!==void 0)for(pa=0;pa<4;pa++){uc=sc[pa];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}if(Lb>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglUVBuffer);k.bufferData(k.ARRAY_BUFFER,Cc,ab)}}if(rd&&hd&&od){D=0;for(U=ka.length;D<U;D++){ib=ka[D];L=Ea[ib];tc=hd[ib];if(tc!==void 0)for(pa=
|
|
|
|
-0;pa<3;pa++){vc=tc[pa];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}D=0;for(U=la.length;D<U;D++){ib=la[D];L=Ea[ib];tc=hd[ib];if(tc!==void 0)for(pa=0;pa<4;pa++){vc=tc[pa];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}if(Mb>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglUV2Buffer);k.bufferData(k.ARRAY_BUFFER,Dc,ab)}}if(Bd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];Eb[eb]=Ca;Eb[eb+1]=Ca+1;Eb[eb+2]=Ca+2;eb=eb+3;bb[Va]=Ca;bb[Va+1]=Ca+1;bb[Va+2]=Ca;bb[Va+3]=Ca+2;bb[Va+4]=Ca+1;bb[Va+5]=Ca+2;Va=Va+6;Ca=Ca+3}D=0;for(U=la.length;D<U;D++){L=
|
|
|
|
-Ea[la[D]];Eb[eb]=Ca;Eb[eb+1]=Ca+1;Eb[eb+2]=Ca+3;Eb[eb+3]=Ca+1;Eb[eb+4]=Ca+2;Eb[eb+5]=Ca+3;eb=eb+6;bb[Va]=Ca;bb[Va+1]=Ca+1;bb[Va+2]=Ca;bb[Va+3]=Ca+3;bb[Va+4]=Ca+1;bb[Va+5]=Ca+2;bb[Va+6]=Ca+2;bb[Va+7]=Ca+3;Va=Va+8;Ca=Ca+4}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,ha.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Eb,ab);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,ha.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,bb,ab)}if(fd){pa=0;for(pd=fd.length;pa<pd;pa++){v=fd[pa];if(v.__original.needsUpdate){y=
|
|
|
|
-0;if(v.size===1)if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];v.array[y]=v.value[L.a];v.array[y+1]=v.value[L.b];v.array[y+2]=v.value[L.c];y=y+3}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];v.array[y]=v.value[L.a];v.array[y+1]=v.value[L.b];v.array[y+2]=v.value[L.c];v.array[y+3]=v.value[L.d];y=y+4}}else{if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){qa=v.value[ka[D]];v.array[y]=qa;v.array[y+1]=qa;v.array[y+2]=qa;y=y+3}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];
|
|
|
|
-v.array[y]=qa;v.array[y+1]=qa;v.array[y+2]=qa;v.array[y+3]=qa;y=y+4}}}else if(v.size===2)if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;y=y+6}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+
|
|
|
|
-4]=T.x;v.array[y+5]=T.y;v.array[y+6]=ia.x;v.array[y+7]=ia.y;y=y+8}}else{if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;y=y+6}D=0;for(U=la.length;D<U;D++){ia=T=S=R=qa=v.value[la[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;v.array[y+6]=ia.x;v.array[y+7]=ia.y;y=y+8}}}else if(v.size===3){var $;$=v.type==="c"?["r",
|
|
|
|
-"g","b"]:["x","y","z"];if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+
|
|
|
|
-2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}else if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;for(U=la.length;D<
|
|
|
|
-U;D++){ia=T=S=R=qa=v.value[la[D]];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}else if(v.boundTo==="faceVertices"){D=0;for(U=ka.length;D<U;D++){qa=v.value[ka[D]];R=qa[0];S=qa[1];T=qa[2];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];
|
|
|
|
-v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];R=qa[0];S=qa[1];T=qa[2];ia=qa[3];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}}else if(v.size===4)if(v.boundTo===void 0||v.boundTo==="vertices"){D=
|
|
|
|
-0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+
|
|
|
|
-6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}else if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){ia=
|
|
|
|
-T=S=R=qa=v.value[la[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}else if(v.boundTo==="faceVertices"){D=0;for(U=ka.length;D<U;D++){qa=v.value[ka[D]];R=qa[0];S=qa[1];T=qa[2];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;
|
|
|
|
-v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];R=qa[0];S=qa[1];T=qa[2];ia=qa[3];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
|
-v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,ab)}}}if(Ad){delete ha.__inittedArrays;delete ha.__colorArray;delete ha.__normalArray;delete ha.__tangentArray;delete ha.__uvArray;delete ha.__uv2Array;delete ha.__faceArray;delete ha.__vertexArray;delete ha.__lineArray;delete ha.__skinVertexAArray;delete ha.__skinVertexBArray;delete ha.__skinIndexArray;delete ha.__skinWeightArray}}}}ea.verticesNeedUpdate=false;ea.morphTargetsNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=
|
|
|
|
-false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false;Ya.attributes&&p(Ya)}else if(kb instanceof THREE.Ribbon){if(ea.verticesNeedUpdate||ea.colorsNeedUpdate){var bc=ea,sd=k.DYNAMIC_DRAW,Ec=void 0,Fc=void 0,Pc=void 0,cc=void 0,Qc=void 0,td=bc.vertices,ud=bc.colors,Gd=td.length,Hd=ud.length,Rc=bc.__vertexArray,Sc=bc.__colorArray,Id=bc.colorsNeedUpdate;if(bc.verticesNeedUpdate){for(Ec=0;Ec<Gd;Ec++){Pc=td[Ec];cc=Ec*3;Rc[cc]=Pc.x;Rc[cc+1]=Pc.y;Rc[cc+2]=Pc.z}k.bindBuffer(k.ARRAY_BUFFER,bc.__webglVertexBuffer);
|
|
|
|
-k.bufferData(k.ARRAY_BUFFER,Rc,sd)}if(Id){for(Fc=0;Fc<Hd;Fc++){Qc=ud[Fc];cc=Fc*3;Sc[cc]=Qc.r;Sc[cc+1]=Qc.g;Sc[cc+2]=Qc.b}k.bindBuffer(k.ARRAY_BUFFER,bc.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Sc,sd)}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false}else if(kb instanceof THREE.Line){Ya=c(kb,cb);oc=Ya.attributes&&n(Ya);if(ea.verticesNeedUpdate||ea.colorsNeedUpdate||oc){var Nb=ea,id=k.DYNAMIC_DRAW,Gc=void 0,Hc=void 0,Tc=void 0,Aa=void 0,Uc=void 0,vd=Nb.vertices,wd=Nb.colors,Jd=vd.length,
|
|
|
|
-Kd=wd.length,Vc=Nb.__vertexArray,Wc=Nb.__colorArray,Ld=Nb.colorsNeedUpdate,jd=Nb.__webglCustomAttributesList,Xc=void 0,xd=void 0,Pa=void 0,wc=void 0,Za=void 0,ta=void 0;if(Nb.verticesNeedUpdate){for(Gc=0;Gc<Jd;Gc++){Tc=vd[Gc];Aa=Gc*3;Vc[Aa]=Tc.x;Vc[Aa+1]=Tc.y;Vc[Aa+2]=Tc.z}k.bindBuffer(k.ARRAY_BUFFER,Nb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Vc,id)}if(Ld){for(Hc=0;Hc<Kd;Hc++){Uc=wd[Hc];Aa=Hc*3;Wc[Aa]=Uc.r;Wc[Aa+1]=Uc.g;Wc[Aa+2]=Uc.b}k.bindBuffer(k.ARRAY_BUFFER,Nb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
|
-Wc,id)}if(jd){Xc=0;for(xd=jd.length;Xc<xd;Xc++){ta=jd[Xc];if(ta.needsUpdate&&(ta.boundTo===void 0||ta.boundTo==="vertices")){Aa=0;wc=ta.value.length;if(ta.size===1)for(Pa=0;Pa<wc;Pa++)ta.array[Pa]=ta.value[Pa];else if(ta.size===2)for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.x;ta.array[Aa+1]=Za.y;Aa=Aa+2}else if(ta.size===3)if(ta.type==="c")for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.r;ta.array[Aa+1]=Za.g;ta.array[Aa+2]=Za.b;Aa=Aa+3}else for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=
|
|
|
|
-Za.x;ta.array[Aa+1]=Za.y;ta.array[Aa+2]=Za.z;Aa=Aa+3}else if(ta.size===4)for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.x;ta.array[Aa+1]=Za.y;ta.array[Aa+2]=Za.z;ta.array[Aa+3]=Za.w;Aa=Aa+4}k.bindBuffer(k.ARRAY_BUFFER,ta.buffer);k.bufferData(k.ARRAY_BUFFER,ta.array,id)}}}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Ya.attributes&&p(Ya)}else if(kb instanceof THREE.ParticleSystem){Ya=c(kb,cb);oc=Ya.attributes&&n(Ya);(ea.verticesNeedUpdate||ea.colorsNeedUpdate||kb.sortParticles||oc)&&
|
|
|
|
-f(ea,k.DYNAMIC_DRAW,kb);ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Ya.attributes&&p(Ya)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,m,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");
|
|
|
|
-if(l){var n=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(n.uniforms);a.vertexShader=n.vertexShader;a.fragmentShader=n.fragmentShader}var o,p;o=g=e=n=0;for(f=b.length;o<f;o++){p=b[o];if(!p.onlyShadow){p instanceof THREE.DirectionalLight&&g++;p instanceof THREE.PointLight&&e++;p instanceof THREE.SpotLight&&n++}}if(e+n+g<=Q){o=g;f=e}else{o=Math.ceil(Q*g/(e+g));n=f=Q-o}e=o;g=n;n=m=0;for(o=b.length;n<o;n++){p=b[n];if(p.castShadow){p instanceof THREE.SpotLight&&m++;p instanceof THREE.DirectionalLight&&
|
|
|
|
-!p.shadowCascade&&m++}}if(dc&&d&&d.useVertexTexture)j=1024;else{b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS);b=Math.floor((b-20)/4);if(d!==void 0&&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)")}j=b}var r;a:{p=a.fragmentShader;o=a.vertexShader;var n=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,
|
|
|
|
-fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:j,useVertexTexture:dc&&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,maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,
|
|
|
|
-shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide},q,d=[];if(l)d.push(l);else{d.push(p);d.push(o)}for(q in c){d.push(q);d.push(c[q])}l=d.join();q=0;for(d=ba.length;q<d;q++){e=ba[q];if(e.code===l){e.usedTimes++;r=e.program;break a}}q=k.createProgram();d=["precision "+u+" float;",cb?"#define VERTEX_TEXTURES":"",F.gammaInput?"#define GAMMA_INPUT":"",F.gammaOutput?"#define GAMMA_OUTPUT":"",F.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_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",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.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",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 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
|
|
|
+F.info.render.points=F.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount);F.info.render.calls++}}};this.render=function(a,b,c,d){if(b instanceof THREE.Camera===false)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,h,m,n=a.__lights,o=a.fog;ca=-1;Ua=true;this.autoUpdateScene&&a.updateMatrixWorld();b.parent===void 0&&b.updateMatrixWorld();if(!b._viewMatrixArray)b._viewMatrixArray=
|
|
|
|
+new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);ua.multiply(b.projectionMatrix,b.matrixWorldInverse);Ga.setFromMatrix(ua);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);F.info.render.calls=0;F.info.render.vertices=0;F.info.render.faces=0;F.info.render.points=
|
|
|
|
+0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;for(e=m.length;d<e;d++){f=m[d];h=f.object;f.render=false;if(h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ga.contains(h))){s(h,b);var p=f,r=p.object,q=p.buffer,u=void 0,u=u=void 0,u=r.material;if(u instanceof THREE.MeshFaceMaterial){u=q.materialIndex;if(u>=0){u=r.geometry.materials[u];if(u.transparent){p.transparent=
|
|
|
|
+u;p.opaque=null}else{p.opaque=u;p.transparent=null}}}else if(u)if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{sa.copy(h.matrixWorld.getPosition());ua.multiplyVector3(sa);f.z=sa.z}}}this.sortObjects&&m.sort(g);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d<e;d++){f=m[d];h=f.object;if(h.visible){s(h,b);h=f.object.material;if(h.transparent){f.transparent=h;f.opaque=null}else{f.opaque=h;f.transparent=
|
|
|
|
+null}}}if(a.overrideMaterial){d=a.overrideMaterial;this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst);this.setDepthTest(d.depthTest);this.setDepthWrite(d.depthWrite);x(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);j(a.__webglObjects,false,"",b,n,o,true,d);l(a.__webglObjectsImmediate,"",b,n,o,false,d)}else{this.setBlending(THREE.NormalBlending);j(a.__webglObjects,true,"opaque",b,n,o,false);l(a.__webglObjectsImmediate,"opaque",b,n,o,false);j(a.__webglObjects,false,"transparent",
|
|
|
|
+b,n,o,true);l(a.__webglObjectsImmediate,"transparent",b,n,o,true)}i(this.renderPluginsPost,a,b);if(c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)if(c instanceof THREE.WebGLRenderTargetCube){k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture);k.generateMipmap(k.TEXTURE_CUBE_MAP);k.bindTexture(k.TEXTURE_CUBE_MAP,null)}else{k.bindTexture(k.TEXTURE_2D,c.__webglTexture);k.generateMipmap(k.TEXTURE_2D);k.bindTexture(k.TEXTURE_2D,null)}this.setDepthTest(true);this.setDepthWrite(true)}};
|
|
|
|
+this.renderImmediateObject=function(a,b,c,d,e){var f=q(a,b,c,d,e);I=-1;F.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,k,Ga):e.render(function(a){F.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,j=void 0,l=void 0;if(!g.__webglInit){g.__webglInit=true;g._modelViewMatrix=new THREE.Matrix4;
|
|
|
|
+g._normalMatrix=new THREE.Matrix3;if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.Geometry){if(j.geometryGroups===void 0){var q=j,s=void 0,u=void 0,t=void 0,w=void 0,x=void 0,z=void 0,A=void 0,C={},E=q.morphTargets.length,B=q.morphNormals.length;q.geometryGroups={};s=0;for(u=q.faces.length;s<u;s++){t=q.faces[s];w=t.materialIndex;z=w!==void 0?w:-1;C[z]===void 0&&(C[z]={hash:z,counter:0});A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],
|
|
|
|
+materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B});x=t instanceof THREE.Face3?3:4;if(q.geometryGroups[A].vertices+x>65535){C[z].counter=C[z].counter+1;A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B})}t instanceof THREE.Face3?q.geometryGroups[A].faces3.push(s):q.geometryGroups[A].faces4.push(s);q.geometryGroups[A].vertices=q.geometryGroups[A].vertices+x}q.geometryGroupsList=
|
|
|
|
+[];var H=void 0;for(H in q.geometryGroups){q.geometryGroups[H].id=na++;q.geometryGroupsList.push(q.geometryGroups[H])}}for(i in j.geometryGroups){l=j.geometryGroups[i];if(!l.__webglVertexBuffer){var I=l;I.__webglVertexBuffer=k.createBuffer();I.__webglNormalBuffer=k.createBuffer();I.__webglTangentBuffer=k.createBuffer();I.__webglColorBuffer=k.createBuffer();I.__webglUVBuffer=k.createBuffer();I.__webglUV2Buffer=k.createBuffer();I.__webglSkinVertexABuffer=k.createBuffer();I.__webglSkinVertexBBuffer=
|
|
|
|
+k.createBuffer();I.__webglSkinIndicesBuffer=k.createBuffer();I.__webglSkinWeightsBuffer=k.createBuffer();I.__webglFaceBuffer=k.createBuffer();I.__webglLineBuffer=k.createBuffer();var W=void 0,P=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];W=0;for(P=I.numMorphTargets;W<P;W++)I.__webglMorphTargetsBuffers.push(k.createBuffer())}if(I.numMorphNormals){I.__webglMorphNormalsBuffers=[];W=0;for(P=I.numMorphNormals;W<P;W++)I.__webglMorphNormalsBuffers.push(k.createBuffer())}F.info.memory.geometries++;
|
|
|
|
+var G=l,J=g,Y=J.geometry,M=G.faces3,N=G.faces4,O=M.length*3+N.length*4,V=M.length*1+N.length*2,Q=M.length*3+N.length*4,aa=c(J,G),Z=e(aa),X=d(aa),ca=aa.vertexColors?aa.vertexColors:false;G.__vertexArray=new Float32Array(O*3);if(X)G.__normalArray=new Float32Array(O*3);if(Y.hasTangents)G.__tangentArray=new Float32Array(O*4);if(ca)G.__colorArray=new Float32Array(O*3);if(Z){if(Y.faceUvs.length>0||Y.faceVertexUvs.length>0)G.__uvArray=new Float32Array(O*2);if(Y.faceUvs.length>1||Y.faceVertexUvs.length>1)G.__uv2Array=
|
|
|
|
+new Float32Array(O*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){G.__skinVertexAArray=new Float32Array(O*4);G.__skinVertexBArray=new Float32Array(O*4);G.__skinIndexArray=new Float32Array(O*4);G.__skinWeightArray=new Float32Array(O*4)}G.__faceArray=new Uint16Array(V*3);G.__lineArray=new Uint16Array(Q*2);var ga=void 0,da=void 0;if(G.numMorphTargets){G.__morphTargetsArrays=[];ga=0;for(da=G.numMorphTargets;ga<da;ga++)G.__morphTargetsArrays.push(new Float32Array(O*3))}if(G.numMorphNormals){G.__morphNormalsArrays=
|
|
|
|
+[];ga=0;for(da=G.numMorphNormals;ga<da;ga++)G.__morphNormalsArrays.push(new Float32Array(O*3))}G.__webglFaceCount=V*3;G.__webglLineCount=Q*2;if(aa.attributes){if(G.__webglCustomAttributesList===void 0)G.__webglCustomAttributesList=[];var ba=void 0;for(ba in aa.attributes){var ja=aa.attributes[ba],ma={},oa;for(oa in ja)ma[oa]=ja[oa];if(!ma.__webglInitialized||ma.createUniqueBuffers){ma.__webglInitialized=true;var Fa=1;ma.type==="v2"?Fa=2:ma.type==="v3"?Fa=3:ma.type==="v4"?Fa=4:ma.type==="c"&&(Fa=3);
|
|
|
|
+ma.size=Fa;ma.array=new Float32Array(O*Fa);ma.buffer=k.createBuffer();ma.buffer.belongsToAttribute=ba;ja.needsUpdate=true;ma.__original=ja}G.__webglCustomAttributesList.push(ma)}}G.__inittedArrays=true;j.verticesNeedUpdate=true;j.morphTargetsNeedUpdate=true;j.elementsNeedUpdate=true;j.uvsNeedUpdate=true;j.normalsNeedUpdate=true;j.tangentsNeedUpdate=true;j.colorsNeedUpdate=true}}}else if(j instanceof THREE.BufferGeometry){var Sa=j,Ja=void 0,sa=void 0,ua=void 0;for(Ja in Sa.attributes){ua=Ja==="index"?
|
|
|
|
+k.ELEMENT_ARRAY_BUFFER:k.ARRAY_BUFFER;sa=Sa.attributes[Ja];sa.buffer=k.createBuffer();k.bindBuffer(ua,sa.buffer);k.bufferData(ua,sa.array,k.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){j=g.geometry;if(!j.__webglVertexBuffer){var Ba=j;Ba.__webglVertexBuffer=k.createBuffer();Ba.__webglColorBuffer=k.createBuffer();F.info.memory.geometries++;var Ga=j,Ia=Ga.vertices.length;Ga.__vertexArray=new Float32Array(Ia*3);Ga.__colorArray=new Float32Array(Ia*3);Ga.__webglVertexCount=Ia;j.verticesNeedUpdate=
|
|
|
|
+true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){j=g.geometry;if(!j.__webglVertexBuffer){var mb=j;mb.__webglVertexBuffer=k.createBuffer();mb.__webglColorBuffer=k.createBuffer();F.info.memory.geometries++;var gb=j,Xa=g,Ua=gb.vertices.length;gb.__vertexArray=new Float32Array(Ua*3);gb.__colorArray=new Float32Array(Ua*3);gb.__webglLineCount=Ua;b(gb,Xa);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){j=g.geometry;if(!j.__webglVertexBuffer){var $a=
|
|
|
|
+j;$a.__webglVertexBuffer=k.createBuffer();$a.__webglColorBuffer=k.createBuffer();F.info.geometries++;var Ta=j,Ob=g,nb=Ta.vertices.length;Ta.__vertexArray=new Float32Array(nb*3);Ta.__colorArray=new Float32Array(nb*3);Ta.__sortArray=[];Ta.__webglParticleCount=nb;b(Ta,Ob);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.BufferGeometry)m(h.__webglObjects,j,g);else for(i in j.geometryGroups){l=j.geometryGroups[i];m(h.__webglObjects,
|
|
|
|
+l,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){j=g.geometry;m(h.__webglObjects,j,g)}else g instanceof THREE.ImmediateRenderObject||g.immediateRenderCallback?h.__webglObjectsImmediate.push({object:g,opaque:null,transparent:null}):g instanceof THREE.Sprite?h.__webglSprites.push(g):g instanceof THREE.LensFlare&&h.__webglFlares.push(g);g.__webglActive=true}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var db=a.__objectsRemoved[0],jb=
|
|
|
|
+a;db instanceof THREE.Mesh||db instanceof THREE.ParticleSystem||db instanceof THREE.Ribbon||db instanceof THREE.Line?r(jb.__webglObjects,db):db instanceof THREE.Sprite?o(jb.__webglSprites,db):db instanceof THREE.LensFlare?o(jb.__webglFlares,db):(db instanceof THREE.ImmediateRenderObject||db.immediateRenderCallback)&&r(jb.__webglObjectsImmediate,db);db.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var hb=0,ob=a.__webglObjects.length;hb<ob;hb++){var kb=a.__webglObjects[hb].object,ea=kb.geometry,
|
|
|
|
+cb=void 0,oc=void 0,Ya=void 0;if(kb instanceof THREE.Mesh)if(ea instanceof THREE.BufferGeometry){if(ea.verticesNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate){var Ib=ea,pc=k.DYNAMIC_DRAW,ec=!ea.dynamic,qc=Ib.attributes,Fb=qc.index,dc=qc.position,Yc=qc.normal,Zc=qc.uv,$c=qc.color,ad=qc.tangent;if(Ib.elementsNeedUpdate&&Fb!==void 0){k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,Fb.buffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb.array,pc)}if(Ib.verticesNeedUpdate&&
|
|
|
|
+dc!==void 0){k.bindBuffer(k.ARRAY_BUFFER,dc.buffer);k.bufferData(k.ARRAY_BUFFER,dc.array,pc)}if(Ib.normalsNeedUpdate&&Yc!==void 0){k.bindBuffer(k.ARRAY_BUFFER,Yc.buffer);k.bufferData(k.ARRAY_BUFFER,Yc.array,pc)}if(Ib.uvsNeedUpdate&&Zc!==void 0){k.bindBuffer(k.ARRAY_BUFFER,Zc.buffer);k.bufferData(k.ARRAY_BUFFER,Zc.array,pc)}if(Ib.colorsNeedUpdate&&$c!==void 0){k.bindBuffer(k.ARRAY_BUFFER,$c.buffer);k.bufferData(k.ARRAY_BUFFER,$c.array,pc)}if(Ib.tangentsNeedUpdate&&ad!==void 0){k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
|
+ad.buffer);k.bufferData(k.ARRAY_BUFFER,ad.array,pc)}if(ec){var md=void 0;for(md in Ib.attributes)delete Ib.attributes[md].array}}ea.verticesNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false}else{for(var bd=0,yd=ea.geometryGroupsList.length;bd<yd;bd++){cb=ea.geometryGroupsList[bd];Ya=c(kb,cb);oc=Ya.attributes&&n(Ya);if(ea.verticesNeedUpdate||ea.morphTargetsNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||
|
|
|
|
+ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate||oc){var ha=cb,zd=kb,ab=k.DYNAMIC_DRAW,Ad=!ea.dynamic,hc=Ya;if(ha.__inittedArrays){var nd=d(hc),cd=hc.vertexColors?hc.vertexColors:false,od=e(hc),Kc=nd===THREE.SmoothShading,D=void 0,U=void 0,ib=void 0,L=void 0,rc=void 0,Rb=void 0,lb=void 0,Lc=void 0,Jb=void 0,sc=void 0,tc=void 0,R=void 0,S=void 0,T=void 0,ia=void 0,pb=void 0,qb=void 0,rb=void 0,xc=void 0,sb=void 0,tb=void 0,ub=void 0,yc=void 0,vb=void 0,wb=void 0,xb=void 0,zc=void 0,
|
|
|
|
+yb=void 0,zb=void 0,Ab=void 0,Ac=void 0,Bb=void 0,Cb=void 0,Db=void 0,Bc=void 0,Sb=void 0,Tb=void 0,Ub=void 0,Mc=void 0,Vb=void 0,Wb=void 0,Xb=void 0,Nc=void 0,pa=void 0,pd=void 0,Yb=void 0,uc=void 0,vc=void 0,Ma=void 0,qd=void 0,Ka=void 0,La=void 0,Zb=void 0,Kb=void 0,Ca=0,Ha=0,Lb=0,Mb=0,eb=0,Ra=0,ra=0,Va=0,Da=0,K=0,fa=0,y=0,qa=void 0,Na=ha.__vertexArray,Cc=ha.__uvArray,Dc=ha.__uv2Array,fb=ha.__normalArray,va=ha.__tangentArray,Oa=ha.__colorArray,wa=ha.__skinVertexAArray,xa=ha.__skinVertexBArray,
|
|
|
|
+ya=ha.__skinIndexArray,za=ha.__skinWeightArray,dd=ha.__morphTargetsArrays,ed=ha.__morphNormalsArrays,fd=ha.__webglCustomAttributesList,v=void 0,Eb=ha.__faceArray,bb=ha.__lineArray,Wa=zd.geometry,Bd=Wa.elementsNeedUpdate,rd=Wa.uvsNeedUpdate,Cd=Wa.normalsNeedUpdate,Dd=Wa.tangentsNeedUpdate,Ed=Wa.colorsNeedUpdate,Fd=Wa.morphTargetsNeedUpdate,ic=Wa.vertices,ka=ha.faces3,la=ha.faces4,Ea=Wa.faces,gd=Wa.faceVertexUvs[0],hd=Wa.faceVertexUvs[1],jc=Wa.skinVerticesA,kc=Wa.skinVerticesB,lc=Wa.skinIndices,$b=
|
|
|
|
+Wa.skinWeights,ac=Wa.morphTargets,Oc=Wa.morphNormals;if(Wa.verticesNeedUpdate){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=ic[L.a];S=ic[L.b];T=ic[L.c];Na[Ha]=R.x;Na[Ha+1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Ha=Ha+9}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=ic[L.a];S=ic[L.b];T=ic[L.c];ia=ic[L.d];Na[Ha]=R.x;Na[Ha+1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Na[Ha+9]=ia.x;Na[Ha+10]=ia.y;Na[Ha+
|
|
|
|
+11]=ia.z;Ha=Ha+12}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Na,ab)}if(Fd){Ma=0;for(qd=ac.length;Ma<qd;Ma++){D=fa=0;for(U=ka.length;D<U;D++){Zb=ka[D];L=Ea[Zb];R=ac[Ma].vertices[L.a];S=ac[Ma].vertices[L.b];T=ac[Ma].vertices[L.c];Ka=dd[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ma].vertexNormals[Zb];sb=Kb.a;tb=Kb.b;ub=Kb.c}else ub=tb=sb=Oc[Ma].faceNormals[Zb];
|
|
|
|
+La=ed[Ma];La[fa]=sb.x;La[fa+1]=sb.y;La[fa+2]=sb.z;La[fa+3]=tb.x;La[fa+4]=tb.y;La[fa+5]=tb.z;La[fa+6]=ub.x;La[fa+7]=ub.y;La[fa+8]=ub.z}fa=fa+9}D=0;for(U=la.length;D<U;D++){Zb=la[D];L=Ea[Zb];R=ac[Ma].vertices[L.a];S=ac[Ma].vertices[L.b];T=ac[Ma].vertices[L.c];ia=ac[Ma].vertices[L.d];Ka=dd[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;Ka[fa+9]=ia.x;Ka[fa+10]=ia.y;Ka[fa+11]=ia.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ma].vertexNormals[Zb];
|
|
|
|
+sb=Kb.a;tb=Kb.b;ub=Kb.c;yc=Kb.d}else yc=ub=tb=sb=Oc[Ma].faceNormals[Zb];La=ed[Ma];La[fa]=sb.x;La[fa+1]=sb.y;La[fa+2]=sb.z;La[fa+3]=tb.x;La[fa+4]=tb.y;La[fa+5]=tb.z;La[fa+6]=ub.x;La[fa+7]=ub.y;La[fa+8]=ub.z;La[fa+9]=yc.x;La[fa+10]=yc.y;La[fa+11]=yc.z}fa=fa+12}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglMorphTargetsBuffers[Ma]);k.bufferData(k.ARRAY_BUFFER,dd[Ma],ab);if(hc.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglMorphNormalsBuffers[Ma]);k.bufferData(k.ARRAY_BUFFER,ed[Ma],ab)}}}if($b.length){D=
|
|
|
|
+0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];yb=$b[L.a];zb=$b[L.b];Ab=$b[L.c];za[K]=yb.x;za[K+1]=yb.y;za[K+2]=yb.z;za[K+3]=yb.w;za[K+4]=zb.x;za[K+5]=zb.y;za[K+6]=zb.z;za[K+7]=zb.w;za[K+8]=Ab.x;za[K+9]=Ab.y;za[K+10]=Ab.z;za[K+11]=Ab.w;Bb=lc[L.a];Cb=lc[L.b];Db=lc[L.c];ya[K]=Bb.x;ya[K+1]=Bb.y;ya[K+2]=Bb.z;ya[K+3]=Bb.w;ya[K+4]=Cb.x;ya[K+5]=Cb.y;ya[K+6]=Cb.z;ya[K+7]=Cb.w;ya[K+8]=Db.x;ya[K+9]=Db.y;ya[K+10]=Db.z;ya[K+11]=Db.w;Sb=jc[L.a];Tb=jc[L.b];Ub=jc[L.c];wa[K]=Sb.x;wa[K+1]=Sb.y;wa[K+2]=Sb.z;wa[K+3]=1;wa[K+
|
|
|
|
+4]=Tb.x;wa[K+5]=Tb.y;wa[K+6]=Tb.z;wa[K+7]=1;wa[K+8]=Ub.x;wa[K+9]=Ub.y;wa[K+10]=Ub.z;wa[K+11]=1;Vb=kc[L.a];Wb=kc[L.b];Xb=kc[L.c];xa[K]=Vb.x;xa[K+1]=Vb.y;xa[K+2]=Vb.z;xa[K+3]=1;xa[K+4]=Wb.x;xa[K+5]=Wb.y;xa[K+6]=Wb.z;xa[K+7]=1;xa[K+8]=Xb.x;xa[K+9]=Xb.y;xa[K+10]=Xb.z;xa[K+11]=1;K=K+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];yb=$b[L.a];zb=$b[L.b];Ab=$b[L.c];Ac=$b[L.d];za[K]=yb.x;za[K+1]=yb.y;za[K+2]=yb.z;za[K+3]=yb.w;za[K+4]=zb.x;za[K+5]=zb.y;za[K+6]=zb.z;za[K+7]=zb.w;za[K+8]=Ab.x;za[K+9]=Ab.y;za[K+10]=
|
|
|
|
+Ab.z;za[K+11]=Ab.w;za[K+12]=Ac.x;za[K+13]=Ac.y;za[K+14]=Ac.z;za[K+15]=Ac.w;Bb=lc[L.a];Cb=lc[L.b];Db=lc[L.c];Bc=lc[L.d];ya[K]=Bb.x;ya[K+1]=Bb.y;ya[K+2]=Bb.z;ya[K+3]=Bb.w;ya[K+4]=Cb.x;ya[K+5]=Cb.y;ya[K+6]=Cb.z;ya[K+7]=Cb.w;ya[K+8]=Db.x;ya[K+9]=Db.y;ya[K+10]=Db.z;ya[K+11]=Db.w;ya[K+12]=Bc.x;ya[K+13]=Bc.y;ya[K+14]=Bc.z;ya[K+15]=Bc.w;Sb=jc[L.a];Tb=jc[L.b];Ub=jc[L.c];Mc=jc[L.d];wa[K]=Sb.x;wa[K+1]=Sb.y;wa[K+2]=Sb.z;wa[K+3]=1;wa[K+4]=Tb.x;wa[K+5]=Tb.y;wa[K+6]=Tb.z;wa[K+7]=1;wa[K+8]=Ub.x;wa[K+9]=Ub.y;wa[K+
|
|
|
|
+10]=Ub.z;wa[K+11]=1;wa[K+12]=Mc.x;wa[K+13]=Mc.y;wa[K+14]=Mc.z;wa[K+15]=1;Vb=kc[L.a];Wb=kc[L.b];Xb=kc[L.c];Nc=kc[L.d];xa[K]=Vb.x;xa[K+1]=Vb.y;xa[K+2]=Vb.z;xa[K+3]=1;xa[K+4]=Wb.x;xa[K+5]=Wb.y;xa[K+6]=Wb.z;xa[K+7]=1;xa[K+8]=Xb.x;xa[K+9]=Xb.y;xa[K+10]=Xb.z;xa[K+11]=1;xa[K+12]=Nc.x;xa[K+13]=Nc.y;xa[K+14]=Nc.z;xa[K+15]=1;K=K+16}if(K>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinVertexABuffer);k.bufferData(k.ARRAY_BUFFER,wa,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinVertexBBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
|
+xa,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinIndicesBuffer);k.bufferData(k.ARRAY_BUFFER,ya,ab);k.bindBuffer(k.ARRAY_BUFFER,ha.__webglSkinWeightsBuffer);k.bufferData(k.ARRAY_BUFFER,za,ab)}}if(Ed&&cd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];lb=L.vertexColors;Lc=L.color;if(lb.length===3&&cd===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2]}else xb=wb=vb=Lc;Oa[Da]=vb.r;Oa[Da+1]=vb.g;Oa[Da+2]=vb.b;Oa[Da+3]=wb.r;Oa[Da+4]=wb.g;Oa[Da+5]=wb.b;Oa[Da+6]=xb.r;Oa[Da+7]=xb.g;Oa[Da+8]=xb.b;Da=Da+9}D=0;for(U=
|
|
|
|
+la.length;D<U;D++){L=Ea[la[D]];lb=L.vertexColors;Lc=L.color;if(lb.length===4&&cd===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2];zc=lb[3]}else zc=xb=wb=vb=Lc;Oa[Da]=vb.r;Oa[Da+1]=vb.g;Oa[Da+2]=vb.b;Oa[Da+3]=wb.r;Oa[Da+4]=wb.g;Oa[Da+5]=wb.b;Oa[Da+6]=xb.r;Oa[Da+7]=xb.g;Oa[Da+8]=xb.b;Oa[Da+9]=zc.r;Oa[Da+10]=zc.g;Oa[Da+11]=zc.b;Da=Da+12}if(Da>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Oa,ab)}}if(Dd&&Wa.hasTangents){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];Jb=L.vertexTangents;
|
|
|
|
+pb=Jb[0];qb=Jb[1];rb=Jb[2];va[ra]=pb.x;va[ra+1]=pb.y;va[ra+2]=pb.z;va[ra+3]=pb.w;va[ra+4]=qb.x;va[ra+5]=qb.y;va[ra+6]=qb.z;va[ra+7]=qb.w;va[ra+8]=rb.x;va[ra+9]=rb.y;va[ra+10]=rb.z;va[ra+11]=rb.w;ra=ra+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];Jb=L.vertexTangents;pb=Jb[0];qb=Jb[1];rb=Jb[2];xc=Jb[3];va[ra]=pb.x;va[ra+1]=pb.y;va[ra+2]=pb.z;va[ra+3]=pb.w;va[ra+4]=qb.x;va[ra+5]=qb.y;va[ra+6]=qb.z;va[ra+7]=qb.w;va[ra+8]=rb.x;va[ra+9]=rb.y;va[ra+10]=rb.z;va[ra+11]=rb.w;va[ra+12]=xc.x;va[ra+13]=xc.y;va[ra+
|
|
|
|
+14]=xc.z;va[ra+15]=xc.w;ra=ra+16}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,va,ab)}if(Cd&&nd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];rc=L.vertexNormals;Rb=L.normal;if(rc.length===3&&Kc)for(pa=0;pa<3;pa++){Yb=rc[pa];fb[Ra]=Yb.x;fb[Ra+1]=Yb.y;fb[Ra+2]=Yb.z;Ra=Ra+3}else for(pa=0;pa<3;pa++){fb[Ra]=Rb.x;fb[Ra+1]=Rb.y;fb[Ra+2]=Rb.z;Ra=Ra+3}}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];rc=L.vertexNormals;Rb=L.normal;if(rc.length===4&&Kc)for(pa=0;pa<4;pa++){Yb=rc[pa];fb[Ra]=
|
|
|
|
+Yb.x;fb[Ra+1]=Yb.y;fb[Ra+2]=Yb.z;Ra=Ra+3}else for(pa=0;pa<4;pa++){fb[Ra]=Rb.x;fb[Ra+1]=Rb.y;fb[Ra+2]=Rb.z;Ra=Ra+3}}k.bindBuffer(k.ARRAY_BUFFER,ha.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,fb,ab)}if(rd&&gd&&od){D=0;for(U=ka.length;D<U;D++){ib=ka[D];L=Ea[ib];sc=gd[ib];if(sc!==void 0)for(pa=0;pa<3;pa++){uc=sc[pa];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}D=0;for(U=la.length;D<U;D++){ib=la[D];L=Ea[ib];sc=gd[ib];if(sc!==void 0)for(pa=0;pa<4;pa++){uc=sc[pa];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}if(Lb>0){k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
|
+ha.__webglUVBuffer);k.bufferData(k.ARRAY_BUFFER,Cc,ab)}}if(rd&&hd&&od){D=0;for(U=ka.length;D<U;D++){ib=ka[D];L=Ea[ib];tc=hd[ib];if(tc!==void 0)for(pa=0;pa<3;pa++){vc=tc[pa];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}D=0;for(U=la.length;D<U;D++){ib=la[D];L=Ea[ib];tc=hd[ib];if(tc!==void 0)for(pa=0;pa<4;pa++){vc=tc[pa];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}if(Mb>0){k.bindBuffer(k.ARRAY_BUFFER,ha.__webglUV2Buffer);k.bufferData(k.ARRAY_BUFFER,Dc,ab)}}if(Bd){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];Eb[eb]=Ca;Eb[eb+
|
|
|
|
+1]=Ca+1;Eb[eb+2]=Ca+2;eb=eb+3;bb[Va]=Ca;bb[Va+1]=Ca+1;bb[Va+2]=Ca;bb[Va+3]=Ca+2;bb[Va+4]=Ca+1;bb[Va+5]=Ca+2;Va=Va+6;Ca=Ca+3}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];Eb[eb]=Ca;Eb[eb+1]=Ca+1;Eb[eb+2]=Ca+3;Eb[eb+3]=Ca+1;Eb[eb+4]=Ca+2;Eb[eb+5]=Ca+3;eb=eb+6;bb[Va]=Ca;bb[Va+1]=Ca+1;bb[Va+2]=Ca;bb[Va+3]=Ca+3;bb[Va+4]=Ca+1;bb[Va+5]=Ca+2;bb[Va+6]=Ca+2;bb[Va+7]=Ca+3;Va=Va+8;Ca=Ca+4}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,ha.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Eb,ab);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
|
+ha.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,bb,ab)}if(fd){pa=0;for(pd=fd.length;pa<pd;pa++){v=fd[pa];if(v.__original.needsUpdate){y=0;if(v.size===1)if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];v.array[y]=v.value[L.a];v.array[y+1]=v.value[L.b];v.array[y+2]=v.value[L.c];y=y+3}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];v.array[y]=v.value[L.a];v.array[y+1]=v.value[L.b];v.array[y+2]=v.value[L.c];v.array[y+3]=v.value[L.d];y=y+4}}else{if(v.boundTo===
|
|
|
|
+"faces"){D=0;for(U=ka.length;D<U;D++){qa=v.value[ka[D]];v.array[y]=qa;v.array[y+1]=qa;v.array[y+2]=qa;y=y+3}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];v.array[y]=qa;v.array[y+1]=qa;v.array[y+2]=qa;v.array[y+3]=qa;y=y+4}}}else if(v.size===2)if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;y=y+6}D=0;for(U=la.length;D<
|
|
|
|
+U;D++){L=Ea[la[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;v.array[y+6]=ia.x;v.array[y+7]=ia.y;y=y+8}}else{if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;y=y+6}D=0;for(U=la.length;D<U;D++){ia=T=S=R=qa=v.value[la[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+
|
|
|
|
+2]=S.x;v.array[y+3]=S.y;v.array[y+4]=T.x;v.array[y+5]=T.y;v.array[y+6]=ia.x;v.array[y+7]=ia.y;y=y+8}}}else if(v.size===3){var $;$=v.type==="c"?["r","g","b"]:["x","y","z"];if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;
|
|
|
|
+for(U=la.length;D<U;D++){L=Ea[la[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}else if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];
|
|
|
|
+v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;for(U=la.length;D<U;D++){ia=T=S=R=qa=v.value[la[D]];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}else if(v.boundTo==="faceVertices"){D=0;for(U=ka.length;D<
|
|
|
|
+U;D++){qa=v.value[ka[D]];R=qa[0];S=qa[1];T=qa[2];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=T[$[2]];y=y+9}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];R=qa[0];S=qa[1];T=qa[2];ia=qa[3];v.array[y]=R[$[0]];v.array[y+1]=R[$[1]];v.array[y+2]=R[$[2]];v.array[y+3]=S[$[0]];v.array[y+4]=S[$[1]];v.array[y+5]=S[$[2]];v.array[y+6]=T[$[0]];v.array[y+7]=T[$[1]];v.array[y+8]=
|
|
|
|
+T[$[2]];v.array[y+9]=ia[$[0]];v.array[y+10]=ia[$[1]];v.array[y+11]=ia[$[2]];y=y+12}}}else if(v.size===4)if(v.boundTo===void 0||v.boundTo==="vertices"){D=0;for(U=ka.length;D<U;D++){L=Ea[ka[D]];R=v.value[L.a];S=v.value[L.b];T=v.value[L.c];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){L=Ea[la[D]];R=v.value[L.a];
|
|
|
|
+S=v.value[L.b];T=v.value[L.c];ia=v.value[L.d];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}else if(v.boundTo==="faces"){D=0;for(U=ka.length;D<U;D++){T=S=R=qa=v.value[ka[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+
|
|
|
|
+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){ia=T=S=R=qa=v.value[la[D]];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}else if(v.boundTo==="faceVertices"){D=0;
|
|
|
|
+for(U=ka.length;D<U;D++){qa=v.value[ka[D]];R=qa[0];S=qa[1];T=qa[2];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;y=y+12}D=0;for(U=la.length;D<U;D++){qa=v.value[la[D]];R=qa[0];S=qa[1];T=qa[2];ia=qa[3];v.array[y]=R.x;v.array[y+1]=R.y;v.array[y+2]=R.z;v.array[y+3]=R.w;v.array[y+4]=S.x;v.array[y+5]=S.y;v.array[y+6]=S.z;v.array[y+7]=S.w;v.array[y+
|
|
|
|
+8]=T.x;v.array[y+9]=T.y;v.array[y+10]=T.z;v.array[y+11]=T.w;v.array[y+12]=ia.x;v.array[y+13]=ia.y;v.array[y+14]=ia.z;v.array[y+15]=ia.w;y=y+16}}k.bindBuffer(k.ARRAY_BUFFER,v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,ab)}}}if(Ad){delete ha.__inittedArrays;delete ha.__colorArray;delete ha.__normalArray;delete ha.__tangentArray;delete ha.__uvArray;delete ha.__uv2Array;delete ha.__faceArray;delete ha.__vertexArray;delete ha.__lineArray;delete ha.__skinVertexAArray;delete ha.__skinVertexBArray;delete ha.__skinIndexArray;
|
|
|
|
+delete ha.__skinWeightArray}}}}ea.verticesNeedUpdate=false;ea.morphTargetsNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false;Ya.attributes&&p(Ya)}else if(kb instanceof THREE.Ribbon){if(ea.verticesNeedUpdate||ea.colorsNeedUpdate){var bc=ea,sd=k.DYNAMIC_DRAW,Ec=void 0,Fc=void 0,Pc=void 0,cc=void 0,Qc=void 0,td=bc.vertices,ud=bc.colors,Gd=td.length,Hd=ud.length,Rc=bc.__vertexArray,Sc=bc.__colorArray,Id=
|
|
|
|
+bc.colorsNeedUpdate;if(bc.verticesNeedUpdate){for(Ec=0;Ec<Gd;Ec++){Pc=td[Ec];cc=Ec*3;Rc[cc]=Pc.x;Rc[cc+1]=Pc.y;Rc[cc+2]=Pc.z}k.bindBuffer(k.ARRAY_BUFFER,bc.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Rc,sd)}if(Id){for(Fc=0;Fc<Hd;Fc++){Qc=ud[Fc];cc=Fc*3;Sc[cc]=Qc.r;Sc[cc+1]=Qc.g;Sc[cc+2]=Qc.b}k.bindBuffer(k.ARRAY_BUFFER,bc.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Sc,sd)}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false}else if(kb instanceof THREE.Line){Ya=c(kb,cb);oc=Ya.attributes&&
|
|
|
|
+n(Ya);if(ea.verticesNeedUpdate||ea.colorsNeedUpdate||oc){var Nb=ea,id=k.DYNAMIC_DRAW,Gc=void 0,Hc=void 0,Tc=void 0,Aa=void 0,Uc=void 0,vd=Nb.vertices,wd=Nb.colors,Jd=vd.length,Kd=wd.length,Vc=Nb.__vertexArray,Wc=Nb.__colorArray,Ld=Nb.colorsNeedUpdate,jd=Nb.__webglCustomAttributesList,Xc=void 0,xd=void 0,Pa=void 0,wc=void 0,Za=void 0,ta=void 0;if(Nb.verticesNeedUpdate){for(Gc=0;Gc<Jd;Gc++){Tc=vd[Gc];Aa=Gc*3;Vc[Aa]=Tc.x;Vc[Aa+1]=Tc.y;Vc[Aa+2]=Tc.z}k.bindBuffer(k.ARRAY_BUFFER,Nb.__webglVertexBuffer);
|
|
|
|
+k.bufferData(k.ARRAY_BUFFER,Vc,id)}if(Ld){for(Hc=0;Hc<Kd;Hc++){Uc=wd[Hc];Aa=Hc*3;Wc[Aa]=Uc.r;Wc[Aa+1]=Uc.g;Wc[Aa+2]=Uc.b}k.bindBuffer(k.ARRAY_BUFFER,Nb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Wc,id)}if(jd){Xc=0;for(xd=jd.length;Xc<xd;Xc++){ta=jd[Xc];if(ta.needsUpdate&&(ta.boundTo===void 0||ta.boundTo==="vertices")){Aa=0;wc=ta.value.length;if(ta.size===1)for(Pa=0;Pa<wc;Pa++)ta.array[Pa]=ta.value[Pa];else if(ta.size===2)for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.x;ta.array[Aa+1]=Za.y;
|
|
|
|
+Aa=Aa+2}else if(ta.size===3)if(ta.type==="c")for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.r;ta.array[Aa+1]=Za.g;ta.array[Aa+2]=Za.b;Aa=Aa+3}else for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.x;ta.array[Aa+1]=Za.y;ta.array[Aa+2]=Za.z;Aa=Aa+3}else if(ta.size===4)for(Pa=0;Pa<wc;Pa++){Za=ta.value[Pa];ta.array[Aa]=Za.x;ta.array[Aa+1]=Za.y;ta.array[Aa+2]=Za.z;ta.array[Aa+3]=Za.w;Aa=Aa+4}k.bindBuffer(k.ARRAY_BUFFER,ta.buffer);k.bufferData(k.ARRAY_BUFFER,ta.array,id)}}}}ea.verticesNeedUpdate=
|
|
|
|
+false;ea.colorsNeedUpdate=false;Ya.attributes&&p(Ya)}else if(kb instanceof THREE.ParticleSystem){Ya=c(kb,cb);oc=Ya.attributes&&n(Ya);(ea.verticesNeedUpdate||ea.colorsNeedUpdate||kb.sortParticles||oc)&&f(ea,k.DYNAMIC_DRAW,kb);ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Ya.attributes&&p(Ya)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,m,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":
|
|
|
|
+a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");if(l){var n=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(n.uniforms);a.vertexShader=n.vertexShader;a.fragmentShader=n.fragmentShader}var o,p;o=g=e=n=0;for(f=b.length;o<f;o++){p=b[o];if(!p.onlyShadow){p instanceof THREE.DirectionalLight&&g++;p instanceof THREE.PointLight&&e++;p instanceof
|
|
|
|
+THREE.SpotLight&&n++}}if(e+n+g<=Q){o=g;f=e}else{o=Math.ceil(Q*g/(e+g));n=f=Q-o}e=o;g=n;n=m=0;for(o=b.length;n<o;n++){p=b[n];if(p.castShadow){p instanceof THREE.SpotLight&&m++;p instanceof THREE.DirectionalLight&&!p.shadowCascade&&m++}}if(dc&&d&&d.useVertexTexture)j=1024;else{b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS);b=Math.floor((b-20)/4);if(d!==void 0&&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)")}j=b}var r;a:{p=a.fragmentShader;o=a.vertexShader;var n=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:j,useVertexTexture:dc&&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,maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide},q,d=[];if(l)d.push(l);else{d.push(p);d.push(o)}for(q in c){d.push(q);d.push(c[q])}l=d.join();q=0;for(d=ba.length;q<d;q++){e=
|
|
|
|
+ba[q];if(e.code===l){e.usedTimes++;r=e.program;break a}}q=k.createProgram();d=["precision "+u+" float;",cb?"#define VERTEX_TEXTURES":"",F.gammaInput?"#define GAMMA_INPUT":"",F.gammaOutput?"#define GAMMA_OUTPUT":"",F.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_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",
|
|
|
|
+c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",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.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",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 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
e=["precision "+u+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",F.gammaInput?"#define GAMMA_INPUT":"",F.gammaOutput?"#define GAMMA_OUTPUT":"",F.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":
|
|
e=["precision "+u+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",F.gammaInput?"#define GAMMA_INPUT":"",F.gammaOutput?"#define GAMMA_OUTPUT":"",F.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":
|
|
"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",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.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");
|
|
"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",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.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");
|
|
e=t("fragment",e+p);d=t("vertex",d+o);k.attachShader(q,d);k.attachShader(q,e);k.linkProgram(q);k.getProgramParameter(q,k.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+k.getProgramParameter(q,k.VALIDATE_STATUS)+", gl error ["+k.getError()+"]");k.deleteShader(e);k.deleteShader(d);q.uniforms={};q.attributes={};var s,d=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences"];c.useVertexTexture?d.push("boneTexture"):
|
|
e=t("fragment",e+p);d=t("vertex",d+o);k.attachShader(q,d);k.attachShader(q,e);k.linkProgram(q);k.getProgramParameter(q,k.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+k.getProgramParameter(q,k.VALIDATE_STATUS)+", gl error ["+k.getError()+"]");k.deleteShader(e);k.deleteShader(d);q.uniforms={};q.attributes={};var s,d=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences"];c.useVertexTexture?d.push("boneTexture"):
|