|
@@ -317,8 +317,8 @@ THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===t
|
|
|
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1);if(a.shadowCascadeArray)for(b=0;b<a.shadowCascadeArray.length;b++)this.__removeObject(a.shadowCascadeArray[b])}else a instanceof THREE.Camera||(this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1));this.dispatchEvent({type:"objectRemoved",object:a});a.dispatchEvent({type:"removedFromScene",scene:this});for(b=
|
|
|
0;b<a.children.length;b++)this.__removeObject(a.children[b])};THREE.Scene.prototype.clone=function(a){void 0===a&&(a=new THREE.Scene);THREE.Object3D.prototype.clone.call(this,a);null!==this.fog&&(a.fog=this.fog.clone());null!==this.overrideMaterial&&(a.overrideMaterial=this.overrideMaterial.clone());a.autoUpdate=this.autoUpdate;a.matrixAutoUpdate=this.matrixAutoUpdate;return a};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.CanvasRenderer=function(a){function b(a,b,c){for(var d=0,e=E.length;d<e;d++){var f=E[d];La.copy(f.color);if(f instanceof THREE.DirectionalLight){var g=Oa.setFromMatrixPosition(f.matrixWorld).normalize(),h=b.dot(g);0>=h||(h*=f.intensity,c.add(La.multiplyScalar(h)))}else f instanceof THREE.PointLight&&(g=Oa.setFromMatrixPosition(f.matrixWorld),h=b.dot(Oa.subVectors(g,a).normalize()),0>=h||(h*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=h&&(h*=f.intensity,c.add(La.multiplyScalar(h)))))}}
|
|
|
function c(a,b,c,d){r(b);q(c);u(d);p(a.getStyle());y.stroke();Pa.expandByScalar(2*b)}function d(a){v(a.getStyle());y.fill()}function e(a){f(a.target)}function f(a){var b=a.wrapS===THREE.RepeatWrapping,c=a.wrapT===THREE.RepeatWrapping,d=a.image,e=document.createElement("canvas");e.width=d.width;e.height=d.height;var f=e.getContext("2d");f.setTransform(1,0,0,-1,0,d.height);f.drawImage(d,0,0);la[a.id]=y.createPattern(e,!0===b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x":!1===b&&!0===c?"repeat-y":"no-repeat")}
|
|
|
-function g(a,b,c,d,g,h,m,k,l,n,p,r,q){if(!(q instanceof THREE.DataTexture)){!1===q.hasEventListener("update",e)&&(void 0!==q.image&&0<q.image.width&&f(q),q.addEventListener("update",e));var s=la[q.id];if(void 0!==s){v(s);var s=q.offset.x/q.repeat.x,u=q.offset.y/q.repeat.y,t=q.image.width*q.repeat.x;q=q.image.height*q.repeat.y;m=(m+s)*t;k=(k+u)*q;c-=a;d-=b;g-=a;h-=b;l=(l+s)*t-m;n=(n+u)*q-k;p=(p+s)*t-m;r=(r+u)*q-k;q=l*r-p*n;0!==q&&(s=1/q,q=(r*c-n*g)*s,n=(r*d-n*h)*s,c=(l*g-p*c)*s,d=(l*h-p*d)*s,a=a-q*
|
|
|
-m-c*k,b=b-n*m-d*k,y.save(),y.transform(q,n,c,d,a,b),y.fill(),y.restore())}else v("rgba(0,0,0,1)"),y.fill()}}function h(a,b,c,d,e,f,g,h,m,k,l,n,p){var q,r;q=p.width-1;r=p.height-1;g*=q;h*=r;c-=a;d-=b;e-=a;f-=b;m=m*q-g;k=k*r-h;l=l*q-g;n=n*r-h;r=1/(m*n-l*k);q=(n*c-k*e)*r;k=(n*d-k*f)*r;c=(m*e-l*c)*r;d=(m*f-l*d)*r;a=a-q*g-c*h;b=b-k*g-d*h;y.save();y.transform(q,k,c,d,a,b);y.clip();y.drawImage(p,0,0);y.restore()}function k(a,b,c,d){pa[0]=255*a.r|0;pa[1]=255*a.g|0;pa[2]=255*a.b|0;pa[4]=255*b.r|0;pa[5]=255*
|
|
|
+function g(a,b,c,d,g,h,k,m,l,n,p,r,q){if(!(q instanceof THREE.DataTexture)){!1===q.hasEventListener("update",e)&&(void 0!==q.image&&0<q.image.width&&f(q),q.addEventListener("update",e));var s=la[q.id];if(void 0!==s){v(s);var s=q.offset.x/q.repeat.x,u=q.offset.y/q.repeat.y,t=q.image.width*q.repeat.x;q=q.image.height*q.repeat.y;k=(k+s)*t;m=(m+u)*q;c-=a;d-=b;g-=a;h-=b;l=(l+s)*t-k;n=(n+u)*q-m;p=(p+s)*t-k;r=(r+u)*q-m;q=l*r-p*n;0!==q&&(s=1/q,q=(r*c-n*g)*s,n=(r*d-n*h)*s,c=(l*g-p*c)*s,d=(l*h-p*d)*s,a=a-q*
|
|
|
+k-c*m,b=b-n*k-d*m,y.save(),y.transform(q,n,c,d,a,b),y.fill(),y.restore())}else v("rgba(0,0,0,1)"),y.fill()}}function h(a,b,c,d,e,f,g,h,k,m,l,n,p){var q,r;q=p.width-1;r=p.height-1;g*=q;h*=r;c-=a;d-=b;e-=a;f-=b;k=k*q-g;m=m*r-h;l=l*q-g;n=n*r-h;r=1/(k*n-l*m);q=(n*c-m*e)*r;m=(n*d-m*f)*r;c=(k*e-l*c)*r;d=(k*f-l*d)*r;a=a-q*g-c*h;b=b-m*g-d*h;y.save();y.transform(q,m,c,d,a,b);y.clip();y.drawImage(p,0,0);y.restore()}function k(a,b,c,d){pa[0]=255*a.r|0;pa[1]=255*a.g|0;pa[2]=255*a.b|0;pa[4]=255*b.r|0;pa[5]=255*
|
|
|
b.g|0;pa[6]=255*b.b|0;pa[8]=255*c.r|0;pa[9]=255*c.g|0;pa[10]=255*c.b|0;pa[12]=255*d.r|0;pa[13]=255*d.g|0;pa[14]=255*d.b|0;Na.putImageData(Qa,0,0);Xa.drawImage(Ra,0,0);return Ga}function l(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function n(a){A!==a&&(A=y.globalAlpha=a)}function s(a){M!==a&&(a===THREE.NormalBlending?y.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?y.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&
|
|
|
(y.globalCompositeOperation="darker"),M=a)}function r(a){R!==a&&(R=y.lineWidth=a)}function q(a){fa!==a&&(fa=y.lineCap=a)}function u(a){V!==a&&(V=y.lineJoin=a)}function p(a){Q!==a&&(Q=y.strokeStyle=a)}function v(a){Y!==a&&(Y=y.fillStyle=a)}function w(a,b){if(ga!==a||J!==b)y.setLineDash([a,b]),ga=a,J=b}console.log("THREE.CanvasRenderer",THREE.REVISION);var t=THREE.Math.smoothstep;a=a||{};var x=this,z,B,E,H=new THREE.Projector,D=void 0!==a.canvas?a.canvas:document.createElement("canvas"),G=D.width,I=
|
|
|
D.height,O=Math.floor(G/2),K=Math.floor(I/2),y=D.getContext("2d",{alpha:!0===a.alpha}),F=new THREE.Color(0),C=0,A=1,M=0,Q=null,Y=null,R=null,fa=null,V=null,ga=null,J=0,da,W,L,ca;new THREE.RenderableVertex;new THREE.RenderableVertex;var sa,T,Ka,S,$,Fa,ta=new THREE.Color,oa=new THREE.Color,za=new THREE.Color,Aa=new THREE.Color,Va=new THREE.Color,Wa=new THREE.Color,ka=new THREE.Color,La=new THREE.Color,la={},Ba,Ja,ma,Ca,ba,wa,xa,Da,hb,Ma,Ea=new THREE.Box2,na=new THREE.Box2,Pa=new THREE.Box2,ib=new THREE.Color,
|
|
@@ -387,9 +387,9 @@ depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,T
|
|
|
function c(a,b){var c=b.geometry,g=a.faces3,h=3*g.length,k=1*g.length,l=3*g.length,g=d(b,a),n=f(g),p=e(g),q=g.vertexColors?g.vertexColors:!1;a.__vertexArray=new Float32Array(3*h);p&&(a.__normalArray=new Float32Array(3*h));c.hasTangents&&(a.__tangentArray=new Float32Array(4*h));q&&(a.__colorArray=new Float32Array(3*h));n&&(0<c.faceVertexUvs.length&&(a.__uvArray=new Float32Array(2*h)),1<c.faceVertexUvs.length&&(a.__uv2Array=new Float32Array(2*h)));b.geometry.skinWeights.length&&b.geometry.skinIndices.length&&
|
|
|
(a.__skinIndexArray=new Float32Array(4*h),a.__skinWeightArray=new Float32Array(4*h));c=null!==Ga&&21845<k?Uint32Array:Uint16Array;a.__typeArray=c;a.__faceArray=new c(3*k);a.__lineArray=new c(2*l);if(a.numMorphTargets)for(a.__morphTargetsArrays=[],c=0,n=a.numMorphTargets;c<n;c++)a.__morphTargetsArrays.push(new Float32Array(3*h));if(a.numMorphNormals)for(a.__morphNormalsArrays=[],c=0,n=a.numMorphNormals;c<n;c++)a.__morphNormalsArrays.push(new Float32Array(3*h));a.__webglFaceCount=3*k;a.__webglLineCount=
|
|
|
2*l;if(g.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var r in g.attributes){var k=g.attributes[r],l={},s;for(s in k)l[s]=k[s];if(!l.__webglInitialized||l.createUniqueBuffers)l.__webglInitialized=!0,c=1,"v2"===l.type?c=2:"v3"===l.type?c=3:"v4"===l.type?c=4:"c"===l.type&&(c=3),l.size=c,l.array=new Float32Array(h*c),l.buffer=m.createBuffer(),l.buffer.belongsToAttribute=r,k.needsUpdate=!0,l.__original=k;a.__webglCustomAttributesList.push(l)}}a.__inittedArrays=
|
|
|
-!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function e(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function f(a){return a.map||a.lightMap||a.bumpMap||a.normalMap||a.specularMap||a instanceof THREE.ShaderMaterial?!0:!1}function g(a,b,c,d){var e,f,g,k;for(f in b)g=b[f],e=c[f],0<=
|
|
|
-g&&(e?(k=e.itemSize,m.bindBuffer(m.ARRAY_BUFFER,e.buffer),h(g),m.vertexAttribPointer(g,k,m.FLOAT,!1,0,d*k*4)):a.defaultAttributeValues&&(2===a.defaultAttributeValues[f].length?m.vertexAttrib2fv(g,a.defaultAttributeValues[f]):3===a.defaultAttributeValues[f].length&&m.vertexAttrib3fv(g,a.defaultAttributeValues[f])))}function h(a){0===Ea[a]&&(m.enableVertexAttribArray(a),Ea[a]=1)}function k(){for(var a in Ea)1===Ea[a]&&(m.disableVertexAttribArray(a),Ea[a]=0)}function l(a,b){return a.z!==b.z?b.z-a.z:
|
|
|
-a.id-b.id}function n(a,b){return b[0]-a[0]}function s(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)Fa=T=null,S=$=za=oa=la=La=Aa=-1,Oa=!0,a[d].render(b,c,hb,Ma),Fa=T=null,S=$=za=oa=la=La=Aa=-1,Oa=!0}function r(a,b,c,d,e,f,g,h){var k,m,l,n;b?(m=a.length-1,n=b=-1):(m=0,b=a.length,n=1);for(var p=m;p!==b;p+=n)if(k=a[p],k.render){m=k.object;l=k.buffer;if(h)k=h;else{k=k[c];if(!k)continue;g&&L.setBlending(k.blending,k.blendEquation,k.blendSrc,k.blendDst);L.setDepthTest(k.depthTest);L.setDepthWrite(k.depthWrite);
|
|
|
+!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function e(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function f(a){return a.map||a.lightMap||a.bumpMap||a.normalMap||a.specularMap||a instanceof THREE.ShaderMaterial?!0:!1}function g(a,b,c,d){for(var e in b){var f=b[e],g=c[e];if(0<=
|
|
|
+f)if(g){var k=g.itemSize;m.bindBuffer(m.ARRAY_BUFFER,g.buffer);h(f);m.vertexAttribPointer(f,k,m.FLOAT,!1,0,d*k*4)}else a.defaultAttributeValues&&(2===a.defaultAttributeValues[e].length?m.vertexAttrib2fv(f,a.defaultAttributeValues[e]):3===a.defaultAttributeValues[e].length&&m.vertexAttrib3fv(f,a.defaultAttributeValues[e]))}}function h(a){0===Ea[a]&&(m.enableVertexAttribArray(a),Ea[a]=1)}function k(){for(var a in Ea)1===Ea[a]&&(m.disableVertexAttribArray(a),Ea[a]=0)}function l(a,b){return a.z!==b.z?
|
|
|
+b.z-a.z:a.id-b.id}function n(a,b){return b[0]-a[0]}function s(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)Fa=T=null,S=$=za=oa=la=La=Aa=-1,Oa=!0,a[d].render(b,c,hb,Ma),Fa=T=null,S=$=za=oa=la=La=Aa=-1,Oa=!0}function r(a,b,c,d,e,f,g,h){var k,m,l,n;b?(m=a.length-1,n=b=-1):(m=0,b=a.length,n=1);for(var p=m;p!==b;p+=n)if(k=a[p],k.render){m=k.object;l=k.buffer;if(h)k=h;else{k=k[c];if(!k)continue;g&&L.setBlending(k.blending,k.blendEquation,k.blendSrc,k.blendDst);L.setDepthTest(k.depthTest);L.setDepthWrite(k.depthWrite);
|
|
|
I(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits)}L.setMaterialFaces(k);l instanceof THREE.BufferGeometry?L.renderBufferDirect(d,e,f,k,l,m):L.renderBuffer(d,e,f,k,l,m)}}function q(a,b,c,d,e,f,g){for(var h,k,m=0,l=a.length;m<l;m++)if(h=a[m],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&L.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);L.setDepthTest(h.depthTest);L.setDepthWrite(h.depthWrite);I(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}L.renderImmediateObject(c,
|
|
|
d,e,h,k)}}function u(a,d){var e,f,g;if(void 0===a.__webglInit&&(a.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,void 0!==a.geometry&&void 0===a.geometry.__webglInit&&(a.geometry.__webglInit=!0,a.geometry.addEventListener("dispose",Ib)),f=a.geometry,void 0!==f))if(f instanceof THREE.BufferGeometry)for(g in f.attributes){var h="index"===g?m.ELEMENT_ARRAY_BUFFER:m.ARRAY_BUFFER,k=f.attributes[g];k.buffer=m.createBuffer();m.bindBuffer(h,k.buffer);m.bufferData(h,
|
|
|
k.array,m.STATIC_DRAW)}else if(a instanceof THREE.Mesh)for(e in g=a.material,void 0===f.geometryGroups&&f.makeGroups(g instanceof THREE.MeshFaceMaterial,Ga?4294967296:65535),f.geometryGroups){if(g=f.geometryGroups[e],!g.__webglVertexBuffer){h=g;h.__webglVertexBuffer=m.createBuffer();h.__webglNormalBuffer=m.createBuffer();h.__webglTangentBuffer=m.createBuffer();h.__webglColorBuffer=m.createBuffer();h.__webglUVBuffer=m.createBuffer();h.__webglUV2Buffer=m.createBuffer();h.__webglSkinIndicesBuffer=m.createBuffer();
|
|
@@ -447,64 +447,61 @@ m.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&m.deleteBuffer(a.
|
|
|
L.info.memory.geometries--},Cb=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=ca.length;a<c;a++)if(d=ca[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=ca.length;a<c;a++)d=ca[a],d.program!==b&&e.push(d);ca=e;m.deleteProgram(b);L.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=m.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=
|
|
|
m.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=m.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=m.createBuffer());a.hasPositions&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,a.positionArray,m.DYNAMIC_DRAW),m.enableVertexAttribArray(b.attributes.position),m.vertexAttribPointer(b.attributes.position,3,m.FLOAT,!1,0,0));if(a.hasNormals){m.bindBuffer(m.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,
|
|
|
e,f,g,h,k,l,n,p,q,r,s=3*a.count;for(r=0;r<s;r+=9)q=a.normalArray,d=q[r],e=q[r+1],f=q[r+2],g=q[r+3],k=q[r+4],n=q[r+5],h=q[r+6],l=q[r+7],p=q[r+8],d=(d+g+h)/3,e=(e+k+l)/3,f=(f+n+p)/3,q[r]=d,q[r+1]=e,q[r+2]=f,q[r+3]=d,q[r+4]=e,q[r+5]=f,q[r+6]=d,q[r+7]=e,q[r+8]=f}m.bufferData(m.ARRAY_BUFFER,a.normalArray,m.DYNAMIC_DRAW);m.enableVertexAttribArray(b.attributes.normal);m.vertexAttribPointer(b.attributes.normal,3,m.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglUvBuffer),m.bufferData(m.ARRAY_BUFFER,
|
|
|
-a.uvArray,m.DYNAMIC_DRAW),m.enableVertexAttribArray(b.attributes.uv),m.vertexAttribPointer(b.attributes.uv,2,m.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,a.colorArray,m.DYNAMIC_DRAW),m.enableVertexAttribArray(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var l,
|
|
|
-n,p,q;l=B(a,b,c,d,f);a=l.attributes;b=e.attributes;c=!1;l=16777215*e.id+2*l.id+(d.wireframe?1:0);l!==$&&($=l,c=!0);c&&k();if(f instanceof THREE.Mesh){f=b.index;var r,s;f.array instanceof Uint32Array?(r=m.UNSIGNED_INT,s=4):(r=m.UNSIGNED_SHORT,s=2);if(f)if(e=e.offsets,0===e.length){for(n in a)p=a[n],l=b[n],0<=p&&(l?(q=l.itemSize,m.bindBuffer(m.ARRAY_BUFFER,l.buffer),h(p),m.vertexAttribPointer(p,q,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&(2===d.defaultAttributeValues[n].length?m.vertexAttrib2fv(p,
|
|
|
-d.defaultAttributeValues[n]):3===d.defaultAttributeValues[n].length&&m.vertexAttrib3fv(p,d.defaultAttributeValues[n])));m.drawElements(m.TRIANGLES,f.array.length,r,0);L.info.render.calls++;L.info.render.vertices+=f.array.length;L.info.render.faces+=f.array.length/3}else{c=!0;for(var t=0,u=e.length;t<u;t++){var v=e[t].index;if(c){for(n in a)p=a[n],l=b[n],0<=p&&(l?(q=l.itemSize,m.bindBuffer(m.ARRAY_BUFFER,l.buffer),h(p),m.vertexAttribPointer(p,q,m.FLOAT,!1,0,v*q*4)):d.defaultAttributeValues&&(2===d.defaultAttributeValues[n].length?
|
|
|
-m.vertexAttrib2fv(p,d.defaultAttributeValues[n]):3===d.defaultAttributeValues[n].length&&m.vertexAttrib3fv(p,d.defaultAttributeValues[n])));m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)}m.drawElements(m.TRIANGLES,e[t].count,r,e[t].start*s);L.info.render.calls++;L.info.render.vertices+=e[t].count;L.info.render.faces+=e[t].count/3}}else{if(c)for(n in a)"index"!==n&&(p=a[n],l=b[n],0<=p&&(l?(q=l.itemSize,m.bindBuffer(m.ARRAY_BUFFER,l.buffer),h(p),m.vertexAttribPointer(p,q,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&
|
|
|
-d.defaultAttributeValues[n]&&(2===d.defaultAttributeValues[n].length?m.vertexAttrib2fv(p,d.defaultAttributeValues[n]):3===d.defaultAttributeValues[n].length&&m.vertexAttrib3fv(p,d.defaultAttributeValues[n]))));d=e.attributes.position;m.drawArrays(m.TRIANGLES,0,d.array.length/3);L.info.render.calls++;L.info.render.vertices+=d.array.length/3;L.info.render.faces+=d.array.length/3/3}}else if(f instanceof THREE.ParticleSystem){if(c)for(n in a)p=a[n],l=b[n],0<=p&&(l?(q=l.itemSize,m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
-l.buffer),h(p),m.vertexAttribPointer(p,q,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&d.defaultAttributeValues[n]&&(2===d.defaultAttributeValues[n].length?m.vertexAttrib2fv(p,d.defaultAttributeValues[n]):3===d.defaultAttributeValues[n].length&&m.vertexAttrib3fv(p,d.defaultAttributeValues[n])));d=b.position;m.drawArrays(m.POINTS,0,d.array.length/3);L.info.render.calls++;L.info.render.points+=d.array.length/3}else if(f instanceof THREE.Line)if(n=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,G(d.linewidth),
|
|
|
-f=b.index)if(f.array instanceof Uint32Array?(r=m.UNSIGNED_INT,s=4):(r=m.UNSIGNED_SHORT,s=2),e=e.offsets,0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,f.array.length,r,0),L.info.render.calls++,L.info.render.vertices+=f.array.length;else for(1<e.length&&(c=!0),t=0,u=e.length;t<u;t++)v=e[t].index,c&&(g(d,a,b,v),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,e[t].count,r,e[t].start*s),L.info.render.calls++,L.info.render.vertices+=
|
|
|
-e[t].count;else c&&g(d,a,b,0),d=b.position,m.drawArrays(n,0,d.array.length/3),L.info.render.calls++,L.info.render.points+=d.array.length}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,l;c=B(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==$&&($=c,a=!0);a&&k();if(!d.morphTargets&&0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),h(b.position),m.vertexAttribPointer(b.position,3,m.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;
|
|
|
--1!==f.morphTargetBase&&0<=c.position?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),h(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),h(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var p=0;l=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;p<d.numSupportedMorphTargets&&p<l.length;)0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
-e.__webglMorphTargetsBuffers[l[p]]),h(c["morphTarget"+p]),m.vertexAttribPointer(c["morphTarget"+p],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+p]&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[l[p]]),h(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[l[p]],p++}else{l=[];g=f.morphTargetInfluences;var q,r=g.length;for(q=0;q<r;q++)p=g[q],0<p&&l.push([p,q]);l.length>d.numSupportedMorphTargets?(l.sort(n),l.length=
|
|
|
-d.numSupportedMorphTargets):l.length>d.numSupportedMorphNormals?l.sort(n):0===l.length&&l.push([0,0]);for(p=0;p<d.numSupportedMorphTargets;)l[p]?(q=l[p][1],0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[q]),h(c["morphTarget"+p]),m.vertexAttribPointer(c["morphTarget"+p],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+p]&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[q]),h(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,
|
|
|
-0)),f.__webglMorphTargetInfluences[p]=g[q]):f.__webglMorphTargetInfluences[p]=0,p++}null!==d.program.uniforms.morphTargetInfluences&&m.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(g=0,l=e.__webglCustomAttributesList.length;g<l;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(m.bindBuffer(m.ARRAY_BUFFER,c.buffer),h(b[c.buffer.belongsToAttribute]),m.vertexAttribPointer(b[c.buffer.belongsToAttribute],
|
|
|
-c.size,m.FLOAT,!1,0,0));0<=b.color&&(0<f.geometry.colors.length||0<f.geometry.faces.length?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglColorBuffer),h(b.color),m.vertexAttribPointer(b.color,3,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglNormalBuffer),h(b.normal),m.vertexAttribPointer(b.normal,3,m.FLOAT,!1,0,0));0<=b.tangent&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglTangentBuffer),h(b.tangent),m.vertexAttribPointer(b.tangent,
|
|
|
-4,m.FLOAT,!1,0,0));0<=b.uv&&(f.geometry.faceVertexUvs[0]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUVBuffer),h(b.uv),m.vertexAttribPointer(b.uv,2,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(f.geometry.faceVertexUvs[1]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUV2Buffer),h(b.uv2),m.vertexAttribPointer(b.uv2,2,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&
|
|
|
-(m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),h(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),h(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),h(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(G(d.wireframeLinewidth),
|
|
|
-a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),m.drawElements(m.LINES,e.__webglLineCount,f,0)):(a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),m.drawElements(m.TRIANGLES,e.__webglFaceCount,f,0)),L.info.render.calls++,L.info.render.vertices+=e.__webglFaceCount,L.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,G(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),L.info.render.calls++):f instanceof THREE.ParticleSystem&&
|
|
|
-(m.drawArrays(m.POINTS,0,e.__webglParticleCount),L.info.render.calls++,L.info.render.points+=e.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,h,k=a.__lights,p=a.fog;S=-1;Oa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Pa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);
|
|
|
-na.setFromMatrix(Pa);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,a,b);L.info.render.calls=0;L.info.render.vertices=0;L.info.render.faces=0;L.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.id=d,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||na.intersectsObject(g))){var n=
|
|
|
-g;n._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,n.matrixWorld);n._normalMatrix.getNormalMatrix(n._modelViewMatrix);var n=f,t=n.object,u=n.buffer,v=t.geometry,t=t.material;t instanceof THREE.MeshFaceMaterial?(t=t.materials[v instanceof THREE.BufferGeometry?0:u.materialIndex],t.transparent?(n.transparent=t,n.opaque=null):(n.opaque=t,n.transparent=null)):t&&(t.transparent?(n.transparent=t,n.opaque=null):(n.opaque=t,n.transparent=null));f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?
|
|
|
-f.z=g.renderDepth:(ya.setFromMatrixPosition(g.matrixWorld),ya.applyProjection(Pa),f.z=ya.z))}this.sortObjects&&h.sort(l);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,
|
|
|
-d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),I(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,k,p,!0,d),q(a.__webglObjectsImmediate,"",b,k,p,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(a.__webglObjects,!0,"opaque",b,k,p,!1,d),q(a.__webglObjectsImmediate,"opaque",b,k,p,!1,d),r(a.__webglObjects,!1,"transparent",b,k,p,!0,d),q(a.__webglObjectsImmediate,"transparent",b,k,p,!0,d));s(this.renderPluginsPost,a,b);c&&
|
|
|
-c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP),m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=B(a,b,c,d,e);$=-1;L.setMaterialFaces(d);
|
|
|
-e.immediateRenderCallback?e.immediateRenderCallback(f,m,na):e.render(function(a){L.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;)u(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)t(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1);for(var b=0,g=a.__webglObjects.length;b<g;b++){var h=a.__webglObjects[b].object;
|
|
|
-void 0===h.__webglInit&&(void 0!==h.__webglActive&&t(h,a),u(h,a));var k=h,l=k.geometry,p=void 0,q=void 0,r=void 0;if(l instanceof THREE.BufferGeometry){var s=m.DYNAMIC_DRAW,x=l.attributes,z=void 0,y=void 0;for(z in x)y=x[z],y.needsUpdate&&("index"===z?(m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,y.array,s)):(m.bindBuffer(m.ARRAY_BUFFER,y.buffer),m.bufferData(m.ARRAY_BUFFER,y.array,s)),y.needsUpdate=!1)}else if(k instanceof THREE.Mesh){for(var B=0,I=l.geometryGroupsList.length;B<
|
|
|
-I;B++)if(p=l.geometryGroupsList[B],r=d(k,p),l.buffersNeedUpdate&&c(p,k),q=r.attributes&&v(r),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||l.normalsNeedUpdate||l.colorsNeedUpdate||l.tangentsNeedUpdate||q){var A=p,D=k,C=m.DYNAMIC_DRAW,F=!l.dynamic,G=r;if(A.__inittedArrays){var H=e(G),O=G.vertexColors?G.vertexColors:!1,M=f(G),L=H===THREE.SmoothShading,E=void 0,J=void 0,Q=void 0,K=void 0,ca=void 0,R=void 0,Y=void 0,W=void 0,V=void 0,$=void 0,sa=void 0,S=void 0,
|
|
|
-T=void 0,Z=void 0,oa=void 0,ta=void 0,Fa=void 0,da=void 0,Ka=void 0,fa=void 0,ga=void 0,ha=void 0,za=void 0,ka=void 0,ia=void 0,la=void 0,na=void 0,pa=void 0,Aa=void 0,ba=void 0,Ea=void 0,Ca=void 0,La=void 0,Ja=void 0,ma=void 0,Ma=void 0,wa=void 0,xa=void 0,Va=void 0,Wa=void 0,Ba=0,Da=0,Oa=0,Qa=0,Ra=0,Ga=0,Za=0,Na=0,eb=0,va=0,Ha=0,P=0,Ya=void 0,jb=A.__vertexArray,db=A.__uvArray,hb=A.__uv2Array,Xa=A.__normalArray,$a=A.__tangentArray,kb=A.__colorArray,ab=A.__skinIndexArray,bb=A.__skinWeightArray,xb=
|
|
|
-A.__morphTargetsArrays,yb=A.__morphNormalsArrays,tb=A.__webglCustomAttributesList,N=void 0,Mb=A.__faceArray,ub=A.__lineArray,Sa=D.geometry,Hb=Sa.elementsNeedUpdate,Bb=Sa.uvsNeedUpdate,Ib=Sa.normalsNeedUpdate,Jb=Sa.tangentsNeedUpdate,Kb=Sa.colorsNeedUpdate,Lb=Sa.morphTargetsNeedUpdate,cc=Sa.vertices,ea=A.faces3,lb=Sa.faces,Cb=Sa.faceVertexUvs[0],ic=Sa.faceVertexUvs[1],dc=Sa.skinIndices,Nb=Sa.skinWeights,Ob=Sa.morphTargets,jc=Sa.morphNormals;if(Sa.verticesNeedUpdate){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],
|
|
|
-S=cc[K.a],T=cc[K.b],Z=cc[K.c],jb[Da]=S.x,jb[Da+1]=S.y,jb[Da+2]=S.z,jb[Da+3]=T.x,jb[Da+4]=T.y,jb[Da+5]=T.z,jb[Da+6]=Z.x,jb[Da+7]=Z.y,jb[Da+8]=Z.z,Da+=9;m.bindBuffer(m.ARRAY_BUFFER,A.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,jb,C)}if(Lb)for(ma=0,Ma=Ob.length;ma<Ma;ma++){E=Ha=0;for(J=ea.length;E<J;E++)Va=ea[E],K=lb[Va],S=Ob[ma].vertices[K.a],T=Ob[ma].vertices[K.b],Z=Ob[ma].vertices[K.c],wa=xb[ma],wa[Ha]=S.x,wa[Ha+1]=S.y,wa[Ha+2]=S.z,wa[Ha+3]=T.x,wa[Ha+4]=T.y,wa[Ha+5]=T.z,wa[Ha+6]=Z.x,wa[Ha+7]=
|
|
|
-Z.y,wa[Ha+8]=Z.z,G.morphNormals&&(L?(Wa=jc[ma].vertexNormals[Va],da=Wa.a,Ka=Wa.b,fa=Wa.c):fa=Ka=da=jc[ma].faceNormals[Va],xa=yb[ma],xa[Ha]=da.x,xa[Ha+1]=da.y,xa[Ha+2]=da.z,xa[Ha+3]=Ka.x,xa[Ha+4]=Ka.y,xa[Ha+5]=Ka.z,xa[Ha+6]=fa.x,xa[Ha+7]=fa.y,xa[Ha+8]=fa.z),Ha+=9;m.bindBuffer(m.ARRAY_BUFFER,A.__webglMorphTargetsBuffers[ma]);m.bufferData(m.ARRAY_BUFFER,xb[ma],C);G.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglMorphNormalsBuffers[ma]),m.bufferData(m.ARRAY_BUFFER,yb[ma],C))}if(Nb.length){E=0;for(J=
|
|
|
-ea.length;E<J;E++)K=lb[ea[E]],ka=Nb[K.a],ia=Nb[K.b],la=Nb[K.c],bb[va]=ka.x,bb[va+1]=ka.y,bb[va+2]=ka.z,bb[va+3]=ka.w,bb[va+4]=ia.x,bb[va+5]=ia.y,bb[va+6]=ia.z,bb[va+7]=ia.w,bb[va+8]=la.x,bb[va+9]=la.y,bb[va+10]=la.z,bb[va+11]=la.w,na=dc[K.a],pa=dc[K.b],Aa=dc[K.c],ab[va]=na.x,ab[va+1]=na.y,ab[va+2]=na.z,ab[va+3]=na.w,ab[va+4]=pa.x,ab[va+5]=pa.y,ab[va+6]=pa.z,ab[va+7]=pa.w,ab[va+8]=Aa.x,ab[va+9]=Aa.y,ab[va+10]=Aa.z,ab[va+11]=Aa.w,va+=12;0<va&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglSkinIndicesBuffer),
|
|
|
-m.bufferData(m.ARRAY_BUFFER,ab,C),m.bindBuffer(m.ARRAY_BUFFER,A.__webglSkinWeightsBuffer),m.bufferData(m.ARRAY_BUFFER,bb,C))}if(Kb&&O){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],Y=K.vertexColors,W=K.color,3===Y.length&&O===THREE.VertexColors?(ga=Y[0],ha=Y[1],za=Y[2]):za=ha=ga=W,kb[eb]=ga.r,kb[eb+1]=ga.g,kb[eb+2]=ga.b,kb[eb+3]=ha.r,kb[eb+4]=ha.g,kb[eb+5]=ha.b,kb[eb+6]=za.r,kb[eb+7]=za.g,kb[eb+8]=za.b,eb+=9;0<eb&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,kb,C))}if(Jb&&
|
|
|
-Sa.hasTangents){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],V=K.vertexTangents,oa=V[0],ta=V[1],Fa=V[2],$a[Za]=oa.x,$a[Za+1]=oa.y,$a[Za+2]=oa.z,$a[Za+3]=oa.w,$a[Za+4]=ta.x,$a[Za+5]=ta.y,$a[Za+6]=ta.z,$a[Za+7]=ta.w,$a[Za+8]=Fa.x,$a[Za+9]=Fa.y,$a[Za+10]=Fa.z,$a[Za+11]=Fa.w,Za+=12;m.bindBuffer(m.ARRAY_BUFFER,A.__webglTangentBuffer);m.bufferData(m.ARRAY_BUFFER,$a,C)}if(Ib&&H){E=0;for(J=ea.length;E<J;E++)if(K=lb[ea[E]],ca=K.vertexNormals,R=K.normal,3===ca.length&&L)for(ba=0;3>ba;ba++)Ca=ca[ba],Xa[Ga]=Ca.x,
|
|
|
-Xa[Ga+1]=Ca.y,Xa[Ga+2]=Ca.z,Ga+=3;else for(ba=0;3>ba;ba++)Xa[Ga]=R.x,Xa[Ga+1]=R.y,Xa[Ga+2]=R.z,Ga+=3;m.bindBuffer(m.ARRAY_BUFFER,A.__webglNormalBuffer);m.bufferData(m.ARRAY_BUFFER,Xa,C)}if(Bb&&Cb&&M){E=0;for(J=ea.length;E<J;E++)if(Q=ea[E],$=Cb[Q],void 0!==$)for(ba=0;3>ba;ba++)La=$[ba],db[Oa]=La.x,db[Oa+1]=La.y,Oa+=2;0<Oa&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglUVBuffer),m.bufferData(m.ARRAY_BUFFER,db,C))}if(Bb&&ic&&M){E=0;for(J=ea.length;E<J;E++)if(Q=ea[E],sa=ic[Q],void 0!==sa)for(ba=0;3>ba;ba++)Ja=
|
|
|
-sa[ba],hb[Qa]=Ja.x,hb[Qa+1]=Ja.y,Qa+=2;0<Qa&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglUV2Buffer),m.bufferData(m.ARRAY_BUFFER,hb,C))}if(Hb){E=0;for(J=ea.length;E<J;E++)Mb[Ra]=Ba,Mb[Ra+1]=Ba+1,Mb[Ra+2]=Ba+2,Ra+=3,ub[Na]=Ba,ub[Na+1]=Ba+1,ub[Na+2]=Ba,ub[Na+3]=Ba+2,ub[Na+4]=Ba+1,ub[Na+5]=Ba+2,Na+=6,Ba+=3;m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,A.__webglFaceBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Mb,C);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,A.__webglLineBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,ub,C)}if(tb)for(ba=
|
|
|
-0,Ea=tb.length;ba<Ea;ba++)if(N=tb[ba],N.__original.needsUpdate){P=0;if(1===N.size)if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],N.array[P]=N.value[K.a],N.array[P+1]=N.value[K.b],N.array[P+2]=N.value[K.c],P+=3;else{if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],N.array[P]=Ya,N.array[P+1]=Ya,N.array[P+2]=Ya,P+=3}else if(2===N.size)if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],
|
|
|
-Z=N.value[K.c],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=T.x,N.array[P+3]=T.y,N.array[P+4]=Z.x,N.array[P+5]=Z.y,P+=6;else{if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=T.x,N.array[P+3]=T.y,N.array[P+4]=Z.x,N.array[P+5]=Z.y,P+=6}else if(3===N.size){var ua;ua="c"===N.type?["r","g","b"]:["x","y","z"];if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],Z=N.value[K.c],
|
|
|
-N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9;else if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9;else if("faceVertices"===
|
|
|
-N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],S=Ya[0],T=Ya[1],Z=Ya[2],N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9}else if(4===N.size)if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],Z=N.value[K.c],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+
|
|
|
-4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=Z.w,P+=12;else if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=Z.w,P+=12;else if("faceVertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],
|
|
|
-S=Ya[0],T=Ya[1],Z=Ya[2],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=Z.w,P+=12;m.bindBuffer(m.ARRAY_BUFFER,N.buffer);m.bufferData(m.ARRAY_BUFFER,N.array,C)}F&&(delete A.__inittedArrays,delete A.__colorArray,delete A.__normalArray,delete A.__tangentArray,delete A.__uvArray,delete A.__uv2Array,delete A.__faceArray,delete A.__vertexArray,delete A.__lineArray,
|
|
|
-delete A.__skinIndexArray,delete A.__skinWeightArray)}}l.verticesNeedUpdate=!1;l.morphTargetsNeedUpdate=!1;l.elementsNeedUpdate=!1;l.uvsNeedUpdate=!1;l.normalsNeedUpdate=!1;l.colorsNeedUpdate=!1;l.tangentsNeedUpdate=!1;l.buffersNeedUpdate=!1;r.attributes&&w(r)}else if(k instanceof THREE.Line){r=d(k,l);q=r.attributes&&v(r);if(l.verticesNeedUpdate||l.colorsNeedUpdate||l.lineDistancesNeedUpdate||q){var cb=l,Pb=m.DYNAMIC_DRAW,Db=void 0,Eb=void 0,Fb=void 0,Qb=void 0,ra=void 0,Rb=void 0,kc=cb.vertices,
|
|
|
-lc=cb.colors,mc=cb.lineDistances,Wb=kc.length,Xb=lc.length,Yb=mc.length,Sb=cb.__vertexArray,Tb=cb.__colorArray,nc=cb.__lineDistanceArray,Zb=cb.colorsNeedUpdate,$b=cb.lineDistancesNeedUpdate,ec=cb.__webglCustomAttributesList,Ub=void 0,oc=void 0,Ia=void 0,zb=void 0,Ta=void 0,qa=void 0;if(cb.verticesNeedUpdate){for(Db=0;Db<Wb;Db++)Qb=kc[Db],ra=3*Db,Sb[ra]=Qb.x,Sb[ra+1]=Qb.y,Sb[ra+2]=Qb.z;m.bindBuffer(m.ARRAY_BUFFER,cb.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,Sb,Pb)}if(Zb){for(Eb=0;Eb<Xb;Eb++)Rb=
|
|
|
-lc[Eb],ra=3*Eb,Tb[ra]=Rb.r,Tb[ra+1]=Rb.g,Tb[ra+2]=Rb.b;m.bindBuffer(m.ARRAY_BUFFER,cb.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,Tb,Pb)}if($b){for(Fb=0;Fb<Yb;Fb++)nc[Fb]=mc[Fb];m.bindBuffer(m.ARRAY_BUFFER,cb.__webglLineDistanceBuffer);m.bufferData(m.ARRAY_BUFFER,nc,Pb)}if(ec)for(Ub=0,oc=ec.length;Ub<oc;Ub++)if(qa=ec[Ub],qa.needsUpdate&&(void 0===qa.boundTo||"vertices"===qa.boundTo)){ra=0;zb=qa.value.length;if(1===qa.size)for(Ia=0;Ia<zb;Ia++)qa.array[Ia]=qa.value[Ia];else if(2===qa.size)for(Ia=
|
|
|
-0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,ra+=2;else if(3===qa.size)if("c"===qa.type)for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.r,qa.array[ra+1]=Ta.g,qa.array[ra+2]=Ta.b,ra+=3;else for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,qa.array[ra+2]=Ta.z,ra+=3;else if(4===qa.size)for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,qa.array[ra+2]=Ta.z,qa.array[ra+3]=Ta.w,ra+=4;m.bindBuffer(m.ARRAY_BUFFER,qa.buffer);m.bufferData(m.ARRAY_BUFFER,
|
|
|
-qa.array,Pb)}}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;l.lineDistancesNeedUpdate=!1;r.attributes&&w(r)}else if(k instanceof THREE.ParticleSystem){r=d(k,l);q=r.attributes&&v(r);if(l.verticesNeedUpdate||l.colorsNeedUpdate||k.sortParticles||q){var mb=l,fc=m.DYNAMIC_DRAW,Gb=k,Ua=void 0,nb=void 0,ob=void 0,X=void 0,pb=void 0,sb=void 0,Vb=mb.vertices,gc=Vb.length,hc=mb.colors,pc=hc.length,vb=mb.__vertexArray,wb=mb.__colorArray,qb=mb.__sortArray,qc=mb.verticesNeedUpdate,rc=mb.colorsNeedUpdate,rb=mb.__webglCustomAttributesList,
|
|
|
-fb=void 0,Ab=void 0,aa=void 0,gb=void 0,ja=void 0,U=void 0;if(Gb.sortParticles){ib.copy(Pa);ib.multiply(Gb.matrixWorld);for(Ua=0;Ua<gc;Ua++)ob=Vb[Ua],ya.copy(ob),ya.applyProjection(ib),qb[Ua]=[ya.z,Ua];qb.sort(n);for(Ua=0;Ua<gc;Ua++)ob=Vb[qb[Ua][1]],X=3*Ua,vb[X]=ob.x,vb[X+1]=ob.y,vb[X+2]=ob.z;for(nb=0;nb<pc;nb++)X=3*nb,sb=hc[qb[nb][1]],wb[X]=sb.r,wb[X+1]=sb.g,wb[X+2]=sb.b;if(rb)for(fb=0,Ab=rb.length;fb<Ab;fb++)if(U=rb[fb],void 0===U.boundTo||"vertices"===U.boundTo)if(X=0,gb=U.value.length,1===U.size)for(aa=
|
|
|
-0;aa<gb;aa++)pb=qb[aa][1],U.array[aa]=U.value[pb];else if(2===U.size)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=ja.y,X+=2;else if(3===U.size)if("c"===U.type)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.r,U.array[X+1]=ja.g,U.array[X+2]=ja.b,X+=3;else for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,X+=3;else if(4===U.size)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=
|
|
|
-ja.y,U.array[X+2]=ja.z,U.array[X+3]=ja.w,X+=4}else{if(qc)for(Ua=0;Ua<gc;Ua++)ob=Vb[Ua],X=3*Ua,vb[X]=ob.x,vb[X+1]=ob.y,vb[X+2]=ob.z;if(rc)for(nb=0;nb<pc;nb++)sb=hc[nb],X=3*nb,wb[X]=sb.r,wb[X+1]=sb.g,wb[X+2]=sb.b;if(rb)for(fb=0,Ab=rb.length;fb<Ab;fb++)if(U=rb[fb],U.needsUpdate&&(void 0===U.boundTo||"vertices"===U.boundTo))if(gb=U.value.length,X=0,1===U.size)for(aa=0;aa<gb;aa++)U.array[aa]=U.value[aa];else if(2===U.size)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,X+=2;else if(3===
|
|
|
-U.size)if("c"===U.type)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.r,U.array[X+1]=ja.g,U.array[X+2]=ja.b,X+=3;else for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,X+=3;else if(4===U.size)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,U.array[X+3]=ja.w,X+=4}if(qc||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,mb.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,vb,fc);if(rc||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
-mb.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,wb,fc);if(rb)for(fb=0,Ab=rb.length;fb<Ab;fb++)if(U=rb[fb],U.needsUpdate||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,U.buffer),m.bufferData(m.ARRAY_BUFFER,U.array,fc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;r.attributes&&w(r)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",Kb);var k,l,p,n,q;a instanceof THREE.MeshDepthMaterial?q="depth":a instanceof THREE.MeshNormalMaterial?q="normal":a instanceof THREE.MeshBasicMaterial?
|
|
|
-q="basic":a instanceof THREE.MeshLambertMaterial?q="lambert":a instanceof THREE.MeshPhongMaterial?q="phong":a instanceof THREE.LineBasicMaterial?q="basic":a instanceof THREE.LineDashedMaterial?q="dashed":a instanceof THREE.ParticleSystemMaterial&&(q="particle_basic");if(q){var r=THREE.ShaderLib[q];a.uniforms=THREE.UniformsUtils.clone(r.uniforms);a.vertexShader=r.vertexShader;a.fragmentShader=r.fragmentShader}var s=e=0,t=0,u=r=0;for(f=b.length;u<f;u++)g=b[u],g.onlyShadow||!1===g.visible||(g instanceof
|
|
|
-THREE.DirectionalLight&&e++,g instanceof THREE.PointLight&&s++,g instanceof THREE.SpotLight&&t++,g instanceof THREE.HemisphereLight&&r++);f=s;g=t;h=r;t=r=0;for(s=b.length;t<s;t++)u=b[t],u.castShadow&&(u instanceof THREE.SpotLight&&r++,u instanceof THREE.DirectionalLight&&!u.shadowCascade&&r++);n=r;yb&&d&&d.useVertexTexture?p=1024:(b=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+
|
|
|
-d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),p=b);a:{t=a.fragmentShader;s=a.vertexShader;r=a.uniforms;b=a.attributes;u=a.defines;c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:p,useVertexTexture:yb&&d&&d.useVertexTexture,morphTargets:a.morphTargets,
|
|
|
-morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<n,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide};d=a.index0AttributeName;
|
|
|
-var v,w,x;e=[];q?e.push(q):(e.push(t),e.push(s));for(w in u)e.push(w),e.push(u[w]);for(v in c)e.push(v),e.push(c[v]);q=e.join();v=0;for(w=ca.length;v<w;v++)if(e=ca[v],e.code===q){e.usedTimes++;l=e.program;break a}v="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?v="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(v="SHADOWMAP_TYPE_PCF_SOFT");w=[];for(x in u)e=u[x],!1!==e&&(e="#define "+x+" "+e,w.push(e));e=w.join("\n");x=m.createProgram();w=["precision "+Y+" float;","precision "+
|
|
|
-Y+" int;",e,xb?"#define VERTEX_TEXTURES":"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?
|
|
|
-"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+v:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":
|
|
|
-"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+a.uvArray,m.DYNAMIC_DRAW),m.enableVertexAttribArray(b.attributes.uv),m.vertexAttribPointer(b.attributes.uv,2,m.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,a.colorArray,m.DYNAMIC_DRAW),m.enableVertexAttribArray(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var h=
|
|
|
+B(a,b,c,d,f);a=h.attributes;b=e.attributes;c=!1;h=16777215*e.id+2*h.id+(d.wireframe?1:0);h!==$&&($=h,c=!0);c&&k();if(f instanceof THREE.Mesh)if(f=b.index){var l;f.array instanceof Uint32Array?(h=m.UNSIGNED_INT,l=4):(h=m.UNSIGNED_SHORT,l=2);e=e.offsets;if(0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.TRIANGLES,f.array.length,h,0),L.info.render.calls++,L.info.render.vertices+=f.array.length,L.info.render.faces+=f.array.length/3;else{c=!0;for(var n=0,p=e.length;n<
|
|
|
+p;n++){var q=e[n].index;c&&(g(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer));m.drawElements(m.TRIANGLES,e[n].count,h,e[n].start*l);L.info.render.calls++;L.info.render.vertices+=e[n].count;L.info.render.faces+=e[n].count/3}}}else c&&g(d,a,b,0),d=e.attributes.position,m.drawArrays(m.TRIANGLES,0,d.array.length/3),L.info.render.calls++,L.info.render.vertices+=d.array.length/3,L.info.render.faces+=d.array.length/3/3;else if(f instanceof THREE.ParticleSystem)c&&g(d,a,b,0),d=b.position,m.drawArrays(m.POINTS,
|
|
|
+0,d.array.length/3),L.info.render.calls++,L.info.render.points+=d.array.length/3;else if(f instanceof THREE.Line)if(h=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,G(d.linewidth),f=b.index)if(f.array instanceof Uint32Array?(h=m.UNSIGNED_INT,l=4):(h=m.UNSIGNED_SHORT,l=2),e=e.offsets,0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,f.array.length,h,0),L.info.render.calls++,L.info.render.vertices+=f.array.length;else for(1<e.length&&(c=!0),n=0,p=e.length;n<
|
|
|
+p;n++)q=e[n].index,c&&(g(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,e[n].count,h,e[n].start*l),L.info.render.calls++,L.info.render.vertices+=e[n].count;else c&&g(d,a,b,0),d=b.position,m.drawArrays(h,0,d.array.length/3),L.info.render.calls++,L.info.render.points+=d.array.length}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,l;c=B(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==$&&($=c,a=!0);a&&k();if(!d.morphTargets&&
|
|
|
+0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),h(b.position),m.vertexAttribPointer(b.position,3,m.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),h(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),h(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var p=
|
|
|
+0;l=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;p<d.numSupportedMorphTargets&&p<l.length;)0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l[p]]),h(c["morphTarget"+p]),m.vertexAttribPointer(c["morphTarget"+p],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+p]&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[l[p]]),h(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[l[p]],p++}else{l=
|
|
|
+[];g=f.morphTargetInfluences;var q,r=g.length;for(q=0;q<r;q++)p=g[q],0<p&&l.push([p,q]);l.length>d.numSupportedMorphTargets?(l.sort(n),l.length=d.numSupportedMorphTargets):l.length>d.numSupportedMorphNormals?l.sort(n):0===l.length&&l.push([0,0]);for(p=0;p<d.numSupportedMorphTargets;)l[p]?(q=l[p][1],0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[q]),h(c["morphTarget"+p]),m.vertexAttribPointer(c["morphTarget"+p],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+p]&&d.morphNormals&&
|
|
|
+(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[q]),h(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[q]):f.__webglMorphTargetInfluences[p]=0,p++}null!==d.program.uniforms.morphTargetInfluences&&m.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(g=0,l=e.__webglCustomAttributesList.length;g<l;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&
|
|
|
+(m.bindBuffer(m.ARRAY_BUFFER,c.buffer),h(b[c.buffer.belongsToAttribute]),m.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,m.FLOAT,!1,0,0));0<=b.color&&(0<f.geometry.colors.length||0<f.geometry.faces.length?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglColorBuffer),h(b.color),m.vertexAttribPointer(b.color,3,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglNormalBuffer),h(b.normal),m.vertexAttribPointer(b.normal,
|
|
|
+3,m.FLOAT,!1,0,0));0<=b.tangent&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglTangentBuffer),h(b.tangent),m.vertexAttribPointer(b.tangent,4,m.FLOAT,!1,0,0));0<=b.uv&&(f.geometry.faceVertexUvs[0]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUVBuffer),h(b.uv),m.vertexAttribPointer(b.uv,2,m.FLOAT,!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(f.geometry.faceVertexUvs[1]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUV2Buffer),h(b.uv2),m.vertexAttribPointer(b.uv2,2,m.FLOAT,
|
|
|
+!1,0,0)):d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),h(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),h(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),h(b.lineDistance),m.vertexAttribPointer(b.lineDistance,
|
|
|
+1,m.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(G(d.wireframeLinewidth),a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),m.drawElements(m.LINES,e.__webglLineCount,f,0)):(a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),m.drawElements(m.TRIANGLES,e.__webglFaceCount,f,0)),L.info.render.calls++,L.info.render.vertices+=e.__webglFaceCount,L.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===
|
|
|
+THREE.LineStrip?m.LINE_STRIP:m.LINES,G(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),L.info.render.calls++):f instanceof THREE.ParticleSystem&&(m.drawArrays(m.POINTS,0,e.__webglParticleCount),L.info.render.calls++,L.info.render.points+=e.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,h,k=a.__lights,p=a.fog;S=-1;Oa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();
|
|
|
+void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Pa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);na.setFromMatrix(Pa);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,a,b);L.info.render.calls=0;L.info.render.vertices=0;L.info.render.faces=0;L.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=
|
|
|
+h[d],g=f.object,f.id=d,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||na.intersectsObject(g))){var n=g;n._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,n.matrixWorld);n._normalMatrix.getNormalMatrix(n._modelViewMatrix);var n=f,t=n.object,u=n.buffer,v=t.geometry,t=t.material;t instanceof THREE.MeshFaceMaterial?(t=t.materials[v instanceof THREE.BufferGeometry?0:u.materialIndex],t.transparent?(n.transparent=t,n.opaque=null):(n.opaque=
|
|
|
+t,n.transparent=null)):t&&(t.transparent?(n.transparent=t,n.opaque=null):(n.opaque=t,n.transparent=null));f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(ya.setFromMatrixPosition(g.matrixWorld),ya.applyProjection(Pa),f.z=ya.z))}this.sortObjects&&h.sort(l);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),g=f.object.material,
|
|
|
+g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),I(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,k,p,!0,d),q(a.__webglObjectsImmediate,"",b,k,p,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(a.__webglObjects,!0,"opaque",b,k,p,!1,d),q(a.__webglObjectsImmediate,
|
|
|
+"opaque",b,k,p,!1,d),r(a.__webglObjects,!1,"transparent",b,k,p,!0,d),q(a.__webglObjectsImmediate,"transparent",b,k,p,!0,d));s(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP),m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,
|
|
|
+null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=B(a,b,c,d,e);$=-1;L.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,na):e.render(function(a){L.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;)u(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)t(a.__objectsRemoved[0],
|
|
|
+a),a.__objectsRemoved.splice(0,1);for(var b=0,g=a.__webglObjects.length;b<g;b++){var h=a.__webglObjects[b].object;void 0===h.__webglInit&&(void 0!==h.__webglActive&&t(h,a),u(h,a));var k=h,l=k.geometry,p=void 0,q=void 0,r=void 0;if(l instanceof THREE.BufferGeometry){var s=m.DYNAMIC_DRAW,x=l.attributes,z=void 0,y=void 0;for(z in x)y=x[z],y.needsUpdate&&("index"===z?(m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,y.array,s)):(m.bindBuffer(m.ARRAY_BUFFER,y.buffer),m.bufferData(m.ARRAY_BUFFER,
|
|
|
+y.array,s)),y.needsUpdate=!1)}else if(k instanceof THREE.Mesh){for(var B=0,I=l.geometryGroupsList.length;B<I;B++)if(p=l.geometryGroupsList[B],r=d(k,p),l.buffersNeedUpdate&&c(p,k),q=r.attributes&&v(r),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||l.normalsNeedUpdate||l.colorsNeedUpdate||l.tangentsNeedUpdate||q){var A=p,D=k,C=m.DYNAMIC_DRAW,F=!l.dynamic,G=r;if(A.__inittedArrays){var H=e(G),O=G.vertexColors?G.vertexColors:!1,M=f(G),L=H===THREE.SmoothShading,E=
|
|
|
+void 0,J=void 0,Q=void 0,K=void 0,ca=void 0,R=void 0,Y=void 0,W=void 0,V=void 0,$=void 0,sa=void 0,S=void 0,T=void 0,Z=void 0,oa=void 0,ta=void 0,Fa=void 0,da=void 0,Ka=void 0,fa=void 0,ga=void 0,ha=void 0,za=void 0,ka=void 0,ia=void 0,la=void 0,na=void 0,pa=void 0,Aa=void 0,ba=void 0,Ea=void 0,Ca=void 0,La=void 0,Ja=void 0,ma=void 0,Ma=void 0,wa=void 0,xa=void 0,Va=void 0,Wa=void 0,Ba=0,Da=0,Oa=0,Qa=0,Ra=0,Ga=0,Za=0,Na=0,eb=0,va=0,Ha=0,P=0,Ya=void 0,jb=A.__vertexArray,db=A.__uvArray,hb=A.__uv2Array,
|
|
|
+Xa=A.__normalArray,$a=A.__tangentArray,kb=A.__colorArray,ab=A.__skinIndexArray,bb=A.__skinWeightArray,xb=A.__morphTargetsArrays,yb=A.__morphNormalsArrays,tb=A.__webglCustomAttributesList,N=void 0,Mb=A.__faceArray,ub=A.__lineArray,Sa=D.geometry,Hb=Sa.elementsNeedUpdate,Bb=Sa.uvsNeedUpdate,Ib=Sa.normalsNeedUpdate,Jb=Sa.tangentsNeedUpdate,Kb=Sa.colorsNeedUpdate,Lb=Sa.morphTargetsNeedUpdate,cc=Sa.vertices,ea=A.faces3,lb=Sa.faces,Cb=Sa.faceVertexUvs[0],ic=Sa.faceVertexUvs[1],dc=Sa.skinIndices,Nb=Sa.skinWeights,
|
|
|
+Ob=Sa.morphTargets,jc=Sa.morphNormals;if(Sa.verticesNeedUpdate){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],S=cc[K.a],T=cc[K.b],Z=cc[K.c],jb[Da]=S.x,jb[Da+1]=S.y,jb[Da+2]=S.z,jb[Da+3]=T.x,jb[Da+4]=T.y,jb[Da+5]=T.z,jb[Da+6]=Z.x,jb[Da+7]=Z.y,jb[Da+8]=Z.z,Da+=9;m.bindBuffer(m.ARRAY_BUFFER,A.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,jb,C)}if(Lb)for(ma=0,Ma=Ob.length;ma<Ma;ma++){E=Ha=0;for(J=ea.length;E<J;E++)Va=ea[E],K=lb[Va],S=Ob[ma].vertices[K.a],T=Ob[ma].vertices[K.b],Z=Ob[ma].vertices[K.c],wa=
|
|
|
+xb[ma],wa[Ha]=S.x,wa[Ha+1]=S.y,wa[Ha+2]=S.z,wa[Ha+3]=T.x,wa[Ha+4]=T.y,wa[Ha+5]=T.z,wa[Ha+6]=Z.x,wa[Ha+7]=Z.y,wa[Ha+8]=Z.z,G.morphNormals&&(L?(Wa=jc[ma].vertexNormals[Va],da=Wa.a,Ka=Wa.b,fa=Wa.c):fa=Ka=da=jc[ma].faceNormals[Va],xa=yb[ma],xa[Ha]=da.x,xa[Ha+1]=da.y,xa[Ha+2]=da.z,xa[Ha+3]=Ka.x,xa[Ha+4]=Ka.y,xa[Ha+5]=Ka.z,xa[Ha+6]=fa.x,xa[Ha+7]=fa.y,xa[Ha+8]=fa.z),Ha+=9;m.bindBuffer(m.ARRAY_BUFFER,A.__webglMorphTargetsBuffers[ma]);m.bufferData(m.ARRAY_BUFFER,xb[ma],C);G.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
+A.__webglMorphNormalsBuffers[ma]),m.bufferData(m.ARRAY_BUFFER,yb[ma],C))}if(Nb.length){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],ka=Nb[K.a],ia=Nb[K.b],la=Nb[K.c],bb[va]=ka.x,bb[va+1]=ka.y,bb[va+2]=ka.z,bb[va+3]=ka.w,bb[va+4]=ia.x,bb[va+5]=ia.y,bb[va+6]=ia.z,bb[va+7]=ia.w,bb[va+8]=la.x,bb[va+9]=la.y,bb[va+10]=la.z,bb[va+11]=la.w,na=dc[K.a],pa=dc[K.b],Aa=dc[K.c],ab[va]=na.x,ab[va+1]=na.y,ab[va+2]=na.z,ab[va+3]=na.w,ab[va+4]=pa.x,ab[va+5]=pa.y,ab[va+6]=pa.z,ab[va+7]=pa.w,ab[va+8]=Aa.x,ab[va+9]=Aa.y,ab[va+
|
|
|
+10]=Aa.z,ab[va+11]=Aa.w,va+=12;0<va&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglSkinIndicesBuffer),m.bufferData(m.ARRAY_BUFFER,ab,C),m.bindBuffer(m.ARRAY_BUFFER,A.__webglSkinWeightsBuffer),m.bufferData(m.ARRAY_BUFFER,bb,C))}if(Kb&&O){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],Y=K.vertexColors,W=K.color,3===Y.length&&O===THREE.VertexColors?(ga=Y[0],ha=Y[1],za=Y[2]):za=ha=ga=W,kb[eb]=ga.r,kb[eb+1]=ga.g,kb[eb+2]=ga.b,kb[eb+3]=ha.r,kb[eb+4]=ha.g,kb[eb+5]=ha.b,kb[eb+6]=za.r,kb[eb+7]=za.g,kb[eb+8]=za.b,eb+=9;0<
|
|
|
+eb&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,kb,C))}if(Jb&&Sa.hasTangents){E=0;for(J=ea.length;E<J;E++)K=lb[ea[E]],V=K.vertexTangents,oa=V[0],ta=V[1],Fa=V[2],$a[Za]=oa.x,$a[Za+1]=oa.y,$a[Za+2]=oa.z,$a[Za+3]=oa.w,$a[Za+4]=ta.x,$a[Za+5]=ta.y,$a[Za+6]=ta.z,$a[Za+7]=ta.w,$a[Za+8]=Fa.x,$a[Za+9]=Fa.y,$a[Za+10]=Fa.z,$a[Za+11]=Fa.w,Za+=12;m.bindBuffer(m.ARRAY_BUFFER,A.__webglTangentBuffer);m.bufferData(m.ARRAY_BUFFER,$a,C)}if(Ib&&H){E=0;for(J=ea.length;E<J;E++)if(K=lb[ea[E]],
|
|
|
+ca=K.vertexNormals,R=K.normal,3===ca.length&&L)for(ba=0;3>ba;ba++)Ca=ca[ba],Xa[Ga]=Ca.x,Xa[Ga+1]=Ca.y,Xa[Ga+2]=Ca.z,Ga+=3;else for(ba=0;3>ba;ba++)Xa[Ga]=R.x,Xa[Ga+1]=R.y,Xa[Ga+2]=R.z,Ga+=3;m.bindBuffer(m.ARRAY_BUFFER,A.__webglNormalBuffer);m.bufferData(m.ARRAY_BUFFER,Xa,C)}if(Bb&&Cb&&M){E=0;for(J=ea.length;E<J;E++)if(Q=ea[E],$=Cb[Q],void 0!==$)for(ba=0;3>ba;ba++)La=$[ba],db[Oa]=La.x,db[Oa+1]=La.y,Oa+=2;0<Oa&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglUVBuffer),m.bufferData(m.ARRAY_BUFFER,db,C))}if(Bb&&
|
|
|
+ic&&M){E=0;for(J=ea.length;E<J;E++)if(Q=ea[E],sa=ic[Q],void 0!==sa)for(ba=0;3>ba;ba++)Ja=sa[ba],hb[Qa]=Ja.x,hb[Qa+1]=Ja.y,Qa+=2;0<Qa&&(m.bindBuffer(m.ARRAY_BUFFER,A.__webglUV2Buffer),m.bufferData(m.ARRAY_BUFFER,hb,C))}if(Hb){E=0;for(J=ea.length;E<J;E++)Mb[Ra]=Ba,Mb[Ra+1]=Ba+1,Mb[Ra+2]=Ba+2,Ra+=3,ub[Na]=Ba,ub[Na+1]=Ba+1,ub[Na+2]=Ba,ub[Na+3]=Ba+2,ub[Na+4]=Ba+1,ub[Na+5]=Ba+2,Na+=6,Ba+=3;m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,A.__webglFaceBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Mb,C);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,
|
|
|
+A.__webglLineBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,ub,C)}if(tb)for(ba=0,Ea=tb.length;ba<Ea;ba++)if(N=tb[ba],N.__original.needsUpdate){P=0;if(1===N.size)if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],N.array[P]=N.value[K.a],N.array[P+1]=N.value[K.b],N.array[P+2]=N.value[K.c],P+=3;else{if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],N.array[P]=Ya,N.array[P+1]=Ya,N.array[P+2]=Ya,P+=3}else if(2===N.size)if(void 0===N.boundTo||"vertices"===
|
|
|
+N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],Z=N.value[K.c],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=T.x,N.array[P+3]=T.y,N.array[P+4]=Z.x,N.array[P+5]=Z.y,P+=6;else{if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=T.x,N.array[P+3]=T.y,N.array[P+4]=Z.x,N.array[P+5]=Z.y,P+=6}else if(3===N.size){var ua;ua="c"===N.type?["r","g","b"]:["x","y","z"];if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=
|
|
|
+0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],Z=N.value[K.c],N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9;else if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=
|
|
|
+Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9;else if("faceVertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],S=Ya[0],T=Ya[1],Z=Ya[2],N.array[P]=S[ua[0]],N.array[P+1]=S[ua[1]],N.array[P+2]=S[ua[2]],N.array[P+3]=T[ua[0]],N.array[P+4]=T[ua[1]],N.array[P+5]=T[ua[2]],N.array[P+6]=Z[ua[0]],N.array[P+7]=Z[ua[1]],N.array[P+8]=Z[ua[2]],P+=9}else if(4===N.size)if(void 0===N.boundTo||"vertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)K=lb[ea[E]],S=N.value[K.a],T=N.value[K.b],Z=
|
|
|
+N.value[K.c],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=Z.w,P+=12;else if("faces"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Z=T=S=Ya=N.value[ea[E]],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=
|
|
|
+Z.w,P+=12;else if("faceVertices"===N.boundTo)for(E=0,J=ea.length;E<J;E++)Ya=N.value[ea[E]],S=Ya[0],T=Ya[1],Z=Ya[2],N.array[P]=S.x,N.array[P+1]=S.y,N.array[P+2]=S.z,N.array[P+3]=S.w,N.array[P+4]=T.x,N.array[P+5]=T.y,N.array[P+6]=T.z,N.array[P+7]=T.w,N.array[P+8]=Z.x,N.array[P+9]=Z.y,N.array[P+10]=Z.z,N.array[P+11]=Z.w,P+=12;m.bindBuffer(m.ARRAY_BUFFER,N.buffer);m.bufferData(m.ARRAY_BUFFER,N.array,C)}F&&(delete A.__inittedArrays,delete A.__colorArray,delete A.__normalArray,delete A.__tangentArray,delete A.__uvArray,
|
|
|
+delete A.__uv2Array,delete A.__faceArray,delete A.__vertexArray,delete A.__lineArray,delete A.__skinIndexArray,delete A.__skinWeightArray)}}l.verticesNeedUpdate=!1;l.morphTargetsNeedUpdate=!1;l.elementsNeedUpdate=!1;l.uvsNeedUpdate=!1;l.normalsNeedUpdate=!1;l.colorsNeedUpdate=!1;l.tangentsNeedUpdate=!1;l.buffersNeedUpdate=!1;r.attributes&&w(r)}else if(k instanceof THREE.Line){r=d(k,l);q=r.attributes&&v(r);if(l.verticesNeedUpdate||l.colorsNeedUpdate||l.lineDistancesNeedUpdate||q){var cb=l,Pb=m.DYNAMIC_DRAW,
|
|
|
+Db=void 0,Eb=void 0,Fb=void 0,Qb=void 0,ra=void 0,Rb=void 0,kc=cb.vertices,lc=cb.colors,mc=cb.lineDistances,Wb=kc.length,Xb=lc.length,Yb=mc.length,Sb=cb.__vertexArray,Tb=cb.__colorArray,nc=cb.__lineDistanceArray,Zb=cb.colorsNeedUpdate,$b=cb.lineDistancesNeedUpdate,ec=cb.__webglCustomAttributesList,Ub=void 0,oc=void 0,Ia=void 0,zb=void 0,Ta=void 0,qa=void 0;if(cb.verticesNeedUpdate){for(Db=0;Db<Wb;Db++)Qb=kc[Db],ra=3*Db,Sb[ra]=Qb.x,Sb[ra+1]=Qb.y,Sb[ra+2]=Qb.z;m.bindBuffer(m.ARRAY_BUFFER,cb.__webglVertexBuffer);
|
|
|
+m.bufferData(m.ARRAY_BUFFER,Sb,Pb)}if(Zb){for(Eb=0;Eb<Xb;Eb++)Rb=lc[Eb],ra=3*Eb,Tb[ra]=Rb.r,Tb[ra+1]=Rb.g,Tb[ra+2]=Rb.b;m.bindBuffer(m.ARRAY_BUFFER,cb.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,Tb,Pb)}if($b){for(Fb=0;Fb<Yb;Fb++)nc[Fb]=mc[Fb];m.bindBuffer(m.ARRAY_BUFFER,cb.__webglLineDistanceBuffer);m.bufferData(m.ARRAY_BUFFER,nc,Pb)}if(ec)for(Ub=0,oc=ec.length;Ub<oc;Ub++)if(qa=ec[Ub],qa.needsUpdate&&(void 0===qa.boundTo||"vertices"===qa.boundTo)){ra=0;zb=qa.value.length;if(1===qa.size)for(Ia=
|
|
|
+0;Ia<zb;Ia++)qa.array[Ia]=qa.value[Ia];else if(2===qa.size)for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,ra+=2;else if(3===qa.size)if("c"===qa.type)for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.r,qa.array[ra+1]=Ta.g,qa.array[ra+2]=Ta.b,ra+=3;else for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,qa.array[ra+2]=Ta.z,ra+=3;else if(4===qa.size)for(Ia=0;Ia<zb;Ia++)Ta=qa.value[Ia],qa.array[ra]=Ta.x,qa.array[ra+1]=Ta.y,qa.array[ra+2]=Ta.z,qa.array[ra+
|
|
|
+3]=Ta.w,ra+=4;m.bindBuffer(m.ARRAY_BUFFER,qa.buffer);m.bufferData(m.ARRAY_BUFFER,qa.array,Pb)}}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;l.lineDistancesNeedUpdate=!1;r.attributes&&w(r)}else if(k instanceof THREE.ParticleSystem){r=d(k,l);q=r.attributes&&v(r);if(l.verticesNeedUpdate||l.colorsNeedUpdate||k.sortParticles||q){var mb=l,fc=m.DYNAMIC_DRAW,Gb=k,Ua=void 0,nb=void 0,ob=void 0,X=void 0,pb=void 0,sb=void 0,Vb=mb.vertices,gc=Vb.length,hc=mb.colors,pc=hc.length,vb=mb.__vertexArray,wb=mb.__colorArray,
|
|
|
+qb=mb.__sortArray,qc=mb.verticesNeedUpdate,rc=mb.colorsNeedUpdate,rb=mb.__webglCustomAttributesList,fb=void 0,Ab=void 0,aa=void 0,gb=void 0,ja=void 0,U=void 0;if(Gb.sortParticles){ib.copy(Pa);ib.multiply(Gb.matrixWorld);for(Ua=0;Ua<gc;Ua++)ob=Vb[Ua],ya.copy(ob),ya.applyProjection(ib),qb[Ua]=[ya.z,Ua];qb.sort(n);for(Ua=0;Ua<gc;Ua++)ob=Vb[qb[Ua][1]],X=3*Ua,vb[X]=ob.x,vb[X+1]=ob.y,vb[X+2]=ob.z;for(nb=0;nb<pc;nb++)X=3*nb,sb=hc[qb[nb][1]],wb[X]=sb.r,wb[X+1]=sb.g,wb[X+2]=sb.b;if(rb)for(fb=0,Ab=rb.length;fb<
|
|
|
+Ab;fb++)if(U=rb[fb],void 0===U.boundTo||"vertices"===U.boundTo)if(X=0,gb=U.value.length,1===U.size)for(aa=0;aa<gb;aa++)pb=qb[aa][1],U.array[aa]=U.value[pb];else if(2===U.size)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=ja.y,X+=2;else if(3===U.size)if("c"===U.type)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.r,U.array[X+1]=ja.g,U.array[X+2]=ja.b,X+=3;else for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=
|
|
|
+ja.z,X+=3;else if(4===U.size)for(aa=0;aa<gb;aa++)pb=qb[aa][1],ja=U.value[pb],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,U.array[X+3]=ja.w,X+=4}else{if(qc)for(Ua=0;Ua<gc;Ua++)ob=Vb[Ua],X=3*Ua,vb[X]=ob.x,vb[X+1]=ob.y,vb[X+2]=ob.z;if(rc)for(nb=0;nb<pc;nb++)sb=hc[nb],X=3*nb,wb[X]=sb.r,wb[X+1]=sb.g,wb[X+2]=sb.b;if(rb)for(fb=0,Ab=rb.length;fb<Ab;fb++)if(U=rb[fb],U.needsUpdate&&(void 0===U.boundTo||"vertices"===U.boundTo))if(gb=U.value.length,X=0,1===U.size)for(aa=0;aa<gb;aa++)U.array[aa]=U.value[aa];
|
|
|
+else if(2===U.size)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,X+=2;else if(3===U.size)if("c"===U.type)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.r,U.array[X+1]=ja.g,U.array[X+2]=ja.b,X+=3;else for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,X+=3;else if(4===U.size)for(aa=0;aa<gb;aa++)ja=U.value[aa],U.array[X]=ja.x,U.array[X+1]=ja.y,U.array[X+2]=ja.z,U.array[X+3]=ja.w,X+=4}if(qc||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,mb.__webglVertexBuffer),
|
|
|
+m.bufferData(m.ARRAY_BUFFER,vb,fc);if(rc||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,mb.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,wb,fc);if(rb)for(fb=0,Ab=rb.length;fb<Ab;fb++)if(U=rb[fb],U.needsUpdate||Gb.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,U.buffer),m.bufferData(m.ARRAY_BUFFER,U.array,fc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;r.attributes&&w(r)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",Kb);var k,l,p,n,q;a instanceof THREE.MeshDepthMaterial?
|
|
|
+q="depth":a instanceof THREE.MeshNormalMaterial?q="normal":a instanceof THREE.MeshBasicMaterial?q="basic":a instanceof THREE.MeshLambertMaterial?q="lambert":a instanceof THREE.MeshPhongMaterial?q="phong":a instanceof THREE.LineBasicMaterial?q="basic":a instanceof THREE.LineDashedMaterial?q="dashed":a instanceof THREE.ParticleSystemMaterial&&(q="particle_basic");if(q){var r=THREE.ShaderLib[q];a.uniforms=THREE.UniformsUtils.clone(r.uniforms);a.vertexShader=r.vertexShader;a.fragmentShader=r.fragmentShader}var s=
|
|
|
+e=0,t=0,u=r=0;for(f=b.length;u<f;u++)g=b[u],g.onlyShadow||!1===g.visible||(g instanceof THREE.DirectionalLight&&e++,g instanceof THREE.PointLight&&s++,g instanceof THREE.SpotLight&&t++,g instanceof THREE.HemisphereLight&&r++);f=s;g=t;h=r;t=r=0;for(s=b.length;t<s;t++)u=b[t],u.castShadow&&(u instanceof THREE.SpotLight&&r++,u instanceof THREE.DirectionalLight&&!u.shadowCascade&&r++);n=r;yb&&d&&d.useVertexTexture?p=1024:(b=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&
|
|
|
+d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),p=b);a:{t=a.fragmentShader;s=a.vertexShader;r=a.uniforms;b=a.attributes;u=a.defines;c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,
|
|
|
+skinning:a.skinning,maxBones:p,useVertexTexture:yb&&d&&d.useVertexTexture,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<n,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,wrapAround:a.wrapAround,
|
|
|
+doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide};d=a.index0AttributeName;var v,w,x;e=[];q?e.push(q):(e.push(t),e.push(s));for(w in u)e.push(w),e.push(u[w]);for(v in c)e.push(v),e.push(c[v]);q=e.join();v=0;for(w=ca.length;v<w;v++)if(e=ca[v],e.code===q){e.usedTimes++;l=e.program;break a}v="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?v="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(v="SHADOWMAP_TYPE_PCF_SOFT");w=[];for(x in u)e=u[x],!1!==e&&(e=
|
|
|
+"#define "+x+" "+e,w.push(e));e=w.join("\n");x=m.createProgram();w=["precision "+Y+" float;","precision "+Y+" int;",e,xb?"#define VERTEX_TEXTURES":"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?
|
|
|
+"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",
|
|
|
+c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+v:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
v=["precision "+Y+" float;","precision "+Y+" int;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",e,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&
|
|
|
c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+v:
|
|
|
"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");w=K("vertex",w+s);v=K("fragment",v+t);m.attachShader(x,w);m.attachShader(x,v);void 0!==d&&m.bindAttribLocation(x,0,d);m.linkProgram(x);!1===m.getProgramParameter(x,m.LINK_STATUS)&&(console.error("Could not initialise shader"),console.error("gl.VALIDATE_STATUS",m.getProgramParameter(x,m.VALIDATE_STATUS)),console.error("gl.getError()",
|