|
@@ -252,93 +252,92 @@ h._array[s+1]=k[n].y,h._array[s+2]=k[n].z;j.uniform3fv(l,h._array)}else if("v4v"
|
|
|
16*n);j.uniformMatrix4fv(l,!1,h._array)}else if("t"===n){if(j.uniform1i(l,k),l=h.texture)if(l.image instanceof Array&&6===l.image.length){if(h=l,6===h.image.length)if(h.needsUpdate){if(!h.image.__webglTextureCube)h.image.__webglTextureCube=j.createTexture();j.activeTexture(j.TEXTURE0+k);j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube);k=[];for(l=0;6>l;l++){n=k;r=l;if(H.autoScaleCubemaps){if(s=h.image[l],F=Oa,!(s.width<=F&&s.height<=F))x=Math.max(s.width,s.height),t=Math.floor(s.width*
|
|
|
F/x),F=Math.floor(s.height*F/x),x=document.createElement("canvas"),x.width=t,x.height=F,x.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,t,F),s=x}else s=h.image[l];n[r]=s}l=k[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);r=B(h.format);s=B(h.type);u(j.TEXTURE_CUBE_MAP,h,n);for(l=0;6>l;l++)j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,r,r,s,k[l]);h.generateMipmaps&&n&&j.generateMipmap(j.TEXTURE_CUBE_MAP);h.needsUpdate=!1;if(h.onUpdated)h.onUpdated()}else j.activeTexture(j.TEXTURE0+
|
|
|
k),j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube)}else l instanceof THREE.WebGLRenderTargetCube?(h=l,j.activeTexture(j.TEXTURE0+k),j.bindTexture(j.TEXTURE_CUBE_MAP,h.__webglTexture)):H.setTexture(l,k)}else if("tv"===n){if(!h._array){h._array=[];for(n=0,r=h.texture.length;n<r;n++)h._array[n]=k+n}j.uniform1iv(l,h._array);for(n=0,r=h.texture.length;n<r;n++)(l=h.texture[n])&&H.setTexture(l,h._array[n])}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&
|
|
|
-null!==g.cameraPosition)b=a.matrixWorld.getPosition(),j.uniform3f(g.cameraPosition,b.x,b.y,b.z);(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==g.viewMatrix&&j.uniformMatrix4fv(g.viewMatrix,!1,a._viewMatrixArray);d.skinning&&(j.uniformMatrix4fv(g.cameraInverseMatrix,!1,a._viewMatrixArray),j.uniformMatrix4fv(g.boneGlobalMatrices,!1,f.boneMatrices))}j.uniformMatrix4fv(g.modelViewMatrix,!1,f._modelViewMatrixArray);
|
|
|
-g.normalMatrix&&j.uniformMatrix3fv(g.normalMatrix,!1,f._normalMatrixArray);(d instanceof THREE.ShaderMaterial||d.envMap||d.skinning||f.receiveShadow)&&null!==g.objectMatrix&&j.uniformMatrix4fv(g.objectMatrix,!1,f._objectMatrixArray);return e}function r(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function s(a,b,c){fa!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):
|
|
|
-j.disable(j.POLYGON_OFFSET_FILL),fa=a);if(a&&(Ra!==b||na!==c))j.polygonOffset(b,c),Ra=b,na=c}function t(a,b){var c;"fragment"===a?c=j.createShader(j.FRAGMENT_SHADER):"vertex"===a&&(c=j.createShader(j.VERTEX_SHADER));j.shaderSource(c,b);j.compileShader(c);return!j.getShaderParameter(c,j.COMPILE_STATUS)?(console.error(j.getShaderInfoLog(c)),console.error(b),null):c}function u(a,b,c){c?(j.texParameteri(a,j.TEXTURE_WRAP_S,B(b.wrapS)),j.texParameteri(a,j.TEXTURE_WRAP_T,B(b.wrapT)),j.texParameteri(a,j.TEXTURE_MAG_FILTER,
|
|
|
-B(b.magFilter)),j.texParameteri(a,j.TEXTURE_MIN_FILTER,B(b.minFilter))):(j.texParameteri(a,j.TEXTURE_WRAP_S,j.CLAMP_TO_EDGE),j.texParameteri(a,j.TEXTURE_WRAP_T,j.CLAMP_TO_EDGE),j.texParameteri(a,j.TEXTURE_MAG_FILTER,v(b.magFilter)),j.texParameteri(a,j.TEXTURE_MIN_FILTER,v(b.minFilter)))}function x(a,b){j.bindRenderbuffer(j.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_COMPONENT16,b.width,b.height),j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,
|
|
|
-j.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_STENCIL,b.width,b.height),j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a)):j.renderbufferStorage(j.RENDERBUFFER,j.RGBA4,b.width,b.height)}function v(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return j.NEAREST;default:return j.LINEAR}}function B(a){switch(a){case THREE.RepeatWrapping:return j.REPEAT;
|
|
|
-case THREE.ClampToEdgeWrapping:return j.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return j.MIRRORED_REPEAT;case THREE.NearestFilter:return j.NEAREST;case THREE.NearestMipMapNearestFilter:return j.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return j.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return j.LINEAR;case THREE.LinearMipMapNearestFilter:return j.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return j.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return j.BYTE;
|
|
|
-case THREE.UnsignedByteType:return j.UNSIGNED_BYTE;case THREE.ShortType:return j.SHORT;case THREE.UnsignedShortType:return j.UNSIGNED_SHORT;case THREE.IntType:return j.INT;case THREE.UnsignedShortType:return j.UNSIGNED_INT;case THREE.FloatType:return j.FLOAT;case THREE.AlphaFormat:return j.ALPHA;case THREE.RGBFormat:return j.RGB;case THREE.RGBAFormat:return j.RGBA;case THREE.LuminanceFormat:return j.LUMINANCE;case THREE.LuminanceAlphaFormat:return j.LUMINANCE_ALPHA}return 0}var a=a||{},D=void 0!==
|
|
|
-a.canvas?a.canvas:document.createElement("canvas"),C=void 0!==a.precision?a.precision:"mediump",A=void 0!==a.alpha?a.alpha:!0,E=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,J=void 0!==a.antialias?a.antialias:!1,N=void 0!==a.stencil?a.stencil:!0,Y=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,K=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),O=void 0!==a.clearAlpha?a.clearAlpha:0,M=void 0!==a.maxLights?a.maxLights:4;this.domElement=D;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.maxMorphTargets=8;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,j,X=[],y=null,F=null,P=-1,Q=null,ca=null,ga=0,ba=null,T=null,aa=null,S=null,$=null,fa=null,Ra=null,na=null,Ja=null,Ea=0,Aa=0,ja=0,ab=0,kb=0,db=0,Xa=new THREE.Frustum,Ya=new THREE.Matrix4,Qa=new THREE.Vector4,Fa=new THREE.Vector3,xa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};j=function(){var a;try{if(!(a=D.getContext("experimental-webgl",{alpha:A,premultipliedAlpha:E,antialias:J,stencil:N,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";
|
|
|
-console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+" | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(K.r,K.g,K.b,O);this.context=
|
|
|
-j;var ya=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);j.getParameter(j.MAX_TEXTURE_SIZE);var Oa=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE);this.getContext=function(){return j};this.supportsVertexTextures=function(){return 0<ya};this.setSize=function(a,b){D.width=a;D.height=b;this.setViewport(0,0,D.width,D.height)};this.setViewport=function(a,b,c,d){Ea=a;Aa=b;ja=c;ab=d;j.viewport(Ea,Aa,ja,ab)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):
|
|
|
-j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){K.setHex(a);O=b;j.clearColor(K.r,K.g,K.b,O)};this.setClearColor=function(a,b){K.copy(a);O=b;j.clearColor(K.r,K.g,K.b,O)};this.getClearColor=function(){return K};this.getClearAlpha=function(){return O};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=j.COLOR_BUFFER_BIT;if(void 0===b||b)d|=j.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=j.STENCIL_BUFFER_BIT;j.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,
|
|
|
-c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];j.deleteBuffer(c.__webglVertexBuffer);j.deleteBuffer(c.__webglNormalBuffer);
|
|
|
-j.deleteBuffer(c.__webglTangentBuffer);j.deleteBuffer(c.__webglColorBuffer);j.deleteBuffer(c.__webglUVBuffer);j.deleteBuffer(c.__webglUV2Buffer);j.deleteBuffer(c.__webglSkinVertexABuffer);j.deleteBuffer(c.__webglSkinVertexBBuffer);j.deleteBuffer(c.__webglSkinIndicesBuffer);j.deleteBuffer(c.__webglSkinWeightsBuffer);j.deleteBuffer(c.__webglFaceBuffer);j.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,f=c.numMorphTargets;d<f;d++)j.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d=
|
|
|
-void 0,c.__webglCustomAttributesList)j.deleteBuffer(c.__webglCustomAttributesList[d].buffer);H.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),
|
|
|
-j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,j.deleteTexture(a.__webglTexture),H.info.memory.textures--};this.updateShadowMap=function(a,b){y=null;P=Q=$=S=aa=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=j.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=j.createBuffer();a.hasPos&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer),
|
|
|
-j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.position),j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,!1,0,0));if(a.hasNormal){j.bindBuffer(j.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,f,e,g,h,i,m,k,l,n,o=3*a.count;for(n=0;n<o;n+=9)c=a.normalArray,d=c[n],f=c[n+1],e=c[n+2],g=c[n+3],i=c[n+4],k=c[n+5],h=c[n+6],m=c[n+7],l=c[n+8],d=(d+g+h)/3,f=(f+i+m)/3,e=(e+k+l)/3,c[n]=d,c[n+1]=f,c[n+2]=e,c[n+3]=d,c[n+4]=f,c[n+5]=e,
|
|
|
-c[n+6]=d,c[n+7]=f,c[n+8]=e}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,3,j.FLOAT,!1,0,0)}j.drawArrays(j.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,e){if(0!==d.opacity&&(c=m(a,b,c,d,e),a=c.attributes,b=!1,d=16777215*f.id+2*c.id+(d.wireframe?1:0),d!==Q&&(Q=d,b=!0),e instanceof THREE.Mesh)){e=f.offsets;d=0;for(c=e.length;d<c;++d)b&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexPositionBuffer),
|
|
|
-j.vertexAttribPointer(a.position,f.vertexPositionBuffer.itemSize,j.FLOAT,!1,0,12*e[d].index),0<=a.normal&&f.vertexNormalBuffer&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexNormalBuffer),j.vertexAttribPointer(a.normal,f.vertexNormalBuffer.itemSize,j.FLOAT,!1,0,12*e[d].index)),0<=a.uv&&f.vertexUvBuffer&&(f.vertexUvBuffer?(j.bindBuffer(j.ARRAY_BUFFER,f.vertexUvBuffer),j.vertexAttribPointer(a.uv,f.vertexUvBuffer.itemSize,j.FLOAT,!1,0,8*e[d].index),j.enableVertexAttribArray(a.uv)):j.disableVertexAttribArray(a.uv)),
|
|
|
-0<=a.color&&f.vertexColorBuffer&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexColorBuffer),j.vertexAttribPointer(a.color,f.vertexColorBuffer.itemSize,j.FLOAT,!1,0,16*e[d].index)),j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.vertexIndexBuffer)),j.drawElements(j.TRIANGLES,e[d].count,j.UNSIGNED_SHORT,2*e[d].start),H.info.render.calls++,H.info.render.vertices+=e[d].count,H.info.render.faces+=e[d].count/3}};this.renderBuffer=function(a,b,c,d,f,e){if(0!==d.opacity){var g,h,c=m(a,b,c,d,e),b=c.attributes,a=!1,c=16777215*
|
|
|
-f.id+2*c.id+(d.wireframe?1:0);c!==Q&&(Q=c,a=!0);if(!d.morphTargets&&0<=b.position)a&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglVertexBuffer),j.vertexAttribPointer(b.position,3,j.FLOAT,!1,0,0));else if(e.morphTargetBase){c=d.program.attributes;-1!==e.morphTargetBase?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[e.morphTargetBase]),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0)):0<=c.position&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglVertexBuffer),j.vertexAttribPointer(c.position,3,j.FLOAT,
|
|
|
-!1,0,0));if(e.morphTargetForcedOrder.length){g=0;var i=e.morphTargetForcedOrder;for(h=e.morphTargetInfluences;g<d.numSupportedMorphTargets&&g<i.length;)j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[i[g]]),j.vertexAttribPointer(c["morphTarget"+g],3,j.FLOAT,!1,0,0),e.__webglMorphTargetInfluences[g]=h[i[g]],g++}else{var i=[],k=-1,l=0;h=e.morphTargetInfluences;var n,o=h.length;g=0;for(-1!==e.morphTargetBase&&(i[e.morphTargetBase]=!0);g<d.numSupportedMorphTargets;){for(n=0;n<o;n++)!i[n]&&h[n]>
|
|
|
-k&&(l=n,k=h[l]);j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[l]);j.vertexAttribPointer(c["morphTarget"+g],3,j.FLOAT,!1,0,0);e.__webglMorphTargetInfluences[g]=k;i[l]=1;k=-1;g++}}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,e.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList)for(g=0,h=f.__webglCustomAttributesList.length;g<h;g++)c=f.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-c.buffer),j.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,j.FLOAT,!1,0,0));0<=b.color&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglColorBuffer),j.vertexAttribPointer(b.color,3,j.FLOAT,!1,0,0));0<=b.normal&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglNormalBuffer),j.vertexAttribPointer(b.normal,3,j.FLOAT,!1,0,0));0<=b.tangent&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglTangentBuffer),j.vertexAttribPointer(b.tangent,4,j.FLOAT,!1,0,0));0<=b.uv&&(f.__webglUVBuffer?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglUVBuffer),
|
|
|
-j.vertexAttribPointer(b.uv,2,j.FLOAT,!1,0,0),j.enableVertexAttribArray(b.uv)):j.disableVertexAttribArray(b.uv));0<=b.uv2&&(f.__webglUV2Buffer?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglUV2Buffer),j.vertexAttribPointer(b.uv2,2,j.FLOAT,!1,0,0),j.enableVertexAttribArray(b.uv2)):j.disableVertexAttribArray(b.uv2));d.skinning&&0<=b.skinVertexA&&0<=b.skinVertexB&&0<=b.skinIndex&&0<=b.skinWeight&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinVertexABuffer),j.vertexAttribPointer(b.skinVertexA,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-f.__webglSkinVertexBBuffer),j.vertexAttribPointer(b.skinVertexB,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),j.vertexAttribPointer(b.skinWeight,4,j.FLOAT,!1,0,0))}e instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==Ja&&(j.lineWidth(d),Ja=d),a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),j.drawElements(j.LINES,f.__webglLineCount,j.UNSIGNED_SHORT,
|
|
|
-0)):(a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),j.drawElements(j.TRIANGLES,f.__webglFaceCount,j.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=f.__webglFaceCount,H.info.render.faces+=f.__webglFaceCount/3):e instanceof THREE.Line?(e=e.type===THREE.LineStrip?j.LINE_STRIP:j.LINES,d=d.linewidth,d!==Ja&&(j.lineWidth(d),Ja=d),j.drawArrays(e,0,f.__webglLineCount),H.info.render.calls++):e instanceof THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,f.__webglParticleCount),H.info.render.calls++,
|
|
|
-H.info.render.points+=f.__webglParticleCount):e instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,f.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){var f,g,m,l,n=a.lights,o=a.fog;P=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);void 0===b.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();h(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=
|
|
|
-0;H.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Ya.multiply(b.projectionMatrix,b.matrixWorldInverse);Xa.setFromMatrix(Ya);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
|
|
|
-l=a.__webglObjects;for(d=0,f=l.length;d<f;d++)if(g=l[d],m=g.object,g.render=!1,m.visible&&(!(m instanceof THREE.Mesh||m instanceof THREE.ParticleSystem)||!m.frustumCulled||Xa.contains(m))){m.matrixWorld.flattenToArray(m._objectMatrixArray);r(m,b);var p=g,q=p.object,F=p.buffer,t=void 0,t=t=void 0,t=q.material;if(t instanceof THREE.MeshFaceMaterial){if(t=F.materialIndex,0<=t)t=q.geometry.materials[t],t.transparent?(p.transparent=t,p.opaque=null):(p.opaque=t,p.transparent=null)}else if(t)t.transparent?
|
|
|
-(p.transparent=t,p.opaque=null):(p.opaque=t,p.transparent=null);g.render=!0;if(this.sortObjects)m.renderDepth?g.z=m.renderDepth:(Qa.copy(m.position),Ya.multiplyVector3(Qa),g.z=Qa.z)}this.sortObjects&&l.sort(e);l=a.__webglObjectsImmediate;for(d=0,f=l.length;d<f;d++)if(g=l[d],m=g.object,m.visible)m.matrixAutoUpdate&&m.matrixWorld.flattenToArray(m._objectMatrixArray),r(m,b),m=g.object.material,m.transparent?(g.transparent=m,g.opaque=null):(g.opaque=m,g.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending),
|
|
|
-this.setDepthTest(a.overrideMaterial.depthTest),this.setDepthWrite(a.overrideMaterial.depthWrite),s(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),i(a.__webglObjects,!1,"",b,n,o,!0,a.overrideMaterial),k(a.__webglObjectsImmediate,"",b,n,o,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),i(a.__webglObjects,!0,"opaque",b,n,o,!1),k(a.__webglObjectsImmediate,"opaque",b,n,o,!1),i(a.__webglObjects,!1,"transparent",b,n,o,!0),k(a.__webglObjectsImmediate,
|
|
|
-"transparent",b,n,o,!0));h(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture),j.generateMipmap(j.TEXTURE_CUBE_MAP),j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)};this.renderImmediateObject=
|
|
|
-function(a,b,c,d,f){var e=m(a,b,c,d,f);Q=-1;H.setObjectFaces(f);f.immediateRenderCallback?f.immediateRenderCallback(e,j,Xa):f.render(function(a){H.renderBufferImmediate(a,e,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var e=a.__objectsAdded[0],h=a,i=void 0,m=void 0,k=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=
|
|
|
-new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh){if(m=e.geometry,m instanceof THREE.Geometry){if(void 0===m.geometryGroups){var r=m,s=void 0,t=void 0,F=void 0,x=void 0,P=void 0,u=void 0,v=void 0,y={},Q=r.morphTargets.length;r.geometryGroups={};for(s=0,t=r.faces.length;s<t;s++)F=r.faces[s],x=F.materialIndex,u=void 0!==x?x:-1,void 0===y[u]&&(y[u]={hash:u,counter:0}),
|
|
|
-v=y[u].hash+"_"+y[u].counter,void 0===r.geometryGroups[v]&&(r.geometryGroups[v]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:Q}),P=F instanceof THREE.Face3?3:4,65535<r.geometryGroups[v].vertices+P&&(y[u].counter+=1,v=y[u].hash+"_"+y[u].counter,void 0===r.geometryGroups[v]&&(r.geometryGroups[v]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:Q})),F instanceof THREE.Face3?r.geometryGroups[v].faces3.push(s):r.geometryGroups[v].faces4.push(s),r.geometryGroups[v].vertices+=
|
|
|
-P;r.geometryGroupsList=[];var C=void 0;for(C in r.geometryGroups)r.geometryGroups[C].id=ga++,r.geometryGroupsList.push(r.geometryGroups[C])}for(i in m.geometryGroups)if(k=m.geometryGroups[i],!k.__webglVertexBuffer){var A=k;A.__webglVertexBuffer=j.createBuffer();A.__webglNormalBuffer=j.createBuffer();A.__webglTangentBuffer=j.createBuffer();A.__webglColorBuffer=j.createBuffer();A.__webglUVBuffer=j.createBuffer();A.__webglUV2Buffer=j.createBuffer();A.__webglSkinVertexABuffer=j.createBuffer();A.__webglSkinVertexBBuffer=
|
|
|
-j.createBuffer();A.__webglSkinIndicesBuffer=j.createBuffer();A.__webglSkinWeightsBuffer=j.createBuffer();A.__webglFaceBuffer=j.createBuffer();A.__webglLineBuffer=j.createBuffer();if(A.numMorphTargets){var B=void 0,D=void 0;A.__webglMorphTargetsBuffers=[];for(B=0,D=A.numMorphTargets;B<D;B++)A.__webglMorphTargetsBuffers.push(j.createBuffer())}H.info.memory.geometries++;var E=k,M=e,K=M.geometry,J=E.faces3,ca=E.faces4,T=3*J.length+4*ca.length,ba=1*J.length+2*ca.length,N=3*J.length+4*ca.length,S=c(M,E),
|
|
|
-aa=f(S),$=d(S),O=S.vertexColors?S.vertexColors:!1;E.__vertexArray=new Float32Array(3*T);if($)E.__normalArray=new Float32Array(3*T);if(K.hasTangents)E.__tangentArray=new Float32Array(4*T);if(O)E.__colorArray=new Float32Array(3*T);if(aa){if(0<K.faceUvs.length||0<K.faceVertexUvs.length)E.__uvArray=new Float32Array(2*T);if(1<K.faceUvs.length||1<K.faceVertexUvs.length)E.__uv2Array=new Float32Array(2*T)}if(M.geometry.skinWeights.length&&M.geometry.skinIndices.length)E.__skinVertexAArray=new Float32Array(4*
|
|
|
-T),E.__skinVertexBArray=new Float32Array(4*T),E.__skinIndexArray=new Float32Array(4*T),E.__skinWeightArray=new Float32Array(4*T);E.__faceArray=new Uint16Array(3*ba);E.__lineArray=new Uint16Array(2*N);if(E.numMorphTargets){E.__morphTargetsArrays=[];for(var fa=0,Y=E.numMorphTargets;fa<Y;fa++)E.__morphTargetsArrays.push(new Float32Array(3*T))}E.__webglFaceCount=3*ba;E.__webglLineCount=2*N;if(S.attributes){if(void 0===E.__webglCustomAttributesList)E.__webglCustomAttributesList=[];var X=void 0;for(X in S.attributes){var Ra=
|
|
|
-S.attributes[X],na={},Ja;for(Ja in Ra)na[Ja]=Ra[Ja];if(!na.__webglInitialized||na.createUniqueBuffers){na.__webglInitialized=!0;var ja=1;"v2"===na.type?ja=2:"v3"===na.type?ja=3:"v4"===na.type?ja=4:"c"===na.type&&(ja=3);na.size=ja;na.array=new Float32Array(T*ja);na.buffer=j.createBuffer();na.buffer.belongsToAttribute=X;Ra.needsUpdate=!0;na.__original=Ra}E.__webglCustomAttributesList.push(na)}}E.__inittedArrays=!0;m.__dirtyVertices=!0;m.__dirtyMorphTargets=!0;m.__dirtyElements=!0;m.__dirtyUvs=!0;m.__dirtyNormals=
|
|
|
-!0;m.__dirtyTangents=!0;m.__dirtyColors=!0}}}else if(e instanceof THREE.Ribbon){if(m=e.geometry,!m.__webglVertexBuffer){var Aa=m;Aa.__webglVertexBuffer=j.createBuffer();Aa.__webglColorBuffer=j.createBuffer();H.info.memory.geometries++;var Ea=m,xa=Ea.vertices.length;Ea.__vertexArray=new Float32Array(3*xa);Ea.__colorArray=new Float32Array(3*xa);Ea.__webglVertexCount=xa;m.__dirtyVertices=!0;m.__dirtyColors=!0}}else if(e instanceof THREE.Line){if(m=e.geometry,!m.__webglVertexBuffer){var ya=m;ya.__webglVertexBuffer=
|
|
|
-j.createBuffer();ya.__webglColorBuffer=j.createBuffer();H.info.memory.geometries++;var Fa=m,Oa=e,ab=Fa.vertices.length;Fa.__vertexArray=new Float32Array(3*ab);Fa.__colorArray=new Float32Array(3*ab);Fa.__webglLineCount=ab;b(Fa,Oa);m.__dirtyVertices=!0;m.__dirtyColors=!0}}else if(e instanceof THREE.ParticleSystem&&(m=e.geometry,!m.__webglVertexBuffer)){var Ya=m;Ya.__webglVertexBuffer=j.createBuffer();Ya.__webglColorBuffer=j.createBuffer();H.info.geometries++;var Qa=m,kb=e,db=Qa.vertices.length;Qa.__vertexArray=
|
|
|
-new Float32Array(3*db);Qa.__colorArray=new Float32Array(3*db);Qa.__sortArray=[];Qa.__webglParticleCount=db;b(Qa,kb);m.__dirtyVertices=!0;m.__dirtyColors=!0}if(!e.__webglActive){if(e instanceof THREE.Mesh)if(m=e.geometry,m instanceof THREE.BufferGeometry)l(h.__webglObjects,m,e);else for(i in m.geometryGroups)k=m.geometryGroups[i],l(h.__webglObjects,k,e);else e instanceof THREE.Ribbon||e instanceof THREE.Line||e instanceof THREE.ParticleSystem?(m=e.geometry,l(h.__webglObjects,m,e)):void 0!==THREE.MarchingCubes&&
|
|
|
-e instanceof THREE.MarchingCubes||e.immediateRenderCallback?h.__webglObjectsImmediate.push({object:e,opaque:null,transparent:null}):e instanceof THREE.Sprite?h.__webglSprites.push(e):e instanceof THREE.LensFlare&&h.__webglFlares.push(e);e.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fb=a.__objectsRemoved[0],Xa=a;fb instanceof THREE.Mesh||fb instanceof THREE.ParticleSystem||fb instanceof THREE.Ribbon||fb instanceof THREE.Line?o(Xa.__webglObjects,fb):fb instanceof
|
|
|
-THREE.Sprite?q(Xa.__webglSprites,fb):fb instanceof THREE.LensFlare?q(Xa.__webglFlares,fb):(fb instanceof THREE.MarchingCubes||fb.immediateRenderCallback)&&o(Xa.__webglObjectsImmediate,fb);fb.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var Mc=0,hd=a.__webglObjects.length;Mc<hd;Mc++){var mb=a.__webglObjects[Mc].object,ia=mb.geometry,jc=void 0,bc=void 0,Va=void 0;if(mb instanceof THREE.Mesh)if(ia instanceof THREE.BufferGeometry)ia.__dirtyVertices=!1,ia.__dirtyElements=!1,ia.__dirtyUvs=!1,ia.__dirtyNormals=
|
|
|
-!1,ia.__dirtyColors=!1;else{for(var Nc=0,id=ia.geometryGroupsList.length;Nc<id;Nc++)if(jc=ia.geometryGroupsList[Nc],Va=c(mb,jc),bc=Va.attributes&&p(Va),ia.__dirtyVertices||ia.__dirtyMorphTargets||ia.__dirtyElements||ia.__dirtyUvs||ia.__dirtyNormals||ia.__dirtyColors||ia.__dirtyTangents||bc){var da=jc,jd=mb,bb=j.DYNAMIC_DRAW,kd=!ia.dynamic,xc=Va;if(da.__inittedArrays){var Wc=d(xc),Oc=xc.vertexColors?xc.vertexColors:!1,Xc=f(xc),Yc=Wc===THREE.SmoothShading,G=void 0,R=void 0,jb=void 0,L=void 0,cc=void 0,
|
|
|
-Jb=void 0,nb=void 0,yc=void 0,Db=void 0,dc=void 0,ec=void 0,U=void 0,V=void 0,W=void 0,oa=void 0,ob=void 0,pb=void 0,qb=void 0,kc=void 0,rb=void 0,sb=void 0,tb=void 0,lc=void 0,ub=void 0,vb=void 0,wb=void 0,mc=void 0,xb=void 0,yb=void 0,zb=void 0,nc=void 0,Kb=void 0,Lb=void 0,Mb=void 0,zc=void 0,Nb=void 0,Ob=void 0,Pb=void 0,Ac=void 0,ka=void 0,Zc=void 0,Qb=void 0,fc=void 0,gc=void 0,cb=void 0,$c=void 0,Ia=void 0,za=0,Ga=0,Eb=0,Fb=0,gb=0,Pa=0,pa=0,Sa=0,Ba=0,I=0,Ca=0,z=0,Za=void 0,Ka=da.__vertexArray,
|
|
|
-oc=da.__uvArray,pc=da.__uv2Array,hb=da.__normalArray,ra=da.__tangentArray,La=da.__colorArray,sa=da.__skinVertexAArray,ta=da.__skinVertexBArray,ua=da.__skinIndexArray,va=da.__skinWeightArray,Pc=da.__morphTargetsArrays,Qc=da.__webglCustomAttributesList,w=void 0,Ab=da.__faceArray,$a=da.__lineArray,Ta=jd.geometry,ld=Ta.__dirtyElements,ad=Ta.__dirtyUvs,md=Ta.__dirtyNormals,nd=Ta.__dirtyTangents,od=Ta.__dirtyColors,pd=Ta.__dirtyMorphTargets,Wb=Ta.vertices,la=da.faces3,ma=da.faces4,Da=Ta.faces,Rc=Ta.faceVertexUvs[0],
|
|
|
-Sc=Ta.faceVertexUvs[1],Xb=Ta.skinVerticesA,Yb=Ta.skinVerticesB,Zb=Ta.skinIndices,Rb=Ta.skinWeights,Sb=Ta.morphTargets;if(Ta.__dirtyVertices){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=Wb[L.a].position,V=Wb[L.b].position,W=Wb[L.c].position,Ka[Ga]=U.x,Ka[Ga+1]=U.y,Ka[Ga+2]=U.z,Ka[Ga+3]=V.x,Ka[Ga+4]=V.y,Ka[Ga+5]=V.z,Ka[Ga+6]=W.x,Ka[Ga+7]=W.y,Ka[Ga+8]=W.z,Ga+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=Wb[L.a].position,V=Wb[L.b].position,W=Wb[L.c].position,oa=Wb[L.d].position,Ka[Ga]=U.x,Ka[Ga+1]=U.y,Ka[Ga+
|
|
|
-2]=U.z,Ka[Ga+3]=V.x,Ka[Ga+4]=V.y,Ka[Ga+5]=V.z,Ka[Ga+6]=W.x,Ka[Ga+7]=W.y,Ka[Ga+8]=W.z,Ka[Ga+9]=oa.x,Ka[Ga+10]=oa.y,Ka[Ga+11]=oa.z,Ga+=12;j.bindBuffer(j.ARRAY_BUFFER,da.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Ka,bb)}if(pd)for(cb=0,$c=Sb.length;cb<$c;cb++){Ca=0;for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=Sb[cb].vertices[L.a].position,V=Sb[cb].vertices[L.b].position,W=Sb[cb].vertices[L.c].position,Ia=Pc[cb],Ia[Ca]=U.x,Ia[Ca+1]=U.y,Ia[Ca+2]=U.z,Ia[Ca+3]=V.x,Ia[Ca+4]=V.y,Ia[Ca+5]=V.z,Ia[Ca+6]=W.x,
|
|
|
-Ia[Ca+7]=W.y,Ia[Ca+8]=W.z,Ca+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=Sb[cb].vertices[L.a].position,V=Sb[cb].vertices[L.b].position,W=Sb[cb].vertices[L.c].position,oa=Sb[cb].vertices[L.d].position,Ia=Pc[cb],Ia[Ca]=U.x,Ia[Ca+1]=U.y,Ia[Ca+2]=U.z,Ia[Ca+3]=V.x,Ia[Ca+4]=V.y,Ia[Ca+5]=V.z,Ia[Ca+6]=W.x,Ia[Ca+7]=W.y,Ia[Ca+8]=W.z,Ia[Ca+9]=oa.x,Ia[Ca+10]=oa.y,Ia[Ca+11]=oa.z,Ca+=12;j.bindBuffer(j.ARRAY_BUFFER,da.__webglMorphTargetsBuffers[cb]);j.bufferData(j.ARRAY_BUFFER,Pc[cb],bb)}if(Rb.length){for(G=0,
|
|
|
-R=la.length;G<R;G++)L=Da[la[G]],ub=Rb[L.a],vb=Rb[L.b],wb=Rb[L.c],va[I]=ub.x,va[I+1]=ub.y,va[I+2]=ub.z,va[I+3]=ub.w,va[I+4]=vb.x,va[I+5]=vb.y,va[I+6]=vb.z,va[I+7]=vb.w,va[I+8]=wb.x,va[I+9]=wb.y,va[I+10]=wb.z,va[I+11]=wb.w,xb=Zb[L.a],yb=Zb[L.b],zb=Zb[L.c],ua[I]=xb.x,ua[I+1]=xb.y,ua[I+2]=xb.z,ua[I+3]=xb.w,ua[I+4]=yb.x,ua[I+5]=yb.y,ua[I+6]=yb.z,ua[I+7]=yb.w,ua[I+8]=zb.x,ua[I+9]=zb.y,ua[I+10]=zb.z,ua[I+11]=zb.w,Kb=Xb[L.a],Lb=Xb[L.b],Mb=Xb[L.c],sa[I]=Kb.x,sa[I+1]=Kb.y,sa[I+2]=Kb.z,sa[I+3]=1,sa[I+4]=Lb.x,
|
|
|
-sa[I+5]=Lb.y,sa[I+6]=Lb.z,sa[I+7]=1,sa[I+8]=Mb.x,sa[I+9]=Mb.y,sa[I+10]=Mb.z,sa[I+11]=1,Nb=Yb[L.a],Ob=Yb[L.b],Pb=Yb[L.c],ta[I]=Nb.x,ta[I+1]=Nb.y,ta[I+2]=Nb.z,ta[I+3]=1,ta[I+4]=Ob.x,ta[I+5]=Ob.y,ta[I+6]=Ob.z,ta[I+7]=1,ta[I+8]=Pb.x,ta[I+9]=Pb.y,ta[I+10]=Pb.z,ta[I+11]=1,I+=12;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],ub=Rb[L.a],vb=Rb[L.b],wb=Rb[L.c],mc=Rb[L.d],va[I]=ub.x,va[I+1]=ub.y,va[I+2]=ub.z,va[I+3]=ub.w,va[I+4]=vb.x,va[I+5]=vb.y,va[I+6]=vb.z,va[I+7]=vb.w,va[I+8]=wb.x,va[I+9]=wb.y,va[I+10]=wb.z,va[I+
|
|
|
-11]=wb.w,va[I+12]=mc.x,va[I+13]=mc.y,va[I+14]=mc.z,va[I+15]=mc.w,xb=Zb[L.a],yb=Zb[L.b],zb=Zb[L.c],nc=Zb[L.d],ua[I]=xb.x,ua[I+1]=xb.y,ua[I+2]=xb.z,ua[I+3]=xb.w,ua[I+4]=yb.x,ua[I+5]=yb.y,ua[I+6]=yb.z,ua[I+7]=yb.w,ua[I+8]=zb.x,ua[I+9]=zb.y,ua[I+10]=zb.z,ua[I+11]=zb.w,ua[I+12]=nc.x,ua[I+13]=nc.y,ua[I+14]=nc.z,ua[I+15]=nc.w,Kb=Xb[L.a],Lb=Xb[L.b],Mb=Xb[L.c],zc=Xb[L.d],sa[I]=Kb.x,sa[I+1]=Kb.y,sa[I+2]=Kb.z,sa[I+3]=1,sa[I+4]=Lb.x,sa[I+5]=Lb.y,sa[I+6]=Lb.z,sa[I+7]=1,sa[I+8]=Mb.x,sa[I+9]=Mb.y,sa[I+10]=Mb.z,
|
|
|
-sa[I+11]=1,sa[I+12]=zc.x,sa[I+13]=zc.y,sa[I+14]=zc.z,sa[I+15]=1,Nb=Yb[L.a],Ob=Yb[L.b],Pb=Yb[L.c],Ac=Yb[L.d],ta[I]=Nb.x,ta[I+1]=Nb.y,ta[I+2]=Nb.z,ta[I+3]=1,ta[I+4]=Ob.x,ta[I+5]=Ob.y,ta[I+6]=Ob.z,ta[I+7]=1,ta[I+8]=Pb.x,ta[I+9]=Pb.y,ta[I+10]=Pb.z,ta[I+11]=1,ta[I+12]=Ac.x,ta[I+13]=Ac.y,ta[I+14]=Ac.z,ta[I+15]=1,I+=16;0<I&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexABuffer),j.bufferData(j.ARRAY_BUFFER,sa,bb),j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexBBuffer),j.bufferData(j.ARRAY_BUFFER,ta,bb),
|
|
|
-j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,ua,bb),j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,va,bb))}if(od&&Oc){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],nb=L.vertexColors,yc=L.color,3===nb.length&&Oc===THREE.VertexColors?(rb=nb[0],sb=nb[1],tb=nb[2]):tb=sb=rb=yc,La[Ba]=rb.r,La[Ba+1]=rb.g,La[Ba+2]=rb.b,La[Ba+3]=sb.r,La[Ba+4]=sb.g,La[Ba+5]=sb.b,La[Ba+6]=tb.r,La[Ba+7]=tb.g,La[Ba+8]=tb.b,Ba+=9;for(G=0,R=ma.length;G<R;G++)L=
|
|
|
-Da[ma[G]],nb=L.vertexColors,yc=L.color,4===nb.length&&Oc===THREE.VertexColors?(rb=nb[0],sb=nb[1],tb=nb[2],lc=nb[3]):lc=tb=sb=rb=yc,La[Ba]=rb.r,La[Ba+1]=rb.g,La[Ba+2]=rb.b,La[Ba+3]=sb.r,La[Ba+4]=sb.g,La[Ba+5]=sb.b,La[Ba+6]=tb.r,La[Ba+7]=tb.g,La[Ba+8]=tb.b,La[Ba+9]=lc.r,La[Ba+10]=lc.g,La[Ba+11]=lc.b,Ba+=12;0<Ba&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,La,bb))}if(nd&&Ta.hasTangents){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],Db=L.vertexTangents,ob=Db[0],pb=Db[1],
|
|
|
-qb=Db[2],ra[pa]=ob.x,ra[pa+1]=ob.y,ra[pa+2]=ob.z,ra[pa+3]=ob.w,ra[pa+4]=pb.x,ra[pa+5]=pb.y,ra[pa+6]=pb.z,ra[pa+7]=pb.w,ra[pa+8]=qb.x,ra[pa+9]=qb.y,ra[pa+10]=qb.z,ra[pa+11]=qb.w,pa+=12;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],Db=L.vertexTangents,ob=Db[0],pb=Db[1],qb=Db[2],kc=Db[3],ra[pa]=ob.x,ra[pa+1]=ob.y,ra[pa+2]=ob.z,ra[pa+3]=ob.w,ra[pa+4]=pb.x,ra[pa+5]=pb.y,ra[pa+6]=pb.z,ra[pa+7]=pb.w,ra[pa+8]=qb.x,ra[pa+9]=qb.y,ra[pa+10]=qb.z,ra[pa+11]=qb.w,ra[pa+12]=kc.x,ra[pa+13]=kc.y,ra[pa+14]=kc.z,ra[pa+15]=
|
|
|
-kc.w,pa+=16;j.bindBuffer(j.ARRAY_BUFFER,da.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,ra,bb)}if(md&&Wc){for(G=0,R=la.length;G<R;G++)if(L=Da[la[G]],cc=L.vertexNormals,Jb=L.normal,3===cc.length&&Yc)for(ka=0;3>ka;ka++)Qb=cc[ka],hb[Pa]=Qb.x,hb[Pa+1]=Qb.y,hb[Pa+2]=Qb.z,Pa+=3;else for(ka=0;3>ka;ka++)hb[Pa]=Jb.x,hb[Pa+1]=Jb.y,hb[Pa+2]=Jb.z,Pa+=3;for(G=0,R=ma.length;G<R;G++)if(L=Da[ma[G]],cc=L.vertexNormals,Jb=L.normal,4===cc.length&&Yc)for(ka=0;4>ka;ka++)Qb=cc[ka],hb[Pa]=Qb.x,hb[Pa+1]=Qb.y,hb[Pa+
|
|
|
-2]=Qb.z,Pa+=3;else for(ka=0;4>ka;ka++)hb[Pa]=Jb.x,hb[Pa+1]=Jb.y,hb[Pa+2]=Jb.z,Pa+=3;j.bindBuffer(j.ARRAY_BUFFER,da.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,hb,bb)}if(ad&&Rc&&Xc){for(G=0,R=la.length;G<R;G++)if(jb=la[G],L=Da[jb],dc=Rc[jb],void 0!==dc)for(ka=0;3>ka;ka++)fc=dc[ka],oc[Eb]=fc.u,oc[Eb+1]=fc.v,Eb+=2;for(G=0,R=ma.length;G<R;G++)if(jb=ma[G],L=Da[jb],dc=Rc[jb],void 0!==dc)for(ka=0;4>ka;ka++)fc=dc[ka],oc[Eb]=fc.u,oc[Eb+1]=fc.v,Eb+=2;0<Eb&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglUVBuffer),
|
|
|
-j.bufferData(j.ARRAY_BUFFER,oc,bb))}if(ad&&Sc&&Xc){for(G=0,R=la.length;G<R;G++)if(jb=la[G],L=Da[jb],ec=Sc[jb],void 0!==ec)for(ka=0;3>ka;ka++)gc=ec[ka],pc[Fb]=gc.u,pc[Fb+1]=gc.v,Fb+=2;for(G=0,R=ma.length;G<R;G++)if(jb=ma[G],L=Da[jb],ec=Sc[jb],void 0!==ec)for(ka=0;4>ka;ka++)gc=ec[ka],pc[Fb]=gc.u,pc[Fb+1]=gc.v,Fb+=2;0<Fb&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,pc,bb))}if(ld){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],Ab[gb]=za,Ab[gb+1]=za+1,Ab[gb+2]=za+2,gb+=3,$a[Sa]=
|
|
|
-za,$a[Sa+1]=za+1,$a[Sa+2]=za,$a[Sa+3]=za+2,$a[Sa+4]=za+1,$a[Sa+5]=za+2,Sa+=6,za+=3;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],Ab[gb]=za,Ab[gb+1]=za+1,Ab[gb+2]=za+3,Ab[gb+3]=za+1,Ab[gb+4]=za+2,Ab[gb+5]=za+3,gb+=6,$a[Sa]=za,$a[Sa+1]=za+1,$a[Sa+2]=za,$a[Sa+3]=za+3,$a[Sa+4]=za+1,$a[Sa+5]=za+2,$a[Sa+6]=za+2,$a[Sa+7]=za+3,Sa+=8,za+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Ab,bb);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,
|
|
|
-$a,bb)}if(Qc)for(ka=0,Zc=Qc.length;ka<Zc;ka++)if(w=Qc[ka],w.__original.needsUpdate){z=0;if(1===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],w.array[z]=w.value[L.a],w.array[z+1]=w.value[L.b],w.array[z+2]=w.value[L.c],z+=3;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],w.array[z]=w.value[L.a],w.array[z+1]=w.value[L.b],w.array[z+2]=w.value[L.c],w.array[z+3]=w.value[L.d],z+=4}else{if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)Za=w.value[la[G]],w.array[z]=
|
|
|
-Za,w.array[z+1]=Za,w.array[z+2]=Za,z+=3;for(G=0,R=ma.length;G<R;G++)Za=w.value[ma[G]],w.array[z]=Za,w.array[z+1]=Za,w.array[z+2]=Za,w.array[z+3]=Za,z+=4}}else if(2===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,z+=6;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],oa=w.value[L.d],
|
|
|
-w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,w.array[z+6]=oa.x,w.array[z+7]=oa.y,z+=8}else{if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,z+=6;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,w.array[z+6]=oa.x,w.array[z+
|
|
|
-7]=oa.y,z+=8}}else if(3===w.size){var ea;ea="c"===w.type?["r","g","b"]:["x","y","z"];if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],z+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],
|
|
|
-oa=w.value[L.d],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],w.array[z+9]=oa[ea[0]],w.array[z+10]=oa[ea[1]],w.array[z+11]=oa[ea[2]],z+=12}else if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+
|
|
|
-6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],z+=9;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],w.array[z+9]=oa[ea[0]],w.array[z+10]=oa[ea[1]],w.array[z+11]=oa[ea[2]],z+=12}}else if(4===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],
|
|
|
-V=w.value[L.b],W=w.value[L.c],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,z+=12;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],oa=w.value[L.d],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+
|
|
|
-9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,w.array[z+12]=oa.x,w.array[z+13]=oa.y,w.array[z+14]=oa.z,w.array[z+15]=oa.w,z+=16}else if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,z+=12;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U.x,w.array[z+1]=U.y,
|
|
|
-w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,w.array[z+12]=oa.x,w.array[z+13]=oa.y,w.array[z+14]=oa.z,w.array[z+15]=oa.w,z+=16}j.bindBuffer(j.ARRAY_BUFFER,w.buffer);j.bufferData(j.ARRAY_BUFFER,w.array,bb)}kd&&(delete da.__inittedArrays,delete da.__colorArray,delete da.__normalArray,delete da.__tangentArray,delete da.__uvArray,delete da.__uv2Array,delete da.__faceArray,delete da.__vertexArray,
|
|
|
-delete da.__lineArray,delete da.__skinVertexAArray,delete da.__skinVertexBArray,delete da.__skinIndexArray,delete da.__skinWeightArray)}}ia.__dirtyVertices=!1;ia.__dirtyMorphTargets=!1;ia.__dirtyElements=!1;ia.__dirtyUvs=!1;ia.__dirtyNormals=!1;ia.__dirtyColors=!1;ia.__dirtyTangents=!1;Va.attributes&&n(Va)}else if(mb instanceof THREE.Ribbon){if(ia.__dirtyVertices||ia.__dirtyColors){var Tb=ia,bd=j.DYNAMIC_DRAW,qc=void 0,rc=void 0,Bc=void 0,Ub=void 0,Cc=void 0,cd=Tb.vertices,dd=Tb.colors,qd=cd.length,
|
|
|
-rd=dd.length,Dc=Tb.__vertexArray,Ec=Tb.__colorArray,sd=Tb.__dirtyColors;if(Tb.__dirtyVertices){for(qc=0;qc<qd;qc++)Bc=cd[qc].position,Ub=3*qc,Dc[Ub]=Bc.x,Dc[Ub+1]=Bc.y,Dc[Ub+2]=Bc.z;j.bindBuffer(j.ARRAY_BUFFER,Tb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Dc,bd)}if(sd){for(rc=0;rc<rd;rc++)Cc=dd[rc],Ub=3*rc,Ec[Ub]=Cc.r,Ec[Ub+1]=Cc.g,Ec[Ub+2]=Cc.b;j.bindBuffer(j.ARRAY_BUFFER,Tb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Ec,bd)}}ia.__dirtyVertices=!1;ia.__dirtyColors=!1}else if(mb instanceof
|
|
|
-THREE.Line){Va=c(mb,jc);bc=Va.attributes&&p(Va);if(ia.__dirtyVertices||ia.__dirtyColors||bc){var Gb=ia,Tc=j.DYNAMIC_DRAW,sc=void 0,tc=void 0,Fc=void 0,wa=void 0,Gc=void 0,ed=Gb.vertices,fd=Gb.colors,td=ed.length,ud=fd.length,Hc=Gb.__vertexArray,Ic=Gb.__colorArray,vd=Gb.__dirtyColors,Uc=Gb.__webglCustomAttributesList,Jc=void 0,gd=void 0,Na=void 0,hc=void 0,Wa=void 0,qa=void 0;if(Gb.__dirtyVertices){for(sc=0;sc<td;sc++)Fc=ed[sc].position,wa=3*sc,Hc[wa]=Fc.x,Hc[wa+1]=Fc.y,Hc[wa+2]=Fc.z;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-Gb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Hc,Tc)}if(vd){for(tc=0;tc<ud;tc++)Gc=fd[tc],wa=3*tc,Ic[wa]=Gc.r,Ic[wa+1]=Gc.g,Ic[wa+2]=Gc.b;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Ic,Tc)}if(Uc)for(Jc=0,gd=Uc.length;Jc<gd;Jc++)if(qa=Uc[Jc],qa.needsUpdate&&(void 0===qa.boundTo||"vertices"===qa.boundTo)){wa=0;hc=qa.value.length;if(1===qa.size)for(Na=0;Na<hc;Na++)qa.array[Na]=qa.value[Na];else if(2===qa.size)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,
|
|
|
-qa.array[wa+1]=Wa.y,wa+=2;else if(3===qa.size)if("c"===qa.type)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.r,qa.array[wa+1]=Wa.g,qa.array[wa+2]=Wa.b,wa+=3;else for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,qa.array[wa+1]=Wa.y,qa.array[wa+2]=Wa.z,wa+=3;else if(4===qa.size)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,qa.array[wa+1]=Wa.y,qa.array[wa+2]=Wa.z,qa.array[wa+3]=Wa.w,wa+=4;j.bindBuffer(j.ARRAY_BUFFER,qa.buffer);j.bufferData(j.ARRAY_BUFFER,qa.array,Tc)}}ia.__dirtyVertices=
|
|
|
-!1;ia.__dirtyColors=!1;Va.attributes&&n(Va)}else if(mb instanceof THREE.ParticleSystem)Va=c(mb,jc),bc=Va.attributes&&p(Va),(ia.__dirtyVertices||ia.__dirtyColors||mb.sortParticles||bc)&&g(ia,j.DYNAMIC_DRAW,mb),ia.__dirtyVertices=!1,ia.__dirtyColors=!1,Va.attributes&&n(Va)}};this.initMaterial=function(a,b,c,d){var f,e,g,h,i;a instanceof THREE.MeshDepthMaterial?i="depth":a instanceof THREE.MeshNormalMaterial?i="normal":a instanceof THREE.MeshBasicMaterial?i="basic":a instanceof THREE.MeshLambertMaterial?
|
|
|
-i="lambert":a instanceof THREE.MeshPhongMaterial?i="phong":a instanceof THREE.LineBasicMaterial?i="basic":a instanceof THREE.ParticleBasicMaterial&&(i="particle_basic");if(i){var m=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(m.uniforms);a.vertexShader=m.vertexShader;a.fragmentShader=m.fragmentShader}var k,l;e=m=0;for(k=0,l=b.length;k<l;k++)f=b[k],f.onlyShadow||(f instanceof THREE.DirectionalLight&&e++,f instanceof THREE.PointLight&&m++,f instanceof THREE.SpotLight&&m++);m+e<=M?k=e:(k=
|
|
|
-Math.ceil(M*e/(m+e)),m=M-k);f=k;e=m;var n=0;for(m=0,k=b.length;m<k;m++)l=b[m],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight)&&n++;var o=50;if(void 0!==d&&d instanceof THREE.SkinnedMesh)o=d.bones.length;var p;a:{k=a.fragmentShader;l=a.vertexShader;var m=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,
|
|
|
-maxDirLights:f,maxPointLights:e,maxBones:o,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,maxShadows:n,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround},q,d=[];i?d.push(i):(d.push(k),d.push(l));for(q in c)d.push(q),d.push(c[q]);i=d.join();for(q=0,d=X.length;q<d;q++)if(X[q].code===i){p=X[q].program;break a}q=j.createProgram();d=[0<ya?"#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_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":
|
|
|
-"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\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;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+null!==g.cameraPosition)b=a.matrixWorld.getPosition(),j.uniform3f(g.cameraPosition,b.x,b.y,b.z);(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==g.viewMatrix&&j.uniformMatrix4fv(g.viewMatrix,!1,a._viewMatrixArray);d.skinning&&j.uniformMatrix4fv(g.boneGlobalMatrices,!1,f.boneMatrices)}j.uniformMatrix4fv(g.modelViewMatrix,!1,f._modelViewMatrixArray);g.normalMatrix&&j.uniformMatrix3fv(g.normalMatrix,!1,f._normalMatrixArray);
|
|
|
+(d instanceof THREE.ShaderMaterial||d.envMap||d.skinning||f.receiveShadow)&&null!==g.objectMatrix&&j.uniformMatrix4fv(g.objectMatrix,!1,f._objectMatrixArray);return e}function r(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function s(a,b,c){fa!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),fa=a);if(a&&(Ra!==b||na!==c))j.polygonOffset(b,
|
|
|
+c),Ra=b,na=c}function t(a,b){var c;"fragment"===a?c=j.createShader(j.FRAGMENT_SHADER):"vertex"===a&&(c=j.createShader(j.VERTEX_SHADER));j.shaderSource(c,b);j.compileShader(c);return!j.getShaderParameter(c,j.COMPILE_STATUS)?(console.error(j.getShaderInfoLog(c)),console.error(b),null):c}function u(a,b,c){c?(j.texParameteri(a,j.TEXTURE_WRAP_S,B(b.wrapS)),j.texParameteri(a,j.TEXTURE_WRAP_T,B(b.wrapT)),j.texParameteri(a,j.TEXTURE_MAG_FILTER,B(b.magFilter)),j.texParameteri(a,j.TEXTURE_MIN_FILTER,B(b.minFilter))):
|
|
|
+(j.texParameteri(a,j.TEXTURE_WRAP_S,j.CLAMP_TO_EDGE),j.texParameteri(a,j.TEXTURE_WRAP_T,j.CLAMP_TO_EDGE),j.texParameteri(a,j.TEXTURE_MAG_FILTER,v(b.magFilter)),j.texParameteri(a,j.TEXTURE_MIN_FILTER,v(b.minFilter)))}function x(a,b){j.bindRenderbuffer(j.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_COMPONENT16,b.width,b.height),j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(j.renderbufferStorage(j.RENDERBUFFER,
|
|
|
+j.DEPTH_STENCIL,b.width,b.height),j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a)):j.renderbufferStorage(j.RENDERBUFFER,j.RGBA4,b.width,b.height)}function v(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return j.NEAREST;default:return j.LINEAR}}function B(a){switch(a){case THREE.RepeatWrapping:return j.REPEAT;case THREE.ClampToEdgeWrapping:return j.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return j.MIRRORED_REPEAT;
|
|
|
+case THREE.NearestFilter:return j.NEAREST;case THREE.NearestMipMapNearestFilter:return j.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return j.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return j.LINEAR;case THREE.LinearMipMapNearestFilter:return j.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return j.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return j.BYTE;case THREE.UnsignedByteType:return j.UNSIGNED_BYTE;case THREE.ShortType:return j.SHORT;case THREE.UnsignedShortType:return j.UNSIGNED_SHORT;
|
|
|
+case THREE.IntType:return j.INT;case THREE.UnsignedShortType:return j.UNSIGNED_INT;case THREE.FloatType:return j.FLOAT;case THREE.AlphaFormat:return j.ALPHA;case THREE.RGBFormat:return j.RGB;case THREE.RGBAFormat:return j.RGBA;case THREE.LuminanceFormat:return j.LUMINANCE;case THREE.LuminanceAlphaFormat:return j.LUMINANCE_ALPHA}return 0}var a=a||{},D=void 0!==a.canvas?a.canvas:document.createElement("canvas"),C=void 0!==a.precision?a.precision:"mediump",A=void 0!==a.alpha?a.alpha:!0,E=void 0!==a.premultipliedAlpha?
|
|
|
+a.premultipliedAlpha:!0,J=void 0!==a.antialias?a.antialias:!1,N=void 0!==a.stencil?a.stencil:!0,Y=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,K=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),O=void 0!==a.clearAlpha?a.clearAlpha:0,M=void 0!==a.maxLights?a.maxLights:4;this.domElement=D;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.maxMorphTargets=8;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,j,X=[],y=null,F=null,P=-1,Q=null,ca=null,ga=0,ba=null,T=null,aa=null,S=null,$=null,fa=null,Ra=null,na=null,Ja=null,Ea=0,Aa=0,ja=0,ab=0,kb=0,db=0,Xa=new THREE.Frustum,
|
|
|
+Ya=new THREE.Matrix4,Qa=new THREE.Vector4,Fa=new THREE.Vector3,xa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};j=function(){var a;try{if(!(a=D.getContext("experimental-webgl",{alpha:A,premultipliedAlpha:E,antialias:J,stencil:N,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+" | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();
|
|
|
+j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(K.r,K.g,K.b,O);this.context=j;var ya=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);j.getParameter(j.MAX_TEXTURE_SIZE);var Oa=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE);this.getContext=function(){return j};this.supportsVertexTextures=
|
|
|
+function(){return 0<ya};this.setSize=function(a,b){D.width=a;D.height=b;this.setViewport(0,0,D.width,D.height)};this.setViewport=function(a,b,c,d){Ea=a;Aa=b;ja=c;ab=d;j.viewport(Ea,Aa,ja,ab)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){K.setHex(a);O=b;j.clearColor(K.r,K.g,K.b,O)};this.setClearColor=function(a,b){K.copy(a);O=b;j.clearColor(K.r,K.g,K.b,O)};this.getClearColor=
|
|
|
+function(){return K};this.getClearAlpha=function(){return O};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=j.COLOR_BUFFER_BIT;if(void 0===b||b)d|=j.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=j.STENCIL_BUFFER_BIT;j.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=
|
|
|
+!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];j.deleteBuffer(c.__webglVertexBuffer);j.deleteBuffer(c.__webglNormalBuffer);j.deleteBuffer(c.__webglTangentBuffer);j.deleteBuffer(c.__webglColorBuffer);j.deleteBuffer(c.__webglUVBuffer);j.deleteBuffer(c.__webglUV2Buffer);j.deleteBuffer(c.__webglSkinVertexABuffer);j.deleteBuffer(c.__webglSkinVertexBBuffer);
|
|
|
+j.deleteBuffer(c.__webglSkinIndicesBuffer);j.deleteBuffer(c.__webglSkinWeightsBuffer);j.deleteBuffer(c.__webglFaceBuffer);j.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,f=c.numMorphTargets;d<f;d++)j.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d=void 0,c.__webglCustomAttributesList)j.deleteBuffer(c.__webglCustomAttributesList[d].buffer);H.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),
|
|
|
+j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,j.deleteBuffer(a.__webglVertexBuffer),j.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,j.deleteTexture(a.__webglTexture),H.info.memory.textures--};this.updateShadowMap=
|
|
|
+function(a,b){y=null;P=Q=$=S=aa=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=j.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=j.createBuffer();a.hasPos&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.position),j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,!1,0,0));if(a.hasNormal){j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,f,e,g,h,i,m,k,l,n,o=3*a.count;for(n=0;n<o;n+=9)c=a.normalArray,d=c[n],f=c[n+1],e=c[n+2],g=c[n+3],i=c[n+4],k=c[n+5],h=c[n+6],m=c[n+7],l=c[n+8],d=(d+g+h)/3,f=(f+i+m)/3,e=(e+k+l)/3,c[n]=d,c[n+1]=f,c[n+2]=e,c[n+3]=d,c[n+4]=f,c[n+5]=e,c[n+6]=d,c[n+7]=f,c[n+8]=e}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,3,j.FLOAT,!1,0,0)}j.drawArrays(j.TRIANGLES,
|
|
|
+0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,e){if(0!==d.opacity&&(c=m(a,b,c,d,e),a=c.attributes,b=!1,d=16777215*f.id+2*c.id+(d.wireframe?1:0),d!==Q&&(Q=d,b=!0),e instanceof THREE.Mesh)){e=f.offsets;d=0;for(c=e.length;d<c;++d)b&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexPositionBuffer),j.vertexAttribPointer(a.position,f.vertexPositionBuffer.itemSize,j.FLOAT,!1,0,12*e[d].index),0<=a.normal&&f.vertexNormalBuffer&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexNormalBuffer),j.vertexAttribPointer(a.normal,
|
|
|
+f.vertexNormalBuffer.itemSize,j.FLOAT,!1,0,12*e[d].index)),0<=a.uv&&f.vertexUvBuffer&&(f.vertexUvBuffer?(j.bindBuffer(j.ARRAY_BUFFER,f.vertexUvBuffer),j.vertexAttribPointer(a.uv,f.vertexUvBuffer.itemSize,j.FLOAT,!1,0,8*e[d].index),j.enableVertexAttribArray(a.uv)):j.disableVertexAttribArray(a.uv)),0<=a.color&&f.vertexColorBuffer&&(j.bindBuffer(j.ARRAY_BUFFER,f.vertexColorBuffer),j.vertexAttribPointer(a.color,f.vertexColorBuffer.itemSize,j.FLOAT,!1,0,16*e[d].index)),j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,
|
|
|
+f.vertexIndexBuffer)),j.drawElements(j.TRIANGLES,e[d].count,j.UNSIGNED_SHORT,2*e[d].start),H.info.render.calls++,H.info.render.vertices+=e[d].count,H.info.render.faces+=e[d].count/3}};this.renderBuffer=function(a,b,c,d,f,e){if(0!==d.opacity){var g,h,c=m(a,b,c,d,e),b=c.attributes,a=!1,c=16777215*f.id+2*c.id+(d.wireframe?1:0);c!==Q&&(Q=c,a=!0);if(!d.morphTargets&&0<=b.position)a&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglVertexBuffer),j.vertexAttribPointer(b.position,3,j.FLOAT,!1,0,0));else if(e.morphTargetBase){c=
|
|
|
+d.program.attributes;-1!==e.morphTargetBase?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[e.morphTargetBase]),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0)):0<=c.position&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglVertexBuffer),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0));if(e.morphTargetForcedOrder.length){g=0;var i=e.morphTargetForcedOrder;for(h=e.morphTargetInfluences;g<d.numSupportedMorphTargets&&g<i.length;)j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[i[g]]),j.vertexAttribPointer(c["morphTarget"+
|
|
|
+g],3,j.FLOAT,!1,0,0),e.__webglMorphTargetInfluences[g]=h[i[g]],g++}else{var i=[],k=-1,l=0;h=e.morphTargetInfluences;var n,o=h.length;g=0;for(-1!==e.morphTargetBase&&(i[e.morphTargetBase]=!0);g<d.numSupportedMorphTargets;){for(n=0;n<o;n++)!i[n]&&h[n]>k&&(l=n,k=h[l]);j.bindBuffer(j.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[l]);j.vertexAttribPointer(c["morphTarget"+g],3,j.FLOAT,!1,0,0);e.__webglMorphTargetInfluences[g]=k;i[l]=1;k=-1;g++}}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,
|
|
|
+e.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList)for(g=0,h=f.__webglCustomAttributesList.length;g<h;g++)c=f.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(j.bindBuffer(j.ARRAY_BUFFER,c.buffer),j.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,j.FLOAT,!1,0,0));0<=b.color&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglColorBuffer),j.vertexAttribPointer(b.color,3,j.FLOAT,!1,0,0));0<=b.normal&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglNormalBuffer),j.vertexAttribPointer(b.normal,
|
|
|
+3,j.FLOAT,!1,0,0));0<=b.tangent&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglTangentBuffer),j.vertexAttribPointer(b.tangent,4,j.FLOAT,!1,0,0));0<=b.uv&&(f.__webglUVBuffer?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglUVBuffer),j.vertexAttribPointer(b.uv,2,j.FLOAT,!1,0,0),j.enableVertexAttribArray(b.uv)):j.disableVertexAttribArray(b.uv));0<=b.uv2&&(f.__webglUV2Buffer?(j.bindBuffer(j.ARRAY_BUFFER,f.__webglUV2Buffer),j.vertexAttribPointer(b.uv2,2,j.FLOAT,!1,0,0),j.enableVertexAttribArray(b.uv2)):j.disableVertexAttribArray(b.uv2));
|
|
|
+d.skinning&&0<=b.skinVertexA&&0<=b.skinVertexB&&0<=b.skinIndex&&0<=b.skinWeight&&(j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinVertexABuffer),j.vertexAttribPointer(b.skinVertexA,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinVertexBBuffer),j.vertexAttribPointer(b.skinVertexB,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),j.vertexAttribPointer(b.skinWeight,
|
|
|
+4,j.FLOAT,!1,0,0))}e instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==Ja&&(j.lineWidth(d),Ja=d),a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),j.drawElements(j.LINES,f.__webglLineCount,j.UNSIGNED_SHORT,0)):(a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),j.drawElements(j.TRIANGLES,f.__webglFaceCount,j.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=f.__webglFaceCount,H.info.render.faces+=f.__webglFaceCount/3):e instanceof THREE.Line?(e=e.type===
|
|
|
+THREE.LineStrip?j.LINE_STRIP:j.LINES,d=d.linewidth,d!==Ja&&(j.lineWidth(d),Ja=d),j.drawArrays(e,0,f.__webglLineCount),H.info.render.calls++):e instanceof THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,f.__webglParticleCount),H.info.render.calls++,H.info.render.points+=f.__webglParticleCount):e instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,f.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){var f,g,m,l,n=a.lights,o=a.fog;P=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);
|
|
|
+void 0===b.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();h(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);
|
|
|
+b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Ya.multiply(b.projectionMatrix,b.matrixWorldInverse);Xa.setFromMatrix(Ya);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);l=a.__webglObjects;for(d=0,f=l.length;d<f;d++)if(g=l[d],m=g.object,g.render=!1,m.visible&&(!(m instanceof THREE.Mesh||m instanceof THREE.ParticleSystem)||!m.frustumCulled||Xa.contains(m))){m.matrixWorld.flattenToArray(m._objectMatrixArray);r(m,b);var p=
|
|
|
+g,q=p.object,F=p.buffer,t=void 0,t=t=void 0,t=q.material;if(t instanceof THREE.MeshFaceMaterial){if(t=F.materialIndex,0<=t)t=q.geometry.materials[t],t.transparent?(p.transparent=t,p.opaque=null):(p.opaque=t,p.transparent=null)}else if(t)t.transparent?(p.transparent=t,p.opaque=null):(p.opaque=t,p.transparent=null);g.render=!0;if(this.sortObjects)m.renderDepth?g.z=m.renderDepth:(Qa.copy(m.position),Ya.multiplyVector3(Qa),g.z=Qa.z)}this.sortObjects&&l.sort(e);l=a.__webglObjectsImmediate;for(d=0,f=l.length;d<
|
|
|
+f;d++)if(g=l[d],m=g.object,m.visible)m.matrixAutoUpdate&&m.matrixWorld.flattenToArray(m._objectMatrixArray),r(m,b),m=g.object.material,m.transparent?(g.transparent=m,g.opaque=null):(g.opaque=m,g.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending),this.setDepthTest(a.overrideMaterial.depthTest),this.setDepthWrite(a.overrideMaterial.depthWrite),s(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),i(a.__webglObjects,
|
|
|
+!1,"",b,n,o,!0,a.overrideMaterial),k(a.__webglObjectsImmediate,"",b,n,o,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),i(a.__webglObjects,!0,"opaque",b,n,o,!1),k(a.__webglObjectsImmediate,"opaque",b,n,o,!1),i(a.__webglObjects,!1,"transparent",b,n,o,!0),k(a.__webglObjectsImmediate,"transparent",b,n,o,!0));h(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(j.bindTexture(j.TEXTURE_CUBE_MAP,
|
|
|
+c.__webglTexture),j.generateMipmap(j.TEXTURE_CUBE_MAP),j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)};this.renderImmediateObject=function(a,b,c,d,f){var e=m(a,b,c,d,f);Q=-1;H.setObjectFaces(f);f.immediateRenderCallback?f.immediateRenderCallback(e,j,Xa):f.render(function(a){H.renderBufferImmediate(a,e,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=
|
|
|
+[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var e=a.__objectsAdded[0],h=a,i=void 0,m=void 0,k=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh){if(m=e.geometry,m instanceof THREE.Geometry){if(void 0===m.geometryGroups){var r=
|
|
|
+m,s=void 0,t=void 0,F=void 0,x=void 0,P=void 0,u=void 0,v=void 0,y={},Q=r.morphTargets.length;r.geometryGroups={};for(s=0,t=r.faces.length;s<t;s++)F=r.faces[s],x=F.materialIndex,u=void 0!==x?x:-1,void 0===y[u]&&(y[u]={hash:u,counter:0}),v=y[u].hash+"_"+y[u].counter,void 0===r.geometryGroups[v]&&(r.geometryGroups[v]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:Q}),P=F instanceof THREE.Face3?3:4,65535<r.geometryGroups[v].vertices+P&&(y[u].counter+=1,v=y[u].hash+"_"+y[u].counter,void 0===
|
|
|
+r.geometryGroups[v]&&(r.geometryGroups[v]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:Q})),F instanceof THREE.Face3?r.geometryGroups[v].faces3.push(s):r.geometryGroups[v].faces4.push(s),r.geometryGroups[v].vertices+=P;r.geometryGroupsList=[];var C=void 0;for(C in r.geometryGroups)r.geometryGroups[C].id=ga++,r.geometryGroupsList.push(r.geometryGroups[C])}for(i in m.geometryGroups)if(k=m.geometryGroups[i],!k.__webglVertexBuffer){var A=k;A.__webglVertexBuffer=j.createBuffer();A.__webglNormalBuffer=
|
|
|
+j.createBuffer();A.__webglTangentBuffer=j.createBuffer();A.__webglColorBuffer=j.createBuffer();A.__webglUVBuffer=j.createBuffer();A.__webglUV2Buffer=j.createBuffer();A.__webglSkinVertexABuffer=j.createBuffer();A.__webglSkinVertexBBuffer=j.createBuffer();A.__webglSkinIndicesBuffer=j.createBuffer();A.__webglSkinWeightsBuffer=j.createBuffer();A.__webglFaceBuffer=j.createBuffer();A.__webglLineBuffer=j.createBuffer();if(A.numMorphTargets){var B=void 0,D=void 0;A.__webglMorphTargetsBuffers=[];for(B=0,D=
|
|
|
+A.numMorphTargets;B<D;B++)A.__webglMorphTargetsBuffers.push(j.createBuffer())}H.info.memory.geometries++;var E=k,M=e,K=M.geometry,J=E.faces3,ca=E.faces4,T=3*J.length+4*ca.length,ba=1*J.length+2*ca.length,N=3*J.length+4*ca.length,S=c(M,E),aa=f(S),$=d(S),O=S.vertexColors?S.vertexColors:!1;E.__vertexArray=new Float32Array(3*T);if($)E.__normalArray=new Float32Array(3*T);if(K.hasTangents)E.__tangentArray=new Float32Array(4*T);if(O)E.__colorArray=new Float32Array(3*T);if(aa){if(0<K.faceUvs.length||0<K.faceVertexUvs.length)E.__uvArray=
|
|
|
+new Float32Array(2*T);if(1<K.faceUvs.length||1<K.faceVertexUvs.length)E.__uv2Array=new Float32Array(2*T)}if(M.geometry.skinWeights.length&&M.geometry.skinIndices.length)E.__skinVertexAArray=new Float32Array(4*T),E.__skinVertexBArray=new Float32Array(4*T),E.__skinIndexArray=new Float32Array(4*T),E.__skinWeightArray=new Float32Array(4*T);E.__faceArray=new Uint16Array(3*ba);E.__lineArray=new Uint16Array(2*N);if(E.numMorphTargets){E.__morphTargetsArrays=[];for(var fa=0,Y=E.numMorphTargets;fa<Y;fa++)E.__morphTargetsArrays.push(new Float32Array(3*
|
|
|
+T))}E.__webglFaceCount=3*ba;E.__webglLineCount=2*N;if(S.attributes){if(void 0===E.__webglCustomAttributesList)E.__webglCustomAttributesList=[];var X=void 0;for(X in S.attributes){var Ra=S.attributes[X],na={},Ja;for(Ja in Ra)na[Ja]=Ra[Ja];if(!na.__webglInitialized||na.createUniqueBuffers){na.__webglInitialized=!0;var ja=1;"v2"===na.type?ja=2:"v3"===na.type?ja=3:"v4"===na.type?ja=4:"c"===na.type&&(ja=3);na.size=ja;na.array=new Float32Array(T*ja);na.buffer=j.createBuffer();na.buffer.belongsToAttribute=
|
|
|
+X;Ra.needsUpdate=!0;na.__original=Ra}E.__webglCustomAttributesList.push(na)}}E.__inittedArrays=!0;m.__dirtyVertices=!0;m.__dirtyMorphTargets=!0;m.__dirtyElements=!0;m.__dirtyUvs=!0;m.__dirtyNormals=!0;m.__dirtyTangents=!0;m.__dirtyColors=!0}}}else if(e instanceof THREE.Ribbon){if(m=e.geometry,!m.__webglVertexBuffer){var Aa=m;Aa.__webglVertexBuffer=j.createBuffer();Aa.__webglColorBuffer=j.createBuffer();H.info.memory.geometries++;var Ea=m,xa=Ea.vertices.length;Ea.__vertexArray=new Float32Array(3*xa);
|
|
|
+Ea.__colorArray=new Float32Array(3*xa);Ea.__webglVertexCount=xa;m.__dirtyVertices=!0;m.__dirtyColors=!0}}else if(e instanceof THREE.Line){if(m=e.geometry,!m.__webglVertexBuffer){var ya=m;ya.__webglVertexBuffer=j.createBuffer();ya.__webglColorBuffer=j.createBuffer();H.info.memory.geometries++;var Fa=m,Oa=e,ab=Fa.vertices.length;Fa.__vertexArray=new Float32Array(3*ab);Fa.__colorArray=new Float32Array(3*ab);Fa.__webglLineCount=ab;b(Fa,Oa);m.__dirtyVertices=!0;m.__dirtyColors=!0}}else if(e instanceof
|
|
|
+THREE.ParticleSystem&&(m=e.geometry,!m.__webglVertexBuffer)){var Ya=m;Ya.__webglVertexBuffer=j.createBuffer();Ya.__webglColorBuffer=j.createBuffer();H.info.geometries++;var Qa=m,kb=e,db=Qa.vertices.length;Qa.__vertexArray=new Float32Array(3*db);Qa.__colorArray=new Float32Array(3*db);Qa.__sortArray=[];Qa.__webglParticleCount=db;b(Qa,kb);m.__dirtyVertices=!0;m.__dirtyColors=!0}if(!e.__webglActive){if(e instanceof THREE.Mesh)if(m=e.geometry,m instanceof THREE.BufferGeometry)l(h.__webglObjects,m,e);else for(i in m.geometryGroups)k=
|
|
|
+m.geometryGroups[i],l(h.__webglObjects,k,e);else e instanceof THREE.Ribbon||e instanceof THREE.Line||e instanceof THREE.ParticleSystem?(m=e.geometry,l(h.__webglObjects,m,e)):void 0!==THREE.MarchingCubes&&e instanceof THREE.MarchingCubes||e.immediateRenderCallback?h.__webglObjectsImmediate.push({object:e,opaque:null,transparent:null}):e instanceof THREE.Sprite?h.__webglSprites.push(e):e instanceof THREE.LensFlare&&h.__webglFlares.push(e);e.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fb=
|
|
|
+a.__objectsRemoved[0],Xa=a;fb instanceof THREE.Mesh||fb instanceof THREE.ParticleSystem||fb instanceof THREE.Ribbon||fb instanceof THREE.Line?o(Xa.__webglObjects,fb):fb instanceof THREE.Sprite?q(Xa.__webglSprites,fb):fb instanceof THREE.LensFlare?q(Xa.__webglFlares,fb):(fb instanceof THREE.MarchingCubes||fb.immediateRenderCallback)&&o(Xa.__webglObjectsImmediate,fb);fb.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var Mc=0,hd=a.__webglObjects.length;Mc<hd;Mc++){var mb=a.__webglObjects[Mc].object,
|
|
|
+ia=mb.geometry,jc=void 0,bc=void 0,Va=void 0;if(mb instanceof THREE.Mesh)if(ia instanceof THREE.BufferGeometry)ia.__dirtyVertices=!1,ia.__dirtyElements=!1,ia.__dirtyUvs=!1,ia.__dirtyNormals=!1,ia.__dirtyColors=!1;else{for(var Nc=0,id=ia.geometryGroupsList.length;Nc<id;Nc++)if(jc=ia.geometryGroupsList[Nc],Va=c(mb,jc),bc=Va.attributes&&p(Va),ia.__dirtyVertices||ia.__dirtyMorphTargets||ia.__dirtyElements||ia.__dirtyUvs||ia.__dirtyNormals||ia.__dirtyColors||ia.__dirtyTangents||bc){var da=jc,jd=mb,bb=
|
|
|
+j.DYNAMIC_DRAW,kd=!ia.dynamic,xc=Va;if(da.__inittedArrays){var Wc=d(xc),Oc=xc.vertexColors?xc.vertexColors:!1,Xc=f(xc),Yc=Wc===THREE.SmoothShading,G=void 0,R=void 0,jb=void 0,L=void 0,cc=void 0,Jb=void 0,nb=void 0,yc=void 0,Db=void 0,dc=void 0,ec=void 0,U=void 0,V=void 0,W=void 0,oa=void 0,ob=void 0,pb=void 0,qb=void 0,kc=void 0,rb=void 0,sb=void 0,tb=void 0,lc=void 0,ub=void 0,vb=void 0,wb=void 0,mc=void 0,xb=void 0,yb=void 0,zb=void 0,nc=void 0,Kb=void 0,Lb=void 0,Mb=void 0,zc=void 0,Nb=void 0,
|
|
|
+Ob=void 0,Pb=void 0,Ac=void 0,ka=void 0,Zc=void 0,Qb=void 0,fc=void 0,gc=void 0,cb=void 0,$c=void 0,Ia=void 0,za=0,Ga=0,Eb=0,Fb=0,gb=0,Pa=0,pa=0,Sa=0,Ba=0,I=0,Ca=0,z=0,Za=void 0,Ka=da.__vertexArray,oc=da.__uvArray,pc=da.__uv2Array,hb=da.__normalArray,ra=da.__tangentArray,La=da.__colorArray,sa=da.__skinVertexAArray,ta=da.__skinVertexBArray,ua=da.__skinIndexArray,va=da.__skinWeightArray,Pc=da.__morphTargetsArrays,Qc=da.__webglCustomAttributesList,w=void 0,Ab=da.__faceArray,$a=da.__lineArray,Ta=jd.geometry,
|
|
|
+ld=Ta.__dirtyElements,ad=Ta.__dirtyUvs,md=Ta.__dirtyNormals,nd=Ta.__dirtyTangents,od=Ta.__dirtyColors,pd=Ta.__dirtyMorphTargets,Wb=Ta.vertices,la=da.faces3,ma=da.faces4,Da=Ta.faces,Rc=Ta.faceVertexUvs[0],Sc=Ta.faceVertexUvs[1],Xb=Ta.skinVerticesA,Yb=Ta.skinVerticesB,Zb=Ta.skinIndices,Rb=Ta.skinWeights,Sb=Ta.morphTargets;if(Ta.__dirtyVertices){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=Wb[L.a].position,V=Wb[L.b].position,W=Wb[L.c].position,Ka[Ga]=U.x,Ka[Ga+1]=U.y,Ka[Ga+2]=U.z,Ka[Ga+3]=V.x,Ka[Ga+4]=
|
|
|
+V.y,Ka[Ga+5]=V.z,Ka[Ga+6]=W.x,Ka[Ga+7]=W.y,Ka[Ga+8]=W.z,Ga+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=Wb[L.a].position,V=Wb[L.b].position,W=Wb[L.c].position,oa=Wb[L.d].position,Ka[Ga]=U.x,Ka[Ga+1]=U.y,Ka[Ga+2]=U.z,Ka[Ga+3]=V.x,Ka[Ga+4]=V.y,Ka[Ga+5]=V.z,Ka[Ga+6]=W.x,Ka[Ga+7]=W.y,Ka[Ga+8]=W.z,Ka[Ga+9]=oa.x,Ka[Ga+10]=oa.y,Ka[Ga+11]=oa.z,Ga+=12;j.bindBuffer(j.ARRAY_BUFFER,da.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Ka,bb)}if(pd)for(cb=0,$c=Sb.length;cb<$c;cb++){Ca=0;for(G=0,R=la.length;G<R;G++)L=
|
|
|
+Da[la[G]],U=Sb[cb].vertices[L.a].position,V=Sb[cb].vertices[L.b].position,W=Sb[cb].vertices[L.c].position,Ia=Pc[cb],Ia[Ca]=U.x,Ia[Ca+1]=U.y,Ia[Ca+2]=U.z,Ia[Ca+3]=V.x,Ia[Ca+4]=V.y,Ia[Ca+5]=V.z,Ia[Ca+6]=W.x,Ia[Ca+7]=W.y,Ia[Ca+8]=W.z,Ca+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=Sb[cb].vertices[L.a].position,V=Sb[cb].vertices[L.b].position,W=Sb[cb].vertices[L.c].position,oa=Sb[cb].vertices[L.d].position,Ia=Pc[cb],Ia[Ca]=U.x,Ia[Ca+1]=U.y,Ia[Ca+2]=U.z,Ia[Ca+3]=V.x,Ia[Ca+4]=V.y,Ia[Ca+5]=V.z,Ia[Ca+6]=
|
|
|
+W.x,Ia[Ca+7]=W.y,Ia[Ca+8]=W.z,Ia[Ca+9]=oa.x,Ia[Ca+10]=oa.y,Ia[Ca+11]=oa.z,Ca+=12;j.bindBuffer(j.ARRAY_BUFFER,da.__webglMorphTargetsBuffers[cb]);j.bufferData(j.ARRAY_BUFFER,Pc[cb],bb)}if(Rb.length){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],ub=Rb[L.a],vb=Rb[L.b],wb=Rb[L.c],va[I]=ub.x,va[I+1]=ub.y,va[I+2]=ub.z,va[I+3]=ub.w,va[I+4]=vb.x,va[I+5]=vb.y,va[I+6]=vb.z,va[I+7]=vb.w,va[I+8]=wb.x,va[I+9]=wb.y,va[I+10]=wb.z,va[I+11]=wb.w,xb=Zb[L.a],yb=Zb[L.b],zb=Zb[L.c],ua[I]=xb.x,ua[I+1]=xb.y,ua[I+2]=xb.z,ua[I+
|
|
|
+3]=xb.w,ua[I+4]=yb.x,ua[I+5]=yb.y,ua[I+6]=yb.z,ua[I+7]=yb.w,ua[I+8]=zb.x,ua[I+9]=zb.y,ua[I+10]=zb.z,ua[I+11]=zb.w,Kb=Xb[L.a],Lb=Xb[L.b],Mb=Xb[L.c],sa[I]=Kb.x,sa[I+1]=Kb.y,sa[I+2]=Kb.z,sa[I+3]=1,sa[I+4]=Lb.x,sa[I+5]=Lb.y,sa[I+6]=Lb.z,sa[I+7]=1,sa[I+8]=Mb.x,sa[I+9]=Mb.y,sa[I+10]=Mb.z,sa[I+11]=1,Nb=Yb[L.a],Ob=Yb[L.b],Pb=Yb[L.c],ta[I]=Nb.x,ta[I+1]=Nb.y,ta[I+2]=Nb.z,ta[I+3]=1,ta[I+4]=Ob.x,ta[I+5]=Ob.y,ta[I+6]=Ob.z,ta[I+7]=1,ta[I+8]=Pb.x,ta[I+9]=Pb.y,ta[I+10]=Pb.z,ta[I+11]=1,I+=12;for(G=0,R=ma.length;G<
|
|
|
+R;G++)L=Da[ma[G]],ub=Rb[L.a],vb=Rb[L.b],wb=Rb[L.c],mc=Rb[L.d],va[I]=ub.x,va[I+1]=ub.y,va[I+2]=ub.z,va[I+3]=ub.w,va[I+4]=vb.x,va[I+5]=vb.y,va[I+6]=vb.z,va[I+7]=vb.w,va[I+8]=wb.x,va[I+9]=wb.y,va[I+10]=wb.z,va[I+11]=wb.w,va[I+12]=mc.x,va[I+13]=mc.y,va[I+14]=mc.z,va[I+15]=mc.w,xb=Zb[L.a],yb=Zb[L.b],zb=Zb[L.c],nc=Zb[L.d],ua[I]=xb.x,ua[I+1]=xb.y,ua[I+2]=xb.z,ua[I+3]=xb.w,ua[I+4]=yb.x,ua[I+5]=yb.y,ua[I+6]=yb.z,ua[I+7]=yb.w,ua[I+8]=zb.x,ua[I+9]=zb.y,ua[I+10]=zb.z,ua[I+11]=zb.w,ua[I+12]=nc.x,ua[I+13]=nc.y,
|
|
|
+ua[I+14]=nc.z,ua[I+15]=nc.w,Kb=Xb[L.a],Lb=Xb[L.b],Mb=Xb[L.c],zc=Xb[L.d],sa[I]=Kb.x,sa[I+1]=Kb.y,sa[I+2]=Kb.z,sa[I+3]=1,sa[I+4]=Lb.x,sa[I+5]=Lb.y,sa[I+6]=Lb.z,sa[I+7]=1,sa[I+8]=Mb.x,sa[I+9]=Mb.y,sa[I+10]=Mb.z,sa[I+11]=1,sa[I+12]=zc.x,sa[I+13]=zc.y,sa[I+14]=zc.z,sa[I+15]=1,Nb=Yb[L.a],Ob=Yb[L.b],Pb=Yb[L.c],Ac=Yb[L.d],ta[I]=Nb.x,ta[I+1]=Nb.y,ta[I+2]=Nb.z,ta[I+3]=1,ta[I+4]=Ob.x,ta[I+5]=Ob.y,ta[I+6]=Ob.z,ta[I+7]=1,ta[I+8]=Pb.x,ta[I+9]=Pb.y,ta[I+10]=Pb.z,ta[I+11]=1,ta[I+12]=Ac.x,ta[I+13]=Ac.y,ta[I+14]=Ac.z,
|
|
|
+ta[I+15]=1,I+=16;0<I&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexABuffer),j.bufferData(j.ARRAY_BUFFER,sa,bb),j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinVertexBBuffer),j.bufferData(j.ARRAY_BUFFER,ta,bb),j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,ua,bb),j.bindBuffer(j.ARRAY_BUFFER,da.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,va,bb))}if(od&&Oc){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],nb=L.vertexColors,yc=L.color,3===nb.length&&Oc===THREE.VertexColors?
|
|
|
+(rb=nb[0],sb=nb[1],tb=nb[2]):tb=sb=rb=yc,La[Ba]=rb.r,La[Ba+1]=rb.g,La[Ba+2]=rb.b,La[Ba+3]=sb.r,La[Ba+4]=sb.g,La[Ba+5]=sb.b,La[Ba+6]=tb.r,La[Ba+7]=tb.g,La[Ba+8]=tb.b,Ba+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],nb=L.vertexColors,yc=L.color,4===nb.length&&Oc===THREE.VertexColors?(rb=nb[0],sb=nb[1],tb=nb[2],lc=nb[3]):lc=tb=sb=rb=yc,La[Ba]=rb.r,La[Ba+1]=rb.g,La[Ba+2]=rb.b,La[Ba+3]=sb.r,La[Ba+4]=sb.g,La[Ba+5]=sb.b,La[Ba+6]=tb.r,La[Ba+7]=tb.g,La[Ba+8]=tb.b,La[Ba+9]=lc.r,La[Ba+10]=lc.g,La[Ba+11]=lc.b,Ba+=
|
|
|
+12;0<Ba&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,La,bb))}if(nd&&Ta.hasTangents){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],Db=L.vertexTangents,ob=Db[0],pb=Db[1],qb=Db[2],ra[pa]=ob.x,ra[pa+1]=ob.y,ra[pa+2]=ob.z,ra[pa+3]=ob.w,ra[pa+4]=pb.x,ra[pa+5]=pb.y,ra[pa+6]=pb.z,ra[pa+7]=pb.w,ra[pa+8]=qb.x,ra[pa+9]=qb.y,ra[pa+10]=qb.z,ra[pa+11]=qb.w,pa+=12;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],Db=L.vertexTangents,ob=Db[0],pb=Db[1],qb=Db[2],kc=Db[3],ra[pa]=ob.x,ra[pa+1]=ob.y,
|
|
|
+ra[pa+2]=ob.z,ra[pa+3]=ob.w,ra[pa+4]=pb.x,ra[pa+5]=pb.y,ra[pa+6]=pb.z,ra[pa+7]=pb.w,ra[pa+8]=qb.x,ra[pa+9]=qb.y,ra[pa+10]=qb.z,ra[pa+11]=qb.w,ra[pa+12]=kc.x,ra[pa+13]=kc.y,ra[pa+14]=kc.z,ra[pa+15]=kc.w,pa+=16;j.bindBuffer(j.ARRAY_BUFFER,da.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,ra,bb)}if(md&&Wc){for(G=0,R=la.length;G<R;G++)if(L=Da[la[G]],cc=L.vertexNormals,Jb=L.normal,3===cc.length&&Yc)for(ka=0;3>ka;ka++)Qb=cc[ka],hb[Pa]=Qb.x,hb[Pa+1]=Qb.y,hb[Pa+2]=Qb.z,Pa+=3;else for(ka=0;3>ka;ka++)hb[Pa]=
|
|
|
+Jb.x,hb[Pa+1]=Jb.y,hb[Pa+2]=Jb.z,Pa+=3;for(G=0,R=ma.length;G<R;G++)if(L=Da[ma[G]],cc=L.vertexNormals,Jb=L.normal,4===cc.length&&Yc)for(ka=0;4>ka;ka++)Qb=cc[ka],hb[Pa]=Qb.x,hb[Pa+1]=Qb.y,hb[Pa+2]=Qb.z,Pa+=3;else for(ka=0;4>ka;ka++)hb[Pa]=Jb.x,hb[Pa+1]=Jb.y,hb[Pa+2]=Jb.z,Pa+=3;j.bindBuffer(j.ARRAY_BUFFER,da.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,hb,bb)}if(ad&&Rc&&Xc){for(G=0,R=la.length;G<R;G++)if(jb=la[G],L=Da[jb],dc=Rc[jb],void 0!==dc)for(ka=0;3>ka;ka++)fc=dc[ka],oc[Eb]=fc.u,oc[Eb+1]=fc.v,
|
|
|
+Eb+=2;for(G=0,R=ma.length;G<R;G++)if(jb=ma[G],L=Da[jb],dc=Rc[jb],void 0!==dc)for(ka=0;4>ka;ka++)fc=dc[ka],oc[Eb]=fc.u,oc[Eb+1]=fc.v,Eb+=2;0<Eb&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,oc,bb))}if(ad&&Sc&&Xc){for(G=0,R=la.length;G<R;G++)if(jb=la[G],L=Da[jb],ec=Sc[jb],void 0!==ec)for(ka=0;3>ka;ka++)gc=ec[ka],pc[Fb]=gc.u,pc[Fb+1]=gc.v,Fb+=2;for(G=0,R=ma.length;G<R;G++)if(jb=ma[G],L=Da[jb],ec=Sc[jb],void 0!==ec)for(ka=0;4>ka;ka++)gc=ec[ka],pc[Fb]=gc.u,pc[Fb+1]=gc.v,
|
|
|
+Fb+=2;0<Fb&&(j.bindBuffer(j.ARRAY_BUFFER,da.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,pc,bb))}if(ld){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],Ab[gb]=za,Ab[gb+1]=za+1,Ab[gb+2]=za+2,gb+=3,$a[Sa]=za,$a[Sa+1]=za+1,$a[Sa+2]=za,$a[Sa+3]=za+2,$a[Sa+4]=za+1,$a[Sa+5]=za+2,Sa+=6,za+=3;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],Ab[gb]=za,Ab[gb+1]=za+1,Ab[gb+2]=za+3,Ab[gb+3]=za+1,Ab[gb+4]=za+2,Ab[gb+5]=za+3,gb+=6,$a[Sa]=za,$a[Sa+1]=za+1,$a[Sa+2]=za,$a[Sa+3]=za+3,$a[Sa+4]=za+1,$a[Sa+5]=za+2,$a[Sa+6]=za+2,$a[Sa+
|
|
|
+7]=za+3,Sa+=8,za+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,Ab,bb);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,da.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$a,bb)}if(Qc)for(ka=0,Zc=Qc.length;ka<Zc;ka++)if(w=Qc[ka],w.__original.needsUpdate){z=0;if(1===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],w.array[z]=w.value[L.a],w.array[z+1]=w.value[L.b],w.array[z+2]=w.value[L.c],z+=3;for(G=0,R=ma.length;G<
|
|
|
+R;G++)L=Da[ma[G]],w.array[z]=w.value[L.a],w.array[z+1]=w.value[L.b],w.array[z+2]=w.value[L.c],w.array[z+3]=w.value[L.d],z+=4}else{if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)Za=w.value[la[G]],w.array[z]=Za,w.array[z+1]=Za,w.array[z+2]=Za,z+=3;for(G=0,R=ma.length;G<R;G++)Za=w.value[ma[G]],w.array[z]=Za,w.array[z+1]=Za,w.array[z+2]=Za,w.array[z+3]=Za,z+=4}}else if(2===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],V=w.value[L.b],
|
|
|
+W=w.value[L.c],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,z+=6;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],oa=w.value[L.d],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,w.array[z+6]=oa.x,w.array[z+7]=oa.y,z+=8}else{if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+
|
|
|
+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,z+=6;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=V.x,w.array[z+3]=V.y,w.array[z+4]=W.x,w.array[z+5]=W.y,w.array[z+6]=oa.x,w.array[z+7]=oa.y,z+=8}}else if(3===w.size){var ea;ea="c"===w.type?["r","g","b"]:["x","y","z"];if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=
|
|
|
+U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],z+=9;for(G=0,R=ma.length;G<R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],oa=w.value[L.d],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],w.array[z+9]=oa[ea[0]],w.array[z+10]=oa[ea[1]],w.array[z+11]=
|
|
|
+oa[ea[2]],z+=12}else if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],z+=9;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U[ea[0]],w.array[z+1]=U[ea[1]],w.array[z+2]=U[ea[2]],w.array[z+3]=V[ea[0]],w.array[z+4]=V[ea[1]],w.array[z+5]=V[ea[2]],w.array[z+6]=W[ea[0]],
|
|
|
+w.array[z+7]=W[ea[1]],w.array[z+8]=W[ea[2]],w.array[z+9]=oa[ea[0]],w.array[z+10]=oa[ea[1]],w.array[z+11]=oa[ea[2]],z+=12}}else if(4===w.size)if(void 0===w.boundTo||"vertices"===w.boundTo){for(G=0,R=la.length;G<R;G++)L=Da[la[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,z+=12;for(G=0,R=ma.length;G<
|
|
|
+R;G++)L=Da[ma[G]],U=w.value[L.a],V=w.value[L.b],W=w.value[L.c],oa=w.value[L.d],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,w.array[z+12]=oa.x,w.array[z+13]=oa.y,w.array[z+14]=oa.z,w.array[z+15]=oa.w,z+=16}else if("faces"===w.boundTo){for(G=0,R=la.length;G<R;G++)W=V=U=Za=w.value[la[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+
|
|
|
+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,z+=12;for(G=0,R=ma.length;G<R;G++)oa=W=V=U=Za=w.value[ma[G]],w.array[z]=U.x,w.array[z+1]=U.y,w.array[z+2]=U.z,w.array[z+3]=U.w,w.array[z+4]=V.x,w.array[z+5]=V.y,w.array[z+6]=V.z,w.array[z+7]=V.w,w.array[z+8]=W.x,w.array[z+9]=W.y,w.array[z+10]=W.z,w.array[z+11]=W.w,w.array[z+12]=oa.x,w.array[z+13]=oa.y,w.array[z+14]=oa.z,w.array[z+15]=oa.w,z+=16}j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+w.buffer);j.bufferData(j.ARRAY_BUFFER,w.array,bb)}kd&&(delete da.__inittedArrays,delete da.__colorArray,delete da.__normalArray,delete da.__tangentArray,delete da.__uvArray,delete da.__uv2Array,delete da.__faceArray,delete da.__vertexArray,delete da.__lineArray,delete da.__skinVertexAArray,delete da.__skinVertexBArray,delete da.__skinIndexArray,delete da.__skinWeightArray)}}ia.__dirtyVertices=!1;ia.__dirtyMorphTargets=!1;ia.__dirtyElements=!1;ia.__dirtyUvs=!1;ia.__dirtyNormals=!1;ia.__dirtyColors=
|
|
|
+!1;ia.__dirtyTangents=!1;Va.attributes&&n(Va)}else if(mb instanceof THREE.Ribbon){if(ia.__dirtyVertices||ia.__dirtyColors){var Tb=ia,bd=j.DYNAMIC_DRAW,qc=void 0,rc=void 0,Bc=void 0,Ub=void 0,Cc=void 0,cd=Tb.vertices,dd=Tb.colors,qd=cd.length,rd=dd.length,Dc=Tb.__vertexArray,Ec=Tb.__colorArray,sd=Tb.__dirtyColors;if(Tb.__dirtyVertices){for(qc=0;qc<qd;qc++)Bc=cd[qc].position,Ub=3*qc,Dc[Ub]=Bc.x,Dc[Ub+1]=Bc.y,Dc[Ub+2]=Bc.z;j.bindBuffer(j.ARRAY_BUFFER,Tb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
+Dc,bd)}if(sd){for(rc=0;rc<rd;rc++)Cc=dd[rc],Ub=3*rc,Ec[Ub]=Cc.r,Ec[Ub+1]=Cc.g,Ec[Ub+2]=Cc.b;j.bindBuffer(j.ARRAY_BUFFER,Tb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Ec,bd)}}ia.__dirtyVertices=!1;ia.__dirtyColors=!1}else if(mb instanceof THREE.Line){Va=c(mb,jc);bc=Va.attributes&&p(Va);if(ia.__dirtyVertices||ia.__dirtyColors||bc){var Gb=ia,Tc=j.DYNAMIC_DRAW,sc=void 0,tc=void 0,Fc=void 0,wa=void 0,Gc=void 0,ed=Gb.vertices,fd=Gb.colors,td=ed.length,ud=fd.length,Hc=Gb.__vertexArray,Ic=Gb.__colorArray,
|
|
|
+vd=Gb.__dirtyColors,Uc=Gb.__webglCustomAttributesList,Jc=void 0,gd=void 0,Na=void 0,hc=void 0,Wa=void 0,qa=void 0;if(Gb.__dirtyVertices){for(sc=0;sc<td;sc++)Fc=ed[sc].position,wa=3*sc,Hc[wa]=Fc.x,Hc[wa+1]=Fc.y,Hc[wa+2]=Fc.z;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Hc,Tc)}if(vd){for(tc=0;tc<ud;tc++)Gc=fd[tc],wa=3*tc,Ic[wa]=Gc.r,Ic[wa+1]=Gc.g,Ic[wa+2]=Gc.b;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Ic,Tc)}if(Uc)for(Jc=0,gd=Uc.length;Jc<
|
|
|
+gd;Jc++)if(qa=Uc[Jc],qa.needsUpdate&&(void 0===qa.boundTo||"vertices"===qa.boundTo)){wa=0;hc=qa.value.length;if(1===qa.size)for(Na=0;Na<hc;Na++)qa.array[Na]=qa.value[Na];else if(2===qa.size)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,qa.array[wa+1]=Wa.y,wa+=2;else if(3===qa.size)if("c"===qa.type)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.r,qa.array[wa+1]=Wa.g,qa.array[wa+2]=Wa.b,wa+=3;else for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,qa.array[wa+1]=Wa.y,qa.array[wa+2]=
|
|
|
+Wa.z,wa+=3;else if(4===qa.size)for(Na=0;Na<hc;Na++)Wa=qa.value[Na],qa.array[wa]=Wa.x,qa.array[wa+1]=Wa.y,qa.array[wa+2]=Wa.z,qa.array[wa+3]=Wa.w,wa+=4;j.bindBuffer(j.ARRAY_BUFFER,qa.buffer);j.bufferData(j.ARRAY_BUFFER,qa.array,Tc)}}ia.__dirtyVertices=!1;ia.__dirtyColors=!1;Va.attributes&&n(Va)}else if(mb instanceof THREE.ParticleSystem)Va=c(mb,jc),bc=Va.attributes&&p(Va),(ia.__dirtyVertices||ia.__dirtyColors||mb.sortParticles||bc)&&g(ia,j.DYNAMIC_DRAW,mb),ia.__dirtyVertices=!1,ia.__dirtyColors=!1,
|
|
|
+Va.attributes&&n(Va)}};this.initMaterial=function(a,b,c,d){var f,e,g,h,i;a instanceof THREE.MeshDepthMaterial?i="depth":a instanceof THREE.MeshNormalMaterial?i="normal":a instanceof THREE.MeshBasicMaterial?i="basic":a instanceof THREE.MeshLambertMaterial?i="lambert":a instanceof THREE.MeshPhongMaterial?i="phong":a instanceof THREE.LineBasicMaterial?i="basic":a instanceof THREE.ParticleBasicMaterial&&(i="particle_basic");if(i){var m=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(m.uniforms);
|
|
|
+a.vertexShader=m.vertexShader;a.fragmentShader=m.fragmentShader}var k,l;e=m=0;for(k=0,l=b.length;k<l;k++)f=b[k],f.onlyShadow||(f instanceof THREE.DirectionalLight&&e++,f instanceof THREE.PointLight&&m++,f instanceof THREE.SpotLight&&m++);m+e<=M?k=e:(k=Math.ceil(M*e/(m+e)),m=M-k);f=k;e=m;var n=0;for(m=0,k=b.length;m<k;m++)l=b[m],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight)&&n++;var o=50;if(void 0!==d&&d instanceof THREE.SkinnedMesh)o=d.bones.length;var p;a:{k=a.fragmentShader;
|
|
|
+l=a.vertexShader;var m=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:f,maxPointLights:e,maxBones:o,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,maxShadows:n,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround},q,d=[];
|
|
|
+i?d.push(i):(d.push(k),d.push(l));for(q in c)d.push(q),d.push(c[q]);i=d.join();for(q=0,d=X.length;q<d;q++)if(X[q].code===i){p=X[q].program;break a}q=j.createProgram();d=[0<ya?"#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_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?
|
|
|
+"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
f=["precision "+C+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#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.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?
|
|
|
"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");j.attachShader(q,t("fragment",f+k));j.attachShader(q,t("vertex",d+l));j.linkProgram(q);j.getProgramParameter(q,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+
|
|
|
-j.getProgramParameter(q,j.VALIDATE_STATUS)+", gl error ["+j.getError()+"]");q.uniforms={};q.attributes={};var r,d="viewMatrix,modelViewMatrix,projectionMatrix,normalMatrix,objectMatrix,cameraPosition,cameraInverseMatrix,boneGlobalMatrices,morphTargetInfluences".split(",");for(r in m)d.push(r);r=d;for(d=0,m=r.length;d<m;d++)k=r[d],q.uniforms[k]=j.getUniformLocation(q,k);d="position,normal,uv,uv2,tangent,color,skinVertexA,skinVertexB,skinIndex,skinWeight".split(",");for(r=0;r<c.maxMorphTargets;r++)d.push("morphTarget"+
|
|
|
+j.getProgramParameter(q,j.VALIDATE_STATUS)+", gl error ["+j.getError()+"]");q.uniforms={};q.attributes={};var r,d="viewMatrix,modelViewMatrix,projectionMatrix,normalMatrix,objectMatrix,cameraPosition,boneGlobalMatrices,morphTargetInfluences".split(",");for(r in m)d.push(r);r=d;for(d=0,m=r.length;d<m;d++)k=r[d],q.uniforms[k]=j.getUniformLocation(q,k);d="position,normal,uv,uv2,tangent,color,skinVertexA,skinVertexB,skinIndex,skinWeight".split(",");for(r=0;r<c.maxMorphTargets;r++)d.push("morphTarget"+
|
|
|
r);for(p in b)d.push(p);p=d;for(r=0,b=p.length;r<b;r++)c=p[r],q.attributes[c]=j.getAttribLocation(q,c);q.id=X.length;X.push({program:q,code:i});H.info.memory.programs=X.length;p=q}a.program=p;p=a.program.attributes;0<=p.position&&j.enableVertexAttribArray(p.position);0<=p.color&&j.enableVertexAttribArray(p.color);0<=p.normal&&j.enableVertexAttribArray(p.normal);0<=p.tangent&&j.enableVertexAttribArray(p.tangent);a.skinning&&0<=p.skinVertexA&&0<=p.skinVertexB&&0<=p.skinIndex&&0<=p.skinWeight&&(j.enableVertexAttribArray(p.skinVertexA),
|
|
|
j.enableVertexAttribArray(p.skinVertexB),j.enableVertexAttribArray(p.skinIndex),j.enableVertexAttribArray(p.skinWeight));if(a.attributes)for(h in a.attributes)void 0!==p[h]&&0<=p[h]&&j.enableVertexAttribArray(p[h]);if(a.morphTargets)for(h=a.numSupportedMorphTargets=0;h<this.maxMorphTargets;h++)r="morphTarget"+h,0<=p[r]&&(j.enableVertexAttribArray(p[r]),a.numSupportedMorphTargets++);a.uniformsList=[];for(g in a.uniforms)a.uniformsList.push([a.uniforms[g],g])};this.setFaceCulling=function(a,b){a?(!b||
|
|
|
"ccw"===b?j.frontFace(j.CCW):j.frontFace(j.CW),"back"===a?j.cullFace(j.BACK):"front"===a?j.cullFace(j.FRONT):j.cullFace(j.FRONT_AND_BACK),j.enable(j.CULL_FACE)):j.disable(j.CULL_FACE)};this.setObjectFaces=function(a){if(ba!==a.doubleSided)a.doubleSided?j.disable(j.CULL_FACE):j.enable(j.CULL_FACE),ba=a.doubleSided;if(T!==a.flipSided)a.flipSided?j.frontFace(j.CW):j.frontFace(j.CCW),T=a.flipSided};this.setDepthTest=function(a){S!==a&&(a?j.enable(j.DEPTH_TEST):j.disable(j.DEPTH_TEST),S=a)};this.setDepthWrite=
|