|
@@ -291,114 +291,114 @@ g=h.value[g];h.array[f]=g.x;h.array[f+1]=g.y;h.array[f+2]=g.z;h.array[f+3]=g.w;f
|
|
|
m,b)}if(q){i=0;for(k=q.length;i<k;i++){h=q[i];if(h.needsUpdate||c.sortParticles){j.bindBuffer(j.ARRAY_BUFFER,h.buffer);j.bufferData(j.ARRAY_BUFFER,h.array,b)}}}}function g(a,b){return b.z-a.z}function h(a,b){return b[1]-a[1]}function i(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++){fa=T=null;M=ca=$=S=oa=Oa=Z=-1;la=true;a[d].render(b,c,ab,Ba);fa=T=null;M=ca=$=S=oa=Oa=Z=-1;la=true}}function k(a,b,c,d,e,f,g,h){var j,i,k,l;if(b){i=a.length-1;l=b=-1}else{i=0;b=a.length;l=1}for(var m=i;m!==b;m=m+l){j=
|
|
|
a[m];if(j.render){i=j.object;k=j.buffer;if(h)j=h;else{j=j[c];if(!j)continue;g&&C.setBlending(j.blending,j.blendEquation,j.blendSrc,j.blendDst);C.setDepthTest(j.depthTest);C.setDepthWrite(j.depthWrite);t(j.polygonOffset,j.polygonOffsetFactor,j.polygonOffsetUnits)}C.setObjectFaces(i);k instanceof THREE.BufferGeometry?C.renderBufferDirect(d,e,f,j,k,i):C.renderBuffer(d,e,f,j,k,i)}}}function l(a,b,c,d,e,f,g){for(var h,j,i=0,k=a.length;i<k;i++){h=a[i];j=h.object;if(j.visible){if(g)h=g;else{h=h[b];if(!h)continue;
|
|
|
f&&C.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);C.setDepthTest(h.depthTest);C.setDepthWrite(h.depthWrite);t(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}C.renderImmediateObject(c,d,e,h,j)}}}function o(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function m(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return true;return false}function p(a){for(var b in a.attributes)a.attributes[b].needsUpdate=false}function q(a,b){for(var c=a.length-
|
|
|
-1;c>=0;c--)a[c].object===b&&a.splice(c,1)}function n(a,b){for(var c=a.length-1;c>=0;c--)a[c]===b&&a.splice(c,1)}function r(a,b,c,d,e){if(d.needsUpdate){d.program&&C.deallocateMaterial(d);C.initMaterial(d,b,c,e);d.needsUpdate=false}if(d.morphTargets&&!e.__webglMorphTargetInfluences){e.__webglMorphTargetInfluences=new Float32Array(C.maxMorphTargets);for(var f=0,g=C.maxMorphTargets;f<g;f++)e.__webglMorphTargetInfluences[f]=0}var h=false,f=d.program,g=f.uniforms,i=d.uniforms;if(f!==T){j.useProgram(f);
|
|
|
-T=f;h=true}if(d.id!==M){M=d.id;h=true}if(h||a!==fa){j.uniformMatrix4fv(g.projectionMatrix,false,a._projectionMatrixArray);a!==fa&&(fa=a)}if(h){if(c&&d.fog){i.fogColor.value=c.color;if(c instanceof THREE.Fog){i.fogNear.value=c.near;i.fogFar.value=c.far}else if(c instanceof THREE.FogExp2)i.fogDensity.value=c.density}if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(la){for(var k,l=0,m=0,n=0,o,p,q,r=ob,t=r.directional.colors,v=r.directional.positions,u=r.point.colors,
|
|
|
-x=r.point.positions,y=r.point.distances,B=r.spot.colors,G=r.spot.positions,H=r.spot.distances,S=r.spot.directions,I=r.spot.angles,F=r.spot.exponents,L=0,Z=0,N=0,O=q=0,c=O=0,h=b.length;c<h;c++){k=b[c];if(!k.onlyShadow){o=k.color;p=k.intensity;q=k.distance;if(k instanceof THREE.AmbientLight)if(C.gammaInput){l=l+o.r*o.r;m=m+o.g*o.g;n=n+o.b*o.b}else{l=l+o.r;m=m+o.g;n=n+o.b}else if(k instanceof THREE.DirectionalLight){q=L*3;if(C.gammaInput){t[q]=o.r*o.r*p*p;t[q+1]=o.g*o.g*p*p;t[q+2]=o.b*o.b*p*p}else{t[q]=
|
|
|
-o.r*p;t[q+1]=o.g*p;t[q+2]=o.b*p}Da.copy(k.matrixWorld.getPosition());Da.subSelf(k.target.matrixWorld.getPosition());Da.normalize();v[q]=Da.x;v[q+1]=Da.y;v[q+2]=Da.z;L=L+1}else if(k instanceof THREE.PointLight){O=Z*3;if(C.gammaInput){u[O]=o.r*o.r*p*p;u[O+1]=o.g*o.g*p*p;u[O+2]=o.b*o.b*p*p}else{u[O]=o.r*p;u[O+1]=o.g*p;u[O+2]=o.b*p}o=k.matrixWorld.getPosition();x[O]=o.x;x[O+1]=o.y;x[O+2]=o.z;y[Z]=q;Z=Z+1}else if(k instanceof THREE.SpotLight){O=N*3;if(C.gammaInput){B[O]=o.r*o.r*p*p;B[O+1]=o.g*o.g*p*p;
|
|
|
-B[O+2]=o.b*o.b*p*p}else{B[O]=o.r*p;B[O+1]=o.g*p;B[O+2]=o.b*p}o=k.matrixWorld.getPosition();G[O]=o.x;G[O+1]=o.y;G[O+2]=o.z;H[N]=q;Da.copy(o);Da.subSelf(k.target.matrixWorld.getPosition());Da.normalize();S[O]=Da.x;S[O+1]=Da.y;S[O+2]=Da.z;I[N]=Math.cos(k.angle);F[N]=k.exponent;N=N+1}}}c=L*3;for(h=t.length;c<h;c++)t[c]=0;c=Z*3;for(h=u.length;c<h;c++)u[c]=0;c=N*3;for(h=B.length;c<h;c++)B[c]=0;r.directional.length=L;r.point.length=Z;r.spot.length=N;r.ambient[0]=l;r.ambient[1]=m;r.ambient[2]=n;la=false}c=
|
|
|
-ob;i.ambientLightColor.value=c.ambient;i.directionalLightColor.value=c.directional.colors;i.directionalLightDirection.value=c.directional.positions;i.pointLightColor.value=c.point.colors;i.pointLightPosition.value=c.point.positions;i.pointLightDistance.value=c.point.distances;i.spotLightColor.value=c.spot.colors;i.spotLightPosition.value=c.spot.positions;i.spotLightDistance.value=c.spot.distances;i.spotLightDirection.value=c.spot.directions;i.spotLightAngle.value=c.spot.angles;i.spotLightExponent.value=
|
|
|
-c.spot.exponents}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){i.opacity.value=d.opacity;C.gammaInput?i.diffuse.value.copyGammaToLinear(d.color):i.diffuse.value=d.color;(i.map.texture=d.map)&&i.offsetRepeat.value.set(d.map.offset.x,d.map.offset.y,d.map.repeat.x,d.map.repeat.y);i.lightMap.texture=d.lightMap;i.envMap.texture=d.envMap;i.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;i.reflectivity.value=d.reflectivity;
|
|
|
-i.refractionRatio.value=d.refractionRatio;i.combine.value=d.combine;i.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}if(d instanceof THREE.LineBasicMaterial){i.diffuse.value=d.color;i.opacity.value=d.opacity}else if(d instanceof THREE.ParticleBasicMaterial){i.psColor.value=d.color;i.opacity.value=d.opacity;i.size.value=d.size;i.scale.value=A.height/2;i.map.texture=d.map}else if(d instanceof THREE.MeshPhongMaterial){i.shininess.value=d.shininess;if(C.gammaInput){i.ambient.value.copyGammaToLinear(d.ambient);
|
|
|
-i.emissive.value.copyGammaToLinear(d.emissive);i.specular.value.copyGammaToLinear(d.specular)}else{i.ambient.value=d.ambient;i.emissive.value=d.emissive;i.specular.value=d.specular}d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshLambertMaterial){if(C.gammaInput){i.ambient.value.copyGammaToLinear(d.ambient);i.emissive.value.copyGammaToLinear(d.emissive)}else{i.ambient.value=d.ambient;i.emissive.value=d.emissive}d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof
|
|
|
-THREE.MeshDepthMaterial){i.mNear.value=a.near;i.mFar.value=a.far;i.opacity.value=d.opacity}else if(d instanceof THREE.MeshNormalMaterial)i.opacity.value=d.opacity;if(e.receiveShadow&&!d._shadowPass&&i.shadowMatrix){h=c=0;for(k=b.length;h<k;h++){l=b[h];if(l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight&&!l.shadowCascade)){i.shadowMap.texture[c]=l.shadowMap;i.shadowMapSize.value[c]=l.shadowMapSize;i.shadowMatrix.value[c]=l.shadowMatrix;i.shadowDarkness.value[c]=l.shadowDarkness;
|
|
|
-i.shadowBias.value[c]=l.shadowBias;c++}}}b=d.uniformsList;i=0;for(c=b.length;i<c;i++)if(l=f.uniforms[b[i][1]]){h=b[i][0];m=h.type;k=h.value;switch(m){case "i":j.uniform1i(l,k);break;case "f":j.uniform1f(l,k);break;case "v2":j.uniform2f(l,k.x,k.y);break;case "v3":j.uniform3f(l,k.x,k.y,k.z);break;case "v4":j.uniform4f(l,k.x,k.y,k.z,k.w);break;case "c":j.uniform3f(l,k.r,k.g,k.b);break;case "fv1":j.uniform1fv(l,k);break;case "fv":j.uniform3fv(l,k);break;case "v2v":if(!h._array)h._array=new Float32Array(2*
|
|
|
-k.length);m=0;for(n=k.length;m<n;m++){r=m*2;h._array[r]=k[m].x;h._array[r+1]=k[m].y}j.uniform2fv(l,h._array);break;case "v3v":if(!h._array)h._array=new Float32Array(3*k.length);m=0;for(n=k.length;m<n;m++){r=m*3;h._array[r]=k[m].x;h._array[r+1]=k[m].y;h._array[r+2]=k[m].z}j.uniform3fv(l,h._array);break;case "v4v":if(!h._array)h._array=new Float32Array(4*k.length);m=0;for(n=k.length;m<n;m++){r=m*4;h._array[r]=k[m].x;h._array[r+1]=k[m].y;h._array[r+2]=k[m].z;h._array[r+3]=k[m].w}j.uniform4fv(l,h._array);
|
|
|
-break;case "m4":if(!h._array)h._array=new Float32Array(16);k.flattenToArray(h._array);j.uniformMatrix4fv(l,false,h._array);break;case "m4v":if(!h._array)h._array=new Float32Array(16*k.length);m=0;for(n=k.length;m<n;m++)k[m].flattenToArrayOffset(h._array,m*16);j.uniformMatrix4fv(l,false,h._array);break;case "t":j.uniform1i(l,k);l=h.texture;if(!l)continue;if(l.image instanceof Array&&l.image.length===6){h=l;if(h.image.length===6)if(h.needsUpdate){if(!h.image.__webglTextureCube)h.image.__webglTextureCube=
|
|
|
-j.createTexture();j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube);k=[];for(l=0;l<6;l++){m=k;n=l;if(C.autoScaleCubemaps){r=h.image[l];v=ac;if(!(r.width<=v&&r.height<=v)){u=Math.max(r.width,r.height);t=Math.floor(r.width*v/u);v=Math.floor(r.height*v/u);u=document.createElement("canvas");u.width=t;u.height=v;u.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,t,v);r=u}}else r=h.image[l];m[n]=r}l=k[0];m=(l.width&l.width-1)===0&&(l.height&l.height-1)===0;
|
|
|
-n=D(h.format);r=D(h.type);s(j.TEXTURE_CUBE_MAP,h,m);for(l=0;l<6;l++)j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,n,n,r,k[l]);h.generateMipmaps&&m&&j.generateMipmap(j.TEXTURE_CUBE_MAP);h.needsUpdate=false;if(h.onUpdate)h.onUpdate()}else{j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube)}}else if(l instanceof THREE.WebGLRenderTargetCube){h=l;j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,h.__webglTexture)}else C.setTexture(l,k);break;case "tv":if(!h._array){h._array=
|
|
|
-[];m=0;for(n=h.texture.length;m<n;m++)h._array[m]=k+m}j.uniform1iv(l,h._array);m=0;for(n=h.texture.length;m<n;m++)(l=h.texture[m])&&C.setTexture(l,h._array[m])}}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&g.cameraPosition!==null){b=a.matrixWorld.getPosition();j.uniform3f(g.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&g.viewMatrix!==null&&j.uniformMatrix4fv(g.viewMatrix,
|
|
|
-false,a._viewMatrixArray);d.skinning&&j.uniformMatrix4fv(g.boneGlobalMatrices,false,e.boneMatrices)}j.uniformMatrix4fv(g.modelViewMatrix,false,e._modelViewMatrix.elements);g.normalMatrix&&j.uniformMatrix3fv(g.normalMatrix,false,e._normalMatrix.elements);g.objectMatrix!==null&&j.uniformMatrix4fv(g.objectMatrix,false,e.matrixWorld.elements);return f}function u(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}
|
|
|
-function t(a,b,c){if(Ta!==a){a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL);Ta=a}if(a&&(eb!==b||fb!==c)){j.polygonOffset(b,c);eb=b;fb=c}}function y(a,b){var c;a==="fragment"?c=j.createShader(j.FRAGMENT_SHADER):a==="vertex"&&(c=j.createShader(j.VERTEX_SHADER));j.shaderSource(c,b);j.compileShader(c);if(!j.getShaderParameter(c,j.COMPILE_STATUS)){console.error(j.getShaderInfoLog(c));console.error(b);return null}return c}function s(a,b,c){if(c){j.texParameteri(a,j.TEXTURE_WRAP_S,D(b.wrapS));
|
|
|
-j.texParameteri(a,j.TEXTURE_WRAP_T,D(b.wrapT));j.texParameteri(a,j.TEXTURE_MAG_FILTER,D(b.magFilter));j.texParameteri(a,j.TEXTURE_MIN_FILTER,D(b.minFilter))}else{j.texParameteri(a,j.TEXTURE_WRAP_S,j.CLAMP_TO_EDGE);j.texParameteri(a,j.TEXTURE_WRAP_T,j.CLAMP_TO_EDGE);j.texParameteri(a,j.TEXTURE_MAG_FILTER,H(b.magFilter));j.texParameteri(a,j.TEXTURE_MIN_FILTER,H(b.minFilter))}}function x(a,b){j.bindRenderbuffer(j.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){j.renderbufferStorage(j.RENDERBUFFER,
|
|
|
-j.DEPTH_COMPONENT16,b.width,b.height);j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_STENCIL,b.width,b.height);j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a)}else j.renderbufferStorage(j.RENDERBUFFER,j.RGBA4,b.width,b.height)}function H(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return j.NEAREST;
|
|
|
-default:return j.LINEAR}}function D(a){switch(a){case THREE.RepeatWrapping:return j.REPEAT;case THREE.ClampToEdgeWrapping:return j.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return j.MIRRORED_REPEAT;case THREE.NearestFilter:return j.NEAREST;case THREE.NearestMipMapNearestFilter:return j.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return j.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return j.LINEAR;case THREE.LinearMipMapNearestFilter:return j.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return j.LINEAR_MIPMAP_LINEAR;
|
|
|
-case THREE.UnsignedByteType:return j.UNSIGNED_BYTE;case THREE.UnsignedShort4444Type:return j.UNSIGNED_SHORT_4_4_4_4;case THREE.UnsignedShort5551Type:return j.UNSIGNED_SHORT_5_5_5_1;case THREE.UnsignedShort565Type:return j.UNSIGNED_SHORT_5_6_5;case THREE.ByteType:return j.BYTE;case THREE.ShortType:return j.SHORT;case THREE.UnsignedShortType:return j.UNSIGNED_SHORT;case THREE.IntType:return j.INT;case THREE.UnsignedIntType:return j.UNSIGNED_INT;case THREE.FloatType:return j.FLOAT;case THREE.AlphaFormat:return j.ALPHA;
|
|
|
-case THREE.RGBFormat:return j.RGB;case THREE.RGBAFormat:return j.RGBA;case THREE.LuminanceFormat:return j.LUMINANCE;case THREE.LuminanceAlphaFormat:return j.LUMINANCE_ALPHA;case THREE.AddEquation:return j.FUNC_ADD;case THREE.SubtractEquation:return j.FUNC_SUBTRACT;case THREE.ReverseSubtractEquation:return j.FUNC_REVERSE_SUBTRACT;case THREE.ZeroFactor:return j.ZERO;case THREE.OneFactor:return j.ONE;case THREE.SrcColorFactor:return j.SRC_COLOR;case THREE.OneMinusSrcColorFactor:return j.ONE_MINUS_SRC_COLOR;
|
|
|
-case THREE.SrcAlphaFactor:return j.SRC_ALPHA;case THREE.OneMinusSrcAlphaFactor:return j.ONE_MINUS_SRC_ALPHA;case THREE.DstAlphaFactor:return j.DST_ALPHA;case THREE.OneMinusDstAlphaFactor:return j.ONE_MINUS_DST_ALPHA;case THREE.DstColorFactor:return j.DST_COLOR;case THREE.OneMinusDstColorFactor:return j.ONE_MINUS_DST_COLOR;case THREE.SrcAlphaSaturateFactor:return j.SRC_ALPHA_SATURATE}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},A=a.canvas!==void 0?a.canvas:document.createElement("canvas"),
|
|
|
-v=a.precision!==void 0?a.precision:"highp",G=a.alpha!==void 0?a.alpha:true,I=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,N=a.antialias!==void 0?a.antialias:false,R=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),F=a.clearAlpha!==void 0?a.clearAlpha:0,Q=a.maxLights!==void 0?a.maxLights:4;this.domElement=A;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 C=this,j,P=[],L=0,T=null,aa=null,M=-1,ca=null,fa=null,O=0,S=-1,$=-1,Z=-1,ha=-1,Sa=-1,Ma=-1,Oa=-1,oa=-1,Ta=null,eb=null,fb=null,Za=null,Lb=0,mb=0,jb=0,nb=0,ab=0,Ba=0,ya=new THREE.Frustum,gb=new THREE.Matrix4,wa=new THREE.Matrix4,Pa=new THREE.Vector4,Da=new THREE.Vector3,la=true,ob={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],
|
|
|
-exponents:[]}};j=function(){var a;try{if(!(a=A.getContext("experimental-webgl",{alpha:G,premultipliedAlpha:I,antialias:N,stencil:R,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";}catch(b){console.error(b)}a.getExtension("OES_texture_float")||console.log("THREE.WebGLRenderer: Float textures not supported.");return a}();j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);
|
|
|
-j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(B.r,B.g,B.b,F);this.context=j;var $a=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);j.getParameter(j.MAX_TEXTURE_SIZE);var ac=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE);this.getContext=function(){return j};this.supportsVertexTextures=function(){return $a>0};this.setSize=function(a,b){A.width=a;A.height=b;this.setViewport(0,0,A.width,A.height)};this.setViewport=function(a,b,c,d){Lb=a;mb=b;jb=c;nb=d;j.viewport(Lb,
|
|
|
-mb,jb,nb)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){B.setHex(a);F=b;j.clearColor(B.r,B.g,B.b,F)};this.setClearColor=function(a,b){B.copy(a);F=b;j.clearColor(B.r,B.g,B.b,F)};this.getClearColor=function(){return B};this.getClearAlpha=function(){return F};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|j.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|j.DEPTH_BUFFER_BIT;
|
|
|
-if(c===void 0||c)d=d|j.STENCIL_BUFFER_BIT;j.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];j.deleteBuffer(c.__webglVertexBuffer);j.deleteBuffer(c.__webglNormalBuffer);j.deleteBuffer(c.__webglTangentBuffer);j.deleteBuffer(c.__webglColorBuffer);j.deleteBuffer(c.__webglUVBuffer);j.deleteBuffer(c.__webglUV2Buffer);j.deleteBuffer(c.__webglSkinVertexABuffer);j.deleteBuffer(c.__webglSkinVertexBBuffer);j.deleteBuffer(c.__webglSkinIndicesBuffer);j.deleteBuffer(c.__webglSkinWeightsBuffer);j.deleteBuffer(c.__webglFaceBuffer);
|
|
|
-j.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=0;for(e=c.numMorphTargets;d<e;d++)j.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=0;for(e=c.numMorphNormals;d<e;d++)j.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList){d=void 0;for(d in c.__webglCustomAttributesList)j.deleteBuffer(c.__webglCustomAttributesList[d].buffer)}C.info.memory.geometries--}else if(a instanceof THREE.Ribbon){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);
|
|
|
-j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}else if(a instanceof THREE.Line){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}else if(a instanceof THREE.ParticleSystem){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}}};this.deallocateTexture=function(a){if(a.__webglInit){a.__webglInit=false;j.deleteTexture(a.__webglTexture);C.info.memory.textures--}};
|
|
|
-this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture){j.deleteTexture(a.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;b<6;b++){j.deleteFramebuffer(a.__webglFramebuffer[b]);j.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{j.deleteFramebuffer(a.__webglFramebuffer);j.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=P.length;a<c;a++){d=P[a];if(d.program===b){d.usedTimes--;
|
|
|
-d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=P.length;a<c;a++){d=P[a];d.program!==b&&e.push(d)}P=e;j.deleteProgram(b);C.info.memory.programs--}}};this.updateShadowMap=function(a,b){T=null;M=ca=oa=Oa=Z=-1;la=true;$=S=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=j.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=j.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=
|
|
|
-j.createBuffer();if(a.hasPositions){j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.position);j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,false,0,0)}if(a.hasNormals){j.bindBuffer(j.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,e,f,g,h,i,k,l,m,n,o=a.count*3;for(n=0;n<o;n=n+9){c=a.normalArray;d=c[n];e=c[n+1];f=c[n+2];g=c[n+3];i=c[n+4];l=c[n+5];h=c[n+6];k=c[n+7];m=c[n+
|
|
|
-8];d=(d+g+h)/3;e=(e+i+k)/3;f=(f+l+m)/3;c[n]=d;c[n+1]=e;c[n+2]=f;c[n+3]=d;c[n+4]=e;c[n+5]=f;c[n+6]=d;c[n+7]=e;c[n+8]=f}}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,3,j.FLOAT,false,0,0)}if(a.hasUvs){j.bindBuffer(j.ARRAY_BUFFER,a.__webglUvBuffer);j.bufferData(j.ARRAY_BUFFER,a.uvArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.uv);j.vertexAttribPointer(b.attributes.uv,2,j.FLOAT,false,0,0)}j.drawArrays(j.TRIANGLES,
|
|
|
-0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=r(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==ca){ca=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;d=0;for(c=f.length;d<c;++d){if(b){j.bindBuffer(j.ARRAY_BUFFER,e.vertexPositionBuffer);j.vertexAttribPointer(a.position,e.vertexPositionBuffer.itemSize,j.FLOAT,false,0,f[d].index*12);if(a.normal>=0&&e.vertexNormalBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexNormalBuffer);
|
|
|
-j.vertexAttribPointer(a.normal,e.vertexNormalBuffer.itemSize,j.FLOAT,false,0,f[d].index*12)}if(a.uv>=0&&e.vertexUvBuffer)if(e.vertexUvBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexUvBuffer);j.vertexAttribPointer(a.uv,e.vertexUvBuffer.itemSize,j.FLOAT,false,0,f[d].index*8);j.enableVertexAttribArray(a.uv)}else j.disableVertexAttribArray(a.uv);if(a.color>=0&&e.vertexColorBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexColorBuffer);j.vertexAttribPointer(a.color,e.vertexColorBuffer.itemSize,j.FLOAT,false,0,
|
|
|
-f[d].index*16)}j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.vertexIndexBuffer)}j.drawElements(j.TRIANGLES,f[d].count,j.UNSIGNED_SHORT,f[d].start*2);C.info.render.calls++;C.info.render.vertices=C.info.render.vertices+f[d].count;C.info.render.faces=C.info.render.faces+f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,i,c=r(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+c.id*2+(d.wireframe?1:0);if(c!==ca){ca=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-e.__webglVertexBuffer);j.vertexAttribPointer(b.position,3,j.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);j.vertexAttribPointer(c.position,3,j.FLOAT,false,0,0)}else if(c.position>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer);j.vertexAttribPointer(c.position,3,j.FLOAT,false,0,0)}if(f.morphTargetForcedOrder.length){var k=0;i=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;k<
|
|
|
-d.numSupportedMorphTargets&&k<i.length;){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[i[k]]);j.vertexAttribPointer(c["morphTarget"+k],3,j.FLOAT,false,0,0);if(d.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[i[k]]);j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[k]=g[i[k]];k++}}else{i=[];g=f.morphTargetInfluences;var l,m=g.length;for(l=0;l<m;l++){k=g[l];k>0&&i.push([l,k])}if(i.length>d.numSupportedMorphTargets){i.sort(h);
|
|
|
-i.length=d.numSupportedMorphTargets}else i.length>d.numSupportedMorphNormals?i.sort(h):i.length===0&&i.push([0,0]);for(k=0;k<d.numSupportedMorphTargets;){if(i[k]){l=i[k][0];j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);j.vertexAttribPointer(c["morphTarget"+k],3,j.FLOAT,false,0,0);if(d.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[l]);j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[k]=g[l]}else{j.vertexAttribPointer(c["morphTarget"+
|
|
|
-k],3,j.FLOAT,false,0,0);d.morphNormals&&j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0);f.__webglMorphTargetInfluences[k]=0}k++}}d.program.uniforms.morphTargetInfluences!==null&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(i=e.__webglCustomAttributesList.length;g<i;g++){c=e.__webglCustomAttributesList[g];if(b[c.buffer.belongsToAttribute]>=0){j.bindBuffer(j.ARRAY_BUFFER,c.buffer);j.vertexAttribPointer(b[c.buffer.belongsToAttribute],
|
|
|
-c.size,j.FLOAT,false,0,0)}}}if(b.color>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglColorBuffer);j.vertexAttribPointer(b.color,3,j.FLOAT,false,0,0)}if(b.normal>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglNormalBuffer);j.vertexAttribPointer(b.normal,3,j.FLOAT,false,0,0)}if(b.tangent>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglTangentBuffer);j.vertexAttribPointer(b.tangent,4,j.FLOAT,false,0,0)}if(b.uv>=0)if(e.__webglUVBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.__webglUVBuffer);j.vertexAttribPointer(b.uv,2,j.FLOAT,
|
|
|
-false,0,0);j.enableVertexAttribArray(b.uv)}else j.disableVertexAttribArray(b.uv);if(b.uv2>=0)if(e.__webglUV2Buffer){j.bindBuffer(j.ARRAY_BUFFER,e.__webglUV2Buffer);j.vertexAttribPointer(b.uv2,2,j.FLOAT,false,0,0);j.enableVertexAttribArray(b.uv2)}else j.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinVertexABuffer);j.vertexAttribPointer(b.skinVertexA,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-e.__webglSkinVertexBBuffer);j.vertexAttribPointer(b.skinVertexB,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);j.vertexAttribPointer(b.skinWeight,4,j.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==Za){j.lineWidth(d);Za=d}a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);j.drawElements(j.LINES,e.__webglLineCount,
|
|
|
-j.UNSIGNED_SHORT,0)}else{a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer);j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,0)}C.info.render.calls++;C.info.render.vertices=C.info.render.vertices+e.__webglFaceCount;C.info.render.faces=C.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES;d=d.linewidth;if(d!==Za){j.lineWidth(d);Za=d}j.drawArrays(f,0,e.__webglLineCount);C.info.render.calls++}else if(f instanceof
|
|
|
-THREE.ParticleSystem){j.drawArrays(j.POINTS,0,e.__webglParticleCount);C.info.render.calls++;C.info.render.points=C.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount);C.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,n=a.__lights,o=a.fog;M=-1;la=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);gb.multiply(b.projectionMatrix,b.matrixWorldInverse);ya.setFromMatrix(gb);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);C.info.render.calls=0;C.info.render.vertices=0;C.info.render.faces=0;C.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||ya.contains(h))){u(h,b);var p=f,q=p.object,r=p.buffer,s=void 0,s=s=void 0,s=q.material;if(s instanceof THREE.MeshFaceMaterial){s=r.materialIndex;if(s>=0){s=q.geometry.materials[s];if(s.transparent){p.transparent=
|
|
|
-s;p.opaque=null}else{p.opaque=s;p.transparent=null}}}else if(s)if(s.transparent){p.transparent=s;p.opaque=null}else{p.opaque=s;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{Pa.copy(h.matrixWorld.getPosition());gb.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){u(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);t(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);k(a.__webglObjects,false,"",b,n,o,true,d);l(a.__webglObjectsImmediate,"",b,n,o,false,d)}else{this.setBlending(THREE.NormalBlending);k(a.__webglObjects,true,"opaque",b,n,o,false);l(a.__webglObjectsImmediate,"opaque",b,n,o,false);k(a.__webglObjects,false,"transparent",
|
|
|
-b,n,o,true);l(a.__webglObjectsImmediate,"transparent",b,n,o,true)}i(this.renderPluginsPost,a,b);if(c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)if(c instanceof THREE.WebGLRenderTargetCube){j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture);j.generateMipmap(j.TEXTURE_CUBE_MAP);j.bindTexture(j.TEXTURE_CUBE_MAP,null)}else{j.bindTexture(j.TEXTURE_2D,c.__webglTexture);j.generateMipmap(j.TEXTURE_2D);j.bindTexture(j.TEXTURE_2D,null)}this.setDepthTest(true);this.setDepthWrite(true)};
|
|
|
-this.renderImmediateObject=function(a,b,c,d,e){var f=r(a,b,c,d,e);ca=-1;C.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,j,ya):e.render(function(a){C.renderBufferImmediate(a,f,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,k=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){k=g.geometry;if(k instanceof THREE.Geometry){if(k.geometryGroups===void 0){var r=k,s=void 0,t=void 0,u=void 0,v=void 0,x=void 0,y=void 0,A=void 0,B={},D=r.morphTargets.length,G=r.morphNormals.length;r.geometryGroups={};s=0;for(t=r.faces.length;s<t;s++){u=r.faces[s];v=u.materialIndex;y=v!==void 0?v:-1;B[y]===void 0&&(B[y]={hash:y,counter:0});A=B[y].hash+"_"+B[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]=
|
|
|
-{faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:D,numMorphNormals:G});x=u instanceof THREE.Face3?3:4;if(r.geometryGroups[A].vertices+x>65535){B[y].counter=B[y].counter+1;A=B[y].hash+"_"+B[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:D,numMorphNormals:G})}u instanceof THREE.Face3?r.geometryGroups[A].faces3.push(s):r.geometryGroups[A].faces4.push(s);r.geometryGroups[A].vertices=r.geometryGroups[A].vertices+
|
|
|
-x}r.geometryGroupsList=[];var M=void 0;for(M in r.geometryGroups){r.geometryGroups[M].id=O++;r.geometryGroupsList.push(r.geometryGroups[M])}}for(i in k.geometryGroups){l=k.geometryGroups[i];if(!l.__webglVertexBuffer){var S=l;S.__webglVertexBuffer=j.createBuffer();S.__webglNormalBuffer=j.createBuffer();S.__webglTangentBuffer=j.createBuffer();S.__webglColorBuffer=j.createBuffer();S.__webglUVBuffer=j.createBuffer();S.__webglUV2Buffer=j.createBuffer();S.__webglSkinVertexABuffer=j.createBuffer();S.__webglSkinVertexBBuffer=
|
|
|
-j.createBuffer();S.__webglSkinIndicesBuffer=j.createBuffer();S.__webglSkinWeightsBuffer=j.createBuffer();S.__webglFaceBuffer=j.createBuffer();S.__webglLineBuffer=j.createBuffer();var H=void 0,I=void 0;if(S.numMorphTargets){S.__webglMorphTargetsBuffers=[];H=0;for(I=S.numMorphTargets;H<I;H++)S.__webglMorphTargetsBuffers.push(j.createBuffer())}if(S.numMorphNormals){S.__webglMorphNormalsBuffers=[];H=0;for(I=S.numMorphNormals;H<I;H++)S.__webglMorphNormalsBuffers.push(j.createBuffer())}C.info.memory.geometries++;
|
|
|
-var F=l,N=g,L=N.geometry,Z=F.faces3,$=F.faces4,T=Z.length*3+$.length*4,Q=Z.length*1+$.length*2,P=Z.length*3+$.length*4,R=c(N,F),aa=e(R),Y=d(R),fa=R.vertexColors?R.vertexColors:false;F.__vertexArray=new Float32Array(T*3);if(Y)F.__normalArray=new Float32Array(T*3);if(L.hasTangents)F.__tangentArray=new Float32Array(T*4);if(fa)F.__colorArray=new Float32Array(T*3);if(aa){if(L.faceUvs.length>0||L.faceVertexUvs.length>0)F.__uvArray=new Float32Array(T*2);if(L.faceUvs.length>1||L.faceVertexUvs.length>1)F.__uv2Array=
|
|
|
-new Float32Array(T*2)}if(N.geometry.skinWeights.length&&N.geometry.skinIndices.length){F.__skinVertexAArray=new Float32Array(T*4);F.__skinVertexBArray=new Float32Array(T*4);F.__skinIndexArray=new Float32Array(T*4);F.__skinWeightArray=new Float32Array(T*4)}F.__faceArray=new Uint16Array(Q*3);F.__lineArray=new Uint16Array(P*2);var ca=void 0,ha=void 0;if(F.numMorphTargets){F.__morphTargetsArrays=[];ca=0;for(ha=F.numMorphTargets;ca<ha;ca++)F.__morphTargetsArrays.push(new Float32Array(T*3))}if(F.numMorphNormals){F.__morphNormalsArrays=
|
|
|
-[];ca=0;for(ha=F.numMorphNormals;ca<ha;ca++)F.__morphNormalsArrays.push(new Float32Array(T*3))}F.__webglFaceCount=Q*3;F.__webglLineCount=P*2;if(R.attributes){if(F.__webglCustomAttributesList===void 0)F.__webglCustomAttributesList=[];var Oa=void 0;for(Oa in R.attributes){var Sa=R.attributes[Oa],oa={},la;for(la in Sa)oa[la]=Sa[la];if(!oa.__webglInitialized||oa.createUniqueBuffers){oa.__webglInitialized=true;var Ma=1;oa.type==="v2"?Ma=2:oa.type==="v3"?Ma=3:oa.type==="v4"?Ma=4:oa.type==="c"&&(Ma=3);oa.size=
|
|
|
-Ma;oa.array=new Float32Array(T*Ma);oa.buffer=j.createBuffer();oa.buffer.belongsToAttribute=Oa;Sa.needsUpdate=true;oa.__original=Sa}F.__webglCustomAttributesList.push(oa)}}F.__inittedArrays=true;k.verticesNeedUpdate=true;k.morphTargetsNeedUpdate=true;k.elementsNeedUpdate=true;k.uvsNeedUpdate=true;k.normalsNeedUpdate=true;k.tangetsNeedUpdate=true;k.colorsNeedUpdate=true}}}}else if(g instanceof THREE.Ribbon){k=g.geometry;if(!k.__webglVertexBuffer){var Ta=k;Ta.__webglVertexBuffer=j.createBuffer();Ta.__webglColorBuffer=
|
|
|
-j.createBuffer();C.info.memory.geometries++;var wa=k,ya=wa.vertices.length;wa.__vertexArray=new Float32Array(ya*3);wa.__colorArray=new Float32Array(ya*3);wa.__webglVertexCount=ya;k.verticesNeedUpdate=true;k.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){k=g.geometry;if(!k.__webglVertexBuffer){var Da=k;Da.__webglVertexBuffer=j.createBuffer();Da.__webglColorBuffer=j.createBuffer();C.info.memory.geometries++;var Ba=k,eb=g,Pa=Ba.vertices.length;Ba.__vertexArray=new Float32Array(Pa*3);Ba.__colorArray=
|
|
|
-new Float32Array(Pa*3);Ba.__webglLineCount=Pa;b(Ba,eb);k.verticesNeedUpdate=true;k.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){k=g.geometry;if(!k.__webglVertexBuffer){var ab=k;ab.__webglVertexBuffer=j.createBuffer();ab.__webglColorBuffer=j.createBuffer();C.info.geometries++;var Za=k,Lb=g,mb=Za.vertices.length;Za.__vertexArray=new Float32Array(mb*3);Za.__colorArray=new Float32Array(mb*3);Za.__sortArray=[];Za.__webglParticleCount=mb;b(Za,Lb);k.verticesNeedUpdate=true;k.colorsNeedUpdate=
|
|
|
-true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){k=g.geometry;if(k instanceof THREE.BufferGeometry)o(h.__webglObjects,k,g);else for(i in k.geometryGroups){l=k.geometryGroups[i];o(h.__webglObjects,l,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){k=g.geometry;o(h.__webglObjects,k,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 bb=a.__objectsRemoved[0],jb=a;bb instanceof THREE.Mesh||bb instanceof THREE.ParticleSystem||bb instanceof THREE.Ribbon||bb instanceof THREE.Line?q(jb.__webglObjects,bb):bb instanceof THREE.Sprite?n(jb.__webglSprites,bb):bb instanceof THREE.LensFlare?n(jb.__webglFlares,bb):(bb instanceof THREE.ImmediateRenderObject||bb.immediateRenderCallback)&&
|
|
|
-q(jb.__webglObjectsImmediate,bb);bb.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var gb=0,ob=a.__webglObjects.length;gb<ob;gb++){var kb=a.__webglObjects[gb].object,ga=kb.geometry,$a=void 0,fb=void 0,Ua=void 0;if(kb instanceof THREE.Mesh)if(ga instanceof THREE.BufferGeometry){ga.verticesNeedUpdate=false;ga.elementsNeedUpdate=false;ga.uvsNeedUpdate=false;ga.normalsNeedUpdate=false;ga.colorsNeedUpdate=false}else{for(var nb=0,ac=ga.geometryGroupsList.length;nb<ac;nb++){$a=ga.geometryGroupsList[nb];
|
|
|
-Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);if(ga.verticesNeedUpdate||ga.morphTargetsNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangetsNeedUpdate||fb){var da=$a,nd=kb,Wa=j.DYNAMIC_DRAW,od=!ga.dynamic,cc=Ua;if(da.__inittedArrays){var cd=d(cc),Tc=cc.vertexColors?cc.vertexColors:false,dd=e(cc),Ec=cd===THREE.SmoothShading,E=void 0,U=void 0,ib=void 0,K=void 0,jc=void 0,Ob=void 0,lb=void 0,Fc=void 0,Gb=void 0,kc=void 0,lc=void 0,V=void 0,W=void 0,X=void 0,
|
|
|
-ma=void 0,pb=void 0,qb=void 0,rb=void 0,qc=void 0,sb=void 0,tb=void 0,ub=void 0,rc=void 0,vb=void 0,wb=void 0,xb=void 0,sc=void 0,yb=void 0,zb=void 0,Ab=void 0,tc=void 0,Bb=void 0,Cb=void 0,Db=void 0,uc=void 0,Pb=void 0,Qb=void 0,Rb=void 0,Gc=void 0,Sb=void 0,Tb=void 0,Ub=void 0,Hc=void 0,ia=void 0,ed=void 0,Vb=void 0,mc=void 0,nc=void 0,Ga=void 0,fd=void 0,Ea=void 0,Fa=void 0,Wb=void 0,Hb=void 0,xa=0,Ca=0,Ib=0,Jb=0,cb=0,Na=0,na=0,Qa=0,za=0,J=0,ba=0,z=0,Xa=void 0,Ha=da.__vertexArray,vc=da.__uvArray,
|
|
|
-wc=da.__uv2Array,db=da.__normalArray,qa=da.__tangentArray,Ia=da.__colorArray,ra=da.__skinVertexAArray,sa=da.__skinVertexBArray,ta=da.__skinIndexArray,ua=da.__skinWeightArray,Uc=da.__morphTargetsArrays,Vc=da.__morphNormalsArrays,Wc=da.__webglCustomAttributesList,w=void 0,Eb=da.__faceArray,Ya=da.__lineArray,Ra=nd.geometry,pd=Ra.elementsNeedUpdate,gd=Ra.uvsNeedUpdate,qd=Ra.normalsNeedUpdate,rd=Ra.tangetsNeedUpdate,sd=Ra.colorsNeedUpdate,td=Ra.morphTargetsNeedUpdate,dc=Ra.vertices,ja=da.faces3,ka=da.faces4,
|
|
|
-Aa=Ra.faces,Xc=Ra.faceVertexUvs[0],Yc=Ra.faceVertexUvs[1],ec=Ra.skinVerticesA,fc=Ra.skinVerticesB,gc=Ra.skinIndices,Xb=Ra.skinWeights,Yb=Ra.morphTargets,Ic=Ra.morphNormals;if(Ra.verticesNeedUpdate){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=dc[K.a];W=dc[K.b];X=dc[K.c];Ha[Ca]=V.x;Ha[Ca+1]=V.y;Ha[Ca+2]=V.z;Ha[Ca+3]=W.x;Ha[Ca+4]=W.y;Ha[Ca+5]=W.z;Ha[Ca+6]=X.x;Ha[Ca+7]=X.y;Ha[Ca+8]=X.z;Ca=Ca+9}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=dc[K.a];W=dc[K.b];X=dc[K.c];ma=dc[K.d];Ha[Ca]=V.x;Ha[Ca+1]=V.y;Ha[Ca+
|
|
|
-2]=V.z;Ha[Ca+3]=W.x;Ha[Ca+4]=W.y;Ha[Ca+5]=W.z;Ha[Ca+6]=X.x;Ha[Ca+7]=X.y;Ha[Ca+8]=X.z;Ha[Ca+9]=ma.x;Ha[Ca+10]=ma.y;Ha[Ca+11]=ma.z;Ca=Ca+12}j.bindBuffer(j.ARRAY_BUFFER,da.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Ha,Wa)}if(td){Ga=0;for(fd=Yb.length;Ga<fd;Ga++){E=ba=0;for(U=ja.length;E<U;E++){Wb=ja[E];K=Aa[Wb];V=Yb[Ga].vertices[K.a];W=Yb[Ga].vertices[K.b];X=Yb[Ga].vertices[K.c];Ea=Uc[Ga];Ea[ba]=V.x;Ea[ba+1]=V.y;Ea[ba+2]=V.z;Ea[ba+3]=W.x;Ea[ba+4]=W.y;Ea[ba+5]=W.z;Ea[ba+6]=X.x;Ea[ba+7]=X.y;Ea[ba+
|
|
|
-8]=X.z;if(cc.morphNormals){if(Ec){Hb=Ic[Ga].vertexNormals[Wb];sb=Hb.a;tb=Hb.b;ub=Hb.c}else ub=tb=sb=Ic[Ga].faceNormals[Wb];Fa=Vc[Ga];Fa[ba]=sb.x;Fa[ba+1]=sb.y;Fa[ba+2]=sb.z;Fa[ba+3]=tb.x;Fa[ba+4]=tb.y;Fa[ba+5]=tb.z;Fa[ba+6]=ub.x;Fa[ba+7]=ub.y;Fa[ba+8]=ub.z}ba=ba+9}E=0;for(U=ka.length;E<U;E++){Wb=ka[E];K=Aa[Wb];V=Yb[Ga].vertices[K.a];W=Yb[Ga].vertices[K.b];X=Yb[Ga].vertices[K.c];ma=Yb[Ga].vertices[K.d];Ea=Uc[Ga];Ea[ba]=V.x;Ea[ba+1]=V.y;Ea[ba+2]=V.z;Ea[ba+3]=W.x;Ea[ba+4]=W.y;Ea[ba+5]=W.z;Ea[ba+6]=X.x;
|
|
|
-Ea[ba+7]=X.y;Ea[ba+8]=X.z;Ea[ba+9]=ma.x;Ea[ba+10]=ma.y;Ea[ba+11]=ma.z;if(cc.morphNormals){if(Ec){Hb=Ic[Ga].vertexNormals[Wb];sb=Hb.a;tb=Hb.b;ub=Hb.c;rc=Hb.d}else rc=ub=tb=sb=Ic[Ga].faceNormals[Wb];Fa=Vc[Ga];Fa[ba]=sb.x;Fa[ba+1]=sb.y;Fa[ba+2]=sb.z;Fa[ba+3]=tb.x;Fa[ba+4]=tb.y;Fa[ba+5]=tb.z;Fa[ba+6]=ub.x;Fa[ba+7]=ub.y;Fa[ba+8]=ub.z;Fa[ba+9]=rc.x;Fa[ba+10]=rc.y;Fa[ba+11]=rc.z}ba=ba+12}j.bindBuffer(j.ARRAY_BUFFER,da.__webglMorphTargetsBuffers[Ga]);j.bufferData(j.ARRAY_BUFFER,Uc[Ga],Wa);if(cc.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-da.__webglMorphNormalsBuffers[Ga]);j.bufferData(j.ARRAY_BUFFER,Vc[Ga],Wa)}}}if(Xb.length){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];yb=Xb[K.a];zb=Xb[K.b];Ab=Xb[K.c];ua[J]=yb.x;ua[J+1]=yb.y;ua[J+2]=yb.z;ua[J+3]=yb.w;ua[J+4]=zb.x;ua[J+5]=zb.y;ua[J+6]=zb.z;ua[J+7]=zb.w;ua[J+8]=Ab.x;ua[J+9]=Ab.y;ua[J+10]=Ab.z;ua[J+11]=Ab.w;Bb=gc[K.a];Cb=gc[K.b];Db=gc[K.c];ta[J]=Bb.x;ta[J+1]=Bb.y;ta[J+2]=Bb.z;ta[J+3]=Bb.w;ta[J+4]=Cb.x;ta[J+5]=Cb.y;ta[J+6]=Cb.z;ta[J+7]=Cb.w;ta[J+8]=Db.x;ta[J+9]=Db.y;ta[J+10]=Db.z;ta[J+11]=
|
|
|
-Db.w;Pb=ec[K.a];Qb=ec[K.b];Rb=ec[K.c];ra[J]=Pb.x;ra[J+1]=Pb.y;ra[J+2]=Pb.z;ra[J+3]=1;ra[J+4]=Qb.x;ra[J+5]=Qb.y;ra[J+6]=Qb.z;ra[J+7]=1;ra[J+8]=Rb.x;ra[J+9]=Rb.y;ra[J+10]=Rb.z;ra[J+11]=1;Sb=fc[K.a];Tb=fc[K.b];Ub=fc[K.c];sa[J]=Sb.x;sa[J+1]=Sb.y;sa[J+2]=Sb.z;sa[J+3]=1;sa[J+4]=Tb.x;sa[J+5]=Tb.y;sa[J+6]=Tb.z;sa[J+7]=1;sa[J+8]=Ub.x;sa[J+9]=Ub.y;sa[J+10]=Ub.z;sa[J+11]=1;J=J+12}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];yb=Xb[K.a];zb=Xb[K.b];Ab=Xb[K.c];tc=Xb[K.d];ua[J]=yb.x;ua[J+1]=yb.y;ua[J+2]=yb.z;ua[J+3]=
|
|
|
-yb.w;ua[J+4]=zb.x;ua[J+5]=zb.y;ua[J+6]=zb.z;ua[J+7]=zb.w;ua[J+8]=Ab.x;ua[J+9]=Ab.y;ua[J+10]=Ab.z;ua[J+11]=Ab.w;ua[J+12]=tc.x;ua[J+13]=tc.y;ua[J+14]=tc.z;ua[J+15]=tc.w;Bb=gc[K.a];Cb=gc[K.b];Db=gc[K.c];uc=gc[K.d];ta[J]=Bb.x;ta[J+1]=Bb.y;ta[J+2]=Bb.z;ta[J+3]=Bb.w;ta[J+4]=Cb.x;ta[J+5]=Cb.y;ta[J+6]=Cb.z;ta[J+7]=Cb.w;ta[J+8]=Db.x;ta[J+9]=Db.y;ta[J+10]=Db.z;ta[J+11]=Db.w;ta[J+12]=uc.x;ta[J+13]=uc.y;ta[J+14]=uc.z;ta[J+15]=uc.w;Pb=ec[K.a];Qb=ec[K.b];Rb=ec[K.c];Gc=ec[K.d];ra[J]=Pb.x;ra[J+1]=Pb.y;ra[J+2]=Pb.z;
|
|
|
-ra[J+3]=1;ra[J+4]=Qb.x;ra[J+5]=Qb.y;ra[J+6]=Qb.z;ra[J+7]=1;ra[J+8]=Rb.x;ra[J+9]=Rb.y;ra[J+10]=Rb.z;ra[J+11]=1;ra[J+12]=Gc.x;ra[J+13]=Gc.y;ra[J+14]=Gc.z;ra[J+15]=1;Sb=fc[K.a];Tb=fc[K.b];Ub=fc[K.c];Hc=fc[K.d];sa[J]=Sb.x;sa[J+1]=Sb.y;sa[J+2]=Sb.z;sa[J+3]=1;sa[J+4]=Tb.x;sa[J+5]=Tb.y;sa[J+6]=Tb.z;sa[J+7]=1;sa[J+8]=Ub.x;sa[J+9]=Ub.y;sa[J+10]=Ub.z;sa[J+11]=1;sa[J+12]=Hc.x;sa[J+13]=Hc.y;sa[J+14]=Hc.z;sa[J+15]=1;J=J+16}if(J>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexABuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-ra,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexBBuffer);j.bufferData(j.ARRAY_BUFFER,sa,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinIndicesBuffer);j.bufferData(j.ARRAY_BUFFER,ta,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinWeightsBuffer);j.bufferData(j.ARRAY_BUFFER,ua,Wa)}}if(sd&&Tc){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];lb=K.vertexColors;Fc=K.color;if(lb.length===3&&Tc===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2]}else xb=wb=vb=Fc;Ia[za]=vb.r;Ia[za+1]=vb.g;Ia[za+2]=vb.b;Ia[za+3]=
|
|
|
-wb.r;Ia[za+4]=wb.g;Ia[za+5]=wb.b;Ia[za+6]=xb.r;Ia[za+7]=xb.g;Ia[za+8]=xb.b;za=za+9}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];lb=K.vertexColors;Fc=K.color;if(lb.length===4&&Tc===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2];sc=lb[3]}else sc=xb=wb=vb=Fc;Ia[za]=vb.r;Ia[za+1]=vb.g;Ia[za+2]=vb.b;Ia[za+3]=wb.r;Ia[za+4]=wb.g;Ia[za+5]=wb.b;Ia[za+6]=xb.r;Ia[za+7]=xb.g;Ia[za+8]=xb.b;Ia[za+9]=sc.r;Ia[za+10]=sc.g;Ia[za+11]=sc.b;za=za+12}if(za>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-Ia,Wa)}}if(rd&&Ra.hasTangents){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];Gb=K.vertexTangents;pb=Gb[0];qb=Gb[1];rb=Gb[2];qa[na]=pb.x;qa[na+1]=pb.y;qa[na+2]=pb.z;qa[na+3]=pb.w;qa[na+4]=qb.x;qa[na+5]=qb.y;qa[na+6]=qb.z;qa[na+7]=qb.w;qa[na+8]=rb.x;qa[na+9]=rb.y;qa[na+10]=rb.z;qa[na+11]=rb.w;na=na+12}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];Gb=K.vertexTangents;pb=Gb[0];qb=Gb[1];rb=Gb[2];qc=Gb[3];qa[na]=pb.x;qa[na+1]=pb.y;qa[na+2]=pb.z;qa[na+3]=pb.w;qa[na+4]=qb.x;qa[na+5]=qb.y;qa[na+6]=qb.z;qa[na+7]=qb.w;
|
|
|
-qa[na+8]=rb.x;qa[na+9]=rb.y;qa[na+10]=rb.z;qa[na+11]=rb.w;qa[na+12]=qc.x;qa[na+13]=qc.y;qa[na+14]=qc.z;qa[na+15]=qc.w;na=na+16}j.bindBuffer(j.ARRAY_BUFFER,da.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,qa,Wa)}if(qd&&cd){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];jc=K.vertexNormals;Ob=K.normal;if(jc.length===3&&Ec)for(ia=0;ia<3;ia++){Vb=jc[ia];db[Na]=Vb.x;db[Na+1]=Vb.y;db[Na+2]=Vb.z;Na=Na+3}else for(ia=0;ia<3;ia++){db[Na]=Ob.x;db[Na+1]=Ob.y;db[Na+2]=Ob.z;Na=Na+3}}E=0;for(U=ka.length;E<U;E++){K=
|
|
|
-Aa[ka[E]];jc=K.vertexNormals;Ob=K.normal;if(jc.length===4&&Ec)for(ia=0;ia<4;ia++){Vb=jc[ia];db[Na]=Vb.x;db[Na+1]=Vb.y;db[Na+2]=Vb.z;Na=Na+3}else for(ia=0;ia<4;ia++){db[Na]=Ob.x;db[Na+1]=Ob.y;db[Na+2]=Ob.z;Na=Na+3}}j.bindBuffer(j.ARRAY_BUFFER,da.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,db,Wa)}if(gd&&Xc&&dd){E=0;for(U=ja.length;E<U;E++){ib=ja[E];K=Aa[ib];kc=Xc[ib];if(kc!==void 0)for(ia=0;ia<3;ia++){mc=kc[ia];vc[Ib]=mc.u;vc[Ib+1]=mc.v;Ib=Ib+2}}E=0;for(U=ka.length;E<U;E++){ib=ka[E];K=Aa[ib];kc=
|
|
|
-Xc[ib];if(kc!==void 0)for(ia=0;ia<4;ia++){mc=kc[ia];vc[Ib]=mc.u;vc[Ib+1]=mc.v;Ib=Ib+2}}if(Ib>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglUVBuffer);j.bufferData(j.ARRAY_BUFFER,vc,Wa)}}if(gd&&Yc&&dd){E=0;for(U=ja.length;E<U;E++){ib=ja[E];K=Aa[ib];lc=Yc[ib];if(lc!==void 0)for(ia=0;ia<3;ia++){nc=lc[ia];wc[Jb]=nc.u;wc[Jb+1]=nc.v;Jb=Jb+2}}E=0;for(U=ka.length;E<U;E++){ib=ka[E];K=Aa[ib];lc=Yc[ib];if(lc!==void 0)for(ia=0;ia<4;ia++){nc=lc[ia];wc[Jb]=nc.u;wc[Jb+1]=nc.v;Jb=Jb+2}}if(Jb>0){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-da.__webglUV2Buffer);j.bufferData(j.ARRAY_BUFFER,wc,Wa)}}if(pd){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];Eb[cb]=xa;Eb[cb+1]=xa+1;Eb[cb+2]=xa+2;cb=cb+3;Ya[Qa]=xa;Ya[Qa+1]=xa+1;Ya[Qa+2]=xa;Ya[Qa+3]=xa+2;Ya[Qa+4]=xa+1;Ya[Qa+5]=xa+2;Qa=Qa+6;xa=xa+3}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];Eb[cb]=xa;Eb[cb+1]=xa+1;Eb[cb+2]=xa+3;Eb[cb+3]=xa+1;Eb[cb+4]=xa+2;Eb[cb+5]=xa+3;cb=cb+6;Ya[Qa]=xa;Ya[Qa+1]=xa+1;Ya[Qa+2]=xa;Ya[Qa+3]=xa+3;Ya[Qa+4]=xa+1;Ya[Qa+5]=xa+2;Ya[Qa+6]=xa+2;Ya[Qa+7]=xa+3;Qa=Qa+8;xa=xa+4}j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,
|
|
|
-da.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Eb,Wa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Ya,Wa)}if(Wc){ia=0;for(ed=Wc.length;ia<ed;ia++){w=Wc[ia];if(w.__original.needsUpdate){z=0;if(w.size===1)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];w.array[z]=w.value[K.a];w.array[z+1]=w.value[K.b];w.array[z+2]=w.value[K.c];z=z+3}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];w.array[z]=w.value[K.a];w.array[z+
|
|
|
-1]=w.value[K.b];w.array[z+2]=w.value[K.c];w.array[z+3]=w.value[K.d];z=z+4}}else{if(w.boundTo==="faces"){E=0;for(U=ja.length;E<U;E++){Xa=w.value[ja[E]];w.array[z]=Xa;w.array[z+1]=Xa;w.array[z+2]=Xa;z=z+3}E=0;for(U=ka.length;E<U;E++){Xa=w.value[ka[E]];w.array[z]=Xa;w.array[z+1]=Xa;w.array[z+2]=Xa;w.array[z+3]=Xa;z=z+4}}}else if(w.size===2)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V.x;w.array[z+1]=V.y;
|
|
|
-w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;z=z+6}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;w.array[z+6]=ma.x;w.array[z+7]=ma.y;z=z+8}}else{if(w.boundTo==="faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;
|
|
|
-z=z+6}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;w.array[z+6]=ma.x;w.array[z+7]=ma.y;z=z+8}}}else if(w.size===3){var ea;ea=w.type==="c"?["r","g","b"]:["x","y","z"];if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+
|
|
|
-4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];z=z+9}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];w.array[z+9]=ma[ea[0]];w.array[z+10]=ma[ea[1]];w.array[z+11]=ma[ea[2]];z=z+12}}else if(w.boundTo===
|
|
|
-"faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];z=z+9}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+
|
|
|
-8]=X[ea[2]];w.array[z+9]=ma[ea[0]];w.array[z+10]=ma[ea[1]];w.array[z+11]=ma[ea[2]];z=z+12}}}else if(w.size===4)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;z=z+12}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];
|
|
|
-W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;w.array[z+12]=ma.x;w.array[z+13]=ma.y;w.array[z+14]=ma.z;w.array[z+15]=ma.w;z=z+16}}else if(w.boundTo==="faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+
|
|
|
-5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;z=z+12}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;w.array[z+12]=ma.x;w.array[z+13]=ma.y;w.array[z+14]=ma.z;w.array[z+15]=ma.w;z=z+16}}j.bindBuffer(j.ARRAY_BUFFER,w.buffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-w.array,Wa)}}}if(od){delete da.__inittedArrays;delete da.__colorArray;delete da.__normalArray;delete da.__tangentArray;delete da.__uvArray;delete da.__uv2Array;delete da.__faceArray;delete da.__vertexArray;delete da.__lineArray;delete da.__skinVertexAArray;delete da.__skinVertexBArray;delete da.__skinIndexArray;delete da.__skinWeightArray}}}}ga.verticesNeedUpdate=false;ga.morphTargetsNeedUpdate=false;ga.elementsNeedUpdate=false;ga.uvsNeedUpdate=false;ga.normalsNeedUpdate=false;ga.colorsNeedUpdate=
|
|
|
-false;ga.tangetsNeedUpdate=false;Ua.attributes&&p(Ua)}else if(kb instanceof THREE.Ribbon){if(ga.verticesNeedUpdate||ga.colorsNeedUpdate){var Zb=ga,hd=j.DYNAMIC_DRAW,xc=void 0,yc=void 0,Jc=void 0,$b=void 0,Kc=void 0,id=Zb.vertices,jd=Zb.colors,ud=id.length,vd=jd.length,Lc=Zb.__vertexArray,Mc=Zb.__colorArray,wd=Zb.colorsNeedUpdate;if(Zb.verticesNeedUpdate){for(xc=0;xc<ud;xc++){Jc=id[xc];$b=xc*3;Lc[$b]=Jc.x;Lc[$b+1]=Jc.y;Lc[$b+2]=Jc.z}j.bindBuffer(j.ARRAY_BUFFER,Zb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-Lc,hd)}if(wd){for(yc=0;yc<vd;yc++){Kc=jd[yc];$b=yc*3;Mc[$b]=Kc.r;Mc[$b+1]=Kc.g;Mc[$b+2]=Kc.b}j.bindBuffer(j.ARRAY_BUFFER,Zb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Mc,hd)}}ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false}else if(kb instanceof THREE.Line){Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);if(ga.verticesNeedUpdate||ga.colorsNeedUpdate||fb){var Kb=ga,Zc=j.DYNAMIC_DRAW,zc=void 0,Ac=void 0,Nc=void 0,va=void 0,Oc=void 0,kd=Kb.vertices,ld=Kb.colors,xd=kd.length,yd=ld.length,Pc=Kb.__vertexArray,
|
|
|
-Qc=Kb.__colorArray,zd=Kb.colorsNeedUpdate,$c=Kb.__webglCustomAttributesList,Rc=void 0,md=void 0,La=void 0,oc=void 0,Va=void 0,pa=void 0;if(Kb.verticesNeedUpdate){for(zc=0;zc<xd;zc++){Nc=kd[zc];va=zc*3;Pc[va]=Nc.x;Pc[va+1]=Nc.y;Pc[va+2]=Nc.z}j.bindBuffer(j.ARRAY_BUFFER,Kb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Pc,Zc)}if(zd){for(Ac=0;Ac<yd;Ac++){Oc=ld[Ac];va=Ac*3;Qc[va]=Oc.r;Qc[va+1]=Oc.g;Qc[va+2]=Oc.b}j.bindBuffer(j.ARRAY_BUFFER,Kb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Qc,Zc)}if($c){Rc=
|
|
|
-0;for(md=$c.length;Rc<md;Rc++){pa=$c[Rc];if(pa.needsUpdate&&(pa.boundTo===void 0||pa.boundTo==="vertices")){va=0;oc=pa.value.length;if(pa.size===1)for(La=0;La<oc;La++)pa.array[La]=pa.value[La];else if(pa.size===2)for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+1]=Va.y;va=va+2}else if(pa.size===3)if(pa.type==="c")for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.r;pa.array[va+1]=Va.g;pa.array[va+2]=Va.b;va=va+3}else for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+
|
|
|
-1]=Va.y;pa.array[va+2]=Va.z;va=va+3}else if(pa.size===4)for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+1]=Va.y;pa.array[va+2]=Va.z;pa.array[va+3]=Va.w;va=va+4}j.bindBuffer(j.ARRAY_BUFFER,pa.buffer);j.bufferData(j.ARRAY_BUFFER,pa.array,Zc)}}}}ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false;Ua.attributes&&p(Ua)}else if(kb instanceof THREE.ParticleSystem){Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);(ga.verticesNeedUpdate||ga.colorsNeedUpdate||kb.sortParticles||fb)&&f(ga,j.DYNAMIC_DRAW,
|
|
|
-kb);ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false;Ua.attributes&&p(Ua)}}};this.initMaterial=function(a,b,c,d){var e,f,g;a instanceof THREE.MeshDepthMaterial?g="depth":a instanceof THREE.MeshNormalMaterial?g="normal":a instanceof THREE.MeshBasicMaterial?g="basic":a instanceof THREE.MeshLambertMaterial?g="lambert":a instanceof THREE.MeshPhongMaterial?g="phong":a instanceof THREE.LineBasicMaterial?g="basic":a instanceof THREE.ParticleBasicMaterial&&(g="particle_basic");if(g){var h=THREE.ShaderLib[g];
|
|
|
-a.uniforms=THREE.UniformsUtils.clone(h.uniforms);a.vertexShader=h.vertexShader;a.fragmentShader=h.fragmentShader}var i,k,l,m,n;i=m=n=h=0;for(k=b.length;i<k;i++){l=b[i];if(!l.onlyShadow){l instanceof THREE.DirectionalLight&&m++;l instanceof THREE.PointLight&&n++;l instanceof THREE.SpotLight&&h++}}if(n+h+m<=Q){k=m;l=n;m=h}else{k=Math.ceil(Q*m/(n+m));m=l=Q-k}var o=0,h=0;for(n=b.length;h<n;h++){i=b[h];if(i.castShadow){i instanceof THREE.SpotLight&&o++;i instanceof THREE.DirectionalLight&&!i.shadowCascade&&
|
|
|
-o++}}var p=50;if(d!==void 0&&d instanceof THREE.SkinnedMesh)p=d.bones.length;var q;a:{i=a.fragmentShader;n=a.vertexShader;var h=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:p,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:m,maxShadows:o,
|
|
|
-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},r,d=[];if(g)d.push(g);else{d.push(i);d.push(n)}for(r in c){d.push(r);d.push(c[r])}g=d.join();r=0;for(d=P.length;r<d;r++){k=P[r];if(k.code===g){k.usedTimes++;q=k.program;break a}}r=j.createProgram();d=["precision "+v+" float;",$a>
|
|
|
-0?"#define VERTEX_TEXTURES":"",C.gammaInput?"#define GAMMA_INPUT":"",C.gammaOutput?"#define GAMMA_OUTPUT":"",C.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.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");
|
|
|
+1;c>=0;c--)a[c].object===b&&a.splice(c,1)}function n(a,b){for(var c=a.length-1;c>=0;c--)a[c]===b&&a.splice(c,1)}function r(a,b,c,d,e){if(d.needsUpdate){d.program&&C.deallocateMaterial(d);C.initMaterial(d,b,c,e);d.needsUpdate=false}if(d.morphTargets&&!e.__webglMorphTargetInfluences)e.__webglMorphTargetInfluences=new Float32Array(C.maxMorphTargets);var f=false,g=d.program,h=g.uniforms,i=d.uniforms;if(g!==T){j.useProgram(g);T=g;f=true}if(d.id!==M){M=d.id;f=true}if(f||a!==fa){j.uniformMatrix4fv(h.projectionMatrix,
|
|
|
+false,a._projectionMatrixArray);a!==fa&&(fa=a)}if(f){if(c&&d.fog){i.fogColor.value=c.color;if(c instanceof THREE.Fog){i.fogNear.value=c.near;i.fogFar.value=c.far}else if(c instanceof THREE.FogExp2)i.fogDensity.value=c.density}if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(la){for(var k,l=0,m=0,n=0,o,p,q,r=ob,t=r.directional.colors,v=r.directional.positions,u=r.point.colors,x=r.point.positions,y=r.point.distances,B=r.spot.colors,G=r.spot.positions,H=r.spot.distances,
|
|
|
+S=r.spot.directions,I=r.spot.angles,F=r.spot.exponents,L=0,Z=0,N=0,O=q=0,c=O=0,f=b.length;c<f;c++){k=b[c];if(!k.onlyShadow){o=k.color;p=k.intensity;q=k.distance;if(k instanceof THREE.AmbientLight)if(C.gammaInput){l=l+o.r*o.r;m=m+o.g*o.g;n=n+o.b*o.b}else{l=l+o.r;m=m+o.g;n=n+o.b}else if(k instanceof THREE.DirectionalLight){q=L*3;if(C.gammaInput){t[q]=o.r*o.r*p*p;t[q+1]=o.g*o.g*p*p;t[q+2]=o.b*o.b*p*p}else{t[q]=o.r*p;t[q+1]=o.g*p;t[q+2]=o.b*p}Da.copy(k.matrixWorld.getPosition());Da.subSelf(k.target.matrixWorld.getPosition());
|
|
|
+Da.normalize();v[q]=Da.x;v[q+1]=Da.y;v[q+2]=Da.z;L=L+1}else if(k instanceof THREE.PointLight){O=Z*3;if(C.gammaInput){u[O]=o.r*o.r*p*p;u[O+1]=o.g*o.g*p*p;u[O+2]=o.b*o.b*p*p}else{u[O]=o.r*p;u[O+1]=o.g*p;u[O+2]=o.b*p}o=k.matrixWorld.getPosition();x[O]=o.x;x[O+1]=o.y;x[O+2]=o.z;y[Z]=q;Z=Z+1}else if(k instanceof THREE.SpotLight){O=N*3;if(C.gammaInput){B[O]=o.r*o.r*p*p;B[O+1]=o.g*o.g*p*p;B[O+2]=o.b*o.b*p*p}else{B[O]=o.r*p;B[O+1]=o.g*p;B[O+2]=o.b*p}o=k.matrixWorld.getPosition();G[O]=o.x;G[O+1]=o.y;G[O+2]=
|
|
|
+o.z;H[N]=q;Da.copy(o);Da.subSelf(k.target.matrixWorld.getPosition());Da.normalize();S[O]=Da.x;S[O+1]=Da.y;S[O+2]=Da.z;I[N]=Math.cos(k.angle);F[N]=k.exponent;N=N+1}}}c=L*3;for(f=t.length;c<f;c++)t[c]=0;c=Z*3;for(f=u.length;c<f;c++)u[c]=0;c=N*3;for(f=B.length;c<f;c++)B[c]=0;r.directional.length=L;r.point.length=Z;r.spot.length=N;r.ambient[0]=l;r.ambient[1]=m;r.ambient[2]=n;la=false}c=ob;i.ambientLightColor.value=c.ambient;i.directionalLightColor.value=c.directional.colors;i.directionalLightDirection.value=
|
|
|
+c.directional.positions;i.pointLightColor.value=c.point.colors;i.pointLightPosition.value=c.point.positions;i.pointLightDistance.value=c.point.distances;i.spotLightColor.value=c.spot.colors;i.spotLightPosition.value=c.spot.positions;i.spotLightDistance.value=c.spot.distances;i.spotLightDirection.value=c.spot.directions;i.spotLightAngle.value=c.spot.angles;i.spotLightExponent.value=c.spot.exponents}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){i.opacity.value=
|
|
|
+d.opacity;C.gammaInput?i.diffuse.value.copyGammaToLinear(d.color):i.diffuse.value=d.color;(i.map.texture=d.map)&&i.offsetRepeat.value.set(d.map.offset.x,d.map.offset.y,d.map.repeat.x,d.map.repeat.y);i.lightMap.texture=d.lightMap;i.envMap.texture=d.envMap;i.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;i.reflectivity.value=d.reflectivity;i.refractionRatio.value=d.refractionRatio;i.combine.value=d.combine;i.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}if(d instanceof
|
|
|
+THREE.LineBasicMaterial){i.diffuse.value=d.color;i.opacity.value=d.opacity}else if(d instanceof THREE.ParticleBasicMaterial){i.psColor.value=d.color;i.opacity.value=d.opacity;i.size.value=d.size;i.scale.value=A.height/2;i.map.texture=d.map}else if(d instanceof THREE.MeshPhongMaterial){i.shininess.value=d.shininess;if(C.gammaInput){i.ambient.value.copyGammaToLinear(d.ambient);i.emissive.value.copyGammaToLinear(d.emissive);i.specular.value.copyGammaToLinear(d.specular)}else{i.ambient.value=d.ambient;
|
|
|
+i.emissive.value=d.emissive;i.specular.value=d.specular}d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshLambertMaterial){if(C.gammaInput){i.ambient.value.copyGammaToLinear(d.ambient);i.emissive.value.copyGammaToLinear(d.emissive)}else{i.ambient.value=d.ambient;i.emissive.value=d.emissive}d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshDepthMaterial){i.mNear.value=a.near;i.mFar.value=a.far;i.opacity.value=d.opacity}else if(d instanceof THREE.MeshNormalMaterial)i.opacity.value=
|
|
|
+d.opacity;if(e.receiveShadow&&!d._shadowPass&&i.shadowMatrix){f=c=0;for(k=b.length;f<k;f++){l=b[f];if(l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight&&!l.shadowCascade)){i.shadowMap.texture[c]=l.shadowMap;i.shadowMapSize.value[c]=l.shadowMapSize;i.shadowMatrix.value[c]=l.shadowMatrix;i.shadowDarkness.value[c]=l.shadowDarkness;i.shadowBias.value[c]=l.shadowBias;c++}}}b=d.uniformsList;i=0;for(c=b.length;i<c;i++)if(l=g.uniforms[b[i][1]]){f=b[i][0];m=f.type;k=f.value;
|
|
|
+switch(m){case "i":j.uniform1i(l,k);break;case "f":j.uniform1f(l,k);break;case "v2":j.uniform2f(l,k.x,k.y);break;case "v3":j.uniform3f(l,k.x,k.y,k.z);break;case "v4":j.uniform4f(l,k.x,k.y,k.z,k.w);break;case "c":j.uniform3f(l,k.r,k.g,k.b);break;case "fv1":j.uniform1fv(l,k);break;case "fv":j.uniform3fv(l,k);break;case "v2v":if(!f._array)f._array=new Float32Array(2*k.length);m=0;for(n=k.length;m<n;m++){r=m*2;f._array[r]=k[m].x;f._array[r+1]=k[m].y}j.uniform2fv(l,f._array);break;case "v3v":if(!f._array)f._array=
|
|
|
+new Float32Array(3*k.length);m=0;for(n=k.length;m<n;m++){r=m*3;f._array[r]=k[m].x;f._array[r+1]=k[m].y;f._array[r+2]=k[m].z}j.uniform3fv(l,f._array);break;case "v4v":if(!f._array)f._array=new Float32Array(4*k.length);m=0;for(n=k.length;m<n;m++){r=m*4;f._array[r]=k[m].x;f._array[r+1]=k[m].y;f._array[r+2]=k[m].z;f._array[r+3]=k[m].w}j.uniform4fv(l,f._array);break;case "m4":if(!f._array)f._array=new Float32Array(16);k.flattenToArray(f._array);j.uniformMatrix4fv(l,false,f._array);break;case "m4v":if(!f._array)f._array=
|
|
|
+new Float32Array(16*k.length);m=0;for(n=k.length;m<n;m++)k[m].flattenToArrayOffset(f._array,m*16);j.uniformMatrix4fv(l,false,f._array);break;case "t":j.uniform1i(l,k);l=f.texture;if(!l)continue;if(l.image instanceof Array&&l.image.length===6){f=l;if(f.image.length===6)if(f.needsUpdate){if(!f.image.__webglTextureCube)f.image.__webglTextureCube=j.createTexture();j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,f.image.__webglTextureCube);k=[];for(l=0;l<6;l++){m=k;n=l;if(C.autoScaleCubemaps){r=
|
|
|
+f.image[l];v=ac;if(!(r.width<=v&&r.height<=v)){u=Math.max(r.width,r.height);t=Math.floor(r.width*v/u);v=Math.floor(r.height*v/u);u=document.createElement("canvas");u.width=t;u.height=v;u.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,t,v);r=u}}else r=f.image[l];m[n]=r}l=k[0];m=(l.width&l.width-1)===0&&(l.height&l.height-1)===0;n=D(f.format);r=D(f.type);s(j.TEXTURE_CUBE_MAP,f,m);for(l=0;l<6;l++)j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,n,n,r,k[l]);f.generateMipmaps&&m&&j.generateMipmap(j.TEXTURE_CUBE_MAP);
|
|
|
+f.needsUpdate=false;if(f.onUpdate)f.onUpdate()}else{j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,f.image.__webglTextureCube)}}else if(l instanceof THREE.WebGLRenderTargetCube){f=l;j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,f.__webglTexture)}else C.setTexture(l,k);break;case "tv":if(!f._array){f._array=[];m=0;for(n=f.texture.length;m<n;m++)f._array[m]=k+m}j.uniform1iv(l,f._array);m=0;for(n=f.texture.length;m<n;m++)(l=f.texture[m])&&C.setTexture(l,f._array[m])}}if((d instanceof
|
|
|
+THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&h.cameraPosition!==null){b=a.matrixWorld.getPosition();j.uniform3f(h.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&h.viewMatrix!==null&&j.uniformMatrix4fv(h.viewMatrix,false,a._viewMatrixArray);d.skinning&&j.uniformMatrix4fv(h.boneGlobalMatrices,false,e.boneMatrices)}j.uniformMatrix4fv(h.modelViewMatrix,false,e._modelViewMatrix.elements);
|
|
|
+h.normalMatrix&&j.uniformMatrix3fv(h.normalMatrix,false,e._normalMatrix.elements);h.objectMatrix!==null&&j.uniformMatrix4fv(h.objectMatrix,false,e.matrixWorld.elements);return g}function u(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function t(a,b,c){if(Ta!==a){a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL);Ta=a}if(a&&(eb!==b||fb!==c)){j.polygonOffset(b,c);eb=b;fb=c}}function y(a,
|
|
|
+b){var c;a==="fragment"?c=j.createShader(j.FRAGMENT_SHADER):a==="vertex"&&(c=j.createShader(j.VERTEX_SHADER));j.shaderSource(c,b);j.compileShader(c);if(!j.getShaderParameter(c,j.COMPILE_STATUS)){console.error(j.getShaderInfoLog(c));console.error(b);return null}return c}function s(a,b,c){if(c){j.texParameteri(a,j.TEXTURE_WRAP_S,D(b.wrapS));j.texParameteri(a,j.TEXTURE_WRAP_T,D(b.wrapT));j.texParameteri(a,j.TEXTURE_MAG_FILTER,D(b.magFilter));j.texParameteri(a,j.TEXTURE_MIN_FILTER,D(b.minFilter))}else{j.texParameteri(a,
|
|
|
+j.TEXTURE_WRAP_S,j.CLAMP_TO_EDGE);j.texParameteri(a,j.TEXTURE_WRAP_T,j.CLAMP_TO_EDGE);j.texParameteri(a,j.TEXTURE_MAG_FILTER,H(b.magFilter));j.texParameteri(a,j.TEXTURE_MIN_FILTER,H(b.minFilter))}}function x(a,b){j.bindRenderbuffer(j.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_COMPONENT16,b.width,b.height);j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){j.renderbufferStorage(j.RENDERBUFFER,
|
|
|
+j.DEPTH_STENCIL,b.width,b.height);j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a)}else j.renderbufferStorage(j.RENDERBUFFER,j.RGBA4,b.width,b.height)}function H(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return j.NEAREST;default:return j.LINEAR}}function D(a){switch(a){case THREE.RepeatWrapping:return j.REPEAT;case THREE.ClampToEdgeWrapping:return j.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return j.MIRRORED_REPEAT;
|
|
|
+case THREE.NearestFilter:return j.NEAREST;case THREE.NearestMipMapNearestFilter:return j.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return j.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return j.LINEAR;case THREE.LinearMipMapNearestFilter:return j.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return j.LINEAR_MIPMAP_LINEAR;case THREE.UnsignedByteType:return j.UNSIGNED_BYTE;case THREE.UnsignedShort4444Type:return j.UNSIGNED_SHORT_4_4_4_4;case THREE.UnsignedShort5551Type:return j.UNSIGNED_SHORT_5_5_5_1;
|
|
|
+case THREE.UnsignedShort565Type:return j.UNSIGNED_SHORT_5_6_5;case THREE.ByteType:return j.BYTE;case THREE.ShortType:return j.SHORT;case THREE.UnsignedShortType:return j.UNSIGNED_SHORT;case THREE.IntType:return j.INT;case THREE.UnsignedIntType:return j.UNSIGNED_INT;case THREE.FloatType:return j.FLOAT;case THREE.AlphaFormat:return j.ALPHA;case THREE.RGBFormat:return j.RGB;case THREE.RGBAFormat:return j.RGBA;case THREE.LuminanceFormat:return j.LUMINANCE;case THREE.LuminanceAlphaFormat:return j.LUMINANCE_ALPHA;
|
|
|
+case THREE.AddEquation:return j.FUNC_ADD;case THREE.SubtractEquation:return j.FUNC_SUBTRACT;case THREE.ReverseSubtractEquation:return j.FUNC_REVERSE_SUBTRACT;case THREE.ZeroFactor:return j.ZERO;case THREE.OneFactor:return j.ONE;case THREE.SrcColorFactor:return j.SRC_COLOR;case THREE.OneMinusSrcColorFactor:return j.ONE_MINUS_SRC_COLOR;case THREE.SrcAlphaFactor:return j.SRC_ALPHA;case THREE.OneMinusSrcAlphaFactor:return j.ONE_MINUS_SRC_ALPHA;case THREE.DstAlphaFactor:return j.DST_ALPHA;case THREE.OneMinusDstAlphaFactor:return j.ONE_MINUS_DST_ALPHA;
|
|
|
+case THREE.DstColorFactor:return j.DST_COLOR;case THREE.OneMinusDstColorFactor:return j.ONE_MINUS_DST_COLOR;case THREE.SrcAlphaSaturateFactor:return j.SRC_ALPHA_SATURATE}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},A=a.canvas!==void 0?a.canvas:document.createElement("canvas"),v=a.precision!==void 0?a.precision:"highp",G=a.alpha!==void 0?a.alpha:true,I=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,N=a.antialias!==void 0?a.antialias:false,R=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),F=a.clearAlpha!==void 0?a.clearAlpha:0,Q=a.maxLights!==void 0?a.maxLights:4;this.domElement=A;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 C=this,j,P=[],L=0,T=null,aa=null,M=-1,ca=null,fa=null,O=0,S=-1,$=-1,Z=-1,ha=-1,Sa=-1,Ma=-1,Oa=-1,oa=-1,Ta=null,eb=null,fb=null,Za=null,Lb=0,mb=0,jb=0,nb=0,ab=0,Ba=0,ya=new THREE.Frustum,
|
|
|
+gb=new THREE.Matrix4,wa=new THREE.Matrix4,Pa=new THREE.Vector4,Da=new THREE.Vector3,la=true,ob={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}};j=function(){var a;try{if(!(a=A.getContext("experimental-webgl",{alpha:G,premultipliedAlpha:I,antialias:N,stencil:R,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";}catch(b){console.error(b)}a.getExtension("OES_texture_float")||
|
|
|
+console.log("THREE.WebGLRenderer: Float textures not supported.");return a}();j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(B.r,B.g,B.b,F);this.context=j;var $a=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);j.getParameter(j.MAX_TEXTURE_SIZE);var ac=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE);
|
|
|
+this.getContext=function(){return j};this.supportsVertexTextures=function(){return $a>0};this.setSize=function(a,b){A.width=a;A.height=b;this.setViewport(0,0,A.width,A.height)};this.setViewport=function(a,b,c,d){Lb=a;mb=b;jb=c;nb=d;j.viewport(Lb,mb,jb,nb)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){B.setHex(a);F=b;j.clearColor(B.r,B.g,B.b,F)};this.setClearColor=function(a,
|
|
|
+b){B.copy(a);F=b;j.clearColor(B.r,B.g,B.b,F)};this.getClearColor=function(){return B};this.getClearAlpha=function(){return F};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|j.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|j.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|j.STENCIL_BUFFER_BIT;j.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];j.deleteBuffer(c.__webglVertexBuffer);j.deleteBuffer(c.__webglNormalBuffer);j.deleteBuffer(c.__webglTangentBuffer);j.deleteBuffer(c.__webglColorBuffer);j.deleteBuffer(c.__webglUVBuffer);j.deleteBuffer(c.__webglUV2Buffer);
|
|
|
+j.deleteBuffer(c.__webglSkinVertexABuffer);j.deleteBuffer(c.__webglSkinVertexBBuffer);j.deleteBuffer(c.__webglSkinIndicesBuffer);j.deleteBuffer(c.__webglSkinWeightsBuffer);j.deleteBuffer(c.__webglFaceBuffer);j.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=0;for(e=c.numMorphTargets;d<e;d++)j.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=0;for(e=c.numMorphNormals;d<e;d++)j.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList){d=
|
|
|
+void 0;for(d in c.__webglCustomAttributesList)j.deleteBuffer(c.__webglCustomAttributesList[d].buffer)}C.info.memory.geometries--}else if(a instanceof THREE.Ribbon){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}else if(a instanceof THREE.Line){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}else if(a instanceof THREE.ParticleSystem){a=a.geometry;j.deleteBuffer(a.__webglVertexBuffer);
|
|
|
+j.deleteBuffer(a.__webglColorBuffer);C.info.memory.geometries--}}};this.deallocateTexture=function(a){if(a.__webglInit){a.__webglInit=false;j.deleteTexture(a.__webglTexture);C.info.memory.textures--}};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture){j.deleteTexture(a.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;b<6;b++){j.deleteFramebuffer(a.__webglFramebuffer[b]);j.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{j.deleteFramebuffer(a.__webglFramebuffer);
|
|
|
+j.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=P.length;a<c;a++){d=P[a];if(d.program===b){d.usedTimes--;d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=P.length;a<c;a++){d=P[a];d.program!==b&&e.push(d)}P=e;j.deleteProgram(b);C.info.memory.programs--}}};this.updateShadowMap=function(a,b){T=null;M=ca=oa=Oa=Z=-1;la=true;$=S=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,
|
|
|
+b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=j.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=j.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=j.createBuffer();if(a.hasPositions){j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.position);j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,false,0,0)}if(a.hasNormals){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,e,f,g,h,i,k,l,m,n,o=a.count*3;for(n=0;n<o;n=n+9){c=a.normalArray;d=c[n];e=c[n+1];f=c[n+2];g=c[n+3];i=c[n+4];l=c[n+5];h=c[n+6];k=c[n+7];m=c[n+8];d=(d+g+h)/3;e=(e+i+k)/3;f=(f+l+m)/3;c[n]=d;c[n+1]=e;c[n+2]=f;c[n+3]=d;c[n+4]=e;c[n+5]=f;c[n+6]=d;c[n+7]=e;c[n+8]=f}}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,3,j.FLOAT,false,0,0)}if(a.hasUvs){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+a.__webglUvBuffer);j.bufferData(j.ARRAY_BUFFER,a.uvArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.uv);j.vertexAttribPointer(b.attributes.uv,2,j.FLOAT,false,0,0)}j.drawArrays(j.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=r(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==ca){ca=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;d=0;for(c=f.length;d<c;++d){if(b){j.bindBuffer(j.ARRAY_BUFFER,e.vertexPositionBuffer);
|
|
|
+j.vertexAttribPointer(a.position,e.vertexPositionBuffer.itemSize,j.FLOAT,false,0,f[d].index*12);if(a.normal>=0&&e.vertexNormalBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexNormalBuffer);j.vertexAttribPointer(a.normal,e.vertexNormalBuffer.itemSize,j.FLOAT,false,0,f[d].index*12)}if(a.uv>=0&&e.vertexUvBuffer)if(e.vertexUvBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexUvBuffer);j.vertexAttribPointer(a.uv,e.vertexUvBuffer.itemSize,j.FLOAT,false,0,f[d].index*8);j.enableVertexAttribArray(a.uv)}else j.disableVertexAttribArray(a.uv);
|
|
|
+if(a.color>=0&&e.vertexColorBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.vertexColorBuffer);j.vertexAttribPointer(a.color,e.vertexColorBuffer.itemSize,j.FLOAT,false,0,f[d].index*16)}j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.vertexIndexBuffer)}j.drawElements(j.TRIANGLES,f[d].count,j.UNSIGNED_SHORT,f[d].start*2);C.info.render.calls++;C.info.render.vertices=C.info.render.vertices+f[d].count;C.info.render.faces=C.info.render.faces+f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,
|
|
|
+i,c=r(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+c.id*2+(d.wireframe?1:0);if(c!==ca){ca=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer);j.vertexAttribPointer(b.position,3,j.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);j.vertexAttribPointer(c.position,3,j.FLOAT,false,0,0)}else if(c.position>=0){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+e.__webglVertexBuffer);j.vertexAttribPointer(c.position,3,j.FLOAT,false,0,0)}if(f.morphTargetForcedOrder.length){var k=0;i=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;k<d.numSupportedMorphTargets&&k<i.length;){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[i[k]]);j.vertexAttribPointer(c["morphTarget"+k],3,j.FLOAT,false,0,0);if(d.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[i[k]]);j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[k]=
|
|
|
+g[i[k]];k++}}else{i=[];g=f.morphTargetInfluences;var l,m=g.length;for(l=0;l<m;l++){k=g[l];k>0&&i.push([l,k])}if(i.length>d.numSupportedMorphTargets){i.sort(h);i.length=d.numSupportedMorphTargets}else i.length>d.numSupportedMorphNormals?i.sort(h):i.length===0&&i.push([0,0]);for(k=0;k<d.numSupportedMorphTargets;){if(i[k]){l=i[k][0];j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);j.vertexAttribPointer(c["morphTarget"+k],3,j.FLOAT,false,0,0);if(d.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+e.__webglMorphNormalsBuffers[l]);j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[k]=g[l]}else{j.vertexAttribPointer(c["morphTarget"+k],3,j.FLOAT,false,0,0);d.morphNormals&&j.vertexAttribPointer(c["morphNormal"+k],3,j.FLOAT,false,0,0);f.__webglMorphTargetInfluences[k]=0}k++}}d.program.uniforms.morphTargetInfluences!==null&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(i=
|
|
|
+e.__webglCustomAttributesList.length;g<i;g++){c=e.__webglCustomAttributesList[g];if(b[c.buffer.belongsToAttribute]>=0){j.bindBuffer(j.ARRAY_BUFFER,c.buffer);j.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,j.FLOAT,false,0,0)}}}if(b.color>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglColorBuffer);j.vertexAttribPointer(b.color,3,j.FLOAT,false,0,0)}if(b.normal>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglNormalBuffer);j.vertexAttribPointer(b.normal,3,j.FLOAT,false,0,0)}if(b.tangent>=0){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+e.__webglTangentBuffer);j.vertexAttribPointer(b.tangent,4,j.FLOAT,false,0,0)}if(b.uv>=0)if(e.__webglUVBuffer){j.bindBuffer(j.ARRAY_BUFFER,e.__webglUVBuffer);j.vertexAttribPointer(b.uv,2,j.FLOAT,false,0,0);j.enableVertexAttribArray(b.uv)}else j.disableVertexAttribArray(b.uv);if(b.uv2>=0)if(e.__webglUV2Buffer){j.bindBuffer(j.ARRAY_BUFFER,e.__webglUV2Buffer);j.vertexAttribPointer(b.uv2,2,j.FLOAT,false,0,0);j.enableVertexAttribArray(b.uv2)}else j.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=
|
|
|
+0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinVertexABuffer);j.vertexAttribPointer(b.skinVertexA,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinVertexBBuffer);j.vertexAttribPointer(b.skinVertexB,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,false,0,0);j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);j.vertexAttribPointer(b.skinWeight,4,j.FLOAT,false,0,0)}}if(f instanceof
|
|
|
+THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==Za){j.lineWidth(d);Za=d}a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);j.drawElements(j.LINES,e.__webglLineCount,j.UNSIGNED_SHORT,0)}else{a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer);j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,0)}C.info.render.calls++;C.info.render.vertices=C.info.render.vertices+e.__webglFaceCount;C.info.render.faces=C.info.render.faces+e.__webglFaceCount/3}else if(f instanceof
|
|
|
+THREE.Line){f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES;d=d.linewidth;if(d!==Za){j.lineWidth(d);Za=d}j.drawArrays(f,0,e.__webglLineCount);C.info.render.calls++}else if(f instanceof THREE.ParticleSystem){j.drawArrays(j.POINTS,0,e.__webglParticleCount);C.info.render.calls++;C.info.render.points=C.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount);C.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,n=a.__lights,
|
|
|
+o=a.fog;M=-1;la=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);gb.multiply(b.projectionMatrix,
|
|
|
+b.matrixWorldInverse);ya.setFromMatrix(gb);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);C.info.render.calls=0;C.info.render.vertices=0;C.info.render.faces=0;C.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||
|
|
|
+ya.contains(h))){u(h,b);var p=f,q=p.object,r=p.buffer,s=void 0,s=s=void 0,s=q.material;if(s instanceof THREE.MeshFaceMaterial){s=r.materialIndex;if(s>=0){s=q.geometry.materials[s];if(s.transparent){p.transparent=s;p.opaque=null}else{p.opaque=s;p.transparent=null}}}else if(s)if(s.transparent){p.transparent=s;p.opaque=null}else{p.opaque=s;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{Pa.copy(h.matrixWorld.getPosition());gb.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){u(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);t(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);k(a.__webglObjects,false,"",b,n,o,true,d);l(a.__webglObjectsImmediate,
|
|
|
+"",b,n,o,false,d)}else{this.setBlending(THREE.NormalBlending);k(a.__webglObjects,true,"opaque",b,n,o,false);l(a.__webglObjectsImmediate,"opaque",b,n,o,false);k(a.__webglObjects,false,"transparent",b,n,o,true);l(a.__webglObjectsImmediate,"transparent",b,n,o,true)}i(this.renderPluginsPost,a,b);if(c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)if(c instanceof THREE.WebGLRenderTargetCube){j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture);j.generateMipmap(j.TEXTURE_CUBE_MAP);
|
|
|
+j.bindTexture(j.TEXTURE_CUBE_MAP,null)}else{j.bindTexture(j.TEXTURE_2D,c.__webglTexture);j.generateMipmap(j.TEXTURE_2D);j.bindTexture(j.TEXTURE_2D,null)}this.setDepthTest(true);this.setDepthWrite(true)};this.renderImmediateObject=function(a,b,c,d,e){var f=r(a,b,c,d,e);ca=-1;C.setObjectFaces(e);e.immediateRenderCallback?e.immediateRenderCallback(f,j,ya):e.render(function(a){C.renderBufferImmediate(a,f,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=
|
|
|
+[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,k=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){k=g.geometry;if(k instanceof THREE.Geometry){if(k.geometryGroups===void 0){var r=k,s=void 0,t=void 0,u=void 0,v=void 0,x=void 0,y=void 0,A=void 0,B={},D=r.morphTargets.length,G=r.morphNormals.length;r.geometryGroups={};s=0;for(t=r.faces.length;s<
|
|
|
+t;s++){u=r.faces[s];v=u.materialIndex;y=v!==void 0?v:-1;B[y]===void 0&&(B[y]={hash:y,counter:0});A=B[y].hash+"_"+B[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:D,numMorphNormals:G});x=u instanceof THREE.Face3?3:4;if(r.geometryGroups[A].vertices+x>65535){B[y].counter=B[y].counter+1;A=B[y].hash+"_"+B[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:D,
|
|
|
+numMorphNormals:G})}u instanceof THREE.Face3?r.geometryGroups[A].faces3.push(s):r.geometryGroups[A].faces4.push(s);r.geometryGroups[A].vertices=r.geometryGroups[A].vertices+x}r.geometryGroupsList=[];var M=void 0;for(M in r.geometryGroups){r.geometryGroups[M].id=O++;r.geometryGroupsList.push(r.geometryGroups[M])}}for(i in k.geometryGroups){l=k.geometryGroups[i];if(!l.__webglVertexBuffer){var S=l;S.__webglVertexBuffer=j.createBuffer();S.__webglNormalBuffer=j.createBuffer();S.__webglTangentBuffer=j.createBuffer();
|
|
|
+S.__webglColorBuffer=j.createBuffer();S.__webglUVBuffer=j.createBuffer();S.__webglUV2Buffer=j.createBuffer();S.__webglSkinVertexABuffer=j.createBuffer();S.__webglSkinVertexBBuffer=j.createBuffer();S.__webglSkinIndicesBuffer=j.createBuffer();S.__webglSkinWeightsBuffer=j.createBuffer();S.__webglFaceBuffer=j.createBuffer();S.__webglLineBuffer=j.createBuffer();var H=void 0,I=void 0;if(S.numMorphTargets){S.__webglMorphTargetsBuffers=[];H=0;for(I=S.numMorphTargets;H<I;H++)S.__webglMorphTargetsBuffers.push(j.createBuffer())}if(S.numMorphNormals){S.__webglMorphNormalsBuffers=
|
|
|
+[];H=0;for(I=S.numMorphNormals;H<I;H++)S.__webglMorphNormalsBuffers.push(j.createBuffer())}C.info.memory.geometries++;var F=l,N=g,L=N.geometry,Z=F.faces3,$=F.faces4,T=Z.length*3+$.length*4,Q=Z.length*1+$.length*2,P=Z.length*3+$.length*4,R=c(N,F),aa=e(R),Y=d(R),fa=R.vertexColors?R.vertexColors:false;F.__vertexArray=new Float32Array(T*3);if(Y)F.__normalArray=new Float32Array(T*3);if(L.hasTangents)F.__tangentArray=new Float32Array(T*4);if(fa)F.__colorArray=new Float32Array(T*3);if(aa){if(L.faceUvs.length>
|
|
|
+0||L.faceVertexUvs.length>0)F.__uvArray=new Float32Array(T*2);if(L.faceUvs.length>1||L.faceVertexUvs.length>1)F.__uv2Array=new Float32Array(T*2)}if(N.geometry.skinWeights.length&&N.geometry.skinIndices.length){F.__skinVertexAArray=new Float32Array(T*4);F.__skinVertexBArray=new Float32Array(T*4);F.__skinIndexArray=new Float32Array(T*4);F.__skinWeightArray=new Float32Array(T*4)}F.__faceArray=new Uint16Array(Q*3);F.__lineArray=new Uint16Array(P*2);var ca=void 0,ha=void 0;if(F.numMorphTargets){F.__morphTargetsArrays=
|
|
|
+[];ca=0;for(ha=F.numMorphTargets;ca<ha;ca++)F.__morphTargetsArrays.push(new Float32Array(T*3))}if(F.numMorphNormals){F.__morphNormalsArrays=[];ca=0;for(ha=F.numMorphNormals;ca<ha;ca++)F.__morphNormalsArrays.push(new Float32Array(T*3))}F.__webglFaceCount=Q*3;F.__webglLineCount=P*2;if(R.attributes){if(F.__webglCustomAttributesList===void 0)F.__webglCustomAttributesList=[];var Oa=void 0;for(Oa in R.attributes){var Sa=R.attributes[Oa],oa={},la;for(la in Sa)oa[la]=Sa[la];if(!oa.__webglInitialized||oa.createUniqueBuffers){oa.__webglInitialized=
|
|
|
+true;var Ma=1;oa.type==="v2"?Ma=2:oa.type==="v3"?Ma=3:oa.type==="v4"?Ma=4:oa.type==="c"&&(Ma=3);oa.size=Ma;oa.array=new Float32Array(T*Ma);oa.buffer=j.createBuffer();oa.buffer.belongsToAttribute=Oa;Sa.needsUpdate=true;oa.__original=Sa}F.__webglCustomAttributesList.push(oa)}}F.__inittedArrays=true;k.verticesNeedUpdate=true;k.morphTargetsNeedUpdate=true;k.elementsNeedUpdate=true;k.uvsNeedUpdate=true;k.normalsNeedUpdate=true;k.tangetsNeedUpdate=true;k.colorsNeedUpdate=true}}}}else if(g instanceof THREE.Ribbon){k=
|
|
|
+g.geometry;if(!k.__webglVertexBuffer){var Ta=k;Ta.__webglVertexBuffer=j.createBuffer();Ta.__webglColorBuffer=j.createBuffer();C.info.memory.geometries++;var wa=k,ya=wa.vertices.length;wa.__vertexArray=new Float32Array(ya*3);wa.__colorArray=new Float32Array(ya*3);wa.__webglVertexCount=ya;k.verticesNeedUpdate=true;k.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){k=g.geometry;if(!k.__webglVertexBuffer){var Da=k;Da.__webglVertexBuffer=j.createBuffer();Da.__webglColorBuffer=j.createBuffer();C.info.memory.geometries++;
|
|
|
+var Ba=k,eb=g,Pa=Ba.vertices.length;Ba.__vertexArray=new Float32Array(Pa*3);Ba.__colorArray=new Float32Array(Pa*3);Ba.__webglLineCount=Pa;b(Ba,eb);k.verticesNeedUpdate=true;k.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){k=g.geometry;if(!k.__webglVertexBuffer){var ab=k;ab.__webglVertexBuffer=j.createBuffer();ab.__webglColorBuffer=j.createBuffer();C.info.geometries++;var Za=k,Lb=g,mb=Za.vertices.length;Za.__vertexArray=new Float32Array(mb*3);Za.__colorArray=new Float32Array(mb*
|
|
|
+3);Za.__sortArray=[];Za.__webglParticleCount=mb;b(Za,Lb);k.verticesNeedUpdate=true;k.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){k=g.geometry;if(k instanceof THREE.BufferGeometry)o(h.__webglObjects,k,g);else for(i in k.geometryGroups){l=k.geometryGroups[i];o(h.__webglObjects,l,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){k=g.geometry;o(h.__webglObjects,k,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 bb=a.__objectsRemoved[0],jb=a;bb instanceof THREE.Mesh||bb instanceof THREE.ParticleSystem||bb instanceof THREE.Ribbon||bb instanceof THREE.Line?q(jb.__webglObjects,bb):bb instanceof THREE.Sprite?n(jb.__webglSprites,bb):bb instanceof THREE.LensFlare?
|
|
|
+n(jb.__webglFlares,bb):(bb instanceof THREE.ImmediateRenderObject||bb.immediateRenderCallback)&&q(jb.__webglObjectsImmediate,bb);bb.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var gb=0,ob=a.__webglObjects.length;gb<ob;gb++){var kb=a.__webglObjects[gb].object,ga=kb.geometry,$a=void 0,fb=void 0,Ua=void 0;if(kb instanceof THREE.Mesh)if(ga instanceof THREE.BufferGeometry){ga.verticesNeedUpdate=false;ga.elementsNeedUpdate=false;ga.uvsNeedUpdate=false;ga.normalsNeedUpdate=false;ga.colorsNeedUpdate=
|
|
|
+false}else{for(var nb=0,ac=ga.geometryGroupsList.length;nb<ac;nb++){$a=ga.geometryGroupsList[nb];Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);if(ga.verticesNeedUpdate||ga.morphTargetsNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangetsNeedUpdate||fb){var da=$a,nd=kb,Wa=j.DYNAMIC_DRAW,od=!ga.dynamic,cc=Ua;if(da.__inittedArrays){var cd=d(cc),Tc=cc.vertexColors?cc.vertexColors:false,dd=e(cc),Ec=cd===THREE.SmoothShading,E=void 0,U=void 0,ib=void 0,K=void 0,
|
|
|
+jc=void 0,Ob=void 0,lb=void 0,Fc=void 0,Gb=void 0,kc=void 0,lc=void 0,V=void 0,W=void 0,X=void 0,ma=void 0,pb=void 0,qb=void 0,rb=void 0,qc=void 0,sb=void 0,tb=void 0,ub=void 0,rc=void 0,vb=void 0,wb=void 0,xb=void 0,sc=void 0,yb=void 0,zb=void 0,Ab=void 0,tc=void 0,Bb=void 0,Cb=void 0,Db=void 0,uc=void 0,Pb=void 0,Qb=void 0,Rb=void 0,Gc=void 0,Sb=void 0,Tb=void 0,Ub=void 0,Hc=void 0,ia=void 0,ed=void 0,Vb=void 0,mc=void 0,nc=void 0,Ga=void 0,fd=void 0,Ea=void 0,Fa=void 0,Wb=void 0,Hb=void 0,xa=0,
|
|
|
+Ca=0,Ib=0,Jb=0,cb=0,Na=0,na=0,Qa=0,za=0,J=0,ba=0,z=0,Xa=void 0,Ha=da.__vertexArray,vc=da.__uvArray,wc=da.__uv2Array,db=da.__normalArray,qa=da.__tangentArray,Ia=da.__colorArray,ra=da.__skinVertexAArray,sa=da.__skinVertexBArray,ta=da.__skinIndexArray,ua=da.__skinWeightArray,Uc=da.__morphTargetsArrays,Vc=da.__morphNormalsArrays,Wc=da.__webglCustomAttributesList,w=void 0,Eb=da.__faceArray,Ya=da.__lineArray,Ra=nd.geometry,pd=Ra.elementsNeedUpdate,gd=Ra.uvsNeedUpdate,qd=Ra.normalsNeedUpdate,rd=Ra.tangetsNeedUpdate,
|
|
|
+sd=Ra.colorsNeedUpdate,td=Ra.morphTargetsNeedUpdate,dc=Ra.vertices,ja=da.faces3,ka=da.faces4,Aa=Ra.faces,Xc=Ra.faceVertexUvs[0],Yc=Ra.faceVertexUvs[1],ec=Ra.skinVerticesA,fc=Ra.skinVerticesB,gc=Ra.skinIndices,Xb=Ra.skinWeights,Yb=Ra.morphTargets,Ic=Ra.morphNormals;if(Ra.verticesNeedUpdate){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=dc[K.a];W=dc[K.b];X=dc[K.c];Ha[Ca]=V.x;Ha[Ca+1]=V.y;Ha[Ca+2]=V.z;Ha[Ca+3]=W.x;Ha[Ca+4]=W.y;Ha[Ca+5]=W.z;Ha[Ca+6]=X.x;Ha[Ca+7]=X.y;Ha[Ca+8]=X.z;Ca=Ca+9}E=0;for(U=ka.length;E<
|
|
|
+U;E++){K=Aa[ka[E]];V=dc[K.a];W=dc[K.b];X=dc[K.c];ma=dc[K.d];Ha[Ca]=V.x;Ha[Ca+1]=V.y;Ha[Ca+2]=V.z;Ha[Ca+3]=W.x;Ha[Ca+4]=W.y;Ha[Ca+5]=W.z;Ha[Ca+6]=X.x;Ha[Ca+7]=X.y;Ha[Ca+8]=X.z;Ha[Ca+9]=ma.x;Ha[Ca+10]=ma.y;Ha[Ca+11]=ma.z;Ca=Ca+12}j.bindBuffer(j.ARRAY_BUFFER,da.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Ha,Wa)}if(td){Ga=0;for(fd=Yb.length;Ga<fd;Ga++){E=ba=0;for(U=ja.length;E<U;E++){Wb=ja[E];K=Aa[Wb];V=Yb[Ga].vertices[K.a];W=Yb[Ga].vertices[K.b];X=Yb[Ga].vertices[K.c];Ea=Uc[Ga];Ea[ba]=V.x;Ea[ba+
|
|
|
+1]=V.y;Ea[ba+2]=V.z;Ea[ba+3]=W.x;Ea[ba+4]=W.y;Ea[ba+5]=W.z;Ea[ba+6]=X.x;Ea[ba+7]=X.y;Ea[ba+8]=X.z;if(cc.morphNormals){if(Ec){Hb=Ic[Ga].vertexNormals[Wb];sb=Hb.a;tb=Hb.b;ub=Hb.c}else ub=tb=sb=Ic[Ga].faceNormals[Wb];Fa=Vc[Ga];Fa[ba]=sb.x;Fa[ba+1]=sb.y;Fa[ba+2]=sb.z;Fa[ba+3]=tb.x;Fa[ba+4]=tb.y;Fa[ba+5]=tb.z;Fa[ba+6]=ub.x;Fa[ba+7]=ub.y;Fa[ba+8]=ub.z}ba=ba+9}E=0;for(U=ka.length;E<U;E++){Wb=ka[E];K=Aa[Wb];V=Yb[Ga].vertices[K.a];W=Yb[Ga].vertices[K.b];X=Yb[Ga].vertices[K.c];ma=Yb[Ga].vertices[K.d];Ea=Uc[Ga];
|
|
|
+Ea[ba]=V.x;Ea[ba+1]=V.y;Ea[ba+2]=V.z;Ea[ba+3]=W.x;Ea[ba+4]=W.y;Ea[ba+5]=W.z;Ea[ba+6]=X.x;Ea[ba+7]=X.y;Ea[ba+8]=X.z;Ea[ba+9]=ma.x;Ea[ba+10]=ma.y;Ea[ba+11]=ma.z;if(cc.morphNormals){if(Ec){Hb=Ic[Ga].vertexNormals[Wb];sb=Hb.a;tb=Hb.b;ub=Hb.c;rc=Hb.d}else rc=ub=tb=sb=Ic[Ga].faceNormals[Wb];Fa=Vc[Ga];Fa[ba]=sb.x;Fa[ba+1]=sb.y;Fa[ba+2]=sb.z;Fa[ba+3]=tb.x;Fa[ba+4]=tb.y;Fa[ba+5]=tb.z;Fa[ba+6]=ub.x;Fa[ba+7]=ub.y;Fa[ba+8]=ub.z;Fa[ba+9]=rc.x;Fa[ba+10]=rc.y;Fa[ba+11]=rc.z}ba=ba+12}j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+da.__webglMorphTargetsBuffers[Ga]);j.bufferData(j.ARRAY_BUFFER,Uc[Ga],Wa);if(cc.morphNormals){j.bindBuffer(j.ARRAY_BUFFER,da.__webglMorphNormalsBuffers[Ga]);j.bufferData(j.ARRAY_BUFFER,Vc[Ga],Wa)}}}if(Xb.length){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];yb=Xb[K.a];zb=Xb[K.b];Ab=Xb[K.c];ua[J]=yb.x;ua[J+1]=yb.y;ua[J+2]=yb.z;ua[J+3]=yb.w;ua[J+4]=zb.x;ua[J+5]=zb.y;ua[J+6]=zb.z;ua[J+7]=zb.w;ua[J+8]=Ab.x;ua[J+9]=Ab.y;ua[J+10]=Ab.z;ua[J+11]=Ab.w;Bb=gc[K.a];Cb=gc[K.b];Db=gc[K.c];ta[J]=Bb.x;ta[J+1]=Bb.y;ta[J+
|
|
|
+2]=Bb.z;ta[J+3]=Bb.w;ta[J+4]=Cb.x;ta[J+5]=Cb.y;ta[J+6]=Cb.z;ta[J+7]=Cb.w;ta[J+8]=Db.x;ta[J+9]=Db.y;ta[J+10]=Db.z;ta[J+11]=Db.w;Pb=ec[K.a];Qb=ec[K.b];Rb=ec[K.c];ra[J]=Pb.x;ra[J+1]=Pb.y;ra[J+2]=Pb.z;ra[J+3]=1;ra[J+4]=Qb.x;ra[J+5]=Qb.y;ra[J+6]=Qb.z;ra[J+7]=1;ra[J+8]=Rb.x;ra[J+9]=Rb.y;ra[J+10]=Rb.z;ra[J+11]=1;Sb=fc[K.a];Tb=fc[K.b];Ub=fc[K.c];sa[J]=Sb.x;sa[J+1]=Sb.y;sa[J+2]=Sb.z;sa[J+3]=1;sa[J+4]=Tb.x;sa[J+5]=Tb.y;sa[J+6]=Tb.z;sa[J+7]=1;sa[J+8]=Ub.x;sa[J+9]=Ub.y;sa[J+10]=Ub.z;sa[J+11]=1;J=J+12}E=0;for(U=
|
|
|
+ka.length;E<U;E++){K=Aa[ka[E]];yb=Xb[K.a];zb=Xb[K.b];Ab=Xb[K.c];tc=Xb[K.d];ua[J]=yb.x;ua[J+1]=yb.y;ua[J+2]=yb.z;ua[J+3]=yb.w;ua[J+4]=zb.x;ua[J+5]=zb.y;ua[J+6]=zb.z;ua[J+7]=zb.w;ua[J+8]=Ab.x;ua[J+9]=Ab.y;ua[J+10]=Ab.z;ua[J+11]=Ab.w;ua[J+12]=tc.x;ua[J+13]=tc.y;ua[J+14]=tc.z;ua[J+15]=tc.w;Bb=gc[K.a];Cb=gc[K.b];Db=gc[K.c];uc=gc[K.d];ta[J]=Bb.x;ta[J+1]=Bb.y;ta[J+2]=Bb.z;ta[J+3]=Bb.w;ta[J+4]=Cb.x;ta[J+5]=Cb.y;ta[J+6]=Cb.z;ta[J+7]=Cb.w;ta[J+8]=Db.x;ta[J+9]=Db.y;ta[J+10]=Db.z;ta[J+11]=Db.w;ta[J+12]=uc.x;
|
|
|
+ta[J+13]=uc.y;ta[J+14]=uc.z;ta[J+15]=uc.w;Pb=ec[K.a];Qb=ec[K.b];Rb=ec[K.c];Gc=ec[K.d];ra[J]=Pb.x;ra[J+1]=Pb.y;ra[J+2]=Pb.z;ra[J+3]=1;ra[J+4]=Qb.x;ra[J+5]=Qb.y;ra[J+6]=Qb.z;ra[J+7]=1;ra[J+8]=Rb.x;ra[J+9]=Rb.y;ra[J+10]=Rb.z;ra[J+11]=1;ra[J+12]=Gc.x;ra[J+13]=Gc.y;ra[J+14]=Gc.z;ra[J+15]=1;Sb=fc[K.a];Tb=fc[K.b];Ub=fc[K.c];Hc=fc[K.d];sa[J]=Sb.x;sa[J+1]=Sb.y;sa[J+2]=Sb.z;sa[J+3]=1;sa[J+4]=Tb.x;sa[J+5]=Tb.y;sa[J+6]=Tb.z;sa[J+7]=1;sa[J+8]=Ub.x;sa[J+9]=Ub.y;sa[J+10]=Ub.z;sa[J+11]=1;sa[J+12]=Hc.x;sa[J+13]=Hc.y;
|
|
|
+sa[J+14]=Hc.z;sa[J+15]=1;J=J+16}if(J>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexABuffer);j.bufferData(j.ARRAY_BUFFER,ra,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexBBuffer);j.bufferData(j.ARRAY_BUFFER,sa,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinIndicesBuffer);j.bufferData(j.ARRAY_BUFFER,ta,Wa);j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinWeightsBuffer);j.bufferData(j.ARRAY_BUFFER,ua,Wa)}}if(sd&&Tc){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];lb=K.vertexColors;Fc=K.color;if(lb.length===
|
|
|
+3&&Tc===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2]}else xb=wb=vb=Fc;Ia[za]=vb.r;Ia[za+1]=vb.g;Ia[za+2]=vb.b;Ia[za+3]=wb.r;Ia[za+4]=wb.g;Ia[za+5]=wb.b;Ia[za+6]=xb.r;Ia[za+7]=xb.g;Ia[za+8]=xb.b;za=za+9}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];lb=K.vertexColors;Fc=K.color;if(lb.length===4&&Tc===THREE.VertexColors){vb=lb[0];wb=lb[1];xb=lb[2];sc=lb[3]}else sc=xb=wb=vb=Fc;Ia[za]=vb.r;Ia[za+1]=vb.g;Ia[za+2]=vb.b;Ia[za+3]=wb.r;Ia[za+4]=wb.g;Ia[za+5]=wb.b;Ia[za+6]=xb.r;Ia[za+7]=xb.g;Ia[za+8]=xb.b;Ia[za+
|
|
|
+9]=sc.r;Ia[za+10]=sc.g;Ia[za+11]=sc.b;za=za+12}if(za>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Ia,Wa)}}if(rd&&Ra.hasTangents){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];Gb=K.vertexTangents;pb=Gb[0];qb=Gb[1];rb=Gb[2];qa[na]=pb.x;qa[na+1]=pb.y;qa[na+2]=pb.z;qa[na+3]=pb.w;qa[na+4]=qb.x;qa[na+5]=qb.y;qa[na+6]=qb.z;qa[na+7]=qb.w;qa[na+8]=rb.x;qa[na+9]=rb.y;qa[na+10]=rb.z;qa[na+11]=rb.w;na=na+12}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];Gb=K.vertexTangents;pb=Gb[0];
|
|
|
+qb=Gb[1];rb=Gb[2];qc=Gb[3];qa[na]=pb.x;qa[na+1]=pb.y;qa[na+2]=pb.z;qa[na+3]=pb.w;qa[na+4]=qb.x;qa[na+5]=qb.y;qa[na+6]=qb.z;qa[na+7]=qb.w;qa[na+8]=rb.x;qa[na+9]=rb.y;qa[na+10]=rb.z;qa[na+11]=rb.w;qa[na+12]=qc.x;qa[na+13]=qc.y;qa[na+14]=qc.z;qa[na+15]=qc.w;na=na+16}j.bindBuffer(j.ARRAY_BUFFER,da.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,qa,Wa)}if(qd&&cd){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];jc=K.vertexNormals;Ob=K.normal;if(jc.length===3&&Ec)for(ia=0;ia<3;ia++){Vb=jc[ia];db[Na]=Vb.x;db[Na+
|
|
|
+1]=Vb.y;db[Na+2]=Vb.z;Na=Na+3}else for(ia=0;ia<3;ia++){db[Na]=Ob.x;db[Na+1]=Ob.y;db[Na+2]=Ob.z;Na=Na+3}}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];jc=K.vertexNormals;Ob=K.normal;if(jc.length===4&&Ec)for(ia=0;ia<4;ia++){Vb=jc[ia];db[Na]=Vb.x;db[Na+1]=Vb.y;db[Na+2]=Vb.z;Na=Na+3}else for(ia=0;ia<4;ia++){db[Na]=Ob.x;db[Na+1]=Ob.y;db[Na+2]=Ob.z;Na=Na+3}}j.bindBuffer(j.ARRAY_BUFFER,da.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,db,Wa)}if(gd&&Xc&&dd){E=0;for(U=ja.length;E<U;E++){ib=ja[E];K=Aa[ib];kc=
|
|
|
+Xc[ib];if(kc!==void 0)for(ia=0;ia<3;ia++){mc=kc[ia];vc[Ib]=mc.u;vc[Ib+1]=mc.v;Ib=Ib+2}}E=0;for(U=ka.length;E<U;E++){ib=ka[E];K=Aa[ib];kc=Xc[ib];if(kc!==void 0)for(ia=0;ia<4;ia++){mc=kc[ia];vc[Ib]=mc.u;vc[Ib+1]=mc.v;Ib=Ib+2}}if(Ib>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglUVBuffer);j.bufferData(j.ARRAY_BUFFER,vc,Wa)}}if(gd&&Yc&&dd){E=0;for(U=ja.length;E<U;E++){ib=ja[E];K=Aa[ib];lc=Yc[ib];if(lc!==void 0)for(ia=0;ia<3;ia++){nc=lc[ia];wc[Jb]=nc.u;wc[Jb+1]=nc.v;Jb=Jb+2}}E=0;for(U=ka.length;E<U;E++){ib=
|
|
|
+ka[E];K=Aa[ib];lc=Yc[ib];if(lc!==void 0)for(ia=0;ia<4;ia++){nc=lc[ia];wc[Jb]=nc.u;wc[Jb+1]=nc.v;Jb=Jb+2}}if(Jb>0){j.bindBuffer(j.ARRAY_BUFFER,da.__webglUV2Buffer);j.bufferData(j.ARRAY_BUFFER,wc,Wa)}}if(pd){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];Eb[cb]=xa;Eb[cb+1]=xa+1;Eb[cb+2]=xa+2;cb=cb+3;Ya[Qa]=xa;Ya[Qa+1]=xa+1;Ya[Qa+2]=xa;Ya[Qa+3]=xa+2;Ya[Qa+4]=xa+1;Ya[Qa+5]=xa+2;Qa=Qa+6;xa=xa+3}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];Eb[cb]=xa;Eb[cb+1]=xa+1;Eb[cb+2]=xa+3;Eb[cb+3]=xa+1;Eb[cb+4]=xa+2;Eb[cb+5]=
|
|
|
+xa+3;cb=cb+6;Ya[Qa]=xa;Ya[Qa+1]=xa+1;Ya[Qa+2]=xa;Ya[Qa+3]=xa+3;Ya[Qa+4]=xa+1;Ya[Qa+5]=xa+2;Ya[Qa+6]=xa+2;Ya[Qa+7]=xa+3;Qa=Qa+8;xa=xa+4}j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Eb,Wa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Ya,Wa)}if(Wc){ia=0;for(ed=Wc.length;ia<ed;ia++){w=Wc[ia];if(w.__original.needsUpdate){z=0;if(w.size===1)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<
|
|
|
+U;E++){K=Aa[ja[E]];w.array[z]=w.value[K.a];w.array[z+1]=w.value[K.b];w.array[z+2]=w.value[K.c];z=z+3}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];w.array[z]=w.value[K.a];w.array[z+1]=w.value[K.b];w.array[z+2]=w.value[K.c];w.array[z+3]=w.value[K.d];z=z+4}}else{if(w.boundTo==="faces"){E=0;for(U=ja.length;E<U;E++){Xa=w.value[ja[E]];w.array[z]=Xa;w.array[z+1]=Xa;w.array[z+2]=Xa;z=z+3}E=0;for(U=ka.length;E<U;E++){Xa=w.value[ka[E]];w.array[z]=Xa;w.array[z+1]=Xa;w.array[z+2]=Xa;w.array[z+3]=Xa;z=z+4}}}else if(w.size===
|
|
|
+2)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;z=z+6}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;w.array[z+6]=ma.x;w.array[z+7]=ma.y;z=z+8}}else{if(w.boundTo===
|
|
|
+"faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;z=z+6}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=W.x;w.array[z+3]=W.y;w.array[z+4]=X.x;w.array[z+5]=X.y;w.array[z+6]=ma.x;w.array[z+7]=ma.y;z=z+8}}}else if(w.size===3){var ea;ea=w.type==="c"?["r","g","b"]:["x","y","z"];if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<
|
|
|
+U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];z=z+9}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+
|
|
|
+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];w.array[z+9]=ma[ea[0]];w.array[z+10]=ma[ea[1]];w.array[z+11]=ma[ea[2]];z=z+12}}else if(w.boundTo==="faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V[ea[0]];w.array[z+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];z=z+9}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V[ea[0]];w.array[z+
|
|
|
+1]=V[ea[1]];w.array[z+2]=V[ea[2]];w.array[z+3]=W[ea[0]];w.array[z+4]=W[ea[1]];w.array[z+5]=W[ea[2]];w.array[z+6]=X[ea[0]];w.array[z+7]=X[ea[1]];w.array[z+8]=X[ea[2]];w.array[z+9]=ma[ea[0]];w.array[z+10]=ma[ea[1]];w.array[z+11]=ma[ea[2]];z=z+12}}}else if(w.size===4)if(w.boundTo===void 0||w.boundTo==="vertices"){E=0;for(U=ja.length;E<U;E++){K=Aa[ja[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+
|
|
|
+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;z=z+12}E=0;for(U=ka.length;E<U;E++){K=Aa[ka[E]];V=w.value[K.a];W=w.value[K.b];X=w.value[K.c];ma=w.value[K.d];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;w.array[z+12]=ma.x;w.array[z+13]=ma.y;w.array[z+14]=ma.z;w.array[z+15]=ma.w;z=z+16}}else if(w.boundTo===
|
|
|
+"faces"){E=0;for(U=ja.length;E<U;E++){X=W=V=Xa=w.value[ja[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+10]=X.z;w.array[z+11]=X.w;z=z+12}E=0;for(U=ka.length;E<U;E++){ma=X=W=V=Xa=w.value[ka[E]];w.array[z]=V.x;w.array[z+1]=V.y;w.array[z+2]=V.z;w.array[z+3]=V.w;w.array[z+4]=W.x;w.array[z+5]=W.y;w.array[z+6]=W.z;w.array[z+7]=W.w;w.array[z+8]=X.x;w.array[z+9]=X.y;w.array[z+
|
|
|
+10]=X.z;w.array[z+11]=X.w;w.array[z+12]=ma.x;w.array[z+13]=ma.y;w.array[z+14]=ma.z;w.array[z+15]=ma.w;z=z+16}}j.bindBuffer(j.ARRAY_BUFFER,w.buffer);j.bufferData(j.ARRAY_BUFFER,w.array,Wa)}}}if(od){delete da.__inittedArrays;delete da.__colorArray;delete da.__normalArray;delete da.__tangentArray;delete da.__uvArray;delete da.__uv2Array;delete da.__faceArray;delete da.__vertexArray;delete da.__lineArray;delete da.__skinVertexAArray;delete da.__skinVertexBArray;delete da.__skinIndexArray;delete da.__skinWeightArray}}}}ga.verticesNeedUpdate=
|
|
|
+false;ga.morphTargetsNeedUpdate=false;ga.elementsNeedUpdate=false;ga.uvsNeedUpdate=false;ga.normalsNeedUpdate=false;ga.colorsNeedUpdate=false;ga.tangetsNeedUpdate=false;Ua.attributes&&p(Ua)}else if(kb instanceof THREE.Ribbon){if(ga.verticesNeedUpdate||ga.colorsNeedUpdate){var Zb=ga,hd=j.DYNAMIC_DRAW,xc=void 0,yc=void 0,Jc=void 0,$b=void 0,Kc=void 0,id=Zb.vertices,jd=Zb.colors,ud=id.length,vd=jd.length,Lc=Zb.__vertexArray,Mc=Zb.__colorArray,wd=Zb.colorsNeedUpdate;if(Zb.verticesNeedUpdate){for(xc=0;xc<
|
|
|
+ud;xc++){Jc=id[xc];$b=xc*3;Lc[$b]=Jc.x;Lc[$b+1]=Jc.y;Lc[$b+2]=Jc.z}j.bindBuffer(j.ARRAY_BUFFER,Zb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Lc,hd)}if(wd){for(yc=0;yc<vd;yc++){Kc=jd[yc];$b=yc*3;Mc[$b]=Kc.r;Mc[$b+1]=Kc.g;Mc[$b+2]=Kc.b}j.bindBuffer(j.ARRAY_BUFFER,Zb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Mc,hd)}}ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false}else if(kb instanceof THREE.Line){Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);if(ga.verticesNeedUpdate||ga.colorsNeedUpdate||fb){var Kb=
|
|
|
+ga,Zc=j.DYNAMIC_DRAW,zc=void 0,Ac=void 0,Nc=void 0,va=void 0,Oc=void 0,kd=Kb.vertices,ld=Kb.colors,xd=kd.length,yd=ld.length,Pc=Kb.__vertexArray,Qc=Kb.__colorArray,zd=Kb.colorsNeedUpdate,$c=Kb.__webglCustomAttributesList,Rc=void 0,md=void 0,La=void 0,oc=void 0,Va=void 0,pa=void 0;if(Kb.verticesNeedUpdate){for(zc=0;zc<xd;zc++){Nc=kd[zc];va=zc*3;Pc[va]=Nc.x;Pc[va+1]=Nc.y;Pc[va+2]=Nc.z}j.bindBuffer(j.ARRAY_BUFFER,Kb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Pc,Zc)}if(zd){for(Ac=0;Ac<yd;Ac++){Oc=
|
|
|
+ld[Ac];va=Ac*3;Qc[va]=Oc.r;Qc[va+1]=Oc.g;Qc[va+2]=Oc.b}j.bindBuffer(j.ARRAY_BUFFER,Kb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Qc,Zc)}if($c){Rc=0;for(md=$c.length;Rc<md;Rc++){pa=$c[Rc];if(pa.needsUpdate&&(pa.boundTo===void 0||pa.boundTo==="vertices")){va=0;oc=pa.value.length;if(pa.size===1)for(La=0;La<oc;La++)pa.array[La]=pa.value[La];else if(pa.size===2)for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+1]=Va.y;va=va+2}else if(pa.size===3)if(pa.type==="c")for(La=0;La<oc;La++){Va=
|
|
|
+pa.value[La];pa.array[va]=Va.r;pa.array[va+1]=Va.g;pa.array[va+2]=Va.b;va=va+3}else for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+1]=Va.y;pa.array[va+2]=Va.z;va=va+3}else if(pa.size===4)for(La=0;La<oc;La++){Va=pa.value[La];pa.array[va]=Va.x;pa.array[va+1]=Va.y;pa.array[va+2]=Va.z;pa.array[va+3]=Va.w;va=va+4}j.bindBuffer(j.ARRAY_BUFFER,pa.buffer);j.bufferData(j.ARRAY_BUFFER,pa.array,Zc)}}}}ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false;Ua.attributes&&p(Ua)}else if(kb instanceof
|
|
|
+THREE.ParticleSystem){Ua=c(kb,$a);fb=Ua.attributes&&m(Ua);(ga.verticesNeedUpdate||ga.colorsNeedUpdate||kb.sortParticles||fb)&&f(ga,j.DYNAMIC_DRAW,kb);ga.verticesNeedUpdate=false;ga.colorsNeedUpdate=false;Ua.attributes&&p(Ua)}}};this.initMaterial=function(a,b,c,d){var e,f,g;a instanceof THREE.MeshDepthMaterial?g="depth":a instanceof THREE.MeshNormalMaterial?g="normal":a instanceof THREE.MeshBasicMaterial?g="basic":a instanceof THREE.MeshLambertMaterial?g="lambert":a instanceof THREE.MeshPhongMaterial?
|
|
|
+g="phong":a instanceof THREE.LineBasicMaterial?g="basic":a instanceof THREE.ParticleBasicMaterial&&(g="particle_basic");if(g){var h=THREE.ShaderLib[g];a.uniforms=THREE.UniformsUtils.clone(h.uniforms);a.vertexShader=h.vertexShader;a.fragmentShader=h.fragmentShader}var i,k,l,m,n;i=m=n=h=0;for(k=b.length;i<k;i++){l=b[i];if(!l.onlyShadow){l instanceof THREE.DirectionalLight&&m++;l instanceof THREE.PointLight&&n++;l instanceof THREE.SpotLight&&h++}}if(n+h+m<=Q){k=m;l=n;m=h}else{k=Math.ceil(Q*m/(n+m));
|
|
|
+m=l=Q-k}var o=0,h=0;for(n=b.length;h<n;h++){i=b[h];if(i.castShadow){i instanceof THREE.SpotLight&&o++;i instanceof THREE.DirectionalLight&&!i.shadowCascade&&o++}}var p=50;if(d!==void 0&&d instanceof THREE.SkinnedMesh)p=d.bones.length;var q;a:{i=a.fragmentShader;n=a.vertexShader;var h=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:p,morphTargets:a.morphTargets,
|
|
|
+morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:m,maxShadows:o,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},r,d=[];if(g)d.push(g);else{d.push(i);d.push(n)}for(r in c){d.push(r);
|
|
|
+d.push(c[r])}g=d.join();r=0;for(d=P.length;r<d;r++){k=P[r];if(k.code===g){k.usedTimes++;q=k.program;break a}}r=j.createProgram();d=["precision "+v+" float;",$a>0?"#define VERTEX_TEXTURES":"",C.gammaInput?"#define GAMMA_INPUT":"",C.gammaOutput?"#define GAMMA_OUTPUT":"",C.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.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");
|
|
|
k=["precision "+v+" 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:"",C.gammaInput?"#define GAMMA_INPUT":"",C.gammaOutput?"#define GAMMA_OUTPUT":"",C.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");
|
|
|
i=y("fragment",k+i);d=y("vertex",d+n);j.attachShader(r,d);j.attachShader(r,i);j.linkProgram(r);j.getProgramParameter(r,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+j.getProgramParameter(r,j.VALIDATE_STATUS)+", gl error ["+j.getError()+"]");j.deleteShader(i);j.deleteShader(d);r.uniforms={};r.attributes={};var s,d=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","boneGlobalMatrices","morphTargetInfluences"];for(s in h)d.push(s);
|