|
@@ -241,7 +241,7 @@ THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){va
|
|
|
THREE.Fog=function(a,b,c){this.color=new THREE.Color(a);this.near=b!==void 0?b:1;this.far=c!==void 0?c:1E3};THREE.FogExp2=function(a,b){this.color=new THREE.Color(a);this.density=b!==void 0?b:2.5E-4};
|
|
|
THREE.CanvasRenderer=function(a){function b(a){if(u!==a)u=m.globalAlpha=a}function c(a){if(t!==a){if(a===THREE.NormalBlending)m.globalCompositeOperation="source-over";else if(a===THREE.AdditiveBlending)m.globalCompositeOperation="lighter";else if(a===THREE.SubtractiveBlending)m.globalCompositeOperation="darker";t=a}}function d(a){if(v!==a)v=m.strokeStyle=a}function e(a){if(x!==a)x=m.fillStyle=a}console.log("THREE.CanvasRenderer",THREE.REVISION);var a=a||{},f=this,g,h,j,i=new THREE.Projector,l=a.canvas!==
|
|
|
void 0?a.canvas:document.createElement("canvas"),o,n,p,r,m=l.getContext("2d"),q=new THREE.Color(0),s=0,u=1,t=0,v=null,x=null,F=null,C=null,z=null,w,H,E,O,Q=new THREE.RenderableVertex,Y=new THREE.RenderableVertex,B,J,P,D,W,R,N,ba,U,I,ca,ha,L=new THREE.Color,X=new THREE.Color,S=new THREE.Color,T=new THREE.Color,ia=new THREE.Color,ma=[],za=[],Ga,Oa,Pa,Ua,nb,gb,Ob,ob,kb,ec,Va=new THREE.Rectangle,Da=new THREE.Rectangle,Aa=new THREE.Rectangle,hb=false,pa=new THREE.Color,Fa=new THREE.Color,Ra=new THREE.Color,
|
|
|
-ra=new THREE.Vector3,k,bb,Gb,Wa,cb,pb,a=16;k=document.createElement("canvas");k.width=k.height=2;bb=k.getContext("2d");bb.fillStyle="rgba(0,0,0,1)";bb.fillRect(0,0,2,2);Gb=bb.getImageData(0,0,2,2);Wa=Gb.data;cb=document.createElement("canvas");cb.width=cb.height=a;pb=cb.getContext("2d");pb.translate(-a/2,-a/2);pb.scale(a,a);a--;this.domElement=l;this.sortElements=this.sortObjects=this.autoClear=true;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){o=a;n=b;p=Math.floor(o/2);r=Math.floor(n/
|
|
|
+ra=new THREE.Vector3,k,Za,Gb,Wa,cb,pb,a=16;k=document.createElement("canvas");k.width=k.height=2;Za=k.getContext("2d");Za.fillStyle="rgba(0,0,0,1)";Za.fillRect(0,0,2,2);Gb=Za.getImageData(0,0,2,2);Wa=Gb.data;cb=document.createElement("canvas");cb.width=cb.height=a;pb=cb.getContext("2d");pb.translate(-a/2,-a/2);pb.scale(a,a);a--;this.domElement=l;this.sortElements=this.sortObjects=this.autoClear=true;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){o=a;n=b;p=Math.floor(o/2);r=Math.floor(n/
|
|
|
2);l.width=o;l.height=n;Va.set(-p,-r,p,r);Da.set(-p,-r,p,r);u=1;t=0;z=C=F=x=v=null};this.setClearColor=function(a,b){q.copy(a);s=b!==void 0?b:1;Da.set(-p,-r,p,r)};this.setClearColorHex=function(a,b){q.setHex(a);s=b!==void 0?b:1;Da.set(-p,-r,p,r)};this.clear=function(){m.setTransform(1,0,0,-1,p,r);if(Da.isEmpty()===false){Da.minSelf(Va);Da.inflate(2);s<1&&m.clearRect(Math.floor(Da.getX()),Math.floor(Da.getY()),Math.floor(Da.getWidth()),Math.floor(Da.getHeight()));if(s>0){c(THREE.NormalBlending);b(1);
|
|
|
e("rgba("+Math.floor(q.r*255)+","+Math.floor(q.g*255)+","+Math.floor(q.b*255)+","+s+")");m.fillRect(Math.floor(Da.getX()),Math.floor(Da.getY()),Math.floor(Da.getWidth()),Math.floor(Da.getHeight()))}Da.empty()}};this.render=function(a,l){function o(a){var b,c,d,e;pa.setRGB(0,0,0);Fa.setRGB(0,0,0);Ra.setRGB(0,0,0);b=0;for(c=a.length;b<c;b++){d=a[b];e=d.color;if(d instanceof THREE.AmbientLight){pa.r=pa.r+e.r;pa.g=pa.g+e.g;pa.b=pa.b+e.b}else if(d instanceof THREE.DirectionalLight){Fa.r=Fa.r+e.r;Fa.g=
|
|
|
Fa.g+e.g;Fa.b=Fa.b+e.b}else if(d instanceof THREE.PointLight){Ra.r=Ra.r+e.r;Ra.g=Ra.g+e.g;Ra.b=Ra.b+e.b}}}function n(a,b,c,d){var e,f,g,h,k,j;e=0;for(f=a.length;e<f;e++){g=a[e];h=g.color;if(g instanceof THREE.DirectionalLight){k=g.matrixWorld.getPosition();j=c.dot(k);if(!(j<=0)){j=j*g.intensity;d.r=d.r+h.r*j;d.g=d.g+h.g*j;d.b=d.b+h.b*j}}else if(g instanceof THREE.PointLight){k=g.matrixWorld.getPosition();j=c.dot(ra.sub(k,b).normalize());if(!(j<=0)){j=j*(g.distance==0?1:1-Math.min(b.distanceTo(k)/
|
|
@@ -262,7 +262,7 @@ Ga,Oa);ia.r=ia.g=ia.b=1-gc(e.positionScreen.z,Ga,Oa);Pa=Ic(X,S,T,ia);u(B,J,P,D,N
|
|
|
Aa.inflate(b*2)}function Hb(a){e(a.getContextStyle());m.fill()}function kd(a,b,c,d,f,g,h,k,i,j,l,n,o){if(!(o.image===void 0||o.image.width===0)){if(o.needsUpdate===true||ma[o.id]===void 0){var p=o.wrapS==THREE.RepeatWrapping,fc=o.wrapT==THREE.RepeatWrapping;ma[o.id]=m.createPattern(o.image,p===true&&fc===true?"repeat":p===true&&fc===false?"repeat-x":p===false&&fc===true?"repeat-y":"no-repeat");o.needsUpdate=false}e(ma[o.id]);var p=o.offset.x/o.repeat.x,fc=o.offset.y/o.repeat.y,r=o.image.width*o.repeat.x,
|
|
|
q=o.image.height*o.repeat.y,h=(h+p)*r,k=(k+fc)*q,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+p)*r-h,j=(j+fc)*q-k,l=(l+p)*r-h,n=(n+fc)*q-k,p=i*n-l*j;if(p===0){if(za[o.id]===void 0){b=document.createElement("canvas");b.width=o.image.width;b.height=o.image.height;b=b.getContext("2d");b.drawImage(o.image,0,0);za[o.id]=b.getImageData(0,0,o.image.width,o.image.height).data}b=za[o.id];h=(Math.floor(h)+Math.floor(k)*o.image.width)*4;L.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255);Hb(L)}else{p=1/p;o=(n*c-j*f)*p;j=(n*d-j*g)*p;c=
|
|
|
(i*f-l*c)*p;d=(i*g-l*d)*p;a=a-o*h-c*k;h=b-j*h-d*k;m.save();m.transform(o,j,c,d,a,h);m.fill();m.restore()}}}function mc(a,b,c,d,e,f,g,h,k,j,i,l,o){var n,p;n=o.width-1;p=o.height-1;g=g*n;h=h*p;c=c-a;d=d-b;e=e-a;f=f-b;k=k*n-g;j=j*p-h;i=i*n-g;l=l*p-h;p=1/(k*l-i*j);n=(l*c-j*e)*p;j=(l*d-j*f)*p;c=(k*e-i*c)*p;d=(k*f-i*d)*p;a=a-n*g-c*h;b=b-j*g-d*h;m.save();m.transform(n,j,c,d,a,b);m.clip();m.drawImage(o,0,0);m.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),j=~~(c.r*255),i=~~(c.g*255),c=~~(c.b*255),l=~~(d.r*255),m=~~(d.g*255),d=~~(d.b*255);Wa[0]=e<0?0:e>255?255:e;Wa[1]=f<0?0:f>255?255:f;Wa[2]=a<0?0:a>255?255:a;Wa[4]=g<0?0:g>255?255:g;Wa[5]=h<0?0:h>255?255:h;Wa[6]=b<0?0:b>255?255:b;Wa[8]=j<0?0:j>255?255:j;Wa[9]=i<0?0:i>255?255:i;Wa[10]=c<0?0:c>255?255:c;Wa[12]=l<0?0:l>255?255:l;Wa[13]=m<0?0:m>255?255:m;Wa[14]=d<0?0:d>255?255:d;bb.putImageData(Gb,0,0);pb.drawImage(k,0,0);return cb}function gc(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}
|
|
|
+255),b=~~(b.b*255),j=~~(c.r*255),i=~~(c.g*255),c=~~(c.b*255),l=~~(d.r*255),m=~~(d.g*255),d=~~(d.b*255);Wa[0]=e<0?0:e>255?255:e;Wa[1]=f<0?0:f>255?255:f;Wa[2]=a<0?0:a>255?255:a;Wa[4]=g<0?0:g>255?255:g;Wa[5]=h<0?0:h>255?255:h;Wa[6]=b<0?0:b>255?255:b;Wa[8]=j<0?0:j>255?255:j;Wa[9]=i<0?0:i>255?255:i;Wa[10]=c<0?0:c>255?255:c;Wa[12]=l<0?0:l>255?255:l;Wa[13]=m<0?0:m>255?255:m;Wa[14]=d<0?0:d>255?255:d;Za.putImageData(Gb,0,0);pb.drawImage(k,0,0);return cb}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,Ma,ib;this.autoClear===true?this.clear():m.setTransform(1,0,0,-1,p,r);f.info.render.vertices=0;f.info.render.faces=0;g=i.projectScene(a,l,this.sortElements);h=g.elements;j=g.lights;hb=j.length>0;hb===true&&o(j);Jc=0;for(ld=h.length;Jc<ld;Jc++){Ma=h[Jc];ib=Ma.material;ib=ib instanceof THREE.MeshFaceMaterial?Ma.faceMaterial:
|
|
|
ib;if(!(ib===void 0||ib.visible===false)){Aa.empty();if(Ma instanceof THREE.RenderableParticle){w=Ma;w.x=w.x*p;w.y=w.y*r;q(w,Ma,ib,a)}else if(Ma instanceof THREE.RenderableLine){w=Ma.v1;H=Ma.v2;w.positionScreen.x=w.positionScreen.x*p;w.positionScreen.y=w.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;Aa.addPoint(w.positionScreen.x,w.positionScreen.y);Aa.addPoint(H.positionScreen.x,H.positionScreen.y);Va.intersects(Aa)===true&&s(w,H,Ma,ib,a)}else if(Ma instanceof
|
|
|
THREE.RenderableFace3){w=Ma.v1;H=Ma.v2;E=Ma.v3;w.positionScreen.x=w.positionScreen.x*p;w.positionScreen.y=w.positionScreen.y*r;H.positionScreen.x=H.positionScreen.x*p;H.positionScreen.y=H.positionScreen.y*r;E.positionScreen.x=E.positionScreen.x*p;E.positionScreen.y=E.positionScreen.y*r;if(ib.overdraw===true){Qb(w.positionScreen,H.positionScreen);Qb(H.positionScreen,E.positionScreen);Qb(E.positionScreen,w.positionScreen)}Aa.add3Points(w.positionScreen.x,w.positionScreen.y,H.positionScreen.x,H.positionScreen.y,
|
|
@@ -335,100 +335,101 @@ i)}else if(m==="tv"){if(e._array===void 0){e._array=[];m=0;for(o=e.texture.lengt
|
|
|
d.skinning)&&h.viewMatrix!==null&&k.uniformMatrix4fv(h.viewMatrix,false,a._viewMatrixArray)}if(d.skinning)if(dc&&f.useVertexTexture){if(h.boneTexture!==null){k.uniform1i(h.boneTexture,12);D.setTexture(f.boneTexture,12)}}else h.boneGlobalMatrices!==null&&k.uniformMatrix4fv(h.boneGlobalMatrices,false,f.boneMatrices);k.uniformMatrix4fv(h.modelViewMatrix,false,f._modelViewMatrix.elements);h.normalMatrix&&k.uniformMatrix3fv(h.normalMatrix,false,f._normalMatrix.elements);h.objectMatrix!==null&&k.uniformMatrix4fv(h.objectMatrix,
|
|
|
false,f.matrixWorld.elements);return g}function s(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function u(a,b,c){if(Oa!==a){a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL);Oa=a}if(a&&(Pa!==b||Ua!==c)){k.polygonOffset(b,c);Pa=b;Ua=c}}function t(a,b){var c;a==="fragment"?c=k.createShader(k.FRAGMENT_SHADER):a==="vertex"&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);
|
|
|
if(!k.getShaderParameter(c,k.COMPILE_STATUS)){console.error(k.getShaderInfoLog(c));console.error(b);return null}return c}function v(a,b,c){if(c){k.texParameteri(a,k.TEXTURE_WRAP_S,C(b.wrapS));k.texParameteri(a,k.TEXTURE_WRAP_T,C(b.wrapT));k.texParameteri(a,k.TEXTURE_MAG_FILTER,C(b.magFilter));k.texParameteri(a,k.TEXTURE_MIN_FILTER,C(b.minFilter))}else{k.texParameteri(a,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_MAG_FILTER,F(b.magFilter));
|
|
|
-k.texParameteri(a,k.TEXTURE_MIN_FILTER,F(b.minFilter))}bb&&k.texParameterf(a,bb.TEXTURE_MAX_ANISOTROPY_EXT,b.anisotropy)}function x(a,b){k.bindRenderbuffer(k.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,
|
|
|
+k.texParameteri(a,k.TEXTURE_MIN_FILTER,F(b.minFilter))}Za&&k.texParameterf(a,Za.TEXTURE_MAX_ANISOTROPY_EXT,b.anisotropy)}function x(a,b){k.bindRenderbuffer(k.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,
|
|
|
k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,a)}else k.renderbufferStorage(k.RENDERBUFFER,k.RGBA4,b.width,b.height)}function F(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?k.NEAREST:k.LINEAR}function C(a){return a===THREE.RepeatWrapping?k.REPEAT:a===THREE.ClampToEdgeWrapping?k.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?k.MIRRORED_REPEAT:a===THREE.NearestFilter?k.NEAREST:a===THREE.NearestMipMapNearestFilter?k.NEAREST_MIPMAP_NEAREST:a===
|
|
|
THREE.NearestMipMapLinearFilter?k.NEAREST_MIPMAP_LINEAR:a===THREE.LinearFilter?k.LINEAR:a===THREE.LinearMipMapNearestFilter?k.LINEAR_MIPMAP_NEAREST:a===THREE.LinearMipMapLinearFilter?k.LINEAR_MIPMAP_LINEAR:a===THREE.UnsignedByteType?k.UNSIGNED_BYTE:a===THREE.UnsignedShort4444Type?k.UNSIGNED_SHORT_4_4_4_4:a===THREE.UnsignedShort5551Type?k.UNSIGNED_SHORT_5_5_5_1:a===THREE.UnsignedShort565Type?k.UNSIGNED_SHORT_5_6_5:a===THREE.ByteType?k.BYTE:a===THREE.ShortType?k.SHORT:a===THREE.UnsignedShortType?k.UNSIGNED_SHORT:
|
|
|
a===THREE.IntType?k.INT:a===THREE.UnsignedIntType?k.UNSIGNED_INT:a===THREE.FloatType?k.FLOAT:a===THREE.AlphaFormat?k.ALPHA:a===THREE.RGBFormat?k.RGB:a===THREE.RGBAFormat?k.RGBA:a===THREE.LuminanceFormat?k.LUMINANCE:a===THREE.LuminanceAlphaFormat?k.LUMINANCE_ALPHA:a===THREE.AddEquation?k.FUNC_ADD:a===THREE.SubtractEquation?k.FUNC_SUBTRACT:a===THREE.ReverseSubtractEquation?k.FUNC_REVERSE_SUBTRACT:a===THREE.ZeroFactor?k.ZERO:a===THREE.OneFactor?k.ONE:a===THREE.SrcColorFactor?k.SRC_COLOR:a===THREE.OneMinusSrcColorFactor?
|
|
|
k.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?k.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?k.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?k.DST_ALPHA:a===THREE.OneMinusDstAlphaFactor?k.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?k.DST_COLOR:a===THREE.OneMinusDstColorFactor?k.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?k.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},z=a.canvas!==void 0?a.canvas:document.createElement("canvas"),w=a.precision!==void 0?
|
|
|
a.precision:"highp",H=a.alpha!==void 0?a.alpha:true,E=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,O=a.antialias!==void 0?a.antialias:false,Q=a.stencil!==void 0?a.stencil:true,Y=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,B=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),J=a.clearAlpha!==void 0?a.clearAlpha:0,P=a.maxLights!==void 0?a.maxLights:4;this.domElement=z;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=
|
|
|
this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};
|
|
|
-var D=this,W=[],R=0,N=null,ba=null,U=-1,I=null,ca=null,ha=0,L=-1,X=-1,S=-1,T=-1,ia=-1,ma=-1,za=-1,Ga=-1,Oa=null,Pa=null,Ua=null,nb=null,gb=0,Ob=0,ob=0,kb=0,ec=0,Va=0,Da=new THREE.Frustum,Aa=new THREE.Matrix4,hb=new THREE.Matrix4,pa=new THREE.Vector4,Fa=new THREE.Vector3,Ra=true,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},k,bb;try{if(!(k=
|
|
|
-z.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:E,antialias:O,stencil:Q,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";}catch(Gb){console.error(Gb)}(a=k.getExtension("OES_texture_float"))||console.log("THREE.WebGLRenderer: Float textures not supported.");(bb=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic"))||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");
|
|
|
-k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(B.r,B.g,B.b,J);this.context=k;H=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Wa=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),cb=bb?k.getParameter(bb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,pb=H>0,dc=
|
|
|
-pb&&a;this.getContext=function(){return k};this.supportsVertexTextures=function(){return pb};this.getMaxAnisotropy=function(){return cb};this.setSize=function(a,b){z.width=a;z.height=b;this.setViewport(0,0,z.width,z.height)};this.setViewport=function(a,b,c,d){gb=a;Ob=b;ob=c;kb=d;k.viewport(gb,Ob,ob,kb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColorHex=function(a,b){B.setHex(a);J=b;k.clearColor(B.r,
|
|
|
-B.g,B.b,J)};this.setClearColor=function(a,b){B.copy(a);J=b;k.clearColor(B.r,B.g,B.b,J)};this.getClearColor=function(){return B};this.getClearAlpha=function(){return J};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|k.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|k.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=
|
|
|
-function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit){a.__webglInit=false;delete a._modelViewMatrix;delete a._normalMatrix;delete a._normalMatrixArray;delete a._modelViewMatrixArray;delete a._objectMatrixArray;if(a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];k.deleteBuffer(c.__webglVertexBuffer);k.deleteBuffer(c.__webglNormalBuffer);k.deleteBuffer(c.__webglTangentBuffer);k.deleteBuffer(c.__webglColorBuffer);
|
|
|
-k.deleteBuffer(c.__webglUVBuffer);k.deleteBuffer(c.__webglUV2Buffer);k.deleteBuffer(c.__webglSkinVertexABuffer);k.deleteBuffer(c.__webglSkinVertexBBuffer);k.deleteBuffer(c.__webglSkinIndicesBuffer);k.deleteBuffer(c.__webglSkinWeightsBuffer);k.deleteBuffer(c.__webglFaceBuffer);k.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=0;for(e=c.numMorphTargets;d<e;d++)k.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=0;for(e=c.numMorphNormals;d<e;d++)k.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList){d=
|
|
|
-void 0;for(d in c.__webglCustomAttributesList)k.deleteBuffer(c.__webglCustomAttributesList[d].buffer)}D.info.memory.geometries--}else if(a instanceof THREE.Ribbon){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);k.deleteBuffer(a.__webglColorBuffer);D.info.memory.geometries--}else if(a instanceof THREE.Line){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);k.deleteBuffer(a.__webglColorBuffer);D.info.memory.geometries--}else if(a instanceof THREE.ParticleSystem){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);
|
|
|
-k.deleteBuffer(a.__webglColorBuffer);D.info.memory.geometries--}}};this.deallocateTexture=function(a){if(a.__webglInit){a.__webglInit=false;k.deleteTexture(a.__webglTexture);D.info.memory.textures--}};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture){k.deleteTexture(a.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;b<6;b++){k.deleteFramebuffer(a.__webglFramebuffer[b]);k.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{k.deleteFramebuffer(a.__webglFramebuffer);
|
|
|
-k.deleteRenderbuffer(a.__webglRenderbuffer)}}};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,e=false,a=0;for(c=W.length;a<c;a++){d=W[a];if(d.program===b){d.usedTimes--;d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=W.length;a<c;a++){d=W[a];d.program!==b&&e.push(d)}W=e;k.deleteProgram(b);D.info.memory.programs--}}};this.updateShadowMap=function(a,b){N=null;U=I=Ga=za=S=-1;Ra=true;X=L=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,
|
|
|
-b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=k.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=k.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=k.createBuffer();if(a.hasColors&&!a.__webglColorBuffer)a.__webglColorBuffer=k.createBuffer();if(a.hasPositions){k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.position);k.vertexAttribPointer(b.attributes.position,
|
|
|
-3,k.FLOAT,false,0,0)}if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,j,i,l,m,n,o,p=a.count*3;for(o=0;o<p;o=o+9){n=a.normalArray;d=n[o];e=n[o+1];f=n[o+2];g=n[o+3];j=n[o+4];l=n[o+5];h=n[o+6];i=n[o+7];m=n[o+8];d=(d+g+h)/3;e=(e+j+i)/3;f=(f+l+m)/3;n[o]=d;n[o+1]=e;n[o+2]=f;n[o+3]=d;n[o+4]=e;n[o+5]=f;n[o+6]=d;n[o+7]=e;n[o+8]=f}}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,
|
|
|
-3,k.FLOAT,false,0,0)}if(a.hasUvs&&c.map){k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer);k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.uv);k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,false,0,0)}if(a.hasColors&&c.vertexColors!==THREE.NoColors){k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.color);k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,false,
|
|
|
-0,0)}k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=q(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==I){I=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;f.length>1&&(b=true);d=0;for(c=f.length;d<c;++d){var g=f[d].index;if(b){var h=e.attributes.position,j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.position,j,k.FLOAT,false,0,g*j*4);h=e.attributes.normal;if(a.normal>=
|
|
|
-0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.normal,j,k.FLOAT,false,0,g*j*4)}h=e.attributes.uv;if(a.uv>=0&&h)if(h.buffer){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.uv,j,k.FLOAT,false,0,g*j*4);k.enableVertexAttribArray(a.uv)}else k.disableVertexAttribArray(a.uv);h=e.attributes.color;if(a.color>=0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.color,j,k.FLOAT,false,0,g*j*4)}h=e.attributes.tangent;if(a.tangent>=
|
|
|
-0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.tangent,j,k.FLOAT,false,0,g*j*4)}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.attributes.index.buffer)}k.drawElements(k.TRIANGLES,f[d].count,k.UNSIGNED_SHORT,f[d].start*2);D.info.render.calls++;D.info.render.vertices=D.info.render.vertices+f[d].count;D.info.render.faces=D.info.render.faces+f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,j,c=q(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+
|
|
|
-c.id*2+(d.wireframe?1:0);if(c!==I){I=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer);k.vertexAttribPointer(b.position,3,k.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);k.vertexAttribPointer(c.position,3,k.FLOAT,false,0,0)}else if(c.position>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer);k.vertexAttribPointer(c.position,
|
|
|
-3,k.FLOAT,false,0,0)}if(f.morphTargetForcedOrder.length){var i=0;j=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<j.length;){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j[i]]);k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,false,0,0);if(d.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j[i]]);k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[i]=g[j[i]];i++}}else{j=[];g=f.morphTargetInfluences;
|
|
|
-var l,m=g.length;for(l=0;l<m;l++){i=g[l];i>0&&j.push([l,i])}if(j.length>d.numSupportedMorphTargets){j.sort(h);j.length=d.numSupportedMorphTargets}else j.length>d.numSupportedMorphNormals?j.sort(h):j.length===0&&j.push([0,0]);for(i=0;i<d.numSupportedMorphTargets;){if(j[i]){l=j[i][0];k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,false,0,0);if(d.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[l]);k.vertexAttribPointer(c["morphNormal"+
|
|
|
-i],3,k.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[i]=g[l]}else{k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,false,0,0);d.morphNormals&&k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,false,0,0);f.__webglMorphTargetInfluences[i]=0}i++}}d.program.uniforms.morphTargetInfluences!==null&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(j=e.__webglCustomAttributesList.length;g<j;g++){c=e.__webglCustomAttributesList[g];
|
|
|
-if(b[c.buffer.belongsToAttribute]>=0){k.bindBuffer(k.ARRAY_BUFFER,c.buffer);k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,false,0,0)}}}if(b.color>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer);k.vertexAttribPointer(b.color,3,k.FLOAT,false,0,0)}if(b.normal>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer);k.vertexAttribPointer(b.normal,3,k.FLOAT,false,0,0)}if(b.tangent>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglTangentBuffer);k.vertexAttribPointer(b.tangent,4,k.FLOAT,
|
|
|
-false,0,0)}if(b.uv>=0)if(e.__webglUVBuffer){k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer);k.vertexAttribPointer(b.uv,2,k.FLOAT,false,0,0);k.enableVertexAttribArray(b.uv)}else k.disableVertexAttribArray(b.uv);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!==nb){k.lineWidth(d);
|
|
|
-nb=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)}D.info.render.calls++;D.info.render.vertices=D.info.render.vertices+e.__webglFaceCount;D.info.render.faces=D.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!==nb){k.lineWidth(d);nb=d}k.drawArrays(f,0,e.__webglLineCount);D.info.render.calls++}else if(f instanceof THREE.ParticleSystem){k.drawArrays(k.POINTS,0,e.__webglParticleCount);D.info.render.calls++;D.info.render.points=D.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount);D.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,o=a.__lights,n=a.fog;U=-1;Ra=true;if(b.parent===void 0){console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it...");
|
|
|
-a.add(b)}this.autoUpdateScene&&a.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);Aa.multiply(b.projectionMatrix,b.matrixWorldInverse);Da.setFromMatrix(Aa);this.autoUpdateObjects&&this.initWebGLObjects(a);j(this.renderPluginsPre,
|
|
|
-a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces=0;D.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||Da.contains(h))){s(h,b);var p=f,r=p.object,q=p.buffer,t=void 0,t=t=void 0,t=r.material;if(t instanceof THREE.MeshFaceMaterial){t=
|
|
|
-q.materialIndex;if(t>=0){t=r.geometry.materials[t];if(t.transparent){p.transparent=t;p.opaque=null}else{p.opaque=t;p.transparent=null}}}else if(t)if(t.transparent){p.transparent=t;p.opaque=null}else{p.opaque=t;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{pa.copy(h.matrixWorld.getPosition());Aa.multiplyVector3(pa);f.z=pa.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);u(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);i(a.__webglObjects,false,"",b,o,n,true,d);l(a.__webglObjectsImmediate,"",b,o,n,false,d)}else{this.setBlending(THREE.NormalBlending);i(a.__webglObjects,true,"opaque",b,o,n,false);l(a.__webglObjectsImmediate,
|
|
|
-"opaque",b,o,n,false);i(a.__webglObjects,false,"transparent",b,o,n,true);l(a.__webglObjectsImmediate,"transparent",b,o,n,true)}j(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;D.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,k,Da):e.render(function(a){D.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,j=void 0,
|
|
|
-i=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){i=g.geometry;if(i instanceof THREE.Geometry){if(i.geometryGroups===void 0){var q=i,s=void 0,t=void 0,w=void 0,v=void 0,u=void 0,x=void 0,z=void 0,F={},C=q.morphTargets.length,B=q.morphNormals.length;q.geometryGroups={};s=0;for(t=q.faces.length;s<t;s++){w=q.faces[s];v=w.materialIndex;x=v!==void 0?v:-1;F[x]===void 0&&(F[x]={hash:x,counter:0});z=F[x].hash+
|
|
|
-"_"+F[x].counter;q.geometryGroups[z]===void 0&&(q.geometryGroups[z]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:C,numMorphNormals:B});u=w instanceof THREE.Face3?3:4;if(q.geometryGroups[z].vertices+u>65535){F[x].counter=F[x].counter+1;z=F[x].hash+"_"+F[x].counter;q.geometryGroups[z]===void 0&&(q.geometryGroups[z]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:C,numMorphNormals:B})}w instanceof THREE.Face3?q.geometryGroups[z].faces3.push(s):q.geometryGroups[z].faces4.push(s);
|
|
|
-q.geometryGroups[z].vertices=q.geometryGroups[z].vertices+u}q.geometryGroupsList=[];var H=void 0;for(H in q.geometryGroups){q.geometryGroups[H].id=ha++;q.geometryGroupsList.push(q.geometryGroups[H])}}for(j in i.geometryGroups){l=i.geometryGroups[j];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 X=void 0,L=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];X=0;for(L=I.numMorphTargets;X<L;X++)I.__webglMorphTargetsBuffers.push(k.createBuffer())}if(I.numMorphNormals){I.__webglMorphNormalsBuffers=[];X=0;for(L=I.numMorphNormals;X<L;X++)I.__webglMorphNormalsBuffers.push(k.createBuffer())}D.info.memory.geometries++;
|
|
|
-var E=l,J=g,T=J.geometry,O=E.faces3,N=E.faces4,S=O.length*3+N.length*4,U=O.length*1+N.length*2,P=O.length*3+N.length*4,Q=c(J,E),ba=e(Q),R=d(Q),Y=Q.vertexColors?Q.vertexColors:false;E.__vertexArray=new Float32Array(S*3);if(R)E.__normalArray=new Float32Array(S*3);if(T.hasTangents)E.__tangentArray=new Float32Array(S*4);if(Y)E.__colorArray=new Float32Array(S*3);if(ba){if(T.faceUvs.length>0||T.faceVertexUvs.length>0)E.__uvArray=new Float32Array(S*2);if(T.faceUvs.length>1||T.faceVertexUvs.length>1)E.__uv2Array=
|
|
|
-new Float32Array(S*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){E.__skinVertexAArray=new Float32Array(S*4);E.__skinVertexBArray=new Float32Array(S*4);E.__skinIndexArray=new Float32Array(S*4);E.__skinWeightArray=new Float32Array(S*4)}E.__faceArray=new Uint16Array(U*3);E.__lineArray=new Uint16Array(P*2);var W=void 0,ca=void 0;if(E.numMorphTargets){E.__morphTargetsArrays=[];W=0;for(ca=E.numMorphTargets;W<ca;W++)E.__morphTargetsArrays.push(new Float32Array(S*3))}if(E.numMorphNormals){E.__morphNormalsArrays=
|
|
|
-[];W=0;for(ca=E.numMorphNormals;W<ca;W++)E.__morphNormalsArrays.push(new Float32Array(S*3))}E.__webglFaceCount=U*3;E.__webglLineCount=P*2;if(Q.attributes){if(E.__webglCustomAttributesList===void 0)E.__webglCustomAttributesList=[];var ia=void 0;for(ia in Q.attributes){var Ga=Q.attributes[ia],ma={},za;for(za in Ga)ma[za]=Ga[za];if(!ma.__webglInitialized||ma.createUniqueBuffers){ma.__webglInitialized=true;var Ua=1;ma.type==="v2"?Ua=2:ma.type==="v3"?Ua=3:ma.type==="v4"?Ua=4:ma.type==="c"&&(Ua=3);ma.size=
|
|
|
-Ua;ma.array=new Float32Array(S*Ua);ma.buffer=k.createBuffer();ma.buffer.belongsToAttribute=ia;Ga.needsUpdate=true;ma.__original=Ga}E.__webglCustomAttributesList.push(ma)}}E.__inittedArrays=true;i.verticesNeedUpdate=true;i.morphTargetsNeedUpdate=true;i.elementsNeedUpdate=true;i.uvsNeedUpdate=true;i.normalsNeedUpdate=true;i.tangentsNeedUpdate=true;i.colorsNeedUpdate=true}}}else if(i instanceof THREE.BufferGeometry){var Oa=i,Pa=void 0,pa=void 0,ra=void 0;for(Pa in Oa.attributes){ra=Pa==="index"?k.ELEMENT_ARRAY_BUFFER:
|
|
|
-k.ARRAY_BUFFER;pa=Oa.attributes[Pa];pa.buffer=k.createBuffer();k.bindBuffer(ra,pa.buffer);k.bufferData(ra,pa.array,k.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){i=g.geometry;if(!i.__webglVertexBuffer){var Aa=i;Aa.__webglVertexBuffer=k.createBuffer();Aa.__webglColorBuffer=k.createBuffer();D.info.memory.geometries++;var Da=i,Fa=Da.vertices.length;Da.__vertexArray=new Float32Array(Fa*3);Da.__colorArray=new Float32Array(Fa*3);Da.__webglVertexCount=Fa;i.verticesNeedUpdate=true;i.colorsNeedUpdate=
|
|
|
-true}}else if(g instanceof THREE.Line){i=g.geometry;if(!i.__webglVertexBuffer){var nb=i;nb.__webglVertexBuffer=k.createBuffer();nb.__webglColorBuffer=k.createBuffer();D.info.memory.geometries++;var gb=i,Wa=g,Ra=gb.vertices.length;gb.__vertexArray=new Float32Array(Ra*3);gb.__colorArray=new Float32Array(Ra*3);gb.__webglLineCount=Ra;b(gb,Wa);i.verticesNeedUpdate=true;i.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){i=g.geometry;if(!i.__webglVertexBuffer){var bb=i;bb.__webglVertexBuffer=
|
|
|
-k.createBuffer();bb.__webglColorBuffer=k.createBuffer();D.info.geometries++;var Va=i,Ob=g,ob=Va.vertices.length;Va.__vertexArray=new Float32Array(ob*3);Va.__colorArray=new Float32Array(ob*3);Va.__sortArray=[];Va.__webglParticleCount=ob;b(Va,Ob);i.verticesNeedUpdate=true;i.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){i=g.geometry;if(i instanceof THREE.BufferGeometry)o(h.__webglObjects,i,g);else for(j in i.geometryGroups){l=i.geometryGroups[j];o(h.__webglObjects,l,g)}}else if(g instanceof
|
|
|
-THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){i=g.geometry;o(h.__webglObjects,i,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],kb=a;db instanceof THREE.Mesh||
|
|
|
-db instanceof THREE.ParticleSystem||db instanceof THREE.Ribbon||db instanceof THREE.Line?r(kb.__webglObjects,db):db instanceof THREE.Sprite?m(kb.__webglSprites,db):db instanceof THREE.LensFlare?m(kb.__webglFlares,db):(db instanceof THREE.ImmediateRenderObject||db.immediateRenderCallback)&&r(kb.__webglObjectsImmediate,db);db.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var hb=0,pb=a.__webglObjects.length;hb<pb;hb++){var lb=a.__webglObjects[hb].object,da=lb.geometry,cb=void 0,oc=void 0,Xa=
|
|
|
-void 0;if(lb instanceof THREE.Mesh)if(da instanceof THREE.BufferGeometry){if(da.verticesNeedUpdate||da.elementsNeedUpdate||da.uvsNeedUpdate||da.normalsNeedUpdate||da.colorsNeedUpdate||da.tangentsNeedUpdate){var Ib=da,pc=k.DYNAMIC_DRAW,ec=!da.dynamic,qc=Ib.attributes,Gb=qc.index,dc=qc.position,Yc=qc.normal,Zc=qc.uv,$c=qc.color,ad=qc.tangent;if(Ib.elementsNeedUpdate&&Gb!==void 0){k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,Gb.buffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Gb.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}}da.verticesNeedUpdate=false;da.elementsNeedUpdate=false;da.uvsNeedUpdate=false;da.normalsNeedUpdate=false;da.colorsNeedUpdate=false;da.tangentsNeedUpdate=false}else{for(var bd=0,yd=da.geometryGroupsList.length;bd<yd;bd++){cb=da.geometryGroupsList[bd];Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);if(da.verticesNeedUpdate||da.morphTargetsNeedUpdate||da.elementsNeedUpdate||da.uvsNeedUpdate||
|
|
|
-da.normalsNeedUpdate||da.colorsNeedUpdate||da.tangentsNeedUpdate||oc){var fa=cb,zd=lb,Za=k.DYNAMIC_DRAW,Ad=!da.dynamic,hc=Xa;if(fa.__inittedArrays){var nd=d(hc),cd=hc.vertexColors?hc.vertexColors:false,od=e(hc),Kc=nd===THREE.SmoothShading,G=void 0,V=void 0,jb=void 0,M=void 0,rc=void 0,Rb=void 0,mb=void 0,Lc=void 0,Jb=void 0,sc=void 0,tc=void 0,Z=void 0,$=void 0,aa=void 0,na=void 0,qb=void 0,rb=void 0,sb=void 0,xc=void 0,tb=void 0,ub=void 0,vb=void 0,yc=void 0,wb=void 0,xb=void 0,yb=void 0,zc=void 0,
|
|
|
-zb=void 0,Ab=void 0,Bb=void 0,Ac=void 0,Cb=void 0,Db=void 0,Eb=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,ja=void 0,pd=void 0,Yb=void 0,uc=void 0,vc=void 0,Ja=void 0,qd=void 0,Ha=void 0,Ia=void 0,Zb=void 0,Kb=void 0,ya=0,Ea=0,Lb=0,Mb=0,eb=0,Qa=0,oa=0,Sa=0,Ba=0,K=0,ea=0,A=0,$a=void 0,Ka=fa.__vertexArray,Cc=fa.__uvArray,Dc=fa.__uv2Array,fb=fa.__normalArray,sa=fa.__tangentArray,La=fa.__colorArray,ta=fa.__skinVertexAArray,ua=fa.__skinVertexBArray,
|
|
|
-va=fa.__skinIndexArray,wa=fa.__skinWeightArray,dd=fa.__morphTargetsArrays,ed=fa.__morphNormalsArrays,fd=fa.__webglCustomAttributesList,y=void 0,Fb=fa.__faceArray,ab=fa.__lineArray,Ta=zd.geometry,Bd=Ta.elementsNeedUpdate,rd=Ta.uvsNeedUpdate,Cd=Ta.normalsNeedUpdate,Dd=Ta.tangentsNeedUpdate,Ed=Ta.colorsNeedUpdate,Fd=Ta.morphTargetsNeedUpdate,ic=Ta.vertices,ka=fa.faces3,la=fa.faces4,Ca=Ta.faces,gd=Ta.faceVertexUvs[0],hd=Ta.faceVertexUvs[1],jc=Ta.skinVerticesA,kc=Ta.skinVerticesB,lc=Ta.skinIndices,$b=
|
|
|
-Ta.skinWeights,ac=Ta.morphTargets,Oc=Ta.morphNormals;if(Ta.verticesNeedUpdate){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=ic[M.a];$=ic[M.b];aa=ic[M.c];Ka[Ea]=Z.x;Ka[Ea+1]=Z.y;Ka[Ea+2]=Z.z;Ka[Ea+3]=$.x;Ka[Ea+4]=$.y;Ka[Ea+5]=$.z;Ka[Ea+6]=aa.x;Ka[Ea+7]=aa.y;Ka[Ea+8]=aa.z;Ea=Ea+9}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=ic[M.a];$=ic[M.b];aa=ic[M.c];na=ic[M.d];Ka[Ea]=Z.x;Ka[Ea+1]=Z.y;Ka[Ea+2]=Z.z;Ka[Ea+3]=$.x;Ka[Ea+4]=$.y;Ka[Ea+5]=$.z;Ka[Ea+6]=aa.x;Ka[Ea+7]=aa.y;Ka[Ea+8]=aa.z;Ka[Ea+9]=na.x;Ka[Ea+10]=
|
|
|
-na.y;Ka[Ea+11]=na.z;Ea=Ea+12}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ka,Za)}if(Fd){Ja=0;for(qd=ac.length;Ja<qd;Ja++){G=ea=0;for(V=ka.length;G<V;G++){Zb=ka[G];M=Ca[Zb];Z=ac[Ja].vertices[M.a];$=ac[Ja].vertices[M.b];aa=ac[Ja].vertices[M.c];Ha=dd[Ja];Ha[ea]=Z.x;Ha[ea+1]=Z.y;Ha[ea+2]=Z.z;Ha[ea+3]=$.x;Ha[ea+4]=$.y;Ha[ea+5]=$.z;Ha[ea+6]=aa.x;Ha[ea+7]=aa.y;Ha[ea+8]=aa.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ja].vertexNormals[Zb];tb=Kb.a;ub=Kb.b;vb=Kb.c}else vb=ub=tb=Oc[Ja].faceNormals[Zb];
|
|
|
-Ia=ed[Ja];Ia[ea]=tb.x;Ia[ea+1]=tb.y;Ia[ea+2]=tb.z;Ia[ea+3]=ub.x;Ia[ea+4]=ub.y;Ia[ea+5]=ub.z;Ia[ea+6]=vb.x;Ia[ea+7]=vb.y;Ia[ea+8]=vb.z}ea=ea+9}G=0;for(V=la.length;G<V;G++){Zb=la[G];M=Ca[Zb];Z=ac[Ja].vertices[M.a];$=ac[Ja].vertices[M.b];aa=ac[Ja].vertices[M.c];na=ac[Ja].vertices[M.d];Ha=dd[Ja];Ha[ea]=Z.x;Ha[ea+1]=Z.y;Ha[ea+2]=Z.z;Ha[ea+3]=$.x;Ha[ea+4]=$.y;Ha[ea+5]=$.z;Ha[ea+6]=aa.x;Ha[ea+7]=aa.y;Ha[ea+8]=aa.z;Ha[ea+9]=na.x;Ha[ea+10]=na.y;Ha[ea+11]=na.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ja].vertexNormals[Zb];
|
|
|
-tb=Kb.a;ub=Kb.b;vb=Kb.c;yc=Kb.d}else yc=vb=ub=tb=Oc[Ja].faceNormals[Zb];Ia=ed[Ja];Ia[ea]=tb.x;Ia[ea+1]=tb.y;Ia[ea+2]=tb.z;Ia[ea+3]=ub.x;Ia[ea+4]=ub.y;Ia[ea+5]=ub.z;Ia[ea+6]=vb.x;Ia[ea+7]=vb.y;Ia[ea+8]=vb.z;Ia[ea+9]=yc.x;Ia[ea+10]=yc.y;Ia[ea+11]=yc.z}ea=ea+12}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglMorphTargetsBuffers[Ja]);k.bufferData(k.ARRAY_BUFFER,dd[Ja],Za);if(hc.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglMorphNormalsBuffers[Ja]);k.bufferData(k.ARRAY_BUFFER,ed[Ja],Za)}}}if($b.length){G=
|
|
|
-0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];zb=$b[M.a];Ab=$b[M.b];Bb=$b[M.c];wa[K]=zb.x;wa[K+1]=zb.y;wa[K+2]=zb.z;wa[K+3]=zb.w;wa[K+4]=Ab.x;wa[K+5]=Ab.y;wa[K+6]=Ab.z;wa[K+7]=Ab.w;wa[K+8]=Bb.x;wa[K+9]=Bb.y;wa[K+10]=Bb.z;wa[K+11]=Bb.w;Cb=lc[M.a];Db=lc[M.b];Eb=lc[M.c];va[K]=Cb.x;va[K+1]=Cb.y;va[K+2]=Cb.z;va[K+3]=Cb.w;va[K+4]=Db.x;va[K+5]=Db.y;va[K+6]=Db.z;va[K+7]=Db.w;va[K+8]=Eb.x;va[K+9]=Eb.y;va[K+10]=Eb.z;va[K+11]=Eb.w;Sb=jc[M.a];Tb=jc[M.b];Ub=jc[M.c];ta[K]=Sb.x;ta[K+1]=Sb.y;ta[K+2]=Sb.z;ta[K+3]=1;ta[K+
|
|
|
-4]=Tb.x;ta[K+5]=Tb.y;ta[K+6]=Tb.z;ta[K+7]=1;ta[K+8]=Ub.x;ta[K+9]=Ub.y;ta[K+10]=Ub.z;ta[K+11]=1;Vb=kc[M.a];Wb=kc[M.b];Xb=kc[M.c];ua[K]=Vb.x;ua[K+1]=Vb.y;ua[K+2]=Vb.z;ua[K+3]=1;ua[K+4]=Wb.x;ua[K+5]=Wb.y;ua[K+6]=Wb.z;ua[K+7]=1;ua[K+8]=Xb.x;ua[K+9]=Xb.y;ua[K+10]=Xb.z;ua[K+11]=1;K=K+12}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];zb=$b[M.a];Ab=$b[M.b];Bb=$b[M.c];Ac=$b[M.d];wa[K]=zb.x;wa[K+1]=zb.y;wa[K+2]=zb.z;wa[K+3]=zb.w;wa[K+4]=Ab.x;wa[K+5]=Ab.y;wa[K+6]=Ab.z;wa[K+7]=Ab.w;wa[K+8]=Bb.x;wa[K+9]=Bb.y;wa[K+10]=
|
|
|
-Bb.z;wa[K+11]=Bb.w;wa[K+12]=Ac.x;wa[K+13]=Ac.y;wa[K+14]=Ac.z;wa[K+15]=Ac.w;Cb=lc[M.a];Db=lc[M.b];Eb=lc[M.c];Bc=lc[M.d];va[K]=Cb.x;va[K+1]=Cb.y;va[K+2]=Cb.z;va[K+3]=Cb.w;va[K+4]=Db.x;va[K+5]=Db.y;va[K+6]=Db.z;va[K+7]=Db.w;va[K+8]=Eb.x;va[K+9]=Eb.y;va[K+10]=Eb.z;va[K+11]=Eb.w;va[K+12]=Bc.x;va[K+13]=Bc.y;va[K+14]=Bc.z;va[K+15]=Bc.w;Sb=jc[M.a];Tb=jc[M.b];Ub=jc[M.c];Mc=jc[M.d];ta[K]=Sb.x;ta[K+1]=Sb.y;ta[K+2]=Sb.z;ta[K+3]=1;ta[K+4]=Tb.x;ta[K+5]=Tb.y;ta[K+6]=Tb.z;ta[K+7]=1;ta[K+8]=Ub.x;ta[K+9]=Ub.y;ta[K+
|
|
|
-10]=Ub.z;ta[K+11]=1;ta[K+12]=Mc.x;ta[K+13]=Mc.y;ta[K+14]=Mc.z;ta[K+15]=1;Vb=kc[M.a];Wb=kc[M.b];Xb=kc[M.c];Nc=kc[M.d];ua[K]=Vb.x;ua[K+1]=Vb.y;ua[K+2]=Vb.z;ua[K+3]=1;ua[K+4]=Wb.x;ua[K+5]=Wb.y;ua[K+6]=Wb.z;ua[K+7]=1;ua[K+8]=Xb.x;ua[K+9]=Xb.y;ua[K+10]=Xb.z;ua[K+11]=1;ua[K+12]=Nc.x;ua[K+13]=Nc.y;ua[K+14]=Nc.z;ua[K+15]=1;K=K+16}if(K>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinVertexABuffer);k.bufferData(k.ARRAY_BUFFER,ta,Za);k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinVertexBBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
-ua,Za);k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinIndicesBuffer);k.bufferData(k.ARRAY_BUFFER,va,Za);k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinWeightsBuffer);k.bufferData(k.ARRAY_BUFFER,wa,Za)}}if(Ed&&cd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];mb=M.vertexColors;Lc=M.color;if(mb.length===3&&cd===THREE.VertexColors){wb=mb[0];xb=mb[1];yb=mb[2]}else yb=xb=wb=Lc;La[Ba]=wb.r;La[Ba+1]=wb.g;La[Ba+2]=wb.b;La[Ba+3]=xb.r;La[Ba+4]=xb.g;La[Ba+5]=xb.b;La[Ba+6]=yb.r;La[Ba+7]=yb.g;La[Ba+8]=yb.b;Ba=Ba+9}G=0;for(V=
|
|
|
-la.length;G<V;G++){M=Ca[la[G]];mb=M.vertexColors;Lc=M.color;if(mb.length===4&&cd===THREE.VertexColors){wb=mb[0];xb=mb[1];yb=mb[2];zc=mb[3]}else zc=yb=xb=wb=Lc;La[Ba]=wb.r;La[Ba+1]=wb.g;La[Ba+2]=wb.b;La[Ba+3]=xb.r;La[Ba+4]=xb.g;La[Ba+5]=xb.b;La[Ba+6]=yb.r;La[Ba+7]=yb.g;La[Ba+8]=yb.b;La[Ba+9]=zc.r;La[Ba+10]=zc.g;La[Ba+11]=zc.b;Ba=Ba+12}if(Ba>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,La,Za)}}if(Dd&&Ta.hasTangents){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Jb=M.vertexTangents;
|
|
|
-qb=Jb[0];rb=Jb[1];sb=Jb[2];sa[oa]=qb.x;sa[oa+1]=qb.y;sa[oa+2]=qb.z;sa[oa+3]=qb.w;sa[oa+4]=rb.x;sa[oa+5]=rb.y;sa[oa+6]=rb.z;sa[oa+7]=rb.w;sa[oa+8]=sb.x;sa[oa+9]=sb.y;sa[oa+10]=sb.z;sa[oa+11]=sb.w;oa=oa+12}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Jb=M.vertexTangents;qb=Jb[0];rb=Jb[1];sb=Jb[2];xc=Jb[3];sa[oa]=qb.x;sa[oa+1]=qb.y;sa[oa+2]=qb.z;sa[oa+3]=qb.w;sa[oa+4]=rb.x;sa[oa+5]=rb.y;sa[oa+6]=rb.z;sa[oa+7]=rb.w;sa[oa+8]=sb.x;sa[oa+9]=sb.y;sa[oa+10]=sb.z;sa[oa+11]=sb.w;sa[oa+12]=xc.x;sa[oa+13]=xc.y;sa[oa+
|
|
|
-14]=xc.z;sa[oa+15]=xc.w;oa=oa+16}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,sa,Za)}if(Cd&&nd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];rc=M.vertexNormals;Rb=M.normal;if(rc.length===3&&Kc)for(ja=0;ja<3;ja++){Yb=rc[ja];fb[Qa]=Yb.x;fb[Qa+1]=Yb.y;fb[Qa+2]=Yb.z;Qa=Qa+3}else for(ja=0;ja<3;ja++){fb[Qa]=Rb.x;fb[Qa+1]=Rb.y;fb[Qa+2]=Rb.z;Qa=Qa+3}}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];rc=M.vertexNormals;Rb=M.normal;if(rc.length===4&&Kc)for(ja=0;ja<4;ja++){Yb=rc[ja];fb[Qa]=
|
|
|
-Yb.x;fb[Qa+1]=Yb.y;fb[Qa+2]=Yb.z;Qa=Qa+3}else for(ja=0;ja<4;ja++){fb[Qa]=Rb.x;fb[Qa+1]=Rb.y;fb[Qa+2]=Rb.z;Qa=Qa+3}}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,fb,Za)}if(rd&&gd&&od){G=0;for(V=ka.length;G<V;G++){jb=ka[G];M=Ca[jb];sc=gd[jb];if(sc!==void 0)for(ja=0;ja<3;ja++){uc=sc[ja];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}G=0;for(V=la.length;G<V;G++){jb=la[G];M=Ca[jb];sc=gd[jb];if(sc!==void 0)for(ja=0;ja<4;ja++){uc=sc[ja];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}if(Lb>0){k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
-fa.__webglUVBuffer);k.bufferData(k.ARRAY_BUFFER,Cc,Za)}}if(rd&&hd&&od){G=0;for(V=ka.length;G<V;G++){jb=ka[G];M=Ca[jb];tc=hd[jb];if(tc!==void 0)for(ja=0;ja<3;ja++){vc=tc[ja];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}G=0;for(V=la.length;G<V;G++){jb=la[G];M=Ca[jb];tc=hd[jb];if(tc!==void 0)for(ja=0;ja<4;ja++){vc=tc[ja];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}if(Mb>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglUV2Buffer);k.bufferData(k.ARRAY_BUFFER,Dc,Za)}}if(Bd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Fb[eb]=ya;Fb[eb+
|
|
|
-1]=ya+1;Fb[eb+2]=ya+2;eb=eb+3;ab[Sa]=ya;ab[Sa+1]=ya+1;ab[Sa+2]=ya;ab[Sa+3]=ya+2;ab[Sa+4]=ya+1;ab[Sa+5]=ya+2;Sa=Sa+6;ya=ya+3}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Fb[eb]=ya;Fb[eb+1]=ya+1;Fb[eb+2]=ya+3;Fb[eb+3]=ya+1;Fb[eb+4]=ya+2;Fb[eb+5]=ya+3;eb=eb+6;ab[Sa]=ya;ab[Sa+1]=ya+1;ab[Sa+2]=ya;ab[Sa+3]=ya+3;ab[Sa+4]=ya+1;ab[Sa+5]=ya+2;ab[Sa+6]=ya+2;ab[Sa+7]=ya+3;Sa=Sa+8;ya=ya+4}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,fa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb,Za);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
-fa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,ab,Za)}if(fd){ja=0;for(pd=fd.length;ja<pd;ja++){y=fd[ja];if(y.__original.needsUpdate){A=0;if(y.size===1)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];y.array[A]=y.value[M.a];y.array[A+1]=y.value[M.b];y.array[A+2]=y.value[M.c];A=A+3}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];y.array[A]=y.value[M.a];y.array[A+1]=y.value[M.b];y.array[A+2]=y.value[M.c];y.array[A+3]=y.value[M.d];A=A+4}}else{if(y.boundTo===
|
|
|
-"faces"){G=0;for(V=ka.length;G<V;G++){$a=y.value[ka[G]];y.array[A]=$a;y.array[A+1]=$a;y.array[A+2]=$a;A=A+3}G=0;for(V=la.length;G<V;G++){$a=y.value[la[G]];y.array[A]=$a;y.array[A+1]=$a;y.array[A+2]=$a;y.array[A+3]=$a;A=A+4}}}else if(y.size===2)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;A=A+6}G=0;for(V=la.length;G<
|
|
|
-V;G++){M=Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;y.array[A+6]=na.x;y.array[A+7]=na.y;A=A+8}}else{if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=$a=y.value[ka[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;A=A+6}G=0;for(V=la.length;G<V;G++){na=aa=$=Z=$a=y.value[la[G]];y.array[A]=Z.x;y.array[A+1]=
|
|
|
-Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;y.array[A+6]=na.x;y.array[A+7]=na.y;A=A+8}}}else if(y.size===3){var ga;ga=y.type==="c"?["r","g","b"]:["x","y","z"];if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+
|
|
|
-8]=aa[ga[2]];A=A+9}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];y.array[A+9]=na[ga[0]];y.array[A+10]=na[ga[1]];y.array[A+11]=na[ga[2]];A=A+12}}else if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=$a=y.value[ka[G]];y.array[A]=Z[ga[0]];
|
|
|
-y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];A=A+9}G=0;for(V=la.length;G<V;G++){na=aa=$=Z=$a=y.value[la[G]];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];y.array[A+9]=na[ga[0]];y.array[A+10]=na[ga[1]];y.array[A+11]=
|
|
|
-na[ga[2]];A=A+12}}}else if(y.size===4)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;A=A+12}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=
|
|
|
-Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;y.array[A+12]=na.x;y.array[A+13]=na.y;y.array[A+14]=na.z;y.array[A+15]=na.w;A=A+16}}else if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=$a=y.value[ka[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+
|
|
|
-8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;A=A+12}G=0;for(V=la.length;G<V;G++){na=aa=$=Z=$a=y.value[la[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;y.array[A+12]=na.x;y.array[A+13]=na.y;y.array[A+14]=na.z;y.array[A+15]=na.w;A=A+16}}k.bindBuffer(k.ARRAY_BUFFER,y.buffer);k.bufferData(k.ARRAY_BUFFER,y.array,Za)}}}if(Ad){delete fa.__inittedArrays;
|
|
|
-delete fa.__colorArray;delete fa.__normalArray;delete fa.__tangentArray;delete fa.__uvArray;delete fa.__uv2Array;delete fa.__faceArray;delete fa.__vertexArray;delete fa.__lineArray;delete fa.__skinVertexAArray;delete fa.__skinVertexBArray;delete fa.__skinIndexArray;delete fa.__skinWeightArray}}}}da.verticesNeedUpdate=false;da.morphTargetsNeedUpdate=false;da.elementsNeedUpdate=false;da.uvsNeedUpdate=false;da.normalsNeedUpdate=false;da.colorsNeedUpdate=false;da.tangentsNeedUpdate=false;Xa.attributes&&
|
|
|
-p(Xa)}else if(lb instanceof THREE.Ribbon){if(da.verticesNeedUpdate||da.colorsNeedUpdate){var bc=da,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)}}da.verticesNeedUpdate=false;da.colorsNeedUpdate=false}else if(lb instanceof THREE.Line){Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);if(da.verticesNeedUpdate||da.colorsNeedUpdate||oc){var Nb=da,id=k.DYNAMIC_DRAW,Gc=void 0,Hc=void 0,Tc=void 0,xa=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,Na=void 0,wc=void 0,Ya=void 0,qa=void 0;if(Nb.verticesNeedUpdate){for(Gc=0;Gc<Jd;Gc++){Tc=vd[Gc];xa=Gc*3;Vc[xa]=Tc.x;Vc[xa+1]=Tc.y;Vc[xa+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];xa=Hc*3;Wc[xa]=Uc.r;Wc[xa+1]=Uc.g;Wc[xa+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++){qa=
|
|
|
-jd[Xc];if(qa.needsUpdate&&(qa.boundTo===void 0||qa.boundTo==="vertices")){xa=0;wc=qa.value.length;if(qa.size===1)for(Na=0;Na<wc;Na++)qa.array[Na]=qa.value[Na];else if(qa.size===2)for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;xa=xa+2}else if(qa.size===3)if(qa.type==="c")for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.r;qa.array[xa+1]=Ya.g;qa.array[xa+2]=Ya.b;xa=xa+3}else for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;qa.array[xa+2]=Ya.z;
|
|
|
-xa=xa+3}else if(qa.size===4)for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;qa.array[xa+2]=Ya.z;qa.array[xa+3]=Ya.w;xa=xa+4}k.bindBuffer(k.ARRAY_BUFFER,qa.buffer);k.bufferData(k.ARRAY_BUFFER,qa.array,id)}}}}da.verticesNeedUpdate=false;da.colorsNeedUpdate=false;Xa.attributes&&p(Xa)}else if(lb instanceof THREE.ParticleSystem){Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);(da.verticesNeedUpdate||da.colorsNeedUpdate||lb.sortParticles||oc)&&f(da,k.DYNAMIC_DRAW,lb);da.verticesNeedUpdate=
|
|
|
-false;da.colorsNeedUpdate=false;Xa.attributes&&p(Xa)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,m;a instanceof THREE.MeshDepthMaterial?m="depth":a instanceof THREE.MeshNormalMaterial?m="normal":a instanceof THREE.MeshBasicMaterial?m="basic":a instanceof THREE.MeshLambertMaterial?m="lambert":a instanceof THREE.MeshPhongMaterial?m="phong":a instanceof THREE.LineBasicMaterial?m="basic":a instanceof THREE.ParticleBasicMaterial&&(m="particle_basic");if(m){var o=THREE.ShaderLib[m];a.uniforms=
|
|
|
-THREE.UniformsUtils.clone(o.uniforms);a.vertexShader=o.vertexShader;a.fragmentShader=o.fragmentShader}var n,p;n=g=e=o=0;for(f=b.length;n<f;n++){p=b[n];if(!p.onlyShadow){p instanceof THREE.DirectionalLight&&g++;p instanceof THREE.PointLight&&e++;p instanceof THREE.SpotLight&&o++}}if(e+o+g<=P){n=g;f=e}else{n=Math.ceil(P*g/(e+g));o=f=P-n}e=n;g=o;o=l=0;for(n=b.length;o<n;o++){p=b[o];if(p.castShadow){p instanceof THREE.SpotLight&&l++;p instanceof THREE.DirectionalLight&&!p.shadowCascade&&l++}}if(dc&&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;n=a.vertexShader;var o=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.useVertexTexture,boneTextureWidth:d.boneTextureWidth,boneTextureHeight:d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxShadows:l,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:d&&d.doubleSided},q,d=[];if(m)d.push(m);else{d.push(p);d.push(n)}for(q in c){d.push(q);d.push(c[q])}m=d.join();q=0;for(d=W.length;q<d;q++){e=W[q];if(e.code===m){e.usedTimes++;r=e.program;break a}}q=k.createProgram();d=["precision "+w+" float;",pb?"#define VERTEX_TEXTURES":"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.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 objectMatrix;\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");
|
|
|
+var D=this,W=[],R=0,N=null,ba=null,U=-1,I=null,ca=null,ha=0,L=-1,X=-1,S=-1,T=-1,ia=-1,ma=-1,za=-1,Ga=-1,Oa=null,Pa=null,Ua=null,nb=null,gb=0,Ob=0,ob=0,kb=0,ec=0,Va=0,Da=new THREE.Frustum,Aa=new THREE.Matrix4,hb=new THREE.Matrix4,pa=new THREE.Vector4,Fa=new THREE.Vector3,Ra=true,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},k,Za;try{if(!(k=
|
|
|
+z.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:E,antialias:O,stencil:Q,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";}catch(Gb){console.error(Gb)}a=k.getExtension("OES_texture_float");H=k.getExtension("OES_standard_derivatives");Za=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");a||console.log("THREE.WebGLRenderer: Float textures not supported.");H||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");
|
|
|
+Za||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(B.r,B.g,B.b,J);this.context=k;H=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Wa=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),
|
|
|
+cb=Za?k.getParameter(Za.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,pb=H>0,dc=pb&&a;this.getContext=function(){return k};this.supportsVertexTextures=function(){return pb};this.getMaxAnisotropy=function(){return cb};this.setSize=function(a,b){z.width=a;z.height=b;this.setViewport(0,0,z.width,z.height)};this.setViewport=function(a,b,c,d){gb=a;Ob=b;ob=c;kb=d;k.viewport(gb,Ob,ob,kb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};
|
|
|
+this.setClearColorHex=function(a,b){B.setHex(a);J=b;k.clearColor(B.r,B.g,B.b,J)};this.setClearColor=function(a,b){B.copy(a);J=b;k.clearColor(B.r,B.g,B.b,J)};this.getClearColor=function(){return B};this.getClearAlpha=function(){return J};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|k.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|k.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=
|
|
|
+function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit){a.__webglInit=false;delete a._modelViewMatrix;delete a._normalMatrix;delete a._normalMatrixArray;delete a._modelViewMatrixArray;delete a._objectMatrixArray;if(a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];k.deleteBuffer(c.__webglVertexBuffer);k.deleteBuffer(c.__webglNormalBuffer);
|
|
|
+k.deleteBuffer(c.__webglTangentBuffer);k.deleteBuffer(c.__webglColorBuffer);k.deleteBuffer(c.__webglUVBuffer);k.deleteBuffer(c.__webglUV2Buffer);k.deleteBuffer(c.__webglSkinVertexABuffer);k.deleteBuffer(c.__webglSkinVertexBBuffer);k.deleteBuffer(c.__webglSkinIndicesBuffer);k.deleteBuffer(c.__webglSkinWeightsBuffer);k.deleteBuffer(c.__webglFaceBuffer);k.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=0;for(e=c.numMorphTargets;d<e;d++)k.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=
|
|
|
+0;for(e=c.numMorphNormals;d<e;d++)k.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList){d=void 0;for(d in c.__webglCustomAttributesList)k.deleteBuffer(c.__webglCustomAttributesList[d].buffer)}D.info.memory.geometries--}else if(a instanceof THREE.Ribbon){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);k.deleteBuffer(a.__webglColorBuffer);D.info.memory.geometries--}else if(a instanceof THREE.Line){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);k.deleteBuffer(a.__webglColorBuffer);
|
|
|
+D.info.memory.geometries--}else if(a instanceof THREE.ParticleSystem){a=a.geometry;k.deleteBuffer(a.__webglVertexBuffer);k.deleteBuffer(a.__webglColorBuffer);D.info.memory.geometries--}}};this.deallocateTexture=function(a){if(a.__webglInit){a.__webglInit=false;k.deleteTexture(a.__webglTexture);D.info.memory.textures--}};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture){k.deleteTexture(a.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;b<6;b++){k.deleteFramebuffer(a.__webglFramebuffer[b]);
|
|
|
+k.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{k.deleteFramebuffer(a.__webglFramebuffer);k.deleteRenderbuffer(a.__webglRenderbuffer)}}};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,e=false,a=0;for(c=W.length;a<c;a++){d=W[a];if(d.program===b){d.usedTimes--;d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=W.length;a<c;a++){d=W[a];d.program!==b&&e.push(d)}W=e;k.deleteProgram(b);D.info.memory.programs--}}};this.updateShadowMap=function(a,b){N=null;U=I=Ga=
|
|
|
+za=S=-1;Ra=true;X=L=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=k.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=k.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=k.createBuffer();if(a.hasColors&&!a.__webglColorBuffer)a.__webglColorBuffer=k.createBuffer();if(a.hasPositions){k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
+a.positionArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.position);k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,false,0,0)}if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,j,i,l,m,n,o,p=a.count*3;for(o=0;o<p;o=o+9){n=a.normalArray;d=n[o];e=n[o+1];f=n[o+2];g=n[o+3];j=n[o+4];l=n[o+5];h=n[o+6];i=n[o+7];m=n[o+8];d=(d+g+h)/3;e=(e+j+i)/3;f=(f+l+m)/3;n[o]=d;n[o+1]=e;n[o+2]=f;n[o+3]=d;n[o+4]=e;n[o+5]=f;n[o+6]=d;n[o+
|
|
|
+7]=e;n[o+8]=f}}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,false,0,0)}if(a.hasUvs&&c.map){k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer);k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.uv);k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,false,0,0)}if(a.hasColors&&c.vertexColors!==THREE.NoColors){k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer);
|
|
|
+k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.color);k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,false,0,0)}k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=q(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==I){I=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;f.length>1&&(b=true);d=0;for(c=f.length;d<c;++d){var g=f[d].index;if(b){var h=e.attributes.position,
|
|
|
+j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.position,j,k.FLOAT,false,0,g*j*4);h=e.attributes.normal;if(a.normal>=0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.normal,j,k.FLOAT,false,0,g*j*4)}h=e.attributes.uv;if(a.uv>=0&&h)if(h.buffer){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.uv,j,k.FLOAT,false,0,g*j*4);k.enableVertexAttribArray(a.uv)}else k.disableVertexAttribArray(a.uv);h=e.attributes.color;if(a.color>=
|
|
|
+0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.color,j,k.FLOAT,false,0,g*j*4)}h=e.attributes.tangent;if(a.tangent>=0&&h){j=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.tangent,j,k.FLOAT,false,0,g*j*4)}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.attributes.index.buffer)}k.drawElements(k.TRIANGLES,f[d].count,k.UNSIGNED_SHORT,f[d].start*2);D.info.render.calls++;D.info.render.vertices=D.info.render.vertices+f[d].count;D.info.render.faces=D.info.render.faces+
|
|
|
+f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,j,c=q(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+c.id*2+(d.wireframe?1:0);if(c!==I){I=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer);k.vertexAttribPointer(b.position,3,k.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);k.vertexAttribPointer(c.position,
|
|
|
+3,k.FLOAT,false,0,0)}else if(c.position>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer);k.vertexAttribPointer(c.position,3,k.FLOAT,false,0,0)}if(f.morphTargetForcedOrder.length){var i=0;j=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<j.length;){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j[i]]);k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,false,0,0);if(d.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j[i]]);
|
|
|
+k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[i]=g[j[i]];i++}}else{j=[];g=f.morphTargetInfluences;var l,m=g.length;for(l=0;l<m;l++){i=g[l];i>0&&j.push([l,i])}if(j.length>d.numSupportedMorphTargets){j.sort(h);j.length=d.numSupportedMorphTargets}else j.length>d.numSupportedMorphNormals?j.sort(h):j.length===0&&j.push([0,0]);for(i=0;i<d.numSupportedMorphTargets;){if(j[i]){l=j[i][0];k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);k.vertexAttribPointer(c["morphTarget"+
|
|
|
+i],3,k.FLOAT,false,0,0);if(d.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[l]);k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[i]=g[l]}else{k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,false,0,0);d.morphNormals&&k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,false,0,0);f.__webglMorphTargetInfluences[i]=0}i++}}d.program.uniforms.morphTargetInfluences!==null&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=
|
|
|
+0;for(j=e.__webglCustomAttributesList.length;g<j;g++){c=e.__webglCustomAttributesList[g];if(b[c.buffer.belongsToAttribute]>=0){k.bindBuffer(k.ARRAY_BUFFER,c.buffer);k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,false,0,0)}}}if(b.color>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer);k.vertexAttribPointer(b.color,3,k.FLOAT,false,0,0)}if(b.normal>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer);k.vertexAttribPointer(b.normal,3,k.FLOAT,false,0,0)}if(b.tangent>=0){k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+e.__webglTangentBuffer);k.vertexAttribPointer(b.tangent,4,k.FLOAT,false,0,0)}if(b.uv>=0)if(e.__webglUVBuffer){k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer);k.vertexAttribPointer(b.uv,2,k.FLOAT,false,0,0);k.enableVertexAttribArray(b.uv)}else k.disableVertexAttribArray(b.uv);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!==nb){k.lineWidth(d);nb=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)}D.info.render.calls++;D.info.render.vertices=D.info.render.vertices+e.__webglFaceCount;D.info.render.faces=D.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!==nb){k.lineWidth(d);nb=d}k.drawArrays(f,0,e.__webglLineCount);D.info.render.calls++}else if(f instanceof THREE.ParticleSystem){k.drawArrays(k.POINTS,0,e.__webglParticleCount);D.info.render.calls++;D.info.render.points=D.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount);D.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,o=a.__lights,
|
|
|
+n=a.fog;U=-1;Ra=true;if(b.parent===void 0){console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it...");a.add(b)}this.autoUpdateScene&&a.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);Aa.multiply(b.projectionMatrix,
|
|
|
+b.matrixWorldInverse);Da.setFromMatrix(Aa);this.autoUpdateObjects&&this.initWebGLObjects(a);j(this.renderPluginsPre,a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces=0;D.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||
|
|
|
+Da.contains(h))){s(h,b);var p=f,r=p.object,q=p.buffer,t=void 0,t=t=void 0,t=r.material;if(t instanceof THREE.MeshFaceMaterial){t=q.materialIndex;if(t>=0){t=r.geometry.materials[t];if(t.transparent){p.transparent=t;p.opaque=null}else{p.opaque=t;p.transparent=null}}}else if(t)if(t.transparent){p.transparent=t;p.opaque=null}else{p.opaque=t;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{pa.copy(h.matrixWorld.getPosition());Aa.multiplyVector3(pa);f.z=pa.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);u(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);i(a.__webglObjects,false,"",b,o,n,true,d);l(a.__webglObjectsImmediate,
|
|
|
+"",b,o,n,false,d)}else{this.setBlending(THREE.NormalBlending);i(a.__webglObjects,true,"opaque",b,o,n,false);l(a.__webglObjectsImmediate,"opaque",b,o,n,false);i(a.__webglObjects,false,"transparent",b,o,n,true);l(a.__webglObjectsImmediate,"transparent",b,o,n,true)}j(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;D.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,k,Da):e.render(function(a){D.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,j=void 0,i=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){i=g.geometry;if(i instanceof THREE.Geometry){if(i.geometryGroups===void 0){var q=i,s=void 0,t=void 0,w=void 0,v=void 0,u=void 0,x=void 0,z=void 0,F={},C=q.morphTargets.length,B=q.morphNormals.length;q.geometryGroups={};s=0;for(t=q.faces.length;s<
|
|
|
+t;s++){w=q.faces[s];v=w.materialIndex;x=v!==void 0?v:-1;F[x]===void 0&&(F[x]={hash:x,counter:0});z=F[x].hash+"_"+F[x].counter;q.geometryGroups[z]===void 0&&(q.geometryGroups[z]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:C,numMorphNormals:B});u=w instanceof THREE.Face3?3:4;if(q.geometryGroups[z].vertices+u>65535){F[x].counter=F[x].counter+1;z=F[x].hash+"_"+F[x].counter;q.geometryGroups[z]===void 0&&(q.geometryGroups[z]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:C,
|
|
|
+numMorphNormals:B})}w instanceof THREE.Face3?q.geometryGroups[z].faces3.push(s):q.geometryGroups[z].faces4.push(s);q.geometryGroups[z].vertices=q.geometryGroups[z].vertices+u}q.geometryGroupsList=[];var H=void 0;for(H in q.geometryGroups){q.geometryGroups[H].id=ha++;q.geometryGroupsList.push(q.geometryGroups[H])}}for(j in i.geometryGroups){l=i.geometryGroups[j];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 X=void 0,L=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];X=0;for(L=I.numMorphTargets;X<L;X++)I.__webglMorphTargetsBuffers.push(k.createBuffer())}if(I.numMorphNormals){I.__webglMorphNormalsBuffers=
|
|
|
+[];X=0;for(L=I.numMorphNormals;X<L;X++)I.__webglMorphNormalsBuffers.push(k.createBuffer())}D.info.memory.geometries++;var E=l,J=g,T=J.geometry,O=E.faces3,N=E.faces4,S=O.length*3+N.length*4,U=O.length*1+N.length*2,P=O.length*3+N.length*4,Q=c(J,E),ba=e(Q),R=d(Q),Y=Q.vertexColors?Q.vertexColors:false;E.__vertexArray=new Float32Array(S*3);if(R)E.__normalArray=new Float32Array(S*3);if(T.hasTangents)E.__tangentArray=new Float32Array(S*4);if(Y)E.__colorArray=new Float32Array(S*3);if(ba){if(T.faceUvs.length>
|
|
|
+0||T.faceVertexUvs.length>0)E.__uvArray=new Float32Array(S*2);if(T.faceUvs.length>1||T.faceVertexUvs.length>1)E.__uv2Array=new Float32Array(S*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){E.__skinVertexAArray=new Float32Array(S*4);E.__skinVertexBArray=new Float32Array(S*4);E.__skinIndexArray=new Float32Array(S*4);E.__skinWeightArray=new Float32Array(S*4)}E.__faceArray=new Uint16Array(U*3);E.__lineArray=new Uint16Array(P*2);var W=void 0,ca=void 0;if(E.numMorphTargets){E.__morphTargetsArrays=
|
|
|
+[];W=0;for(ca=E.numMorphTargets;W<ca;W++)E.__morphTargetsArrays.push(new Float32Array(S*3))}if(E.numMorphNormals){E.__morphNormalsArrays=[];W=0;for(ca=E.numMorphNormals;W<ca;W++)E.__morphNormalsArrays.push(new Float32Array(S*3))}E.__webglFaceCount=U*3;E.__webglLineCount=P*2;if(Q.attributes){if(E.__webglCustomAttributesList===void 0)E.__webglCustomAttributesList=[];var ia=void 0;for(ia in Q.attributes){var Ga=Q.attributes[ia],ma={},za;for(za in Ga)ma[za]=Ga[za];if(!ma.__webglInitialized||ma.createUniqueBuffers){ma.__webglInitialized=
|
|
|
+true;var Ua=1;ma.type==="v2"?Ua=2:ma.type==="v3"?Ua=3:ma.type==="v4"?Ua=4:ma.type==="c"&&(Ua=3);ma.size=Ua;ma.array=new Float32Array(S*Ua);ma.buffer=k.createBuffer();ma.buffer.belongsToAttribute=ia;Ga.needsUpdate=true;ma.__original=Ga}E.__webglCustomAttributesList.push(ma)}}E.__inittedArrays=true;i.verticesNeedUpdate=true;i.morphTargetsNeedUpdate=true;i.elementsNeedUpdate=true;i.uvsNeedUpdate=true;i.normalsNeedUpdate=true;i.tangentsNeedUpdate=true;i.colorsNeedUpdate=true}}}else if(i instanceof THREE.BufferGeometry){var Oa=
|
|
|
+i,Pa=void 0,pa=void 0,ra=void 0;for(Pa in Oa.attributes){ra=Pa==="index"?k.ELEMENT_ARRAY_BUFFER:k.ARRAY_BUFFER;pa=Oa.attributes[Pa];pa.buffer=k.createBuffer();k.bindBuffer(ra,pa.buffer);k.bufferData(ra,pa.array,k.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){i=g.geometry;if(!i.__webglVertexBuffer){var Aa=i;Aa.__webglVertexBuffer=k.createBuffer();Aa.__webglColorBuffer=k.createBuffer();D.info.memory.geometries++;var Da=i,Fa=Da.vertices.length;Da.__vertexArray=new Float32Array(Fa*3);Da.__colorArray=
|
|
|
+new Float32Array(Fa*3);Da.__webglVertexCount=Fa;i.verticesNeedUpdate=true;i.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){i=g.geometry;if(!i.__webglVertexBuffer){var nb=i;nb.__webglVertexBuffer=k.createBuffer();nb.__webglColorBuffer=k.createBuffer();D.info.memory.geometries++;var gb=i,Wa=g,Ra=gb.vertices.length;gb.__vertexArray=new Float32Array(Ra*3);gb.__colorArray=new Float32Array(Ra*3);gb.__webglLineCount=Ra;b(gb,Wa);i.verticesNeedUpdate=true;i.colorsNeedUpdate=true}}else if(g instanceof
|
|
|
+THREE.ParticleSystem){i=g.geometry;if(!i.__webglVertexBuffer){var Za=i;Za.__webglVertexBuffer=k.createBuffer();Za.__webglColorBuffer=k.createBuffer();D.info.geometries++;var Va=i,Ob=g,ob=Va.vertices.length;Va.__vertexArray=new Float32Array(ob*3);Va.__colorArray=new Float32Array(ob*3);Va.__sortArray=[];Va.__webglParticleCount=ob;b(Va,Ob);i.verticesNeedUpdate=true;i.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){i=g.geometry;if(i instanceof THREE.BufferGeometry)o(h.__webglObjects,
|
|
|
+i,g);else for(j in i.geometryGroups){l=i.geometryGroups[j];o(h.__webglObjects,l,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){i=g.geometry;o(h.__webglObjects,i,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],kb=a;db instanceof THREE.Mesh||db instanceof THREE.ParticleSystem||db instanceof THREE.Ribbon||db instanceof THREE.Line?r(kb.__webglObjects,db):db instanceof THREE.Sprite?m(kb.__webglSprites,db):db instanceof THREE.LensFlare?m(kb.__webglFlares,db):(db instanceof THREE.ImmediateRenderObject||db.immediateRenderCallback)&&r(kb.__webglObjectsImmediate,db);db.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var hb=0,pb=a.__webglObjects.length;hb<
|
|
|
+pb;hb++){var lb=a.__webglObjects[hb].object,da=lb.geometry,cb=void 0,oc=void 0,Xa=void 0;if(lb instanceof THREE.Mesh)if(da instanceof THREE.BufferGeometry){if(da.verticesNeedUpdate||da.elementsNeedUpdate||da.uvsNeedUpdate||da.normalsNeedUpdate||da.colorsNeedUpdate||da.tangentsNeedUpdate){var Ib=da,pc=k.DYNAMIC_DRAW,ec=!da.dynamic,qc=Ib.attributes,Gb=qc.index,dc=qc.position,Yc=qc.normal,Zc=qc.uv,$c=qc.color,ad=qc.tangent;if(Ib.elementsNeedUpdate&&Gb!==void 0){k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,Gb.buffer);
|
|
|
+k.bufferData(k.ELEMENT_ARRAY_BUFFER,Gb.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}}da.verticesNeedUpdate=false;da.elementsNeedUpdate=false;da.uvsNeedUpdate=false;da.normalsNeedUpdate=false;da.colorsNeedUpdate=false;da.tangentsNeedUpdate=false}else{for(var bd=0,yd=da.geometryGroupsList.length;bd<yd;bd++){cb=da.geometryGroupsList[bd];Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);if(da.verticesNeedUpdate||
|
|
|
+da.morphTargetsNeedUpdate||da.elementsNeedUpdate||da.uvsNeedUpdate||da.normalsNeedUpdate||da.colorsNeedUpdate||da.tangentsNeedUpdate||oc){var fa=cb,zd=lb,$a=k.DYNAMIC_DRAW,Ad=!da.dynamic,hc=Xa;if(fa.__inittedArrays){var nd=d(hc),cd=hc.vertexColors?hc.vertexColors:false,od=e(hc),Kc=nd===THREE.SmoothShading,G=void 0,V=void 0,jb=void 0,M=void 0,rc=void 0,Rb=void 0,mb=void 0,Lc=void 0,Jb=void 0,sc=void 0,tc=void 0,Z=void 0,$=void 0,aa=void 0,na=void 0,qb=void 0,rb=void 0,sb=void 0,xc=void 0,tb=void 0,
|
|
|
+ub=void 0,vb=void 0,yc=void 0,wb=void 0,xb=void 0,yb=void 0,zc=void 0,zb=void 0,Ab=void 0,Bb=void 0,Ac=void 0,Cb=void 0,Db=void 0,Eb=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,ja=void 0,pd=void 0,Yb=void 0,uc=void 0,vc=void 0,Ja=void 0,qd=void 0,Ha=void 0,Ia=void 0,Zb=void 0,Kb=void 0,ya=0,Ea=0,Lb=0,Mb=0,eb=0,Qa=0,oa=0,Sa=0,Ba=0,K=0,ea=0,A=0,ab=void 0,Ka=fa.__vertexArray,Cc=fa.__uvArray,Dc=fa.__uv2Array,fb=fa.__normalArray,sa=fa.__tangentArray,
|
|
|
+La=fa.__colorArray,ta=fa.__skinVertexAArray,ua=fa.__skinVertexBArray,va=fa.__skinIndexArray,wa=fa.__skinWeightArray,dd=fa.__morphTargetsArrays,ed=fa.__morphNormalsArrays,fd=fa.__webglCustomAttributesList,y=void 0,Fb=fa.__faceArray,bb=fa.__lineArray,Ta=zd.geometry,Bd=Ta.elementsNeedUpdate,rd=Ta.uvsNeedUpdate,Cd=Ta.normalsNeedUpdate,Dd=Ta.tangentsNeedUpdate,Ed=Ta.colorsNeedUpdate,Fd=Ta.morphTargetsNeedUpdate,ic=Ta.vertices,ka=fa.faces3,la=fa.faces4,Ca=Ta.faces,gd=Ta.faceVertexUvs[0],hd=Ta.faceVertexUvs[1],
|
|
|
+jc=Ta.skinVerticesA,kc=Ta.skinVerticesB,lc=Ta.skinIndices,$b=Ta.skinWeights,ac=Ta.morphTargets,Oc=Ta.morphNormals;if(Ta.verticesNeedUpdate){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=ic[M.a];$=ic[M.b];aa=ic[M.c];Ka[Ea]=Z.x;Ka[Ea+1]=Z.y;Ka[Ea+2]=Z.z;Ka[Ea+3]=$.x;Ka[Ea+4]=$.y;Ka[Ea+5]=$.z;Ka[Ea+6]=aa.x;Ka[Ea+7]=aa.y;Ka[Ea+8]=aa.z;Ea=Ea+9}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=ic[M.a];$=ic[M.b];aa=ic[M.c];na=ic[M.d];Ka[Ea]=Z.x;Ka[Ea+1]=Z.y;Ka[Ea+2]=Z.z;Ka[Ea+3]=$.x;Ka[Ea+4]=$.y;Ka[Ea+5]=$.z;Ka[Ea+
|
|
|
+6]=aa.x;Ka[Ea+7]=aa.y;Ka[Ea+8]=aa.z;Ka[Ea+9]=na.x;Ka[Ea+10]=na.y;Ka[Ea+11]=na.z;Ea=Ea+12}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ka,$a)}if(Fd){Ja=0;for(qd=ac.length;Ja<qd;Ja++){G=ea=0;for(V=ka.length;G<V;G++){Zb=ka[G];M=Ca[Zb];Z=ac[Ja].vertices[M.a];$=ac[Ja].vertices[M.b];aa=ac[Ja].vertices[M.c];Ha=dd[Ja];Ha[ea]=Z.x;Ha[ea+1]=Z.y;Ha[ea+2]=Z.z;Ha[ea+3]=$.x;Ha[ea+4]=$.y;Ha[ea+5]=$.z;Ha[ea+6]=aa.x;Ha[ea+7]=aa.y;Ha[ea+8]=aa.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ja].vertexNormals[Zb];
|
|
|
+tb=Kb.a;ub=Kb.b;vb=Kb.c}else vb=ub=tb=Oc[Ja].faceNormals[Zb];Ia=ed[Ja];Ia[ea]=tb.x;Ia[ea+1]=tb.y;Ia[ea+2]=tb.z;Ia[ea+3]=ub.x;Ia[ea+4]=ub.y;Ia[ea+5]=ub.z;Ia[ea+6]=vb.x;Ia[ea+7]=vb.y;Ia[ea+8]=vb.z}ea=ea+9}G=0;for(V=la.length;G<V;G++){Zb=la[G];M=Ca[Zb];Z=ac[Ja].vertices[M.a];$=ac[Ja].vertices[M.b];aa=ac[Ja].vertices[M.c];na=ac[Ja].vertices[M.d];Ha=dd[Ja];Ha[ea]=Z.x;Ha[ea+1]=Z.y;Ha[ea+2]=Z.z;Ha[ea+3]=$.x;Ha[ea+4]=$.y;Ha[ea+5]=$.z;Ha[ea+6]=aa.x;Ha[ea+7]=aa.y;Ha[ea+8]=aa.z;Ha[ea+9]=na.x;Ha[ea+10]=na.y;
|
|
|
+Ha[ea+11]=na.z;if(hc.morphNormals){if(Kc){Kb=Oc[Ja].vertexNormals[Zb];tb=Kb.a;ub=Kb.b;vb=Kb.c;yc=Kb.d}else yc=vb=ub=tb=Oc[Ja].faceNormals[Zb];Ia=ed[Ja];Ia[ea]=tb.x;Ia[ea+1]=tb.y;Ia[ea+2]=tb.z;Ia[ea+3]=ub.x;Ia[ea+4]=ub.y;Ia[ea+5]=ub.z;Ia[ea+6]=vb.x;Ia[ea+7]=vb.y;Ia[ea+8]=vb.z;Ia[ea+9]=yc.x;Ia[ea+10]=yc.y;Ia[ea+11]=yc.z}ea=ea+12}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglMorphTargetsBuffers[Ja]);k.bufferData(k.ARRAY_BUFFER,dd[Ja],$a);if(hc.morphNormals){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglMorphNormalsBuffers[Ja]);
|
|
|
+k.bufferData(k.ARRAY_BUFFER,ed[Ja],$a)}}}if($b.length){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];zb=$b[M.a];Ab=$b[M.b];Bb=$b[M.c];wa[K]=zb.x;wa[K+1]=zb.y;wa[K+2]=zb.z;wa[K+3]=zb.w;wa[K+4]=Ab.x;wa[K+5]=Ab.y;wa[K+6]=Ab.z;wa[K+7]=Ab.w;wa[K+8]=Bb.x;wa[K+9]=Bb.y;wa[K+10]=Bb.z;wa[K+11]=Bb.w;Cb=lc[M.a];Db=lc[M.b];Eb=lc[M.c];va[K]=Cb.x;va[K+1]=Cb.y;va[K+2]=Cb.z;va[K+3]=Cb.w;va[K+4]=Db.x;va[K+5]=Db.y;va[K+6]=Db.z;va[K+7]=Db.w;va[K+8]=Eb.x;va[K+9]=Eb.y;va[K+10]=Eb.z;va[K+11]=Eb.w;Sb=jc[M.a];Tb=jc[M.b];Ub=jc[M.c];
|
|
|
+ta[K]=Sb.x;ta[K+1]=Sb.y;ta[K+2]=Sb.z;ta[K+3]=1;ta[K+4]=Tb.x;ta[K+5]=Tb.y;ta[K+6]=Tb.z;ta[K+7]=1;ta[K+8]=Ub.x;ta[K+9]=Ub.y;ta[K+10]=Ub.z;ta[K+11]=1;Vb=kc[M.a];Wb=kc[M.b];Xb=kc[M.c];ua[K]=Vb.x;ua[K+1]=Vb.y;ua[K+2]=Vb.z;ua[K+3]=1;ua[K+4]=Wb.x;ua[K+5]=Wb.y;ua[K+6]=Wb.z;ua[K+7]=1;ua[K+8]=Xb.x;ua[K+9]=Xb.y;ua[K+10]=Xb.z;ua[K+11]=1;K=K+12}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];zb=$b[M.a];Ab=$b[M.b];Bb=$b[M.c];Ac=$b[M.d];wa[K]=zb.x;wa[K+1]=zb.y;wa[K+2]=zb.z;wa[K+3]=zb.w;wa[K+4]=Ab.x;wa[K+5]=Ab.y;wa[K+6]=
|
|
|
+Ab.z;wa[K+7]=Ab.w;wa[K+8]=Bb.x;wa[K+9]=Bb.y;wa[K+10]=Bb.z;wa[K+11]=Bb.w;wa[K+12]=Ac.x;wa[K+13]=Ac.y;wa[K+14]=Ac.z;wa[K+15]=Ac.w;Cb=lc[M.a];Db=lc[M.b];Eb=lc[M.c];Bc=lc[M.d];va[K]=Cb.x;va[K+1]=Cb.y;va[K+2]=Cb.z;va[K+3]=Cb.w;va[K+4]=Db.x;va[K+5]=Db.y;va[K+6]=Db.z;va[K+7]=Db.w;va[K+8]=Eb.x;va[K+9]=Eb.y;va[K+10]=Eb.z;va[K+11]=Eb.w;va[K+12]=Bc.x;va[K+13]=Bc.y;va[K+14]=Bc.z;va[K+15]=Bc.w;Sb=jc[M.a];Tb=jc[M.b];Ub=jc[M.c];Mc=jc[M.d];ta[K]=Sb.x;ta[K+1]=Sb.y;ta[K+2]=Sb.z;ta[K+3]=1;ta[K+4]=Tb.x;ta[K+5]=Tb.y;
|
|
|
+ta[K+6]=Tb.z;ta[K+7]=1;ta[K+8]=Ub.x;ta[K+9]=Ub.y;ta[K+10]=Ub.z;ta[K+11]=1;ta[K+12]=Mc.x;ta[K+13]=Mc.y;ta[K+14]=Mc.z;ta[K+15]=1;Vb=kc[M.a];Wb=kc[M.b];Xb=kc[M.c];Nc=kc[M.d];ua[K]=Vb.x;ua[K+1]=Vb.y;ua[K+2]=Vb.z;ua[K+3]=1;ua[K+4]=Wb.x;ua[K+5]=Wb.y;ua[K+6]=Wb.z;ua[K+7]=1;ua[K+8]=Xb.x;ua[K+9]=Xb.y;ua[K+10]=Xb.z;ua[K+11]=1;ua[K+12]=Nc.x;ua[K+13]=Nc.y;ua[K+14]=Nc.z;ua[K+15]=1;K=K+16}if(K>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinVertexABuffer);k.bufferData(k.ARRAY_BUFFER,ta,$a);k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+fa.__webglSkinVertexBBuffer);k.bufferData(k.ARRAY_BUFFER,ua,$a);k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinIndicesBuffer);k.bufferData(k.ARRAY_BUFFER,va,$a);k.bindBuffer(k.ARRAY_BUFFER,fa.__webglSkinWeightsBuffer);k.bufferData(k.ARRAY_BUFFER,wa,$a)}}if(Ed&&cd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];mb=M.vertexColors;Lc=M.color;if(mb.length===3&&cd===THREE.VertexColors){wb=mb[0];xb=mb[1];yb=mb[2]}else yb=xb=wb=Lc;La[Ba]=wb.r;La[Ba+1]=wb.g;La[Ba+2]=wb.b;La[Ba+3]=xb.r;La[Ba+4]=xb.g;La[Ba+5]=xb.b;La[Ba+
|
|
|
+6]=yb.r;La[Ba+7]=yb.g;La[Ba+8]=yb.b;Ba=Ba+9}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];mb=M.vertexColors;Lc=M.color;if(mb.length===4&&cd===THREE.VertexColors){wb=mb[0];xb=mb[1];yb=mb[2];zc=mb[3]}else zc=yb=xb=wb=Lc;La[Ba]=wb.r;La[Ba+1]=wb.g;La[Ba+2]=wb.b;La[Ba+3]=xb.r;La[Ba+4]=xb.g;La[Ba+5]=xb.b;La[Ba+6]=yb.r;La[Ba+7]=yb.g;La[Ba+8]=yb.b;La[Ba+9]=zc.r;La[Ba+10]=zc.g;La[Ba+11]=zc.b;Ba=Ba+12}if(Ba>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,La,$a)}}if(Dd&&Ta.hasTangents){G=
|
|
|
+0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Jb=M.vertexTangents;qb=Jb[0];rb=Jb[1];sb=Jb[2];sa[oa]=qb.x;sa[oa+1]=qb.y;sa[oa+2]=qb.z;sa[oa+3]=qb.w;sa[oa+4]=rb.x;sa[oa+5]=rb.y;sa[oa+6]=rb.z;sa[oa+7]=rb.w;sa[oa+8]=sb.x;sa[oa+9]=sb.y;sa[oa+10]=sb.z;sa[oa+11]=sb.w;oa=oa+12}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Jb=M.vertexTangents;qb=Jb[0];rb=Jb[1];sb=Jb[2];xc=Jb[3];sa[oa]=qb.x;sa[oa+1]=qb.y;sa[oa+2]=qb.z;sa[oa+3]=qb.w;sa[oa+4]=rb.x;sa[oa+5]=rb.y;sa[oa+6]=rb.z;sa[oa+7]=rb.w;sa[oa+8]=sb.x;sa[oa+9]=sb.y;sa[oa+
|
|
|
+10]=sb.z;sa[oa+11]=sb.w;sa[oa+12]=xc.x;sa[oa+13]=xc.y;sa[oa+14]=xc.z;sa[oa+15]=xc.w;oa=oa+16}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,sa,$a)}if(Cd&&nd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];rc=M.vertexNormals;Rb=M.normal;if(rc.length===3&&Kc)for(ja=0;ja<3;ja++){Yb=rc[ja];fb[Qa]=Yb.x;fb[Qa+1]=Yb.y;fb[Qa+2]=Yb.z;Qa=Qa+3}else for(ja=0;ja<3;ja++){fb[Qa]=Rb.x;fb[Qa+1]=Rb.y;fb[Qa+2]=Rb.z;Qa=Qa+3}}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];rc=M.vertexNormals;Rb=M.normal;
|
|
|
+if(rc.length===4&&Kc)for(ja=0;ja<4;ja++){Yb=rc[ja];fb[Qa]=Yb.x;fb[Qa+1]=Yb.y;fb[Qa+2]=Yb.z;Qa=Qa+3}else for(ja=0;ja<4;ja++){fb[Qa]=Rb.x;fb[Qa+1]=Rb.y;fb[Qa+2]=Rb.z;Qa=Qa+3}}k.bindBuffer(k.ARRAY_BUFFER,fa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,fb,$a)}if(rd&&gd&&od){G=0;for(V=ka.length;G<V;G++){jb=ka[G];M=Ca[jb];sc=gd[jb];if(sc!==void 0)for(ja=0;ja<3;ja++){uc=sc[ja];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}G=0;for(V=la.length;G<V;G++){jb=la[G];M=Ca[jb];sc=gd[jb];if(sc!==void 0)for(ja=0;ja<4;ja++){uc=
|
|
|
+sc[ja];Cc[Lb]=uc.u;Cc[Lb+1]=uc.v;Lb=Lb+2}}if(Lb>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglUVBuffer);k.bufferData(k.ARRAY_BUFFER,Cc,$a)}}if(rd&&hd&&od){G=0;for(V=ka.length;G<V;G++){jb=ka[G];M=Ca[jb];tc=hd[jb];if(tc!==void 0)for(ja=0;ja<3;ja++){vc=tc[ja];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}G=0;for(V=la.length;G<V;G++){jb=la[G];M=Ca[jb];tc=hd[jb];if(tc!==void 0)for(ja=0;ja<4;ja++){vc=tc[ja];Dc[Mb]=vc.u;Dc[Mb+1]=vc.v;Mb=Mb+2}}if(Mb>0){k.bindBuffer(k.ARRAY_BUFFER,fa.__webglUV2Buffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
+Dc,$a)}}if(Bd){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Fb[eb]=ya;Fb[eb+1]=ya+1;Fb[eb+2]=ya+2;eb=eb+3;bb[Sa]=ya;bb[Sa+1]=ya+1;bb[Sa+2]=ya;bb[Sa+3]=ya+2;bb[Sa+4]=ya+1;bb[Sa+5]=ya+2;Sa=Sa+6;ya=ya+3}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Fb[eb]=ya;Fb[eb+1]=ya+1;Fb[eb+2]=ya+3;Fb[eb+3]=ya+1;Fb[eb+4]=ya+2;Fb[eb+5]=ya+3;eb=eb+6;bb[Sa]=ya;bb[Sa+1]=ya+1;bb[Sa+2]=ya;bb[Sa+3]=ya+3;bb[Sa+4]=ya+1;bb[Sa+5]=ya+2;bb[Sa+6]=ya+2;bb[Sa+7]=ya+3;Sa=Sa+8;ya=ya+4}k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,fa.__webglFaceBuffer);
|
|
|
+k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb,$a);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,fa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,bb,$a)}if(fd){ja=0;for(pd=fd.length;ja<pd;ja++){y=fd[ja];if(y.__original.needsUpdate){A=0;if(y.size===1)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];y.array[A]=y.value[M.a];y.array[A+1]=y.value[M.b];y.array[A+2]=y.value[M.c];A=A+3}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];y.array[A]=y.value[M.a];y.array[A+1]=y.value[M.b];
|
|
|
+y.array[A+2]=y.value[M.c];y.array[A+3]=y.value[M.d];A=A+4}}else{if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){ab=y.value[ka[G]];y.array[A]=ab;y.array[A+1]=ab;y.array[A+2]=ab;A=A+3}G=0;for(V=la.length;G<V;G++){ab=y.value[la[G]];y.array[A]=ab;y.array[A+1]=ab;y.array[A+2]=ab;y.array[A+3]=ab;A=A+4}}}else if(y.size===2)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=
|
|
|
+$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;A=A+6}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;y.array[A+6]=na.x;y.array[A+7]=na.y;A=A+8}}else{if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=ab=y.value[ka[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;A=A+6}G=
|
|
|
+0;for(V=la.length;G<V;G++){na=aa=$=Z=ab=y.value[la[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=$.x;y.array[A+3]=$.y;y.array[A+4]=aa.x;y.array[A+5]=aa.y;y.array[A+6]=na.x;y.array[A+7]=na.y;A=A+8}}}else if(y.size===3){var ga;ga=y.type==="c"?["r","g","b"]:["x","y","z"];if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+
|
|
|
+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];A=A+9}G=0;for(V=la.length;G<V;G++){M=Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];y.array[A+9]=na[ga[0]];y.array[A+10]=na[ga[1]];y.array[A+11]=na[ga[2]];A=A+12}}else if(y.boundTo===
|
|
|
+"faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=ab=y.value[ka[G]];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];y.array[A+8]=aa[ga[2]];A=A+9}G=0;for(V=la.length;G<V;G++){na=aa=$=Z=ab=y.value[la[G]];y.array[A]=Z[ga[0]];y.array[A+1]=Z[ga[1]];y.array[A+2]=Z[ga[2]];y.array[A+3]=$[ga[0]];y.array[A+4]=$[ga[1]];y.array[A+5]=$[ga[2]];y.array[A+6]=aa[ga[0]];y.array[A+7]=aa[ga[1]];
|
|
|
+y.array[A+8]=aa[ga[2]];y.array[A+9]=na[ga[0]];y.array[A+10]=na[ga[1]];y.array[A+11]=na[ga[2]];A=A+12}}}else if(y.size===4)if(y.boundTo===void 0||y.boundTo==="vertices"){G=0;for(V=ka.length;G<V;G++){M=Ca[ka[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;A=A+12}G=0;for(V=la.length;G<V;G++){M=
|
|
|
+Ca[la[G]];Z=y.value[M.a];$=y.value[M.b];aa=y.value[M.c];na=y.value[M.d];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;y.array[A+12]=na.x;y.array[A+13]=na.y;y.array[A+14]=na.z;y.array[A+15]=na.w;A=A+16}}else if(y.boundTo==="faces"){G=0;for(V=ka.length;G<V;G++){aa=$=Z=ab=y.value[ka[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+
|
|
|
+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;A=A+12}G=0;for(V=la.length;G<V;G++){na=aa=$=Z=ab=y.value[la[G]];y.array[A]=Z.x;y.array[A+1]=Z.y;y.array[A+2]=Z.z;y.array[A+3]=Z.w;y.array[A+4]=$.x;y.array[A+5]=$.y;y.array[A+6]=$.z;y.array[A+7]=$.w;y.array[A+8]=aa.x;y.array[A+9]=aa.y;y.array[A+10]=aa.z;y.array[A+11]=aa.w;y.array[A+12]=na.x;y.array[A+13]=na.y;y.array[A+14]=na.z;y.array[A+15]=na.w;A=A+
|
|
|
+16}}k.bindBuffer(k.ARRAY_BUFFER,y.buffer);k.bufferData(k.ARRAY_BUFFER,y.array,$a)}}}if(Ad){delete fa.__inittedArrays;delete fa.__colorArray;delete fa.__normalArray;delete fa.__tangentArray;delete fa.__uvArray;delete fa.__uv2Array;delete fa.__faceArray;delete fa.__vertexArray;delete fa.__lineArray;delete fa.__skinVertexAArray;delete fa.__skinVertexBArray;delete fa.__skinIndexArray;delete fa.__skinWeightArray}}}}da.verticesNeedUpdate=false;da.morphTargetsNeedUpdate=false;da.elementsNeedUpdate=false;
|
|
|
+da.uvsNeedUpdate=false;da.normalsNeedUpdate=false;da.colorsNeedUpdate=false;da.tangentsNeedUpdate=false;Xa.attributes&&p(Xa)}else if(lb instanceof THREE.Ribbon){if(da.verticesNeedUpdate||da.colorsNeedUpdate){var bc=da,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)}}da.verticesNeedUpdate=false;da.colorsNeedUpdate=false}else if(lb instanceof THREE.Line){Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);if(da.verticesNeedUpdate||da.colorsNeedUpdate||oc){var Nb=da,id=k.DYNAMIC_DRAW,Gc=void 0,Hc=void 0,Tc=void 0,xa=
|
|
|
+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,Na=void 0,wc=void 0,Ya=void 0,qa=void 0;if(Nb.verticesNeedUpdate){for(Gc=0;Gc<Jd;Gc++){Tc=vd[Gc];xa=Gc*3;Vc[xa]=Tc.x;Vc[xa+1]=Tc.y;Vc[xa+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];xa=Hc*3;Wc[xa]=Uc.r;Wc[xa+1]=Uc.g;Wc[xa+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++){qa=jd[Xc];if(qa.needsUpdate&&(qa.boundTo===void 0||qa.boundTo==="vertices")){xa=0;wc=qa.value.length;if(qa.size===1)for(Na=0;Na<wc;Na++)qa.array[Na]=qa.value[Na];else if(qa.size===2)for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;xa=xa+2}else if(qa.size===3)if(qa.type==="c")for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.r;qa.array[xa+1]=Ya.g;qa.array[xa+2]=Ya.b;xa=xa+
|
|
|
+3}else for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;qa.array[xa+2]=Ya.z;xa=xa+3}else if(qa.size===4)for(Na=0;Na<wc;Na++){Ya=qa.value[Na];qa.array[xa]=Ya.x;qa.array[xa+1]=Ya.y;qa.array[xa+2]=Ya.z;qa.array[xa+3]=Ya.w;xa=xa+4}k.bindBuffer(k.ARRAY_BUFFER,qa.buffer);k.bufferData(k.ARRAY_BUFFER,qa.array,id)}}}}da.verticesNeedUpdate=false;da.colorsNeedUpdate=false;Xa.attributes&&p(Xa)}else if(lb instanceof THREE.ParticleSystem){Xa=c(lb,cb);oc=Xa.attributes&&n(Xa);(da.verticesNeedUpdate||
|
|
|
+da.colorsNeedUpdate||lb.sortParticles||oc)&&f(da,k.DYNAMIC_DRAW,lb);da.verticesNeedUpdate=false;da.colorsNeedUpdate=false;Xa.attributes&&p(Xa)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,m;a instanceof THREE.MeshDepthMaterial?m="depth":a instanceof THREE.MeshNormalMaterial?m="normal":a instanceof THREE.MeshBasicMaterial?m="basic":a instanceof THREE.MeshLambertMaterial?m="lambert":a instanceof THREE.MeshPhongMaterial?m="phong":a instanceof THREE.LineBasicMaterial?m="basic":a instanceof
|
|
|
+THREE.ParticleBasicMaterial&&(m="particle_basic");if(m){var o=THREE.ShaderLib[m];a.uniforms=THREE.UniformsUtils.clone(o.uniforms);a.vertexShader=o.vertexShader;a.fragmentShader=o.fragmentShader}var n,p;n=g=e=o=0;for(f=b.length;n<f;n++){p=b[n];if(!p.onlyShadow){p instanceof THREE.DirectionalLight&&g++;p instanceof THREE.PointLight&&e++;p instanceof THREE.SpotLight&&o++}}if(e+o+g<=P){n=g;f=e}else{n=Math.ceil(P*g/(e+g));o=f=P-n}e=n;g=o;o=l=0;for(n=b.length;o<n;o++){p=b[o];if(p.castShadow){p instanceof
|
|
|
+THREE.SpotLight&&l++;p instanceof THREE.DirectionalLight&&!p.shadowCascade&&l++}}if(dc&&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;n=a.vertexShader;var o=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.useVertexTexture,boneTextureWidth:d.boneTextureWidth,boneTextureHeight:d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxShadows:l,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:d&&d.doubleSided},q,d=[];if(m)d.push(m);else{d.push(p);d.push(n)}for(q in c){d.push(q);d.push(c[q])}m=d.join();q=0;for(d=W.length;q<d;q++){e=W[q];if(e.code===m){e.usedTimes++;r=e.program;break a}}q=k.createProgram();d=["precision "+w+" float;",pb?"#define VERTEX_TEXTURES":"",D.gammaInput?"#define GAMMA_INPUT":
|
|
|
+"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.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 objectMatrix;\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 "+w+" 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:"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.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");
|
|
|
e=t("fragment",e+p);d=t("vertex",d+n);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","objectMatrix","cameraPosition","morphTargetInfluences"];c.useVertexTexture?d.push("boneTexture"):
|