|
@@ -336,97 +336,97 @@ if(a===THREE.UnsignedByteType)return k.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4
|
|
|
if(a===THREE.AlphaFormat)return k.ALPHA;if(a===THREE.RGBFormat)return k.RGB;if(a===THREE.RGBAFormat)return k.RGBA;if(a===THREE.LuminanceFormat)return k.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return k.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return k.FUNC_ADD;if(a===THREE.SubtractEquation)return k.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return k.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return k.ZERO;if(a===THREE.OneFactor)return k.ONE;if(a===THREE.SrcColorFactor)return k.SRC_COLOR;
|
|
|
if(a===THREE.OneMinusSrcColorFactor)return k.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return k.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return k.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return k.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return k.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return k.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return k.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return k.SRC_ALPHA_SATURATE;if(void 0!==ub){if(a===THREE.RGB_S3TC_DXT1_Format)return ub.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
|
|
if(a===THREE.RGBA_S3TC_DXT1_Format)return ub.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return ub.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return ub.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},N=void 0!==a.canvas?a.canvas:document.createElement("canvas"),R=void 0!==a.precision?a.precision:"highp",T=void 0!==a.alpha?a.alpha:!0,M=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,O=void 0!==a.antialias?
|
|
|
-a.antialias:!1,S=void 0!==a.stencil?a.stencil:!0,ba=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ga=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),Ia=void 0!==a.clearAlpha?a.clearAlpha:0;this.domElement=N;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapCullFrontFaces=
|
|
|
-this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,ca=[],ia=0,Z=null,ja=null,da=-1,$=null,oa=null,fb=0,Ma=0,za=-1,qa=-1,Sa=-1,gb=-1,vb=-1,rb=-1,nb=-1,mb=-1,ac=null,qb=null,Ta=null,ra=null,ob=0,la=0,sb=0,hb=0,Ba=0,tb=0,Wa={},wb=
|
|
|
-new THREE.Frustum,Xa=new THREE.Matrix4,bb=new THREE.Matrix4,db=new THREE.Vector4,Aa=new THREE.Vector3,Db=!0,xc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,Eb,ub;try{if(!(k=N.getContext("experimental-webgl",{alpha:T,premultipliedAlpha:M,antialias:O,stencil:S,preserveDrawingBuffer:ba})))throw"Error creating WebGL context.";
|
|
|
-}catch(Pc){console.error(Pc)}a=k.getExtension("OES_texture_float");T=k.getExtension("OES_standard_derivatives");Eb=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");ub=k.getExtension("WEBGL_compressed_texture_s3tc")||k.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||k.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");a||console.log("THREE.WebGLRenderer: Float textures not supported.");
|
|
|
-T||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");Eb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");ub||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(ga.r,
|
|
|
-ga.g,ga.b,Ia);this.context=k;var yc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),T=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Qc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),oc=Eb?k.getParameter(Eb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,ic=0<T,Ya=ic&&a;ub&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return ic};this.getMaxAnisotropy=function(){return oc};this.setSize=function(a,b){N.width=
|
|
|
-a;N.height=b;this.setViewport(0,0,N.width,N.height)};this.setViewport=function(a,b,c,d){ob=void 0!==a?a:0;la=void 0!==b?b:0;sb=void 0!==c?c:N.width;hb=void 0!==d?d:N.height;k.viewport(ob,la,sb,hb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ga.setHex(a);Ia=b;k.clearColor(ga.r,ga.g,ga.b,Ia)};this.setClearColor=function(a,b){ga.copy(a);Ia=b;k.clearColor(ga.r,ga.g,ga.b,
|
|
|
-Ia)};this.getClearColor=function(){return ga};this.getClearAlpha=function(){return Ia};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=k.COLOR_BUFFER_BIT;if(void 0===b||b)d|=k.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=
|
|
|
-function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrix,a instanceof THREE.Mesh)for(var c in a.geometry.geometryGroups){var d=a.geometry.geometryGroups[c];k.deleteBuffer(d.__webglVertexBuffer);k.deleteBuffer(d.__webglNormalBuffer);k.deleteBuffer(d.__webglTangentBuffer);k.deleteBuffer(d.__webglColorBuffer);k.deleteBuffer(d.__webglUVBuffer);k.deleteBuffer(d.__webglUV2Buffer);k.deleteBuffer(d.__webglSkinIndicesBuffer);k.deleteBuffer(d.__webglSkinWeightsBuffer);
|
|
|
-k.deleteBuffer(d.__webglFaceBuffer);k.deleteBuffer(d.__webglLineBuffer);var e=void 0,f=void 0;if(d.numMorphTargets){e=0;for(f=d.numMorphTargets;e<f;e++)k.deleteBuffer(d.__webglMorphTargetsBuffers[e])}if(d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)k.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d);H.info.memory.geometries--}else a instanceof THREE.Ribbon?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),k.deleteBuffer(a.__webglNormalBuffer),b(a),
|
|
|
-H.info.memory.geometries--):a instanceof THREE.Line?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),k.deleteBuffer(a.__webglLineDistanceBuffer),b(a),H.info.memory.geometries--):a instanceof THREE.ParticleSystem&&(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),b(a),H.info.memory.geometries--)};this.deallocateTexture=function(a){if(a.image&&a.image.__webglTextureCube)k.deleteTexture(a.image.__webglTextureCube);else{if(!a.__webglInit)return;
|
|
|
-a.__webglInit=!1;k.deleteTexture(a.__webglTexture)}H.info.memory.textures--};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,
|
|
|
-d,e=!1,a=0;for(c=ca.length;a<c;a++)if(d=ca[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(e){e=[];a=0;for(c=ca.length;a<c;a++)d=ca[a],d.program!==b&&e.push(d);ca=e;k.deleteProgram(b);H.info.memory.programs--}}};this.updateShadowMap=function(a,b){Z=null;da=$=mb=nb=Sa=-1;Db=!0;qa=za=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=
|
|
|
-k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=k.createBuffer());a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,
|
|
|
-e,f,g,h,i,j,l,m,n,p,q=3*a.count;for(p=0;p<q;p+=9)n=a.normalArray,d=n[p],e=n[p+1],f=n[p+2],g=n[p+3],i=n[p+4],l=n[p+5],h=n[p+6],j=n[p+7],m=n[p+8],d=(d+g+h)/3,e=(e+i+j)/3,f=(f+l+m)/3,n[p]=d,n[p+1]=e,n[p+2]=f,n[p+3]=d,n[p+4]=e,n[p+5]=f,n[p+6]=d,n[p+7]=e,n[p+8]=f}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,
|
|
|
-a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible)if(c=
|
|
|
-A(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==$&&($=d,b=!0),b&&n(),f instanceof THREE.Mesh)if(f=e.attributes.index){d=e.offsets;1<d.length&&(b=!0);for(var c=0,g=d.length;c<g;c++){var h=d[c].index;if(b){var i=e.attributes.position,j=i.itemSize;k.bindBuffer(k.ARRAY_BUFFER,i.buffer);l(a.position);k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,4*h*j);j=e.attributes.normal;if(0<=a.normal&&j){var m=j.itemSize;k.bindBuffer(k.ARRAY_BUFFER,j.buffer);l(a.normal);k.vertexAttribPointer(a.normal,
|
|
|
-m,k.FLOAT,!1,0,4*h*m)}j=e.attributes.uv;0<=a.uv&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.uv),k.vertexAttribPointer(a.uv,m,k.FLOAT,!1,0,4*h*m));j=e.attributes.color;0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,4*h*m));j=e.attributes.tangent;0<=a.tangent&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.tangent),k.vertexAttribPointer(a.tangent,m,k.FLOAT,!1,0,4*h*m));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
-f.buffer)}k.drawElements(k.TRIANGLES,d[c].count,k.UNSIGNED_SHORT,2*d[c].start);H.info.render.calls++;H.info.render.vertices+=d[c].count;H.info.render.faces+=d[c].count/3}}else b&&(i=e.attributes.position,j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),l(a.position),k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,0),j=e.attributes.normal,0<=a.normal&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.normal),k.vertexAttribPointer(a.normal,m,k.FLOAT,!1,0,0)),j=e.attributes.uv,0<=a.uv&&j&&
|
|
|
-(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.uv),k.vertexAttribPointer(a.uv,m,k.FLOAT,!1,0,0)),j=e.attributes.color,0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,0)),j=e.attributes.tangent,0<=a.tangent&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.tangent),k.vertexAttribPointer(a.tangent,m,k.FLOAT,!1,0,0))),k.drawArrays(k.TRIANGLES,0,i.numItems/3),H.info.render.calls++,H.info.render.vertices+=i.numItems/
|
|
|
-3,H.info.render.faces+=i.numItems/3/3;else f instanceof THREE.ParticleSystem&&b&&(i=e.attributes.position,j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),l(a.position),k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,0),j=e.attributes.color,0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,0)),k.drawArrays(k.POINTS,0,i.numItems/3),H.info.render.calls++,H.info.render.points+=i.numItems/3)};this.renderBuffer=function(a,b,c,d,
|
|
|
-e,f){if(!1!==d.visible){var g,h,c=A(a,b,c,d,f),b=c.attributes,a=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==$&&($=c,a=!0);a&&n();if(!d.morphTargets&&0<=b.position)a&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),l(b.position),k.vertexAttribPointer(b.position,3,k.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),l(c.position),k.vertexAttribPointer(c.position,
|
|
|
-3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),l(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var i=0;h=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<h.length;)0<=c["morphTarget"+i]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[h[i]]),l(c["morphTarget"+i]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+i]&&d.morphNormals&&
|
|
|
-(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[h[i]]),l(c["morphNormal"+i]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[h[i]],i++}else{h=[];g=f.morphTargetInfluences;var j,m=g.length;for(j=0;j<m;j++)i=g[j],0<i&&h.push([j,i]);h.length>d.numSupportedMorphTargets?(h.sort(p),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(p):0===h.length&&h.push([0,0]);for(i=0;i<d.numSupportedMorphTargets;)h[i]?(j=h[i][0],0<=
|
|
|
-c["morphTarget"+i]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j]),l(c["morphTarget"+i]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+i]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j]),l(c["morphNormal"+i]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[j]):f.__webglMorphTargetInfluences[i]=0,i++}null!==d.program.uniforms.morphTargetInfluences&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,
|
|
|
-f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(h=e.__webglCustomAttributesList.length;g<h;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),l(b[c.buffer.belongsToAttribute]),k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=b.color&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer),l(b.color),k.vertexAttribPointer(b.color,3,k.FLOAT,!1,0,0));0<=b.normal&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
-e.__webglNormalBuffer),l(b.normal),k.vertexAttribPointer(b.normal,3,k.FLOAT,!1,0,0));0<=b.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglTangentBuffer),l(b.tangent),k.vertexAttribPointer(b.tangent,4,k.FLOAT,!1,0,0));0<=b.uv&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer),l(b.uv),k.vertexAttribPointer(b.uv,2,k.FLOAT,!1,0,0));0<=b.uv2&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer),l(b.uv2),k.vertexAttribPointer(b.uv2,2,k.FLOAT,!1,0,0));d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
-e.__webglSkinIndicesBuffer),l(b.skinIndex),k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),l(b.skinWeight),k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,!1,0,0));0<=b.lineDistance&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),k.vertexAttribPointer(b.lineDistance,1,k.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==ra&&(k.lineWidth(d),ra=d),a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
-e.__webglLineBuffer),k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)):(a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=e.__webglFaceCount,H.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES,d=d.linewidth,d!==ra&&(k.lineWidth(d),ra=d),k.drawArrays(f,0,e.__webglLineCount),H.info.render.calls++):f instanceof
|
|
|
-THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,e.__webglParticleCount),H.info.render.calls++,H.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,h,i=a.__lights,j=a.fog;da=-1;Db=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&
|
|
|
-b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Xa.multiply(b.projectionMatrix,b.matrixWorldInverse);wb.setFromMatrix(Xa);this.autoUpdateObjects&&this.initWebGLObjects(a);q(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.render=
|
|
|
-!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||wb.contains(g))){v(g,b);var l=f,n=l.buffer,p=void 0,s=p=void 0,s=l.object.material;if(s instanceof THREE.MeshFaceMaterial)p=n.materialIndex,0<=p&&(p=s.materials[p],p.transparent?(l.transparent=p,l.opaque=null):(l.opaque=p,l.transparent=null));else if(p=s)p.transparent?(l.transparent=p,l.opaque=null):(l.opaque=p,l.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:
|
|
|
-(db.copy(g.matrixWorld.getPosition()),Xa.multiplyVector3(db),f.z=db.z),f.id=g.id)}this.sortObjects&&h.sort(m);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(v(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),J(d.polygonOffset,d.polygonOffsetFactor,
|
|
|
-d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,i,j,!0,d),u(a.__webglObjectsImmediate,"",b,i,j,!1,d)):(d=null,this.setBlending(THREE.NormalBlending),r(a.__webglObjects,!0,"opaque",b,i,j,!1,d),u(a.__webglObjectsImmediate,"opaque",b,i,j,!1,d),r(a.__webglObjects,!1,"transparent",b,i,j,!0,d),u(a.__webglObjectsImmediate,"transparent",b,i,j,!0,d));q(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?
|
|
|
-(k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=A(a,b,c,d,e);$=-1;H.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,k,wb):e.render(function(a){H.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=
|
|
|
-function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],l=a,m=void 0,n=void 0,p=void 0,q=void 0;if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,b instanceof THREE.Mesh)if(n=b.geometry,p=b.material,n instanceof THREE.Geometry){if(void 0===n.geometryGroups){var r=n,u=void 0,v=void 0,x=void 0,A=void 0,C=void 0,B=void 0,D=
|
|
|
-void 0,I={},J=r.morphTargets.length,L=r.morphNormals.length,Z=p instanceof THREE.MeshFaceMaterial;r.geometryGroups={};u=0;for(v=r.faces.length;u<v;u++)x=r.faces[u],A=Z?x.materialIndex:void 0,B=void 0!==A?A:-1,void 0===I[B]&&(I[B]={hash:B,counter:0}),D=I[B].hash+"_"+I[B].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:J,numMorphNormals:L}),C=x instanceof THREE.Face3?3:4,65535<r.geometryGroups[D].vertices+C&&(I[B].counter+=1,
|
|
|
-D=I[B].hash+"_"+I[B].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:J,numMorphNormals:L})),x instanceof THREE.Face3?r.geometryGroups[D].faces3.push(u):r.geometryGroups[D].faces4.push(u),r.geometryGroups[D].vertices+=C;r.geometryGroupsList=[];var O=void 0;for(O in r.geometryGroups)r.geometryGroups[O].id=fb++,r.geometryGroupsList.push(r.geometryGroups[O])}for(m in n.geometryGroups)if(q=n.geometryGroups[m],!q.__webglVertexBuffer){var K=
|
|
|
-q;K.__webglVertexBuffer=k.createBuffer();K.__webglNormalBuffer=k.createBuffer();K.__webglTangentBuffer=k.createBuffer();K.__webglColorBuffer=k.createBuffer();K.__webglUVBuffer=k.createBuffer();K.__webglUV2Buffer=k.createBuffer();K.__webglSkinIndicesBuffer=k.createBuffer();K.__webglSkinWeightsBuffer=k.createBuffer();K.__webglFaceBuffer=k.createBuffer();K.__webglLineBuffer=k.createBuffer();var ca=void 0,M=void 0;if(K.numMorphTargets){K.__webglMorphTargetsBuffers=[];ca=0;for(M=K.numMorphTargets;ca<M;ca++)K.__webglMorphTargetsBuffers.push(k.createBuffer())}if(K.numMorphNormals){K.__webglMorphNormalsBuffers=
|
|
|
-[];ca=0;for(M=K.numMorphNormals;ca<M;ca++)K.__webglMorphNormalsBuffers.push(k.createBuffer())}H.info.memory.geometries++;d(q,b);n.verticesNeedUpdate=!0;n.morphTargetsNeedUpdate=!0;n.elementsNeedUpdate=!0;n.uvsNeedUpdate=!0;n.normalsNeedUpdate=!0;n.tangentsNeedUpdate=!0;n.colorsNeedUpdate=!0}}else n instanceof THREE.BufferGeometry&&h(n);else if(b instanceof THREE.Ribbon){if(n=b.geometry,!n.__webglVertexBuffer){var S=n;S.__webglVertexBuffer=k.createBuffer();S.__webglColorBuffer=k.createBuffer();S.__webglNormalBuffer=
|
|
|
-k.createBuffer();H.info.memory.geometries++;var $=n,P=b,N=$.vertices.length;$.__vertexArray=new Float32Array(3*N);$.__colorArray=new Float32Array(3*N);$.__normalArray=new Float32Array(3*N);$.__webglVertexCount=N;c($,P);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(n=b.geometry,!n.__webglVertexBuffer){var Q=n;Q.__webglVertexBuffer=k.createBuffer();Q.__webglColorBuffer=k.createBuffer();Q.__webglLineDistanceBuffer=k.createBuffer();H.info.memory.geometries++;
|
|
|
-var R=n,ia=b,T=R.vertices.length;R.__vertexArray=new Float32Array(3*T);R.__colorArray=new Float32Array(3*T);R.__lineDistanceArray=new Float32Array(1*T);R.__webglLineCount=T;c(R,ia);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.lineDistancesNeedUpdate=!0}}else if(b instanceof THREE.ParticleSystem&&(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof THREE.Geometry){var da=n;da.__webglVertexBuffer=k.createBuffer();da.__webglColorBuffer=k.createBuffer();H.info.memory.geometries++;var ba=n,ga=b,ja=
|
|
|
-ba.vertices.length;ba.__vertexArray=new Float32Array(3*ja);ba.__colorArray=new Float32Array(3*ja);ba.__sortArray=[];ba.__webglParticleCount=ja;c(ba,ga);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,n instanceof THREE.BufferGeometry)s(l.__webglObjects,n,b);else for(m in n.geometryGroups)q=n.geometryGroups[m],s(l.__webglObjects,q,b);else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof
|
|
|
-THREE.ParticleSystem?(n=b.geometry,s(l.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?l.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?l.__webglSprites.push(b):b instanceof THREE.LensFlare&&l.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var oa=a.__objectsRemoved[0],qa=a;oa instanceof THREE.Mesh||oa instanceof THREE.ParticleSystem||oa instanceof THREE.Ribbon||
|
|
|
-oa instanceof THREE.Line?t(qa.__webglObjects,oa):oa instanceof THREE.Sprite?F(qa.__webglSprites,oa):oa instanceof THREE.LensFlare?F(qa.__webglFlares,oa):(oa instanceof THREE.ImmediateRenderObject||oa.immediateRenderCallback)&&t(qa.__webglObjectsImmediate,oa);oa.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var Ia=0,Ma=a.__webglObjects.length;Ia<Ma;Ia++){var ra=a.__webglObjects[Ia].object,V=ra.geometry,Ba=void 0,za=void 0,la=void 0;if(ra instanceof THREE.Mesh)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||
|
|
|
-V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate)&&j(V,k.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.elementsNeedUpdate=!1,V.uvsNeedUpdate=!1,V.normalsNeedUpdate=!1,V.colorsNeedUpdate=!1,V.tangentsNeedUpdate=!1;else{for(var Sa=0,Ta=V.geometryGroupsList.length;Sa<Ta;Sa++)if(Ba=V.geometryGroupsList[Sa],la=e(ra,Ba),V.buffersNeedUpdate&&d(Ba,ra),za=la.attributes&&E(la),V.verticesNeedUpdate||V.morphTargetsNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||
|
|
|
-V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate||za){var sa=Ba,Xa=ra,Aa=k.DYNAMIC_DRAW,vb=!V.dynamic,gb=la;if(sa.__inittedArrays){var qb=f(gb),nb=gb.vertexColors?gb.vertexColors:!1,sb=g(gb),hb=qb===THREE.SmoothShading,G=void 0,aa=void 0,Wa=void 0,U=void 0,db=void 0,Ya=void 0,Hb=void 0,rb=void 0,bb=void 0,mb=void 0,ob=void 0,W=void 0,X=void 0,Y=void 0,pa=void 0,Ib=void 0,Jb=void 0,Kb=void 0,tb=void 0,Lb=void 0,Mb=void 0,Nb=void 0,ub=void 0,Ob=void 0,Pb=void 0,Qb=void 0,wb=void 0,Rb=void 0,
|
|
|
-Sb=void 0,Tb=void 0,Db=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Eb=void 0,va=void 0,ac=void 0,cc=void 0,kc=void 0,lc=void 0,Pa=void 0,ic=void 0,Na=void 0,Oa=void 0,dc=void 0,Yb=void 0,Ja=0,La=0,Zb=0,$b=0,zb=0,$a=0,ya=0,eb=0,Ka=0,ha=0,ka=0,y=0,wa=void 0,Qa=sa.__vertexArray,pc=sa.__uvArray,qc=sa.__uv2Array,Ab=sa.__normalArray,Ea=sa.__tangentArray,Ra=sa.__colorArray,Fa=sa.__skinIndexArray,Ga=sa.__skinWeightArray,Sc=sa.__morphTargetsArrays,Tc=sa.__morphNormalsArrays,Uc=sa.__webglCustomAttributesList,w=void 0,
|
|
|
-Xb=sa.__faceArray,pb=sa.__lineArray,jb=Xa.geometry,xc=jb.elementsNeedUpdate,oc=jb.uvsNeedUpdate,yc=jb.normalsNeedUpdate,Pc=jb.tangentsNeedUpdate,Qc=jb.colorsNeedUpdate,hd=jb.morphTargetsNeedUpdate,gc=jb.vertices,ta=sa.faces3,ua=sa.faces4,ab=jb.faces,Vc=jb.faceVertexUvs[0],Wc=jb.faceVertexUvs[1],hc=jb.skinIndices,ec=jb.skinWeights,fc=jb.morphTargets,Ac=jb.morphNormals;if(jb.verticesNeedUpdate){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=gc[U.a],X=gc[U.b],Y=gc[U.c],Qa[La]=W.x,Qa[La+1]=W.y,Qa[La+2]=
|
|
|
-W.z,Qa[La+3]=X.x,Qa[La+4]=X.y,Qa[La+5]=X.z,Qa[La+6]=Y.x,Qa[La+7]=Y.y,Qa[La+8]=Y.z,La+=9;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=gc[U.a],X=gc[U.b],Y=gc[U.c],pa=gc[U.d],Qa[La]=W.x,Qa[La+1]=W.y,Qa[La+2]=W.z,Qa[La+3]=X.x,Qa[La+4]=X.y,Qa[La+5]=X.z,Qa[La+6]=Y.x,Qa[La+7]=Y.y,Qa[La+8]=Y.z,Qa[La+9]=pa.x,Qa[La+10]=pa.y,Qa[La+11]=pa.z,La+=12;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Qa,Aa)}if(hd){Pa=0;for(ic=fc.length;Pa<ic;Pa++){G=ka=0;for(aa=ta.length;G<aa;G++)dc=
|
|
|
-ta[G],U=ab[dc],W=fc[Pa].vertices[U.a],X=fc[Pa].vertices[U.b],Y=fc[Pa].vertices[U.c],Na=Sc[Pa],Na[ka]=W.x,Na[ka+1]=W.y,Na[ka+2]=W.z,Na[ka+3]=X.x,Na[ka+4]=X.y,Na[ka+5]=X.z,Na[ka+6]=Y.x,Na[ka+7]=Y.y,Na[ka+8]=Y.z,gb.morphNormals&&(hb?(Yb=Ac[Pa].vertexNormals[dc],Lb=Yb.a,Mb=Yb.b,Nb=Yb.c):Nb=Mb=Lb=Ac[Pa].faceNormals[dc],Oa=Tc[Pa],Oa[ka]=Lb.x,Oa[ka+1]=Lb.y,Oa[ka+2]=Lb.z,Oa[ka+3]=Mb.x,Oa[ka+4]=Mb.y,Oa[ka+5]=Mb.z,Oa[ka+6]=Nb.x,Oa[ka+7]=Nb.y,Oa[ka+8]=Nb.z),ka+=9;G=0;for(aa=ua.length;G<aa;G++)dc=ua[G],U=ab[dc],
|
|
|
-W=fc[Pa].vertices[U.a],X=fc[Pa].vertices[U.b],Y=fc[Pa].vertices[U.c],pa=fc[Pa].vertices[U.d],Na=Sc[Pa],Na[ka]=W.x,Na[ka+1]=W.y,Na[ka+2]=W.z,Na[ka+3]=X.x,Na[ka+4]=X.y,Na[ka+5]=X.z,Na[ka+6]=Y.x,Na[ka+7]=Y.y,Na[ka+8]=Y.z,Na[ka+9]=pa.x,Na[ka+10]=pa.y,Na[ka+11]=pa.z,gb.morphNormals&&(hb?(Yb=Ac[Pa].vertexNormals[dc],Lb=Yb.a,Mb=Yb.b,Nb=Yb.c,ub=Yb.d):ub=Nb=Mb=Lb=Ac[Pa].faceNormals[dc],Oa=Tc[Pa],Oa[ka]=Lb.x,Oa[ka+1]=Lb.y,Oa[ka+2]=Lb.z,Oa[ka+3]=Mb.x,Oa[ka+4]=Mb.y,Oa[ka+5]=Mb.z,Oa[ka+6]=Nb.x,Oa[ka+7]=Nb.y,Oa[ka+
|
|
|
-8]=Nb.z,Oa[ka+9]=ub.x,Oa[ka+10]=ub.y,Oa[ka+11]=ub.z),ka+=12;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglMorphTargetsBuffers[Pa]);k.bufferData(k.ARRAY_BUFFER,Sc[Pa],Aa);gb.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglMorphNormalsBuffers[Pa]),k.bufferData(k.ARRAY_BUFFER,Tc[Pa],Aa))}}if(ec.length){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],Rb=ec[U.a],Sb=ec[U.b],Tb=ec[U.c],Ga[ha]=Rb.x,Ga[ha+1]=Rb.y,Ga[ha+2]=Rb.z,Ga[ha+3]=Rb.w,Ga[ha+4]=Sb.x,Ga[ha+5]=Sb.y,Ga[ha+6]=Sb.z,Ga[ha+7]=Sb.w,Ga[ha+8]=Tb.x,Ga[ha+
|
|
|
-9]=Tb.y,Ga[ha+10]=Tb.z,Ga[ha+11]=Tb.w,Ub=hc[U.a],Vb=hc[U.b],Wb=hc[U.c],Fa[ha]=Ub.x,Fa[ha+1]=Ub.y,Fa[ha+2]=Ub.z,Fa[ha+3]=Ub.w,Fa[ha+4]=Vb.x,Fa[ha+5]=Vb.y,Fa[ha+6]=Vb.z,Fa[ha+7]=Vb.w,Fa[ha+8]=Wb.x,Fa[ha+9]=Wb.y,Fa[ha+10]=Wb.z,Fa[ha+11]=Wb.w,ha+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],Rb=ec[U.a],Sb=ec[U.b],Tb=ec[U.c],Db=ec[U.d],Ga[ha]=Rb.x,Ga[ha+1]=Rb.y,Ga[ha+2]=Rb.z,Ga[ha+3]=Rb.w,Ga[ha+4]=Sb.x,Ga[ha+5]=Sb.y,Ga[ha+6]=Sb.z,Ga[ha+7]=Sb.w,Ga[ha+8]=Tb.x,Ga[ha+9]=Tb.y,Ga[ha+10]=Tb.z,Ga[ha+11]=Tb.w,Ga[ha+
|
|
|
-12]=Db.x,Ga[ha+13]=Db.y,Ga[ha+14]=Db.z,Ga[ha+15]=Db.w,Ub=hc[U.a],Vb=hc[U.b],Wb=hc[U.c],Eb=hc[U.d],Fa[ha]=Ub.x,Fa[ha+1]=Ub.y,Fa[ha+2]=Ub.z,Fa[ha+3]=Ub.w,Fa[ha+4]=Vb.x,Fa[ha+5]=Vb.y,Fa[ha+6]=Vb.z,Fa[ha+7]=Vb.w,Fa[ha+8]=Wb.x,Fa[ha+9]=Wb.y,Fa[ha+10]=Wb.z,Fa[ha+11]=Wb.w,Fa[ha+12]=Eb.x,Fa[ha+13]=Eb.y,Fa[ha+14]=Eb.z,Fa[ha+15]=Eb.w,ha+=16;0<ha&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Fa,Aa),k.bindBuffer(k.ARRAY_BUFFER,sa.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,
|
|
|
-Ga,Aa))}if(Qc&&nb){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],Hb=U.vertexColors,rb=U.color,3===Hb.length&&nb===THREE.VertexColors?(Ob=Hb[0],Pb=Hb[1],Qb=Hb[2]):Qb=Pb=Ob=rb,Ra[Ka]=Ob.r,Ra[Ka+1]=Ob.g,Ra[Ka+2]=Ob.b,Ra[Ka+3]=Pb.r,Ra[Ka+4]=Pb.g,Ra[Ka+5]=Pb.b,Ra[Ka+6]=Qb.r,Ra[Ka+7]=Qb.g,Ra[Ka+8]=Qb.b,Ka+=9;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],Hb=U.vertexColors,rb=U.color,4===Hb.length&&nb===THREE.VertexColors?(Ob=Hb[0],Pb=Hb[1],Qb=Hb[2],wb=Hb[3]):wb=Qb=Pb=Ob=rb,Ra[Ka]=Ob.r,Ra[Ka+1]=Ob.g,Ra[Ka+2]=Ob.b,
|
|
|
-Ra[Ka+3]=Pb.r,Ra[Ka+4]=Pb.g,Ra[Ka+5]=Pb.b,Ra[Ka+6]=Qb.r,Ra[Ka+7]=Qb.g,Ra[Ka+8]=Qb.b,Ra[Ka+9]=wb.r,Ra[Ka+10]=wb.g,Ra[Ka+11]=wb.b,Ka+=12;0<Ka&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Ra,Aa))}if(Pc&&jb.hasTangents){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],bb=U.vertexTangents,Ib=bb[0],Jb=bb[1],Kb=bb[2],Ea[ya]=Ib.x,Ea[ya+1]=Ib.y,Ea[ya+2]=Ib.z,Ea[ya+3]=Ib.w,Ea[ya+4]=Jb.x,Ea[ya+5]=Jb.y,Ea[ya+6]=Jb.z,Ea[ya+7]=Jb.w,Ea[ya+8]=Kb.x,Ea[ya+9]=Kb.y,Ea[ya+10]=Kb.z,Ea[ya+11]=
|
|
|
-Kb.w,ya+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],bb=U.vertexTangents,Ib=bb[0],Jb=bb[1],Kb=bb[2],tb=bb[3],Ea[ya]=Ib.x,Ea[ya+1]=Ib.y,Ea[ya+2]=Ib.z,Ea[ya+3]=Ib.w,Ea[ya+4]=Jb.x,Ea[ya+5]=Jb.y,Ea[ya+6]=Jb.z,Ea[ya+7]=Jb.w,Ea[ya+8]=Kb.x,Ea[ya+9]=Kb.y,Ea[ya+10]=Kb.z,Ea[ya+11]=Kb.w,Ea[ya+12]=tb.x,Ea[ya+13]=tb.y,Ea[ya+14]=tb.z,Ea[ya+15]=tb.w,ya+=16;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Ea,Aa)}if(yc&&qb){G=0;for(aa=ta.length;G<aa;G++)if(U=ab[ta[G]],db=U.vertexNormals,
|
|
|
-Ya=U.normal,3===db.length&&hb)for(va=0;3>va;va++)cc=db[va],Ab[$a]=cc.x,Ab[$a+1]=cc.y,Ab[$a+2]=cc.z,$a+=3;else for(va=0;3>va;va++)Ab[$a]=Ya.x,Ab[$a+1]=Ya.y,Ab[$a+2]=Ya.z,$a+=3;G=0;for(aa=ua.length;G<aa;G++)if(U=ab[ua[G]],db=U.vertexNormals,Ya=U.normal,4===db.length&&hb)for(va=0;4>va;va++)cc=db[va],Ab[$a]=cc.x,Ab[$a+1]=cc.y,Ab[$a+2]=cc.z,$a+=3;else for(va=0;4>va;va++)Ab[$a]=Ya.x,Ab[$a+1]=Ya.y,Ab[$a+2]=Ya.z,$a+=3;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ab,Aa)}if(oc&&
|
|
|
-Vc&&sb){G=0;for(aa=ta.length;G<aa;G++)if(Wa=ta[G],mb=Vc[Wa],void 0!==mb)for(va=0;3>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;G=0;for(aa=ua.length;G<aa;G++)if(Wa=ua[G],mb=Vc[Wa],void 0!==mb)for(va=0;4>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;0<Zb&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,pc,Aa))}if(oc&&Wc&&sb){G=0;for(aa=ta.length;G<aa;G++)if(Wa=ta[G],ob=Wc[Wa],void 0!==ob)for(va=0;3>va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;G=0;for(aa=ua.length;G<
|
|
|
-aa;G++)if(Wa=ua[G],ob=Wc[Wa],void 0!==ob)for(va=0;4>va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;0<$b&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,qc,Aa))}if(xc){G=0;for(aa=ta.length;G<aa;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+2,zb+=3,pb[eb]=Ja,pb[eb+1]=Ja+1,pb[eb+2]=Ja,pb[eb+3]=Ja+2,pb[eb+4]=Ja+1,pb[eb+5]=Ja+2,eb+=6,Ja+=3;G=0;for(aa=ua.length;G<aa;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+3,Xb[zb+3]=Ja+1,Xb[zb+4]=Ja+2,Xb[zb+5]=Ja+3,zb+=6,pb[eb]=Ja,pb[eb+1]=Ja+
|
|
|
-1,pb[eb+2]=Ja,pb[eb+3]=Ja+3,pb[eb+4]=Ja+1,pb[eb+5]=Ja+2,pb[eb+6]=Ja+2,pb[eb+7]=Ja+3,eb+=8,Ja+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Xb,Aa);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,pb,Aa)}if(Uc){va=0;for(ac=Uc.length;va<ac;va++)if(w=Uc[va],w.__original.needsUpdate){y=0;if(1===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],w.array[y]=w.value[U.a],
|
|
|
-w.array[y+1]=w.value[U.b],w.array[y+2]=w.value[U.c],y+=3;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],w.array[y]=w.value[U.a],w.array[y+1]=w.value[U.b],w.array[y+2]=w.value[U.c],w.array[y+3]=w.value[U.d],y+=4}else{if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)wa=w.value[ta[G]],w.array[y]=wa,w.array[y+1]=wa,w.array[y+2]=wa,y+=3;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],w.array[y]=wa,w.array[y+1]=wa,w.array[y+2]=wa,w.array[y+3]=wa,y+=4}}else if(2===w.size)if(void 0===w.boundTo||"vertices"===
|
|
|
-w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,y+=6;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],pa=w.value[U.d],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,w.array[y+6]=pa.x,w.array[y+7]=pa.y,y+=8}else{if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=
|
|
|
-X=W=wa=w.value[ta[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,y+=6;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,w.array[y+6]=pa.x,w.array[y+7]=pa.y,y+=8}}else if(3===w.size){var fa;fa="c"===w.type?["r","g","b"]:["x","y","z"];if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],
|
|
|
-X=w.value[U.b],Y=w.value[U.c],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],pa=w.value[U.d],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],
|
|
|
-w.array[y+8]=Y[fa[2]],w.array[y+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}else if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=X=W=wa=w.value[ta[G]],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],
|
|
|
-w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],w.array[y+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}else if("faceVertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)wa=w.value[ta[G]],W=wa[0],X=wa[1],Y=wa[2],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+
|
|
|
-8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],W=wa[0],X=wa[1],Y=wa[2],pa=wa[3],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],w.array[y+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}}else if(4===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],X=w.value[U.b],
|
|
|
-Y=w.value[U.c],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],pa=w.value[U.d],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+
|
|
|
-10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}else if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=X=W=wa=w.value[ta[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=
|
|
|
-W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}else if("faceVertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)wa=w.value[ta[G]],W=wa[0],X=wa[1],Y=wa[2],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+
|
|
|
-9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],W=wa[0],X=wa[1],Y=wa[2],pa=wa[3],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}k.bindBuffer(k.ARRAY_BUFFER,w.buffer);k.bufferData(k.ARRAY_BUFFER,w.array,Aa)}}vb&&(delete sa.__inittedArrays,
|
|
|
-delete sa.__colorArray,delete sa.__normalArray,delete sa.__tangentArray,delete sa.__uvArray,delete sa.__uv2Array,delete sa.__faceArray,delete sa.__vertexArray,delete sa.__lineArray,delete sa.__skinIndexArray,delete sa.__skinWeightArray)}}V.verticesNeedUpdate=!1;V.morphTargetsNeedUpdate=!1;V.elementsNeedUpdate=!1;V.uvsNeedUpdate=!1;V.normalsNeedUpdate=!1;V.colorsNeedUpdate=!1;V.tangentsNeedUpdate=!1;V.buffersNeedUpdate=!1;la.attributes&&z(la)}else if(ra instanceof THREE.Ribbon){la=e(ra,V);za=la.attributes&&
|
|
|
-E(la);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.normalsNeedUpdate||za){var Bb=V,Bc=k.DYNAMIC_DRAW,rc=void 0,sc=void 0,tc=void 0,Cc=void 0,xa=void 0,Dc=void 0,Ec=void 0,Fc=void 0,Zc=void 0,Ua=void 0,mc=void 0,Ca=void 0,kb=void 0,$c=Bb.vertices,ad=Bb.colors,bd=Bb.normals,id=$c.length,jd=ad.length,kd=bd.length,Gc=Bb.__vertexArray,Hc=Bb.__colorArray,Ic=Bb.__normalArray,ld=Bb.colorsNeedUpdate,md=Bb.normalsNeedUpdate,Xc=Bb.__webglCustomAttributesList;if(Bb.verticesNeedUpdate){for(rc=0;rc<id;rc++)Cc=
|
|
|
-$c[rc],xa=3*rc,Gc[xa]=Cc.x,Gc[xa+1]=Cc.y,Gc[xa+2]=Cc.z;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Gc,Bc)}if(ld){for(sc=0;sc<jd;sc++)Dc=ad[sc],xa=3*sc,Hc[xa]=Dc.r,Hc[xa+1]=Dc.g,Hc[xa+2]=Dc.b;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Hc,Bc)}if(md){for(tc=0;tc<kd;tc++)Ec=bd[tc],xa=3*tc,Ic[xa]=Ec.x,Ic[xa+1]=Ec.y,Ic[xa+2]=Ec.z;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ic,Bc)}if(Xc){Fc=0;for(Zc=
|
|
|
-Xc.length;Fc<Zc;Fc++)if(Ca=Xc[Fc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){xa=0;mc=Ca.value.length;if(1===Ca.size)for(Ua=0;Ua<mc;Ua++)Ca.array[Ua]=Ca.value[Ua];else if(2===Ca.size)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,xa+=2;else if(3===Ca.size)if("c"===Ca.type)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.r,Ca.array[xa+1]=kb.g,Ca.array[xa+2]=kb.b,xa+=3;else for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,Ca.array[xa+
|
|
|
-2]=kb.z,xa+=3;else if(4===Ca.size)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,Ca.array[xa+2]=kb.z,Ca.array[xa+3]=kb.w,xa+=4;k.bindBuffer(k.ARRAY_BUFFER,Ca.buffer);k.bufferData(k.ARRAY_BUFFER,Ca.array,Bc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.normalsNeedUpdate=!1;la.attributes&&z(la)}else if(ra instanceof THREE.Line){la=e(ra,V);za=la.attributes&&E(la);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.lineDistancesNeedUpdate||za){var Cb=V,Jc=k.DYNAMIC_DRAW,uc=
|
|
|
-void 0,vc=void 0,wc=void 0,Kc=void 0,Ha=void 0,Lc=void 0,cd=Cb.vertices,dd=Cb.colors,ed=Cb.lineDistances,nd=cd.length,od=dd.length,pd=ed.length,Mc=Cb.__vertexArray,Nc=Cb.__colorArray,fd=Cb.__lineDistanceArray,qd=Cb.colorsNeedUpdate,rd=Cb.lineDistancesNeedUpdate,Yc=Cb.__webglCustomAttributesList,Oc=void 0,gd=void 0,Va=void 0,nc=void 0,lb=void 0,Da=void 0;if(Cb.verticesNeedUpdate){for(uc=0;uc<nd;uc++)Kc=cd[uc],Ha=3*uc,Mc[Ha]=Kc.x,Mc[Ha+1]=Kc.y,Mc[Ha+2]=Kc.z;k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglVertexBuffer);
|
|
|
-k.bufferData(k.ARRAY_BUFFER,Mc,Jc)}if(qd){for(vc=0;vc<od;vc++)Lc=dd[vc],Ha=3*vc,Nc[Ha]=Lc.r,Nc[Ha+1]=Lc.g,Nc[Ha+2]=Lc.b;k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Nc,Jc)}if(rd){for(wc=0;wc<pd;wc++)fd[wc]=ed[wc];k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglLineDistanceBuffer);k.bufferData(k.ARRAY_BUFFER,fd,Jc)}if(Yc){Oc=0;for(gd=Yc.length;Oc<gd;Oc++)if(Da=Yc[Oc],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Ha=0;nc=Da.value.length;if(1===Da.size)for(Va=
|
|
|
-0;Va<nc;Va++)Da.array[Va]=Da.value[Va];else if(2===Da.size)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Ha+=2;else if(3===Da.size)if("c"===Da.type)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.r,Da.array[Ha+1]=lb.g,Da.array[Ha+2]=lb.b,Ha+=3;else for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Da.array[Ha+2]=lb.z,Ha+=3;else if(4===Da.size)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Da.array[Ha+2]=lb.z,Da.array[Ha+
|
|
|
-3]=lb.w,Ha+=4;k.bindBuffer(k.ARRAY_BUFFER,Da.buffer);k.bufferData(k.ARRAY_BUFFER,Da.array,Jc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.lineDistancesNeedUpdate=!1;la.attributes&&z(la)}else ra instanceof THREE.ParticleSystem&&(V instanceof THREE.BufferGeometry?((V.verticesNeedUpdate||V.colorsNeedUpdate)&&j(V,k.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1):(la=e(ra,V),za=la.attributes&&E(la),(V.verticesNeedUpdate||V.colorsNeedUpdate||ra.sortParticles||za)&&i(V,k.DYNAMIC_DRAW,
|
|
|
-ra),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1,la.attributes&&z(la)))}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,m,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?n="lambert":a instanceof THREE.MeshPhongMaterial?n="phong":a instanceof THREE.LineBasicMaterial?n="basic":a instanceof THREE.LineDashedMaterial?n="dashed":a instanceof THREE.ParticleBasicMaterial&&
|
|
|
-(n="particle_basic");if(n){var p=THREE.ShaderLib[n];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,r,s;e=q=r=s=p=0;for(f=b.length;e<f;e++)g=b[e],g.onlyShadow||(g instanceof THREE.DirectionalLight&&q++,g instanceof THREE.PointLight&&r++,g instanceof THREE.SpotLight&&s++,g instanceof THREE.HemisphereLight&&p++);e=q;f=r;g=s;h=p;p=q=0;for(s=b.length;p<s;p++)r=b[p],r.castShadow&&(r instanceof THREE.SpotLight&&q++,r instanceof THREE.DirectionalLight&&
|
|
|
-!r.shadowCascade&&q++);m=q;Ya&&d&&d.useVertexTexture?l=1024:(b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),l=b);a:{r=a.fragmentShader;s=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,
|
|
|
-normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:Ya&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,
|
|
|
-maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,u,v,d=[];n?d.push(n):(d.push(r),d.push(s));for(u in q)d.push(u),d.push(q[u]);for(t in c)d.push(t),d.push(c[t]);n=d.join();t=0;for(u=ca.length;t<u;t++)if(d=ca[t],d.code===
|
|
|
-n){d.usedTimes++;j=d.program;break a}t=[];for(v in q)u=q[v],!1!==u&&(u="#define "+v+" "+u,t.push(u));u=t.join("\n");v=k.createProgram();t=["precision "+R+" float;",u,ic?"#define VERTEX_TEXTURES":"",H.gammaInput?"#define GAMMA_INPUT":"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,
|
|
|
-"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+
|
|
|
-c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":
|
|
|
-"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+a.antialias:!1,S=void 0!==a.stencil?a.stencil:!0,ba=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ga=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),Ia=void 0!==a.clearAlpha?a.clearAlpha:0;this.domElement=N;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapSoft=
|
|
|
+this.shadowMapAutoUpdate=!0;this.shadowMaterialSide=THREE.BackSide;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,ca=[],ia=0,Z=null,ja=null,da=-1,$=null,oa=null,fb=0,Ma=0,za=-1,qa=-1,Sa=-1,gb=-1,vb=-1,rb=-1,nb=-1,mb=-1,ac=null,qb=null,Ta=null,ra=null,ob=0,la=0,sb=0,hb=
|
|
|
+0,Ba=0,tb=0,Wa={},wb=new THREE.Frustum,Xa=new THREE.Matrix4,bb=new THREE.Matrix4,db=new THREE.Vector4,Aa=new THREE.Vector3,Db=!0,xc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,Eb,ub;try{if(!(k=N.getContext("experimental-webgl",{alpha:T,premultipliedAlpha:M,antialias:O,stencil:S,
|
|
|
+preserveDrawingBuffer:ba})))throw"Error creating WebGL context.";}catch(Pc){console.error(Pc)}a=k.getExtension("OES_texture_float");T=k.getExtension("OES_standard_derivatives");Eb=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");ub=k.getExtension("WEBGL_compressed_texture_s3tc")||k.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||k.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");a||
|
|
|
+console.log("THREE.WebGLRenderer: Float textures not supported.");T||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");Eb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");ub||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);
|
|
|
+k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(ga.r,ga.g,ga.b,Ia);this.context=k;var yc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),T=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Qc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),oc=Eb?k.getParameter(Eb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,ic=0<T,Ya=ic&&a;ub&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return ic};this.getMaxAnisotropy=
|
|
|
+function(){return oc};this.setSize=function(a,b){N.width=a;N.height=b;this.setViewport(0,0,N.width,N.height)};this.setViewport=function(a,b,c,d){ob=void 0!==a?a:0;la=void 0!==b?b:0;sb=void 0!==c?c:N.width;hb=void 0!==d?d:N.height;k.viewport(ob,la,sb,hb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ga.setHex(a);Ia=b;k.clearColor(ga.r,ga.g,ga.b,Ia)};this.setClearColor=
|
|
|
+function(a,b){ga.copy(a);Ia=b;k.clearColor(ga.r,ga.g,ga.b,Ia)};this.getClearColor=function(){return ga};this.getClearAlpha=function(){return Ia};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=k.COLOR_BUFFER_BIT;if(void 0===b||b)d|=k.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);
|
|
|
+this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrix,a instanceof THREE.Mesh)for(var c in a.geometry.geometryGroups){var d=a.geometry.geometryGroups[c];k.deleteBuffer(d.__webglVertexBuffer);k.deleteBuffer(d.__webglNormalBuffer);k.deleteBuffer(d.__webglTangentBuffer);k.deleteBuffer(d.__webglColorBuffer);k.deleteBuffer(d.__webglUVBuffer);k.deleteBuffer(d.__webglUV2Buffer);k.deleteBuffer(d.__webglSkinIndicesBuffer);
|
|
|
+k.deleteBuffer(d.__webglSkinWeightsBuffer);k.deleteBuffer(d.__webglFaceBuffer);k.deleteBuffer(d.__webglLineBuffer);var e=void 0,f=void 0;if(d.numMorphTargets){e=0;for(f=d.numMorphTargets;e<f;e++)k.deleteBuffer(d.__webglMorphTargetsBuffers[e])}if(d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)k.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d);H.info.memory.geometries--}else a instanceof THREE.Ribbon?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),
|
|
|
+k.deleteBuffer(a.__webglNormalBuffer),b(a),H.info.memory.geometries--):a instanceof THREE.Line?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),k.deleteBuffer(a.__webglLineDistanceBuffer),b(a),H.info.memory.geometries--):a instanceof THREE.ParticleSystem&&(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),b(a),H.info.memory.geometries--)};this.deallocateTexture=function(a){if(a.image&&a.image.__webglTextureCube)k.deleteTexture(a.image.__webglTextureCube);
|
|
|
+else{if(!a.__webglInit)return;a.__webglInit=!1;k.deleteTexture(a.__webglTexture)}H.info.memory.textures--};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;
|
|
|
+if(b){a.program=void 0;var c,d,e=!1,a=0;for(c=ca.length;a<c;a++)if(d=ca[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(e){e=[];a=0;for(c=ca.length;a<c;a++)d=ca[a],d.program!==b&&e.push(d);ca=e;k.deleteProgram(b);H.info.memory.programs--}}};this.updateShadowMap=function(a,b){Z=null;da=$=mb=nb=Sa=-1;Db=!0;qa=za=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&
|
|
|
+!a.__webglNormalBuffer&&(a.__webglNormalBuffer=k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=k.createBuffer());a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);
|
|
|
+if(c.shading===THREE.FlatShading){var d,e,f,g,h,i,j,l,m,n,p,q=3*a.count;for(p=0;p<q;p+=9)n=a.normalArray,d=n[p],e=n[p+1],f=n[p+2],g=n[p+3],i=n[p+4],l=n[p+5],h=n[p+6],j=n[p+7],m=n[p+8],d=(d+g+h)/3,e=(e+i+j)/3,f=(f+l+m)/3,n[p]=d,n[p+1]=e,n[p+2]=f,n[p+3]=d,n[p+4]=e,n[p+5]=f,n[p+6]=d,n[p+7]=e,n[p+8]=f}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=
|
|
|
+function(a,b,c,d,e,f){if(!1!==d.visible)if(c=A(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==$&&($=d,b=!0),b&&n(),f instanceof THREE.Mesh)if(f=e.attributes.index){d=e.offsets;1<d.length&&(b=!0);for(var c=0,g=d.length;c<g;c++){var h=d[c].index;if(b){var i=e.attributes.position,j=i.itemSize;k.bindBuffer(k.ARRAY_BUFFER,i.buffer);l(a.position);k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,4*h*j);j=e.attributes.normal;if(0<=a.normal&&j){var m=j.itemSize;k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+j.buffer);l(a.normal);k.vertexAttribPointer(a.normal,m,k.FLOAT,!1,0,4*h*m)}j=e.attributes.uv;0<=a.uv&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.uv),k.vertexAttribPointer(a.uv,m,k.FLOAT,!1,0,4*h*m));j=e.attributes.color;0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,4*h*m));j=e.attributes.tangent;0<=a.tangent&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.tangent),k.vertexAttribPointer(a.tangent,
|
|
|
+m,k.FLOAT,!1,0,4*h*m));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,f.buffer)}k.drawElements(k.TRIANGLES,d[c].count,k.UNSIGNED_SHORT,2*d[c].start);H.info.render.calls++;H.info.render.vertices+=d[c].count;H.info.render.faces+=d[c].count/3}}else b&&(i=e.attributes.position,j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),l(a.position),k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,0),j=e.attributes.normal,0<=a.normal&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.normal),k.vertexAttribPointer(a.normal,
|
|
|
+m,k.FLOAT,!1,0,0)),j=e.attributes.uv,0<=a.uv&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.uv),k.vertexAttribPointer(a.uv,m,k.FLOAT,!1,0,0)),j=e.attributes.color,0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,0)),j=e.attributes.tangent,0<=a.tangent&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.tangent),k.vertexAttribPointer(a.tangent,m,k.FLOAT,!1,0,0))),k.drawArrays(k.TRIANGLES,0,i.numItems/3),
|
|
|
+H.info.render.calls++,H.info.render.vertices+=i.numItems/3,H.info.render.faces+=i.numItems/3/3;else f instanceof THREE.ParticleSystem&&b&&(i=e.attributes.position,j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),l(a.position),k.vertexAttribPointer(a.position,j,k.FLOAT,!1,0,0),j=e.attributes.color,0<=a.color&&j&&(m=j.itemSize,k.bindBuffer(k.ARRAY_BUFFER,j.buffer),l(a.color),k.vertexAttribPointer(a.color,m,k.FLOAT,!1,0,0)),k.drawArrays(k.POINTS,0,i.numItems/3),H.info.render.calls++,H.info.render.points+=
|
|
|
+i.numItems/3)};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,h,c=A(a,b,c,d,f),b=c.attributes,a=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==$&&($=c,a=!0);a&&n();if(!d.morphTargets&&0<=b.position)a&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),l(b.position),k.vertexAttribPointer(b.position,3,k.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),
|
|
|
+l(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),l(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var i=0;h=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<h.length;)0<=c["morphTarget"+i]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[h[i]]),l(c["morphTarget"+i]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,
|
|
|
+!1,0,0)),0<=c["morphNormal"+i]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[h[i]]),l(c["morphNormal"+i]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[h[i]],i++}else{h=[];g=f.morphTargetInfluences;var j,m=g.length;for(j=0;j<m;j++)i=g[j],0<i&&h.push([j,i]);h.length>d.numSupportedMorphTargets?(h.sort(p),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(p):0===h.length&&h.push([0,0]);for(i=0;i<
|
|
|
+d.numSupportedMorphTargets;)h[i]?(j=h[i][0],0<=c["morphTarget"+i]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j]),l(c["morphTarget"+i]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+i]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j]),l(c["morphNormal"+i]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[j]):f.__webglMorphTargetInfluences[i]=0,i++}null!==d.program.uniforms.morphTargetInfluences&&
|
|
|
+k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(h=e.__webglCustomAttributesList.length;g<h;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),l(b[c.buffer.belongsToAttribute]),k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=b.color&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer),l(b.color),k.vertexAttribPointer(b.color,
|
|
|
+3,k.FLOAT,!1,0,0));0<=b.normal&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer),l(b.normal),k.vertexAttribPointer(b.normal,3,k.FLOAT,!1,0,0));0<=b.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglTangentBuffer),l(b.tangent),k.vertexAttribPointer(b.tangent,4,k.FLOAT,!1,0,0));0<=b.uv&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer),l(b.uv),k.vertexAttribPointer(b.uv,2,k.FLOAT,!1,0,0));0<=b.uv2&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer),l(b.uv2),k.vertexAttribPointer(b.uv2,2,k.FLOAT,!1,0,0));
|
|
|
+d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),l(b.skinIndex),k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),l(b.skinWeight),k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,!1,0,0));0<=b.lineDistance&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),k.vertexAttribPointer(b.lineDistance,1,k.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,
|
|
|
+d!==ra&&(k.lineWidth(d),ra=d),a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)):(a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=e.__webglFaceCount,H.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES,d=d.linewidth,d!==ra&&(k.lineWidth(d),ra=
|
|
|
+d),k.drawArrays(f,0,e.__webglLineCount),H.info.render.calls++):f instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,e.__webglParticleCount),H.info.render.calls++,H.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,h,i=a.__lights,
|
|
|
+j=a.fog;da=-1;Db=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Xa.multiply(b.projectionMatrix,b.matrixWorldInverse);wb.setFromMatrix(Xa);this.autoUpdateObjects&&this.initWebGLObjects(a);q(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
|
|
|
+h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||wb.contains(g))){v(g,b);var l=f,n=l.buffer,p=void 0,s=p=void 0,s=l.object.material;if(s instanceof THREE.MeshFaceMaterial)p=n.materialIndex,0<=p&&(p=s.materials[p],p.transparent?(l.transparent=p,l.opaque=null):(l.opaque=p,l.transparent=null));else if(p=s)p.transparent?(l.transparent=p,l.opaque=null):(l.opaque=p,l.transparent=null);
|
|
|
+f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(db.copy(g.matrixWorld.getPosition()),Xa.multiplyVector3(db),f.z=db.z),f.id=g.id)}this.sortObjects&&h.sort(m);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(v(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),
|
|
|
+this.setDepthWrite(d.depthWrite),J(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,i,j,!0,d),u(a.__webglObjectsImmediate,"",b,i,j,!1,d)):(d=null,this.setBlending(THREE.NormalBlending),r(a.__webglObjects,!0,"opaque",b,i,j,!1,d),u(a.__webglObjectsImmediate,"opaque",b,i,j,!1,d),r(a.__webglObjects,!1,"transparent",b,i,j,!0,d),u(a.__webglObjectsImmediate,"transparent",b,i,j,!0,d));q(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&
|
|
|
+c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=A(a,b,c,d,e);$=-1;H.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,
|
|
|
+k,wb):e.render(function(a){H.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],l=a,m=void 0,n=void 0,p=void 0,q=void 0;if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,b instanceof THREE.Mesh)if(n=b.geometry,p=b.material,n instanceof THREE.Geometry){if(void 0===
|
|
|
+n.geometryGroups){var r=n,u=void 0,v=void 0,x=void 0,A=void 0,C=void 0,B=void 0,D=void 0,I={},J=r.morphTargets.length,L=r.morphNormals.length,Z=p instanceof THREE.MeshFaceMaterial;r.geometryGroups={};u=0;for(v=r.faces.length;u<v;u++)x=r.faces[u],A=Z?x.materialIndex:void 0,B=void 0!==A?A:-1,void 0===I[B]&&(I[B]={hash:B,counter:0}),D=I[B].hash+"_"+I[B].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:J,numMorphNormals:L}),C=x instanceof
|
|
|
+THREE.Face3?3:4,65535<r.geometryGroups[D].vertices+C&&(I[B].counter+=1,D=I[B].hash+"_"+I[B].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:J,numMorphNormals:L})),x instanceof THREE.Face3?r.geometryGroups[D].faces3.push(u):r.geometryGroups[D].faces4.push(u),r.geometryGroups[D].vertices+=C;r.geometryGroupsList=[];var O=void 0;for(O in r.geometryGroups)r.geometryGroups[O].id=fb++,r.geometryGroupsList.push(r.geometryGroups[O])}for(m in n.geometryGroups)if(q=
|
|
|
+n.geometryGroups[m],!q.__webglVertexBuffer){var K=q;K.__webglVertexBuffer=k.createBuffer();K.__webglNormalBuffer=k.createBuffer();K.__webglTangentBuffer=k.createBuffer();K.__webglColorBuffer=k.createBuffer();K.__webglUVBuffer=k.createBuffer();K.__webglUV2Buffer=k.createBuffer();K.__webglSkinIndicesBuffer=k.createBuffer();K.__webglSkinWeightsBuffer=k.createBuffer();K.__webglFaceBuffer=k.createBuffer();K.__webglLineBuffer=k.createBuffer();var ca=void 0,M=void 0;if(K.numMorphTargets){K.__webglMorphTargetsBuffers=
|
|
|
+[];ca=0;for(M=K.numMorphTargets;ca<M;ca++)K.__webglMorphTargetsBuffers.push(k.createBuffer())}if(K.numMorphNormals){K.__webglMorphNormalsBuffers=[];ca=0;for(M=K.numMorphNormals;ca<M;ca++)K.__webglMorphNormalsBuffers.push(k.createBuffer())}H.info.memory.geometries++;d(q,b);n.verticesNeedUpdate=!0;n.morphTargetsNeedUpdate=!0;n.elementsNeedUpdate=!0;n.uvsNeedUpdate=!0;n.normalsNeedUpdate=!0;n.tangentsNeedUpdate=!0;n.colorsNeedUpdate=!0}}else n instanceof THREE.BufferGeometry&&h(n);else if(b instanceof
|
|
|
+THREE.Ribbon){if(n=b.geometry,!n.__webglVertexBuffer){var S=n;S.__webglVertexBuffer=k.createBuffer();S.__webglColorBuffer=k.createBuffer();S.__webglNormalBuffer=k.createBuffer();H.info.memory.geometries++;var $=n,P=b,N=$.vertices.length;$.__vertexArray=new Float32Array(3*N);$.__colorArray=new Float32Array(3*N);$.__normalArray=new Float32Array(3*N);$.__webglVertexCount=N;c($,P);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(n=b.geometry,!n.__webglVertexBuffer){var Q=
|
|
|
+n;Q.__webglVertexBuffer=k.createBuffer();Q.__webglColorBuffer=k.createBuffer();Q.__webglLineDistanceBuffer=k.createBuffer();H.info.memory.geometries++;var R=n,ia=b,T=R.vertices.length;R.__vertexArray=new Float32Array(3*T);R.__colorArray=new Float32Array(3*T);R.__lineDistanceArray=new Float32Array(1*T);R.__webglLineCount=T;c(R,ia);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.lineDistancesNeedUpdate=!0}}else if(b instanceof THREE.ParticleSystem&&(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof
|
|
|
+THREE.Geometry){var da=n;da.__webglVertexBuffer=k.createBuffer();da.__webglColorBuffer=k.createBuffer();H.info.memory.geometries++;var ba=n,ga=b,ja=ba.vertices.length;ba.__vertexArray=new Float32Array(3*ja);ba.__colorArray=new Float32Array(3*ja);ba.__sortArray=[];ba.__webglParticleCount=ja;c(ba,ga);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,n instanceof THREE.BufferGeometry)s(l.__webglObjects,
|
|
|
+n,b);else for(m in n.geometryGroups)q=n.geometryGroups[m],s(l.__webglObjects,q,b);else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(n=b.geometry,s(l.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?l.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?l.__webglSprites.push(b):b instanceof THREE.LensFlare&&l.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,
|
|
|
+1)}for(;a.__objectsRemoved.length;){var oa=a.__objectsRemoved[0],qa=a;oa instanceof THREE.Mesh||oa instanceof THREE.ParticleSystem||oa instanceof THREE.Ribbon||oa instanceof THREE.Line?t(qa.__webglObjects,oa):oa instanceof THREE.Sprite?F(qa.__webglSprites,oa):oa instanceof THREE.LensFlare?F(qa.__webglFlares,oa):(oa instanceof THREE.ImmediateRenderObject||oa.immediateRenderCallback)&&t(qa.__webglObjectsImmediate,oa);oa.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var Ia=0,Ma=a.__webglObjects.length;Ia<
|
|
|
+Ma;Ia++){var ra=a.__webglObjects[Ia].object,V=ra.geometry,Ba=void 0,za=void 0,la=void 0;if(ra instanceof THREE.Mesh)if(V instanceof THREE.BufferGeometry)(V.verticesNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate)&&j(V,k.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.elementsNeedUpdate=!1,V.uvsNeedUpdate=!1,V.normalsNeedUpdate=!1,V.colorsNeedUpdate=!1,V.tangentsNeedUpdate=!1;else{for(var Sa=0,Ta=V.geometryGroupsList.length;Sa<Ta;Sa++)if(Ba=
|
|
|
+V.geometryGroupsList[Sa],la=e(ra,Ba),V.buffersNeedUpdate&&d(Ba,ra),za=la.attributes&&E(la),V.verticesNeedUpdate||V.morphTargetsNeedUpdate||V.elementsNeedUpdate||V.uvsNeedUpdate||V.normalsNeedUpdate||V.colorsNeedUpdate||V.tangentsNeedUpdate||za){var sa=Ba,Xa=ra,Aa=k.DYNAMIC_DRAW,vb=!V.dynamic,gb=la;if(sa.__inittedArrays){var qb=f(gb),nb=gb.vertexColors?gb.vertexColors:!1,sb=g(gb),hb=qb===THREE.SmoothShading,G=void 0,aa=void 0,Wa=void 0,U=void 0,db=void 0,Ya=void 0,Hb=void 0,rb=void 0,bb=void 0,mb=
|
|
|
+void 0,ob=void 0,W=void 0,X=void 0,Y=void 0,pa=void 0,Ib=void 0,Jb=void 0,Kb=void 0,tb=void 0,Lb=void 0,Mb=void 0,Nb=void 0,ub=void 0,Ob=void 0,Pb=void 0,Qb=void 0,wb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,Db=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Eb=void 0,va=void 0,ac=void 0,cc=void 0,kc=void 0,lc=void 0,Pa=void 0,ic=void 0,Na=void 0,Oa=void 0,dc=void 0,Yb=void 0,Ja=0,La=0,Zb=0,$b=0,zb=0,$a=0,ya=0,eb=0,Ka=0,ha=0,ka=0,y=0,wa=void 0,Qa=sa.__vertexArray,pc=sa.__uvArray,qc=sa.__uv2Array,Ab=sa.__normalArray,
|
|
|
+Ea=sa.__tangentArray,Ra=sa.__colorArray,Fa=sa.__skinIndexArray,Ga=sa.__skinWeightArray,Sc=sa.__morphTargetsArrays,Tc=sa.__morphNormalsArrays,Uc=sa.__webglCustomAttributesList,w=void 0,Xb=sa.__faceArray,pb=sa.__lineArray,jb=Xa.geometry,xc=jb.elementsNeedUpdate,oc=jb.uvsNeedUpdate,yc=jb.normalsNeedUpdate,Pc=jb.tangentsNeedUpdate,Qc=jb.colorsNeedUpdate,hd=jb.morphTargetsNeedUpdate,gc=jb.vertices,ta=sa.faces3,ua=sa.faces4,ab=jb.faces,Vc=jb.faceVertexUvs[0],Wc=jb.faceVertexUvs[1],hc=jb.skinIndices,ec=
|
|
|
+jb.skinWeights,fc=jb.morphTargets,Ac=jb.morphNormals;if(jb.verticesNeedUpdate){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=gc[U.a],X=gc[U.b],Y=gc[U.c],Qa[La]=W.x,Qa[La+1]=W.y,Qa[La+2]=W.z,Qa[La+3]=X.x,Qa[La+4]=X.y,Qa[La+5]=X.z,Qa[La+6]=Y.x,Qa[La+7]=Y.y,Qa[La+8]=Y.z,La+=9;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=gc[U.a],X=gc[U.b],Y=gc[U.c],pa=gc[U.d],Qa[La]=W.x,Qa[La+1]=W.y,Qa[La+2]=W.z,Qa[La+3]=X.x,Qa[La+4]=X.y,Qa[La+5]=X.z,Qa[La+6]=Y.x,Qa[La+7]=Y.y,Qa[La+8]=Y.z,Qa[La+9]=pa.x,Qa[La+10]=pa.y,Qa[La+
|
|
|
+11]=pa.z,La+=12;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Qa,Aa)}if(hd){Pa=0;for(ic=fc.length;Pa<ic;Pa++){G=ka=0;for(aa=ta.length;G<aa;G++)dc=ta[G],U=ab[dc],W=fc[Pa].vertices[U.a],X=fc[Pa].vertices[U.b],Y=fc[Pa].vertices[U.c],Na=Sc[Pa],Na[ka]=W.x,Na[ka+1]=W.y,Na[ka+2]=W.z,Na[ka+3]=X.x,Na[ka+4]=X.y,Na[ka+5]=X.z,Na[ka+6]=Y.x,Na[ka+7]=Y.y,Na[ka+8]=Y.z,gb.morphNormals&&(hb?(Yb=Ac[Pa].vertexNormals[dc],Lb=Yb.a,Mb=Yb.b,Nb=Yb.c):Nb=Mb=Lb=Ac[Pa].faceNormals[dc],Oa=Tc[Pa],
|
|
|
+Oa[ka]=Lb.x,Oa[ka+1]=Lb.y,Oa[ka+2]=Lb.z,Oa[ka+3]=Mb.x,Oa[ka+4]=Mb.y,Oa[ka+5]=Mb.z,Oa[ka+6]=Nb.x,Oa[ka+7]=Nb.y,Oa[ka+8]=Nb.z),ka+=9;G=0;for(aa=ua.length;G<aa;G++)dc=ua[G],U=ab[dc],W=fc[Pa].vertices[U.a],X=fc[Pa].vertices[U.b],Y=fc[Pa].vertices[U.c],pa=fc[Pa].vertices[U.d],Na=Sc[Pa],Na[ka]=W.x,Na[ka+1]=W.y,Na[ka+2]=W.z,Na[ka+3]=X.x,Na[ka+4]=X.y,Na[ka+5]=X.z,Na[ka+6]=Y.x,Na[ka+7]=Y.y,Na[ka+8]=Y.z,Na[ka+9]=pa.x,Na[ka+10]=pa.y,Na[ka+11]=pa.z,gb.morphNormals&&(hb?(Yb=Ac[Pa].vertexNormals[dc],Lb=Yb.a,Mb=
|
|
|
+Yb.b,Nb=Yb.c,ub=Yb.d):ub=Nb=Mb=Lb=Ac[Pa].faceNormals[dc],Oa=Tc[Pa],Oa[ka]=Lb.x,Oa[ka+1]=Lb.y,Oa[ka+2]=Lb.z,Oa[ka+3]=Mb.x,Oa[ka+4]=Mb.y,Oa[ka+5]=Mb.z,Oa[ka+6]=Nb.x,Oa[ka+7]=Nb.y,Oa[ka+8]=Nb.z,Oa[ka+9]=ub.x,Oa[ka+10]=ub.y,Oa[ka+11]=ub.z),ka+=12;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglMorphTargetsBuffers[Pa]);k.bufferData(k.ARRAY_BUFFER,Sc[Pa],Aa);gb.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglMorphNormalsBuffers[Pa]),k.bufferData(k.ARRAY_BUFFER,Tc[Pa],Aa))}}if(ec.length){G=0;for(aa=ta.length;G<
|
|
|
+aa;G++)U=ab[ta[G]],Rb=ec[U.a],Sb=ec[U.b],Tb=ec[U.c],Ga[ha]=Rb.x,Ga[ha+1]=Rb.y,Ga[ha+2]=Rb.z,Ga[ha+3]=Rb.w,Ga[ha+4]=Sb.x,Ga[ha+5]=Sb.y,Ga[ha+6]=Sb.z,Ga[ha+7]=Sb.w,Ga[ha+8]=Tb.x,Ga[ha+9]=Tb.y,Ga[ha+10]=Tb.z,Ga[ha+11]=Tb.w,Ub=hc[U.a],Vb=hc[U.b],Wb=hc[U.c],Fa[ha]=Ub.x,Fa[ha+1]=Ub.y,Fa[ha+2]=Ub.z,Fa[ha+3]=Ub.w,Fa[ha+4]=Vb.x,Fa[ha+5]=Vb.y,Fa[ha+6]=Vb.z,Fa[ha+7]=Vb.w,Fa[ha+8]=Wb.x,Fa[ha+9]=Wb.y,Fa[ha+10]=Wb.z,Fa[ha+11]=Wb.w,ha+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],Rb=ec[U.a],Sb=ec[U.b],Tb=ec[U.c],
|
|
|
+Db=ec[U.d],Ga[ha]=Rb.x,Ga[ha+1]=Rb.y,Ga[ha+2]=Rb.z,Ga[ha+3]=Rb.w,Ga[ha+4]=Sb.x,Ga[ha+5]=Sb.y,Ga[ha+6]=Sb.z,Ga[ha+7]=Sb.w,Ga[ha+8]=Tb.x,Ga[ha+9]=Tb.y,Ga[ha+10]=Tb.z,Ga[ha+11]=Tb.w,Ga[ha+12]=Db.x,Ga[ha+13]=Db.y,Ga[ha+14]=Db.z,Ga[ha+15]=Db.w,Ub=hc[U.a],Vb=hc[U.b],Wb=hc[U.c],Eb=hc[U.d],Fa[ha]=Ub.x,Fa[ha+1]=Ub.y,Fa[ha+2]=Ub.z,Fa[ha+3]=Ub.w,Fa[ha+4]=Vb.x,Fa[ha+5]=Vb.y,Fa[ha+6]=Vb.z,Fa[ha+7]=Vb.w,Fa[ha+8]=Wb.x,Fa[ha+9]=Wb.y,Fa[ha+10]=Wb.z,Fa[ha+11]=Wb.w,Fa[ha+12]=Eb.x,Fa[ha+13]=Eb.y,Fa[ha+14]=Eb.z,Fa[ha+
|
|
|
+15]=Eb.w,ha+=16;0<ha&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Fa,Aa),k.bindBuffer(k.ARRAY_BUFFER,sa.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,Ga,Aa))}if(Qc&&nb){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],Hb=U.vertexColors,rb=U.color,3===Hb.length&&nb===THREE.VertexColors?(Ob=Hb[0],Pb=Hb[1],Qb=Hb[2]):Qb=Pb=Ob=rb,Ra[Ka]=Ob.r,Ra[Ka+1]=Ob.g,Ra[Ka+2]=Ob.b,Ra[Ka+3]=Pb.r,Ra[Ka+4]=Pb.g,Ra[Ka+5]=Pb.b,Ra[Ka+6]=Qb.r,Ra[Ka+7]=Qb.g,Ra[Ka+8]=Qb.b,Ka+=9;G=
|
|
|
+0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],Hb=U.vertexColors,rb=U.color,4===Hb.length&&nb===THREE.VertexColors?(Ob=Hb[0],Pb=Hb[1],Qb=Hb[2],wb=Hb[3]):wb=Qb=Pb=Ob=rb,Ra[Ka]=Ob.r,Ra[Ka+1]=Ob.g,Ra[Ka+2]=Ob.b,Ra[Ka+3]=Pb.r,Ra[Ka+4]=Pb.g,Ra[Ka+5]=Pb.b,Ra[Ka+6]=Qb.r,Ra[Ka+7]=Qb.g,Ra[Ka+8]=Qb.b,Ra[Ka+9]=wb.r,Ra[Ka+10]=wb.g,Ra[Ka+11]=wb.b,Ka+=12;0<Ka&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Ra,Aa))}if(Pc&&jb.hasTangents){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],bb=U.vertexTangents,
|
|
|
+Ib=bb[0],Jb=bb[1],Kb=bb[2],Ea[ya]=Ib.x,Ea[ya+1]=Ib.y,Ea[ya+2]=Ib.z,Ea[ya+3]=Ib.w,Ea[ya+4]=Jb.x,Ea[ya+5]=Jb.y,Ea[ya+6]=Jb.z,Ea[ya+7]=Jb.w,Ea[ya+8]=Kb.x,Ea[ya+9]=Kb.y,Ea[ya+10]=Kb.z,Ea[ya+11]=Kb.w,ya+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],bb=U.vertexTangents,Ib=bb[0],Jb=bb[1],Kb=bb[2],tb=bb[3],Ea[ya]=Ib.x,Ea[ya+1]=Ib.y,Ea[ya+2]=Ib.z,Ea[ya+3]=Ib.w,Ea[ya+4]=Jb.x,Ea[ya+5]=Jb.y,Ea[ya+6]=Jb.z,Ea[ya+7]=Jb.w,Ea[ya+8]=Kb.x,Ea[ya+9]=Kb.y,Ea[ya+10]=Kb.z,Ea[ya+11]=Kb.w,Ea[ya+12]=tb.x,Ea[ya+13]=tb.y,Ea[ya+
|
|
|
+14]=tb.z,Ea[ya+15]=tb.w,ya+=16;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Ea,Aa)}if(yc&&qb){G=0;for(aa=ta.length;G<aa;G++)if(U=ab[ta[G]],db=U.vertexNormals,Ya=U.normal,3===db.length&&hb)for(va=0;3>va;va++)cc=db[va],Ab[$a]=cc.x,Ab[$a+1]=cc.y,Ab[$a+2]=cc.z,$a+=3;else for(va=0;3>va;va++)Ab[$a]=Ya.x,Ab[$a+1]=Ya.y,Ab[$a+2]=Ya.z,$a+=3;G=0;for(aa=ua.length;G<aa;G++)if(U=ab[ua[G]],db=U.vertexNormals,Ya=U.normal,4===db.length&&hb)for(va=0;4>va;va++)cc=db[va],Ab[$a]=cc.x,
|
|
|
+Ab[$a+1]=cc.y,Ab[$a+2]=cc.z,$a+=3;else for(va=0;4>va;va++)Ab[$a]=Ya.x,Ab[$a+1]=Ya.y,Ab[$a+2]=Ya.z,$a+=3;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ab,Aa)}if(oc&&Vc&&sb){G=0;for(aa=ta.length;G<aa;G++)if(Wa=ta[G],mb=Vc[Wa],void 0!==mb)for(va=0;3>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;G=0;for(aa=ua.length;G<aa;G++)if(Wa=ua[G],mb=Vc[Wa],void 0!==mb)for(va=0;4>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;0<Zb&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglUVBuffer),
|
|
|
+k.bufferData(k.ARRAY_BUFFER,pc,Aa))}if(oc&&Wc&&sb){G=0;for(aa=ta.length;G<aa;G++)if(Wa=ta[G],ob=Wc[Wa],void 0!==ob)for(va=0;3>va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;G=0;for(aa=ua.length;G<aa;G++)if(Wa=ua[G],ob=Wc[Wa],void 0!==ob)for(va=0;4>va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;0<$b&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,qc,Aa))}if(xc){G=0;for(aa=ta.length;G<aa;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+2,zb+=3,pb[eb]=Ja,pb[eb+1]=Ja+1,pb[eb+
|
|
|
+2]=Ja,pb[eb+3]=Ja+2,pb[eb+4]=Ja+1,pb[eb+5]=Ja+2,eb+=6,Ja+=3;G=0;for(aa=ua.length;G<aa;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+3,Xb[zb+3]=Ja+1,Xb[zb+4]=Ja+2,Xb[zb+5]=Ja+3,zb+=6,pb[eb]=Ja,pb[eb+1]=Ja+1,pb[eb+2]=Ja,pb[eb+3]=Ja+3,pb[eb+4]=Ja+1,pb[eb+5]=Ja+2,pb[eb+6]=Ja+2,pb[eb+7]=Ja+3,eb+=8,Ja+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Xb,Aa);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,pb,Aa)}if(Uc){va=
|
|
|
+0;for(ac=Uc.length;va<ac;va++)if(w=Uc[va],w.__original.needsUpdate){y=0;if(1===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],w.array[y]=w.value[U.a],w.array[y+1]=w.value[U.b],w.array[y+2]=w.value[U.c],y+=3;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],w.array[y]=w.value[U.a],w.array[y+1]=w.value[U.b],w.array[y+2]=w.value[U.c],w.array[y+3]=w.value[U.d],y+=4}else{if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)wa=w.value[ta[G]],w.array[y]=wa,w.array[y+
|
|
|
+1]=wa,w.array[y+2]=wa,y+=3;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],w.array[y]=wa,w.array[y+1]=wa,w.array[y+2]=wa,w.array[y+3]=wa,y+=4}}else if(2===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,y+=6;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],pa=w.value[U.d],
|
|
|
+w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,w.array[y+6]=pa.x,w.array[y+7]=pa.y,y+=8}else{if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=X=W=wa=w.value[ta[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,y+=6;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=X.x,w.array[y+3]=X.y,w.array[y+4]=Y.x,w.array[y+5]=Y.y,w.array[y+6]=pa.x,
|
|
|
+w.array[y+7]=pa.y,y+=8}}else if(3===w.size){var fa;fa="c"===w.type?["r","g","b"]:["x","y","z"];if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],
|
|
|
+Y=w.value[U.c],pa=w.value[U.d],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],w.array[y+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}else if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=X=W=wa=w.value[ta[G]],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+
|
|
|
+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],w.array[y+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}else if("faceVertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)wa=w.value[ta[G]],W=wa[0],
|
|
|
+X=wa[1],Y=wa[2],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],y+=9;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],W=wa[0],X=wa[1],Y=wa[2],pa=wa[3],w.array[y]=W[fa[0]],w.array[y+1]=W[fa[1]],w.array[y+2]=W[fa[2]],w.array[y+3]=X[fa[0]],w.array[y+4]=X[fa[1]],w.array[y+5]=X[fa[2]],w.array[y+6]=Y[fa[0]],w.array[y+7]=Y[fa[1]],w.array[y+8]=Y[fa[2]],w.array[y+
|
|
|
+9]=pa[fa[0]],w.array[y+10]=pa[fa[1]],w.array[y+11]=pa[fa[2]],y+=12}}else if(4===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)U=ab[ta[G]],W=w.value[U.a],X=w.value[U.b],Y=w.value[U.c],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)U=ab[ua[G]],W=w.value[U.a],X=w.value[U.b],
|
|
|
+Y=w.value[U.c],pa=w.value[U.d],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}else if("faces"===w.boundTo){G=0;for(aa=ta.length;G<aa;G++)Y=X=W=wa=w.value[ta[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+
|
|
|
+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)pa=Y=X=W=wa=w.value[ua[G]],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}else if("faceVertices"===w.boundTo){G=0;for(aa=ta.length;G<
|
|
|
+aa;G++)wa=w.value[ta[G]],W=wa[0],X=wa[1],Y=wa[2],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,y+=12;G=0;for(aa=ua.length;G<aa;G++)wa=w.value[ua[G]],W=wa[0],X=wa[1],Y=wa[2],pa=wa[3],w.array[y]=W.x,w.array[y+1]=W.y,w.array[y+2]=W.z,w.array[y+3]=W.w,w.array[y+4]=X.x,w.array[y+5]=X.y,w.array[y+6]=X.z,w.array[y+7]=X.w,w.array[y+8]=Y.x,w.array[y+
|
|
|
+9]=Y.y,w.array[y+10]=Y.z,w.array[y+11]=Y.w,w.array[y+12]=pa.x,w.array[y+13]=pa.y,w.array[y+14]=pa.z,w.array[y+15]=pa.w,y+=16}k.bindBuffer(k.ARRAY_BUFFER,w.buffer);k.bufferData(k.ARRAY_BUFFER,w.array,Aa)}}vb&&(delete sa.__inittedArrays,delete sa.__colorArray,delete sa.__normalArray,delete sa.__tangentArray,delete sa.__uvArray,delete sa.__uv2Array,delete sa.__faceArray,delete sa.__vertexArray,delete sa.__lineArray,delete sa.__skinIndexArray,delete sa.__skinWeightArray)}}V.verticesNeedUpdate=!1;V.morphTargetsNeedUpdate=
|
|
|
+!1;V.elementsNeedUpdate=!1;V.uvsNeedUpdate=!1;V.normalsNeedUpdate=!1;V.colorsNeedUpdate=!1;V.tangentsNeedUpdate=!1;V.buffersNeedUpdate=!1;la.attributes&&z(la)}else if(ra instanceof THREE.Ribbon){la=e(ra,V);za=la.attributes&&E(la);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.normalsNeedUpdate||za){var Bb=V,Bc=k.DYNAMIC_DRAW,rc=void 0,sc=void 0,tc=void 0,Cc=void 0,xa=void 0,Dc=void 0,Ec=void 0,Fc=void 0,Zc=void 0,Ua=void 0,mc=void 0,Ca=void 0,kb=void 0,$c=Bb.vertices,ad=Bb.colors,bd=Bb.normals,id=
|
|
|
+$c.length,jd=ad.length,kd=bd.length,Gc=Bb.__vertexArray,Hc=Bb.__colorArray,Ic=Bb.__normalArray,ld=Bb.colorsNeedUpdate,md=Bb.normalsNeedUpdate,Xc=Bb.__webglCustomAttributesList;if(Bb.verticesNeedUpdate){for(rc=0;rc<id;rc++)Cc=$c[rc],xa=3*rc,Gc[xa]=Cc.x,Gc[xa+1]=Cc.y,Gc[xa+2]=Cc.z;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Gc,Bc)}if(ld){for(sc=0;sc<jd;sc++)Dc=ad[sc],xa=3*sc,Hc[xa]=Dc.r,Hc[xa+1]=Dc.g,Hc[xa+2]=Dc.b;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglColorBuffer);
|
|
|
+k.bufferData(k.ARRAY_BUFFER,Hc,Bc)}if(md){for(tc=0;tc<kd;tc++)Ec=bd[tc],xa=3*tc,Ic[xa]=Ec.x,Ic[xa+1]=Ec.y,Ic[xa+2]=Ec.z;k.bindBuffer(k.ARRAY_BUFFER,Bb.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ic,Bc)}if(Xc){Fc=0;for(Zc=Xc.length;Fc<Zc;Fc++)if(Ca=Xc[Fc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){xa=0;mc=Ca.value.length;if(1===Ca.size)for(Ua=0;Ua<mc;Ua++)Ca.array[Ua]=Ca.value[Ua];else if(2===Ca.size)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,
|
|
|
+xa+=2;else if(3===Ca.size)if("c"===Ca.type)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.r,Ca.array[xa+1]=kb.g,Ca.array[xa+2]=kb.b,xa+=3;else for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,Ca.array[xa+2]=kb.z,xa+=3;else if(4===Ca.size)for(Ua=0;Ua<mc;Ua++)kb=Ca.value[Ua],Ca.array[xa]=kb.x,Ca.array[xa+1]=kb.y,Ca.array[xa+2]=kb.z,Ca.array[xa+3]=kb.w,xa+=4;k.bindBuffer(k.ARRAY_BUFFER,Ca.buffer);k.bufferData(k.ARRAY_BUFFER,Ca.array,Bc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=
|
|
|
+!1;V.normalsNeedUpdate=!1;la.attributes&&z(la)}else if(ra instanceof THREE.Line){la=e(ra,V);za=la.attributes&&E(la);if(V.verticesNeedUpdate||V.colorsNeedUpdate||V.lineDistancesNeedUpdate||za){var Cb=V,Jc=k.DYNAMIC_DRAW,uc=void 0,vc=void 0,wc=void 0,Kc=void 0,Ha=void 0,Lc=void 0,cd=Cb.vertices,dd=Cb.colors,ed=Cb.lineDistances,nd=cd.length,od=dd.length,pd=ed.length,Mc=Cb.__vertexArray,Nc=Cb.__colorArray,fd=Cb.__lineDistanceArray,qd=Cb.colorsNeedUpdate,rd=Cb.lineDistancesNeedUpdate,Yc=Cb.__webglCustomAttributesList,
|
|
|
+Oc=void 0,gd=void 0,Va=void 0,nc=void 0,lb=void 0,Da=void 0;if(Cb.verticesNeedUpdate){for(uc=0;uc<nd;uc++)Kc=cd[uc],Ha=3*uc,Mc[Ha]=Kc.x,Mc[Ha+1]=Kc.y,Mc[Ha+2]=Kc.z;k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Mc,Jc)}if(qd){for(vc=0;vc<od;vc++)Lc=dd[vc],Ha=3*vc,Nc[Ha]=Lc.r,Nc[Ha+1]=Lc.g,Nc[Ha+2]=Lc.b;k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Nc,Jc)}if(rd){for(wc=0;wc<pd;wc++)fd[wc]=ed[wc];k.bindBuffer(k.ARRAY_BUFFER,Cb.__webglLineDistanceBuffer);
|
|
|
+k.bufferData(k.ARRAY_BUFFER,fd,Jc)}if(Yc){Oc=0;for(gd=Yc.length;Oc<gd;Oc++)if(Da=Yc[Oc],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Ha=0;nc=Da.value.length;if(1===Da.size)for(Va=0;Va<nc;Va++)Da.array[Va]=Da.value[Va];else if(2===Da.size)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Ha+=2;else if(3===Da.size)if("c"===Da.type)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.r,Da.array[Ha+1]=lb.g,Da.array[Ha+2]=lb.b,Ha+=3;else for(Va=0;Va<nc;Va++)lb=
|
|
|
+Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Da.array[Ha+2]=lb.z,Ha+=3;else if(4===Da.size)for(Va=0;Va<nc;Va++)lb=Da.value[Va],Da.array[Ha]=lb.x,Da.array[Ha+1]=lb.y,Da.array[Ha+2]=lb.z,Da.array[Ha+3]=lb.w,Ha+=4;k.bindBuffer(k.ARRAY_BUFFER,Da.buffer);k.bufferData(k.ARRAY_BUFFER,Da.array,Jc)}}}V.verticesNeedUpdate=!1;V.colorsNeedUpdate=!1;V.lineDistancesNeedUpdate=!1;la.attributes&&z(la)}else ra instanceof THREE.ParticleSystem&&(V instanceof THREE.BufferGeometry?((V.verticesNeedUpdate||V.colorsNeedUpdate)&&
|
|
|
+j(V,k.DYNAMIC_DRAW,!V.dynamic),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1):(la=e(ra,V),za=la.attributes&&E(la),(V.verticesNeedUpdate||V.colorsNeedUpdate||ra.sortParticles||za)&&i(V,k.DYNAMIC_DRAW,ra),V.verticesNeedUpdate=!1,V.colorsNeedUpdate=!1,la.attributes&&z(la)))}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,m,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?
|
|
|
+n="lambert":a instanceof THREE.MeshPhongMaterial?n="phong":a instanceof THREE.LineBasicMaterial?n="basic":a instanceof THREE.LineDashedMaterial?n="dashed":a instanceof THREE.ParticleBasicMaterial&&(n="particle_basic");if(n){var p=THREE.ShaderLib[n];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,r,s;e=q=r=s=p=0;for(f=b.length;e<f;e++)g=b[e],g.onlyShadow||(g instanceof THREE.DirectionalLight&&q++,g instanceof THREE.PointLight&&
|
|
|
+r++,g instanceof THREE.SpotLight&&s++,g instanceof THREE.HemisphereLight&&p++);e=q;f=r;g=s;h=p;p=q=0;for(s=b.length;p<s;p++)r=b[p],r.castShadow&&(r instanceof THREE.SpotLight&&q++,r instanceof THREE.DirectionalLight&&!r.shadowCascade&&q++);m=q;Ya&&d&&d.useVertexTexture?l=1024:(b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+
|
|
|
+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),l=b);a:{r=a.fragmentShader;s=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:Ya&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,
|
|
|
+boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===
|
|
|
+THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,u,v,d=[];n?d.push(n):(d.push(r),d.push(s));for(u in q)d.push(u),d.push(q[u]);for(t in c)d.push(t),d.push(c[t]);n=d.join();t=0;for(u=ca.length;t<u;t++)if(d=ca[t],d.code===n){d.usedTimes++;j=d.program;break a}t=[];for(v in q)u=q[v],!1!==u&&(u="#define "+v+" "+u,t.push(u));u=t.join("\n");v=k.createProgram();t=["precision "+R+" float;",u,ic?"#define VERTEX_TEXTURES":"",H.gammaInput?"#define GAMMA_INPUT":"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?
|
|
|
+"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?
|
|
|
+"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
|
|
|
+"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
u=["precision "+R+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",u,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",H.gammaInput?"#define GAMMA_INPUT":"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",
|
|
|
c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
|
|
|
"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");u=C("fragment",u+r);t=C("vertex",t+s);k.attachShader(v,t);k.attachShader(v,u);k.linkProgram(v);k.getProgramParameter(v,k.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+k.getProgramParameter(v,k.VALIDATE_STATUS)+
|
|
@@ -650,7 +650,7 @@ f);b.vertexAttribPointer(A.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(A.uv,
|
|
|
h);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,D.x-8,D.y-8,16,16,0);b.uniform1i(B.renderType,0);b.uniform2f(B.scale,x.x,x.y);b.uniform3f(B.screenPosition,v.x,v.y,v.z);b.disable(b.BLEND);b.enable(b.DEPTH_TEST);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);b.activeTexture(b.TEXTURE0);b.bindTexture(b.TEXTURE_2D,i);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGBA,D.x-8,D.y-8,16,16,0);b.uniform1i(B.renderType,1);b.disable(b.DEPTH_TEST);b.activeTexture(b.TEXTURE1);b.bindTexture(b.TEXTURE_2D,h);b.drawElements(b.TRIANGLES,
|
|
|
6,b.UNSIGNED_SHORT,0);L.positionScreen.copy(v);L.customUpdateCallback?L.customUpdateCallback(L):L.updateLensFlares();b.uniform1i(B.renderType,2);b.enable(b.BLEND);P=0;for(C=L.lensFlares.length;P<C;P++)I=L.lensFlares[P],0.001<I.opacity&&0.001<I.scale&&(v.x=I.x,v.y=I.y,v.z=I.z,A=I.size*I.scale/u,x.x=A*z,x.y=A,b.uniform3f(B.screenPosition,v.x,v.y,v.z),b.uniform2f(B.scale,x.x,x.y),b.uniform1f(B.rotation,I.rotation),b.uniform1f(B.opacity,I.opacity),b.uniform3f(B.color,I.color.r,I.color.g,I.color.b),c.setBlending(I.blending,
|
|
|
I.blendEquation,I.blendSrc,I.blendDst),c.setTexture(I.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0))}b.enable(b.CULL_FACE);b.enable(b.DEPTH_TEST);b.depthMask(!0)}}};THREE.ShadowMapPlugin=function(){var a,b,c,d,e,f,g=new THREE.Frustum,h=new THREE.Matrix4,i=new THREE.Vector3,j=new THREE.Vector3;this.init=function(g){a=g.context;b=g;var g=THREE.ShaderLib.depthRGBA,h=THREE.UniformsUtils.clone(g.uniforms);c=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h});d=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0});e=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,
|
|
|
-vertexShader:g.vertexShader,uniforms:h,skinning:!0});f=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});c._shadowPass=!0;d._shadowPass=!0;e._shadowPass=!0;f._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&&this.update(a,c)};this.update=function(l,n){var m,p,q,r,u,s,E,z,t,F=[];r=0;a.clearColor(1,1,1,1);a.disable(a.BLEND);a.enable(a.CULL_FACE);a.frontFace(a.CCW);b.shadowMapCullFrontFaces?
|
|
|
+vertexShader:g.vertexShader,uniforms:h,skinning:!0});f=new THREE.ShaderMaterial({fragmentShader:g.fragmentShader,vertexShader:g.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});c._shadowPass=!0;d._shadowPass=!0;e._shadowPass=!0;f._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&&this.update(a,c)};this.update=function(l,n){var m,p,q,r,u,s,E,z,t,F=[];r=0;a.clearColor(1,1,1,1);a.disable(a.BLEND);a.enable(a.CULL_FACE);a.frontFace(a.CCW);b.shadowMaterialSide===THREE.BackSide?
|
|
|
a.cullFace(a.FRONT):a.cullFace(a.BACK);b.setDepthTest(!0);m=0;for(p=l.__lights.length;m<p;m++)if(q=l.__lights[m],q.castShadow)if(q instanceof THREE.DirectionalLight&&q.shadowCascade)for(u=0;u<q.shadowCascadeCount;u++){var A;if(q.shadowCascadeArray[u])A=q.shadowCascadeArray[u];else{t=q;E=u;A=new THREE.DirectionalLight;A.isVirtual=!0;A.onlyShadow=!0;A.castShadow=!0;A.shadowCameraNear=t.shadowCameraNear;A.shadowCameraFar=t.shadowCameraFar;A.shadowCameraLeft=t.shadowCameraLeft;A.shadowCameraRight=t.shadowCameraRight;
|
|
|
A.shadowCameraBottom=t.shadowCameraBottom;A.shadowCameraTop=t.shadowCameraTop;A.shadowCameraVisible=t.shadowCameraVisible;A.shadowDarkness=t.shadowDarkness;A.shadowBias=t.shadowCascadeBias[E];A.shadowMapWidth=t.shadowCascadeWidth[E];A.shadowMapHeight=t.shadowCascadeHeight[E];A.pointsWorld=[];A.pointsFrustum=[];z=A.pointsWorld;s=A.pointsFrustum;for(var x=0;8>x;x++)z[x]=new THREE.Vector3,s[x]=new THREE.Vector3;z=t.shadowCascadeNearZ[E];t=t.shadowCascadeFarZ[E];s[0].set(-1,-1,z);s[1].set(1,-1,z);s[2].set(-1,
|
|
|
1,z);s[3].set(1,1,z);s[4].set(-1,-1,t);s[5].set(1,-1,t);s[6].set(-1,1,t);s[7].set(1,1,t);A.originalCamera=n;s=new THREE.Gyroscope;s.position=q.shadowCascadeOffset;s.add(A);s.add(A.target);n.add(s);q.shadowCascadeArray[u]=A;console.log("Created virtualLight",A)}E=q;z=u;t=E.shadowCascadeArray[z];t.position.copy(E.position);t.target.position.copy(E.target.position);t.lookAt(t.target);t.shadowCameraVisible=E.shadowCameraVisible;t.shadowDarkness=E.shadowDarkness;t.shadowBias=E.shadowCascadeBias[z];s=E.shadowCascadeNearZ[z];
|
|
@@ -660,7 +660,7 @@ new THREE.CameraHelper(q.shadowCamera),q.shadowCamera.add(q.cameraHelper));if(q.
|
|
|
j.x;r.top=j.y;r.bottom=i.y;r.updateProjectionMatrix()}r=q.shadowMap;s=q.shadowMatrix;u=q.shadowCamera;u.position.copy(q.matrixWorld.getPosition());u.lookAt(q.target.matrixWorld.getPosition());u.updateMatrixWorld();u.matrixWorldInverse.getInverse(u.matrixWorld);q.cameraHelper&&(q.cameraHelper.visible=q.shadowCameraVisible);q.shadowCameraVisible&&q.cameraHelper.update();s.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);s.multiplySelf(u.projectionMatrix);s.multiplySelf(u.matrixWorldInverse);h.multiply(u.projectionMatrix,
|
|
|
u.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(r);b.clear();t=l.__webglObjects;q=0;for(r=t.length;q<r;q++)if(E=t[q],s=E.object,E.render=!1,s.visible&&s.castShadow&&(!(s instanceof THREE.Mesh||s instanceof THREE.ParticleSystem)||!s.frustumCulled||g.contains(s)))s._modelViewMatrix.multiply(u.matrixWorldInverse,s.matrixWorld),E.render=!0;q=0;for(r=t.length;q<r;q++)E=t[q],E.render&&(s=E.object,E=E.buffer,x=s.material instanceof THREE.MeshFaceMaterial?s.material.materials[0]:s.material,z=0<
|
|
|
s.geometry.morphTargets.length&&x.morphTargets,x=s instanceof THREE.SkinnedMesh&&x.skinning,z=s.customDepthMaterial?s.customDepthMaterial:x?z?f:e:z?d:c,E instanceof THREE.BufferGeometry?b.renderBufferDirect(u,l.__lights,null,z,E,s):b.renderBuffer(u,l.__lights,null,z,E,s));t=l.__webglObjectsImmediate;q=0;for(r=t.length;q<r;q++)E=t[q],s=E.object,s.visible&&s.castShadow&&(s._modelViewMatrix.multiply(u.matrixWorldInverse,s.matrixWorld),b.renderImmediateObject(u,l.__lights,null,c,s))}m=b.getClearColor();
|
|
|
-p=b.getClearAlpha();a.clearColor(m.r,m.g,m.b,p);a.enable(a.BLEND);b.shadowMapCullFrontFaces&&a.cullFace(a.BACK)}};THREE.ShadowMapPlugin.__projector=new THREE.Projector;THREE.SpritePlugin=function(){function a(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var b,c,d,e,f,g,h,i,j;this.init=function(a){b=a.context;c=a;d=new Float32Array(16);e=new Uint16Array(6);a=0;d[a++]=-1;d[a++]=-1;d[a++]=0;d[a++]=0;d[a++]=1;d[a++]=-1;d[a++]=1;d[a++]=0;d[a++]=1;d[a++]=1;d[a++]=1;d[a++]=1;d[a++]=-1;d[a++]=1;d[a++]=0;d[a++]=1;a=0;e[a++]=0;e[a++]=1;e[a++]=2;e[a++]=0;e[a++]=2;e[a++]=3;f=b.createBuffer();g=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,f);b.bufferData(b.ARRAY_BUFFER,d,b.STATIC_DRAW);
|
|
|
+p=b.getClearAlpha();a.clearColor(m.r,m.g,m.b,p);a.enable(a.BLEND);b.shadowMaterialSide===THREE.BackSide&&a.cullFace(a.BACK)}};THREE.ShadowMapPlugin.__projector=new THREE.Projector;THREE.SpritePlugin=function(){function a(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var b,c,d,e,f,g,h,i,j;this.init=function(a){b=a.context;c=a;d=new Float32Array(16);e=new Uint16Array(6);a=0;d[a++]=-1;d[a++]=-1;d[a++]=0;d[a++]=0;d[a++]=1;d[a++]=-1;d[a++]=1;d[a++]=0;d[a++]=1;d[a++]=1;d[a++]=1;d[a++]=1;d[a++]=-1;d[a++]=1;d[a++]=0;d[a++]=1;a=0;e[a++]=0;e[a++]=1;e[a++]=2;e[a++]=0;e[a++]=2;e[a++]=3;f=b.createBuffer();g=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,f);b.bufferData(b.ARRAY_BUFFER,d,b.STATIC_DRAW);
|
|
|
b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.bufferData(b.ELEMENT_ARRAY_BUFFER,e,b.STATIC_DRAW);var a=THREE.ShaderSprite.sprite,n=b.createProgram(),m=b.createShader(b.FRAGMENT_SHADER),p=b.createShader(b.VERTEX_SHADER);b.shaderSource(m,a.fragmentShader);b.shaderSource(p,a.vertexShader);b.compileShader(m);b.compileShader(p);b.attachShader(n,m);b.attachShader(n,p);b.linkProgram(n);h=n;i={};j={};i.position=b.getAttribLocation(h,"position");i.uv=b.getAttribLocation(h,"uv");j.uvOffset=b.getUniformLocation(h,
|
|
|
"uvOffset");j.uvScale=b.getUniformLocation(h,"uvScale");j.rotation=b.getUniformLocation(h,"rotation");j.scale=b.getUniformLocation(h,"scale");j.alignment=b.getUniformLocation(h,"alignment");j.color=b.getUniformLocation(h,"color");j.map=b.getUniformLocation(h,"map");j.opacity=b.getUniformLocation(h,"opacity");j.useScreenCoordinates=b.getUniformLocation(h,"useScreenCoordinates");j.sizeAttenuation=b.getUniformLocation(h,"sizeAttenuation");j.screenPosition=b.getUniformLocation(h,"screenPosition");j.modelViewMatrix=
|
|
|
b.getUniformLocation(h,"modelViewMatrix");j.projectionMatrix=b.getUniformLocation(h,"projectionMatrix");j.fogType=b.getUniformLocation(h,"fogType");j.fogDensity=b.getUniformLocation(h,"fogDensity");j.fogNear=b.getUniformLocation(h,"fogNear");j.fogFar=b.getUniformLocation(h,"fogFar");j.fogColor=b.getUniformLocation(h,"fogColor");j.alphaTest=b.getUniformLocation(h,"alphaTest")};this.render=function(d,e,m,p){var q=d.__webglSprites,r=q.length;if(r){var u=i,s=j,E=p/m,m=0.5*m,z=0.5*p;b.useProgram(h);b.enableVertexAttribArray(u.position);
|