|
@@ -195,8 +195,8 @@ Ia,La,Ba,n=0;for(O=ta.length;n<O;++n)for(Z=ta[n].start,ia=ta[n].count,va=ta[n].i
|
|
for(c=0;c<d;c++){for(var p=n=0;3>p;p++)s=a[3*c+p],-1==r[s]?(q[2*p]=s,q[2*p+1]=-1,n++):r[s]<k.index?(q[2*p]=s,q[2*p+1]=-1,l++):(q[2*p]=s,q[2*p+1]=r[s]);if(g+n>k.index+b)for(k={start:f,count:0,index:g},h.push(k),n=0;6>n;n+=2)p=q[n+1],-1<p&&p<k.index&&(q[n+1]=-1);for(n=0;6>n;n+=2)s=q[n],p=q[n+1],-1===p&&(p=g++),r[s]=p,t[p]=s,e[f++]=p-k.index,k.count++}this.reorderBuffers(e,t,g);return this.offsets=h},merge:function(){console.log("BufferGeometry.merge(): TODO")},normalizeNormals:function(){for(var a=
|
|
for(c=0;c<d;c++){for(var p=n=0;3>p;p++)s=a[3*c+p],-1==r[s]?(q[2*p]=s,q[2*p+1]=-1,n++):r[s]<k.index?(q[2*p]=s,q[2*p+1]=-1,l++):(q[2*p]=s,q[2*p+1]=r[s]);if(g+n>k.index+b)for(k={start:f,count:0,index:g},h.push(k),n=0;6>n;n+=2)p=q[n+1],-1<p&&p<k.index&&(q[n+1]=-1);for(n=0;6>n;n+=2)s=q[n],p=q[n+1],-1===p&&(p=g++),r[s]=p,t[p]=s,e[f++]=p-k.index,k.count++}this.reorderBuffers(e,t,g);return this.offsets=h},merge:function(){console.log("BufferGeometry.merge(): TODO")},normalizeNormals:function(){for(var a=
|
|
this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],f;for(f in this.attributes)if("index"!=f)for(var g=this.attributes[f].array,h=0,k=e.length;h<k;h++){var l=e[h];if(g instanceof l){d[f]=new l(this.attributes[f].itemSize*c);break}}for(e=0;e<c;e++)for(f in g=
|
|
this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],f;for(f in this.attributes)if("index"!=f)for(var g=this.attributes[f].array,h=0,k=e.length;h<k;h++){var l=e[h];if(g instanceof l){d[f]=new l(this.attributes[f].itemSize*c);break}}for(e=0;e<c;e++)for(f in g=
|
|
b[e],this.attributes)if("index"!=f)for(var h=this.attributes[f].array,k=this.attributes[f].itemSize,l=d[f],n=0;n<k;n++)l[e*k+n]=h[g*k+n];this.attributes.index.array=a;for(f in this.attributes)"index"!=f&&(this.attributes[f].array=d[f],this.attributes[f].numItems=this.attributes[f].itemSize*c)},clone:function(){var a=new THREE.BufferGeometry,b=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],c;for(c in this.attributes){for(var d=this.attributes[c],
|
|
b[e],this.attributes)if("index"!=f)for(var h=this.attributes[f].array,k=this.attributes[f].itemSize,l=d[f],n=0;n<k;n++)l[e*k+n]=h[g*k+n];this.attributes.index.array=a;for(f in this.attributes)"index"!=f&&(this.attributes[f].array=d[f],this.attributes[f].numItems=this.attributes[f].itemSize*c)},clone:function(){var a=new THREE.BufferGeometry,b=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],c;for(c in this.attributes){for(var d=this.attributes[c],
|
|
-e=d.array,f={itemSize:d.itemSize,array:null},d=0,g=b.length;d<g;d++){var h=b[d];if(e instanceof h){f.array=new h(e);break}}a.attributes[c]=f}d=0;for(g=this.offsets.length;d<g;d++)b=this.offsets[d],a.offsets.push({start:b.start,index:b.index,count:b.count});return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.BufferGeometry.prototype);THREE.Geometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.buffersNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=
|
|
|
|
-this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
|
|
|
|
|
|
+e=d.array,f={itemSize:d.itemSize,array:null},d=0,g=b.length;d<g;d++){var h=b[d];if(e instanceof h){f.array=new h(e);break}}a.attributes[c]=f}d=0;for(g=this.offsets.length;d<g;d++)b=this.offsets[d],a.offsets.push({start:b.start,index:b.index,count:b.count});return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.BufferGeometry.prototype);THREE.Geometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.groupsNeedUpdate=this.buffersNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=
|
|
|
|
+this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
|
|
THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}this.boundingBox instanceof THREE.Box3&&this.computeBoundingBox();this.boundingSphere instanceof THREE.Sphere&&this.computeBoundingSphere()},
|
|
THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}this.boundingBox instanceof THREE.Box3&&this.computeBoundingBox();this.boundingSphere instanceof THREE.Sphere&&this.computeBoundingSphere()},
|
|
center:function(){this.computeBoundingBox();var a=new THREE.Vector3;a.addVectors(this.boundingBox.min,this.boundingBox.max);a.multiplyScalar(-0.5);this.applyMatrix((new THREE.Matrix4).makeTranslation(a.x,a.y,a.z));this.computeBoundingBox();return a},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THREE.Vector3,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();
|
|
center:function(){this.computeBoundingBox();var a=new THREE.Vector3;a.addVectors(this.boundingBox.min,this.boundingBox.max);a.multiplyScalar(-0.5);this.applyMatrix((new THREE.Matrix4).makeTranslation(a.x,a.y,a.z));this.computeBoundingBox();return a},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THREE.Vector3,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();
|
|
e.normal.copy(a)}},computeVertexNormals:function(a){var b,c,d;d=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)d[b]=new THREE.Vector3;if(a){var e,f,g,h=new THREE.Vector3,k=new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a=0,b=this.faces.length;a<
|
|
e.normal.copy(a)}},computeVertexNormals:function(a){var b,c,d;d=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)d[b]=new THREE.Vector3;if(a){var e,f,g,h=new THREE.Vector3,k=new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a=0,b=this.faces.length;a<
|
|
@@ -391,125 +391,126 @@ function c(a,b){var c=b.geometry,g=a.faces3,h=3*g.length,k=1*g.length,l=3*g.leng
|
|
!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){for(var b in a.attributes){var c="index"===b?
|
|
!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){for(var b in a.attributes){var c="index"===b?
|
|
m.ELEMENT_ARRAY_BUFFER:m.ARRAY_BUFFER,d=a.attributes[b];d.buffer=m.createBuffer();m.bindBuffer(c,d.buffer);m.bufferData(c,d.array,m.STATIC_DRAW)}}function h(a,b,c,d){for(var e in b){var f=b[e],g=c[e];if(0<=f)if(g){var h=g.itemSize;m.bindBuffer(m.ARRAY_BUFFER,g.buffer);l(f);m.vertexAttribPointer(f,h,m.FLOAT,!1,0,d*h*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]))}n()}
|
|
m.ELEMENT_ARRAY_BUFFER:m.ARRAY_BUFFER,d=a.attributes[b];d.buffer=m.createBuffer();m.bindBuffer(c,d.buffer);m.bufferData(c,d.array,m.STATIC_DRAW)}}function h(a,b,c,d){for(var e in b){var f=b[e],g=c[e];if(0<=f)if(g){var h=g.itemSize;m.bindBuffer(m.ARRAY_BUFFER,g.buffer);l(f);m.vertexAttribPointer(f,h,m.FLOAT,!1,0,d*h*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]))}n()}
|
|
function k(){for(var a=0,b=vb.length;a<b;a++)vb[a]=0}function l(a){vb[a]=1;0===bb[a]&&(m.enableVertexAttribArray(a),bb[a]=1)}function n(){for(var a=0,b=bb.length;a<b;a++)bb[a]!==vb[a]&&(m.disableVertexAttribArray(a),bb[a]=0)}function q(a,b){return a.z!==b.z?b.z-a.z:a.id-b.id}function r(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function t(a,b){return b[0]-a[0]}function s(a,b,h){if(!1!==b.visible){var k=a.__webglObjects[b.id];if(k&&(!1===b.frustumCulled||!0===gc.intersectsObject(b))){var l=b.geometry,
|
|
function k(){for(var a=0,b=vb.length;a<b;a++)vb[a]=0}function l(a){vb[a]=1;0===bb[a]&&(m.enableVertexAttribArray(a),bb[a]=1)}function n(){for(var a=0,b=bb.length;a<b;a++)bb[a]!==vb[a]&&(m.disableVertexAttribArray(a),bb[a]=0)}function q(a,b){return a.z!==b.z?b.z-a.z:a.id-b.id}function r(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function t(a,b){return b[0]-a[0]}function s(a,b,h){if(!1!==b.visible){var k=a.__webglObjects[b.id];if(k&&(!1===b.frustumCulled||!0===gc.intersectsObject(b))){var l=b.geometry,
|
|
-n,r,p;if(l instanceof THREE.BufferGeometry){var q=m.DYNAMIC_DRAW,u=l.attributes,v,A;for(v in u)A=u[v],A.needsUpdate&&("index"===v?(m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,A.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,A.array,q)):(m.bindBuffer(m.ARRAY_BUFFER,A.buffer),m.bufferData(m.ARRAY_BUFFER,A.array,q)),A.needsUpdate=!1)}else if(b instanceof THREE.Mesh){l.buffersNeedUpdate&&(l instanceof THREE.BufferGeometry?g(l):b instanceof THREE.Mesh&&w(a,b,l));for(var z=0,B=l.geometryGroupsList.length;z<B;z++)if(n=
|
|
|
|
-l.geometryGroupsList[z],p=d(b,n),l.buffersNeedUpdate&&c(n,b),r=p.attributes&&D(p),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||l.normalsNeedUpdate||l.colorsNeedUpdate||l.tangentsNeedUpdate||r){var y=n,F=b,C=m.DYNAMIC_DRAW,G=!l.dynamic,J=p;if(y.__inittedArrays){var K=e(J),P=J.vertexColors?J.vertexColors:!1,M=f(J),Q=K===THREE.SmoothShading,E=void 0,H=void 0,O=void 0,L=void 0,ta=void 0,X=void 0,R=void 0,W=void 0,Y=void 0,Z=void 0,Ba=void 0,$=void 0,ba=void 0,
|
|
|
|
-ca=void 0,U=void 0,Ia=void 0,da=void 0,fa=void 0,ga=void 0,ja=void 0,Aa=void 0,La=void 0,ha=void 0,ia=void 0,qa=void 0,ma=void 0,oa=void 0,ra=void 0,Ga=void 0,S=void 0,Ja=void 0,Fa=void 0,Ha=void 0,Ka=void 0,na=void 0,Na=void 0,wa=void 0,Ca=void 0,Ma=void 0,Ta=void 0,cb=0,db=0,Xa=0,ab=0,bb=0,eb=0,Sa=0,sb=0,Ya=0,ua=0,Da=0,N=0,Ra=void 0,fb=y.__vertexArray,nb=y.__uvArray,ob=y.__uv2Array,wb=y.__normalArray,Ua=y.__tangentArray,gb=y.__colorArray,Va=y.__skinIndexArray,Wa=y.__skinWeightArray,ub=y.__morphTargetsArrays,
|
|
|
|
-vb=y.__morphNormalsArrays,rb=y.__webglCustomAttributesList,I=void 0,Tb=y.__faceArray,xb=y.__lineArray,Oa=F.geometry,Ib=Oa.elementsNeedUpdate,Db=Oa.uvsNeedUpdate,Lb=Oa.normalsNeedUpdate,Pb=Oa.tangentsNeedUpdate,Qb=Oa.colorsNeedUpdate,Sb=Oa.morphTargetsNeedUpdate,ic=Oa.vertices,ea=y.faces3,hb=Oa.faces,Hb=Oa.faceVertexUvs[0],Jb=Oa.faceVertexUvs[1],jc=Oa.skinIndices,Ub=Oa.skinWeights,Vb=Oa.morphTargets,Kb=Oa.morphNormals;if(Oa.verticesNeedUpdate){E=0;for(H=ea.length;E<H;E++)L=hb[ea[E]],$=ic[L.a],ba=ic[L.b],
|
|
|
|
-ca=ic[L.c],fb[db]=$.x,fb[db+1]=$.y,fb[db+2]=$.z,fb[db+3]=ba.x,fb[db+4]=ba.y,fb[db+5]=ba.z,fb[db+6]=ca.x,fb[db+7]=ca.y,fb[db+8]=ca.z,db+=9;m.bindBuffer(m.ARRAY_BUFFER,y.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,fb,C)}if(Sb)for(na=0,Na=Vb.length;na<Na;na++){E=Da=0;for(H=ea.length;E<H;E++)Ma=ea[E],L=hb[Ma],$=Vb[na].vertices[L.a],ba=Vb[na].vertices[L.b],ca=Vb[na].vertices[L.c],wa=ub[na],wa[Da]=$.x,wa[Da+1]=$.y,wa[Da+2]=$.z,wa[Da+3]=ba.x,wa[Da+4]=ba.y,wa[Da+5]=ba.z,wa[Da+6]=ca.x,wa[Da+7]=ca.y,wa[Da+
|
|
|
|
-8]=ca.z,J.morphNormals&&(Q?(Ta=Kb[na].vertexNormals[Ma],fa=Ta.a,ga=Ta.b,ja=Ta.c):ja=ga=fa=Kb[na].faceNormals[Ma],Ca=vb[na],Ca[Da]=fa.x,Ca[Da+1]=fa.y,Ca[Da+2]=fa.z,Ca[Da+3]=ga.x,Ca[Da+4]=ga.y,Ca[Da+5]=ga.z,Ca[Da+6]=ja.x,Ca[Da+7]=ja.y,Ca[Da+8]=ja.z),Da+=9;m.bindBuffer(m.ARRAY_BUFFER,y.__webglMorphTargetsBuffers[na]);m.bufferData(m.ARRAY_BUFFER,ub[na],C);J.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglMorphNormalsBuffers[na]),m.bufferData(m.ARRAY_BUFFER,vb[na],C))}if(Ub.length){E=0;for(H=ea.length;E<
|
|
|
|
-H;E++)L=hb[ea[E]],ia=Ub[L.a],qa=Ub[L.b],ma=Ub[L.c],Wa[ua]=ia.x,Wa[ua+1]=ia.y,Wa[ua+2]=ia.z,Wa[ua+3]=ia.w,Wa[ua+4]=qa.x,Wa[ua+5]=qa.y,Wa[ua+6]=qa.z,Wa[ua+7]=qa.w,Wa[ua+8]=ma.x,Wa[ua+9]=ma.y,Wa[ua+10]=ma.z,Wa[ua+11]=ma.w,oa=jc[L.a],ra=jc[L.b],Ga=jc[L.c],Va[ua]=oa.x,Va[ua+1]=oa.y,Va[ua+2]=oa.z,Va[ua+3]=oa.w,Va[ua+4]=ra.x,Va[ua+5]=ra.y,Va[ua+6]=ra.z,Va[ua+7]=ra.w,Va[ua+8]=Ga.x,Va[ua+9]=Ga.y,Va[ua+10]=Ga.z,Va[ua+11]=Ga.w,ua+=12;0<ua&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglSkinIndicesBuffer),m.bufferData(m.ARRAY_BUFFER,
|
|
|
|
-Va,C),m.bindBuffer(m.ARRAY_BUFFER,y.__webglSkinWeightsBuffer),m.bufferData(m.ARRAY_BUFFER,Wa,C))}if(Qb&&P){E=0;for(H=ea.length;E<H;E++)L=hb[ea[E]],R=L.vertexColors,W=L.color,3===R.length&&P===THREE.VertexColors?(Aa=R[0],La=R[1],ha=R[2]):ha=La=Aa=W,gb[Ya]=Aa.r,gb[Ya+1]=Aa.g,gb[Ya+2]=Aa.b,gb[Ya+3]=La.r,gb[Ya+4]=La.g,gb[Ya+5]=La.b,gb[Ya+6]=ha.r,gb[Ya+7]=ha.g,gb[Ya+8]=ha.b,Ya+=9;0<Ya&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,gb,C))}if(Pb&&Oa.hasTangents){E=0;for(H=
|
|
|
|
-ea.length;E<H;E++)L=hb[ea[E]],Y=L.vertexTangents,U=Y[0],Ia=Y[1],da=Y[2],Ua[Sa]=U.x,Ua[Sa+1]=U.y,Ua[Sa+2]=U.z,Ua[Sa+3]=U.w,Ua[Sa+4]=Ia.x,Ua[Sa+5]=Ia.y,Ua[Sa+6]=Ia.z,Ua[Sa+7]=Ia.w,Ua[Sa+8]=da.x,Ua[Sa+9]=da.y,Ua[Sa+10]=da.z,Ua[Sa+11]=da.w,Sa+=12;m.bindBuffer(m.ARRAY_BUFFER,y.__webglTangentBuffer);m.bufferData(m.ARRAY_BUFFER,Ua,C)}if(Lb&&K){E=0;for(H=ea.length;E<H;E++)if(L=hb[ea[E]],ta=L.vertexNormals,X=L.normal,3===ta.length&&Q)for(S=0;3>S;S++)Fa=ta[S],wb[eb]=Fa.x,wb[eb+1]=Fa.y,wb[eb+2]=Fa.z,eb+=3;else for(S=
|
|
|
|
-0;3>S;S++)wb[eb]=X.x,wb[eb+1]=X.y,wb[eb+2]=X.z,eb+=3;m.bindBuffer(m.ARRAY_BUFFER,y.__webglNormalBuffer);m.bufferData(m.ARRAY_BUFFER,wb,C)}if(Db&&Hb&&M){E=0;for(H=ea.length;E<H;E++)if(O=ea[E],Z=Hb[O],void 0!==Z)for(S=0;3>S;S++)Ha=Z[S],nb[Xa]=Ha.x,nb[Xa+1]=Ha.y,Xa+=2;0<Xa&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglUVBuffer),m.bufferData(m.ARRAY_BUFFER,nb,C))}if(Db&&Jb&&M){E=0;for(H=ea.length;E<H;E++)if(O=ea[E],Ba=Jb[O],void 0!==Ba)for(S=0;3>S;S++)Ka=Ba[S],ob[ab]=Ka.x,ob[ab+1]=Ka.y,ab+=2;0<ab&&(m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
|
-y.__webglUV2Buffer),m.bufferData(m.ARRAY_BUFFER,ob,C))}if(Ib){E=0;for(H=ea.length;E<H;E++)Tb[bb]=cb,Tb[bb+1]=cb+1,Tb[bb+2]=cb+2,bb+=3,xb[sb]=cb,xb[sb+1]=cb+1,xb[sb+2]=cb,xb[sb+3]=cb+2,xb[sb+4]=cb+1,xb[sb+5]=cb+2,sb+=6,cb+=3;m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.__webglFaceBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Tb,C);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.__webglLineBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,xb,C)}if(rb)for(S=0,Ja=rb.length;S<Ja;S++)if(I=rb[S],I.__original.needsUpdate){N=0;if(1===
|
|
|
|
-I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],I.array[N]=I.value[L.a],I.array[N+1]=I.value[L.b],I.array[N+2]=I.value[L.c],N+=3;else{if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)Ra=I.value[ea[E]],I.array[N]=Ra,I.array[N+1]=Ra,I.array[N+2]=Ra,N+=3}else if(2===I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],ca=I.value[L.c],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=ba.x,
|
|
|
|
-I.array[N+3]=ba.y,I.array[N+4]=ca.x,I.array[N+5]=ca.y,N+=6;else{if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=ba.x,I.array[N+3]=ba.y,I.array[N+4]=ca.x,I.array[N+5]=ca.y,N+=6}else if(3===I.size){var sa;sa="c"===I.type?["r","g","b"]:["x","y","z"];if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],ca=I.value[L.c],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+
|
|
|
|
-2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],N+=9;else if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],N+=9;else if("faceVertices"===I.boundTo)for(E=0,H=ea.length;E<
|
|
|
|
-H;E++)Ra=I.value[ea[E]],$=Ra[0],ba=Ra[1],ca=Ra[2],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],N+=9}else if(4===I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],ca=I.value[L.c],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+
|
|
|
|
-5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;else if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;else if("faceVertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)Ra=I.value[ea[E]],
|
|
|
|
-$=Ra[0],ba=Ra[1],ca=Ra[2],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;m.bindBuffer(m.ARRAY_BUFFER,I.buffer);m.bufferData(m.ARRAY_BUFFER,I.array,C)}G&&(delete y.__inittedArrays,delete y.__colorArray,delete y.__normalArray,delete y.__tangentArray,delete y.__uvArray,delete y.__uv2Array,delete y.__faceArray,delete y.__vertexArray,
|
|
|
|
-delete y.__lineArray,delete y.__skinIndexArray,delete y.__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;p.attributes&&x(p)}else if(b instanceof THREE.Line){p=d(b,l);r=p.attributes&&D(p);if(l.verticesNeedUpdate||l.colorsNeedUpdate||l.lineDistancesNeedUpdate||r){var Wb=m.DYNAMIC_DRAW,Eb,Fb,Gb,Xb,pa,Yb,Mb=l.vertices,Nb=l.colors,Ob=l.lineDistances,
|
|
|
|
-dc=Mb.length,ec=Nb.length,fc=Ob.length,Zb=l.__vertexArray,$b=l.__colorArray,tc=l.__lineDistanceArray,pc=l.colorsNeedUpdate,qc=l.lineDistancesNeedUpdate,kc=l.__webglCustomAttributesList,ac,uc,Ea,Bb,Pa,la;if(l.verticesNeedUpdate){for(Eb=0;Eb<dc;Eb++)Xb=Mb[Eb],pa=3*Eb,Zb[pa]=Xb.x,Zb[pa+1]=Xb.y,Zb[pa+2]=Xb.z;m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,Zb,Wb)}if(pc){for(Fb=0;Fb<ec;Fb++)Yb=Nb[Fb],pa=3*Fb,$b[pa]=Yb.r,$b[pa+1]=Yb.g,$b[pa+2]=Yb.b;m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
|
-l.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,$b,Wb)}if(qc){for(Gb=0;Gb<fc;Gb++)tc[Gb]=Ob[Gb];m.bindBuffer(m.ARRAY_BUFFER,l.__webglLineDistanceBuffer);m.bufferData(m.ARRAY_BUFFER,tc,Wb)}if(kc)for(ac=0,uc=kc.length;ac<uc;ac++)if(la=kc[ac],la.needsUpdate&&(void 0===la.boundTo||"vertices"===la.boundTo)){pa=0;Bb=la.value.length;if(1===la.size)for(Ea=0;Ea<Bb;Ea++)la.array[Ea]=la.value[Ea];else if(2===la.size)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.x,la.array[pa+1]=Pa.y,pa+=2;else if(3===
|
|
|
|
-la.size)if("c"===la.type)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.r,la.array[pa+1]=Pa.g,la.array[pa+2]=Pa.b,pa+=3;else for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.x,la.array[pa+1]=Pa.y,la.array[pa+2]=Pa.z,pa+=3;else if(4===la.size)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.x,la.array[pa+1]=Pa.y,la.array[pa+2]=Pa.z,la.array[pa+3]=Pa.w,pa+=4;m.bindBuffer(m.ARRAY_BUFFER,la.buffer);m.bufferData(m.ARRAY_BUFFER,la.array,Wb)}}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;l.lineDistancesNeedUpdate=
|
|
|
|
-!1;p.attributes&&x(p)}else if(b instanceof THREE.PointCloud){p=d(b,l);r=p.attributes&&D(p);if(l.verticesNeedUpdate||l.colorsNeedUpdate||b.sortParticles||r){var lc=m.DYNAMIC_DRAW,Qa,ib,jb,V,kb,tb,bc=l.vertices,mc=bc.length,nc=l.colors,vc=nc.length,yb=l.__vertexArray,zb=l.__colorArray,pb=l.__sortArray,wc=l.verticesNeedUpdate,xc=l.colorsNeedUpdate,qb=l.__webglCustomAttributesList,Za,Cb,aa,$a,ka,T;if(b.sortParticles){hc.copy(Rb);hc.multiply(b.matrixWorld);for(Qa=0;Qa<mc;Qa++)jb=bc[Qa],xa.copy(jb),xa.applyProjection(hc),
|
|
|
|
-pb[Qa]=[xa.z,Qa];pb.sort(t);for(Qa=0;Qa<mc;Qa++)jb=bc[pb[Qa][1]],V=3*Qa,yb[V]=jb.x,yb[V+1]=jb.y,yb[V+2]=jb.z;for(ib=0;ib<vc;ib++)V=3*ib,tb=nc[pb[ib][1]],zb[V]=tb.r,zb[V+1]=tb.g,zb[V+2]=tb.b;if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],void 0===T.boundTo||"vertices"===T.boundTo)if(V=0,$a=T.value.length,1===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],T.array[aa]=T.value[kb];else if(2===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.x,T.array[V+1]=ka.y,V+=2;else if(3===T.size)if("c"===
|
|
|
|
-T.type)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.r,T.array[V+1]=ka.g,T.array[V+2]=ka.b,V+=3;else for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,V+=3;else if(4===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,T.array[V+3]=ka.w,V+=4}else{if(wc)for(Qa=0;Qa<mc;Qa++)jb=bc[Qa],V=3*Qa,yb[V]=jb.x,yb[V+1]=jb.y,yb[V+2]=jb.z;if(xc)for(ib=0;ib<vc;ib++)tb=nc[ib],V=3*ib,zb[V]=tb.r,
|
|
|
|
-zb[V+1]=tb.g,zb[V+2]=tb.b;if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],T.needsUpdate&&(void 0===T.boundTo||"vertices"===T.boundTo))if($a=T.value.length,V=0,1===T.size)for(aa=0;aa<$a;aa++)T.array[aa]=T.value[aa];else if(2===T.size)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+1]=ka.y,V+=2;else if(3===T.size)if("c"===T.type)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.r,T.array[V+1]=ka.g,T.array[V+2]=ka.b,V+=3;else for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+
|
|
|
|
-1]=ka.y,T.array[V+2]=ka.z,V+=3;else if(4===T.size)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,T.array[V+3]=ka.w,V+=4}if(wc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,yb,lc);if(xc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,zb,lc);if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],T.needsUpdate||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,T.buffer),m.bufferData(m.ARRAY_BUFFER,
|
|
|
|
-T.array,lc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;p.attributes&&x(p)}for(var Ab=0,oc=k.length;Ab<oc;Ab++){var cc=k[Ab],lb=cc,yc=lb.object,rc=lb.buffer,sc=yc.geometry,mb=yc.material;mb instanceof THREE.MeshFaceMaterial?(mb=mb.materials[sc instanceof THREE.BufferGeometry?0:rc.materialIndex],mb.transparent?(lb.material=mb,ya.push(lb)):(lb.material=mb,va.push(lb))):mb&&(mb.transparent?(lb.material=mb,ya.push(lb)):(lb.material=mb,va.push(lb)));cc.render=!0;!0===za&&(null!==b.renderDepth?cc.z=b.renderDepth:
|
|
|
|
-(xa.setFromMatrixPosition(b.matrixWorld),xa.applyProjection(Rb),cc.z=xa.z))}}Ab=0;for(oc=b.children.length;Ab<oc;Ab++)s(a,b.children[Ab],h)}}function p(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)Ca=Ia=null,Ba=Ga=ja=da=Ka=ra=Ja=-1,Xa=!0,a[d].render(b,c,Pb,Qb),Ca=Ia=null,Ba=Ga=ja=da=Ka=ra=Ja=-1,Xa=!0}function v(a,b,c,d,e,f){for(var g,h,k,m=a.length-1;-1!==m;m--){g=a[m];h=g.object;k=g.buffer;var l=h;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);
|
|
|
|
-if(f)g=f;else{g=g.material;if(!g)continue;e&&P.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);P.setDepthTest(g.depthTest);P.setDepthWrite(g.depthWrite);E(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}P.setMaterialFaces(g);k instanceof THREE.BufferGeometry?P.renderBufferDirect(b,c,d,g,k,h):P.renderBuffer(b,c,d,g,k,h)}}function u(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&&P.setBlending(h.blending,
|
|
|
|
-h.blendEquation,h.blendSrc,h.blendDst);P.setDepthTest(h.depthTest);P.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}P.renderImmediateObject(c,d,e,h,k)}}function w(a,b,d){var e,f=!1;e=b.material;void 0===d.geometryGroups&&(delete a.__webglObjects[b.id],d.makeGroups(e instanceof THREE.MeshFaceMaterial,rb?4294967296:65535));for(var g=0,h=d.geometryGroupsList.length;g<h;g++){e=d.geometryGroupsList[g];if(e.__webglVertexBuffer)f=!1;else{f=e;f.__webglVertexBuffer=
|
|
|
|
-m.createBuffer();f.__webglNormalBuffer=m.createBuffer();f.__webglTangentBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglUVBuffer=m.createBuffer();f.__webglUV2Buffer=m.createBuffer();f.__webglSkinIndicesBuffer=m.createBuffer();f.__webglSkinWeightsBuffer=m.createBuffer();f.__webglFaceBuffer=m.createBuffer();f.__webglLineBuffer=m.createBuffer();var k=void 0,l=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],k=0,l=f.numMorphTargets;k<l;k++)f.__webglMorphTargetsBuffers.push(m.createBuffer());
|
|
|
|
-if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],k=0,l=f.numMorphNormals;k<l;k++)f.__webglMorphNormalsBuffers.push(m.createBuffer());P.info.memory.geometries++;c(e,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=!0}(f||void 0===b.__webglActive)&&A(a.__webglObjects,e,b)}b.__webglActive=!0}function A(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:null,buffer:b,object:c,material:null,
|
|
|
|
-z:0})}function D(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function F(a,b){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete b.__webglObjects[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate,d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function B(a,b,c,d,
|
|
|
|
-e){qa=0;d.needsUpdate&&(d.program&&Hb(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,k=d.uniforms;g.id!==Ia&&(m.useProgram(g.program),Ia=g.id,f=!0);d.id!==Ba&&(Ba=d.id,f=!0);if(f||a!==Ca)m.uniformMatrix4fv(h.projectionMatrix,!1,a.projectionMatrix.elements),fa&&m.uniform1f(h.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Ca&&(Ca=a);if(d.skinning)if(Ib&&
|
|
|
|
-e.skeleton.useVertexTexture){if(null!==h.boneTexture){var l=z();m.uniform1i(h.boneTexture,l);P.setTexture(e.skeleton.boneTexture,l)}null!==h.boneTextureWidth&&m.uniform1i(h.boneTextureWidth,e.skeleton.boneTextureWidth);null!==h.boneTextureHeight&&m.uniform1i(h.boneTextureHeight,e.skeleton.boneTextureHeight)}else null!==h.boneGlobalMatrices&&m.uniformMatrix4fv(h.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(f){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=
|
|
|
|
-c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Xa){var n,p=l=0,r=0,q,s,t,u=Sb,w=u.directional.colors,v=u.directional.positions,x=u.point.colors,A=u.point.positions,D=u.point.distances,B=u.spot.colors,E=u.spot.positions,F=u.spot.distances,H=u.spot.directions,K=u.spot.anglesCos,L=u.spot.exponents,Q=u.hemi.skyColors,O=u.hemi.groundColors,ta=u.hemi.positions,X=0,R=0,W=0,$=0,Y=0,ya=0,va=0,
|
|
|
|
-Z=0,U=n=0;c=t=U=0;for(f=b.length;c<f;c++)if(n=b[c],!n.onlyShadow)if(q=n.color,s=n.intensity,t=n.distance,n instanceof THREE.AmbientLight)n.visible&&(P.gammaInput?(l+=q.r*q.r,p+=q.g*q.g,r+=q.b*q.b):(l+=q.r,p+=q.g,r+=q.b));else if(n instanceof THREE.DirectionalLight){if(Y+=1,n.visible&&(oa.setFromMatrixPosition(n.matrixWorld),xa.setFromMatrixPosition(n.target.matrixWorld),oa.sub(xa),oa.normalize(),0!==oa.x||0!==oa.y||0!==oa.z))n=3*X,v[n]=oa.x,v[n+1]=oa.y,v[n+2]=oa.z,P.gammaInput?C(w,n,q,s*s):y(w,n,
|
|
|
|
-q,s),X+=1}else n instanceof THREE.PointLight?(ya+=1,n.visible&&(U=3*R,P.gammaInput?C(x,U,q,s*s):y(x,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),A[U]=xa.x,A[U+1]=xa.y,A[U+2]=xa.z,D[R]=t,R+=1)):n instanceof THREE.SpotLight?(va+=1,n.visible&&(U=3*W,P.gammaInput?C(B,U,q,s*s):y(B,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),E[U]=xa.x,E[U+1]=xa.y,E[U+2]=xa.z,F[W]=t,oa.copy(xa),xa.setFromMatrixPosition(n.target.matrixWorld),oa.sub(xa),oa.normalize(),H[U]=oa.x,H[U+1]=oa.y,H[U+2]=oa.z,K[W]=Math.cos(n.angle),
|
|
|
|
-L[W]=n.exponent,W+=1)):n instanceof THREE.HemisphereLight&&(Z+=1,n.visible&&(oa.setFromMatrixPosition(n.matrixWorld),oa.normalize(),0!==oa.x||0!==oa.y||0!==oa.z))&&(t=3*$,ta[t]=oa.x,ta[t+1]=oa.y,ta[t+2]=oa.z,q=n.color,n=n.groundColor,P.gammaInput?(s*=s,C(Q,t,q,s),C(O,t,n,s)):(y(Q,t,q,s),y(O,t,n,s)),$+=1);c=3*X;for(f=Math.max(w.length,3*Y);c<f;c++)w[c]=0;c=3*R;for(f=Math.max(x.length,3*ya);c<f;c++)x[c]=0;c=3*W;for(f=Math.max(B.length,3*va);c<f;c++)B[c]=0;c=3*$;for(f=Math.max(Q.length,3*Z);c<f;c++)Q[c]=
|
|
|
|
-0;c=3*$;for(f=Math.max(O.length,3*Z);c<f;c++)O[c]=0;u.directional.length=X;u.point.length=R;u.spot.length=W;u.hemi.length=$;u.ambient[0]=l;u.ambient[1]=p;u.ambient[2]=r;Xa=!1}c=Sb;k.ambientLightColor.value=c.ambient;k.directionalLightColor.value=c.directional.colors;k.directionalLightDirection.value=c.directional.positions;k.pointLightColor.value=c.point.colors;k.pointLightPosition.value=c.point.positions;k.pointLightDistance.value=c.point.distances;k.spotLightColor.value=c.spot.colors;k.spotLightPosition.value=
|
|
|
|
-c.spot.positions;k.spotLightDistance.value=c.spot.distances;k.spotLightDirection.value=c.spot.directions;k.spotLightAngleCos.value=c.spot.anglesCos;k.spotLightExponent.value=c.spot.exponents;k.hemisphereLightSkyColor.value=c.hemi.skyColors;k.hemisphereLightGroundColor.value=c.hemi.groundColors;k.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){k.opacity.value=d.opacity;P.gammaInput?
|
|
|
|
-k.diffuse.value.copyGammaToLinear(d.color):k.diffuse.value=d.color;k.map.value=d.map;k.lightMap.value=d.lightMap;k.specularMap.value=d.specularMap;d.bumpMap&&(k.bumpMap.value=d.bumpMap,k.bumpScale.value=d.bumpScale);d.normalMap&&(k.normalMap.value=d.normalMap,k.normalScale.value.copy(d.normalScale));var S;d.map?S=d.map:d.specularMap?S=d.specularMap:d.normalMap?S=d.normalMap:d.bumpMap&&(S=d.bumpMap);void 0!==S&&(c=S.offset,S=S.repeat,k.offsetRepeat.value.set(c.x,c.y,S.x,S.y));k.envMap.value=d.envMap;
|
|
|
|
-k.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;k.reflectivity.value=d.reflectivity;k.refractionRatio.value=d.refractionRatio;k.combine.value=d.combine;k.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity,k.dashSize.value=d.dashSize,k.totalSize.value=d.dashSize+d.gapSize,
|
|
|
|
-k.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(k.psColor.value=d.color,k.opacity.value=d.opacity,k.size.value=d.size,k.scale.value=J.height/2,k.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(k.shininess.value=d.shininess,P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive),k.specular.value.copyGammaToLinear(d.specular)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive,k.specular.value=d.specular),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):
|
|
|
|
-d instanceof THREE.MeshLambertMaterial?(P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(k.mNear.value=a.near,k.mFar.value=a.far,k.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(k.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&k.shadowMatrix)for(c=S=0,f=b.length;c<f;c++)l=
|
|
|
|
-b[c],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight&&!l.shadowCascade)&&(k.shadowMap.value[S]=l.shadowMap,k.shadowMapSize.value[S]=l.shadowMapSize,k.shadowMatrix.value[S]=l.shadowMatrix,k.shadowDarkness.value[S]=l.shadowDarkness,k.shadowBias.value[S]=l.shadowBias,S++);b=d.uniformsList;k=0;for(S=b.length;k<S;k++)if(f=g.uniforms[b[k][1]])if(c=b[k][0],p=c.type,l=c.value,"i"===p)m.uniform1i(f,l);else if("f"===p)m.uniform1f(f,l);else if("v2"===p)m.uniform2f(f,l.x,l.y);
|
|
|
|
-else if("v3"===p)m.uniform3f(f,l.x,l.y,l.z);else if("v4"===p)m.uniform4f(f,l.x,l.y,l.z,l.w);else if("c"===p)m.uniform3f(f,l.r,l.g,l.b);else if("iv1"===p)m.uniform1iv(f,l);else if("iv"===p)m.uniform3iv(f,l);else if("fv1"===p)m.uniform1fv(f,l);else if("fv"===p)m.uniform3fv(f,l);else if("v2v"===p){void 0===c._array&&(c._array=new Float32Array(2*l.length));p=0;for(r=l.length;p<r;p++)u=2*p,c._array[u]=l[p].x,c._array[u+1]=l[p].y;m.uniform2fv(f,c._array)}else if("v3v"===p){void 0===c._array&&(c._array=
|
|
|
|
-new Float32Array(3*l.length));p=0;for(r=l.length;p<r;p++)u=3*p,c._array[u]=l[p].x,c._array[u+1]=l[p].y,c._array[u+2]=l[p].z;m.uniform3fv(f,c._array)}else if("v4v"===p){void 0===c._array&&(c._array=new Float32Array(4*l.length));p=0;for(r=l.length;p<r;p++)u=4*p,c._array[u]=l[p].x,c._array[u+1]=l[p].y,c._array[u+2]=l[p].z,c._array[u+3]=l[p].w;m.uniform4fv(f,c._array)}else if("m3"===p)m.uniformMatrix3fv(f,!1,l.elements);else if("m3v"===p){void 0===c._array&&(c._array=new Float32Array(9*l.length));p=0;
|
|
|
|
-for(r=l.length;p<r;p++)l[p].flattenToArrayOffset(c._array,9*p);m.uniformMatrix3fv(f,!1,c._array)}else if("m4"===p)m.uniformMatrix4fv(f,!1,l.elements);else if("m4v"===p){void 0===c._array&&(c._array=new Float32Array(16*l.length));p=0;for(r=l.length;p<r;p++)l[p].flattenToArrayOffset(c._array,16*p);m.uniformMatrix4fv(f,!1,c._array)}else if("t"===p){if(u=l,l=z(),m.uniform1i(f,l),u)if(u instanceof THREE.CubeTexture||u.image instanceof Array&&6===u.image.length){if(c=u,f=l,6===c.image.length)if(c.needsUpdate){c.image.__webglTextureCube||
|
|
|
|
-(c.addEventListener("dispose",Db),c.image.__webglTextureCube=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+f);m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,c.flipY);f=c instanceof THREE.CompressedTexture;l=[];for(p=0;6>p;p++)P.autoScaleCubemaps&&!f?(r=l,u=p,w=c.image[p],x=pc,w.width<=x&&w.height<=x||(A=Math.max(w.width,w.height),v=Math.floor(w.width*x/A),x=Math.floor(w.height*x/A),A=document.createElement("canvas"),A.width=
|
|
|
|
-v,A.height=x,A.getContext("2d").drawImage(w,0,0,w.width,w.height,0,0,v,x),w=A),r[u]=w):l[p]=c.image[p];p=l[0];r=THREE.Math.isPowerOfTwo(p.width)&&THREE.Math.isPowerOfTwo(p.height);u=G(c.format);w=G(c.type);M(m.TEXTURE_CUBE_MAP,c,r);for(p=0;6>p;p++)if(f)for(x=l[p].mipmaps,A=0,D=x.length;A<D;A++)v=x[A],c.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+p,A,u,v.width,v.height,0,v.data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+p,A,u,v.width,v.height,0,u,w,v.data);else m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
|
-p,0,u,u,w,l[p]);c.generateMipmaps&&r&&m.generateMipmap(m.TEXTURE_CUBE_MAP);c.needsUpdate=!1;if(c.onUpdate)c.onUpdate()}else m.activeTexture(m.TEXTURE0+f),m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}else u instanceof THREE.WebGLRenderTargetCube?(c=u,m.activeTexture(m.TEXTURE0+l),m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture)):P.setTexture(u,l)}else if("tv"===p){void 0===c._array&&(c._array=[]);p=0;for(r=c.value.length;p<r;p++)c._array[p]=z();m.uniform1iv(f,c._array);p=0;for(r=
|
|
|
|
-c.value.length;p<r;p++)u=c.value[p],l=c._array[p],u&&P.setTexture(u,l)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+p);(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==h.cameraPosition&&(xa.setFromMatrixPosition(a.matrixWorld),m.uniform3f(h.cameraPosition,xa.x,xa.y,xa.z));(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==h.viewMatrix&&m.uniformMatrix4fv(h.viewMatrix,
|
|
|
|
-!1,a.matrixWorldInverse.elements)}m.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrix.elements);h.normalMatrix&&m.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrix.elements);null!==h.modelMatrix&&m.uniformMatrix4fv(h.modelMatrix,!1,e.matrixWorld.elements);return g}function z(){var a=qa;a>=Jb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Jb);qa+=1;return a}function C(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function y(a,b,c,
|
|
|
|
-d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function Q(a){a!==ga&&(m.lineWidth(a),ga=a)}function E(a,b,c){na!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),na=a);!a||Ma===b&&wa===c||(m.polygonOffset(b,c),Ma=b,wa=c)}function M(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,G(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,G(b.wrapT)),m.texParameteri(a,m.TEXTURE_MAG_FILTER,G(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,G(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),
|
|
|
|
-m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,H(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,H(b.minFilter)));ab&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,ab.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Kb)),b.__oldAnisotropy=b.anisotropy)}function W(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,
|
|
|
|
-m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function H(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?m.NEAREST:m.LINEAR}function G(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;
|
|
|
|
-if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4;
|
|
|
|
-if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;if(a===THREE.FloatType)return m.FLOAT;if(a===THREE.AlphaFormat)return m.ALPHA;if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===
|
|
|
|
-THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===THREE.SrcColorFactor)return m.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===
|
|
|
|
-THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;if(void 0!==Ta){if(a===THREE.RGB_S3TC_DXT1_Format)return Ta.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
|
|
-if(a===THREE.RGBA_S3TC_DXT3_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var J=void 0!==a.canvas?a.canvas:document.createElement("canvas"),K=void 0!==a.context?a.context:null,X=void 0!==a.precision?a.precision:"highp",L=void 0!==a.alpha?a.alpha:!1,ha=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,Z=void 0!==a.antialias?a.antialias:!1,O=void 0!==
|
|
|
|
-a.premultipliedAlpha?a.premultipliedAlpha:!0,ia=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,fa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Y=new THREE.Color(0),ta=0,va=[],ya=[],za=!0;this.domElement=J;this.context=null;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=
|
|
|
|
-this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var P=this,Aa=[],Ia=null,La=null,Ba=-1,Ga=null,Ca=null,qa=0,da=-1,ja=-1,Ja=-1,S=-1,U=-1,ma=-1,ra=-1,Ka=-1,
|
|
|
|
-na=null,Ma=null,wa=null,ga=null,Fa=0,Ha=0,Na=J.width,ub=J.height,Pb=0,Qb=0,vb=new Uint8Array(16),bb=new Uint8Array(16),gc=new THREE.Frustum,Rb=new THREE.Matrix4,hc=new THREE.Matrix4,xa=new THREE.Vector3,oa=new THREE.Vector3,Xa=!0,Sb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,
|
|
|
|
-nb,ob,ab,Ta,rb;(function(){try{var a={alpha:L,depth:ha,stencil:R,antialias:Z,premultipliedAlpha:O,preserveDrawingBuffer:ia};m=K||J.getContext("webgl",a)||J.getContext("experimental-webgl",a);if(null===m)throw"Error creating WebGL context.";}catch(b){console.error(b)}nb=m.getExtension("OES_texture_float");m.getExtension("OES_texture_float_linear");ob=m.getExtension("OES_standard_derivatives");ab=m.getExtension("EXT_texture_filter_anisotropic")||m.getExtension("MOZ_EXT_texture_filter_anisotropic")||
|
|
|
|
-m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Ta=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");rb=m.getExtension("OES_element_index_uint");null===nb&&console.log("THREE.WebGLRenderer: Float textures not supported.");null===ob&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===ab&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");
|
|
|
|
-null===Ta&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===rb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});fa&&m.getExtension("EXT_frag_depth")})();m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);
|
|
|
|
-m.enable(m.BLEND);m.blendEquation(m.FUNC_ADD);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);m.viewport(Fa,Ha,Na,ub);m.clearColor(Y.r,Y.g,Y.b,ta);this.context=m;var Jb=m.getParameter(m.MAX_TEXTURE_IMAGE_UNITS),qc=m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS);m.getParameter(m.MAX_TEXTURE_SIZE);var pc=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),Kb=ab?m.getParameter(ab.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,Lb=0<qc,Ib=Lb&&nb;Ta&&m.getParameter(m.COMPRESSED_TEXTURE_FORMATS);var rc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,
|
|
|
|
-m.HIGH_FLOAT),sc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.LOW_FLOAT);var zc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),Ac=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.LOW_FLOAT);var Bc=0<rc.precision&&0<zc.precision,Mb=0<sc.precision&&0<Ac.precision;"highp"!==X||Bc||(Mb?(X="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(X=
|
|
|
|
-"lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==X||Mb||(X="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){return m};this.supportsVertexTextures=function(){return Lb};this.supportsFloatTextures=function(){return nb};this.supportsStandardDerivatives=function(){return ob};this.supportsCompressedTextureS3TC=function(){return Ta};this.getMaxAnisotropy=function(){return Kb};this.getPrecision=
|
|
|
|
-function(){return X};this.setSize=function(a,b,c){J.width=a*this.devicePixelRatio;J.height=b*this.devicePixelRatio;!1!==c&&(J.style.width=a+"px",J.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Fa=a*this.devicePixelRatio;Ha=b*this.devicePixelRatio;Na=c*this.devicePixelRatio;ub=d*this.devicePixelRatio;m.viewport(Fa,Ha,Na,ub)};this.setScissor=function(a,b,c,d){m.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};
|
|
|
|
-this.enableScissorTest=function(a){a?m.enable(m.SCISSOR_TEST):m.disable(m.SCISSOR_TEST)};this.setClearColor=function(a,b){Y.set(a);ta=void 0!==b?b:1;m.clearColor(Y.r,Y.g,Y.b,ta)};this.setClearColorHex=function(a,b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return Y};this.getClearAlpha=function(){return ta};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=m.COLOR_BUFFER_BIT;if(void 0===
|
|
|
|
-b||b)d|=m.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=m.STENCIL_BUFFER_BIT;m.clear(d)};this.clearColor=function(){m.clear(m.COLOR_BUFFER_BIT)};this.clearDepth=function(){m.clear(m.DEPTH_BUFFER_BIT)};this.clearStencil=function(){m.clear(m.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.updateShadowMap=
|
|
|
|
-function(a,b){Ia=null;Ba=Ga=Ka=ra=Ja=-1;Xa=!0;ja=da=-1;Nb(a);this.shadowMapPlugin.update(a,b)};var Ob=function(a){a=a.target;a.removeEventListener("dispose",Ob);a.__webglInit=void 0;if(a instanceof THREE.BufferGeometry){a=a.attributes;for(var b in a)void 0!==a[b].buffer&&m.deleteBuffer(a[b].buffer);P.info.memory.geometries--}else if(void 0!==a.geometryGroups){b=0;for(var c=a.geometryGroupsList.length;b<c;b++){var d=a.geometryGroupsList[b];if(void 0!==d.numMorphTargets)for(var e=0,f=d.numMorphTargets;e<
|
|
|
|
-f;e++)m.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals)for(e=0,f=d.numMorphNormals;e<f;e++)m.deleteBuffer(d.__webglMorphNormalsBuffers[e]);dc(d)}}else dc(a)},Db=function(a){a=a.target;a.removeEventListener("dispose",Db);a.image&&a.image.__webglTextureCube?m.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,m.deleteTexture(a.__webglTexture));P.info.memory.textures--},ec=function(a){a=a.target;a.removeEventListener("dispose",ec);if(a&&a.__webglTexture)if(m.deleteTexture(a.__webglTexture),
|
|
|
|
-a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)m.deleteFramebuffer(a.__webglFramebuffer[b]),m.deleteRenderbuffer(a.__webglRenderbuffer[b]);else m.deleteFramebuffer(a.__webglFramebuffer),m.deleteRenderbuffer(a.__webglRenderbuffer);P.info.memory.textures--},fc=function(a){a=a.target;a.removeEventListener("dispose",fc);Hb(a)},dc=function(a){void 0!==a.__webglVertexBuffer&&m.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&m.deleteBuffer(a.__webglNormalBuffer);void 0!==
|
|
|
|
-a.__webglTangentBuffer&&m.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&m.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&m.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&m.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&m.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&m.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&m.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&
|
|
|
|
-m.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&m.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)m.deleteBuffer(a.__webglCustomAttributesList[b].buffer);P.info.memory.geometries--},Hb=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=Aa.length;a<c;a++)if(d=Aa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=Aa.length;a<
|
|
|
|
-c;a++)d=Aa[a],d.program!==b&&e.push(d);Aa=e;m.deleteProgram(b);P.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){k();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),l(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,p,r,q,s,t,u,w=3*a.count;for(u=0;u<w;u+=9)t=a.normalArray,d=t[u],e=t[u+1],f=t[u+2],g=t[u+3],p=t[u+4],q=t[u+5],h=t[u+6],r=t[u+7],s=t[u+8],d=(d+g+h)/3,e=(e+p+r)/3,f=(f+q+s)/3,t[u]=d,t[u+1]=e,t[u+2]=f,t[u+3]=d,t[u+4]=e,t[u+5]=f,t[u+6]=d,t[u+
|
|
|
|
-7]=e,t[u+8]=f}m.bufferData(m.ARRAY_BUFFER,a.normalArray,m.DYNAMIC_DRAW);l(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),l(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),
|
|
|
|
-l(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));n();m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var g=B(a,b,c,d,f);a=g.attributes;b=e.attributes;c=!1;g=16777215*e.id+2*g.id+(d.wireframe?1:0);g!==Ga&&(Ga=g,c=!0);c&&k();if(f instanceof THREE.Mesh)if(g=b.index){var l,n;g.array instanceof Uint32Array?(l=m.UNSIGNED_INT,n=4):(l=m.UNSIGNED_SHORT,n=2);e=e.offsets;if(0===e.length)c&&(h(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,
|
|
|
|
-g.buffer)),m.drawElements(m.TRIANGLES,g.array.length,l,0),P.info.render.calls++,P.info.render.vertices+=g.array.length,P.info.render.faces+=g.array.length/3;else{c=!0;for(var p=0,r=e.length;p<r;p++){var q=e[p].index;c&&(h(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer));m.drawElements(m.TRIANGLES,e[p].count,l,e[p].start*n);P.info.render.calls++;P.info.render.vertices+=e[p].count;P.info.render.faces+=e[p].count/3}}}else c&&h(d,a,b,0),d=e.attributes.position,m.drawArrays(m.TRIANGLES,0,d.array.length/
|
|
|
|
-3),P.info.render.calls++,P.info.render.vertices+=d.array.length/3,P.info.render.faces+=d.array.length/9;else if(f instanceof THREE.PointCloud)c&&h(d,a,b,0),d=b.position,m.drawArrays(m.POINTS,0,d.array.length/3),P.info.render.calls++,P.info.render.points+=d.array.length/3;else if(f instanceof THREE.Line)if(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,Q(d.linewidth),g=b.index)if(g.array instanceof Uint32Array?(l=m.UNSIGNED_INT,n=4):(l=m.UNSIGNED_SHORT,n=2),e=e.offsets,0===e.length)c&&(h(d,a,b,0),
|
|
|
|
-m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer)),m.drawElements(f,g.array.length,l,0),P.info.render.calls++,P.info.render.vertices+=g.array.length;else for(1<e.length&&(c=!0),p=0,r=e.length;p<r;p++)q=e[p].index,c&&(h(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer)),m.drawElements(f,e[p].count,l,e[p].start*n),P.info.render.calls++,P.info.render.vertices+=e[p].count;else c&&h(d,a,b,0),d=b.position,m.drawArrays(f,0,d.array.length/3),P.info.render.calls++,P.info.render.points+=d.array.length/3}};
|
|
|
|
-this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,h;c=B(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==Ga&&(Ga=c,a=!0);a&&k();if(!d.morphTargets&&0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),l(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]),l(c.position),
|
|
|
|
-m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),l(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var p=0;h=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;p<d.numSupportedMorphTargets&&p<h.length;)0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[h[p]]),l(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[h[p]]),l(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[h[p]],p++}else{h=[];g=f.morphTargetInfluences;var r,q=g.length;for(r=0;r<q;r++)p=g[r],0<p&&h.push([p,r]);h.length>d.numSupportedMorphTargets?(h.sort(t),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(t):0===h.length&&h.push([0,0]);for(p=0;p<d.numSupportedMorphTargets;)h[p]?
|
|
|
|
-(r=h[p][1],0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[r]),l(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[r]),l(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[r]):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,h=e.__webglCustomAttributesList.length;g<h;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(m.bindBuffer(m.ARRAY_BUFFER,c.buffer),l(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),l(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),l(b.normal),m.vertexAttribPointer(b.normal,3,m.FLOAT,!1,0,0));0<=b.tangent&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglTangentBuffer),l(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),l(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),l(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),l(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
|
-e.__webglSkinWeightsBuffer),l(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}n();f instanceof THREE.Mesh?(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(Q(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)),P.info.render.calls++,P.info.render.vertices+=e.__webglFaceCount,P.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,Q(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),P.info.render.calls++):f instanceof THREE.PointCloud&&(m.drawArrays(m.POINTS,0,e.__webglParticleCount),P.info.render.calls++,P.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,l=a.fog;Ba=-1;Xa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Rb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);gc.setFromMatrix(Rb);Nb(a);va.length=0;ya.length=0;za=this.sortObjects;s(a,a,b);this.sortObjects&&(va.sort(q),ya.sort(r));p(this.renderPluginsPre,
|
|
|
|
-a,b);P.info.render.calls=0;P.info.render.vertices=0;P.info.render.faces=0;P.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);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),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),v(va,b,k,l,!0,d),v(ya,b,k,l,!0,d),u(a.__webglObjectsImmediate,"",b,k,l,!1,d)):(d=null,this.setBlending(THREE.NoBlending),v(va,b,k,l,!1,d),u(a.__webglObjectsImmediate,"opaque",b,k,l,!1,d),v(ya,b,k,l,!0,d),u(a.__webglObjectsImmediate,"transparent",
|
|
|
|
-b,k,l,!0,d));p(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);Ga=-1;P.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,gc):e.render(function(a){P.renderBufferImmediate(a,f,d)})};var Nb=function(a){a.__webglObjects||(a.__webglObjects={},a.__webglObjectsImmediate=[]);for(;a.__objectsAdded.length;){var c=a.__objectsAdded[0],d=a,e=void 0,f=void 0;void 0===c.__webglInit&&(c.__webglInit=!0,c._modelViewMatrix=new THREE.Matrix4,c._normalMatrix=new THREE.Matrix3);e=c.geometry;if(void 0!==e&&void 0===e.__webglInit)if(e.__webglInit=
|
|
|
|
-!0,e.addEventListener("dispose",Ob),e instanceof THREE.BufferGeometry)g(e);else if(c instanceof THREE.Mesh)void 0!==c.__webglActive&&F(c,d),w(d,c,e);else if(c instanceof THREE.Line){if(!e.__webglVertexBuffer){f=e;f.__webglVertexBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglLineDistanceBuffer=m.createBuffer();P.info.memory.geometries++;var f=e,h=c,k=f.vertices.length;f.__vertexArray=new Float32Array(3*k);f.__colorArray=new Float32Array(3*k);f.__lineDistanceArray=new Float32Array(1*
|
|
|
|
-k);f.__webglLineCount=k;b(f,h);e.verticesNeedUpdate=!0;e.colorsNeedUpdate=!0;e.lineDistancesNeedUpdate=!0}}else c instanceof THREE.PointCloud&&!e.__webglVertexBuffer&&(f=e,f.__webglVertexBuffer=m.createBuffer(),f.__webglColorBuffer=m.createBuffer(),P.info.memory.geometries++,f=e,h=c,k=f.vertices.length,f.__vertexArray=new Float32Array(3*k),f.__colorArray=new Float32Array(3*k),f.__sortArray=[],f.__webglParticleCount=k,b(f,h),e.verticesNeedUpdate=!0,e.colorsNeedUpdate=!0);if(void 0===c.__webglActive){if(c instanceof
|
|
|
|
-THREE.Mesh)if(e=c.geometry,e instanceof THREE.BufferGeometry)A(d.__webglObjects,e,c);else{if(e instanceof THREE.Geometry)for(h=0,k=e.geometryGroupsList.length;h<k;h++)f=e.geometryGroupsList[h],A(d.__webglObjects,f,c)}else c instanceof THREE.Line||c instanceof THREE.PointCloud?(e=c.geometry,A(d.__webglObjects,e,c)):(c instanceof THREE.ImmediateRenderObject||c.immediateRenderCallback)&&d.__webglObjectsImmediate.push({id:null,object:c,opaque:null,transparent:null,z:0});c.__webglActive=!0}a.__objectsAdded.splice(0,
|
|
|
|
-1)}for(;a.__objectsRemoved.length;)F(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1)};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",fc);var k,l,n,p;a instanceof THREE.MeshDepthMaterial?p="depth":a instanceof THREE.MeshNormalMaterial?p="normal":a instanceof THREE.MeshBasicMaterial?p="basic":a instanceof THREE.MeshLambertMaterial?p="lambert":a instanceof THREE.MeshPhongMaterial?p="phong":a instanceof THREE.LineBasicMaterial?p="basic":a instanceof THREE.LineDashedMaterial?
|
|
|
|
-p="dashed":a instanceof THREE.PointCloudMaterial&&(p="particle_basic");p&&(e=THREE.ShaderLib[p],a.uniforms=THREE.UniformsUtils.clone(e.uniforms),a.vertexShader=e.vertexShader,a.fragmentShader=e.fragmentShader);n=h=g=f=e=0;for(var r=b.length;n<r;n++){var q=b[n];q.onlyShadow||!1===q.visible||(q instanceof THREE.DirectionalLight&&e++,q instanceof THREE.PointLight&&f++,q instanceof THREE.SpotLight&&g++,q instanceof THREE.HemisphereLight&&h++)}r=n=0;for(q=b.length;r<q;r++){var s=b[r];s.castShadow&&(s instanceof
|
|
|
|
-THREE.SpotLight&&n++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Ib&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((n-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));c={precision:X,supportsVertexTextures:Lb,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,logarithmicDepthBuffer:fa,skinning:a.skinning,maxBones:n,useVertexTexture:Ib&&d&&d.skeleton&&d.skeleton.useVertexTexture,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,
|
|
|
|
-maxSpotLights:g,maxHemiLights:h,maxShadows:b,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<b,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=[];p?d.push(p):(d.push(a.fragmentShader),d.push(a.vertexShader));for(var t in a.defines)d.push(t),d.push(a.defines[t]);for(l in c)d.push(l),d.push(c[l]);
|
|
|
|
-p=d.join();var u;l=0;for(t=Aa.length;l<t;l++)if(d=Aa[l],d.code===p){u=d;u.usedTimes++;break}void 0===u&&(u=new THREE.WebGLProgram(this,p,a,c),Aa.push(u),P.info.memory.programs=Aa.length);a.program=u;u=a.program.attributes;if(a.morphTargets)for(a.numSupportedMorphTargets=0,t="morphTarget",l=0;l<this.maxMorphTargets;l++)p=t+l,0<=u[p]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(a.numSupportedMorphNormals=0,t="morphNormal",l=0;l<this.maxMorphNormals;l++)p=t+l,0<=u[p]&&a.numSupportedMorphNormals++;
|
|
|
|
-a.uniformsList=[];for(k in a.uniforms)a.uniformsList.push([a.uniforms[k],k])};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):a===THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;da!==b&&(b?m.disable(m.CULL_FACE):m.enable(m.CULL_FACE),
|
|
|
|
-da=b);ja!==a&&(a?m.frontFace(m.CW):m.frontFace(m.CCW),ja=a)};this.setDepthTest=function(a){ra!==a&&(a?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST),ra=a)};this.setDepthWrite=function(a){Ka!==a&&(m.depthMask(a),Ka=a)};this.setBlending=function(a,b,c,d){a!==Ja&&(a===THREE.NoBlending?m.disable(m.BLEND):a===THREE.AdditiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.SRC_ALPHA,m.ONE)):a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,
|
|
|
|
-m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Ja=a);if(a===THREE.CustomBlending){if(b!==S&&(m.blendEquation(G(b)),S=b),c!==U||d!==ma)m.blendFunc(G(c),G(d)),U=c,ma=d}else ma=U=S=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||
|
|
|
|
-(a.__webglInit=!0,a.addEventListener("dispose",Db),a.__webglTexture=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&THREE.Math.isPowerOfTwo(c.height),e=G(a.format),f=G(a.type);M(m.TEXTURE_2D,a,d);var g=a.mipmaps;if(a instanceof
|
|
|
|
-THREE.DataTexture)if(0<g.length&&d){for(var h=0,k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(a instanceof THREE.CompressedTexture)for(h=0,k=g.length;h<k;h++)c=g[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);else if(0<g.length&&d){h=0;for(k=g.length;h<
|
|
|
|
-k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,e,f,c);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+b),m.bindTexture(m.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",
|
|
|
|
-ec);a.__webglTexture=m.createTexture();P.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=G(a.format),e=G(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);M(m.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=m.createFramebuffer();a.__webglRenderbuffer[f]=m.createRenderbuffer();m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
|
-f;m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer[f]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,h,g.__webglTexture,0);W(a.__webglRenderbuffer[f],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),M(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,
|
|
|
|
-a.__webglFramebuffer),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):W(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,
|
|
|
|
-null);m.bindRenderbuffer(m.RENDERBUFFER,null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Na,a=ub,d=Fa,e=Ha);b!==La&&(m.bindFramebuffer(m.FRAMEBUFFER,b),m.viewport(d,e,c,a),La=b);Pb=c;Qb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:
|
|
|
|
|
|
+n,r,p;if(l instanceof THREE.BufferGeometry){var q=m.DYNAMIC_DRAW,u=l.attributes,v,A;for(v in u)A=u[v],A.needsUpdate&&("index"===v?(m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,A.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,A.array,q)):(m.bindBuffer(m.ARRAY_BUFFER,A.buffer),m.bufferData(m.ARRAY_BUFFER,A.array,q)),A.needsUpdate=!1)}else if(b instanceof THREE.Mesh){if(l.buffersNeedUpdate||l.groupsNeedUpdate)l instanceof THREE.BufferGeometry?g(l):b instanceof THREE.Mesh&&w(a,b,l);for(var z=0,B=l.geometryGroupsList.length;z<
|
|
|
|
+B;z++)if(n=l.geometryGroupsList[z],p=d(b,n),(l.buffersNeedUpdate||l.groupsNeedUpdate)&&c(n,b),r=p.attributes&&D(p),l.verticesNeedUpdate||l.morphTargetsNeedUpdate||l.elementsNeedUpdate||l.uvsNeedUpdate||l.normalsNeedUpdate||l.colorsNeedUpdate||l.tangentsNeedUpdate||r){var y=n,F=b,C=m.DYNAMIC_DRAW,G=!l.dynamic,J=p;if(y.__inittedArrays){var K=e(J),P=J.vertexColors?J.vertexColors:!1,M=f(J),Q=K===THREE.SmoothShading,E=void 0,H=void 0,O=void 0,L=void 0,ta=void 0,X=void 0,R=void 0,W=void 0,Y=void 0,Z=void 0,
|
|
|
|
+Ba=void 0,$=void 0,ba=void 0,ca=void 0,U=void 0,Ia=void 0,da=void 0,fa=void 0,ga=void 0,ja=void 0,Aa=void 0,La=void 0,ha=void 0,ia=void 0,qa=void 0,ma=void 0,oa=void 0,ra=void 0,Ga=void 0,S=void 0,Ja=void 0,Fa=void 0,Ha=void 0,Ka=void 0,na=void 0,Na=void 0,wa=void 0,Ca=void 0,Ma=void 0,Ta=void 0,cb=0,db=0,Xa=0,ab=0,bb=0,eb=0,Sa=0,sb=0,Ya=0,ua=0,Da=0,N=0,Ra=void 0,fb=y.__vertexArray,nb=y.__uvArray,ob=y.__uv2Array,wb=y.__normalArray,Ua=y.__tangentArray,gb=y.__colorArray,Va=y.__skinIndexArray,Wa=y.__skinWeightArray,
|
|
|
|
+ub=y.__morphTargetsArrays,vb=y.__morphNormalsArrays,rb=y.__webglCustomAttributesList,I=void 0,Tb=y.__faceArray,xb=y.__lineArray,Oa=F.geometry,Ib=Oa.elementsNeedUpdate,Db=Oa.uvsNeedUpdate,Lb=Oa.normalsNeedUpdate,Pb=Oa.tangentsNeedUpdate,Qb=Oa.colorsNeedUpdate,Sb=Oa.morphTargetsNeedUpdate,ic=Oa.vertices,ea=y.faces3,hb=Oa.faces,Hb=Oa.faceVertexUvs[0],Jb=Oa.faceVertexUvs[1],jc=Oa.skinIndices,Ub=Oa.skinWeights,Vb=Oa.morphTargets,Kb=Oa.morphNormals;if(Oa.verticesNeedUpdate){E=0;for(H=ea.length;E<H;E++)L=
|
|
|
|
+hb[ea[E]],$=ic[L.a],ba=ic[L.b],ca=ic[L.c],fb[db]=$.x,fb[db+1]=$.y,fb[db+2]=$.z,fb[db+3]=ba.x,fb[db+4]=ba.y,fb[db+5]=ba.z,fb[db+6]=ca.x,fb[db+7]=ca.y,fb[db+8]=ca.z,db+=9;m.bindBuffer(m.ARRAY_BUFFER,y.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,fb,C)}if(Sb)for(na=0,Na=Vb.length;na<Na;na++){E=Da=0;for(H=ea.length;E<H;E++)Ma=ea[E],L=hb[Ma],$=Vb[na].vertices[L.a],ba=Vb[na].vertices[L.b],ca=Vb[na].vertices[L.c],wa=ub[na],wa[Da]=$.x,wa[Da+1]=$.y,wa[Da+2]=$.z,wa[Da+3]=ba.x,wa[Da+4]=ba.y,wa[Da+5]=ba.z,
|
|
|
|
+wa[Da+6]=ca.x,wa[Da+7]=ca.y,wa[Da+8]=ca.z,J.morphNormals&&(Q?(Ta=Kb[na].vertexNormals[Ma],fa=Ta.a,ga=Ta.b,ja=Ta.c):ja=ga=fa=Kb[na].faceNormals[Ma],Ca=vb[na],Ca[Da]=fa.x,Ca[Da+1]=fa.y,Ca[Da+2]=fa.z,Ca[Da+3]=ga.x,Ca[Da+4]=ga.y,Ca[Da+5]=ga.z,Ca[Da+6]=ja.x,Ca[Da+7]=ja.y,Ca[Da+8]=ja.z),Da+=9;m.bindBuffer(m.ARRAY_BUFFER,y.__webglMorphTargetsBuffers[na]);m.bufferData(m.ARRAY_BUFFER,ub[na],C);J.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglMorphNormalsBuffers[na]),m.bufferData(m.ARRAY_BUFFER,vb[na],
|
|
|
|
+C))}if(Ub.length){E=0;for(H=ea.length;E<H;E++)L=hb[ea[E]],ia=Ub[L.a],qa=Ub[L.b],ma=Ub[L.c],Wa[ua]=ia.x,Wa[ua+1]=ia.y,Wa[ua+2]=ia.z,Wa[ua+3]=ia.w,Wa[ua+4]=qa.x,Wa[ua+5]=qa.y,Wa[ua+6]=qa.z,Wa[ua+7]=qa.w,Wa[ua+8]=ma.x,Wa[ua+9]=ma.y,Wa[ua+10]=ma.z,Wa[ua+11]=ma.w,oa=jc[L.a],ra=jc[L.b],Ga=jc[L.c],Va[ua]=oa.x,Va[ua+1]=oa.y,Va[ua+2]=oa.z,Va[ua+3]=oa.w,Va[ua+4]=ra.x,Va[ua+5]=ra.y,Va[ua+6]=ra.z,Va[ua+7]=ra.w,Va[ua+8]=Ga.x,Va[ua+9]=Ga.y,Va[ua+10]=Ga.z,Va[ua+11]=Ga.w,ua+=12;0<ua&&(m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
|
+y.__webglSkinIndicesBuffer),m.bufferData(m.ARRAY_BUFFER,Va,C),m.bindBuffer(m.ARRAY_BUFFER,y.__webglSkinWeightsBuffer),m.bufferData(m.ARRAY_BUFFER,Wa,C))}if(Qb&&P){E=0;for(H=ea.length;E<H;E++)L=hb[ea[E]],R=L.vertexColors,W=L.color,3===R.length&&P===THREE.VertexColors?(Aa=R[0],La=R[1],ha=R[2]):ha=La=Aa=W,gb[Ya]=Aa.r,gb[Ya+1]=Aa.g,gb[Ya+2]=Aa.b,gb[Ya+3]=La.r,gb[Ya+4]=La.g,gb[Ya+5]=La.b,gb[Ya+6]=ha.r,gb[Ya+7]=ha.g,gb[Ya+8]=ha.b,Ya+=9;0<Ya&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,
|
|
|
|
+gb,C))}if(Pb&&Oa.hasTangents){E=0;for(H=ea.length;E<H;E++)L=hb[ea[E]],Y=L.vertexTangents,U=Y[0],Ia=Y[1],da=Y[2],Ua[Sa]=U.x,Ua[Sa+1]=U.y,Ua[Sa+2]=U.z,Ua[Sa+3]=U.w,Ua[Sa+4]=Ia.x,Ua[Sa+5]=Ia.y,Ua[Sa+6]=Ia.z,Ua[Sa+7]=Ia.w,Ua[Sa+8]=da.x,Ua[Sa+9]=da.y,Ua[Sa+10]=da.z,Ua[Sa+11]=da.w,Sa+=12;m.bindBuffer(m.ARRAY_BUFFER,y.__webglTangentBuffer);m.bufferData(m.ARRAY_BUFFER,Ua,C)}if(Lb&&K){E=0;for(H=ea.length;E<H;E++)if(L=hb[ea[E]],ta=L.vertexNormals,X=L.normal,3===ta.length&&Q)for(S=0;3>S;S++)Fa=ta[S],wb[eb]=
|
|
|
|
+Fa.x,wb[eb+1]=Fa.y,wb[eb+2]=Fa.z,eb+=3;else for(S=0;3>S;S++)wb[eb]=X.x,wb[eb+1]=X.y,wb[eb+2]=X.z,eb+=3;m.bindBuffer(m.ARRAY_BUFFER,y.__webglNormalBuffer);m.bufferData(m.ARRAY_BUFFER,wb,C)}if(Db&&Hb&&M){E=0;for(H=ea.length;E<H;E++)if(O=ea[E],Z=Hb[O],void 0!==Z)for(S=0;3>S;S++)Ha=Z[S],nb[Xa]=Ha.x,nb[Xa+1]=Ha.y,Xa+=2;0<Xa&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglUVBuffer),m.bufferData(m.ARRAY_BUFFER,nb,C))}if(Db&&Jb&&M){E=0;for(H=ea.length;E<H;E++)if(O=ea[E],Ba=Jb[O],void 0!==Ba)for(S=0;3>S;S++)Ka=Ba[S],
|
|
|
|
+ob[ab]=Ka.x,ob[ab+1]=Ka.y,ab+=2;0<ab&&(m.bindBuffer(m.ARRAY_BUFFER,y.__webglUV2Buffer),m.bufferData(m.ARRAY_BUFFER,ob,C))}if(Ib){E=0;for(H=ea.length;E<H;E++)Tb[bb]=cb,Tb[bb+1]=cb+1,Tb[bb+2]=cb+2,bb+=3,xb[sb]=cb,xb[sb+1]=cb+1,xb[sb+2]=cb,xb[sb+3]=cb+2,xb[sb+4]=cb+1,xb[sb+5]=cb+2,sb+=6,cb+=3;m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.__webglFaceBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Tb,C);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,y.__webglLineBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,xb,C)}if(rb)for(S=
|
|
|
|
+0,Ja=rb.length;S<Ja;S++)if(I=rb[S],I.__original.needsUpdate){N=0;if(1===I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],I.array[N]=I.value[L.a],I.array[N+1]=I.value[L.b],I.array[N+2]=I.value[L.c],N+=3;else{if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)Ra=I.value[ea[E]],I.array[N]=Ra,I.array[N+1]=Ra,I.array[N+2]=Ra,N+=3}else if(2===I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],
|
|
|
|
+ca=I.value[L.c],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=ba.x,I.array[N+3]=ba.y,I.array[N+4]=ca.x,I.array[N+5]=ca.y,N+=6;else{if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=ba.x,I.array[N+3]=ba.y,I.array[N+4]=ca.x,I.array[N+5]=ca.y,N+=6}else if(3===I.size){var sa;sa="c"===I.type?["r","g","b"]:["x","y","z"];if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],
|
|
|
|
+ca=I.value[L.c],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],N+=9;else if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],
|
|
|
|
+N+=9;else if("faceVertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)Ra=I.value[ea[E]],$=Ra[0],ba=Ra[1],ca=Ra[2],I.array[N]=$[sa[0]],I.array[N+1]=$[sa[1]],I.array[N+2]=$[sa[2]],I.array[N+3]=ba[sa[0]],I.array[N+4]=ba[sa[1]],I.array[N+5]=ba[sa[2]],I.array[N+6]=ca[sa[0]],I.array[N+7]=ca[sa[1]],I.array[N+8]=ca[sa[2]],N+=9}else if(4===I.size)if(void 0===I.boundTo||"vertices"===I.boundTo)for(E=0,H=ea.length;E<H;E++)L=hb[ea[E]],$=I.value[L.a],ba=I.value[L.b],ca=I.value[L.c],I.array[N]=$.x,I.array[N+1]=$.y,
|
|
|
|
+I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;else if("faces"===I.boundTo)for(E=0,H=ea.length;E<H;E++)ca=ba=$=Ra=I.value[ea[E]],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;else if("faceVertices"===
|
|
|
|
+I.boundTo)for(E=0,H=ea.length;E<H;E++)Ra=I.value[ea[E]],$=Ra[0],ba=Ra[1],ca=Ra[2],I.array[N]=$.x,I.array[N+1]=$.y,I.array[N+2]=$.z,I.array[N+3]=$.w,I.array[N+4]=ba.x,I.array[N+5]=ba.y,I.array[N+6]=ba.z,I.array[N+7]=ba.w,I.array[N+8]=ca.x,I.array[N+9]=ca.y,I.array[N+10]=ca.z,I.array[N+11]=ca.w,N+=12;m.bindBuffer(m.ARRAY_BUFFER,I.buffer);m.bufferData(m.ARRAY_BUFFER,I.array,C)}G&&(delete y.__inittedArrays,delete y.__colorArray,delete y.__normalArray,delete y.__tangentArray,delete y.__uvArray,delete y.__uv2Array,
|
|
|
|
+delete y.__faceArray,delete y.__vertexArray,delete y.__lineArray,delete y.__skinIndexArray,delete y.__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;p.attributes&&x(p)}else if(b instanceof THREE.Line){p=d(b,l);r=p.attributes&&D(p);if(l.verticesNeedUpdate||l.colorsNeedUpdate||l.lineDistancesNeedUpdate||r){var Wb=m.DYNAMIC_DRAW,Eb,Fb,Gb,Xb,pa,
|
|
|
|
+Yb,Mb=l.vertices,Nb=l.colors,Ob=l.lineDistances,dc=Mb.length,ec=Nb.length,fc=Ob.length,Zb=l.__vertexArray,$b=l.__colorArray,tc=l.__lineDistanceArray,pc=l.colorsNeedUpdate,qc=l.lineDistancesNeedUpdate,kc=l.__webglCustomAttributesList,ac,uc,Ea,Bb,Pa,la;if(l.verticesNeedUpdate){for(Eb=0;Eb<dc;Eb++)Xb=Mb[Eb],pa=3*Eb,Zb[pa]=Xb.x,Zb[pa+1]=Xb.y,Zb[pa+2]=Xb.z;m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,Zb,Wb)}if(pc){for(Fb=0;Fb<ec;Fb++)Yb=Nb[Fb],pa=3*Fb,$b[pa]=Yb.r,$b[pa+
|
|
|
|
+1]=Yb.g,$b[pa+2]=Yb.b;m.bindBuffer(m.ARRAY_BUFFER,l.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,$b,Wb)}if(qc){for(Gb=0;Gb<fc;Gb++)tc[Gb]=Ob[Gb];m.bindBuffer(m.ARRAY_BUFFER,l.__webglLineDistanceBuffer);m.bufferData(m.ARRAY_BUFFER,tc,Wb)}if(kc)for(ac=0,uc=kc.length;ac<uc;ac++)if(la=kc[ac],la.needsUpdate&&(void 0===la.boundTo||"vertices"===la.boundTo)){pa=0;Bb=la.value.length;if(1===la.size)for(Ea=0;Ea<Bb;Ea++)la.array[Ea]=la.value[Ea];else if(2===la.size)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=
|
|
|
|
+Pa.x,la.array[pa+1]=Pa.y,pa+=2;else if(3===la.size)if("c"===la.type)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.r,la.array[pa+1]=Pa.g,la.array[pa+2]=Pa.b,pa+=3;else for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.x,la.array[pa+1]=Pa.y,la.array[pa+2]=Pa.z,pa+=3;else if(4===la.size)for(Ea=0;Ea<Bb;Ea++)Pa=la.value[Ea],la.array[pa]=Pa.x,la.array[pa+1]=Pa.y,la.array[pa+2]=Pa.z,la.array[pa+3]=Pa.w,pa+=4;m.bindBuffer(m.ARRAY_BUFFER,la.buffer);m.bufferData(m.ARRAY_BUFFER,la.array,Wb)}}l.verticesNeedUpdate=
|
|
|
|
+!1;l.colorsNeedUpdate=!1;l.lineDistancesNeedUpdate=!1;p.attributes&&x(p)}else if(b instanceof THREE.PointCloud){p=d(b,l);r=p.attributes&&D(p);if(l.verticesNeedUpdate||l.colorsNeedUpdate||b.sortParticles||r){var lc=m.DYNAMIC_DRAW,Qa,ib,jb,V,kb,tb,bc=l.vertices,mc=bc.length,nc=l.colors,vc=nc.length,yb=l.__vertexArray,zb=l.__colorArray,pb=l.__sortArray,wc=l.verticesNeedUpdate,xc=l.colorsNeedUpdate,qb=l.__webglCustomAttributesList,Za,Cb,aa,$a,ka,T;if(b.sortParticles){hc.copy(Rb);hc.multiply(b.matrixWorld);
|
|
|
|
+for(Qa=0;Qa<mc;Qa++)jb=bc[Qa],xa.copy(jb),xa.applyProjection(hc),pb[Qa]=[xa.z,Qa];pb.sort(t);for(Qa=0;Qa<mc;Qa++)jb=bc[pb[Qa][1]],V=3*Qa,yb[V]=jb.x,yb[V+1]=jb.y,yb[V+2]=jb.z;for(ib=0;ib<vc;ib++)V=3*ib,tb=nc[pb[ib][1]],zb[V]=tb.r,zb[V+1]=tb.g,zb[V+2]=tb.b;if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],void 0===T.boundTo||"vertices"===T.boundTo)if(V=0,$a=T.value.length,1===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],T.array[aa]=T.value[kb];else if(2===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],
|
|
|
|
+T.array[V]=ka.x,T.array[V+1]=ka.y,V+=2;else if(3===T.size)if("c"===T.type)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.r,T.array[V+1]=ka.g,T.array[V+2]=ka.b,V+=3;else for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,V+=3;else if(4===T.size)for(aa=0;aa<$a;aa++)kb=pb[aa][1],ka=T.value[kb],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,T.array[V+3]=ka.w,V+=4}else{if(wc)for(Qa=0;Qa<mc;Qa++)jb=bc[Qa],V=3*Qa,yb[V]=jb.x,yb[V+1]=jb.y,
|
|
|
|
+yb[V+2]=jb.z;if(xc)for(ib=0;ib<vc;ib++)tb=nc[ib],V=3*ib,zb[V]=tb.r,zb[V+1]=tb.g,zb[V+2]=tb.b;if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],T.needsUpdate&&(void 0===T.boundTo||"vertices"===T.boundTo))if($a=T.value.length,V=0,1===T.size)for(aa=0;aa<$a;aa++)T.array[aa]=T.value[aa];else if(2===T.size)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+1]=ka.y,V+=2;else if(3===T.size)if("c"===T.type)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.r,T.array[V+1]=ka.g,T.array[V+2]=ka.b,V+=
|
|
|
|
+3;else for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,V+=3;else if(4===T.size)for(aa=0;aa<$a;aa++)ka=T.value[aa],T.array[V]=ka.x,T.array[V+1]=ka.y,T.array[V+2]=ka.z,T.array[V+3]=ka.w,V+=4}if(wc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,yb,lc);if(xc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,zb,lc);if(qb)for(Za=0,Cb=qb.length;Za<Cb;Za++)if(T=qb[Za],T.needsUpdate||
|
|
|
|
+b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,T.buffer),m.bufferData(m.ARRAY_BUFFER,T.array,lc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;p.attributes&&x(p)}for(var Ab=0,oc=k.length;Ab<oc;Ab++){var cc=k[Ab],lb=cc,yc=lb.object,rc=lb.buffer,sc=yc.geometry,mb=yc.material;mb instanceof THREE.MeshFaceMaterial?(mb=mb.materials[sc instanceof THREE.BufferGeometry?0:rc.materialIndex],mb.transparent?(lb.material=mb,ya.push(lb)):(lb.material=mb,va.push(lb))):mb&&(mb.transparent?(lb.material=mb,ya.push(lb)):
|
|
|
|
+(lb.material=mb,va.push(lb)));cc.render=!0;!0===za&&(null!==b.renderDepth?cc.z=b.renderDepth:(xa.setFromMatrixPosition(b.matrixWorld),xa.applyProjection(Rb),cc.z=xa.z))}}Ab=0;for(oc=b.children.length;Ab<oc;Ab++)s(a,b.children[Ab],h)}}function p(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)Ca=Ia=null,Ba=Ga=ja=da=Ka=ra=Ja=-1,Xa=!0,a[d].render(b,c,Pb,Qb),Ca=Ia=null,Ba=Ga=ja=da=Ka=ra=Ja=-1,Xa=!0}function v(a,b,c,d,e,f){for(var g,h,k,m=a.length-1;-1!==m;m--){g=a[m];h=g.object;k=g.buffer;var l=
|
|
|
|
+h;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);if(f)g=f;else{g=g.material;if(!g)continue;e&&P.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);P.setDepthTest(g.depthTest);P.setDepthWrite(g.depthWrite);E(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}P.setMaterialFaces(g);k instanceof THREE.BufferGeometry?P.renderBufferDirect(b,c,d,g,k,h):P.renderBuffer(b,c,d,g,k,h)}}function u(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&&P.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);P.setDepthTest(h.depthTest);P.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}P.renderImmediateObject(c,d,e,h,k)}}function w(a,b,d){var e,f=!1;e=b.material;if(void 0===d.geometryGroups||d.groupsNeedUpdate)delete a.__webglObjects[b.id],d.makeGroups(e instanceof THREE.MeshFaceMaterial,rb?4294967296:65535),
|
|
|
|
+d.groupsNeedUpdate=!1;for(var g=0,h=d.geometryGroupsList.length;g<h;g++){e=d.geometryGroupsList[g];if(e.__webglVertexBuffer)f=!1;else{f=e;f.__webglVertexBuffer=m.createBuffer();f.__webglNormalBuffer=m.createBuffer();f.__webglTangentBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglUVBuffer=m.createBuffer();f.__webglUV2Buffer=m.createBuffer();f.__webglSkinIndicesBuffer=m.createBuffer();f.__webglSkinWeightsBuffer=m.createBuffer();f.__webglFaceBuffer=m.createBuffer();f.__webglLineBuffer=
|
|
|
|
+m.createBuffer();var k=void 0,l=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],k=0,l=f.numMorphTargets;k<l;k++)f.__webglMorphTargetsBuffers.push(m.createBuffer());if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],k=0,l=f.numMorphNormals;k<l;k++)f.__webglMorphNormalsBuffers.push(m.createBuffer());P.info.memory.geometries++;c(e,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=
|
|
|
|
+!0}(f||void 0===b.__webglActive)&&A(a.__webglObjects,e,b)}b.__webglActive=!0}function A(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function D(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function F(a,b){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete b.__webglObjects[a.id];else if(a instanceof THREE.ImmediateRenderObject||
|
|
|
|
+a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate,d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function B(a,b,c,d,e){qa=0;d.needsUpdate&&(d.program&&Hb(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,k=d.uniforms;g.id!==Ia&&(m.useProgram(g.program),Ia=g.id,f=!0);d.id!==Ba&&(Ba=d.id,f=!0);if(f||a!==Ca)m.uniformMatrix4fv(h.projectionMatrix,
|
|
|
|
+!1,a.projectionMatrix.elements),fa&&m.uniform1f(h.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Ca&&(Ca=a);if(d.skinning)if(Ib&&e.skeleton.useVertexTexture){if(null!==h.boneTexture){var l=z();m.uniform1i(h.boneTexture,l);P.setTexture(e.skeleton.boneTexture,l)}null!==h.boneTextureWidth&&m.uniform1i(h.boneTextureWidth,e.skeleton.boneTextureWidth);null!==h.boneTextureHeight&&m.uniform1i(h.boneTextureHeight,e.skeleton.boneTextureHeight)}else null!==h.boneGlobalMatrices&&m.uniformMatrix4fv(h.boneGlobalMatrices,
|
|
|
|
+!1,e.skeleton.boneMatrices);if(f){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Xa){var n,p=l=0,r=0,q,s,t,u=Sb,w=u.directional.colors,v=u.directional.positions,x=u.point.colors,A=u.point.positions,D=u.point.distances,B=u.spot.colors,E=u.spot.positions,F=u.spot.distances,H=u.spot.directions,
|
|
|
|
+K=u.spot.anglesCos,L=u.spot.exponents,Q=u.hemi.skyColors,O=u.hemi.groundColors,ta=u.hemi.positions,X=0,R=0,W=0,$=0,Y=0,ya=0,va=0,Z=0,U=n=0;c=t=U=0;for(f=b.length;c<f;c++)if(n=b[c],!n.onlyShadow)if(q=n.color,s=n.intensity,t=n.distance,n instanceof THREE.AmbientLight)n.visible&&(P.gammaInput?(l+=q.r*q.r,p+=q.g*q.g,r+=q.b*q.b):(l+=q.r,p+=q.g,r+=q.b));else if(n instanceof THREE.DirectionalLight){if(Y+=1,n.visible&&(oa.setFromMatrixPosition(n.matrixWorld),xa.setFromMatrixPosition(n.target.matrixWorld),
|
|
|
|
+oa.sub(xa),oa.normalize(),0!==oa.x||0!==oa.y||0!==oa.z))n=3*X,v[n]=oa.x,v[n+1]=oa.y,v[n+2]=oa.z,P.gammaInput?C(w,n,q,s*s):y(w,n,q,s),X+=1}else n instanceof THREE.PointLight?(ya+=1,n.visible&&(U=3*R,P.gammaInput?C(x,U,q,s*s):y(x,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),A[U]=xa.x,A[U+1]=xa.y,A[U+2]=xa.z,D[R]=t,R+=1)):n instanceof THREE.SpotLight?(va+=1,n.visible&&(U=3*W,P.gammaInput?C(B,U,q,s*s):y(B,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),E[U]=xa.x,E[U+1]=xa.y,E[U+2]=xa.z,F[W]=t,oa.copy(xa),
|
|
|
|
+xa.setFromMatrixPosition(n.target.matrixWorld),oa.sub(xa),oa.normalize(),H[U]=oa.x,H[U+1]=oa.y,H[U+2]=oa.z,K[W]=Math.cos(n.angle),L[W]=n.exponent,W+=1)):n instanceof THREE.HemisphereLight&&(Z+=1,n.visible&&(oa.setFromMatrixPosition(n.matrixWorld),oa.normalize(),0!==oa.x||0!==oa.y||0!==oa.z))&&(t=3*$,ta[t]=oa.x,ta[t+1]=oa.y,ta[t+2]=oa.z,q=n.color,n=n.groundColor,P.gammaInput?(s*=s,C(Q,t,q,s),C(O,t,n,s)):(y(Q,t,q,s),y(O,t,n,s)),$+=1);c=3*X;for(f=Math.max(w.length,3*Y);c<f;c++)w[c]=0;c=3*R;for(f=Math.max(x.length,
|
|
|
|
+3*ya);c<f;c++)x[c]=0;c=3*W;for(f=Math.max(B.length,3*va);c<f;c++)B[c]=0;c=3*$;for(f=Math.max(Q.length,3*Z);c<f;c++)Q[c]=0;c=3*$;for(f=Math.max(O.length,3*Z);c<f;c++)O[c]=0;u.directional.length=X;u.point.length=R;u.spot.length=W;u.hemi.length=$;u.ambient[0]=l;u.ambient[1]=p;u.ambient[2]=r;Xa=!1}c=Sb;k.ambientLightColor.value=c.ambient;k.directionalLightColor.value=c.directional.colors;k.directionalLightDirection.value=c.directional.positions;k.pointLightColor.value=c.point.colors;k.pointLightPosition.value=
|
|
|
|
+c.point.positions;k.pointLightDistance.value=c.point.distances;k.spotLightColor.value=c.spot.colors;k.spotLightPosition.value=c.spot.positions;k.spotLightDistance.value=c.spot.distances;k.spotLightDirection.value=c.spot.directions;k.spotLightAngleCos.value=c.spot.anglesCos;k.spotLightExponent.value=c.spot.exponents;k.hemisphereLightSkyColor.value=c.hemi.skyColors;k.hemisphereLightGroundColor.value=c.hemi.groundColors;k.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||
|
|
|
|
+d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){k.opacity.value=d.opacity;P.gammaInput?k.diffuse.value.copyGammaToLinear(d.color):k.diffuse.value=d.color;k.map.value=d.map;k.lightMap.value=d.lightMap;k.specularMap.value=d.specularMap;d.bumpMap&&(k.bumpMap.value=d.bumpMap,k.bumpScale.value=d.bumpScale);d.normalMap&&(k.normalMap.value=d.normalMap,k.normalScale.value.copy(d.normalScale));var S;d.map?S=d.map:d.specularMap?S=d.specularMap:d.normalMap?S=d.normalMap:d.bumpMap&&
|
|
|
|
+(S=d.bumpMap);void 0!==S&&(c=S.offset,S=S.repeat,k.offsetRepeat.value.set(c.x,c.y,S.x,S.y));k.envMap.value=d.envMap;k.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;k.reflectivity.value=d.reflectivity;k.refractionRatio.value=d.refractionRatio;k.combine.value=d.combine;k.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?
|
|
|
|
+(k.diffuse.value=d.color,k.opacity.value=d.opacity,k.dashSize.value=d.dashSize,k.totalSize.value=d.dashSize+d.gapSize,k.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(k.psColor.value=d.color,k.opacity.value=d.opacity,k.size.value=d.size,k.scale.value=J.height/2,k.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(k.shininess.value=d.shininess,P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive),k.specular.value.copyGammaToLinear(d.specular)):
|
|
|
|
+(k.ambient.value=d.ambient,k.emissive.value=d.emissive,k.specular.value=d.specular),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(k.mNear.value=a.near,k.mFar.value=a.far,k.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&
|
|
|
|
+(k.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&k.shadowMatrix)for(c=S=0,f=b.length;c<f;c++)l=b[c],l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight&&!l.shadowCascade)&&(k.shadowMap.value[S]=l.shadowMap,k.shadowMapSize.value[S]=l.shadowMapSize,k.shadowMatrix.value[S]=l.shadowMatrix,k.shadowDarkness.value[S]=l.shadowDarkness,k.shadowBias.value[S]=l.shadowBias,S++);b=d.uniformsList;k=0;for(S=b.length;k<S;k++)if(f=g.uniforms[b[k][1]])if(c=b[k][0],p=c.type,
|
|
|
|
+l=c.value,"i"===p)m.uniform1i(f,l);else if("f"===p)m.uniform1f(f,l);else if("v2"===p)m.uniform2f(f,l.x,l.y);else if("v3"===p)m.uniform3f(f,l.x,l.y,l.z);else if("v4"===p)m.uniform4f(f,l.x,l.y,l.z,l.w);else if("c"===p)m.uniform3f(f,l.r,l.g,l.b);else if("iv1"===p)m.uniform1iv(f,l);else if("iv"===p)m.uniform3iv(f,l);else if("fv1"===p)m.uniform1fv(f,l);else if("fv"===p)m.uniform3fv(f,l);else if("v2v"===p){void 0===c._array&&(c._array=new Float32Array(2*l.length));p=0;for(r=l.length;p<r;p++)u=2*p,c._array[u]=
|
|
|
|
+l[p].x,c._array[u+1]=l[p].y;m.uniform2fv(f,c._array)}else if("v3v"===p){void 0===c._array&&(c._array=new Float32Array(3*l.length));p=0;for(r=l.length;p<r;p++)u=3*p,c._array[u]=l[p].x,c._array[u+1]=l[p].y,c._array[u+2]=l[p].z;m.uniform3fv(f,c._array)}else if("v4v"===p){void 0===c._array&&(c._array=new Float32Array(4*l.length));p=0;for(r=l.length;p<r;p++)u=4*p,c._array[u]=l[p].x,c._array[u+1]=l[p].y,c._array[u+2]=l[p].z,c._array[u+3]=l[p].w;m.uniform4fv(f,c._array)}else if("m3"===p)m.uniformMatrix3fv(f,
|
|
|
|
+!1,l.elements);else if("m3v"===p){void 0===c._array&&(c._array=new Float32Array(9*l.length));p=0;for(r=l.length;p<r;p++)l[p].flattenToArrayOffset(c._array,9*p);m.uniformMatrix3fv(f,!1,c._array)}else if("m4"===p)m.uniformMatrix4fv(f,!1,l.elements);else if("m4v"===p){void 0===c._array&&(c._array=new Float32Array(16*l.length));p=0;for(r=l.length;p<r;p++)l[p].flattenToArrayOffset(c._array,16*p);m.uniformMatrix4fv(f,!1,c._array)}else if("t"===p){if(u=l,l=z(),m.uniform1i(f,l),u)if(u instanceof THREE.CubeTexture||
|
|
|
|
+u.image instanceof Array&&6===u.image.length){if(c=u,f=l,6===c.image.length)if(c.needsUpdate){c.image.__webglTextureCube||(c.addEventListener("dispose",Db),c.image.__webglTextureCube=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+f);m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,c.flipY);f=c instanceof THREE.CompressedTexture;l=[];for(p=0;6>p;p++)P.autoScaleCubemaps&&!f?(r=l,u=p,w=c.image[p],x=pc,w.width<=x&&w.height<=x||(A=
|
|
|
|
+Math.max(w.width,w.height),v=Math.floor(w.width*x/A),x=Math.floor(w.height*x/A),A=document.createElement("canvas"),A.width=v,A.height=x,A.getContext("2d").drawImage(w,0,0,w.width,w.height,0,0,v,x),w=A),r[u]=w):l[p]=c.image[p];p=l[0];r=THREE.Math.isPowerOfTwo(p.width)&&THREE.Math.isPowerOfTwo(p.height);u=G(c.format);w=G(c.type);M(m.TEXTURE_CUBE_MAP,c,r);for(p=0;6>p;p++)if(f)for(x=l[p].mipmaps,A=0,D=x.length;A<D;A++)v=x[A],c.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
|
+p,A,u,v.width,v.height,0,v.data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+p,A,u,v.width,v.height,0,u,w,v.data);else m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+p,0,u,u,w,l[p]);c.generateMipmaps&&r&&m.generateMipmap(m.TEXTURE_CUBE_MAP);c.needsUpdate=!1;if(c.onUpdate)c.onUpdate()}else m.activeTexture(m.TEXTURE0+f),m.bindTexture(m.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}else u instanceof THREE.WebGLRenderTargetCube?(c=u,m.activeTexture(m.TEXTURE0+l),m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture)):
|
|
|
|
+P.setTexture(u,l)}else if("tv"===p){void 0===c._array&&(c._array=[]);p=0;for(r=c.value.length;p<r;p++)c._array[p]=z();m.uniform1iv(f,c._array);p=0;for(r=c.value.length;p<r;p++)u=c.value[p],l=c._array[p],u&&P.setTexture(u,l)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+p);(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==h.cameraPosition&&(xa.setFromMatrixPosition(a.matrixWorld),m.uniform3f(h.cameraPosition,xa.x,xa.y,xa.z));(d instanceof
|
|
|
|
+THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==h.viewMatrix&&m.uniformMatrix4fv(h.viewMatrix,!1,a.matrixWorldInverse.elements)}m.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrix.elements);h.normalMatrix&&m.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrix.elements);null!==h.modelMatrix&&m.uniformMatrix4fv(h.modelMatrix,!1,e.matrixWorld.elements);return g}function z(){var a=qa;a>=Jb&&console.warn("WebGLRenderer: trying to use "+
|
|
|
|
+a+" texture units while this GPU supports only "+Jb);qa+=1;return a}function C(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function Q(a){a!==ga&&(m.lineWidth(a),ga=a)}function E(a,b,c){na!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),na=a);!a||Ma===b&&wa===c||(m.polygonOffset(b,c),Ma=b,wa=c)}function M(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,G(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,G(b.wrapT)),
|
|
|
|
+m.texParameteri(a,m.TEXTURE_MAG_FILTER,G(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,G(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,H(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,H(b.minFilter)));ab&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,ab.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Kb)),b.__oldAnisotropy=b.anisotropy)}
|
|
|
|
+function W(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function H(a){return a===
|
|
|
|
+THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?m.NEAREST:m.LINEAR}function G(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;
|
|
|
|
+if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;
|
|
|
|
+if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;if(a===THREE.FloatType)return m.FLOAT;if(a===THREE.AlphaFormat)return m.ALPHA;if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;
|
|
|
|
+if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===THREE.SrcColorFactor)return m.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;
|
|
|
|
+if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;if(void 0!==Ta){if(a===THREE.RGB_S3TC_DXT1_Format)return Ta.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var J=void 0!==a.canvas?a.canvas:document.createElement("canvas"),
|
|
|
|
+K=void 0!==a.context?a.context:null,X=void 0!==a.precision?a.precision:"highp",L=void 0!==a.alpha?a.alpha:!1,ha=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,Z=void 0!==a.antialias?a.antialias:!1,O=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ia=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,fa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Y=new THREE.Color(0),ta=0,va=[],ya=[],za=!0;this.domElement=J;this.context=null;this.devicePixelRatio=void 0!==
|
|
|
|
+a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=
|
|
|
|
+[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var P=this,Aa=[],Ia=null,La=null,Ba=-1,Ga=null,Ca=null,qa=0,da=-1,ja=-1,Ja=-1,S=-1,U=-1,ma=-1,ra=-1,Ka=-1,na=null,Ma=null,wa=null,ga=null,Fa=0,Ha=0,Na=J.width,ub=J.height,Pb=0,Qb=0,vb=new Uint8Array(16),bb=new Uint8Array(16),gc=new THREE.Frustum,Rb=new THREE.Matrix4,hc=new THREE.Matrix4,xa=new THREE.Vector3,oa=new THREE.Vector3,Xa=!0,Sb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},
|
|
|
|
+point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,nb,ob,ab,Ta,rb;(function(){try{var a={alpha:L,depth:ha,stencil:R,antialias:Z,premultipliedAlpha:O,preserveDrawingBuffer:ia};m=K||J.getContext("webgl",a)||J.getContext("experimental-webgl",a);if(null===m)throw"Error creating WebGL context.";}catch(b){console.error(b)}nb=m.getExtension("OES_texture_float");
|
|
|
|
+m.getExtension("OES_texture_float_linear");ob=m.getExtension("OES_standard_derivatives");ab=m.getExtension("EXT_texture_filter_anisotropic")||m.getExtension("MOZ_EXT_texture_filter_anisotropic")||m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Ta=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");rb=m.getExtension("OES_element_index_uint");null===nb&&console.log("THREE.WebGLRenderer: Float textures not supported.");
|
|
|
|
+null===ob&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===ab&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");null===Ta&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===rb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});fa&&m.getExtension("EXT_frag_depth")})();
|
|
|
|
+m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);m.enable(m.BLEND);m.blendEquation(m.FUNC_ADD);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);m.viewport(Fa,Ha,Na,ub);m.clearColor(Y.r,Y.g,Y.b,ta);this.context=m;var Jb=m.getParameter(m.MAX_TEXTURE_IMAGE_UNITS),qc=m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS);m.getParameter(m.MAX_TEXTURE_SIZE);var pc=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),
|
|
|
|
+Kb=ab?m.getParameter(ab.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,Lb=0<qc,Ib=Lb&&nb;Ta&&m.getParameter(m.COMPRESSED_TEXTURE_FORMATS);var rc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.HIGH_FLOAT),sc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.LOW_FLOAT);var zc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),Ac=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.LOW_FLOAT);var Bc=
|
|
|
|
+0<rc.precision&&0<zc.precision,Mb=0<sc.precision&&0<Ac.precision;"highp"!==X||Bc||(Mb?(X="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(X="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==X||Mb||(X="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){return m};this.supportsVertexTextures=function(){return Lb};this.supportsFloatTextures=function(){return nb};
|
|
|
|
+this.supportsStandardDerivatives=function(){return ob};this.supportsCompressedTextureS3TC=function(){return Ta};this.getMaxAnisotropy=function(){return Kb};this.getPrecision=function(){return X};this.setSize=function(a,b,c){J.width=a*this.devicePixelRatio;J.height=b*this.devicePixelRatio;!1!==c&&(J.style.width=a+"px",J.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Fa=a*this.devicePixelRatio;Ha=b*this.devicePixelRatio;Na=c*this.devicePixelRatio;ub=d*this.devicePixelRatio;
|
|
|
|
+m.viewport(Fa,Ha,Na,ub)};this.setScissor=function(a,b,c,d){m.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};this.enableScissorTest=function(a){a?m.enable(m.SCISSOR_TEST):m.disable(m.SCISSOR_TEST)};this.setClearColor=function(a,b){Y.set(a);ta=void 0!==b?b:1;m.clearColor(Y.r,Y.g,Y.b,ta)};this.setClearColorHex=function(a,b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,
|
|
|
|
+b)};this.getClearColor=function(){return Y};this.getClearAlpha=function(){return ta};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=m.COLOR_BUFFER_BIT;if(void 0===b||b)d|=m.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=m.STENCIL_BUFFER_BIT;m.clear(d)};this.clearColor=function(){m.clear(m.COLOR_BUFFER_BIT)};this.clearDepth=function(){m.clear(m.DEPTH_BUFFER_BIT)};this.clearStencil=function(){m.clear(m.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};
|
|
|
|
+this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){Ia=null;Ba=Ga=Ka=ra=Ja=-1;Xa=!0;ja=da=-1;Nb(a);this.shadowMapPlugin.update(a,b)};var Ob=function(a){a=a.target;a.removeEventListener("dispose",Ob);a.__webglInit=void 0;if(a instanceof THREE.BufferGeometry){a=a.attributes;for(var b in a)void 0!==a[b].buffer&&m.deleteBuffer(a[b].buffer);P.info.memory.geometries--}else if(void 0!==
|
|
|
|
+a.geometryGroups){b=0;for(var c=a.geometryGroupsList.length;b<c;b++){var d=a.geometryGroupsList[b];if(void 0!==d.numMorphTargets)for(var e=0,f=d.numMorphTargets;e<f;e++)m.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals)for(e=0,f=d.numMorphNormals;e<f;e++)m.deleteBuffer(d.__webglMorphNormalsBuffers[e]);dc(d)}}else dc(a)},Db=function(a){a=a.target;a.removeEventListener("dispose",Db);a.image&&a.image.__webglTextureCube?m.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&
|
|
|
|
+(a.__webglInit=!1,m.deleteTexture(a.__webglTexture));P.info.memory.textures--},ec=function(a){a=a.target;a.removeEventListener("dispose",ec);if(a&&a.__webglTexture)if(m.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)m.deleteFramebuffer(a.__webglFramebuffer[b]),m.deleteRenderbuffer(a.__webglRenderbuffer[b]);else m.deleteFramebuffer(a.__webglFramebuffer),m.deleteRenderbuffer(a.__webglRenderbuffer);P.info.memory.textures--},fc=function(a){a=a.target;a.removeEventListener("dispose",
|
|
|
|
+fc);Hb(a)},dc=function(a){void 0!==a.__webglVertexBuffer&&m.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&m.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&m.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&m.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&m.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&m.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&m.deleteBuffer(a.__webglSkinIndicesBuffer);
|
|
|
|
+void 0!==a.__webglSkinWeightsBuffer&&m.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&m.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&m.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&m.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)m.deleteBuffer(a.__webglCustomAttributesList[b].buffer);P.info.memory.geometries--},Hb=function(a){var b=a.program.program;
|
|
|
|
+if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=Aa.length;a<c;a++)if(d=Aa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=Aa.length;a<c;a++)d=Aa[a],d.program!==b&&e.push(d);Aa=e;m.deleteProgram(b);P.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){k();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),l(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,p,r,q,s,t,u,w=3*a.count;for(u=0;u<w;u+=9)t=a.normalArray,
|
|
|
|
+d=t[u],e=t[u+1],f=t[u+2],g=t[u+3],p=t[u+4],q=t[u+5],h=t[u+6],r=t[u+7],s=t[u+8],d=(d+g+h)/3,e=(e+p+r)/3,f=(f+q+s)/3,t[u]=d,t[u+1]=e,t[u+2]=f,t[u+3]=d,t[u+4]=e,t[u+5]=f,t[u+6]=d,t[u+7]=e,t[u+8]=f}m.bufferData(m.ARRAY_BUFFER,a.normalArray,m.DYNAMIC_DRAW);l(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),l(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),l(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));n();m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var g=B(a,b,c,d,f);a=g.attributes;b=e.attributes;c=!1;g=16777215*e.id+2*g.id+(d.wireframe?1:0);g!==Ga&&(Ga=g,c=!0);c&&k();if(f instanceof
|
|
|
|
+THREE.Mesh)if(g=b.index){var l,n;g.array instanceof Uint32Array?(l=m.UNSIGNED_INT,n=4):(l=m.UNSIGNED_SHORT,n=2);e=e.offsets;if(0===e.length)c&&(h(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer)),m.drawElements(m.TRIANGLES,g.array.length,l,0),P.info.render.calls++,P.info.render.vertices+=g.array.length,P.info.render.faces+=g.array.length/3;else{c=!0;for(var p=0,r=e.length;p<r;p++){var q=e[p].index;c&&(h(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer));m.drawElements(m.TRIANGLES,e[p].count,
|
|
|
|
+l,e[p].start*n);P.info.render.calls++;P.info.render.vertices+=e[p].count;P.info.render.faces+=e[p].count/3}}}else c&&h(d,a,b,0),d=e.attributes.position,m.drawArrays(m.TRIANGLES,0,d.array.length/3),P.info.render.calls++,P.info.render.vertices+=d.array.length/3,P.info.render.faces+=d.array.length/9;else if(f instanceof THREE.PointCloud)c&&h(d,a,b,0),d=b.position,m.drawArrays(m.POINTS,0,d.array.length/3),P.info.render.calls++,P.info.render.points+=d.array.length/3;else if(f instanceof THREE.Line)if(f=
|
|
|
|
+f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,Q(d.linewidth),g=b.index)if(g.array instanceof Uint32Array?(l=m.UNSIGNED_INT,n=4):(l=m.UNSIGNED_SHORT,n=2),e=e.offsets,0===e.length)c&&(h(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer)),m.drawElements(f,g.array.length,l,0),P.info.render.calls++,P.info.render.vertices+=g.array.length;else for(1<e.length&&(c=!0),p=0,r=e.length;p<r;p++)q=e[p].index,c&&(h(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,g.buffer)),m.drawElements(f,e[p].count,l,e[p].start*
|
|
|
|
+n),P.info.render.calls++,P.info.render.vertices+=e[p].count;else c&&h(d,a,b,0),d=b.position,m.drawArrays(f,0,d.array.length/3),P.info.render.calls++,P.info.render.points+=d.array.length/3}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,h;c=B(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==Ga&&(Ga=c,a=!0);a&&k();if(!d.morphTargets&&0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),l(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]),l(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),l(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var p=0;h=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;p<d.numSupportedMorphTargets&&
|
|
|
|
+p<h.length;)0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[h[p]]),l(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[h[p]]),l(c["morphNormal"+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[h[p]],p++}else{h=[];g=f.morphTargetInfluences;var r,q=g.length;for(r=0;r<q;r++)p=g[r],0<p&&h.push([p,
|
|
|
|
+r]);h.length>d.numSupportedMorphTargets?(h.sort(t),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(t):0===h.length&&h.push([0,0]);for(p=0;p<d.numSupportedMorphTargets;)h[p]?(r=h[p][1],0<=c["morphTarget"+p]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[r]),l(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[r]),l(c["morphNormal"+
|
|
|
|
+p]),m.vertexAttribPointer(c["morphNormal"+p],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[p]=g[r]):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,h=e.__webglCustomAttributesList.length;g<h;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(m.bindBuffer(m.ARRAY_BUFFER,c.buffer),l(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),l(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),l(b.normal),m.vertexAttribPointer(b.normal,3,m.FLOAT,!1,0,0));0<=b.tangent&&(m.bindBuffer(m.ARRAY_BUFFER,
|
|
|
|
+e.__webglTangentBuffer),l(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),l(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),l(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),l(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),l(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}n();f instanceof THREE.Mesh?
|
|
|
|
+(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(Q(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)),P.info.render.calls++,P.info.render.vertices+=e.__webglFaceCount,P.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,
|
|
|
|
+Q(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),P.info.render.calls++):f instanceof THREE.PointCloud&&(m.drawArrays(m.POINTS,0,e.__webglParticleCount),P.info.render.calls++,P.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,l=a.fog;Ba=-1;Xa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();
|
|
|
|
+b.matrixWorldInverse.getInverse(b.matrixWorld);Rb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);gc.setFromMatrix(Rb);Nb(a);va.length=0;ya.length=0;za=this.sortObjects;s(a,a,b);this.sortObjects&&(va.sort(q),ya.sort(r));p(this.renderPluginsPre,a,b);P.info.render.calls=0;P.info.render.vertices=0;P.info.render.faces=0;P.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);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),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),
|
|
|
|
+v(va,b,k,l,!0,d),v(ya,b,k,l,!0,d),u(a.__webglObjectsImmediate,"",b,k,l,!1,d)):(d=null,this.setBlending(THREE.NoBlending),v(va,b,k,l,!1,d),u(a.__webglObjectsImmediate,"opaque",b,k,l,!1,d),v(ya,b,k,l,!0,d),u(a.__webglObjectsImmediate,"transparent",b,k,l,!0,d));p(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);Ga=-1;P.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,gc):e.render(function(a){P.renderBufferImmediate(a,f,d)})};var Nb=function(a){a.__webglObjects||(a.__webglObjects={},a.__webglObjectsImmediate=[]);for(;a.__objectsAdded.length;){var c=
|
|
|
|
+a.__objectsAdded[0],d=a,e=void 0,f=void 0;void 0===c.__webglInit&&(c.__webglInit=!0,c._modelViewMatrix=new THREE.Matrix4,c._normalMatrix=new THREE.Matrix3);e=c.geometry;if(void 0!==e&&void 0===e.__webglInit)if(e.__webglInit=!0,e.addEventListener("dispose",Ob),e instanceof THREE.BufferGeometry)g(e);else if(c instanceof THREE.Mesh)void 0!==c.__webglActive&&F(c,d),w(d,c,e);else if(c instanceof THREE.Line){if(!e.__webglVertexBuffer){f=e;f.__webglVertexBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();
|
|
|
|
+f.__webglLineDistanceBuffer=m.createBuffer();P.info.memory.geometries++;var f=e,h=c,k=f.vertices.length;f.__vertexArray=new Float32Array(3*k);f.__colorArray=new Float32Array(3*k);f.__lineDistanceArray=new Float32Array(1*k);f.__webglLineCount=k;b(f,h);e.verticesNeedUpdate=!0;e.colorsNeedUpdate=!0;e.lineDistancesNeedUpdate=!0}}else c instanceof THREE.PointCloud&&!e.__webglVertexBuffer&&(f=e,f.__webglVertexBuffer=m.createBuffer(),f.__webglColorBuffer=m.createBuffer(),P.info.memory.geometries++,f=e,h=
|
|
|
|
+c,k=f.vertices.length,f.__vertexArray=new Float32Array(3*k),f.__colorArray=new Float32Array(3*k),f.__sortArray=[],f.__webglParticleCount=k,b(f,h),e.verticesNeedUpdate=!0,e.colorsNeedUpdate=!0);if(void 0===c.__webglActive){if(c instanceof THREE.Mesh)if(e=c.geometry,e instanceof THREE.BufferGeometry)A(d.__webglObjects,e,c);else{if(e instanceof THREE.Geometry)for(h=0,k=e.geometryGroupsList.length;h<k;h++)f=e.geometryGroupsList[h],A(d.__webglObjects,f,c)}else c instanceof THREE.Line||c instanceof THREE.PointCloud?
|
|
|
|
+(e=c.geometry,A(d.__webglObjects,e,c)):(c instanceof THREE.ImmediateRenderObject||c.immediateRenderCallback)&&d.__webglObjectsImmediate.push({id:null,object:c,opaque:null,transparent:null,z:0});c.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;)F(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1)};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",fc);var k,l,n,p;a instanceof THREE.MeshDepthMaterial?p="depth":a instanceof THREE.MeshNormalMaterial?
|
|
|
|
+p="normal":a instanceof THREE.MeshBasicMaterial?p="basic":a instanceof THREE.MeshLambertMaterial?p="lambert":a instanceof THREE.MeshPhongMaterial?p="phong":a instanceof THREE.LineBasicMaterial?p="basic":a instanceof THREE.LineDashedMaterial?p="dashed":a instanceof THREE.PointCloudMaterial&&(p="particle_basic");p&&(e=THREE.ShaderLib[p],a.uniforms=THREE.UniformsUtils.clone(e.uniforms),a.vertexShader=e.vertexShader,a.fragmentShader=e.fragmentShader);n=h=g=f=e=0;for(var r=b.length;n<r;n++){var q=b[n];
|
|
|
|
+q.onlyShadow||!1===q.visible||(q instanceof THREE.DirectionalLight&&e++,q instanceof THREE.PointLight&&f++,q instanceof THREE.SpotLight&&g++,q instanceof THREE.HemisphereLight&&h++)}r=n=0;for(q=b.length;r<q;r++){var s=b[r];s.castShadow&&(s instanceof THREE.SpotLight&&n++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Ib&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((n-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&
|
|
|
|
+(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));c={precision:X,supportsVertexTextures:Lb,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,logarithmicDepthBuffer:fa,
|
|
|
|
+skinning:a.skinning,maxBones:n,useVertexTexture:Ib&&d&&d.skeleton&&d.skeleton.useVertexTexture,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:b,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<b,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=[];p?d.push(p):(d.push(a.fragmentShader),d.push(a.vertexShader));for(var t in a.defines)d.push(t),d.push(a.defines[t]);for(l in c)d.push(l),d.push(c[l]);p=d.join();var u;l=0;for(t=Aa.length;l<t;l++)if(d=Aa[l],d.code===p){u=d;u.usedTimes++;break}void 0===u&&(u=new THREE.WebGLProgram(this,p,a,c),Aa.push(u),P.info.memory.programs=Aa.length);a.program=u;u=a.program.attributes;if(a.morphTargets)for(a.numSupportedMorphTargets=
|
|
|
|
+0,t="morphTarget",l=0;l<this.maxMorphTargets;l++)p=t+l,0<=u[p]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(a.numSupportedMorphNormals=0,t="morphNormal",l=0;l<this.maxMorphNormals;l++)p=t+l,0<=u[p]&&a.numSupportedMorphNormals++;a.uniformsList=[];for(k in a.uniforms)a.uniformsList.push([a.uniforms[k],k])};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):
|
|
|
|
+a===THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;da!==b&&(b?m.disable(m.CULL_FACE):m.enable(m.CULL_FACE),da=b);ja!==a&&(a?m.frontFace(m.CW):m.frontFace(m.CCW),ja=a)};this.setDepthTest=function(a){ra!==a&&(a?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST),ra=a)};this.setDepthWrite=function(a){Ka!==a&&(m.depthMask(a),Ka=a)};this.setBlending=function(a,b,c,d){a!==
|
|
|
|
+Ja&&(a===THREE.NoBlending?m.disable(m.BLEND):a===THREE.AdditiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.SRC_ALPHA,m.ONE)):a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,
|
|
|
|
+m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Ja=a);if(a===THREE.CustomBlending){if(b!==S&&(m.blendEquation(G(b)),S=b),c!==U||d!==ma)m.blendFunc(G(c),G(d)),U=c,ma=d}else ma=U=S=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",Db),a.__webglTexture=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,
|
|
|
|
+a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&THREE.Math.isPowerOfTwo(c.height),e=G(a.format),f=G(a.type);M(m.TEXTURE_2D,a,d);var g=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<g.length&&d){for(var h=0,k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(a instanceof THREE.CompressedTexture)for(h=
|
|
|
|
+0,k=g.length;h<k;h++)c=g[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);else if(0<g.length&&d){h=0;for(k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,e,f,c);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+b),m.bindTexture(m.TEXTURE_2D,
|
|
|
|
+a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",ec);a.__webglTexture=m.createTexture();P.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=G(a.format),e=G(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);
|
|
|
|
+M(m.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=m.createFramebuffer();a.__webglRenderbuffer[f]=m.createRenderbuffer();m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+f;m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer[f]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,h,g.__webglTexture,0);W(a.__webglRenderbuffer[f],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),
|
|
|
|
+a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),M(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):
|
|
|
|
+a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):W(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,null);m.bindRenderbuffer(m.RENDERBUFFER,null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Na,a=ub,d=Fa,e=Ha);b!==La&&(m.bindFramebuffer(m.FRAMEBUFFER,
|
|
|
|
+b),m.viewport(d,e,c,a),La=b);Pb=c;Qb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:
|
|
THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null};
|
|
THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null};
|
|
THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;
|
|
THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;
|
|
a.shareDepthFrom=this.shareDepthFrom;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.fragmentShader,h=d.vertexShader,k=d.uniforms,l=d.attributes,n=d.defines,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var r="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?r="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(r="SHADOWMAP_TYPE_PCF_SOFT");var t,s;t=[];for(var p in n)s=n[p],!1!==s&&(s="#define "+p+" "+s,t.push(s));t=t.join("\n");n=f.createProgram();d instanceof
|
|
a.shareDepthFrom=this.shareDepthFrom;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.fragmentShader,h=d.vertexShader,k=d.uniforms,l=d.attributes,n=d.defines,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var r="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?r="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(r="SHADOWMAP_TYPE_PCF_SOFT");var t,s;t=[];for(var p in n)s=n[p],!1!==s&&(s="#define "+p+" "+s,t.push(s));t=t.join("\n");n=f.createProgram();d instanceof
|