|
@@ -207,89 +207,89 @@ e.combine,h.useRefract.value=e.envMap&&e.envMap.mapping instanceof THREE.CubeRef
|
|
(h.ambient.value=e.ambient,h.specular.value=e.specular);else if(e instanceof THREE.MeshLambertMaterial)D.gammaInput?h.ambient.value.copyGammaToLinear(e.ambient):h.ambient.value=e.ambient;else if(e instanceof THREE.MeshDepthMaterial)h.mNear.value=a.near,h.mFar.value=a.far,h.opacity.value=e.opacity;else if(e instanceof THREE.MeshNormalMaterial)h.opacity.value=e.opacity;if(f.receiveShadow&&!e._shadowPass&&h.shadowMatrix){for(b=0;b<Ja.length;b++)h.shadowMatrix.value[b]=Ja[b],h.shadowMap.texture[b]=D.shadowMap[b];
|
|
(h.ambient.value=e.ambient,h.specular.value=e.specular);else if(e instanceof THREE.MeshLambertMaterial)D.gammaInput?h.ambient.value.copyGammaToLinear(e.ambient):h.ambient.value=e.ambient;else if(e instanceof THREE.MeshDepthMaterial)h.mNear.value=a.near,h.mFar.value=a.far,h.opacity.value=e.opacity;else if(e instanceof THREE.MeshNormalMaterial)h.opacity.value=e.opacity;if(f.receiveShadow&&!e._shadowPass&&h.shadowMatrix){for(b=0;b<Ja.length;b++)h.shadowMatrix.value[b]=Ja[b],h.shadowMap.texture[b]=D.shadowMap[b];
|
|
h.shadowDarkness.value=D.shadowMapDarkness;h.shadowBias.value=D.shadowMapBias}b=e.uniformsList;h=0;for(c=b.length;h<c;h++)if(n=g.uniforms[b[h][1]])if(m=b[h][0],x=m.type,l=m.value,x==="i")d.uniform1i(n,l);else if(x==="f")d.uniform1f(n,l);else if(x==="v2")d.uniform2f(n,l.x,l.y);else if(x==="v3")d.uniform3f(n,l.x,l.y,l.z);else if(x==="v4")d.uniform4f(n,l.x,l.y,l.z,l.w);else if(x==="c")d.uniform3f(n,l.r,l.g,l.b);else if(x==="fv1")d.uniform1fv(n,l);else if(x==="fv")d.uniform3fv(n,l);else if(x==="v3v"){if(!m._array)m._array=
|
|
h.shadowDarkness.value=D.shadowMapDarkness;h.shadowBias.value=D.shadowMapBias}b=e.uniformsList;h=0;for(c=b.length;h<c;h++)if(n=g.uniforms[b[h][1]])if(m=b[h][0],x=m.type,l=m.value,x==="i")d.uniform1i(n,l);else if(x==="f")d.uniform1f(n,l);else if(x==="v2")d.uniform2f(n,l.x,l.y);else if(x==="v3")d.uniform3f(n,l.x,l.y,l.z);else if(x==="v4")d.uniform4f(n,l.x,l.y,l.z,l.w);else if(x==="c")d.uniform3f(n,l.r,l.g,l.b);else if(x==="fv1")d.uniform1fv(n,l);else if(x==="fv")d.uniform3fv(n,l);else if(x==="v3v"){if(!m._array)m._array=
|
|
new Float32Array(3*l.length);x=0;for(r=l.length;x<r;x++)s=x*3,m._array[s]=l[x].x,m._array[s+1]=l[x].y,m._array[s+2]=l[x].z;d.uniform3fv(n,m._array)}else if(x==="m4"){if(!m._array)m._array=new Float32Array(16);l.flattenToArray(m._array);d.uniformMatrix4fv(n,!1,m._array)}else if(x==="m4v"){if(!m._array)m._array=new Float32Array(16*l.length);x=0;for(r=l.length;x<r;x++)l[x].flattenToArrayOffset(m._array,x*16);d.uniformMatrix4fv(n,!1,m._array)}else if(x==="t"){if(d.uniform1i(n,l),n=m.texture)if(n.image instanceof
|
|
new Float32Array(3*l.length);x=0;for(r=l.length;x<r;x++)s=x*3,m._array[s]=l[x].x,m._array[s+1]=l[x].y,m._array[s+2]=l[x].z;d.uniform3fv(n,m._array)}else if(x==="m4"){if(!m._array)m._array=new Float32Array(16);l.flattenToArray(m._array);d.uniformMatrix4fv(n,!1,m._array)}else if(x==="m4v"){if(!m._array)m._array=new Float32Array(16*l.length);x=0;for(r=l.length;x<r;x++)l[x].flattenToArrayOffset(m._array,x*16);d.uniformMatrix4fv(n,!1,m._array)}else if(x==="t"){if(d.uniform1i(n,l),n=m.texture)if(n.image instanceof
|
|
-Array&&n.image.length===6){if(m=n,m.image.length===6)if(m.needsUpdate){if(!m.image.__webglTextureCube)m.image.__webglTextureCube=d.createTexture();d.activeTexture(d.TEXTURE0+l);d.bindTexture(d.TEXTURE_CUBE_MAP,m.image.__webglTextureCube);for(l=0;l<6;l++)d.texImage2D(d.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,m.image[l]);X(d.TEXTURE_CUBE_MAP,m,m.image[0]);m.needsUpdate=!1}else d.activeTexture(d.TEXTURE0+l),d.bindTexture(d.TEXTURE_CUBE_MAP,m.image.__webglTextureCube)}else n instanceof
|
|
|
|
-THREE.WebGLRenderTargetCube?(m=n,d.activeTexture(d.TEXTURE0+l),d.bindTexture(d.TEXTURE_CUBE_MAP,m.__webglTexture)):oa(n,l)}else if(x==="tv"){if(!m._array){m._array=[];x=0;for(r=m.texture.length;x<r;x++)m._array[x]=l+x}d.uniform1iv(n,m._array);x=0;for(r=m.texture.length;x<r;x++)(n=m.texture[x])&&oa(n,m._array[x])}(e instanceof THREE.ShaderMaterial||e instanceof THREE.MeshPhongMaterial||e.envMap)&&i.cameraPosition!==null&&d.uniform3f(i.cameraPosition,a.position.x,a.position.y,a.position.z);(e instanceof
|
|
|
|
-THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.ShaderMaterial||e.skinning)&&i.viewMatrix!==null&&d.uniformMatrix4fv(i.viewMatrix,!1,Ka);e.skinning&&(d.uniformMatrix4fv(i.cameraInverseMatrix,!1,Ka),d.uniformMatrix4fv(i.boneGlobalMatrices,!1,f.boneMatrices))}d.uniformMatrix4fv(i.modelViewMatrix,!1,f._modelViewMatrixArray);i.normalMatrix&&d.uniformMatrix3fv(i.normalMatrix,!1,f._normalMatrixArray);(e instanceof THREE.ShaderMaterial||e.envMap||e.skinning||f.receiveShadow)&&
|
|
|
|
-i.objectMatrix!==null&&d.uniformMatrix4fv(i.objectMatrix,!1,f._objectMatrixArray);return g}function qa(a,b,c){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);c&&THREE.Matrix4.makeInvert3x3(a._modelViewMatrix).transposeIntoArray(a._normalMatrixArray)}function G(a){if(Fa!==a.doubleSided)a.doubleSided?d.disable(d.CULL_FACE):d.enable(d.CULL_FACE),Fa=a.doubleSided;if(Ba!==a.flipSided)a.flipSided?d.frontFace(d.CW):d.frontFace(d.CCW),Ba=a.flipSided}function ia(a){wa!==
|
|
|
|
-a&&(a?d.enable(d.DEPTH_TEST):d.disable(d.DEPTH_TEST),wa=a)}function ka(a){Oa!==a&&(d.depthMask(a),Oa=a)}function F(a,b,c){Sa!==a&&(a?d.enable(d.POLYGON_OFFSET_FILL):d.disable(d.POLYGON_OFFSET_FILL),Sa=a);if(a&&(Ta!==b||Ua!==c))d.polygonOffset(b,c),Ta=b,Ua=c}function M(a){if(a!==ya){switch(a){case THREE.AdditiveBlending:d.blendEquation(d.FUNC_ADD);d.blendFunc(d.SRC_ALPHA,d.ONE);break;case THREE.SubtractiveBlending:d.blendEquation(d.FUNC_ADD);d.blendFunc(d.ZERO,d.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:d.blendEquation(d.FUNC_ADD);
|
|
|
|
-d.blendFunc(d.ZERO,d.SRC_COLOR);break;default:d.blendEquationSeparate(d.FUNC_ADD,d.FUNC_ADD),d.blendFuncSeparate(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA,d.ONE,d.ONE_MINUS_SRC_ALPHA)}ya=a}}function L(a,b){var c;a==="fragment"?c=d.createShader(d.FRAGMENT_SHADER):a==="vertex"&&(c=d.createShader(d.VERTEX_SHADER));d.shaderSource(c,b);d.compileShader(c);if(!d.getShaderParameter(c,d.COMPILE_STATUS))return console.error(d.getShaderInfoLog(c)),console.error(b),null;return c}function X(a,b,c){(c.width&c.width-1)===
|
|
|
|
-0&&(c.height&c.height-1)===0?(d.texParameteri(a,d.TEXTURE_WRAP_S,N(b.wrapS)),d.texParameteri(a,d.TEXTURE_WRAP_T,N(b.wrapT)),d.texParameteri(a,d.TEXTURE_MAG_FILTER,N(b.magFilter)),d.texParameteri(a,d.TEXTURE_MIN_FILTER,N(b.minFilter)),d.generateMipmap(a)):(d.texParameteri(a,d.TEXTURE_WRAP_S,d.CLAMP_TO_EDGE),d.texParameteri(a,d.TEXTURE_WRAP_T,d.CLAMP_TO_EDGE),d.texParameteri(a,d.TEXTURE_MAG_FILTER,ta(b.magFilter)),d.texParameteri(a,d.TEXTURE_MIN_FILTER,ta(b.minFilter)))}function oa(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=
|
|
|
|
-!0,a.__webglTexture=d.createTexture(),D.info.memory.textures++;d.activeTexture(d.TEXTURE0+b);d.bindTexture(d.TEXTURE_2D,a.__webglTexture);a instanceof THREE.DataTexture?d.texImage2D(d.TEXTURE_2D,0,N(a.format),a.image.width,a.image.height,0,N(a.format),d.UNSIGNED_BYTE,a.image.data):d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,a.image);X(d.TEXTURE_2D,a,a.image);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else d.activeTexture(d.TEXTURE0+b),d.bindTexture(d.TEXTURE_2D,a.__webglTexture)}
|
|
|
|
-function P(a,b){d.bindRenderbuffer(d.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_COMPONENT16,b.width,b.height),d.framebufferRenderbuffer(d.FRAMEBUFFER,d.DEPTH_ATTACHMENT,d.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_STENCIL,b.width,b.height),d.framebufferRenderbuffer(d.FRAMEBUFFER,d.DEPTH_STENCIL_ATTACHMENT,d.RENDERBUFFER,a)):d.renderbufferStorage(d.RENDERBUFFER,d.RGBA4,b.width,b.height)}function pa(a){var b=
|
|
|
|
-a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(a.depthBuffer===void 0)a.depthBuffer=!0;if(a.stencilBuffer===void 0)a.stencilBuffer=!0;a.__webglTexture=d.createTexture();if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];d.bindTexture(d.TEXTURE_CUBE_MAP,a.__webglTexture);X(d.TEXTURE_CUBE_MAP,a,a);for(var c=0;c<6;c++){a.__webglFramebuffer[c]=d.createFramebuffer();a.__webglRenderbuffer[c]=d.createRenderbuffer();d.texImage2D(d.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,N(a.format),
|
|
|
|
-a.width,a.height,0,N(a.format),N(a.type),null);var e=a,f=d.TEXTURE_CUBE_MAP_POSITIVE_X+c;d.bindFramebuffer(d.FRAMEBUFFER,a.__webglFramebuffer[c]);d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,f,e.__webglTexture,0);P(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer=d.createFramebuffer(),a.__webglRenderbuffer=d.createRenderbuffer(),d.bindTexture(d.TEXTURE_2D,a.__webglTexture),X(d.TEXTURE_2D,a,a),d.texImage2D(d.TEXTURE_2D,0,N(a.format),a.width,a.height,0,N(a.format),N(a.type),null),
|
|
|
|
-c=d.TEXTURE_2D,d.bindFramebuffer(d.FRAMEBUFFER,a.__webglFramebuffer),d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,c,a.__webglTexture,0),d.bindRenderbuffer(d.RENDERBUFFER,a.__webglRenderbuffer),P(a.__webglRenderbuffer,a);b?d.bindTexture(d.TEXTURE_CUBE_MAP,null):d.bindTexture(d.TEXTURE_2D,null);d.bindRenderbuffer(d.RENDERBUFFER,null);d.bindFramebuffer(d.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,f=e=0):(b=null,c=Ha,a=Da,e=Pa,
|
|
|
|
-f=Qa);b!==ha&&(d.bindFramebuffer(d.FRAMEBUFFER,b),d.viewport(e,f,c,a),ha=b)}function ta(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return d.NEAREST;default:return d.LINEAR}}function N(a){switch(a){case THREE.RepeatWrapping:return d.REPEAT;case THREE.ClampToEdgeWrapping:return d.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return d.MIRRORED_REPEAT;case THREE.NearestFilter:return d.NEAREST;case THREE.NearestMipMapNearestFilter:return d.NEAREST_MIPMAP_NEAREST;
|
|
|
|
-case THREE.NearestMipMapLinearFilter:return d.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return d.LINEAR;case THREE.LinearMipMapNearestFilter:return d.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return d.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return d.BYTE;case THREE.UnsignedByteType:return d.UNSIGNED_BYTE;case THREE.ShortType:return d.SHORT;case THREE.UnsignedShortType:return d.UNSIGNED_SHORT;case THREE.IntType:return d.INT;case THREE.UnsignedShortType:return d.UNSIGNED_INT;case THREE.FloatType:return d.FLOAT;
|
|
|
|
-case THREE.AlphaFormat:return d.ALPHA;case THREE.RGBFormat:return d.RGB;case THREE.RGBAFormat:return d.RGBA;case THREE.LuminanceFormat:return d.LUMINANCE;case THREE.LuminanceAlphaFormat:return d.LUMINANCE_ALPHA}return 0}var a=a||{},ma=a.canvas!==void 0?a.canvas:document.createElement("canvas"),va=a.precision!==void 0?a.precision:"highp",xa=a.antialias!==void 0?a.antialias:!1,Aa=a.stencil!==void 0?a.stencil:!0,Xa=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:!1,Q=a.clearColor!==void 0?new THREE.Color(a.clearColor):
|
|
|
|
-new THREE.Color(0),S=a.clearAlpha!==void 0?a.clearAlpha:0,la=a.maxLights!==void 0?a.maxLights:4;this.domElement=ma;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=
|
|
|
|
-50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0}};var D=this,d,ca=[],ra=null,ha=null,na=-1,sa=null,Ea=0,Fa=null,Ba=null,ya=null,wa=null,Oa=null,Sa=null,Ta=null,Ua=null,Ia=null,Pa=0,Qa=0,Ha=0,Da=0,ua=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],za=new THREE.Matrix4,La=new Float32Array(16),
|
|
|
|
-Ka=new Float32Array(16),Ca=new THREE.Vector4,Ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},ja,Ja=[],Ga,Na,w={},Va=!1;d=function(){var a;try{if(!(a=ma.getContext("experimental-webgl",{antialias:xa,stencil:Aa,preserveDrawingBuffer:Xa})))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}();
|
|
|
|
-d.clearColor(0,0,0,1);d.clearDepth(1);d.clearStencil(0);d.enable(d.DEPTH_TEST);d.depthFunc(d.LEQUAL);d.frontFace(d.CCW);d.cullFace(d.BACK);d.enable(d.CULL_FACE);d.enable(d.BLEND);d.blendEquation(d.FUNC_ADD);d.blendFunc(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA);d.clearColor(Q.r,Q.g,Q.b,S);(function(){w.vertices=new Float32Array(16);w.faces=new Uint16Array(6);var a=0;w.vertices[a++]=-1;w.vertices[a++]=-1;w.vertices[a++]=0;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=-1;w.vertices[a++]=1;w.vertices[a++]=
|
|
|
|
-1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=0;w.vertices[a++]=-1;w.vertices[a++]=1;w.vertices[a++]=0;a=w.vertices[a++]=0;w.faces[a++]=0;w.faces[a++]=1;w.faces[a++]=2;w.faces[a++]=0;w.faces[a++]=2;w.faces[a++]=3;w.vertexBuffer=d.createBuffer();w.elementBuffer=d.createBuffer();d.bindBuffer(d.ARRAY_BUFFER,w.vertexBuffer);d.bufferData(d.ARRAY_BUFFER,w.vertices,d.STATIC_DRAW);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,w.elementBuffer);d.bufferData(d.ELEMENT_ARRAY_BUFFER,w.faces,d.STATIC_DRAW);
|
|
|
|
-w.program=d.createProgram();d.attachShader(w.program,L("fragment",THREE.ShaderLib.sprite.fragmentShader));d.attachShader(w.program,L("vertex",THREE.ShaderLib.sprite.vertexShader));d.linkProgram(w.program);w.attributes={};w.uniforms={};w.attributes.position=d.getAttribLocation(w.program,"position");w.attributes.uv=d.getAttribLocation(w.program,"uv");w.uniforms.uvOffset=d.getUniformLocation(w.program,"uvOffset");w.uniforms.uvScale=d.getUniformLocation(w.program,"uvScale");w.uniforms.rotation=d.getUniformLocation(w.program,
|
|
|
|
-"rotation");w.uniforms.scale=d.getUniformLocation(w.program,"scale");w.uniforms.alignment=d.getUniformLocation(w.program,"alignment");w.uniforms.color=d.getUniformLocation(w.program,"color");w.uniforms.map=d.getUniformLocation(w.program,"map");w.uniforms.opacity=d.getUniformLocation(w.program,"opacity");w.uniforms.useScreenCoordinates=d.getUniformLocation(w.program,"useScreenCoordinates");w.uniforms.affectedByDistance=d.getUniformLocation(w.program,"affectedByDistance");w.uniforms.screenPosition=
|
|
|
|
-d.getUniformLocation(w.program,"screenPosition");w.uniforms.modelViewMatrix=d.getUniformLocation(w.program,"modelViewMatrix");w.uniforms.projectionMatrix=d.getUniformLocation(w.program,"projectionMatrix")})();(function(){var a=THREE.ShaderLib.depthRGBA,b=THREE.UniformsUtils.clone(a.uniforms);Ga=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:b});Na=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:b,morphTargets:!0});
|
|
|
|
-Ga._shadowPass=!0;Na._shadowPass=!0})();this.context=d;var Wa=d.getParameter(d.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;this.getContext=function(){return d};this.supportsVertexTextures=function(){return Wa};this.setSize=function(a,b){ma.width=a;ma.height=b;this.setViewport(0,0,ma.width,ma.height)};this.setViewport=function(a,b,c,e){Pa=a;Qa=b;Ha=c;Da=e;d.viewport(Pa,Qa,Ha,Da)};this.setScissor=function(a,b,c,e){d.scissor(a,b,c,e)};this.enableScissorTest=function(a){a?d.enable(d.SCISSOR_TEST):d.disable(d.SCISSOR_TEST)};
|
|
|
|
-this.setClearColorHex=function(a,b){Q.setHex(a);S=b;d.clearColor(Q.r,Q.g,Q.b,S)};this.setClearColor=function(a,b){Q.copy(a);S=b;d.clearColor(Q.r,Q.g,Q.b,S)};this.getClearColor=function(){return Q};this.getClearAlpha=function(){return S};this.clear=function(a,b,c){var e=0;if(a===void 0||a)e|=d.COLOR_BUFFER_BIT;if(b===void 0||b)e|=d.DEPTH_BUFFER_BIT;if(c===void 0||c)e|=d.STENCIL_BUFFER_BIT;d.clear(e)};this.clearTarget=function(a,b,c,d){pa(a);this.clear(b,c,d)};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];d.deleteBuffer(c.__webglVertexBuffer);d.deleteBuffer(c.__webglNormalBuffer);d.deleteBuffer(c.__webglTangentBuffer);d.deleteBuffer(c.__webglColorBuffer);d.deleteBuffer(c.__webglUVBuffer);d.deleteBuffer(c.__webglUV2Buffer);d.deleteBuffer(c.__webglSkinVertexABuffer);d.deleteBuffer(c.__webglSkinVertexBBuffer);
|
|
|
|
-d.deleteBuffer(c.__webglSkinIndicesBuffer);d.deleteBuffer(c.__webglSkinWeightsBuffer);d.deleteBuffer(c.__webglFaceBuffer);d.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var e=0,f=c.numMorphTargets;e<f;e++)d.deleteBuffer(c.__webglMorphTargetsBuffers[e]);if(c.__webglCustomAttributesList)for(e in e=void 0,c.__webglCustomAttributesList)d.deleteBuffer(c.__webglCustomAttributesList[e].buffer);D.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),
|
|
|
|
-d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,d.deleteTexture(a.__webglTexture),D.info.memory.textures--};this.updateShadowMap=
|
|
|
|
-function(a,b){p(a,b)};this.render=function(a,b,c,e){var f,g,q,l,C=a.lights,u=a.fog;na=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);this.shadowMapEnabled&&this.shadowMapAutoUpdate&&p(a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces=0;b.parent===void 0&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(Ka);
|
|
|
|
-b.projectionMatrix.flattenToArray(La);za.multiply(b.projectionMatrix,b.matrixWorldInverse);i(za);pa(c);(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);l=a.__webglObjects;e=0;for(f=l.length;e<f;e++)if(g=l[e],q=g.object,g.render=!1,q.visible&&(!(q instanceof THREE.Mesh)||!q.frustumCulled||h(q))){q.matrixWorld.flattenToArray(q._objectMatrixArray);qa(q,b,!0);var k=g,m=k.object,y=k.buffer,x=void 0,x=x=void 0,x=m.material;if(x instanceof THREE.MeshFaceMaterial){if(x=
|
|
|
|
-y.materialIndex,x>=0)x=m.geometry.materials[x],x.transparent?(k.transparent=x,k.opaque=null):(k.opaque=x,k.transparent=null)}else if(x)x.transparent?(k.transparent=x,k.opaque=null):(k.opaque=x,k.transparent=null);g.render=!0;if(this.sortObjects)q.renderDepth?g.z=q.renderDepth:(Ca.copy(q.position),za.multiplyVector3(Ca),g.z=Ca.z)}this.sortObjects&&l.sort(r);l=a.__webglObjectsImmediate;e=0;for(f=l.length;e<f;e++)if(g=l[e],q=g.object,q.visible)q.matrixAutoUpdate&&q.matrixWorld.flattenToArray(q._objectMatrixArray),
|
|
|
|
-qa(q,b,!0),q=g.object.material,q.transparent?(g.transparent=q,g.opaque=null):(g.opaque=q,g.transparent=null);a.overrideMaterial?(M(a.overrideMaterial.blending),ia(a.overrideMaterial.depthTest),ka(a.overrideMaterial.depthWrite),F(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),j(a.__webglObjects,!1,"",b,C,u,!0,a.overrideMaterial),n(a.__webglObjectsImmediate,"",b,C,u,!1,a.overrideMaterial)):(M(THREE.NormalBlending),j(a.__webglObjects,!0,
|
|
|
|
-"opaque",b,C,u,!1),n(a.__webglObjectsImmediate,"opaque",b,C,u,!1),j(a.__webglObjects,!1,"transparent",b,C,u,!0),n(a.__webglObjectsImmediate,"transparent",b,C,u,!0));if(a.__webglSprites.length){q=w.attributes;C=w.uniforms;u=Da/Ha;e=[];f=Ha*0.5;l=Da*0.5;g=!0;d.useProgram(w.program);ra=w.program;sa=wa=ya=-1;Va||(d.enableVertexAttribArray(w.attributes.position),d.enableVertexAttribArray(w.attributes.uv),Va=!0);d.disable(d.CULL_FACE);d.enable(d.BLEND);d.depthMask(!0);d.bindBuffer(d.ARRAY_BUFFER,w.vertexBuffer);
|
|
|
|
-d.vertexAttribPointer(q.position,2,d.FLOAT,!1,16,0);d.vertexAttribPointer(q.uv,2,d.FLOAT,!1,16,8);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,w.elementBuffer);d.uniformMatrix4fv(C.projectionMatrix,!1,La);d.activeTexture(d.TEXTURE0);d.uniform1i(C.map,0);q=0;for(k=a.__webglSprites.length;q<k;q++)if(m=a.__webglSprites[q],m.visible&&m.opacity!==0)m.useScreenCoordinates?m.z=-m.position.z:(m._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,m.matrixWorld,m._modelViewMatrixArray),m.z=-m._modelViewMatrix.n34);
|
|
|
|
-a.__webglSprites.sort(r);q=0;for(k=a.__webglSprites.length;q<k;q++)m=a.__webglSprites[q],m.visible&&m.opacity!==0&&m.map&&m.map.image&&m.map.image.width&&(m.useScreenCoordinates?(d.uniform1i(C.useScreenCoordinates,1),d.uniform3f(C.screenPosition,(m.position.x-f)/f,(l-m.position.y)/l,Math.max(0,Math.min(1,m.position.z)))):(d.uniform1i(C.useScreenCoordinates,0),d.uniform1i(C.affectedByDistance,m.affectedByDistance?1:0),d.uniformMatrix4fv(C.modelViewMatrix,!1,m._modelViewMatrixArray)),b=m.map.image.width/
|
|
|
|
-(m.scaleByViewport?Da:1),e[0]=b*u*m.scale.x,e[1]=b*m.scale.y,d.uniform2f(C.uvScale,m.uvScale.x,m.uvScale.y),d.uniform2f(C.uvOffset,m.uvOffset.x,m.uvOffset.y),d.uniform2f(C.alignment,m.alignment.x,m.alignment.y),d.uniform1f(C.opacity,m.opacity),d.uniform3f(C.color,m.color.r,m.color.g,m.color.b),d.uniform1f(C.rotation,m.rotation),d.uniform2fv(C.scale,e),m.mergeWith3D&&!g?(d.enable(d.DEPTH_TEST),g=!0):!m.mergeWith3D&&g&&(d.disable(d.DEPTH_TEST),g=!1),M(m.blending),oa(m.map,0),d.drawElements(d.TRIANGLES,
|
|
|
|
-6,d.UNSIGNED_SHORT,0));d.enable(d.CULL_FACE);d.enable(d.DEPTH_TEST);d.depthMask(Oa)}c&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(d.bindTexture(d.TEXTURE_CUBE_MAP,c.__webglTexture),d.generateMipmap(d.TEXTURE_CUBE_MAP),d.bindTexture(d.TEXTURE_CUBE_MAP,null)):(d.bindTexture(d.TEXTURE_2D,c.__webglTexture),d.generateMipmap(d.TEXTURE_2D),d.bindTexture(d.TEXTURE_2D,null)))};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=
|
|
|
|
-[],a.__webglObjectsImmediate=[],a.__webglSprites=[];for(;a.__objectsAdded.length;){var f=a.__objectsAdded[0],g=a,i=void 0,h=void 0,j=void 0;if(!f.__webglInit)if(f.__webglInit=!0,f._modelViewMatrix=new THREE.Matrix4,f._normalMatrixArray=new Float32Array(9),f._modelViewMatrixArray=new Float32Array(16),f._objectMatrixArray=new Float32Array(16),f.matrixWorld.flattenToArray(f._objectMatrixArray),f instanceof THREE.Mesh){h=f.geometry;if(h.geometryGroups===void 0){var j=h,q=void 0,l=void 0,n=void 0,r=void 0,
|
|
|
|
-k=void 0,m=void 0,p=void 0,x={},w=j.morphTargets.length;j.geometryGroups={};q=0;for(l=j.faces.length;q<l;q++)n=j.faces[q],r=n.materialIndex,m=r!==void 0?r:-1,x[m]===void 0&&(x[m]={hash:m,counter:0}),p=x[m].hash+"_"+x[m].counter,j.geometryGroups[p]===void 0&&(j.geometryGroups[p]={faces3:[],faces4:[],materialIndex:r,vertices:0,numMorphTargets:w}),k=n instanceof THREE.Face3?3:4,j.geometryGroups[p].vertices+k>65535&&(x[m].counter+=1,p=x[m].hash+"_"+x[m].counter,j.geometryGroups[p]===void 0&&(j.geometryGroups[p]=
|
|
|
|
-{faces3:[],faces4:[],materialIndex:r,vertices:0,numMorphTargets:w})),n instanceof THREE.Face3?j.geometryGroups[p].faces3.push(q):j.geometryGroups[p].faces4.push(q),j.geometryGroups[p].vertices+=k;j.geometryGroupsList=[];q=void 0;for(q in j.geometryGroups)j.geometryGroups[q].id=Ea++,j.geometryGroupsList.push(j.geometryGroups[q])}for(i in h.geometryGroups)if(j=h.geometryGroups[i],!j.__webglVertexBuffer){q=j;q.__webglVertexBuffer=d.createBuffer();q.__webglNormalBuffer=d.createBuffer();q.__webglTangentBuffer=
|
|
|
|
-d.createBuffer();q.__webglColorBuffer=d.createBuffer();q.__webglUVBuffer=d.createBuffer();q.__webglUV2Buffer=d.createBuffer();q.__webglSkinVertexABuffer=d.createBuffer();q.__webglSkinVertexBBuffer=d.createBuffer();q.__webglSkinIndicesBuffer=d.createBuffer();q.__webglSkinWeightsBuffer=d.createBuffer();q.__webglFaceBuffer=d.createBuffer();q.__webglLineBuffer=d.createBuffer();if(q.numMorphTargets){n=l=void 0;q.__webglMorphTargetsBuffers=[];l=0;for(n=q.numMorphTargets;l<n;l++)q.__webglMorphTargetsBuffers.push(d.createBuffer())}D.info.memory.geometries++;
|
|
|
|
-r=f;k=r.geometry;l=j.faces3;m=j.faces4;q=l.length*3+m.length*4;n=l.length*1+m.length*2;m=l.length*3+m.length*4;l=c(r,j);p=l.map||l.lightMap||l instanceof THREE.ShaderMaterial?!0:!1;x=l instanceof THREE.MeshBasicMaterial&&!l.envMap||l instanceof THREE.MeshDepthMaterial?!1:l&&l.shading!==void 0&&l.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;w=l.vertexColors?l.vertexColors:!1;j.__vertexArray=new Float32Array(q*3);if(x)j.__normalArray=new Float32Array(q*3);if(k.hasTangents)j.__tangentArray=
|
|
|
|
-new Float32Array(q*4);if(w)j.__colorArray=new Float32Array(q*3);if(p){if(k.faceUvs.length>0||k.faceVertexUvs.length>0)j.__uvArray=new Float32Array(q*2);if(k.faceUvs.length>1||k.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(q*2)}if(r.geometry.skinWeights.length&&r.geometry.skinIndices.length)j.__skinVertexAArray=new Float32Array(q*4),j.__skinVertexBArray=new Float32Array(q*4),j.__skinIndexArray=new Float32Array(q*4),j.__skinWeightArray=new Float32Array(q*4);j.__faceArray=new Uint16Array(n*3);
|
|
|
|
-j.__lineArray=new Uint16Array(m*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];r=0;for(k=j.numMorphTargets;r<k;r++)j.__morphTargetsArrays.push(new Float32Array(q*3))}j.__needsSmoothNormals=x===THREE.SmoothShading;j.__uvType=p;j.__vertexColorType=w;j.__normalType=x;j.__webglFaceCount=n*3;j.__webglLineCount=m*2;if(l.attributes){if(j.__webglCustomAttributesList===void 0)j.__webglCustomAttributesList=[];n=void 0;for(n in l.attributes){var r=l.attributes[n],k={},F;for(F in r)k[F]=r[F];if(!k.__webglInitialized||
|
|
|
|
-k.createUniqueBuffers)k.__webglInitialized=!0,m=1,k.type==="v2"?m=2:k.type==="v3"?m=3:k.type==="v4"?m=4:k.type==="c"&&(m=3),k.size=m,k.array=new Float32Array(q*m),k.buffer=d.createBuffer(),k.buffer.belongsToAttribute=n,r.needsUpdate=!0,k.__original=r;j.__webglCustomAttributesList.push(k)}}j.__inittedArrays=!0;h.__dirtyVertices=!0;h.__dirtyMorphTargets=!0;h.__dirtyElements=!0;h.__dirtyUvs=!0;h.__dirtyNormals=!0;h.__dirtyTangents=!0;h.__dirtyColors=!0}}else if(f instanceof THREE.Ribbon){if(h=f.geometry,
|
|
|
|
-!h.__webglVertexBuffer)j=h,j.__webglVertexBuffer=d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.memory.geometries++,j=h,q=j.vertices.length,j.__vertexArray=new Float32Array(q*3),j.__colorArray=new Float32Array(q*3),j.__webglVertexCount=q,h.__dirtyVertices=!0,h.__dirtyColors=!0}else if(f instanceof THREE.Line){if(h=f.geometry,!h.__webglVertexBuffer)j=h,j.__webglVertexBuffer=d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.memory.geometries++,j=h,q=f,l=j.vertices.length,
|
|
|
|
-j.__vertexArray=new Float32Array(l*3),j.__colorArray=new Float32Array(l*3),j.__webglLineCount=l,b(j,q),h.__dirtyVertices=!0,h.__dirtyColors=!0}else if(f instanceof THREE.ParticleSystem&&(h=f.geometry,!h.__webglVertexBuffer))j=h,j.__webglVertexBuffer=d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.geometries++,j=h,q=f,l=j.vertices.length,j.__vertexArray=new Float32Array(l*3),j.__colorArray=new Float32Array(l*3),j.__sortArray=[],j.__webglParticleCount=l,b(j,q),h.__dirtyVertices=!0,h.__dirtyColors=
|
|
|
|
-!0;if(!f.__webglActive){if(f instanceof THREE.Mesh)for(i in h=f.geometry,h.geometryGroups)j=h.geometryGroups[i],y(g.__webglObjects,j,f);else f instanceof THREE.Ribbon||f instanceof THREE.Line||f instanceof THREE.ParticleSystem?(h=f.geometry,y(g.__webglObjects,h,f)):THREE.MarchingCubes!==void 0&&f instanceof THREE.MarchingCubes||f.immediateRenderCallback?g.__webglObjectsImmediate.push({object:f,opaque:null,transparent:null}):f instanceof THREE.Sprite&&g.__webglSprites.push(f);f.__webglActive=!0}a.__objectsAdded.splice(0,
|
|
|
|
-1)}for(;a.__objectsRemoved.length;){f=a.__objectsRemoved[0];g=a;if(f instanceof THREE.Mesh||f instanceof THREE.ParticleSystem||f instanceof THREE.Ribbon||f instanceof THREE.Line)I(g.__webglObjects,f);else if(f instanceof THREE.Sprite){g=g.__webglSprites;i=f;for(h=g.length-1;h>=0;h--)g[h]===i&&g.splice(h,1)}else(f instanceof THREE.MarchingCubes||f.immediateRenderCallback)&&I(g.__webglObjectsImmediate,f);f.__webglActive=!1;a.__objectsRemoved.splice(0,1)}f=0;for(g=a.__webglObjects.length;f<g;f++)if(F=
|
|
|
|
-a.__webglObjects[f].object,i=F.geometry,h=n=l=void 0,F instanceof THREE.Mesh){j=0;for(q=i.geometryGroupsList.length;j<q;j++)if(l=i.geometryGroupsList[j],h=c(F,l),n=h.attributes&&u(h),i.__dirtyVertices||i.__dirtyMorphTargets||i.__dirtyElements||i.__dirtyUvs||i.__dirtyNormals||i.__dirtyColors||i.__dirtyTangents||n)if(n=d.DYNAMIC_DRAW,r=!i.dynamic,l.__inittedArrays){var E=m=k=void 0,s=void 0,G=void 0,L=void 0,v=void 0,Z=void 0,$=void 0,X=void 0,P=void 0,R=E=L=void 0,z=void 0,A=void 0,B=void 0,Y=s=void 0,
|
|
|
|
-aa=void 0,T=s=$=P=void 0,U=void 0,M=B=A=z=v=void 0,J=s=B=A=z=M=B=A=z=M=B=A=z=void 0,W=void 0,N=L=void 0,S=void 0,V=void 0,ca=void 0,da=void 0,H=R=V=W=0,Q=0,ba=J=E=0,O=v=Y=0,t=0,ea=void 0,O=l.__vertexArray,S=l.__uvArray,t=l.__uv2Array,N=l.__normalArray,G=l.__tangentArray,aa=l.__colorArray,T=l.__skinVertexAArray,U=l.__skinVertexBArray,Z=l.__skinIndexArray,ga=l.__skinWeightArray,M=l.__morphTargetsArrays,p=l.__webglCustomAttributesList,o=void 0,o=l.__faceArray,ea=l.__lineArray,ha=l.__needsSmoothNormals,
|
|
|
|
-P=l.__vertexColorType,X=l.__uvType,L=l.__normalType,$=F.geometry,ia=$.__dirtyElements,ka=$.__dirtyUvs,pa=$.__dirtyNormals,qa=$.__dirtyTangents,ta=$.__dirtyColors,ca=$.__dirtyMorphTargets,da=$.vertices,x=l.faces3,w=l.faces4,fa=$.faces,oa=$.faceVertexUvs[0],ra=$.faceVertexUvs[1],ja=$.skinVerticesA,la=$.skinVerticesB,ma=$.skinIndices,na=$.skinWeights,sa=$.morphTargets;if($.__dirtyVertices){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=da[s.a].position,A=da[s.b].position,B=da[s.c].position,O[V]=z.x,O[V+1]=
|
|
|
|
-z.y,O[V+2]=z.z,O[V+3]=A.x,O[V+4]=A.y,O[V+5]=A.z,O[V+6]=B.x,O[V+7]=B.y,O[V+8]=B.z,V+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=da[s.a].position,A=da[s.b].position,B=da[s.c].position,s=da[s.d].position,O[V]=z.x,O[V+1]=z.y,O[V+2]=z.z,O[V+3]=A.x,O[V+4]=A.y,O[V+5]=A.z,O[V+6]=B.x,O[V+7]=B.y,O[V+8]=B.z,O[V+9]=s.x,O[V+10]=s.y,O[V+11]=s.z,V+=12;d.bindBuffer(d.ARRAY_BUFFER,l.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,O,n)}if(ca){V=0;for(ca=sa.length;V<ca;V++){k=O=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=
|
|
|
|
-sa[V].vertices[s.a].position,A=sa[V].vertices[s.b].position,B=sa[V].vertices[s.c].position,da=M[V],da[O]=z.x,da[O+1]=z.y,da[O+2]=z.z,da[O+3]=A.x,da[O+4]=A.y,da[O+5]=A.z,da[O+6]=B.x,da[O+7]=B.y,da[O+8]=B.z,O+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=sa[V].vertices[s.a].position,A=sa[V].vertices[s.b].position,B=sa[V].vertices[s.c].position,s=sa[V].vertices[s.d].position,da=M[V],da[O]=z.x,da[O+1]=z.y,da[O+2]=z.z,da[O+3]=A.x,da[O+4]=A.y,da[O+5]=A.z,da[O+6]=B.x,da[O+7]=B.y,da[O+8]=B.z,da[O+9]=s.x,da[O+
|
|
|
|
-10]=s.y,da[O+11]=s.z,O+=12;d.bindBuffer(d.ARRAY_BUFFER,l.__webglMorphTargetsBuffers[V]);d.bufferData(d.ARRAY_BUFFER,M[V],n)}}if(na.length){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=na[s.a],A=na[s.b],B=na[s.c],ga[v]=z.x,ga[v+1]=z.y,ga[v+2]=z.z,ga[v+3]=z.w,ga[v+4]=A.x,ga[v+5]=A.y,ga[v+6]=A.z,ga[v+7]=A.w,ga[v+8]=B.x,ga[v+9]=B.y,ga[v+10]=B.z,ga[v+11]=B.w,z=ma[s.a],A=ma[s.b],B=ma[s.c],Z[v]=z.x,Z[v+1]=z.y,Z[v+2]=z.z,Z[v+3]=z.w,Z[v+4]=A.x,Z[v+5]=A.y,Z[v+6]=A.z,Z[v+7]=A.w,Z[v+8]=B.x,Z[v+9]=B.y,Z[v+10]=B.z,
|
|
|
|
-Z[v+11]=B.w,z=ja[s.a],A=ja[s.b],B=ja[s.c],T[v]=z.x,T[v+1]=z.y,T[v+2]=z.z,T[v+3]=1,T[v+4]=A.x,T[v+5]=A.y,T[v+6]=A.z,T[v+7]=1,T[v+8]=B.x,T[v+9]=B.y,T[v+10]=B.z,T[v+11]=1,z=la[s.a],A=la[s.b],B=la[s.c],U[v]=z.x,U[v+1]=z.y,U[v+2]=z.z,U[v+3]=1,U[v+4]=A.x,U[v+5]=A.y,U[v+6]=A.z,U[v+7]=1,U[v+8]=B.x,U[v+9]=B.y,U[v+10]=B.z,U[v+11]=1,v+=12;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=na[s.a],A=na[s.b],B=na[s.c],M=na[s.d],ga[v]=z.x,ga[v+1]=z.y,ga[v+2]=z.z,ga[v+3]=z.w,ga[v+4]=A.x,ga[v+5]=A.y,ga[v+6]=A.z,ga[v+7]=A.w,
|
|
|
|
-ga[v+8]=B.x,ga[v+9]=B.y,ga[v+10]=B.z,ga[v+11]=B.w,ga[v+12]=M.x,ga[v+13]=M.y,ga[v+14]=M.z,ga[v+15]=M.w,z=ma[s.a],A=ma[s.b],B=ma[s.c],M=ma[s.d],Z[v]=z.x,Z[v+1]=z.y,Z[v+2]=z.z,Z[v+3]=z.w,Z[v+4]=A.x,Z[v+5]=A.y,Z[v+6]=A.z,Z[v+7]=A.w,Z[v+8]=B.x,Z[v+9]=B.y,Z[v+10]=B.z,Z[v+11]=B.w,Z[v+12]=M.x,Z[v+13]=M.y,Z[v+14]=M.z,Z[v+15]=M.w,z=ja[s.a],A=ja[s.b],B=ja[s.c],M=ja[s.d],T[v]=z.x,T[v+1]=z.y,T[v+2]=z.z,T[v+3]=1,T[v+4]=A.x,T[v+5]=A.y,T[v+6]=A.z,T[v+7]=1,T[v+8]=B.x,T[v+9]=B.y,T[v+10]=B.z,T[v+11]=1,T[v+12]=M.x,T[v+
|
|
|
|
-13]=M.y,T[v+14]=M.z,T[v+15]=1,z=la[s.a],A=la[s.b],B=la[s.c],s=la[s.d],U[v]=z.x,U[v+1]=z.y,U[v+2]=z.z,U[v+3]=1,U[v+4]=A.x,U[v+5]=A.y,U[v+6]=A.z,U[v+7]=1,U[v+8]=B.x,U[v+9]=B.y,U[v+10]=B.z,U[v+11]=1,U[v+12]=s.x,U[v+13]=s.y,U[v+14]=s.z,U[v+15]=1,v+=16;v>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinVertexABuffer),d.bufferData(d.ARRAY_BUFFER,T,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinVertexBBuffer),d.bufferData(d.ARRAY_BUFFER,U,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinIndicesBuffer),d.bufferData(d.ARRAY_BUFFER,
|
|
|
|
-Z,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinWeightsBuffer),d.bufferData(d.ARRAY_BUFFER,ga,n))}if(ta&&P){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],v=s.vertexColors,Z=s.color,v.length===3&&P===THREE.VertexColors?(s=v[0],T=v[1],U=v[2]):U=T=s=Z,aa[Y]=s.r,aa[Y+1]=s.g,aa[Y+2]=s.b,aa[Y+3]=T.r,aa[Y+4]=T.g,aa[Y+5]=T.b,aa[Y+6]=U.r,aa[Y+7]=U.g,aa[Y+8]=U.b,Y+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],v=s.vertexColors,Z=s.color,v.length===4&&P===THREE.VertexColors?(s=v[0],T=v[1],U=v[2],v=v[3]):v=U=T=s=Z,aa[Y]=s.r,
|
|
|
|
-aa[Y+1]=s.g,aa[Y+2]=s.b,aa[Y+3]=T.r,aa[Y+4]=T.g,aa[Y+5]=T.b,aa[Y+6]=U.r,aa[Y+7]=U.g,aa[Y+8]=U.b,aa[Y+9]=v.r,aa[Y+10]=v.g,aa[Y+11]=v.b,Y+=12;Y>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglColorBuffer),d.bufferData(d.ARRAY_BUFFER,aa,n))}if(qa&&$.hasTangents){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],$=s.vertexTangents,Y=$[0],aa=$[1],P=$[2],G[J]=Y.x,G[J+1]=Y.y,G[J+2]=Y.z,G[J+3]=Y.w,G[J+4]=aa.x,G[J+5]=aa.y,G[J+6]=aa.z,G[J+7]=aa.w,G[J+8]=P.x,G[J+9]=P.y,G[J+10]=P.z,G[J+11]=P.w,J+=12;k=0;for(m=w.length;k<m;k++)s=
|
|
|
|
-fa[w[k]],$=s.vertexTangents,Y=$[0],aa=$[1],P=$[2],$=$[3],G[J]=Y.x,G[J+1]=Y.y,G[J+2]=Y.z,G[J+3]=Y.w,G[J+4]=aa.x,G[J+5]=aa.y,G[J+6]=aa.z,G[J+7]=aa.w,G[J+8]=P.x,G[J+9]=P.y,G[J+10]=P.z,G[J+11]=P.w,G[J+12]=$.x,G[J+13]=$.y,G[J+14]=$.z,G[J+15]=$.w,J+=16;d.bindBuffer(d.ARRAY_BUFFER,l.__webglTangentBuffer);d.bufferData(d.ARRAY_BUFFER,G,n)}if(pa&&L){k=0;for(m=x.length;k<m;k++)if(s=fa[x[k]],G=s.vertexNormals,L=s.normal,G.length===3&&ha)for(J=0;J<3;J++)L=G[J],N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;else for(J=0;J<
|
|
|
|
-3;J++)N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;k=0;for(m=w.length;k<m;k++)if(s=fa[w[k]],G=s.vertexNormals,L=s.normal,G.length===4&&ha)for(J=0;J<4;J++)L=G[J],N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;else for(J=0;J<4;J++)N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;d.bindBuffer(d.ARRAY_BUFFER,l.__webglNormalBuffer);d.bufferData(d.ARRAY_BUFFER,N,n)}if(ka&&oa&&X){k=0;for(m=x.length;k<m;k++)if(E=x[k],E=oa[E],E!==void 0)for(J=0;J<3;J++)N=E[J],S[R]=N.u,S[R+1]=N.v,R+=2;k=0;for(m=w.length;k<m;k++)if(E=w[k],E=oa[E],E!==void 0)for(J=
|
|
|
|
-0;J<4;J++)N=E[J],S[R]=N.u,S[R+1]=N.v,R+=2;R>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglUVBuffer),d.bufferData(d.ARRAY_BUFFER,S,n))}if(ka&&ra&&X){k=0;for(m=x.length;k<m;k++)if(E=x[k],R=ra[E],R!==void 0)for(J=0;J<3;J++)S=R[J],t[H]=S.u,t[H+1]=S.v,H+=2;k=0;for(m=w.length;k<m;k++)if(E=w[k],R=ra[E],R!==void 0)for(J=0;J<4;J++)S=R[J],t[H]=S.u,t[H+1]=S.v,H+=2;H>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglUV2Buffer),d.bufferData(d.ARRAY_BUFFER,t,n))}if(ia){k=0;for(m=x.length;k<m;k++)o[Q]=W,o[Q+1]=W+1,o[Q+2]=W+2,
|
|
|
|
-Q+=3,ea[ba]=W,ea[ba+1]=W+1,ea[ba+2]=W,ea[ba+3]=W+2,ea[ba+4]=W+1,ea[ba+5]=W+2,ba+=6,W+=3;k=0;for(m=w.length;k<m;k++)o[Q]=W,o[Q+1]=W+1,o[Q+2]=W+3,o[Q+3]=W+1,o[Q+4]=W+2,o[Q+5]=W+3,Q+=6,ea[ba]=W,ea[ba+1]=W+1,ea[ba+2]=W,ea[ba+3]=W+3,ea[ba+4]=W+1,ea[ba+5]=W+2,ea[ba+6]=W+2,ea[ba+7]=W+3,ba+=8,W+=4;d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,l.__webglFaceBuffer);d.bufferData(d.ELEMENT_ARRAY_BUFFER,o,n);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,l.__webglLineBuffer);d.bufferData(d.ELEMENT_ARRAY_BUFFER,ea,n)}if(p){J=0;for(W=
|
|
|
|
-p.length;J<W;J++)if(o=p[J],o.__original.needsUpdate){t=0;if(o.size===1)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],o.array[t]=o.value[s.a],o.array[t+1]=o.value[s.b],o.array[t+2]=o.value[s.c],t+=3;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],o.array[t]=o.value[s.a],o.array[t+1]=o.value[s.b],o.array[t+2]=o.value[s.c],o.array[t+3]=o.value[s.d],t+=4}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)ea=o.value[x[k]],o.array[t]=ea,o.array[t+1]=ea,o.array[t+2]=ea,
|
|
|
|
-t+=3;k=0;for(m=w.length;k<m;k++)ea=o.value[w[k]],o.array[t]=ea,o.array[t+1]=ea,o.array[t+2]=ea,o.array[t+3]=ea,t+=4}}else if(o.size===2)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,t+=6;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=o.value[s.d],o.array[t]=z.x,o.array[t+1]=z.y,
|
|
|
|
-o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,o.array[t+6]=s.x,o.array[t+7]=s.y,t+=8}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,t+=6;k=0;for(m=w.length;k<m;k++)s=B=A=z=ea=o.value[w[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,o.array[t+6]=s.x,o.array[t+7]=s.y,t+=8}}else if(o.size===3)if(H=
|
|
|
|
-o.type==="c"?["r","g","b"]:["x","y","z"],o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],t+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=o.value[s.d],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+
|
|
|
|
-2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],o.array[t+9]=s[H[0]],o.array[t+10]=s[H[1]],o.array[t+11]=s[H[2]],t+=12}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],t+=9;k=0;for(m=w.length;k<m;k++)s=
|
|
|
|
-B=A=z=ea=o.value[w[k]],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],o.array[t+9]=s[H[0]],o.array[t+10]=s[H[1]],o.array[t+11]=s[H[2]],t+=12}}else if(o.size===4)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+
|
|
|
|
-4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,t+=12;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=o.value[s.d],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,o.array[t+12]=s.x,o.array[t+13]=s.y,o.array[t+14]=s.z,o.array[t+15]=
|
|
|
|
-s.w,t+=16}else if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,t+=12;k=0;for(m=w.length;k<m;k++)s=B=A=z=ea=o.value[w[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,
|
|
|
|
-o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,o.array[t+12]=s.x,o.array[t+13]=s.y,o.array[t+14]=s.z,o.array[t+15]=s.w,t+=16}d.bindBuffer(d.ARRAY_BUFFER,o.buffer);d.bufferData(d.ARRAY_BUFFER,o.array,n)}}r&&(delete l.__inittedArrays,delete l.__colorArray,delete l.__normalArray,delete l.__tangentArray,delete l.__uvArray,delete l.__uv2Array,delete l.__faceArray,delete l.__vertexArray,delete l.__lineArray,delete l.__skinVertexAArray,delete l.__skinVertexBArray,delete l.__skinIndexArray,delete l.__skinWeightArray)}i.__dirtyVertices=
|
|
|
|
-!1;i.__dirtyMorphTargets=!1;i.__dirtyElements=!1;i.__dirtyUvs=!1;i.__dirtyNormals=!1;i.__dirtyColors=!1;i.__dirtyTangents=!1;h.attributes&&K(h)}else if(F instanceof THREE.Ribbon){if(i.__dirtyVertices||i.__dirtyColors){h=i;F=d.DYNAMIC_DRAW;k=j=k=r=r=void 0;m=h.vertices;q=h.colors;p=m.length;l=q.length;x=h.__vertexArray;n=h.__colorArray;w=h.__dirtyColors;if(h.__dirtyVertices){for(r=0;r<p;r++)k=m[r].position,j=r*3,x[j]=k.x,x[j+1]=k.y,x[j+2]=k.z;d.bindBuffer(d.ARRAY_BUFFER,h.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,
|
|
|
|
-x,F)}if(w){for(r=0;r<l;r++)k=q[r],j=r*3,n[j]=k.r,n[j+1]=k.g,n[j+2]=k.b;d.bindBuffer(d.ARRAY_BUFFER,h.__webglColorBuffer);d.bufferData(d.ARRAY_BUFFER,n,F)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(F instanceof THREE.Line){h=c(F,l);n=h.attributes&&u(h);if(i.__dirtyVertices||i.__dirtyColors||n){F=i;j=d.DYNAMIC_DRAW;p=q=W=m=fa=void 0;m=F.vertices;l=F.colors;p=m.length;n=l.length;x=F.__vertexArray;r=F.__colorArray;w=F.__dirtyColors;k=F.__webglCustomAttributesList;R=ba=Q=H=W=fa=void 0;if(F.__dirtyVertices){for(fa=
|
|
|
|
-0;fa<p;fa++)W=m[fa].position,q=fa*3,x[q]=W.x,x[q+1]=W.y,x[q+2]=W.z;d.bindBuffer(d.ARRAY_BUFFER,F.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,x,j)}if(w){for(m=0;m<n;m++)p=l[m],q=m*3,r[q]=p.r,r[q+1]=p.g,r[q+2]=p.b;d.bindBuffer(d.ARRAY_BUFFER,F.__webglColorBuffer);d.bufferData(d.ARRAY_BUFFER,r,j)}if(k){fa=0;for(W=k.length;fa<W;fa++)if(R=k[fa],R.needsUpdate&&(R.boundTo===void 0||R.boundTo==="vertices")){q=0;Q=R.value.length;if(R.size===1)for(H=0;H<Q;H++)R.array[H]=R.value[H];else if(R.size===2)for(H=
|
|
|
|
-0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,q+=2;else if(R.size===3)if(R.type==="c")for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.r,R.array[q+1]=ba.g,R.array[q+2]=ba.b,q+=3;else for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,R.array[q+2]=ba.z,q+=3;else if(R.size===4)for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,R.array[q+2]=ba.z,R.array[q+3]=ba.w,q+=4;d.bindBuffer(d.ARRAY_BUFFER,R.buffer);d.bufferData(d.ARRAY_BUFFER,R.array,j)}}}i.__dirtyVertices=!1;
|
|
|
|
-i.__dirtyColors=!1;h.attributes&&K(h)}else if(F instanceof THREE.ParticleSystem)h=c(F,l),n=h.attributes&&u(h),(i.__dirtyVertices||i.__dirtyColors||F.sortParticles||n)&&e(i,d.DYNAMIC_DRAW,F),i.__dirtyVertices=!1,i.__dirtyColors=!1,h.attributes&&K(h)};this.initMaterial=function(a,b,c,e){var f,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 j=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(j.uniforms);a.vertexShader=j.vertexShader;a.fragmentShader=j.fragmentShader}var n,k,m;n=m=j=0;for(k=b.length;n<k;n++)h=b[n],h instanceof THREE.SpotLight&&m++,h instanceof THREE.DirectionalLight&&m++,h instanceof THREE.PointLight&&j++;j+m<=la?n=m:(n=Math.ceil(la*m/(j+m)),j=la-n);h={directional:n,
|
|
|
|
-point:j};j=m=0;for(n=b.length;j<n;j++)k=b[j],k instanceof THREE.SpotLight&&k.castShadow&&m++;var r=50;if(e!==void 0&&e instanceof THREE.SkinnedMesh)r=e.bones.length;var p;a:{n=a.fragmentShader;k=a.vertexShader;var j=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:h.directional,maxPointLights:h.point,
|
|
|
|
-maxBones:r,shadowMapEnabled:this.shadowMapEnabled&&e.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel},u,e=[];i?e.push(i):(e.push(n),e.push(k));for(u in c)e.push(u),e.push(c[u]);i=e.join();u=0;for(e=ca.length;u<e;u++)if(ca[u].code===i){p=ca[u].program;break a}u=d.createProgram();e=[Wa?"#define VERTEX_TEXTURES":"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?
|
|
|
|
-"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_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.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");
|
|
|
|
|
|
+Array&&n.image.length===6){if(m=n,m.image.length===6)if(m.needsUpdate){if(!m.image.__webglTextureCube)m.image.__webglTextureCube=d.createTexture();d.activeTexture(d.TEXTURE0+l);d.bindTexture(d.TEXTURE_CUBE_MAP,m.image.__webglTextureCube);l=X(d.TEXTURE_CUBE_MAP,m,m.image[0]);for(n=0;n<6;n++)d.texImage2D(d.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,m.image[n]);l&&d.generateMipmap(d.TEXTURE_CUBE_MAP);m.needsUpdate=!1}else d.activeTexture(d.TEXTURE0+l),d.bindTexture(d.TEXTURE_CUBE_MAP,
|
|
|
|
+m.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(m=n,d.activeTexture(d.TEXTURE0+l),d.bindTexture(d.TEXTURE_CUBE_MAP,m.__webglTexture)):oa(n,l)}else if(x==="tv"){if(!m._array){m._array=[];x=0;for(r=m.texture.length;x<r;x++)m._array[x]=l+x}d.uniform1iv(n,m._array);x=0;for(r=m.texture.length;x<r;x++)(n=m.texture[x])&&oa(n,m._array[x])}(e instanceof THREE.ShaderMaterial||e instanceof THREE.MeshPhongMaterial||e.envMap)&&i.cameraPosition!==null&&d.uniform3f(i.cameraPosition,a.position.x,
|
|
|
|
+a.position.y,a.position.z);(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.ShaderMaterial||e.skinning)&&i.viewMatrix!==null&&d.uniformMatrix4fv(i.viewMatrix,!1,Ka);e.skinning&&(d.uniformMatrix4fv(i.cameraInverseMatrix,!1,Ka),d.uniformMatrix4fv(i.boneGlobalMatrices,!1,f.boneMatrices))}d.uniformMatrix4fv(i.modelViewMatrix,!1,f._modelViewMatrixArray);i.normalMatrix&&d.uniformMatrix3fv(i.normalMatrix,!1,f._normalMatrixArray);(e instanceof THREE.ShaderMaterial||
|
|
|
|
+e.envMap||e.skinning||f.receiveShadow)&&i.objectMatrix!==null&&d.uniformMatrix4fv(i.objectMatrix,!1,f._objectMatrixArray);return g}function qa(a,b,c){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);c&&THREE.Matrix4.makeInvert3x3(a._modelViewMatrix).transposeIntoArray(a._normalMatrixArray)}function G(a){if(Fa!==a.doubleSided)a.doubleSided?d.disable(d.CULL_FACE):d.enable(d.CULL_FACE),Fa=a.doubleSided;if(Ba!==a.flipSided)a.flipSided?d.frontFace(d.CW):d.frontFace(d.CCW),
|
|
|
|
+Ba=a.flipSided}function ia(a){wa!==a&&(a?d.enable(d.DEPTH_TEST):d.disable(d.DEPTH_TEST),wa=a)}function ka(a){Oa!==a&&(d.depthMask(a),Oa=a)}function F(a,b,c){Sa!==a&&(a?d.enable(d.POLYGON_OFFSET_FILL):d.disable(d.POLYGON_OFFSET_FILL),Sa=a);if(a&&(Ta!==b||Ua!==c))d.polygonOffset(b,c),Ta=b,Ua=c}function M(a){if(a!==ya){switch(a){case THREE.AdditiveBlending:d.blendEquation(d.FUNC_ADD);d.blendFunc(d.SRC_ALPHA,d.ONE);break;case THREE.SubtractiveBlending:d.blendEquation(d.FUNC_ADD);d.blendFunc(d.ZERO,d.ONE_MINUS_SRC_COLOR);
|
|
|
|
+break;case THREE.MultiplyBlending:d.blendEquation(d.FUNC_ADD);d.blendFunc(d.ZERO,d.SRC_COLOR);break;default:d.blendEquationSeparate(d.FUNC_ADD,d.FUNC_ADD),d.blendFuncSeparate(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA,d.ONE,d.ONE_MINUS_SRC_ALPHA)}ya=a}}function L(a,b){var c;a==="fragment"?c=d.createShader(d.FRAGMENT_SHADER):a==="vertex"&&(c=d.createShader(d.VERTEX_SHADER));d.shaderSource(c,b);d.compileShader(c);if(!d.getShaderParameter(c,d.COMPILE_STATUS))return console.error(d.getShaderInfoLog(c)),console.error(b),
|
|
|
|
+null;return c}function X(a,b,c){return(c.width&c.width-1)===0&&(c.height&c.height-1)===0?(d.texParameteri(a,d.TEXTURE_WRAP_S,N(b.wrapS)),d.texParameteri(a,d.TEXTURE_WRAP_T,N(b.wrapT)),d.texParameteri(a,d.TEXTURE_MAG_FILTER,N(b.magFilter)),d.texParameteri(a,d.TEXTURE_MIN_FILTER,N(b.minFilter)),!0):(d.texParameteri(a,d.TEXTURE_WRAP_S,d.CLAMP_TO_EDGE),d.texParameteri(a,d.TEXTURE_WRAP_T,d.CLAMP_TO_EDGE),d.texParameteri(a,d.TEXTURE_MAG_FILTER,ta(b.magFilter)),d.texParameteri(a,d.TEXTURE_MIN_FILTER,ta(b.minFilter)),
|
|
|
|
+!1)}function oa(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=d.createTexture(),D.info.memory.textures++;d.activeTexture(d.TEXTURE0+b);d.bindTexture(d.TEXTURE_2D,a.__webglTexture);var c=X(d.TEXTURE_2D,a,a.image);a instanceof THREE.DataTexture?d.texImage2D(d.TEXTURE_2D,0,N(a.format),a.image.width,a.image.height,0,N(a.format),d.UNSIGNED_BYTE,a.image.data):d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,a.image);c&&d.generateMipmap(d.TEXTURE_2D);a.needsUpdate=!1;
|
|
|
|
+if(a.onUpdated)a.onUpdated()}else d.activeTexture(d.TEXTURE0+b),d.bindTexture(d.TEXTURE_2D,a.__webglTexture)}function P(a,b){d.bindRenderbuffer(d.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_COMPONENT16,b.width,b.height),d.framebufferRenderbuffer(d.FRAMEBUFFER,d.DEPTH_ATTACHMENT,d.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_STENCIL,b.width,b.height),d.framebufferRenderbuffer(d.FRAMEBUFFER,d.DEPTH_STENCIL_ATTACHMENT,
|
|
|
|
+d.RENDERBUFFER,a)):d.renderbufferStorage(d.RENDERBUFFER,d.RGBA4,b.width,b.height)}function pa(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(a.depthBuffer===void 0)a.depthBuffer=!0;if(a.stencilBuffer===void 0)a.stencilBuffer=!0;a.__webglTexture=d.createTexture();if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];d.bindTexture(d.TEXTURE_CUBE_MAP,a.__webglTexture);X(d.TEXTURE_CUBE_MAP,a,a);for(var c=0;c<6;c++){a.__webglFramebuffer[c]=d.createFramebuffer();a.__webglRenderbuffer[c]=
|
|
|
|
+d.createRenderbuffer();d.texImage2D(d.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,N(a.format),a.width,a.height,0,N(a.format),N(a.type),null);var e=a,f=d.TEXTURE_CUBE_MAP_POSITIVE_X+c;d.bindFramebuffer(d.FRAMEBUFFER,a.__webglFramebuffer[c]);d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,f,e.__webglTexture,0);P(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer=d.createFramebuffer(),a.__webglRenderbuffer=d.createRenderbuffer(),d.bindTexture(d.TEXTURE_2D,a.__webglTexture),X(d.TEXTURE_2D,a,a),d.texImage2D(d.TEXTURE_2D,
|
|
|
|
+0,N(a.format),a.width,a.height,0,N(a.format),N(a.type),null),c=d.TEXTURE_2D,d.bindFramebuffer(d.FRAMEBUFFER,a.__webglFramebuffer),d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,c,a.__webglTexture,0),d.bindRenderbuffer(d.RENDERBUFFER,a.__webglRenderbuffer),P(a.__webglRenderbuffer,a);b?d.bindTexture(d.TEXTURE_CUBE_MAP,null):d.bindTexture(d.TEXTURE_2D,null);d.bindRenderbuffer(d.RENDERBUFFER,null);d.bindFramebuffer(d.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,
|
|
|
|
+c=a.width,a=a.height,f=e=0):(b=null,c=Ha,a=Da,e=Pa,f=Qa);b!==ha&&(d.bindFramebuffer(d.FRAMEBUFFER,b),d.viewport(e,f,c,a),ha=b)}function ta(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return d.NEAREST;default:return d.LINEAR}}function N(a){switch(a){case THREE.RepeatWrapping:return d.REPEAT;case THREE.ClampToEdgeWrapping:return d.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return d.MIRRORED_REPEAT;case THREE.NearestFilter:return d.NEAREST;
|
|
|
|
+case THREE.NearestMipMapNearestFilter:return d.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return d.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return d.LINEAR;case THREE.LinearMipMapNearestFilter:return d.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return d.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return d.BYTE;case THREE.UnsignedByteType:return d.UNSIGNED_BYTE;case THREE.ShortType:return d.SHORT;case THREE.UnsignedShortType:return d.UNSIGNED_SHORT;case THREE.IntType:return d.INT;
|
|
|
|
+case THREE.UnsignedShortType:return d.UNSIGNED_INT;case THREE.FloatType:return d.FLOAT;case THREE.AlphaFormat:return d.ALPHA;case THREE.RGBFormat:return d.RGB;case THREE.RGBAFormat:return d.RGBA;case THREE.LuminanceFormat:return d.LUMINANCE;case THREE.LuminanceAlphaFormat:return d.LUMINANCE_ALPHA}return 0}var a=a||{},ma=a.canvas!==void 0?a.canvas:document.createElement("canvas"),va=a.precision!==void 0?a.precision:"highp",xa=a.antialias!==void 0?a.antialias:!1,Aa=a.stencil!==void 0?a.stencil:!0,Xa=
|
|
|
|
+a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:!1,Q=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),S=a.clearAlpha!==void 0?a.clearAlpha:0,la=a.maxLights!==void 0?a.maxLights:4;this.domElement=ma;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapBias=0.0039;this.shadowMapDarkness=
|
|
|
|
+0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0}};var D=this,d,ca=[],ra=null,ha=null,na=-1,sa=null,Ea=0,Fa=null,Ba=null,ya=null,wa=null,Oa=null,Sa=null,Ta=null,Ua=null,Ia=null,Pa=0,Qa=0,Ha=0,Da=0,ua=[new THREE.Vector4,new THREE.Vector4,
|
|
|
|
+new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],za=new THREE.Matrix4,La=new Float32Array(16),Ka=new Float32Array(16),Ca=new THREE.Vector4,Ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},ja,Ja=[],Ga,Na,w={},Va=!1;d=function(){var a;try{if(!(a=ma.getContext("experimental-webgl",{antialias:xa,stencil:Aa,preserveDrawingBuffer:Xa})))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}();d.clearColor(0,0,0,1);d.clearDepth(1);d.clearStencil(0);d.enable(d.DEPTH_TEST);d.depthFunc(d.LEQUAL);d.frontFace(d.CCW);d.cullFace(d.BACK);d.enable(d.CULL_FACE);d.enable(d.BLEND);d.blendEquation(d.FUNC_ADD);d.blendFunc(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA);d.clearColor(Q.r,Q.g,Q.b,S);(function(){w.vertices=new Float32Array(16);
|
|
|
|
+w.faces=new Uint16Array(6);var a=0;w.vertices[a++]=-1;w.vertices[a++]=-1;w.vertices[a++]=0;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=-1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=1;w.vertices[a++]=0;w.vertices[a++]=-1;w.vertices[a++]=1;w.vertices[a++]=0;a=w.vertices[a++]=0;w.faces[a++]=0;w.faces[a++]=1;w.faces[a++]=2;w.faces[a++]=0;w.faces[a++]=2;w.faces[a++]=3;w.vertexBuffer=d.createBuffer();w.elementBuffer=d.createBuffer();d.bindBuffer(d.ARRAY_BUFFER,
|
|
|
|
+w.vertexBuffer);d.bufferData(d.ARRAY_BUFFER,w.vertices,d.STATIC_DRAW);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,w.elementBuffer);d.bufferData(d.ELEMENT_ARRAY_BUFFER,w.faces,d.STATIC_DRAW);w.program=d.createProgram();d.attachShader(w.program,L("fragment",THREE.ShaderLib.sprite.fragmentShader));d.attachShader(w.program,L("vertex",THREE.ShaderLib.sprite.vertexShader));d.linkProgram(w.program);w.attributes={};w.uniforms={};w.attributes.position=d.getAttribLocation(w.program,"position");w.attributes.uv=d.getAttribLocation(w.program,
|
|
|
|
+"uv");w.uniforms.uvOffset=d.getUniformLocation(w.program,"uvOffset");w.uniforms.uvScale=d.getUniformLocation(w.program,"uvScale");w.uniforms.rotation=d.getUniformLocation(w.program,"rotation");w.uniforms.scale=d.getUniformLocation(w.program,"scale");w.uniforms.alignment=d.getUniformLocation(w.program,"alignment");w.uniforms.color=d.getUniformLocation(w.program,"color");w.uniforms.map=d.getUniformLocation(w.program,"map");w.uniforms.opacity=d.getUniformLocation(w.program,"opacity");w.uniforms.useScreenCoordinates=
|
|
|
|
+d.getUniformLocation(w.program,"useScreenCoordinates");w.uniforms.affectedByDistance=d.getUniformLocation(w.program,"affectedByDistance");w.uniforms.screenPosition=d.getUniformLocation(w.program,"screenPosition");w.uniforms.modelViewMatrix=d.getUniformLocation(w.program,"modelViewMatrix");w.uniforms.projectionMatrix=d.getUniformLocation(w.program,"projectionMatrix")})();(function(){var a=THREE.ShaderLib.depthRGBA,b=THREE.UniformsUtils.clone(a.uniforms);Ga=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,
|
|
|
|
+vertexShader:a.vertexShader,uniforms:b});Na=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:b,morphTargets:!0});Ga._shadowPass=!0;Na._shadowPass=!0})();this.context=d;var Wa=d.getParameter(d.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;this.getContext=function(){return d};this.supportsVertexTextures=function(){return Wa};this.setSize=function(a,b){ma.width=a;ma.height=b;this.setViewport(0,0,ma.width,ma.height)};this.setViewport=function(a,b,c,e){Pa=a;Qa=b;Ha=c;
|
|
|
|
+Da=e;d.viewport(Pa,Qa,Ha,Da)};this.setScissor=function(a,b,c,e){d.scissor(a,b,c,e)};this.enableScissorTest=function(a){a?d.enable(d.SCISSOR_TEST):d.disable(d.SCISSOR_TEST)};this.setClearColorHex=function(a,b){Q.setHex(a);S=b;d.clearColor(Q.r,Q.g,Q.b,S)};this.setClearColor=function(a,b){Q.copy(a);S=b;d.clearColor(Q.r,Q.g,Q.b,S)};this.getClearColor=function(){return Q};this.getClearAlpha=function(){return S};this.clear=function(a,b,c){var e=0;if(a===void 0||a)e|=d.COLOR_BUFFER_BIT;if(b===void 0||b)e|=
|
|
|
|
+d.DEPTH_BUFFER_BIT;if(c===void 0||c)e|=d.STENCIL_BUFFER_BIT;d.clear(e)};this.clearTarget=function(a,b,c,d){pa(a);this.clear(b,c,d)};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];d.deleteBuffer(c.__webglVertexBuffer);d.deleteBuffer(c.__webglNormalBuffer);d.deleteBuffer(c.__webglTangentBuffer);
|
|
|
|
+d.deleteBuffer(c.__webglColorBuffer);d.deleteBuffer(c.__webglUVBuffer);d.deleteBuffer(c.__webglUV2Buffer);d.deleteBuffer(c.__webglSkinVertexABuffer);d.deleteBuffer(c.__webglSkinVertexBBuffer);d.deleteBuffer(c.__webglSkinIndicesBuffer);d.deleteBuffer(c.__webglSkinWeightsBuffer);d.deleteBuffer(c.__webglFaceBuffer);d.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var e=0,f=c.numMorphTargets;e<f;e++)d.deleteBuffer(c.__webglMorphTargetsBuffers[e]);if(c.__webglCustomAttributesList)for(e in e=
|
|
|
|
+void 0,c.__webglCustomAttributesList)d.deleteBuffer(c.__webglCustomAttributesList[e].buffer);D.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,d.deleteBuffer(a.__webglVertexBuffer),
|
|
|
|
+d.deleteBuffer(a.__webglColorBuffer),D.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,d.deleteTexture(a.__webglTexture),D.info.memory.textures--};this.updateShadowMap=function(a,b){p(a,b)};this.render=function(a,b,c,e){var f,g,q,l,C=a.lights,u=a.fog;na=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);this.shadowMapEnabled&&this.shadowMapAutoUpdate&&p(a,b);D.info.render.calls=0;D.info.render.vertices=0;D.info.render.faces=0;b.parent===void 0&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),
|
|
|
|
+a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(Ka);b.projectionMatrix.flattenToArray(La);za.multiply(b.projectionMatrix,b.matrixWorldInverse);i(za);pa(c);(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);l=a.__webglObjects;e=0;for(f=l.length;e<f;e++)if(g=l[e],q=g.object,g.render=!1,q.visible&&(!(q instanceof THREE.Mesh)||!q.frustumCulled||h(q))){q.matrixWorld.flattenToArray(q._objectMatrixArray);
|
|
|
|
+qa(q,b,!0);var k=g,m=k.object,y=k.buffer,x=void 0,x=x=void 0,x=m.material;if(x instanceof THREE.MeshFaceMaterial){if(x=y.materialIndex,x>=0)x=m.geometry.materials[x],x.transparent?(k.transparent=x,k.opaque=null):(k.opaque=x,k.transparent=null)}else if(x)x.transparent?(k.transparent=x,k.opaque=null):(k.opaque=x,k.transparent=null);g.render=!0;if(this.sortObjects)q.renderDepth?g.z=q.renderDepth:(Ca.copy(q.position),za.multiplyVector3(Ca),g.z=Ca.z)}this.sortObjects&&l.sort(r);l=a.__webglObjectsImmediate;
|
|
|
|
+e=0;for(f=l.length;e<f;e++)if(g=l[e],q=g.object,q.visible)q.matrixAutoUpdate&&q.matrixWorld.flattenToArray(q._objectMatrixArray),qa(q,b,!0),q=g.object.material,q.transparent?(g.transparent=q,g.opaque=null):(g.opaque=q,g.transparent=null);a.overrideMaterial?(M(a.overrideMaterial.blending),ia(a.overrideMaterial.depthTest),ka(a.overrideMaterial.depthWrite),F(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),j(a.__webglObjects,!1,"",b,C,u,!0,
|
|
|
|
+a.overrideMaterial),n(a.__webglObjectsImmediate,"",b,C,u,!1,a.overrideMaterial)):(M(THREE.NormalBlending),j(a.__webglObjects,!0,"opaque",b,C,u,!1),n(a.__webglObjectsImmediate,"opaque",b,C,u,!1),j(a.__webglObjects,!1,"transparent",b,C,u,!0),n(a.__webglObjectsImmediate,"transparent",b,C,u,!0));if(a.__webglSprites.length){q=w.attributes;C=w.uniforms;u=Da/Ha;e=[];f=Ha*0.5;l=Da*0.5;g=!0;d.useProgram(w.program);ra=w.program;sa=wa=ya=-1;Va||(d.enableVertexAttribArray(w.attributes.position),d.enableVertexAttribArray(w.attributes.uv),
|
|
|
|
+Va=!0);d.disable(d.CULL_FACE);d.enable(d.BLEND);d.depthMask(!0);d.bindBuffer(d.ARRAY_BUFFER,w.vertexBuffer);d.vertexAttribPointer(q.position,2,d.FLOAT,!1,16,0);d.vertexAttribPointer(q.uv,2,d.FLOAT,!1,16,8);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,w.elementBuffer);d.uniformMatrix4fv(C.projectionMatrix,!1,La);d.activeTexture(d.TEXTURE0);d.uniform1i(C.map,0);q=0;for(k=a.__webglSprites.length;q<k;q++)if(m=a.__webglSprites[q],m.visible&&m.opacity!==0)m.useScreenCoordinates?m.z=-m.position.z:(m._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,
|
|
|
|
+m.matrixWorld,m._modelViewMatrixArray),m.z=-m._modelViewMatrix.n34);a.__webglSprites.sort(r);q=0;for(k=a.__webglSprites.length;q<k;q++)m=a.__webglSprites[q],m.visible&&m.opacity!==0&&m.map&&m.map.image&&m.map.image.width&&(m.useScreenCoordinates?(d.uniform1i(C.useScreenCoordinates,1),d.uniform3f(C.screenPosition,(m.position.x-f)/f,(l-m.position.y)/l,Math.max(0,Math.min(1,m.position.z)))):(d.uniform1i(C.useScreenCoordinates,0),d.uniform1i(C.affectedByDistance,m.affectedByDistance?1:0),d.uniformMatrix4fv(C.modelViewMatrix,
|
|
|
|
+!1,m._modelViewMatrixArray)),b=m.map.image.width/(m.scaleByViewport?Da:1),e[0]=b*u*m.scale.x,e[1]=b*m.scale.y,d.uniform2f(C.uvScale,m.uvScale.x,m.uvScale.y),d.uniform2f(C.uvOffset,m.uvOffset.x,m.uvOffset.y),d.uniform2f(C.alignment,m.alignment.x,m.alignment.y),d.uniform1f(C.opacity,m.opacity),d.uniform3f(C.color,m.color.r,m.color.g,m.color.b),d.uniform1f(C.rotation,m.rotation),d.uniform2fv(C.scale,e),m.mergeWith3D&&!g?(d.enable(d.DEPTH_TEST),g=!0):!m.mergeWith3D&&g&&(d.disable(d.DEPTH_TEST),g=!1),
|
|
|
|
+M(m.blending),oa(m.map,0),d.drawElements(d.TRIANGLES,6,d.UNSIGNED_SHORT,0));d.enable(d.CULL_FACE);d.enable(d.DEPTH_TEST);d.depthMask(Oa)}c&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(d.bindTexture(d.TEXTURE_CUBE_MAP,c.__webglTexture),d.generateMipmap(d.TEXTURE_CUBE_MAP),d.bindTexture(d.TEXTURE_CUBE_MAP,null)):(d.bindTexture(d.TEXTURE_2D,c.__webglTexture),d.generateMipmap(d.TEXTURE_2D),d.bindTexture(d.TEXTURE_2D,null)))};this.initWebGLObjects=
|
|
|
|
+function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[];for(;a.__objectsAdded.length;){var f=a.__objectsAdded[0],g=a,i=void 0,h=void 0,j=void 0;if(!f.__webglInit)if(f.__webglInit=!0,f._modelViewMatrix=new THREE.Matrix4,f._normalMatrixArray=new Float32Array(9),f._modelViewMatrixArray=new Float32Array(16),f._objectMatrixArray=new Float32Array(16),f.matrixWorld.flattenToArray(f._objectMatrixArray),f instanceof THREE.Mesh){h=f.geometry;if(h.geometryGroups===
|
|
|
|
+void 0){var j=h,q=void 0,l=void 0,n=void 0,r=void 0,k=void 0,m=void 0,p=void 0,x={},w=j.morphTargets.length;j.geometryGroups={};q=0;for(l=j.faces.length;q<l;q++)n=j.faces[q],r=n.materialIndex,m=r!==void 0?r:-1,x[m]===void 0&&(x[m]={hash:m,counter:0}),p=x[m].hash+"_"+x[m].counter,j.geometryGroups[p]===void 0&&(j.geometryGroups[p]={faces3:[],faces4:[],materialIndex:r,vertices:0,numMorphTargets:w}),k=n instanceof THREE.Face3?3:4,j.geometryGroups[p].vertices+k>65535&&(x[m].counter+=1,p=x[m].hash+"_"+
|
|
|
|
+x[m].counter,j.geometryGroups[p]===void 0&&(j.geometryGroups[p]={faces3:[],faces4:[],materialIndex:r,vertices:0,numMorphTargets:w})),n instanceof THREE.Face3?j.geometryGroups[p].faces3.push(q):j.geometryGroups[p].faces4.push(q),j.geometryGroups[p].vertices+=k;j.geometryGroupsList=[];q=void 0;for(q in j.geometryGroups)j.geometryGroups[q].id=Ea++,j.geometryGroupsList.push(j.geometryGroups[q])}for(i in h.geometryGroups)if(j=h.geometryGroups[i],!j.__webglVertexBuffer){q=j;q.__webglVertexBuffer=d.createBuffer();
|
|
|
|
+q.__webglNormalBuffer=d.createBuffer();q.__webglTangentBuffer=d.createBuffer();q.__webglColorBuffer=d.createBuffer();q.__webglUVBuffer=d.createBuffer();q.__webglUV2Buffer=d.createBuffer();q.__webglSkinVertexABuffer=d.createBuffer();q.__webglSkinVertexBBuffer=d.createBuffer();q.__webglSkinIndicesBuffer=d.createBuffer();q.__webglSkinWeightsBuffer=d.createBuffer();q.__webglFaceBuffer=d.createBuffer();q.__webglLineBuffer=d.createBuffer();if(q.numMorphTargets){n=l=void 0;q.__webglMorphTargetsBuffers=[];
|
|
|
|
+l=0;for(n=q.numMorphTargets;l<n;l++)q.__webglMorphTargetsBuffers.push(d.createBuffer())}D.info.memory.geometries++;r=f;k=r.geometry;l=j.faces3;m=j.faces4;q=l.length*3+m.length*4;n=l.length*1+m.length*2;m=l.length*3+m.length*4;l=c(r,j);p=l.map||l.lightMap||l instanceof THREE.ShaderMaterial?!0:!1;x=l instanceof THREE.MeshBasicMaterial&&!l.envMap||l instanceof THREE.MeshDepthMaterial?!1:l&&l.shading!==void 0&&l.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;w=l.vertexColors?l.vertexColors:
|
|
|
|
+!1;j.__vertexArray=new Float32Array(q*3);if(x)j.__normalArray=new Float32Array(q*3);if(k.hasTangents)j.__tangentArray=new Float32Array(q*4);if(w)j.__colorArray=new Float32Array(q*3);if(p){if(k.faceUvs.length>0||k.faceVertexUvs.length>0)j.__uvArray=new Float32Array(q*2);if(k.faceUvs.length>1||k.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(q*2)}if(r.geometry.skinWeights.length&&r.geometry.skinIndices.length)j.__skinVertexAArray=new Float32Array(q*4),j.__skinVertexBArray=new Float32Array(q*4),
|
|
|
|
+j.__skinIndexArray=new Float32Array(q*4),j.__skinWeightArray=new Float32Array(q*4);j.__faceArray=new Uint16Array(n*3);j.__lineArray=new Uint16Array(m*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];r=0;for(k=j.numMorphTargets;r<k;r++)j.__morphTargetsArrays.push(new Float32Array(q*3))}j.__needsSmoothNormals=x===THREE.SmoothShading;j.__uvType=p;j.__vertexColorType=w;j.__normalType=x;j.__webglFaceCount=n*3;j.__webglLineCount=m*2;if(l.attributes){if(j.__webglCustomAttributesList===void 0)j.__webglCustomAttributesList=
|
|
|
|
+[];n=void 0;for(n in l.attributes){var r=l.attributes[n],k={},F;for(F in r)k[F]=r[F];if(!k.__webglInitialized||k.createUniqueBuffers)k.__webglInitialized=!0,m=1,k.type==="v2"?m=2:k.type==="v3"?m=3:k.type==="v4"?m=4:k.type==="c"&&(m=3),k.size=m,k.array=new Float32Array(q*m),k.buffer=d.createBuffer(),k.buffer.belongsToAttribute=n,r.needsUpdate=!0,k.__original=r;j.__webglCustomAttributesList.push(k)}}j.__inittedArrays=!0;h.__dirtyVertices=!0;h.__dirtyMorphTargets=!0;h.__dirtyElements=!0;h.__dirtyUvs=
|
|
|
|
+!0;h.__dirtyNormals=!0;h.__dirtyTangents=!0;h.__dirtyColors=!0}}else if(f instanceof THREE.Ribbon){if(h=f.geometry,!h.__webglVertexBuffer)j=h,j.__webglVertexBuffer=d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.memory.geometries++,j=h,q=j.vertices.length,j.__vertexArray=new Float32Array(q*3),j.__colorArray=new Float32Array(q*3),j.__webglVertexCount=q,h.__dirtyVertices=!0,h.__dirtyColors=!0}else if(f instanceof THREE.Line){if(h=f.geometry,!h.__webglVertexBuffer)j=h,j.__webglVertexBuffer=
|
|
|
|
+d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.memory.geometries++,j=h,q=f,l=j.vertices.length,j.__vertexArray=new Float32Array(l*3),j.__colorArray=new Float32Array(l*3),j.__webglLineCount=l,b(j,q),h.__dirtyVertices=!0,h.__dirtyColors=!0}else if(f instanceof THREE.ParticleSystem&&(h=f.geometry,!h.__webglVertexBuffer))j=h,j.__webglVertexBuffer=d.createBuffer(),j.__webglColorBuffer=d.createBuffer(),D.info.geometries++,j=h,q=f,l=j.vertices.length,j.__vertexArray=new Float32Array(l*3),
|
|
|
|
+j.__colorArray=new Float32Array(l*3),j.__sortArray=[],j.__webglParticleCount=l,b(j,q),h.__dirtyVertices=!0,h.__dirtyColors=!0;if(!f.__webglActive){if(f instanceof THREE.Mesh)for(i in h=f.geometry,h.geometryGroups)j=h.geometryGroups[i],y(g.__webglObjects,j,f);else f instanceof THREE.Ribbon||f instanceof THREE.Line||f instanceof THREE.ParticleSystem?(h=f.geometry,y(g.__webglObjects,h,f)):THREE.MarchingCubes!==void 0&&f instanceof THREE.MarchingCubes||f.immediateRenderCallback?g.__webglObjectsImmediate.push({object:f,
|
|
|
|
+opaque:null,transparent:null}):f instanceof THREE.Sprite&&g.__webglSprites.push(f);f.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){f=a.__objectsRemoved[0];g=a;if(f instanceof THREE.Mesh||f instanceof THREE.ParticleSystem||f instanceof THREE.Ribbon||f instanceof THREE.Line)I(g.__webglObjects,f);else if(f instanceof THREE.Sprite){g=g.__webglSprites;i=f;for(h=g.length-1;h>=0;h--)g[h]===i&&g.splice(h,1)}else(f instanceof THREE.MarchingCubes||f.immediateRenderCallback)&&
|
|
|
|
+I(g.__webglObjectsImmediate,f);f.__webglActive=!1;a.__objectsRemoved.splice(0,1)}f=0;for(g=a.__webglObjects.length;f<g;f++)if(F=a.__webglObjects[f].object,i=F.geometry,h=n=l=void 0,F instanceof THREE.Mesh){j=0;for(q=i.geometryGroupsList.length;j<q;j++)if(l=i.geometryGroupsList[j],h=c(F,l),n=h.attributes&&u(h),i.__dirtyVertices||i.__dirtyMorphTargets||i.__dirtyElements||i.__dirtyUvs||i.__dirtyNormals||i.__dirtyColors||i.__dirtyTangents||n)if(n=d.DYNAMIC_DRAW,r=!i.dynamic,l.__inittedArrays){var E=m=
|
|
|
|
+k=void 0,s=void 0,G=void 0,L=void 0,v=void 0,Z=void 0,$=void 0,X=void 0,P=void 0,R=E=L=void 0,z=void 0,A=void 0,B=void 0,Y=s=void 0,aa=void 0,T=s=$=P=void 0,U=void 0,M=B=A=z=v=void 0,J=s=B=A=z=M=B=A=z=M=B=A=z=void 0,W=void 0,N=L=void 0,S=void 0,V=void 0,ca=void 0,da=void 0,H=R=V=W=0,Q=0,ba=J=E=0,O=v=Y=0,t=0,ea=void 0,O=l.__vertexArray,S=l.__uvArray,t=l.__uv2Array,N=l.__normalArray,G=l.__tangentArray,aa=l.__colorArray,T=l.__skinVertexAArray,U=l.__skinVertexBArray,Z=l.__skinIndexArray,ga=l.__skinWeightArray,
|
|
|
|
+M=l.__morphTargetsArrays,p=l.__webglCustomAttributesList,o=void 0,o=l.__faceArray,ea=l.__lineArray,ha=l.__needsSmoothNormals,P=l.__vertexColorType,X=l.__uvType,L=l.__normalType,$=F.geometry,ia=$.__dirtyElements,ka=$.__dirtyUvs,pa=$.__dirtyNormals,qa=$.__dirtyTangents,ta=$.__dirtyColors,ca=$.__dirtyMorphTargets,da=$.vertices,x=l.faces3,w=l.faces4,fa=$.faces,oa=$.faceVertexUvs[0],ra=$.faceVertexUvs[1],ja=$.skinVerticesA,la=$.skinVerticesB,ma=$.skinIndices,na=$.skinWeights,sa=$.morphTargets;if($.__dirtyVertices){k=
|
|
|
|
+0;for(m=x.length;k<m;k++)s=fa[x[k]],z=da[s.a].position,A=da[s.b].position,B=da[s.c].position,O[V]=z.x,O[V+1]=z.y,O[V+2]=z.z,O[V+3]=A.x,O[V+4]=A.y,O[V+5]=A.z,O[V+6]=B.x,O[V+7]=B.y,O[V+8]=B.z,V+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=da[s.a].position,A=da[s.b].position,B=da[s.c].position,s=da[s.d].position,O[V]=z.x,O[V+1]=z.y,O[V+2]=z.z,O[V+3]=A.x,O[V+4]=A.y,O[V+5]=A.z,O[V+6]=B.x,O[V+7]=B.y,O[V+8]=B.z,O[V+9]=s.x,O[V+10]=s.y,O[V+11]=s.z,V+=12;d.bindBuffer(d.ARRAY_BUFFER,l.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,
|
|
|
|
+O,n)}if(ca){V=0;for(ca=sa.length;V<ca;V++){k=O=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=sa[V].vertices[s.a].position,A=sa[V].vertices[s.b].position,B=sa[V].vertices[s.c].position,da=M[V],da[O]=z.x,da[O+1]=z.y,da[O+2]=z.z,da[O+3]=A.x,da[O+4]=A.y,da[O+5]=A.z,da[O+6]=B.x,da[O+7]=B.y,da[O+8]=B.z,O+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=sa[V].vertices[s.a].position,A=sa[V].vertices[s.b].position,B=sa[V].vertices[s.c].position,s=sa[V].vertices[s.d].position,da=M[V],da[O]=z.x,da[O+1]=z.y,da[O+2]=z.z,da[O+
|
|
|
|
+3]=A.x,da[O+4]=A.y,da[O+5]=A.z,da[O+6]=B.x,da[O+7]=B.y,da[O+8]=B.z,da[O+9]=s.x,da[O+10]=s.y,da[O+11]=s.z,O+=12;d.bindBuffer(d.ARRAY_BUFFER,l.__webglMorphTargetsBuffers[V]);d.bufferData(d.ARRAY_BUFFER,M[V],n)}}if(na.length){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=na[s.a],A=na[s.b],B=na[s.c],ga[v]=z.x,ga[v+1]=z.y,ga[v+2]=z.z,ga[v+3]=z.w,ga[v+4]=A.x,ga[v+5]=A.y,ga[v+6]=A.z,ga[v+7]=A.w,ga[v+8]=B.x,ga[v+9]=B.y,ga[v+10]=B.z,ga[v+11]=B.w,z=ma[s.a],A=ma[s.b],B=ma[s.c],Z[v]=z.x,Z[v+1]=z.y,Z[v+2]=z.z,Z[v+3]=
|
|
|
|
+z.w,Z[v+4]=A.x,Z[v+5]=A.y,Z[v+6]=A.z,Z[v+7]=A.w,Z[v+8]=B.x,Z[v+9]=B.y,Z[v+10]=B.z,Z[v+11]=B.w,z=ja[s.a],A=ja[s.b],B=ja[s.c],T[v]=z.x,T[v+1]=z.y,T[v+2]=z.z,T[v+3]=1,T[v+4]=A.x,T[v+5]=A.y,T[v+6]=A.z,T[v+7]=1,T[v+8]=B.x,T[v+9]=B.y,T[v+10]=B.z,T[v+11]=1,z=la[s.a],A=la[s.b],B=la[s.c],U[v]=z.x,U[v+1]=z.y,U[v+2]=z.z,U[v+3]=1,U[v+4]=A.x,U[v+5]=A.y,U[v+6]=A.z,U[v+7]=1,U[v+8]=B.x,U[v+9]=B.y,U[v+10]=B.z,U[v+11]=1,v+=12;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=na[s.a],A=na[s.b],B=na[s.c],M=na[s.d],ga[v]=z.x,ga[v+
|
|
|
|
+1]=z.y,ga[v+2]=z.z,ga[v+3]=z.w,ga[v+4]=A.x,ga[v+5]=A.y,ga[v+6]=A.z,ga[v+7]=A.w,ga[v+8]=B.x,ga[v+9]=B.y,ga[v+10]=B.z,ga[v+11]=B.w,ga[v+12]=M.x,ga[v+13]=M.y,ga[v+14]=M.z,ga[v+15]=M.w,z=ma[s.a],A=ma[s.b],B=ma[s.c],M=ma[s.d],Z[v]=z.x,Z[v+1]=z.y,Z[v+2]=z.z,Z[v+3]=z.w,Z[v+4]=A.x,Z[v+5]=A.y,Z[v+6]=A.z,Z[v+7]=A.w,Z[v+8]=B.x,Z[v+9]=B.y,Z[v+10]=B.z,Z[v+11]=B.w,Z[v+12]=M.x,Z[v+13]=M.y,Z[v+14]=M.z,Z[v+15]=M.w,z=ja[s.a],A=ja[s.b],B=ja[s.c],M=ja[s.d],T[v]=z.x,T[v+1]=z.y,T[v+2]=z.z,T[v+3]=1,T[v+4]=A.x,T[v+5]=A.y,
|
|
|
|
+T[v+6]=A.z,T[v+7]=1,T[v+8]=B.x,T[v+9]=B.y,T[v+10]=B.z,T[v+11]=1,T[v+12]=M.x,T[v+13]=M.y,T[v+14]=M.z,T[v+15]=1,z=la[s.a],A=la[s.b],B=la[s.c],s=la[s.d],U[v]=z.x,U[v+1]=z.y,U[v+2]=z.z,U[v+3]=1,U[v+4]=A.x,U[v+5]=A.y,U[v+6]=A.z,U[v+7]=1,U[v+8]=B.x,U[v+9]=B.y,U[v+10]=B.z,U[v+11]=1,U[v+12]=s.x,U[v+13]=s.y,U[v+14]=s.z,U[v+15]=1,v+=16;v>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinVertexABuffer),d.bufferData(d.ARRAY_BUFFER,T,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinVertexBBuffer),d.bufferData(d.ARRAY_BUFFER,
|
|
|
|
+U,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinIndicesBuffer),d.bufferData(d.ARRAY_BUFFER,Z,n),d.bindBuffer(d.ARRAY_BUFFER,l.__webglSkinWeightsBuffer),d.bufferData(d.ARRAY_BUFFER,ga,n))}if(ta&&P){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],v=s.vertexColors,Z=s.color,v.length===3&&P===THREE.VertexColors?(s=v[0],T=v[1],U=v[2]):U=T=s=Z,aa[Y]=s.r,aa[Y+1]=s.g,aa[Y+2]=s.b,aa[Y+3]=T.r,aa[Y+4]=T.g,aa[Y+5]=T.b,aa[Y+6]=U.r,aa[Y+7]=U.g,aa[Y+8]=U.b,Y+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],v=s.vertexColors,Z=s.color,
|
|
|
|
+v.length===4&&P===THREE.VertexColors?(s=v[0],T=v[1],U=v[2],v=v[3]):v=U=T=s=Z,aa[Y]=s.r,aa[Y+1]=s.g,aa[Y+2]=s.b,aa[Y+3]=T.r,aa[Y+4]=T.g,aa[Y+5]=T.b,aa[Y+6]=U.r,aa[Y+7]=U.g,aa[Y+8]=U.b,aa[Y+9]=v.r,aa[Y+10]=v.g,aa[Y+11]=v.b,Y+=12;Y>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglColorBuffer),d.bufferData(d.ARRAY_BUFFER,aa,n))}if(qa&&$.hasTangents){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],$=s.vertexTangents,Y=$[0],aa=$[1],P=$[2],G[J]=Y.x,G[J+1]=Y.y,G[J+2]=Y.z,G[J+3]=Y.w,G[J+4]=aa.x,G[J+5]=aa.y,G[J+6]=aa.z,G[J+
|
|
|
|
+7]=aa.w,G[J+8]=P.x,G[J+9]=P.y,G[J+10]=P.z,G[J+11]=P.w,J+=12;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],$=s.vertexTangents,Y=$[0],aa=$[1],P=$[2],$=$[3],G[J]=Y.x,G[J+1]=Y.y,G[J+2]=Y.z,G[J+3]=Y.w,G[J+4]=aa.x,G[J+5]=aa.y,G[J+6]=aa.z,G[J+7]=aa.w,G[J+8]=P.x,G[J+9]=P.y,G[J+10]=P.z,G[J+11]=P.w,G[J+12]=$.x,G[J+13]=$.y,G[J+14]=$.z,G[J+15]=$.w,J+=16;d.bindBuffer(d.ARRAY_BUFFER,l.__webglTangentBuffer);d.bufferData(d.ARRAY_BUFFER,G,n)}if(pa&&L){k=0;for(m=x.length;k<m;k++)if(s=fa[x[k]],G=s.vertexNormals,L=s.normal,
|
|
|
|
+G.length===3&&ha)for(J=0;J<3;J++)L=G[J],N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;else for(J=0;J<3;J++)N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;k=0;for(m=w.length;k<m;k++)if(s=fa[w[k]],G=s.vertexNormals,L=s.normal,G.length===4&&ha)for(J=0;J<4;J++)L=G[J],N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;else for(J=0;J<4;J++)N[E]=L.x,N[E+1]=L.y,N[E+2]=L.z,E+=3;d.bindBuffer(d.ARRAY_BUFFER,l.__webglNormalBuffer);d.bufferData(d.ARRAY_BUFFER,N,n)}if(ka&&oa&&X){k=0;for(m=x.length;k<m;k++)if(E=x[k],E=oa[E],E!==void 0)for(J=0;J<3;J++)N=
|
|
|
|
+E[J],S[R]=N.u,S[R+1]=N.v,R+=2;k=0;for(m=w.length;k<m;k++)if(E=w[k],E=oa[E],E!==void 0)for(J=0;J<4;J++)N=E[J],S[R]=N.u,S[R+1]=N.v,R+=2;R>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglUVBuffer),d.bufferData(d.ARRAY_BUFFER,S,n))}if(ka&&ra&&X){k=0;for(m=x.length;k<m;k++)if(E=x[k],R=ra[E],R!==void 0)for(J=0;J<3;J++)S=R[J],t[H]=S.u,t[H+1]=S.v,H+=2;k=0;for(m=w.length;k<m;k++)if(E=w[k],R=ra[E],R!==void 0)for(J=0;J<4;J++)S=R[J],t[H]=S.u,t[H+1]=S.v,H+=2;H>0&&(d.bindBuffer(d.ARRAY_BUFFER,l.__webglUV2Buffer),d.bufferData(d.ARRAY_BUFFER,
|
|
|
|
+t,n))}if(ia){k=0;for(m=x.length;k<m;k++)o[Q]=W,o[Q+1]=W+1,o[Q+2]=W+2,Q+=3,ea[ba]=W,ea[ba+1]=W+1,ea[ba+2]=W,ea[ba+3]=W+2,ea[ba+4]=W+1,ea[ba+5]=W+2,ba+=6,W+=3;k=0;for(m=w.length;k<m;k++)o[Q]=W,o[Q+1]=W+1,o[Q+2]=W+3,o[Q+3]=W+1,o[Q+4]=W+2,o[Q+5]=W+3,Q+=6,ea[ba]=W,ea[ba+1]=W+1,ea[ba+2]=W,ea[ba+3]=W+3,ea[ba+4]=W+1,ea[ba+5]=W+2,ea[ba+6]=W+2,ea[ba+7]=W+3,ba+=8,W+=4;d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,l.__webglFaceBuffer);d.bufferData(d.ELEMENT_ARRAY_BUFFER,o,n);d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,l.__webglLineBuffer);
|
|
|
|
+d.bufferData(d.ELEMENT_ARRAY_BUFFER,ea,n)}if(p){J=0;for(W=p.length;J<W;J++)if(o=p[J],o.__original.needsUpdate){t=0;if(o.size===1)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],o.array[t]=o.value[s.a],o.array[t+1]=o.value[s.b],o.array[t+2]=o.value[s.c],t+=3;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],o.array[t]=o.value[s.a],o.array[t+1]=o.value[s.b],o.array[t+2]=o.value[s.c],o.array[t+3]=o.value[s.d],t+=4}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)ea=o.value[x[k]],
|
|
|
|
+o.array[t]=ea,o.array[t+1]=ea,o.array[t+2]=ea,t+=3;k=0;for(m=w.length;k<m;k++)ea=o.value[w[k]],o.array[t]=ea,o.array[t+1]=ea,o.array[t+2]=ea,o.array[t+3]=ea,t+=4}}else if(o.size===2)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,t+=6;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=
|
|
|
|
+o.value[s.d],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,o.array[t+6]=s.x,o.array[t+7]=s.y,t+=8}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,t+=6;k=0;for(m=w.length;k<m;k++)s=B=A=z=ea=o.value[w[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=A.x,o.array[t+3]=A.y,o.array[t+4]=B.x,o.array[t+5]=B.y,o.array[t+6]=
|
|
|
|
+s.x,o.array[t+7]=s.y,t+=8}}else if(o.size===3)if(H=o.type==="c"?["r","g","b"]:["x","y","z"],o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],t+=9;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=o.value[s.d],
|
|
|
|
+o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],o.array[t+9]=s[H[0]],o.array[t+10]=s[H[1]],o.array[t+11]=s[H[2]],t+=12}else{if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],
|
|
|
|
+o.array[t+8]=B[H[2]],t+=9;k=0;for(m=w.length;k<m;k++)s=B=A=z=ea=o.value[w[k]],o.array[t]=z[H[0]],o.array[t+1]=z[H[1]],o.array[t+2]=z[H[2]],o.array[t+3]=A[H[0]],o.array[t+4]=A[H[1]],o.array[t+5]=A[H[2]],o.array[t+6]=B[H[0]],o.array[t+7]=B[H[1]],o.array[t+8]=B[H[2]],o.array[t+9]=s[H[0]],o.array[t+10]=s[H[1]],o.array[t+11]=s[H[2]],t+=12}}else if(o.size===4)if(o.boundTo===void 0||o.boundTo==="vertices"){k=0;for(m=x.length;k<m;k++)s=fa[x[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],o.array[t]=z.x,
|
|
|
|
+o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,t+=12;k=0;for(m=w.length;k<m;k++)s=fa[w[k]],z=o.value[s.a],A=o.value[s.b],B=o.value[s.c],s=o.value[s.d],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,o.array[t+
|
|
|
|
+12]=s.x,o.array[t+13]=s.y,o.array[t+14]=s.z,o.array[t+15]=s.w,t+=16}else if(o.boundTo==="faces"){k=0;for(m=x.length;k<m;k++)B=A=z=ea=o.value[x[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,t+=12;k=0;for(m=w.length;k<m;k++)s=B=A=z=ea=o.value[w[k]],o.array[t]=z.x,o.array[t+1]=z.y,o.array[t+2]=z.z,o.array[t+3]=z.w,o.array[t+4]=A.x,o.array[t+
|
|
|
|
+5]=A.y,o.array[t+6]=A.z,o.array[t+7]=A.w,o.array[t+8]=B.x,o.array[t+9]=B.y,o.array[t+10]=B.z,o.array[t+11]=B.w,o.array[t+12]=s.x,o.array[t+13]=s.y,o.array[t+14]=s.z,o.array[t+15]=s.w,t+=16}d.bindBuffer(d.ARRAY_BUFFER,o.buffer);d.bufferData(d.ARRAY_BUFFER,o.array,n)}}r&&(delete l.__inittedArrays,delete l.__colorArray,delete l.__normalArray,delete l.__tangentArray,delete l.__uvArray,delete l.__uv2Array,delete l.__faceArray,delete l.__vertexArray,delete l.__lineArray,delete l.__skinVertexAArray,delete l.__skinVertexBArray,
|
|
|
|
+delete l.__skinIndexArray,delete l.__skinWeightArray)}i.__dirtyVertices=!1;i.__dirtyMorphTargets=!1;i.__dirtyElements=!1;i.__dirtyUvs=!1;i.__dirtyNormals=!1;i.__dirtyColors=!1;i.__dirtyTangents=!1;h.attributes&&K(h)}else if(F instanceof THREE.Ribbon){if(i.__dirtyVertices||i.__dirtyColors){h=i;F=d.DYNAMIC_DRAW;k=j=k=r=r=void 0;m=h.vertices;q=h.colors;p=m.length;l=q.length;x=h.__vertexArray;n=h.__colorArray;w=h.__dirtyColors;if(h.__dirtyVertices){for(r=0;r<p;r++)k=m[r].position,j=r*3,x[j]=k.x,x[j+1]=
|
|
|
|
+k.y,x[j+2]=k.z;d.bindBuffer(d.ARRAY_BUFFER,h.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,x,F)}if(w){for(r=0;r<l;r++)k=q[r],j=r*3,n[j]=k.r,n[j+1]=k.g,n[j+2]=k.b;d.bindBuffer(d.ARRAY_BUFFER,h.__webglColorBuffer);d.bufferData(d.ARRAY_BUFFER,n,F)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(F instanceof THREE.Line){h=c(F,l);n=h.attributes&&u(h);if(i.__dirtyVertices||i.__dirtyColors||n){F=i;j=d.DYNAMIC_DRAW;p=q=W=m=fa=void 0;m=F.vertices;l=F.colors;p=m.length;n=l.length;x=F.__vertexArray;r=F.__colorArray;
|
|
|
|
+w=F.__dirtyColors;k=F.__webglCustomAttributesList;R=ba=Q=H=W=fa=void 0;if(F.__dirtyVertices){for(fa=0;fa<p;fa++)W=m[fa].position,q=fa*3,x[q]=W.x,x[q+1]=W.y,x[q+2]=W.z;d.bindBuffer(d.ARRAY_BUFFER,F.__webglVertexBuffer);d.bufferData(d.ARRAY_BUFFER,x,j)}if(w){for(m=0;m<n;m++)p=l[m],q=m*3,r[q]=p.r,r[q+1]=p.g,r[q+2]=p.b;d.bindBuffer(d.ARRAY_BUFFER,F.__webglColorBuffer);d.bufferData(d.ARRAY_BUFFER,r,j)}if(k){fa=0;for(W=k.length;fa<W;fa++)if(R=k[fa],R.needsUpdate&&(R.boundTo===void 0||R.boundTo==="vertices")){q=
|
|
|
|
+0;Q=R.value.length;if(R.size===1)for(H=0;H<Q;H++)R.array[H]=R.value[H];else if(R.size===2)for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,q+=2;else if(R.size===3)if(R.type==="c")for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.r,R.array[q+1]=ba.g,R.array[q+2]=ba.b,q+=3;else for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,R.array[q+2]=ba.z,q+=3;else if(R.size===4)for(H=0;H<Q;H++)ba=R.value[H],R.array[q]=ba.x,R.array[q+1]=ba.y,R.array[q+2]=ba.z,R.array[q+3]=ba.w,q+=4;d.bindBuffer(d.ARRAY_BUFFER,
|
|
|
|
+R.buffer);d.bufferData(d.ARRAY_BUFFER,R.array,j)}}}i.__dirtyVertices=!1;i.__dirtyColors=!1;h.attributes&&K(h)}else if(F instanceof THREE.ParticleSystem)h=c(F,l),n=h.attributes&&u(h),(i.__dirtyVertices||i.__dirtyColors||F.sortParticles||n)&&e(i,d.DYNAMIC_DRAW,F),i.__dirtyVertices=!1,i.__dirtyColors=!1,h.attributes&&K(h)};this.initMaterial=function(a,b,c,e){var f,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 j=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(j.uniforms);a.vertexShader=j.vertexShader;a.fragmentShader=j.fragmentShader}var n,k,m;n=m=j=0;for(k=b.length;n<k;n++)h=b[n],h instanceof THREE.SpotLight&&m++,h instanceof THREE.DirectionalLight&&m++,h instanceof THREE.PointLight&&
|
|
|
|
+j++;j+m<=la?n=m:(n=Math.ceil(la*m/(j+m)),j=la-n);h={directional:n,point:j};j=m=0;for(n=b.length;j<n;j++)k=b[j],k instanceof THREE.SpotLight&&k.castShadow&&m++;var r=50;if(e!==void 0&&e instanceof THREE.SkinnedMesh)r=e.bones.length;var p;a:{n=a.fragmentShader;k=a.vertexShader;var j=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:h.directional,maxPointLights:h.point,maxBones:r,shadowMapEnabled:this.shadowMapEnabled&&e.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel},u,e=[];i?e.push(i):(e.push(n),e.push(k));for(u in c)e.push(u),e.push(c[u]);i=e.join();u=0;for(e=ca.length;u<e;u++)if(ca[u].code===i){p=ca[u].program;break a}u=d.createProgram();e=[Wa?"#define VERTEX_TEXTURES":
|
|
|
|
+"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_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.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");
|
|
h=["#ifdef GL_ES","precision "+va+" float;","#endif","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":
|
|
h=["#ifdef GL_ES","precision "+va+" float;","#endif","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",D.gammaInput?"#define GAMMA_INPUT":"",D.gammaOutput?"#define GAMMA_OUTPUT":"",D.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":
|
|
"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapSoft?"#define SHADOWMAP_WIDTH "+c.shadowMapWidth.toFixed(1):"",c.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+c.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");d.attachShader(u,L("fragment",h+n));d.attachShader(u,
|
|
"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapSoft?"#define SHADOWMAP_WIDTH "+c.shadowMapWidth.toFixed(1):"",c.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+c.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");d.attachShader(u,L("fragment",h+n));d.attachShader(u,
|
|
L("vertex",e+k));d.linkProgram(u);d.getProgramParameter(u,d.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+d.getProgramParameter(u,d.VALIDATE_STATUS)+", gl error ["+d.getError()+"]");u.uniforms={};u.attributes={};var w,e=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(w in j)e.push(w);w=e;e=0;for(j=w.length;e<j;e++)n=w[e],u.uniforms[n]=d.getUniformLocation(u,
|
|
L("vertex",e+k));d.linkProgram(u);d.getProgramParameter(u,d.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+d.getProgramParameter(u,d.VALIDATE_STATUS)+", gl error ["+d.getError()+"]");u.uniforms={};u.attributes={};var w,e=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(w in j)e.push(w);w=e;e=0;for(j=w.length;e<j;e++)n=w[e],u.uniforms[n]=d.getUniformLocation(u,
|