提交 3909abd1 编写于 作者: M Mr.doob

Updated builds.

上级 68269fb4
......@@ -8907,6 +8907,31 @@ THREE.BufferAttribute.prototype = {
return this;
},
clone: function () {
var attribute = new THREE.BufferAttribute( null, this.itemSize );
var types = [ Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array ];
var sourceArray = this.array;
for ( var i = 0, il = types.length; i < il; i ++ ) {
var type = types[ i ];
if ( sourceArray instanceof type ) {
attribute.array = new type( sourceArray );
break;
}
}
return attribute;
}
};
......@@ -9910,34 +9935,10 @@ THREE.BufferGeometry.prototype = {
var geometry = new THREE.BufferGeometry();
var types = [ Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array ];
for ( var attr in this.attributes ) {
var sourceAttr = this.attributes[ attr ];
var sourceArray = sourceAttr.array;
var attribute = {
itemSize: sourceAttr.itemSize,
array: null
};
for ( var i = 0, il = types.length; i < il; i ++ ) {
var type = types[ i ];
if ( sourceArray instanceof type ) {
attribute.array = new type( sourceArray );
break;
}
}
geometry.attributes[ attr ] = attribute;
geometry.addAttribute( attr, sourceAttr.clone() );
}
......@@ -19748,6 +19749,7 @@ THREE.WebGLRenderer = function ( parameters ) {
this.addPostPlugin = function ( plugin ) {
plugin.init( this, lights, _webglObjects, _webglObjectsImmediate );
this.renderPluginsPost.push( plugin );
};
......@@ -19755,6 +19757,7 @@ THREE.WebGLRenderer = function ( parameters ) {
this.addPrePlugin = function ( plugin ) {
plugin.init( this, lights, _webglObjects, _webglObjectsImmediate );
this.renderPluginsPre.push( plugin );
};
......@@ -22486,7 +22489,6 @@ THREE.WebGLRenderer = function ( parameters ) {
};
// Rendering
this.render = function ( scene, camera, renderTarget, forceClear ) {
......@@ -22707,38 +22709,8 @@ THREE.WebGLRenderer = function ( parameters ) {
for ( var i = 0, il = plugins.length; i < il; i ++ ) {
// reset state for plugin (to start from clean slate)
_currentProgram = null;
_currentCamera = null;
_oldBlending = - 1;
_oldDepthTest = - 1;
_oldDepthWrite = - 1;
_oldDoubleSided = - 1;
_oldFlipSided = - 1;
_currentGeometryGroupHash = - 1;
_currentMaterialId = - 1;
_lightsNeedUpdate = true;
plugins[ i ].render( scene, camera, _currentWidth, _currentHeight );
// reset state after plugin (anything could have changed)
_currentProgram = null;
_currentCamera = null;
_oldBlending = - 1;
_oldDepthTest = - 1;
_oldDepthWrite = - 1;
_oldDoubleSided = - 1;
_oldFlipSided = - 1;
_currentGeometryGroupHash = - 1;
_currentMaterialId = - 1;
_lightsNeedUpdate = true;
}
};
......@@ -25578,7 +25550,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function setDefaultGLState () {
......@@ -25601,7 +25573,26 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );
};
}
function resetGLState() {
_currentProgram = null;
_currentCamera = null;
_oldBlending = - 1;
_oldDepthTest = - 1;
_oldDepthWrite = - 1;
_oldDoubleSided = - 1;
_oldFlipSided = - 1;
_currentGeometryGroupHash = - 1;
_currentMaterialId = - 1;
_lightsNeedUpdate = true;
}
this.resetGLState = resetGLState;
// default plugins (order is important)
......@@ -35266,6 +35257,8 @@ THREE.LensFlarePlugin = function () {
_gl.enable( _gl.DEPTH_TEST );
_gl.depthMask( true );
_renderer.resetGLState();
};
function createProgram ( shader, precision ) {
......@@ -35343,7 +35336,7 @@ THREE.ShadowMapPlugin = function () {
this.render = function ( scene, camera ) {
if ( ! ( _renderer.shadowMapEnabled && _renderer.shadowMapAutoUpdate ) ) return;
if ( _renderer.shadowMapEnabled === false || _renderer.shadowMapAutoUpdate === false ) return;
this.update( scene, camera );
......@@ -35628,6 +35621,8 @@ THREE.ShadowMapPlugin = function () {
}
_renderer.resetGLState();
};
function projectObject(scene, object,shadowCamera){
......
......@@ -176,22 +176,22 @@ r.z=(n.positionScreen.z+p.positionScreen.z+t.positionScreen.z)/3;for(n=0;3>n;n++
V);I.setFromMatrix(J);h=0;N.objects.length=0;N.lights.length=0;n.traverseVisible(function(a){if(a instanceof THREE.Light)N.lights.push(a);else if((a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Sprite)&&!1!==a.material.visible&&(!1===a.frustumCulled||!0===I.intersectsObject(a))){if(h===m){var b=new THREE.RenderableObject;k.push(b);m++;h++;f=b}else f=k[h++];f.id=a.id;f.object=a;null!==a.renderDepth?f.z=a.renderDepth:(M.setFromMatrixPosition(a.matrixWorld),M.applyProjection(J),
f.z=M.z);N.objects.push(f)}});!0===v&&N.objects.sort(e);n=0;for(v=N.objects.length;n<v;n++){var y=N.objects[n].object,w=y.geometry;ca.setObject(y);Y=y.matrixWorld;q=0;if(y instanceof THREE.Mesh)if(w instanceof THREE.BufferGeometry){var z=w.attributes,y=w.offsets;if(void 0!==z.position){for(var A=z.position.array,w=0,G=A.length;w<G;w+=3)ca.pushVertex(A[w],A[w+1],A[w+2]);if(void 0!==z.normal)for(var L=z.normal.array,w=0,G=L.length;w<G;w+=3)ca.pushNormal(L[w],L[w+1],L[w+2]);if(void 0!==z.uv)for(L=z.uv.array,
w=0,G=L.length;w<G;w+=2)ca.pushUv(L[w],L[w+1]);if(void 0!==z.index)if(z=z.index.array,0<y.length)for(n=0;n<y.length;n++)for(G=y[n],A=G.index,w=G.start,G=G.start+G.count;w<G;w+=3)ca.pushTriangle(z[w]+A,z[w+1]+A,z[w+2]+A);else for(w=0,G=z.length;w<G;w+=3)ca.pushTriangle(z[w],z[w+1],z[w+2]);else for(w=0,G=A.length/3;w<G;w+=3)ca.pushTriangle(w,w+1,w+2)}}else{if(w instanceof THREE.Geometry){var T=w.vertices,G=w.faces,z=w.faceVertexUvs[0];na.getNormalMatrix(Y);for(var A=y.material instanceof THREE.MeshFaceMaterial,
L=!0===A?y.material:null,C=0,qa=T.length;C<qa;C++){var oa=T[C];ca.pushVertex(oa.x,oa.y,oa.z)}T=0;for(C=G.length;T<C;T++){var qa=G[T],Za=!0===A?L.materials[qa.materialIndex]:y.material;if(void 0!==Za){var Ha=Za.side,oa=s[qa.a],ya=s[qa.b],Ia=s[qa.c];if(!0===Za.morphTargets){var ua=w.morphTargets,ka=y.morphTargetInfluences,da=oa.position,xa=ya.position,ta=Ia.position;P.set(0,0,0);K.set(0,0,0);R.set(0,0,0);for(var Sa=0,pb=ua.length;Sa<pb;Sa++){var Na=ka[Sa];if(0!==Na){var Ca=ua[Sa].vertices;P.x+=(Ca[qa.a].x-
da.x)*Na;P.y+=(Ca[qa.a].y-da.y)*Na;P.z+=(Ca[qa.a].z-da.z)*Na;K.x+=(Ca[qa.b].x-xa.x)*Na;K.y+=(Ca[qa.b].y-xa.y)*Na;K.z+=(Ca[qa.b].z-xa.z)*Na;R.x+=(Ca[qa.c].x-ta.x)*Na;R.y+=(Ca[qa.c].y-ta.y)*Na;R.z+=(Ca[qa.c].z-ta.z)*Na}}oa.position.add(P);ya.position.add(K);Ia.position.add(R);ca.projectVertex(oa);ca.projectVertex(ya);ca.projectVertex(Ia)}if(!1!==ca.checkTriangleVisibility(oa,ya,Ia)){ua=ca.checkBackfaceCulling(oa,ya,Ia);if(Ha!==THREE.DoubleSide){if(Ha===THREE.FrontSide&&!1===ua)continue;if(Ha===THREE.BackSide&&
!0===ua)continue}r=b();r.id=y.id;r.v1.copy(oa);r.v2.copy(ya);r.v3.copy(Ia);r.normalModel.copy(qa.normal);!1!==ua||Ha!==THREE.BackSide&&Ha!==THREE.DoubleSide||r.normalModel.negate();r.normalModel.applyMatrix3(na).normalize();ka=qa.vertexNormals;da=0;for(xa=Math.min(ka.length,3);da<xa;da++)ta=r.vertexNormalsModel[da],ta.copy(ka[da]),!1!==ua||Ha!==THREE.BackSide&&Ha!==THREE.DoubleSide||ta.negate(),ta.applyMatrix3(na).normalize();r.vertexNormalsLength=ka.length;Ha=z[T];if(void 0!==Ha)for(ua=0;3>ua;ua++)r.uvs[ua].copy(Ha[ua]);
r.color=qa.color;r.material=Za;r.z=(oa.positionScreen.z+ya.positionScreen.z+Ia.positionScreen.z)/3;N.elements.push(r)}}}}}else if(y instanceof THREE.Line)if(w instanceof THREE.BufferGeometry){if(z=w.attributes,void 0!==z.position){A=z.position.array;w=0;for(G=A.length;w<G;w+=3)ca.pushVertex(A[w],A[w+1],A[w+2]);if(void 0!==z.index)for(z=z.index.array,w=0,G=z.length;w<G;w+=2)ca.pushLine(z[w],z[w+1]);else for(z=y.type===THREE.LinePieces?2:1,w=0,G=A.length/3-1;w<G;w+=z)ca.pushLine(w,w+1)}}else{if(w instanceof
THREE.Geometry&&(aa.multiplyMatrices(J,Y),T=y.geometry.vertices,0!==T.length))for(oa=a(),oa.positionScreen.copy(T[0]).applyMatrix4(aa),z=y.type===THREE.LinePieces?2:1,C=1,qa=T.length;C<qa;C++)oa=a(),oa.positionScreen.copy(T[C]).applyMatrix4(aa),0<(C+1)%z||(ya=s[q-2],ba.copy(oa.positionScreen),Q.copy(ya.positionScreen),!0===g(ba,Q)&&(ba.multiplyScalar(1/ba.w),Q.multiplyScalar(1/Q.w),u=c(),u.id=y.id,u.v1.positionScreen.copy(ba),u.v2.positionScreen.copy(Q),u.z=Math.max(ba.z,Q.z),u.material=y.material,
L=!0===A?y.material:null,C=0,qa=T.length;C<qa;C++){var pa=T[C];ca.pushVertex(pa.x,pa.y,pa.z)}T=0;for(C=G.length;T<C;T++){var qa=G[T],cb=!0===A?L.materials[qa.materialIndex]:y.material;if(void 0!==cb){var Ha=cb.side,pa=s[qa.a],Ea=s[qa.b],La=s[qa.c];if(!0===cb.morphTargets){var va=w.morphTargets,ya=y.morphTargetInfluences,da=pa.position,xa=Ea.position,Qa=La.position;P.set(0,0,0);K.set(0,0,0);R.set(0,0,0);for(var Va=0,pb=va.length;Va<pb;Va++){var ta=ya[Va];if(0!==ta){var ka=va[Va].vertices;P.x+=(ka[qa.a].x-
da.x)*ta;P.y+=(ka[qa.a].y-da.y)*ta;P.z+=(ka[qa.a].z-da.z)*ta;K.x+=(ka[qa.b].x-xa.x)*ta;K.y+=(ka[qa.b].y-xa.y)*ta;K.z+=(ka[qa.b].z-xa.z)*ta;R.x+=(ka[qa.c].x-Qa.x)*ta;R.y+=(ka[qa.c].y-Qa.y)*ta;R.z+=(ka[qa.c].z-Qa.z)*ta}}pa.position.add(P);Ea.position.add(K);La.position.add(R);ca.projectVertex(pa);ca.projectVertex(Ea);ca.projectVertex(La)}if(!1!==ca.checkTriangleVisibility(pa,Ea,La)){va=ca.checkBackfaceCulling(pa,Ea,La);if(Ha!==THREE.DoubleSide){if(Ha===THREE.FrontSide&&!1===va)continue;if(Ha===THREE.BackSide&&
!0===va)continue}r=b();r.id=y.id;r.v1.copy(pa);r.v2.copy(Ea);r.v3.copy(La);r.normalModel.copy(qa.normal);!1!==va||Ha!==THREE.BackSide&&Ha!==THREE.DoubleSide||r.normalModel.negate();r.normalModel.applyMatrix3(na).normalize();ya=qa.vertexNormals;da=0;for(xa=Math.min(ya.length,3);da<xa;da++)Qa=r.vertexNormalsModel[da],Qa.copy(ya[da]),!1!==va||Ha!==THREE.BackSide&&Ha!==THREE.DoubleSide||Qa.negate(),Qa.applyMatrix3(na).normalize();r.vertexNormalsLength=ya.length;Ha=z[T];if(void 0!==Ha)for(va=0;3>va;va++)r.uvs[va].copy(Ha[va]);
r.color=qa.color;r.material=cb;r.z=(pa.positionScreen.z+Ea.positionScreen.z+La.positionScreen.z)/3;N.elements.push(r)}}}}}else if(y instanceof THREE.Line)if(w instanceof THREE.BufferGeometry){if(z=w.attributes,void 0!==z.position){A=z.position.array;w=0;for(G=A.length;w<G;w+=3)ca.pushVertex(A[w],A[w+1],A[w+2]);if(void 0!==z.index)for(z=z.index.array,w=0,G=z.length;w<G;w+=2)ca.pushLine(z[w],z[w+1]);else for(z=y.type===THREE.LinePieces?2:1,w=0,G=A.length/3-1;w<G;w+=z)ca.pushLine(w,w+1)}}else{if(w instanceof
THREE.Geometry&&(aa.multiplyMatrices(J,Y),T=y.geometry.vertices,0!==T.length))for(pa=a(),pa.positionScreen.copy(T[0]).applyMatrix4(aa),z=y.type===THREE.LinePieces?2:1,C=1,qa=T.length;C<qa;C++)pa=a(),pa.positionScreen.copy(T[C]).applyMatrix4(aa),0<(C+1)%z||(Ea=s[q-2],ba.copy(pa.positionScreen),Q.copy(Ea.positionScreen),!0===g(ba,Q)&&(ba.multiplyScalar(1/ba.w),Q.multiplyScalar(1/Q.w),u=c(),u.id=y.id,u.v1.positionScreen.copy(ba),u.v2.positionScreen.copy(Q),u.z=Math.max(ba.z,Q.z),u.material=y.material,
y.material.vertexColors===THREE.VertexColors&&(u.vertexColors[0].copy(y.geometry.colors[C]),u.vertexColors[1].copy(y.geometry.colors[C-1])),N.elements.push(u)))}else y instanceof THREE.Sprite&&(H.set(Y.elements[12],Y.elements[13],Y.elements[14],1),H.applyMatrix4(J),w=1/H.w,H.z*=w,-1<=H.z&&1>=H.z&&(B=d(),B.id=y.id,B.x=H.x*w,B.y=H.y*w,B.z=H.z,B.object=y,B.rotation=y.rotation,B.scale.x=y.scale.x*Math.abs(B.x-(H.x+t.projectionMatrix.elements[0])/(H.w+t.projectionMatrix.elements[12])),B.scale.y=y.scale.y*
Math.abs(B.y-(H.y+t.projectionMatrix.elements[5])/(H.w+t.projectionMatrix.elements[13])),B.material=y.material,N.elements.push(B)))}!0===x&&N.elements.sort(e);return N}};THREE.Face3=function(a,b,c,d,e,g){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==g?g:0};
THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.materialIndex=this.materialIndex;for(var b=0,c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();return a}};
THREE.Face4=function(a,b,c,d,e,g,f){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new THREE.Face3(a,b,c,e,g,f)};THREE.BufferAttribute=function(a,b){this.array=a;this.itemSize=b;this.needsUpdate=!1};
THREE.BufferAttribute.prototype={constructor:THREE.BufferAttribute,get length(){return this.array.length},copyAt:function(a,b,c){a*=this.itemSize;c*=b.itemSize;for(var d=0,e=this.itemSize;d<e;d++)this.array[a+d]=b.array[c+d]},set:function(a){this.array.set(a);return this},setX:function(a,b){this.array[a*this.itemSize]=b;return this},setY:function(a,b){this.array[a*this.itemSize+1]=b;return this},setZ:function(a,b){this.array[a*this.itemSize+2]=b;return this},setXY:function(a,b,c){a*=this.itemSize;
this.array[a]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this}};THREE.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Uint8Attribute=function(a,b){console.warn("THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint8ClampedAttribute=function(a,b){console.warn("THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Int16Attribute=function(a,b){console.warn("THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint16Attribute=function(a,b){console.warn("THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Int32Attribute=function(a,b){console.warn("THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint32Attribute=function(a,b){console.warn("THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Float32Attribute=function(a,b){console.warn("THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Float64Attribute=function(a,b){console.warn("THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.BufferGeometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.attributes={};this.attributesKeys=[];this.offsets=this.drawcalls=[];this.boundingSphere=this.boundingBox=null};
this.array[a]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this},clone:function(){for(var a=new THREE.BufferAttribute(null,this.itemSize),b=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],c=this.array,d=0,e=b.length;d<e;d++){var g=
b[d];if(c instanceof g){a.array=new g(c);break}}return a}};THREE.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint8Attribute=function(a,b){console.warn("THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Uint8ClampedAttribute=function(a,b){console.warn("THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int16Attribute=function(a,b){console.warn("THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Uint16Attribute=function(a,b){console.warn("THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int32Attribute=function(a,b){console.warn("THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Uint32Attribute=function(a,b){console.warn("THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Float32Attribute=function(a,b){console.warn("THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};
THREE.Float64Attribute=function(a,b){console.warn("THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.BufferGeometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.attributes={};this.attributesKeys=[];this.offsets=this.drawcalls=[];this.boundingSphere=this.boundingBox=null};
THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,addAttribute:function(a,b,c){!1===b instanceof THREE.BufferAttribute?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.attributes[a]={array:b,itemSize:c}):(this.attributes[a]=b,this.attributesKeys=Object.keys(this.attributes))},getAttribute:function(a){return this.attributes[a]},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},applyMatrix:function(a){var b=
this.attributes.position;void 0!==b&&(a.applyToVector3Array(b.array),b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new THREE.Matrix3).getNormalMatrix(a).applyToVector3Array(b.array),b.needsUpdate=!0)},fromGeometry:function(a,b){b=b||{vertexColors:THREE.NoColors};var c=a.vertices,d=a.faces,e=a.faceVertexUvs,g=b.vertexColors,f=0<e[0].length,h=3==d[0].vertexNormals.length,k=new Float32Array(9*d.length);this.addAttribute("position",new THREE.BufferAttribute(k,3));var m=new Float32Array(9*d.length);
this.addAttribute("normal",new THREE.BufferAttribute(m,3));if(g!==THREE.NoColors){var n=new Float32Array(9*d.length);this.addAttribute("color",new THREE.BufferAttribute(n,3))}if(!0===f){var q=new Float32Array(6*d.length);this.addAttribute("uv",new THREE.BufferAttribute(q,2))}for(var s=0,t=0,r=0;s<d.length;s++,t+=6,r+=9){var p=d[s],v=c[p.a],x=c[p.b],u=c[p.c];k[r]=v.x;k[r+1]=v.y;k[r+2]=v.z;k[r+3]=x.x;k[r+4]=x.y;k[r+5]=x.z;k[r+6]=u.x;k[r+7]=u.y;k[r+8]=u.z;!0===h?(v=p.vertexNormals[0],x=p.vertexNormals[1],
......@@ -202,15 +202,14 @@ if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,g=c.length;e<g;e+=3
this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,g,f,h,k,m,n,q=new THREE.Vector3,s=new THREE.Vector3,t=new THREE.Vector3,r=new THREE.Vector3,p=new THREE.Vector3;if(a.index)for(var v=a.index.array,x=0<this.offsets.length?this.offsets:[{start:0,count:v.length,index:0}],u=0,E=x.length;u<E;++u){e=x[u].start;g=x[u].count;
for(var y=x[u].index,d=e,e=e+g;d<e;d+=3)g=y+v[d],f=y+v[d+1],h=y+v[d+2],k=b[3*g],m=b[3*g+1],n=b[3*g+2],q.set(k,m,n),k=b[3*f],m=b[3*f+1],n=b[3*f+2],s.set(k,m,n),k=b[3*h],m=b[3*h+1],n=b[3*h+2],t.set(k,m,n),r.subVectors(t,s),p.subVectors(q,s),r.cross(p),c[3*g]+=r.x,c[3*g+1]+=r.y,c[3*g+2]+=r.z,c[3*f]+=r.x,c[3*f+1]+=r.y,c[3*f+2]+=r.z,c[3*h]+=r.x,c[3*h+1]+=r.y,c[3*h+2]+=r.z}else for(d=0,e=b.length;d<e;d+=9)k=b[d],m=b[d+1],n=b[d+2],q.set(k,m,n),k=b[d+3],m=b[d+4],n=b[d+5],s.set(k,m,n),k=b[d+6],m=b[d+7],n=
b[d+8],t.set(k,m,n),r.subVectors(t,s),p.subVectors(q,s),r.cross(p),c[d]=r.x,c[d+1]=r.y,c[d+2]=r.z,c[d+3]=r.x,c[d+4]=r.y,c[d+5]=r.z,c[d+6]=r.x,c[d+7]=r.y,c[d+8]=r.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){q=d[3*a];s=d[3*a+1];t=d[3*a+2];r=d[3*b];p=d[3*b+1];v=d[3*b+2];x=d[3*c];u=d[3*c+1];E=d[3*c+2];y=g[2*a];z=g[2*a+1];B=g[2*b];D=g[2*b+1];w=g[2*c];A=g[2*c+1];N=r-q;P=x-q;K=p-s;R=u-s;M=v-t;H=E-t;C=B-y;T=w-y;L=D-z;V=A-z;J=1/(C*V-T*L);Y.set((V*N-L*P)*
J,(V*K-L*R)*J,(V*M-L*H)*J);aa.set((C*P-T*N)*J,(C*R-T*K)*J,(C*H-T*M)*J);k[a].add(Y);k[b].add(Y);k[c].add(Y);m[a].add(aa);m[b].add(aa);m[c].add(aa)}function b(a){La.x=e[3*a];La.y=e[3*a+1];La.z=e[3*a+2];la.copy(La);sa=k[a];Oa.copy(sa);Oa.sub(La.multiplyScalar(La.dot(sa))).normalize();Pa.crossVectors(la,sa);G=Pa.dot(m[a]);bb=0>G?-1:1;h[4*a]=Oa.x;h[4*a+1]=Oa.y;h[4*a+2]=Oa.z;h[4*a+3]=bb}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
J,(V*K-L*R)*J,(V*M-L*H)*J);aa.set((C*P-T*N)*J,(C*R-T*K)*J,(C*H-T*M)*J);k[a].add(Y);k[b].add(Y);k[c].add(Y);m[a].add(aa);m[b].add(aa);m[c].add(aa)}function b(a){Ka.x=e[3*a];Ka.y=e[3*a+1];Ka.z=e[3*a+2];la.copy(Ka);sa=k[a];Na.copy(sa);Na.sub(Ka.multiplyScalar(Ka.dot(sa))).normalize();Oa.crossVectors(la,sa);G=Oa.dot(m[a]);ab=0>G?-1:1;h[4*a]=Na.x;h[4*a+1]=Na.y;h[4*a+2]=Na.z;h[4*a+3]=ab}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,g=this.attributes.uv.array,f=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*f),4));for(var h=this.attributes.tangent.array,k=[],m=[],n=0;n<f;n++)k[n]=new THREE.Vector3,m[n]=new THREE.Vector3;var q,s,t,r,p,v,x,u,E,y,z,B,D,w,A,N,P,K,R,M,H,C,T,L,V,J,Y=new THREE.Vector3,aa=new THREE.Vector3,na,I,ba,Q,ca;0===this.drawcalls.length&&
this.addDrawCall(0,c.length,0);var Ga=this.drawcalls,n=0;for(I=Ga.length;n<I;++n){na=Ga[n].start;ba=Ga[n].count;var Ea=Ga[n].index,f=na;for(na+=ba;f<na;f+=3)ba=Ea+c[f],Q=Ea+c[f+1],ca=Ea+c[f+2],a(ba,Q,ca)}var Oa=new THREE.Vector3,Pa=new THREE.Vector3,La=new THREE.Vector3,la=new THREE.Vector3,bb,sa,G,n=0;for(I=Ga.length;n<I;++n)for(na=Ga[n].start,ba=Ga[n].count,Ea=Ga[n].index,f=na,na+=ba;f<na;f+=3)ba=Ea+c[f],Q=Ea+c[f+1],ca=Ea+c[f+2],b(ba),b(Q),b(ca)}},computeOffsets:function(a){var b=a;void 0===a&&
this.addDrawCall(0,c.length,0);var Ga=this.drawcalls,n=0;for(I=Ga.length;n<I;++n){na=Ga[n].start;ba=Ga[n].count;var Da=Ga[n].index,f=na;for(na+=ba;f<na;f+=3)ba=Da+c[f],Q=Da+c[f+1],ca=Da+c[f+2],a(ba,Q,ca)}var Na=new THREE.Vector3,Oa=new THREE.Vector3,Ka=new THREE.Vector3,la=new THREE.Vector3,ab,sa,G,n=0;for(I=Ga.length;n<I;++n)for(na=Ga[n].start,ba=Ga[n].count,Da=Ga[n].index,f=na,na+=ba;f<na;f+=3)ba=Da+c[f],Q=Da+c[f+1],ca=Da+c[f+2],b(ba),b(Q),b(ca)}},computeOffsets:function(a){var b=a;void 0===a&&
(b=65535);Date.now();a=this.attributes.index.array;for(var c=this.attributes.position.array,d=a.length/3,e=new Uint16Array(a.length),g=0,f=0,h=[{start:0,count:0,index:0}],k=h[0],m=0,n=0,q=new Int32Array(6),s=new Int32Array(c.length),t=new Int32Array(c.length),r=0;r<c.length;r++)s[r]=-1,t[r]=-1;for(c=0;c<d;c++){for(var p=n=0;3>p;p++)r=a[3*c+p],-1==s[r]?(q[2*p]=r,q[2*p+1]=-1,n++):s[r]<k.index?(q[2*p]=r,q[2*p+1]=-1,m++):(q[2*p]=r,q[2*p+1]=s[r]);if(f+n>k.index+b)for(k={start:g,count:0,index:f},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)r=q[n],p=q[n+1],-1===p&&(p=f++),s[r]=p,t[p]=r,e[g++]=p-k.index,k.count++}this.reorderBuffers(e,t,f);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,g=a.length;e<g;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],g;for(g in this.attributes)if("index"!=g)for(var f=this.attributes[g].array,h=0,k=e.length;h<k;h++){var m=e[h];if(f instanceof m){d[g]=new m(this.attributes[g].itemSize*c);break}}for(e=0;e<c;e++)for(g in f=b[e],this.attributes)if("index"!=g)for(var h=this.attributes[g].array,k=this.attributes[g].itemSize,m=d[g],n=0;n<k;n++)m[e*k+n]=h[f*k+n];this.attributes.index.array=a;for(g in this.attributes)"index"!=g&&(this.attributes[g].array=
d[g],this.attributes[g].numItems=this.attributes[g].itemSize*c)},toJSON:function(){var a={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type,data:{attributes:{}}},b=this.attributes,c=this.offsets,d=this.boundingSphere,e;for(e in b){for(var g=b[e],f=[],h=g.array,k=0,m=h.length;k<m;k++)f[k]=h[k];a.data.attributes[e]={itemSize:g.itemSize,type:g.array.constructor.name,array:f}}0<c.length&&(a.data.offsets=JSON.parse(JSON.stringify(c)));null!==d&&
(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius});return a},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,g={itemSize:d.itemSize,array:null},d=0,f=b.length;d<f;d++){var h=b[d];if(e instanceof h){g.array=new h(e);break}}a.attributes[c]=g}d=0;for(f=this.offsets.length;d<f;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);
(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius});return a},clone:function(){var a=new THREE.BufferGeometry,b;for(b in this.attributes)a.addAttribute(b,this.attributes[b].clone());b=0;for(var c=this.offsets.length;b<c;b++){var d=this.offsets[b];a.offsets.push({start:d.start,index:d.index,count:d.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.type="Geometry";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,g=a.vertexNormals.length;e<g;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}this.boundingBox instanceof THREE.Box3&&this.computeBoundingBox();this.boundingSphere instanceof THREE.Sphere&&this.computeBoundingSphere()},
......@@ -383,23 +382,23 @@ THREE.CanvasRenderer=function(a){function b(a,b,c,d){m(b);n(c);q(d);s(a.getStyle
b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x":!1===b&&!0===c?"repeat-y":"no-repeat")}}function g(a,b,c,f,g,h,k,m,n,r,s,p,q){if(!(q instanceof THREE.DataTexture)){!1===q.hasEventListener("update",d)&&(void 0!==q.image&&0<q.image.width&&e(q),q.addEventListener("update",d));var u=ob[q.id];if(void 0!==u){t(u);var u=q.offset.x/q.repeat.x,l=q.offset.y/q.repeat.y,v=q.image.width*q.repeat.x;q=q.image.height*q.repeat.y;k=(k+u)*v;m=(m+l)*q;c-=a;f-=b;g-=a;h-=b;n=(n+u)*v-k;r=(r+l)*q-m;s=(s+u)*v-k;p=(p+l)*q-m;
q=n*p-s*r;0!==q&&(u=1/q,q=(p*c-r*g)*u,r=(p*f-r*h)*u,c=(n*g-s*c)*u,f=(n*h-s*f)*u,a=a-q*k-c*m,b=b-r*k-f*m,M.save(),M.transform(q,r,c,f,a,b),M.fill(),M.restore())}else t("rgba(0,0,0,1)"),M.fill()}}function f(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function h(a){T!==a&&(T=M.globalAlpha=a)}function k(a){L!==a&&(a===THREE.NormalBlending?M.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?M.globalCompositeOperation="lighter":
a===THREE.SubtractiveBlending&&(M.globalCompositeOperation="darker"),L=a)}function m(a){Y!==a&&(Y=M.lineWidth=a)}function n(a){aa!==a&&(aa=M.lineCap=a)}function q(a){na!==a&&(na=M.lineJoin=a)}function s(a){V!==a&&(V=M.strokeStyle=a)}function t(a){J!==a&&(J=M.fillStyle=a)}function r(a){I.length!==a.length&&(M.setLineDash(a),I=a)}console.log("THREE.CanvasRenderer",THREE.REVISION);var p=THREE.Math.smoothstep;a=a||{};var v=this,x,u,E,y=new THREE.Projector,z=void 0!==a.canvas?a.canvas:document.createElement("canvas"),
B=z.width,D=z.height,w=Math.floor(B/2),A=Math.floor(D/2),N=0,P=0,K=B,R=D,M=z.getContext("2d",{alpha:!0===a.alpha}),H=new THREE.Color(0),C=0,T=1,L=0,V=null,J=null,Y=null,aa=null,na=null,I=[],ba,Q,ca,Ga;new THREE.RenderableVertex;new THREE.RenderableVertex;var Ea,Oa,Pa,La,la,bb,sa=new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;var G=new THREE.Color,cb=new THREE.Color,jb=new THREE.Color,ob={},qa,oa,Za,Ha,ya,Ia,ua,ka=new THREE.Box2,da=new THREE.Box2,xa=new THREE.Box2,
ta=new THREE.Color,Sa=new THREE.Color,pb=new THREE.Color,Na=new THREE.Vector3,Ca=new THREE.Vector3,ha=new THREE.Vector3,Qa=new THREE.Matrix3;void 0===M.setLineDash&&(M.setLineDash=function(){});this.domElement=z;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};
this.setSize=function(a,b,c){B=a*this.devicePixelRatio;D=b*this.devicePixelRatio;z.width=B;z.height=D;w=Math.floor(B/2);A=Math.floor(D/2);!1!==c&&(z.style.width=a+"px",z.style.height=b+"px");ka.min.set(-w,-A);ka.max.set(w,A);da.min.set(-w,-A);da.max.set(w,A);T=1;L=0;na=aa=Y=J=V=null;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){N=a*this.devicePixelRatio;P=b*this.devicePixelRatio;K=c*this.devicePixelRatio;R=d*this.devicePixelRatio};this.setScissor=function(){};this.enableScissorTest=
function(){};this.setClearColor=function(a,b){H.set(a);C=void 0!==b?b:1;da.min.set(-w,-A);da.max.set(w,A)};this.setClearColorHex=function(a,b){console.warn("THREE.CanvasRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return H};this.getClearAlpha=function(){return C};this.getMaxAnisotropy=function(){return 0};this.clear=function(){!1===da.empty()&&(da.intersect(ka),da.expandByScalar(2),da.min.x+=w,da.min.y=-da.min.y+
B=z.width,D=z.height,w=Math.floor(B/2),A=Math.floor(D/2),N=0,P=0,K=B,R=D,M=z.getContext("2d",{alpha:!0===a.alpha}),H=new THREE.Color(0),C=0,T=1,L=0,V=null,J=null,Y=null,aa=null,na=null,I=[],ba,Q,ca,Ga;new THREE.RenderableVertex;new THREE.RenderableVertex;var Da,Na,Oa,Ka,la,ab,sa=new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;var G=new THREE.Color,bb=new THREE.Color,nb=new THREE.Color,ob={},qa,pa,cb,Ha,Ea,La,va,ya=new THREE.Box2,da=new THREE.Box2,xa=new THREE.Box2,
Qa=new THREE.Color,Va=new THREE.Color,pb=new THREE.Color,ta=new THREE.Vector3,ka=new THREE.Vector3,ha=new THREE.Vector3,Pa=new THREE.Matrix3;void 0===M.setLineDash&&(M.setLineDash=function(){});this.domElement=z;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};
this.setSize=function(a,b,c){B=a*this.devicePixelRatio;D=b*this.devicePixelRatio;z.width=B;z.height=D;w=Math.floor(B/2);A=Math.floor(D/2);!1!==c&&(z.style.width=a+"px",z.style.height=b+"px");ya.min.set(-w,-A);ya.max.set(w,A);da.min.set(-w,-A);da.max.set(w,A);T=1;L=0;na=aa=Y=J=V=null;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){N=a*this.devicePixelRatio;P=b*this.devicePixelRatio;K=c*this.devicePixelRatio;R=d*this.devicePixelRatio};this.setScissor=function(){};this.enableScissorTest=
function(){};this.setClearColor=function(a,b){H.set(a);C=void 0!==b?b:1;da.min.set(-w,-A);da.max.set(w,A)};this.setClearColorHex=function(a,b){console.warn("THREE.CanvasRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return H};this.getClearAlpha=function(){return C};this.getMaxAnisotropy=function(){return 0};this.clear=function(){!1===da.empty()&&(da.intersect(ya),da.expandByScalar(2),da.min.x+=w,da.min.y=-da.min.y+
A,da.max.x+=w,da.max.y=-da.max.y+A,1>C&&M.clearRect(da.min.x|0,da.min.y|0,da.max.x-da.min.x|0,da.max.y-da.min.y|0),0<C&&(k(THREE.NormalBlending),h(1),t("rgba("+Math.floor(255*H.r)+","+Math.floor(255*H.g)+","+Math.floor(255*H.b)+","+C+")"),M.fillRect(da.min.x|0,da.min.y|0,da.max.x-da.min.x|0,da.max.y-da.min.y|0)),da.makeEmpty())};this.clearColor=function(){};this.clearDepth=function(){};this.clearStencil=function(){};this.render=function(a,z){if(!1===z instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
else{!0===this.autoClear&&this.clear();v.info.render.vertices=0;v.info.render.faces=0;M.setTransform(K/B,0,0,-R/D,N,D-P);M.translate(w,A);x=y.projectScene(a,z,this.sortObjects,this.sortElements);u=x.elements;E=x.lights;ba=z;Qa.getNormalMatrix(z.matrixWorldInverse);ta.setRGB(0,0,0);Sa.setRGB(0,0,0);pb.setRGB(0,0,0);for(var L=0,T=E.length;L<T;L++){var C=E[L],I=C.color;C instanceof THREE.AmbientLight?ta.add(I):C instanceof THREE.DirectionalLight?Sa.add(I):C instanceof THREE.PointLight&&pb.add(I)}L=0;
for(T=u.length;L<T;L++){var H=u[L],J=H.material;if(void 0!==J&&0!==J.opacity){xa.makeEmpty();if(H instanceof THREE.RenderableSprite){Q=H;Q.x*=w;Q.y*=A;var C=Q,V=H,I=J;h(I.opacity);k(I.blending);var Y=V.scale.x*w,V=V.scale.y*A,H=0.5*Math.sqrt(Y*Y+V*V);xa.min.set(C.x-H,C.y-H);xa.max.set(C.x+H,C.y+H);if(I instanceof THREE.SpriteMaterial){var pa=I.map;if(null!==pa&&void 0!==pa.image){!1===pa.hasEventListener("update",d)&&(0<pa.image.width&&e(pa),pa.addEventListener("update",d));H=ob[pa.id];void 0!==H?
t(H):t("rgba( 0, 0, 0, 1 )");var fa=pa.image,H=fa.width*pa.offset.x,J=fa.height*pa.offset.y,aa=fa.width*pa.repeat.x,pa=fa.height*pa.repeat.y,fa=Y/aa,na=V/pa;M.save();M.translate(C.x,C.y);0!==I.rotation&&M.rotate(I.rotation);M.translate(-Y/2,-V/2);M.scale(fa,na);M.translate(-H,-J);M.fillRect(H,J,aa,pa)}else t(I.color.getStyle()),M.save(),M.translate(C.x,C.y),0!==I.rotation&&M.rotate(I.rotation),M.scale(Y,-V),M.fillRect(-0.5,-0.5,1,1);M.restore()}else I instanceof THREE.SpriteCanvasMaterial&&(s(I.color.getStyle()),
t(I.color.getStyle()),M.save(),M.translate(C.x,C.y),0!==I.rotation&&M.rotate(I.rotation),M.scale(Y,V),I.program(M),M.restore())}else if(H instanceof THREE.RenderableLine){if(Q=H.v1,ca=H.v2,Q.positionScreen.x*=w,Q.positionScreen.y*=A,ca.positionScreen.x*=w,ca.positionScreen.y*=A,xa.setFromPoints([Q.positionScreen,ca.positionScreen]),!0===ka.isIntersectionBox(xa))if(C=Q,I=ca,Y=H,V=J,h(V.opacity),k(V.blending),M.beginPath(),M.moveTo(C.positionScreen.x,C.positionScreen.y),M.lineTo(I.positionScreen.x,
I.positionScreen.y),V instanceof THREE.LineBasicMaterial){m(V.linewidth);n(V.linecap);q(V.linejoin);if(V.vertexColors!==THREE.VertexColors)s(V.color.getStyle());else if(H=Y.vertexColors[0].getStyle(),Y=Y.vertexColors[1].getStyle(),H===Y)s(H);else{try{var l=M.createLinearGradient(C.positionScreen.x,C.positionScreen.y,I.positionScreen.x,I.positionScreen.y);l.addColorStop(0,H);l.addColorStop(1,Y)}catch(Ab){l=H}s(l)}M.stroke();xa.expandByScalar(2*V.linewidth)}else V instanceof THREE.LineDashedMaterial&&
else{!0===this.autoClear&&this.clear();v.info.render.vertices=0;v.info.render.faces=0;M.setTransform(K/B,0,0,-R/D,N,D-P);M.translate(w,A);x=y.projectScene(a,z,this.sortObjects,this.sortElements);u=x.elements;E=x.lights;ba=z;Pa.getNormalMatrix(z.matrixWorldInverse);Qa.setRGB(0,0,0);Va.setRGB(0,0,0);pb.setRGB(0,0,0);for(var L=0,T=E.length;L<T;L++){var C=E[L],I=C.color;C instanceof THREE.AmbientLight?Qa.add(I):C instanceof THREE.DirectionalLight?Va.add(I):C instanceof THREE.PointLight&&pb.add(I)}L=0;
for(T=u.length;L<T;L++){var H=u[L],J=H.material;if(void 0!==J&&0!==J.opacity){xa.makeEmpty();if(H instanceof THREE.RenderableSprite){Q=H;Q.x*=w;Q.y*=A;var C=Q,V=H,I=J;h(I.opacity);k(I.blending);var Y=V.scale.x*w,V=V.scale.y*A,H=0.5*Math.sqrt(Y*Y+V*V);xa.min.set(C.x-H,C.y-H);xa.max.set(C.x+H,C.y+H);if(I instanceof THREE.SpriteMaterial){var oa=I.map;if(null!==oa&&void 0!==oa.image){!1===oa.hasEventListener("update",d)&&(0<oa.image.width&&e(oa),oa.addEventListener("update",d));H=ob[oa.id];void 0!==H?
t(H):t("rgba( 0, 0, 0, 1 )");var fa=oa.image,H=fa.width*oa.offset.x,J=fa.height*oa.offset.y,aa=fa.width*oa.repeat.x,oa=fa.height*oa.repeat.y,fa=Y/aa,na=V/oa;M.save();M.translate(C.x,C.y);0!==I.rotation&&M.rotate(I.rotation);M.translate(-Y/2,-V/2);M.scale(fa,na);M.translate(-H,-J);M.fillRect(H,J,aa,oa)}else t(I.color.getStyle()),M.save(),M.translate(C.x,C.y),0!==I.rotation&&M.rotate(I.rotation),M.scale(Y,-V),M.fillRect(-0.5,-0.5,1,1);M.restore()}else I instanceof THREE.SpriteCanvasMaterial&&(s(I.color.getStyle()),
t(I.color.getStyle()),M.save(),M.translate(C.x,C.y),0!==I.rotation&&M.rotate(I.rotation),M.scale(Y,V),I.program(M),M.restore())}else if(H instanceof THREE.RenderableLine){if(Q=H.v1,ca=H.v2,Q.positionScreen.x*=w,Q.positionScreen.y*=A,ca.positionScreen.x*=w,ca.positionScreen.y*=A,xa.setFromPoints([Q.positionScreen,ca.positionScreen]),!0===ya.isIntersectionBox(xa))if(C=Q,I=ca,Y=H,V=J,h(V.opacity),k(V.blending),M.beginPath(),M.moveTo(C.positionScreen.x,C.positionScreen.y),M.lineTo(I.positionScreen.x,
I.positionScreen.y),V instanceof THREE.LineBasicMaterial){m(V.linewidth);n(V.linecap);q(V.linejoin);if(V.vertexColors!==THREE.VertexColors)s(V.color.getStyle());else if(H=Y.vertexColors[0].getStyle(),Y=Y.vertexColors[1].getStyle(),H===Y)s(H);else{try{var l=M.createLinearGradient(C.positionScreen.x,C.positionScreen.y,I.positionScreen.x,I.positionScreen.y);l.addColorStop(0,H);l.addColorStop(1,Y)}catch(Eb){l=H}s(l)}M.stroke();xa.expandByScalar(2*V.linewidth)}else V instanceof THREE.LineDashedMaterial&&
(m(V.linewidth),n(V.linecap),q(V.linejoin),s(V.color.getStyle()),r([V.dashSize,V.gapSize]),M.stroke(),xa.expandByScalar(2*V.linewidth),r([]))}else if(H instanceof THREE.RenderableFace){Q=H.v1;ca=H.v2;Ga=H.v3;if(-1>Q.positionScreen.z||1<Q.positionScreen.z)continue;if(-1>ca.positionScreen.z||1<ca.positionScreen.z)continue;if(-1>Ga.positionScreen.z||1<Ga.positionScreen.z)continue;Q.positionScreen.x*=w;Q.positionScreen.y*=A;ca.positionScreen.x*=w;ca.positionScreen.y*=A;Ga.positionScreen.x*=w;Ga.positionScreen.y*=
A;0<J.overdraw&&(f(Q.positionScreen,ca.positionScreen,J.overdraw),f(ca.positionScreen,Ga.positionScreen,J.overdraw),f(Ga.positionScreen,Q.positionScreen,J.overdraw));xa.setFromPoints([Q.positionScreen,ca.positionScreen,Ga.positionScreen]);if(!0===ka.isIntersectionBox(xa)){I=Q;Y=ca;V=Ga;C=J;v.info.render.vertices+=3;v.info.render.faces++;h(C.opacity);k(C.blending);Ea=I.positionScreen.x;Oa=I.positionScreen.y;Pa=Y.positionScreen.x;La=Y.positionScreen.y;la=V.positionScreen.x;bb=V.positionScreen.y;var J=
Ea,aa=Oa,pa=Pa,fa=La,na=la,xb=bb;M.beginPath();M.moveTo(J,aa);M.lineTo(pa,fa);M.lineTo(na,xb);M.closePath();if((C instanceof THREE.MeshLambertMaterial||C instanceof THREE.MeshPhongMaterial)&&null===C.map){G.copy(C.color);cb.copy(C.emissive);C.vertexColors===THREE.FaceColors&&G.multiply(H.color);sa.copy(ta);Ca.copy(I.positionWorld).add(Y.positionWorld).add(V.positionWorld).divideScalar(3);I=Ca;Y=H.normalModel;V=sa;H=0;for(J=E.length;H<J;H++)aa=E[H],jb.copy(aa.color),aa instanceof THREE.DirectionalLight?
(pa=Na.setFromMatrixPosition(aa.matrixWorld).normalize(),fa=Y.dot(pa),0>=fa||(fa*=aa.intensity,V.add(jb.multiplyScalar(fa)))):aa instanceof THREE.PointLight&&(pa=Na.setFromMatrixPosition(aa.matrixWorld),fa=Y.dot(Na.subVectors(pa,I).normalize()),0>=fa||(fa*=0==aa.distance?1:1-Math.min(I.distanceTo(pa)/aa.distance,1),0!=fa&&(fa*=aa.intensity,V.add(jb.multiplyScalar(fa)))));sa.multiply(G).add(cb);!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa)}else C instanceof
THREE.MeshBasicMaterial||C instanceof THREE.MeshLambertMaterial||C instanceof THREE.MeshPhongMaterial?null!==C.map?C.map.mapping instanceof THREE.UVMapping&&(qa=H.uvs,g(Ea,Oa,Pa,La,la,bb,qa[0].x,qa[0].y,qa[1].x,qa[1].y,qa[2].x,qa[2].y,C.map)):null!==C.envMap?C.envMap.mapping instanceof THREE.SphericalReflectionMapping?(ha.copy(H.vertexNormalsModel[0]).applyMatrix3(Qa),oa=0.5*ha.x+0.5,Za=0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[1]).applyMatrix3(Qa),Ha=0.5*ha.x+0.5,ya=0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[2]).applyMatrix3(Qa),
Ia=0.5*ha.x+0.5,ua=0.5*ha.y+0.5,g(Ea,Oa,Pa,La,la,bb,oa,Za,Ha,ya,Ia,ua,C.envMap)):C.envMap.mapping instanceof THREE.SphericalRefractionMapping&&(ha.copy(H.vertexNormalsModel[0]).applyMatrix3(Qa),oa=-0.5*ha.x+0.5,Za=-0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[1]).applyMatrix3(Qa),Ha=-0.5*ha.x+0.5,ya=-0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[2]).applyMatrix3(Qa),Ia=-0.5*ha.x+0.5,ua=-0.5*ha.y+0.5,g(Ea,Oa,Pa,La,la,bb,oa,Za,Ha,ya,Ia,ua,C.envMap)):(sa.copy(C.color),C.vertexColors===THREE.FaceColors&&sa.multiply(H.color),
!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa)):(C instanceof THREE.MeshDepthMaterial?sa.r=sa.g=sa.b=1-p(I.positionScreen.z*I.positionScreen.w,ba.near,ba.far):C instanceof THREE.MeshNormalMaterial?(ha.copy(H.normalModel).applyMatrix3(Qa),sa.setRGB(ha.x,ha.y,ha.z).multiplyScalar(0.5).addScalar(0.5)):sa.setRGB(1,1,1),!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa))}}da.union(xa)}}M.setTransform(1,0,0,1,0,0)}}};
A;0<J.overdraw&&(f(Q.positionScreen,ca.positionScreen,J.overdraw),f(ca.positionScreen,Ga.positionScreen,J.overdraw),f(Ga.positionScreen,Q.positionScreen,J.overdraw));xa.setFromPoints([Q.positionScreen,ca.positionScreen,Ga.positionScreen]);if(!0===ya.isIntersectionBox(xa)){I=Q;Y=ca;V=Ga;C=J;v.info.render.vertices+=3;v.info.render.faces++;h(C.opacity);k(C.blending);Da=I.positionScreen.x;Na=I.positionScreen.y;Oa=Y.positionScreen.x;Ka=Y.positionScreen.y;la=V.positionScreen.x;ab=V.positionScreen.y;var J=
Da,aa=Na,oa=Oa,fa=Ka,na=la,Ab=ab;M.beginPath();M.moveTo(J,aa);M.lineTo(oa,fa);M.lineTo(na,Ab);M.closePath();if((C instanceof THREE.MeshLambertMaterial||C instanceof THREE.MeshPhongMaterial)&&null===C.map){G.copy(C.color);bb.copy(C.emissive);C.vertexColors===THREE.FaceColors&&G.multiply(H.color);sa.copy(Qa);ka.copy(I.positionWorld).add(Y.positionWorld).add(V.positionWorld).divideScalar(3);I=ka;Y=H.normalModel;V=sa;H=0;for(J=E.length;H<J;H++)aa=E[H],nb.copy(aa.color),aa instanceof THREE.DirectionalLight?
(oa=ta.setFromMatrixPosition(aa.matrixWorld).normalize(),fa=Y.dot(oa),0>=fa||(fa*=aa.intensity,V.add(nb.multiplyScalar(fa)))):aa instanceof THREE.PointLight&&(oa=ta.setFromMatrixPosition(aa.matrixWorld),fa=Y.dot(ta.subVectors(oa,I).normalize()),0>=fa||(fa*=0==aa.distance?1:1-Math.min(I.distanceTo(oa)/aa.distance,1),0!=fa&&(fa*=aa.intensity,V.add(nb.multiplyScalar(fa)))));sa.multiply(G).add(bb);!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa)}else C instanceof
THREE.MeshBasicMaterial||C instanceof THREE.MeshLambertMaterial||C instanceof THREE.MeshPhongMaterial?null!==C.map?C.map.mapping instanceof THREE.UVMapping&&(qa=H.uvs,g(Da,Na,Oa,Ka,la,ab,qa[0].x,qa[0].y,qa[1].x,qa[1].y,qa[2].x,qa[2].y,C.map)):null!==C.envMap?C.envMap.mapping instanceof THREE.SphericalReflectionMapping?(ha.copy(H.vertexNormalsModel[0]).applyMatrix3(Pa),pa=0.5*ha.x+0.5,cb=0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[1]).applyMatrix3(Pa),Ha=0.5*ha.x+0.5,Ea=0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[2]).applyMatrix3(Pa),
La=0.5*ha.x+0.5,va=0.5*ha.y+0.5,g(Da,Na,Oa,Ka,la,ab,pa,cb,Ha,Ea,La,va,C.envMap)):C.envMap.mapping instanceof THREE.SphericalRefractionMapping&&(ha.copy(H.vertexNormalsModel[0]).applyMatrix3(Pa),pa=-0.5*ha.x+0.5,cb=-0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[1]).applyMatrix3(Pa),Ha=-0.5*ha.x+0.5,Ea=-0.5*ha.y+0.5,ha.copy(H.vertexNormalsModel[2]).applyMatrix3(Pa),La=-0.5*ha.x+0.5,va=-0.5*ha.y+0.5,g(Da,Na,Oa,Ka,la,ab,pa,cb,Ha,Ea,La,va,C.envMap)):(sa.copy(C.color),C.vertexColors===THREE.FaceColors&&sa.multiply(H.color),
!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa)):(C instanceof THREE.MeshDepthMaterial?sa.r=sa.g=sa.b=1-p(I.positionScreen.z*I.positionScreen.w,ba.near,ba.far):C instanceof THREE.MeshNormalMaterial?(ha.copy(H.normalModel).applyMatrix3(Pa),sa.setRGB(ha.x,ha.y,ha.z).multiplyScalar(0.5).addScalar(0.5)):sa.setRGB(1,1,1),!0===C.wireframe?b(sa,C.wireframeLinewidth,C.wireframeLinecap,C.wireframeLinejoin):c(sa))}}da.union(xa)}}M.setTransform(1,0,0,1,0,0)}}};
THREE.ShaderChunk={};THREE.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( gl_FragColor.a < ALPHATEST ) discard;\n\n#endif\n";THREE.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n\tvec3 dirVector = normalize( lDirection.xyz );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat lDistance = 1.0;\n\t\tif ( pointLightDistance[ i ] > 0.0 )\n\t\t\tlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat lDistance = 1.0;\n\t\t\tif ( spotLightDistance[ i ] > 0.0 )\n\t\t\t\tlDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * lDistance * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * lDistance * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n\t\tvec3 lVector = normalize( lDirection.xyz );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront = vLightFront * diffuse + ambient * ambientLightColor + emissive;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vLightBack * diffuse + ambient * ambientLightColor + emissive;\n\n#endif";
THREE.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif";THREE.ShaderChunk.default_vertex="vec4 mvPosition;\n\n#ifdef USE_SKINNING\n\n\tmvPosition = modelViewMatrix * skinned;\n\n#endif\n\n#if !defined( USE_SKINNING ) && defined( USE_MORPHTARGETS )\n\n\tmvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#endif\n\n#if !defined( USE_SKINNING ) && ! defined( USE_MORPHTARGETS )\n\n\tmvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;";
THREE.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif";THREE.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n";
......@@ -467,108 +466,108 @@ function c(a,b){var c=b.geometry,e=a.faces3,f=3*e.length,g=1*e.length,h=3*e.leng
f));c=null!==Bb&&21845<g?Uint32Array:Uint16Array;a.__typeArray=c;a.__faceArray=new c(3*g);a.__lineArray=new c(2*h);var k;if(a.numMorphTargets)for(a.__morphTargetsArrays=[],c=0,k=a.numMorphTargets;c<k;c++)a.__morphTargetsArrays.push(new Float32Array(3*f));if(a.numMorphNormals)for(a.__morphNormalsArrays=[],c=0,k=a.numMorphNormals;c<k;c++)a.__morphNormalsArrays.push(new Float32Array(3*f));a.__webglFaceCount=3*g;a.__webglLineCount=2*h;if(e.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=
[]);for(var m in e.attributes){var g=e.attributes[m],h={},n;for(n in g)h[n]=g[n];if(!h.__webglInitialized||h.createUniqueBuffers)h.__webglInitialized=!0,c=1,"v2"===h.type?c=2:"v3"===h.type?c=3:"v4"===h.type?c=4:"c"===h.type&&(c=3),h.size=c,h.array=new Float32Array(f*c),h.buffer=l.createBuffer(),h.buffer.belongsToAttribute=m,g.needsUpdate=!0,h.__original=g;a.__webglCustomAttributesList.push(h)}}a.__inittedArrays=!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:
a.material}function e(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var g=0,k=b.length;g<k;g++){var m=b[g],n=e[m];if(0<=n){var r=c[m];void 0!==r?(m=r.itemSize,l.bindBuffer(l.ARRAY_BUFFER,r.buffer),f(n),l.vertexAttribPointer(n,m,l.FLOAT,!1,0,d*m*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[m].length?l.vertexAttrib2fv(n,a.defaultAttributeValues[m]):3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(n,a.defaultAttributeValues[m]))}}h()}function g(){for(var a=
0,b=tb.length;a<b;a++)tb[a]=0}function f(a){tb[a]=1;0===Eb[a]&&(l.enableVertexAttribArray(a),Eb[a]=1)}function h(){for(var a=0,b=Eb.length;a<b;a++)Eb[a]!==tb[a]&&(l.disableVertexAttribArray(a),Eb[a]=0)}function k(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function m(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function n(a,b){return b[0]-a[0]}function q(a,e,f){if(!1!==e.visible){e instanceof THREE.Light&&Pa.push(e);if(!(e instanceof THREE.Scene)){void 0===
0,b=tb.length;a<b;a++)tb[a]=0}function f(a){tb[a]=1;0===wb[a]&&(l.enableVertexAttribArray(a),wb[a]=1)}function h(){for(var a=0,b=wb.length;a<b;a++)wb[a]!==tb[a]&&(l.disableVertexAttribArray(a),wb[a]=0)}function k(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function m(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function n(a,b){return b[0]-a[0]}function q(a,e,f){if(!1!==e.visible){e instanceof THREE.Light&&Oa.push(e);if(!(e instanceof THREE.Scene)){void 0===
e.__webglInit&&(e.__webglInit=!0,e.addEventListener("dispose",Hc),e._modelViewMatrix=new THREE.Matrix4,e._normalMatrix=new THREE.Matrix3);var g=e.geometry;if(void 0!==g&&void 0===g.__webglInit&&(g.__webglInit=!0,g.addEventListener("dispose",Ic),!(g instanceof THREE.BufferGeometry)))if(e instanceof THREE.Mesh)void 0!==e.__webglActive&&y(e,a),v(a,e,g);else if(e instanceof THREE.Line){if(!g.__webglVertexBuffer){g.__webglVertexBuffer=l.createBuffer();g.__webglColorBuffer=l.createBuffer();g.__webglLineDistanceBuffer=
l.createBuffer();G.info.memory.geometries++;var h=g.vertices.length;g.__vertexArray=new Float32Array(3*h);g.__colorArray=new Float32Array(3*h);g.__lineDistanceArray=new Float32Array(1*h);g.__webglLineCount=h;b(g,e);g.verticesNeedUpdate=!0;g.colorsNeedUpdate=!0;g.lineDistancesNeedUpdate=!0}}else if(e instanceof THREE.PointCloud&&!g.__webglVertexBuffer){g.__webglVertexBuffer=l.createBuffer();g.__webglColorBuffer=l.createBuffer();G.info.memory.geometries++;var k=g.vertices.length;g.__vertexArray=new Float32Array(3*
k);g.__colorArray=new Float32Array(3*k);g.__sortArray=[];g.__webglParticleCount=k;b(g,e);g.verticesNeedUpdate=!0;g.colorsNeedUpdate=!0}if(void 0===e.__webglActive){if(e instanceof THREE.Mesh)if(g instanceof THREE.BufferGeometry)x(La,g,e);else{if(g instanceof THREE.Geometry)for(var m=0,r=g.geometryGroupsList.length;m<r;m++)x(La,g.geometryGroupsList[m],e)}else e instanceof THREE.Line||e instanceof THREE.PointCloud?x(La,g,e):(e instanceof THREE.ImmediateRenderObject||e.immediateRenderCallback)&&la.push({id:null,
object:e,opaque:null,transparent:null,z:0});e.__webglActive=!0}var s=La[e.id];if(s&&(!1===e.frustumCulled||!0===zc.intersectsObject(e))){var p=e.geometry,t,w,z;if(p instanceof THREE.BufferGeometry)for(var D=p.attributes,A=p.attributesKeys,B=0,C=A.length;B<C;B++){var L=A[B],H=D[L];void 0===H.buffer&&(H.buffer=l.createBuffer(),H.needsUpdate=!0);if(!0===H.needsUpdate){var N="index"===L?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(N,H.buffer);l.bufferData(N,H.array,l.STATIC_DRAW);H.needsUpdate=
k);g.__colorArray=new Float32Array(3*k);g.__sortArray=[];g.__webglParticleCount=k;b(g,e);g.verticesNeedUpdate=!0;g.colorsNeedUpdate=!0}if(void 0===e.__webglActive){if(e instanceof THREE.Mesh)if(g instanceof THREE.BufferGeometry)x(Ka,g,e);else{if(g instanceof THREE.Geometry)for(var m=0,r=g.geometryGroupsList.length;m<r;m++)x(Ka,g.geometryGroupsList[m],e)}else e instanceof THREE.Line||e instanceof THREE.PointCloud?x(Ka,g,e):(e instanceof THREE.ImmediateRenderObject||e.immediateRenderCallback)&&la.push({id:null,
object:e,opaque:null,transparent:null,z:0});e.__webglActive=!0}var s=Ka[e.id];if(s&&(!1===e.frustumCulled||!0===zc.intersectsObject(e))){var p=e.geometry,t,w,z;if(p instanceof THREE.BufferGeometry)for(var D=p.attributes,A=p.attributesKeys,B=0,C=A.length;B<C;B++){var L=A[B],H=D[L];void 0===H.buffer&&(H.buffer=l.createBuffer(),H.needsUpdate=!0);if(!0===H.needsUpdate){var N="index"===L?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(N,H.buffer);l.bufferData(N,H.array,l.STATIC_DRAW);H.needsUpdate=
!1}}else if(e instanceof THREE.Mesh){(p.buffersNeedUpdate||p.groupsNeedUpdate)&&v(a,e,p);for(var P=0,I=p.geometryGroupsList.length;P<I;P++)if(t=p.geometryGroupsList[P],z=d(e,t),(p.buffersNeedUpdate||p.groupsNeedUpdate)&&c(t,e),w=z.attributes&&u(z),p.verticesNeedUpdate||p.morphTargetsNeedUpdate||p.elementsNeedUpdate||p.uvsNeedUpdate||p.normalsNeedUpdate||p.colorsNeedUpdate||p.tangentsNeedUpdate||w){var K=t,T=e,M=l.DYNAMIC_DRAW,R=!p.dynamic,V=z;if(K.__inittedArrays){var Ga=V&&void 0!==V.shading&&V.shading===
THREE.SmoothShading,U=void 0,J=void 0,Y=void 0,Q=void 0,ca=void 0,Ea=void 0,aa=void 0,Oa=void 0,da=void 0,fa=void 0,qa=void 0,ia=void 0,ja=void 0,ga=void 0,oa=void 0,na=void 0,lc=void 0,S=void 0,ba=void 0,mc=void 0,ha=void 0,Aa=void 0,ua=void 0,xa=void 0,cb=void 0,nc=void 0,Ha=void 0,ya=void 0,oc=void 0,Ra=void 0,Za=void 0,Ja=void 0,Ia=void 0,ta=void 0,$a=void 0,Na=void 0,ka=void 0,Ca=void 0,Qa=void 0,Sa=void 0,kb=0,ub=0,jb=0,Fb=0,Gb=0,qb=0,Ya=0,lb=0,Wa=0,wa=0,Ma=0,O=0,ab=void 0,mb=K.__vertexArray,
Hb=K.__uvArray,Ib=K.__uv2Array,db=K.__normalArray,Ta=K.__tangentArray,Ka=K.__colorArray,Ua=K.__skinIndexArray,eb=K.__skinWeightArray,sb=K.__morphTargetsArrays,Ob=K.__morphNormalsArrays,ob=K.__webglCustomAttributesList,F=void 0,rb=K.__faceArray,Cb=K.__lineArray,Fa=T.geometry,Pb=Fa.elementsNeedUpdate,nb=Fa.uvsNeedUpdate,pb=Fa.normalsNeedUpdate,Ub=Fa.tangentsNeedUpdate,ra=Fa.colorsNeedUpdate,wb=Fa.morphTargetsNeedUpdate,X=Fa.vertices,W=K.faces3,ea=Fa.faces,fb=Fa.faceVertexUvs[0],Va=Fa.faceVertexUvs[1],
Bc=Fa.skinIndices,$b=Fa.skinWeights,Qb=Fa.morphTargets,gb=Fa.morphNormals;if(Fa.verticesNeedUpdate){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],ia=X[Q.a],ja=X[Q.b],ga=X[Q.c],mb[ub]=ia.x,mb[ub+1]=ia.y,mb[ub+2]=ia.z,mb[ub+3]=ja.x,mb[ub+4]=ja.y,mb[ub+5]=ja.z,mb[ub+6]=ga.x,mb[ub+7]=ga.y,mb[ub+8]=ga.z,ub+=9;l.bindBuffer(l.ARRAY_BUFFER,K.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,mb,M)}if(wb)for($a=0,Na=Qb.length;$a<Na;$a++){U=Ma=0;for(J=W.length;U<J;U++)Qa=W[U],Q=ea[Qa],ia=Qb[$a].vertices[Q.a],ja=Qb[$a].vertices[Q.b],
ga=Qb[$a].vertices[Q.c],ka=sb[$a],ka[Ma]=ia.x,ka[Ma+1]=ia.y,ka[Ma+2]=ia.z,ka[Ma+3]=ja.x,ka[Ma+4]=ja.y,ka[Ma+5]=ja.z,ka[Ma+6]=ga.x,ka[Ma+7]=ga.y,ka[Ma+8]=ga.z,V.morphNormals&&(Ga?(Sa=gb[$a].vertexNormals[Qa],S=Sa.a,ba=Sa.b,mc=Sa.c):mc=ba=S=gb[$a].faceNormals[Qa],Ca=Ob[$a],Ca[Ma]=S.x,Ca[Ma+1]=S.y,Ca[Ma+2]=S.z,Ca[Ma+3]=ba.x,Ca[Ma+4]=ba.y,Ca[Ma+5]=ba.z,Ca[Ma+6]=mc.x,Ca[Ma+7]=mc.y,Ca[Ma+8]=mc.z),Ma+=9;l.bindBuffer(l.ARRAY_BUFFER,K.__webglMorphTargetsBuffers[$a]);l.bufferData(l.ARRAY_BUFFER,sb[$a],M);V.morphNormals&&
(l.bindBuffer(l.ARRAY_BUFFER,K.__webglMorphNormalsBuffers[$a]),l.bufferData(l.ARRAY_BUFFER,Ob[$a],M))}if($b.length){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],xa=$b[Q.a],cb=$b[Q.b],nc=$b[Q.c],eb[wa]=xa.x,eb[wa+1]=xa.y,eb[wa+2]=xa.z,eb[wa+3]=xa.w,eb[wa+4]=cb.x,eb[wa+5]=cb.y,eb[wa+6]=cb.z,eb[wa+7]=cb.w,eb[wa+8]=nc.x,eb[wa+9]=nc.y,eb[wa+10]=nc.z,eb[wa+11]=nc.w,Ha=Bc[Q.a],ya=Bc[Q.b],oc=Bc[Q.c],Ua[wa]=Ha.x,Ua[wa+1]=Ha.y,Ua[wa+2]=Ha.z,Ua[wa+3]=Ha.w,Ua[wa+4]=ya.x,Ua[wa+5]=ya.y,Ua[wa+6]=ya.z,Ua[wa+7]=ya.w,Ua[wa+
8]=oc.x,Ua[wa+9]=oc.y,Ua[wa+10]=oc.z,Ua[wa+11]=oc.w,wa+=12;0<wa&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ua,M),l.bindBuffer(l.ARRAY_BUFFER,K.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,eb,M))}if(ra){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],aa=Q.vertexColors,Oa=Q.color,3===aa.length&&V.vertexColors===THREE.VertexColors?(ha=aa[0],Aa=aa[1],ua=aa[2]):ua=Aa=ha=Oa,Ka[Wa]=ha.r,Ka[Wa+1]=ha.g,Ka[Wa+2]=ha.b,Ka[Wa+3]=Aa.r,Ka[Wa+4]=Aa.g,Ka[Wa+5]=Aa.b,Ka[Wa+
6]=ua.r,Ka[Wa+7]=ua.g,Ka[Wa+8]=ua.b,Wa+=9;0<Wa&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Ka,M))}if(Ub&&Fa.hasTangents){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],da=Q.vertexTangents,oa=da[0],na=da[1],lc=da[2],Ta[Ya]=oa.x,Ta[Ya+1]=oa.y,Ta[Ya+2]=oa.z,Ta[Ya+3]=oa.w,Ta[Ya+4]=na.x,Ta[Ya+5]=na.y,Ta[Ya+6]=na.z,Ta[Ya+7]=na.w,Ta[Ya+8]=lc.x,Ta[Ya+9]=lc.y,Ta[Ya+10]=lc.z,Ta[Ya+11]=lc.w,Ya+=12;l.bindBuffer(l.ARRAY_BUFFER,K.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,Ta,M)}if(pb){U=
0;for(J=W.length;U<J;U++)if(Q=ea[W[U]],ca=Q.vertexNormals,Ea=Q.normal,3===ca.length&&Ga)for(Ra=0;3>Ra;Ra++)Ja=ca[Ra],db[qb]=Ja.x,db[qb+1]=Ja.y,db[qb+2]=Ja.z,qb+=3;else for(Ra=0;3>Ra;Ra++)db[qb]=Ea.x,db[qb+1]=Ea.y,db[qb+2]=Ea.z,qb+=3;l.bindBuffer(l.ARRAY_BUFFER,K.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,db,M)}if(nb&&fb){U=0;for(J=W.length;U<J;U++)if(Y=W[U],fa=fb[Y],void 0!==fa)for(Ra=0;3>Ra;Ra++)Ia=fa[Ra],Hb[jb]=Ia.x,Hb[jb+1]=Ia.y,jb+=2;0<jb&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglUVBuffer),
l.bufferData(l.ARRAY_BUFFER,Hb,M))}if(nb&&Va){U=0;for(J=W.length;U<J;U++)if(Y=W[U],qa=Va[Y],void 0!==qa)for(Ra=0;3>Ra;Ra++)ta=qa[Ra],Ib[Fb]=ta.x,Ib[Fb+1]=ta.y,Fb+=2;0<Fb&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,Ib,M))}if(Pb){U=0;for(J=W.length;U<J;U++)rb[Gb]=kb,rb[Gb+1]=kb+1,rb[Gb+2]=kb+2,Gb+=3,Cb[lb]=kb,Cb[lb+1]=kb+1,Cb[lb+2]=kb,Cb[lb+3]=kb+2,Cb[lb+4]=kb+1,Cb[lb+5]=kb+2,lb+=6,kb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,K.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,
rb,M);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,K.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Cb,M)}if(ob)for(Ra=0,Za=ob.length;Ra<Za;Ra++)if(F=ob[Ra],F.__original.needsUpdate){O=0;if(1===F.size)if(void 0===F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],F.array[O]=F.value[Q.a],F.array[O+1]=F.value[Q.b],F.array[O+2]=F.value[Q.c],O+=3;else{if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ab=F.value[W[U]],F.array[O]=ab,F.array[O+1]=ab,F.array[O+2]=ab,O+=3}else if(2===F.size)if(void 0===
F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ja.x,F.array[O+3]=ja.y,F.array[O+4]=ga.x,F.array[O+5]=ga.y,O+=6;else{if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=ab=F.value[W[U]],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ja.x,F.array[O+3]=ja.y,F.array[O+4]=ga.x,F.array[O+5]=ga.y,O+=6}else if(3===F.size){var Ba;Ba="c"===F.type?["r","g","b"]:["x","y","z"];if(void 0===
F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9;else if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=ab=F.value[W[U]],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],
F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9;else if("faceVertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)ab=F.value[W[U]],ia=ab[0],ja=ab[1],ga=ab[2],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9}else if(4===F.size)if(void 0===F.boundTo||"vertices"===F.boundTo)for(U=
0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;else if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=ab=F.value[W[U]],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=
ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;else if("faceVertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)ab=F.value[W[U]],ia=ab[0],ja=ab[1],ga=ab[2],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;l.bindBuffer(l.ARRAY_BUFFER,F.buffer);l.bufferData(l.ARRAY_BUFFER,F.array,
THREE.SmoothShading,U=void 0,J=void 0,Y=void 0,Q=void 0,ca=void 0,Da=void 0,aa=void 0,Na=void 0,da=void 0,fa=void 0,qa=void 0,ia=void 0,ja=void 0,ga=void 0,pa=void 0,na=void 0,lc=void 0,S=void 0,ba=void 0,mc=void 0,ha=void 0,Aa=void 0,va=void 0,xa=void 0,bb=void 0,nc=void 0,Ha=void 0,Ea=void 0,oc=void 0,Ra=void 0,cb=void 0,Ia=void 0,La=void 0,ta=void 0,Za=void 0,Qa=void 0,ya=void 0,ka=void 0,Pa=void 0,Va=void 0,jb=0,ub=0,nb=0,Fb=0,Gb=0,qb=0,Ya=0,kb=0,Wa=0,wa=0,Ma=0,O=0,$a=void 0,lb=K.__vertexArray,
Hb=K.__uvArray,Ib=K.__uv2Array,db=K.__normalArray,Sa=K.__tangentArray,Ja=K.__colorArray,Ta=K.__skinIndexArray,eb=K.__skinWeightArray,sb=K.__morphTargetsArrays,Ob=K.__morphNormalsArrays,ob=K.__webglCustomAttributesList,F=void 0,rb=K.__faceArray,Cb=K.__lineArray,Fa=T.geometry,Pb=Fa.elementsNeedUpdate,mb=Fa.uvsNeedUpdate,pb=Fa.normalsNeedUpdate,zb=Fa.tangentsNeedUpdate,ra=Fa.colorsNeedUpdate,wb=Fa.morphTargetsNeedUpdate,X=Fa.vertices,W=K.faces3,ea=Fa.faces,fb=Fa.faceVertexUvs[0],Ua=Fa.faceVertexUvs[1],
Bc=Fa.skinIndices,$b=Fa.skinWeights,Qb=Fa.morphTargets,gb=Fa.morphNormals;if(Fa.verticesNeedUpdate){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],ia=X[Q.a],ja=X[Q.b],ga=X[Q.c],lb[ub]=ia.x,lb[ub+1]=ia.y,lb[ub+2]=ia.z,lb[ub+3]=ja.x,lb[ub+4]=ja.y,lb[ub+5]=ja.z,lb[ub+6]=ga.x,lb[ub+7]=ga.y,lb[ub+8]=ga.z,ub+=9;l.bindBuffer(l.ARRAY_BUFFER,K.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,lb,M)}if(wb)for(Za=0,Qa=Qb.length;Za<Qa;Za++){U=Ma=0;for(J=W.length;U<J;U++)Pa=W[U],Q=ea[Pa],ia=Qb[Za].vertices[Q.a],ja=Qb[Za].vertices[Q.b],
ga=Qb[Za].vertices[Q.c],ya=sb[Za],ya[Ma]=ia.x,ya[Ma+1]=ia.y,ya[Ma+2]=ia.z,ya[Ma+3]=ja.x,ya[Ma+4]=ja.y,ya[Ma+5]=ja.z,ya[Ma+6]=ga.x,ya[Ma+7]=ga.y,ya[Ma+8]=ga.z,V.morphNormals&&(Ga?(Va=gb[Za].vertexNormals[Pa],S=Va.a,ba=Va.b,mc=Va.c):mc=ba=S=gb[Za].faceNormals[Pa],ka=Ob[Za],ka[Ma]=S.x,ka[Ma+1]=S.y,ka[Ma+2]=S.z,ka[Ma+3]=ba.x,ka[Ma+4]=ba.y,ka[Ma+5]=ba.z,ka[Ma+6]=mc.x,ka[Ma+7]=mc.y,ka[Ma+8]=mc.z),Ma+=9;l.bindBuffer(l.ARRAY_BUFFER,K.__webglMorphTargetsBuffers[Za]);l.bufferData(l.ARRAY_BUFFER,sb[Za],M);V.morphNormals&&
(l.bindBuffer(l.ARRAY_BUFFER,K.__webglMorphNormalsBuffers[Za]),l.bufferData(l.ARRAY_BUFFER,Ob[Za],M))}if($b.length){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],xa=$b[Q.a],bb=$b[Q.b],nc=$b[Q.c],eb[wa]=xa.x,eb[wa+1]=xa.y,eb[wa+2]=xa.z,eb[wa+3]=xa.w,eb[wa+4]=bb.x,eb[wa+5]=bb.y,eb[wa+6]=bb.z,eb[wa+7]=bb.w,eb[wa+8]=nc.x,eb[wa+9]=nc.y,eb[wa+10]=nc.z,eb[wa+11]=nc.w,Ha=Bc[Q.a],Ea=Bc[Q.b],oc=Bc[Q.c],Ta[wa]=Ha.x,Ta[wa+1]=Ha.y,Ta[wa+2]=Ha.z,Ta[wa+3]=Ha.w,Ta[wa+4]=Ea.x,Ta[wa+5]=Ea.y,Ta[wa+6]=Ea.z,Ta[wa+7]=Ea.w,Ta[wa+
8]=oc.x,Ta[wa+9]=oc.y,Ta[wa+10]=oc.z,Ta[wa+11]=oc.w,wa+=12;0<wa&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ta,M),l.bindBuffer(l.ARRAY_BUFFER,K.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,eb,M))}if(ra){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],aa=Q.vertexColors,Na=Q.color,3===aa.length&&V.vertexColors===THREE.VertexColors?(ha=aa[0],Aa=aa[1],va=aa[2]):va=Aa=ha=Na,Ja[Wa]=ha.r,Ja[Wa+1]=ha.g,Ja[Wa+2]=ha.b,Ja[Wa+3]=Aa.r,Ja[Wa+4]=Aa.g,Ja[Wa+5]=Aa.b,Ja[Wa+
6]=va.r,Ja[Wa+7]=va.g,Ja[Wa+8]=va.b,Wa+=9;0<Wa&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Ja,M))}if(zb&&Fa.hasTangents){U=0;for(J=W.length;U<J;U++)Q=ea[W[U]],da=Q.vertexTangents,pa=da[0],na=da[1],lc=da[2],Sa[Ya]=pa.x,Sa[Ya+1]=pa.y,Sa[Ya+2]=pa.z,Sa[Ya+3]=pa.w,Sa[Ya+4]=na.x,Sa[Ya+5]=na.y,Sa[Ya+6]=na.z,Sa[Ya+7]=na.w,Sa[Ya+8]=lc.x,Sa[Ya+9]=lc.y,Sa[Ya+10]=lc.z,Sa[Ya+11]=lc.w,Ya+=12;l.bindBuffer(l.ARRAY_BUFFER,K.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,Sa,M)}if(pb){U=
0;for(J=W.length;U<J;U++)if(Q=ea[W[U]],ca=Q.vertexNormals,Da=Q.normal,3===ca.length&&Ga)for(Ra=0;3>Ra;Ra++)Ia=ca[Ra],db[qb]=Ia.x,db[qb+1]=Ia.y,db[qb+2]=Ia.z,qb+=3;else for(Ra=0;3>Ra;Ra++)db[qb]=Da.x,db[qb+1]=Da.y,db[qb+2]=Da.z,qb+=3;l.bindBuffer(l.ARRAY_BUFFER,K.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,db,M)}if(mb&&fb){U=0;for(J=W.length;U<J;U++)if(Y=W[U],fa=fb[Y],void 0!==fa)for(Ra=0;3>Ra;Ra++)La=fa[Ra],Hb[nb]=La.x,Hb[nb+1]=La.y,nb+=2;0<nb&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglUVBuffer),
l.bufferData(l.ARRAY_BUFFER,Hb,M))}if(mb&&Ua){U=0;for(J=W.length;U<J;U++)if(Y=W[U],qa=Ua[Y],void 0!==qa)for(Ra=0;3>Ra;Ra++)ta=qa[Ra],Ib[Fb]=ta.x,Ib[Fb+1]=ta.y,Fb+=2;0<Fb&&(l.bindBuffer(l.ARRAY_BUFFER,K.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,Ib,M))}if(Pb){U=0;for(J=W.length;U<J;U++)rb[Gb]=jb,rb[Gb+1]=jb+1,rb[Gb+2]=jb+2,Gb+=3,Cb[kb]=jb,Cb[kb+1]=jb+1,Cb[kb+2]=jb,Cb[kb+3]=jb+2,Cb[kb+4]=jb+1,Cb[kb+5]=jb+2,kb+=6,jb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,K.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,
rb,M);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,K.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Cb,M)}if(ob)for(Ra=0,cb=ob.length;Ra<cb;Ra++)if(F=ob[Ra],F.__original.needsUpdate){O=0;if(1===F.size)if(void 0===F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],F.array[O]=F.value[Q.a],F.array[O+1]=F.value[Q.b],F.array[O+2]=F.value[Q.c],O+=3;else{if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)$a=F.value[W[U]],F.array[O]=$a,F.array[O+1]=$a,F.array[O+2]=$a,O+=3}else if(2===F.size)if(void 0===
F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ja.x,F.array[O+3]=ja.y,F.array[O+4]=ga.x,F.array[O+5]=ga.y,O+=6;else{if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=$a=F.value[W[U]],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ja.x,F.array[O+3]=ja.y,F.array[O+4]=ga.x,F.array[O+5]=ga.y,O+=6}else if(3===F.size){var Ba;Ba="c"===F.type?["r","g","b"]:["x","y","z"];if(void 0===
F.boundTo||"vertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9;else if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=$a=F.value[W[U]],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],
F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9;else if("faceVertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)$a=F.value[W[U]],ia=$a[0],ja=$a[1],ga=$a[2],F.array[O]=ia[Ba[0]],F.array[O+1]=ia[Ba[1]],F.array[O+2]=ia[Ba[2]],F.array[O+3]=ja[Ba[0]],F.array[O+4]=ja[Ba[1]],F.array[O+5]=ja[Ba[2]],F.array[O+6]=ga[Ba[0]],F.array[O+7]=ga[Ba[1]],F.array[O+8]=ga[Ba[2]],O+=9}else if(4===F.size)if(void 0===F.boundTo||"vertices"===F.boundTo)for(U=
0,J=W.length;U<J;U++)Q=ea[W[U]],ia=F.value[Q.a],ja=F.value[Q.b],ga=F.value[Q.c],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;else if("faces"===F.boundTo)for(U=0,J=W.length;U<J;U++)ga=ja=ia=$a=F.value[W[U]],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=
ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;else if("faceVertices"===F.boundTo)for(U=0,J=W.length;U<J;U++)$a=F.value[W[U]],ia=$a[0],ja=$a[1],ga=$a[2],F.array[O]=ia.x,F.array[O+1]=ia.y,F.array[O+2]=ia.z,F.array[O+3]=ia.w,F.array[O+4]=ja.x,F.array[O+5]=ja.y,F.array[O+6]=ja.z,F.array[O+7]=ja.w,F.array[O+8]=ga.x,F.array[O+9]=ga.y,F.array[O+10]=ga.z,F.array[O+11]=ga.w,O+=12;l.bindBuffer(l.ARRAY_BUFFER,F.buffer);l.bufferData(l.ARRAY_BUFFER,F.array,
M)}R&&(delete K.__inittedArrays,delete K.__colorArray,delete K.__normalArray,delete K.__tangentArray,delete K.__uvArray,delete K.__uv2Array,delete K.__faceArray,delete K.__vertexArray,delete K.__lineArray,delete K.__skinIndexArray,delete K.__skinWeightArray)}}p.verticesNeedUpdate=!1;p.morphTargetsNeedUpdate=!1;p.elementsNeedUpdate=!1;p.uvsNeedUpdate=!1;p.normalsNeedUpdate=!1;p.colorsNeedUpdate=!1;p.tangentsNeedUpdate=!1;p.buffersNeedUpdate=!1;z.attributes&&E(z)}else if(e instanceof THREE.Line){z=
d(e,p);w=z.attributes&&u(z);if(p.verticesNeedUpdate||p.colorsNeedUpdate||p.lineDistancesNeedUpdate||w){var ac=l.DYNAMIC_DRAW,Db,Vb,vb,bc,va,fc,Eb=p.vertices,Ab=p.colors,xb=p.lineDistances,Tb=Eb.length,Mb=Ab.length,Nb=xb.length,tb=p.__vertexArray,Bb=p.__colorArray,ic=p.__lineDistanceArray,rc=p.colorsNeedUpdate,sc=p.lineDistancesNeedUpdate,Cc=p.__webglCustomAttributesList,uc,Zb,Xa,gc,hb,Da;if(p.verticesNeedUpdate){for(Db=0;Db<Tb;Db++)bc=Eb[Db],va=3*Db,tb[va]=bc.x,tb[va+1]=bc.y,tb[va+2]=bc.z;l.bindBuffer(l.ARRAY_BUFFER,
p.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,tb,ac)}if(rc){for(Vb=0;Vb<Mb;Vb++)fc=Ab[Vb],va=3*Vb,Bb[va]=fc.r,Bb[va+1]=fc.g,Bb[va+2]=fc.b;l.bindBuffer(l.ARRAY_BUFFER,p.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Bb,ac)}if(sc){for(vb=0;vb<Nb;vb++)ic[vb]=xb[vb];l.bindBuffer(l.ARRAY_BUFFER,p.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,ic,ac)}if(Cc)for(uc=0,Zb=Cc.length;uc<Zb;uc++)if(Da=Cc[uc],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){va=0;gc=Da.value.length;
if(1===Da.size)for(Xa=0;Xa<gc;Xa++)Da.array[Xa]=Da.value[Xa];else if(2===Da.size)for(Xa=0;Xa<gc;Xa++)hb=Da.value[Xa],Da.array[va]=hb.x,Da.array[va+1]=hb.y,va+=2;else if(3===Da.size)if("c"===Da.type)for(Xa=0;Xa<gc;Xa++)hb=Da.value[Xa],Da.array[va]=hb.r,Da.array[va+1]=hb.g,Da.array[va+2]=hb.b,va+=3;else for(Xa=0;Xa<gc;Xa++)hb=Da.value[Xa],Da.array[va]=hb.x,Da.array[va+1]=hb.y,Da.array[va+2]=hb.z,va+=3;else if(4===Da.size)for(Xa=0;Xa<gc;Xa++)hb=Da.value[Xa],Da.array[va]=hb.x,Da.array[va+1]=hb.y,Da.array[va+
2]=hb.z,Da.array[va+3]=hb.w,va+=4;l.bindBuffer(l.ARRAY_BUFFER,Da.buffer);l.bufferData(l.ARRAY_BUFFER,Da.array,ac)}}p.verticesNeedUpdate=!1;p.colorsNeedUpdate=!1;p.lineDistancesNeedUpdate=!1;z.attributes&&E(z)}else if(e instanceof THREE.PointCloud){z=d(e,p);w=z.attributes&&u(z);if(p.verticesNeedUpdate||p.colorsNeedUpdate||e.sortParticles||w){var Dc=l.DYNAMIC_DRAW,ib,Jb,Kb,$,Lb,Wb,vc=p.vertices,Ec=vc.length,Fc=p.colors,jc=Fc.length,cc=p.__vertexArray,dc=p.__colorArray,Rb=p.__sortArray,kc=p.verticesNeedUpdate,
pc=p.colorsNeedUpdate,Sb=p.__webglCustomAttributesList,yb,hc,ma,zb,za,Z;if(e.sortParticles){Ac.copy(tc);Ac.multiply(e.matrixWorld);for(ib=0;ib<Ec;ib++)Kb=vc[ib],pa.copy(Kb),pa.applyProjection(Ac),Rb[ib]=[pa.z,ib];Rb.sort(n);for(ib=0;ib<Ec;ib++)Kb=vc[Rb[ib][1]],$=3*ib,cc[$]=Kb.x,cc[$+1]=Kb.y,cc[$+2]=Kb.z;for(Jb=0;Jb<jc;Jb++)$=3*Jb,Wb=Fc[Rb[Jb][1]],dc[$]=Wb.r,dc[$+1]=Wb.g,dc[$+2]=Wb.b;if(Sb)for(yb=0,hc=Sb.length;yb<hc;yb++)if(Z=Sb[yb],void 0===Z.boundTo||"vertices"===Z.boundTo)if($=0,zb=Z.value.length,
1===Z.size)for(ma=0;ma<zb;ma++)Lb=Rb[ma][1],Z.array[ma]=Z.value[Lb];else if(2===Z.size)for(ma=0;ma<zb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.x,Z.array[$+1]=za.y,$+=2;else if(3===Z.size)if("c"===Z.type)for(ma=0;ma<zb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.r,Z.array[$+1]=za.g,Z.array[$+2]=za.b,$+=3;else for(ma=0;ma<zb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,$+=3;else if(4===Z.size)for(ma=0;ma<zb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=
za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,Z.array[$+3]=za.w,$+=4}else{if(kc)for(ib=0;ib<Ec;ib++)Kb=vc[ib],$=3*ib,cc[$]=Kb.x,cc[$+1]=Kb.y,cc[$+2]=Kb.z;if(pc)for(Jb=0;Jb<jc;Jb++)Wb=Fc[Jb],$=3*Jb,dc[$]=Wb.r,dc[$+1]=Wb.g,dc[$+2]=Wb.b;if(Sb)for(yb=0,hc=Sb.length;yb<hc;yb++)if(Z=Sb[yb],Z.needsUpdate&&(void 0===Z.boundTo||"vertices"===Z.boundTo))if(zb=Z.value.length,$=0,1===Z.size)for(ma=0;ma<zb;ma++)Z.array[ma]=Z.value[ma];else if(2===Z.size)for(ma=0;ma<zb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=
za.y,$+=2;else if(3===Z.size)if("c"===Z.type)for(ma=0;ma<zb;ma++)za=Z.value[ma],Z.array[$]=za.r,Z.array[$+1]=za.g,Z.array[$+2]=za.b,$+=3;else for(ma=0;ma<zb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,$+=3;else if(4===Z.size)for(ma=0;ma<zb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,Z.array[$+3]=za.w,$+=4}if(kc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,p.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,cc,Dc);if(pc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,
p.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,dc,Dc);if(Sb)for(yb=0,hc=Sb.length;yb<hc;yb++)if(Z=Sb[yb],Z.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,Z.buffer),l.bufferData(l.ARRAY_BUFFER,Z.array,Dc)}p.verticesNeedUpdate=!1;p.colorsNeedUpdate=!1;z.attributes&&E(z)}for(var ec=0,Gc=s.length;ec<Gc;ec++){var wc=s[ec],Xb=wc,qc=Xb.object,xc=Xb.buffer,yc=qc.geometry,Yb=qc.material;Yb instanceof THREE.MeshFaceMaterial?(Yb=Yb.materials[yc instanceof THREE.BufferGeometry?0:xc.materialIndex],
Xb.material=Yb,Yb.transparent?sa.push(Xb):bb.push(Xb)):Yb&&(Xb.material=Yb,Yb.transparent?sa.push(Xb):bb.push(Xb));wc.render=!0;!0===G.sortObjects&&(null!==e.renderDepth?wc.z=e.renderDepth:(pa.setFromMatrixPosition(e.matrixWorld),pa.applyProjection(tc),wc.z=pa.z))}}}ec=0;for(Gc=e.children.length;ec<Gc;ec++)q(a,e.children[ec],f)}}function s(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)Za=jb=null,qa=oa=Ia=ya=Sa=ta=ua=-1,Ub=!0,a[d].render(b,c,Zb,jc),Za=jb=null,qa=oa=Ia=ya=Sa=ta=ua=-1,Ub=!0}
function t(a,b,c,d,e,g){for(var f,h,k,l=a.length-1;-1!==l;l--){f=a[l];h=f.object;k=f.buffer;w(h,b);if(g)f=g;else{f=f.material;if(!f)continue;e&&G.setBlending(f.blending,f.blendEquation,f.blendSrc,f.blendDst);G.setDepthTest(f.depthTest);G.setDepthWrite(f.depthWrite);K(f.polygonOffset,f.polygonOffsetFactor,f.polygonOffsetUnits)}G.setMaterialFaces(f);k instanceof THREE.BufferGeometry?G.renderBufferDirect(b,c,d,f,k,h):G.renderBuffer(b,c,d,f,k,h)}}function r(a,b,c,d,e,f,g){for(var h,k,l=0,m=a.length;l<
m;l++)if(h=a[l],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&G.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);G.setDepthTest(h.depthTest);G.setDepthWrite(h.depthWrite);K(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}G.renderImmediateObject(c,d,e,h,k)}}function p(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function v(a,b,d){var e=!1;a=b.material;if(void 0===d.geometryGroups||d.groupsNeedUpdate)delete La[b.id],
d.makeGroups(a instanceof THREE.MeshFaceMaterial,Bb?4294967296:65535),d.groupsNeedUpdate=!1;for(var f=0,g=d.geometryGroupsList.length;f<g;f++){a=d.geometryGroupsList[f];if(a.__webglVertexBuffer)e=!1;else{e=a;e.__webglVertexBuffer=l.createBuffer();e.__webglNormalBuffer=l.createBuffer();e.__webglTangentBuffer=l.createBuffer();e.__webglColorBuffer=l.createBuffer();e.__webglUVBuffer=l.createBuffer();e.__webglUV2Buffer=l.createBuffer();e.__webglSkinIndicesBuffer=l.createBuffer();e.__webglSkinWeightsBuffer=
l.createBuffer();e.__webglFaceBuffer=l.createBuffer();e.__webglLineBuffer=l.createBuffer();var h=void 0,k=void 0;if(e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],h=0,k=e.numMorphTargets;h<k;h++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],h=0,k=e.numMorphNormals;h<k;h++)e.__webglMorphNormalsBuffers.push(l.createBuffer());G.info.memory.geometries++;c(a,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=
!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;e=d.colorsNeedUpdate=!0}(e||void 0===b.__webglActive)&&x(La,a,b)}b.__webglActive=!0}function x(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 u(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function E(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function y(a){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete La[a.id];
else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=la,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglActive}function z(a,b,c,d,e){var f,g,h,k;Ha=0;if(d.needsUpdate){d.program&&pc(d);d.addEventListener("dispose",qc);var m;d instanceof THREE.MeshDepthMaterial?m="depth":d instanceof THREE.MeshNormalMaterial?m="normal":d instanceof THREE.MeshBasicMaterial?m="basic":d instanceof THREE.MeshLambertMaterial?m="lambert":d instanceof THREE.MeshPhongMaterial?
m="phong":d instanceof THREE.LineBasicMaterial?m="basic":d instanceof THREE.LineDashedMaterial?m="dashed":d instanceof THREE.PointCloudMaterial&&(m="particle_basic");if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=0,r=0,s=0,q=0,t=0,u=b.length;t<u;t++){var v=b[t];v.onlyShadow||!1===
v.visible||(v instanceof THREE.DirectionalLight&&p++,v instanceof THREE.PointLight&&r++,v instanceof THREE.SpotLight&&s++,v instanceof THREE.HemisphereLight&&q++)}f=p;g=r;h=s;k=q;for(var x,y=0,w=0,E=b.length;w<E;w++){var z=b[w];z.castShadow&&(z instanceof THREE.SpotLight&&y++,z instanceof THREE.DirectionalLight&&!z.shadowCascade&&y++)}x=y;var C;if(ic&&e&&e.skeleton&&e.skeleton.useVertexTexture)C=1024;else{var K=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),H=Math.floor((K-20)/4);void 0!==e&&e instanceof
THREE.SkinnedMesh&&(H=Math.min(e.skeleton.bones.length,H),H<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+H+" (try OpenGL instead of ANGLE)"));C=H}var P={precision:Y,supportsVertexTextures:rc,map:!!d.map,envMap:!!d.envMap,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,
logarithmicDepthBuffer:Ga,skinning:d.skinning,maxBones:C,useVertexTexture:ic&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:G.maxMorphTargets,maxMorphNormals:G.maxMorphNormals,maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:x,shadowMapEnabled:G.shadowMapEnabled&&e.receiveShadow&&0<x,shadowMapType:G.shadowMapType,shadowMapDebug:G.shadowMapDebug,shadowMapCascade:G.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,
wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},J=[];m?J.push(m):(J.push(d.fragmentShader),J.push(d.vertexShader));if(void 0!==d.defines)for(var I in d.defines)J.push(I),J.push(d.defines[I]);for(I in P)J.push(I),J.push(P[I]);for(var T=J.join(),Q,aa=0,Ea=cb.length;aa<Ea;aa++){var ca=cb[aa];if(ca.code===T){Q=ca;Q.usedTimes++;break}}void 0===Q&&(Q=new THREE.WebGLProgram(G,T,d,P),cb.push(Q),G.info.memory.programs=cb.length);d.program=Q;var Pa=Q.attributes;
if(d.morphTargets){d.numSupportedMorphTargets=0;for(var da,Oa="morphTarget",sa=0;sa<G.maxMorphTargets;sa++)da=Oa+sa,0<=Pa[da]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,Oa="morphNormal",sa=0;sa<G.maxMorphNormals;sa++)da=Oa+sa,0<=Pa[da]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var La in d.__webglShader.uniforms){var ia=d.program.uniforms[La];ia&&d.uniformsList.push([d.__webglShader.uniforms[La],ia])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&
(e.__webglMorphTargetInfluences=new Float32Array(G.maxMorphTargets));var ja=!1,ga=!1,oa=!1,na=d.program,la=na.uniforms,S=d.__webglShader.uniforms;na.id!==jb&&(l.useProgram(na.program),jb=na.id,oa=ga=ja=!0);d.id!==qa&&(-1===qa&&(oa=!0),qa=d.id,ga=!0);if(ja||a!==Za)l.uniformMatrix4fv(la.projectionMatrix,!1,a.projectionMatrix.elements),Ga&&l.uniform1f(la.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Za&&(Za=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==
la.cameraPosition&&(pa.setFromMatrixPosition(a.matrixWorld),l.uniform3f(la.cameraPosition,pa.x,pa.y,pa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==la.viewMatrix&&l.uniformMatrix4fv(la.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==la.bindMatrix&&l.uniformMatrix4fv(la.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==la.bindMatrixInverse&&l.uniformMatrix4fv(la.bindMatrixInverse,
!1,e.bindMatrixInverse.elements),ic&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==la.boneTexture){var bb=D();l.uniform1i(la.boneTexture,bb);G.setTexture(e.skeleton.boneTexture,bb)}null!==la.boneTextureWidth&&l.uniform1i(la.boneTextureWidth,e.skeleton.boneTextureWidth);null!==la.boneTextureHeight&&l.uniform1i(la.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==la.boneGlobalMatrices&&l.uniformMatrix4fv(la.boneGlobalMatrices,!1,e.skeleton.boneMatrices);
if(ga){c&&d.fog&&(S.fogColor.value=c.color,c instanceof THREE.Fog?(S.fogNear.value=c.near,S.fogFar.value=c.far):c instanceof THREE.FogExp2&&(S.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ub){var oa=!0,ba,ha,Aa,ua=0,xa=0,ya=0,ka,Ca,Ia,ta,Ra,Na,Ja=kc,Qa=Ja.directional.colors,Sa=Ja.directional.positions,$a=Ja.point.colors,ob=Ja.point.positions,sb=Ja.point.distances,pb=Ja.spot.colors,tb=Ja.spot.positions,Bb=Ja.spot.distances,
kb=Ja.spot.directions,ub=Ja.spot.anglesCos,Eb=Ja.spot.exponents,Fb=Ja.hemi.skyColors,Gb=Ja.hemi.groundColors,qb=Ja.hemi.positions,Ya=0,lb=0,Wa=0,wa=0,Ma=0,O=0,ab=0,mb=0,Hb=0,Ib=0,db=0,Ta=0;ba=0;for(ha=b.length;ba<ha;ba++)Aa=b[ba],Aa.onlyShadow||(ka=Aa.color,ta=Aa.intensity,Na=Aa.distance,Aa instanceof THREE.AmbientLight?Aa.visible&&(G.gammaInput?(ua+=ka.r*ka.r,xa+=ka.g*ka.g,ya+=ka.b*ka.b):(ua+=ka.r,xa+=ka.g,ya+=ka.b)):Aa instanceof THREE.DirectionalLight?(Ma+=1,Aa.visible&&(fa.setFromMatrixPosition(Aa.matrixWorld),
pa.setFromMatrixPosition(Aa.target.matrixWorld),fa.sub(pa),fa.normalize(),Hb=3*Ya,Sa[Hb]=fa.x,Sa[Hb+1]=fa.y,Sa[Hb+2]=fa.z,G.gammaInput?A(Qa,Hb,ka,ta*ta):N(Qa,Hb,ka,ta),Ya+=1)):Aa instanceof THREE.PointLight?(O+=1,Aa.visible&&(Ib=3*lb,G.gammaInput?A($a,Ib,ka,ta*ta):N($a,Ib,ka,ta),pa.setFromMatrixPosition(Aa.matrixWorld),ob[Ib]=pa.x,ob[Ib+1]=pa.y,ob[Ib+2]=pa.z,sb[lb]=Na,lb+=1)):Aa instanceof THREE.SpotLight?(ab+=1,Aa.visible&&(db=3*Wa,G.gammaInput?A(pb,db,ka,ta*ta):N(pb,db,ka,ta),fa.setFromMatrixPosition(Aa.matrixWorld),
tb[db]=fa.x,tb[db+1]=fa.y,tb[db+2]=fa.z,Bb[Wa]=Na,pa.setFromMatrixPosition(Aa.target.matrixWorld),fa.sub(pa),fa.normalize(),kb[db]=fa.x,kb[db+1]=fa.y,kb[db+2]=fa.z,ub[Wa]=Math.cos(Aa.angle),Eb[Wa]=Aa.exponent,Wa+=1)):Aa instanceof THREE.HemisphereLight&&(mb+=1,Aa.visible&&(fa.setFromMatrixPosition(Aa.matrixWorld),fa.normalize(),Ta=3*wa,qb[Ta]=fa.x,qb[Ta+1]=fa.y,qb[Ta+2]=fa.z,Ca=Aa.color,Ia=Aa.groundColor,G.gammaInput?(Ra=ta*ta,A(Fb,Ta,Ca,Ra),A(Gb,Ta,Ia,Ra)):(N(Fb,Ta,Ca,ta),N(Gb,Ta,Ia,ta)),wa+=1)));
ba=3*Ya;for(ha=Math.max(Qa.length,3*Ma);ba<ha;ba++)Qa[ba]=0;ba=3*lb;for(ha=Math.max($a.length,3*O);ba<ha;ba++)$a[ba]=0;ba=3*Wa;for(ha=Math.max(pb.length,3*ab);ba<ha;ba++)pb[ba]=0;ba=3*wa;for(ha=Math.max(Fb.length,3*mb);ba<ha;ba++)Fb[ba]=0;ba=3*wa;for(ha=Math.max(Gb.length,3*mb);ba<ha;ba++)Gb[ba]=0;Ja.directional.length=Ya;Ja.point.length=lb;Ja.spot.length=Wa;Ja.hemi.length=wa;Ja.ambient[0]=ua;Ja.ambient[1]=xa;Ja.ambient[2]=ya;Ub=!1}if(oa){var Ka=kc;S.ambientLightColor.value=Ka.ambient;S.directionalLightColor.value=
Ka.directional.colors;S.directionalLightDirection.value=Ka.directional.positions;S.pointLightColor.value=Ka.point.colors;S.pointLightPosition.value=Ka.point.positions;S.pointLightDistance.value=Ka.point.distances;S.spotLightColor.value=Ka.spot.colors;S.spotLightPosition.value=Ka.spot.positions;S.spotLightDistance.value=Ka.spot.distances;S.spotLightDirection.value=Ka.spot.directions;S.spotLightAngleCos.value=Ka.spot.anglesCos;S.spotLightExponent.value=Ka.spot.exponents;S.hemisphereLightSkyColor.value=
Ka.hemi.skyColors;S.hemisphereLightGroundColor.value=Ka.hemi.groundColors;S.hemisphereLightDirection.value=Ka.hemi.positions;B(S,!0)}else B(S,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){S.opacity.value=d.opacity;G.gammaInput?S.diffuse.value.copyGammaToLinear(d.color):S.diffuse.value=d.color;S.map.value=d.map;S.lightMap.value=d.lightMap;S.specularMap.value=d.specularMap;S.alphaMap.value=d.alphaMap;d.bumpMap&&(S.bumpMap.value=
d.bumpMap,S.bumpScale.value=d.bumpScale);d.normalMap&&(S.normalMap.value=d.normalMap,S.normalScale.value.copy(d.normalScale));var Ua;d.map?Ua=d.map:d.specularMap?Ua=d.specularMap:d.normalMap?Ua=d.normalMap:d.bumpMap?Ua=d.bumpMap:d.alphaMap&&(Ua=d.alphaMap);if(void 0!==Ua){var eb=Ua.offset,Ab=Ua.repeat;S.offsetRepeat.value.set(eb.x,eb.y,Ab.x,Ab.y)}S.envMap.value=d.envMap;S.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;S.reflectivity.value=d.reflectivity;S.refractionRatio.value=
d.refractionRatio;S.combine.value=d.combine;S.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(S.diffuse.value=d.color,S.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(S.diffuse.value=d.color,S.opacity.value=d.opacity,S.dashSize.value=d.dashSize,S.totalSize.value=d.dashSize+d.gapSize,S.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(S.psColor.value=d.color,S.opacity.value=d.opacity,S.size.value=d.size,
S.scale.value=V.height/2,S.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(S.shininess.value=d.shininess,G.gammaInput?(S.ambient.value.copyGammaToLinear(d.ambient),S.emissive.value.copyGammaToLinear(d.emissive),S.specular.value.copyGammaToLinear(d.specular)):(S.ambient.value=d.ambient,S.emissive.value=d.emissive,S.specular.value=d.specular),d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(G.gammaInput?(S.ambient.value.copyGammaToLinear(d.ambient),S.emissive.value.copyGammaToLinear(d.emissive)):
(S.ambient.value=d.ambient,S.emissive.value=d.emissive),d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(S.mNear.value=a.near,S.mFar.value=a.far,S.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(S.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&S.shadowMatrix)for(var Ob=0,xb=0,F=b.length;xb<F;xb++){var rb=b[xb];rb.castShadow&&(rb instanceof THREE.SpotLight||rb instanceof THREE.DirectionalLight&&!rb.shadowCascade)&&(S.shadowMap.value[Ob]=
rb.shadowMap,S.shadowMapSize.value[Ob]=rb.shadowMapSize,S.shadowMatrix.value[Ob]=rb.shadowMatrix,S.shadowDarkness.value[Ob]=rb.shadowDarkness,S.shadowBias.value[Ob]=rb.shadowBias,Ob++)}for(var Cb=d.uniformsList,Fa,Pb,nb,wb=0,Tb=Cb.length;wb<Tb;wb++){var ra=Cb[wb][0];if(!1!==ra.needsUpdate){var Mb=ra.type,X=ra.value,W=Cb[wb][1];switch(Mb){case "1i":l.uniform1i(W,X);break;case "1f":l.uniform1f(W,X);break;case "2f":l.uniform2f(W,X[0],X[1]);break;case "3f":l.uniform3f(W,X[0],X[1],X[2]);break;case "4f":l.uniform4f(W,
X[0],X[1],X[2],X[3]);break;case "1iv":l.uniform1iv(W,X);break;case "3iv":l.uniform3iv(W,X);break;case "1fv":l.uniform1fv(W,X);break;case "2fv":l.uniform2fv(W,X);break;case "3fv":l.uniform3fv(W,X);break;case "4fv":l.uniform4fv(W,X);break;case "Matrix3fv":l.uniformMatrix3fv(W,!1,X);break;case "Matrix4fv":l.uniformMatrix4fv(W,!1,X);break;case "i":l.uniform1i(W,X);break;case "f":l.uniform1f(W,X);break;case "v2":l.uniform2f(W,X.x,X.y);break;case "v3":l.uniform3f(W,X.x,X.y,X.z);break;case "v4":l.uniform4f(W,
X.x,X.y,X.z,X.w);break;case "c":l.uniform3f(W,X.r,X.g,X.b);break;case "iv1":l.uniform1iv(W,X);break;case "iv":l.uniform3iv(W,X);break;case "fv1":l.uniform1fv(W,X);break;case "fv":l.uniform3fv(W,X);break;case "v2v":void 0===ra._array&&(ra._array=new Float32Array(2*X.length));for(var ea=0,fb=X.length;ea<fb;ea++)nb=2*ea,ra._array[nb]=X[ea].x,ra._array[nb+1]=X[ea].y;l.uniform2fv(W,ra._array);break;case "v3v":void 0===ra._array&&(ra._array=new Float32Array(3*X.length));ea=0;for(fb=X.length;ea<fb;ea++)nb=
3*ea,ra._array[nb]=X[ea].x,ra._array[nb+1]=X[ea].y,ra._array[nb+2]=X[ea].z;l.uniform3fv(W,ra._array);break;case "v4v":void 0===ra._array&&(ra._array=new Float32Array(4*X.length));ea=0;for(fb=X.length;ea<fb;ea++)nb=4*ea,ra._array[nb]=X[ea].x,ra._array[nb+1]=X[ea].y,ra._array[nb+2]=X[ea].z,ra._array[nb+3]=X[ea].w;l.uniform4fv(W,ra._array);break;case "m3":l.uniformMatrix3fv(W,!1,X.elements);break;case "m3v":void 0===ra._array&&(ra._array=new Float32Array(9*X.length));ea=0;for(fb=X.length;ea<fb;ea++)X[ea].flattenToArrayOffset(ra._array,
9*ea);l.uniformMatrix3fv(W,!1,ra._array);break;case "m4":l.uniformMatrix4fv(W,!1,X.elements);break;case "m4v":void 0===ra._array&&(ra._array=new Float32Array(16*X.length));ea=0;for(fb=X.length;ea<fb;ea++)X[ea].flattenToArrayOffset(ra._array,16*ea);l.uniformMatrix4fv(W,!1,ra._array);break;case "t":Fa=X;Pb=D();l.uniform1i(W,Pb);if(!Fa)continue;if(Fa instanceof THREE.CubeTexture||Fa.image instanceof Array&&6===Fa.image.length){var Va=Fa,Nb=Pb;if(6===Va.image.length)if(Va.needsUpdate){Va.image.__webglTextureCube||
(Va.addEventListener("dispose",sc),Va.image.__webglTextureCube=l.createTexture(),G.info.memory.textures++);l.activeTexture(l.TEXTURE0+Nb);l.bindTexture(l.TEXTURE_CUBE_MAP,Va.image.__webglTextureCube);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,Va.flipY);for(var $b=Va instanceof THREE.CompressedTexture,Qb=[],gb=0;6>gb;gb++)Qb[gb]=G.autoScaleCubemaps&&!$b?M(Va.image[gb],Mc):Va.image[gb];var Ba=Qb[0],ac=THREE.Math.isPowerOfTwo(Ba.width)&&THREE.Math.isPowerOfTwo(Ba.height),Db=L(Va.format),Vb=L(Va.type);R(l.TEXTURE_CUBE_MAP,
Va,ac);for(gb=0;6>gb;gb++)if($b)for(var vb,bc=Qb[gb].mipmaps,va=0,fc=bc.length;va<fc;va++)vb=bc[va],Va.format!==THREE.RGBAFormat?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,va,Db,vb.width,vb.height,0,vb.data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,va,Db,vb.width,vb.height,0,Db,Vb,vb.data);else l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,0,Db,Db,Vb,Qb[gb]);Va.generateMipmaps&&ac&&l.generateMipmap(l.TEXTURE_CUBE_MAP);Va.needsUpdate=!1;if(Va.onUpdate)Va.onUpdate()}else l.activeTexture(l.TEXTURE0+
Nb),l.bindTexture(l.TEXTURE_CUBE_MAP,Va.image.__webglTextureCube)}else if(Fa instanceof THREE.WebGLRenderTargetCube){var Zb=Fa;l.activeTexture(l.TEXTURE0+Pb);l.bindTexture(l.TEXTURE_CUBE_MAP,Zb.__webglTexture)}else G.setTexture(Fa,Pb);break;case "tv":void 0===ra._array&&(ra._array=[]);ea=0;for(fb=ra.value.length;ea<fb;ea++)ra._array[ea]=D();l.uniform1iv(W,ra._array);ea=0;for(fb=ra.value.length;ea<fb;ea++)Fa=ra.value[ea],Pb=ra._array[ea],Fa&&G.setTexture(Fa,Pb);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+
Mb)}}}}l.uniformMatrix4fv(la.modelViewMatrix,!1,e._modelViewMatrix.elements);la.normalMatrix&&l.uniformMatrix3fv(la.normalMatrix,!1,e._normalMatrix.elements);null!==la.modelMatrix&&l.uniformMatrix4fv(la.modelMatrix,!1,e.matrixWorld.elements);return na}function B(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.spotLightColor.needsUpdate=
b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function D(){var a=Ha;a>=xc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+xc);Ha+=1;return a}function w(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,
a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function A(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 N(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function P(a){a!==ha&&(l.lineWidth(a),ha=a)}function K(a,b,c){pb!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),pb=a);!a||Na===b&&Ca===c||(l.polygonOffset(b,c),Na=b,Ca=c)}function R(a,b,c){c?(l.texParameteri(a,l.TEXTURE_WRAP_S,L(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,L(b.wrapT)),
l.texParameteri(a,l.TEXTURE_MAG_FILTER,L(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,L(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_MAG_FILTER,T(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,T(b.minFilter)));wb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(l.texParameterf(a,wb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,yc)),b.__oldAnisotropy=b.anisotropy)}
function M(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+".");return d}return a}function H(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,
l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a)):l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,b.height)}function C(a){a instanceof THREE.WebGLRenderTargetCube?(l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture),l.generateMipmap(l.TEXTURE_CUBE_MAP),
l.bindTexture(l.TEXTURE_CUBE_MAP,null)):(l.bindTexture(l.TEXTURE_2D,a.__webglTexture),l.generateMipmap(l.TEXTURE_2D),l.bindTexture(l.TEXTURE_2D,null))}function T(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?l.NEAREST:l.LINEAR}function L(a){if(a===THREE.RepeatWrapping)return l.REPEAT;if(a===THREE.ClampToEdgeWrapping)return l.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return l.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return l.NEAREST;
if(a===THREE.NearestMipMapNearestFilter)return l.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return l.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return l.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return l.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return l.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return l.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return l.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return l.UNSIGNED_SHORT_5_5_5_1;
if(a===THREE.UnsignedShort565Type)return l.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return l.BYTE;if(a===THREE.ShortType)return l.SHORT;if(a===THREE.UnsignedShortType)return l.UNSIGNED_SHORT;if(a===THREE.IntType)return l.INT;if(a===THREE.UnsignedIntType)return l.UNSIGNED_INT;if(a===THREE.FloatType)return l.FLOAT;if(a===THREE.AlphaFormat)return l.ALPHA;if(a===THREE.RGBFormat)return l.RGB;if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return l.LUMINANCE_ALPHA;
if(a===THREE.AddEquation)return l.FUNC_ADD;if(a===THREE.SubtractEquation)return l.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return l.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return l.ZERO;if(a===THREE.OneFactor)return l.ONE;if(a===THREE.SrcColorFactor)return l.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return l.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA;
if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;if(void 0!==sb){if(a===THREE.RGB_S3TC_DXT1_Format)return sb.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return sb.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return sb.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return sb.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}
console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var V=void 0!==a.canvas?a.canvas:document.createElement("canvas"),J=void 0!==a.context?a.context:null,Y=void 0!==a.precision?a.precision:"highp",aa=void 0!==a.alpha?a.alpha:!1,na=void 0!==a.depth?a.depth:!0,I=void 0!==a.stencil?a.stencil:!0,ba=void 0!==a.antialias?a.antialias:!1,Q=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ca=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,Ga=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:
!1,Ea=new THREE.Color(0),Oa=0,Pa=[],La={},la=[],bb=[],sa=[];this.domElement=V;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 G=this,cb=[],jb=null,ob=null,qa=-1,oa=null,Za=null,Ha=0,ya=-1,Ia=-1,ua=-1,ka=-1,da=-1,xa=-1,ta=-1,Sa=-1,pb=null,Na=null,Ca=null,ha=null,Qa=0,Tb=0,Mb=V.width,Nb=V.height,Zb=0,jc=0,tb=new Uint8Array(16),Eb=new Uint8Array(16),zc=new THREE.Frustum,tc=new THREE.Matrix4,
Ac=new THREE.Matrix4,pa=new THREE.Vector3,fa=new THREE.Vector3,Ub=!0,kc={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:[]}},l,Ab,xb,wb,sb,Bb;(function(){try{var a={alpha:aa,depth:na,stencil:I,antialias:ba,premultipliedAlpha:Q,preserveDrawingBuffer:ca};l=J||V.getContext("webgl",a)||V.getContext("experimental-webgl",
a);if(null===l)throw"Error creating WebGL context.";}catch(b){console.error(b)}Ab=l.getExtension("OES_texture_float");l.getExtension("OES_texture_float_linear");xb=l.getExtension("OES_standard_derivatives");wb=l.getExtension("EXT_texture_filter_anisotropic")||l.getExtension("MOZ_EXT_texture_filter_anisotropic")||l.getExtension("WEBKIT_EXT_texture_filter_anisotropic");sb=l.getExtension("WEBGL_compressed_texture_s3tc")||l.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||l.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
Bb=l.getExtension("OES_element_index_uint");null===Ab&&console.log("THREE.WebGLRenderer: Float textures not supported.");null===xb&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===wb&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");null===sb&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===Bb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===l.getShaderPrecisionFormat&&
(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});Ga&&l.getExtension("EXT_frag_depth")})();l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(Qa,Tb,Mb,Nb);l.clearColor(Ea.r,Ea.g,Ea.b,Oa);this.context=l;var xc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Nc=
l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Oc=l.getParameter(l.MAX_TEXTURE_SIZE),Mc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),yc=wb?l.getParameter(wb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,rc=0<Nc,ic=rc&&Ab;sb&&l.getParameter(l.COMPRESSED_TEXTURE_FORMATS);var Pc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),Qc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var Rc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),
d(e,p);w=z.attributes&&u(z);if(p.verticesNeedUpdate||p.colorsNeedUpdate||p.lineDistancesNeedUpdate||w){var ac=l.DYNAMIC_DRAW,Db,Vb,vb,bc,ua,fc,Ub=p.vertices,Eb=p.colors,Ab=p.lineDistances,Tb=Ub.length,Mb=Eb.length,Nb=Ab.length,tb=p.__vertexArray,Bb=p.__colorArray,ic=p.__lineDistanceArray,rc=p.colorsNeedUpdate,sc=p.lineDistancesNeedUpdate,Cc=p.__webglCustomAttributesList,uc,Zb,Xa,gc,hb,Ca;if(p.verticesNeedUpdate){for(Db=0;Db<Tb;Db++)bc=Ub[Db],ua=3*Db,tb[ua]=bc.x,tb[ua+1]=bc.y,tb[ua+2]=bc.z;l.bindBuffer(l.ARRAY_BUFFER,
p.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,tb,ac)}if(rc){for(Vb=0;Vb<Mb;Vb++)fc=Eb[Vb],ua=3*Vb,Bb[ua]=fc.r,Bb[ua+1]=fc.g,Bb[ua+2]=fc.b;l.bindBuffer(l.ARRAY_BUFFER,p.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Bb,ac)}if(sc){for(vb=0;vb<Nb;vb++)ic[vb]=Ab[vb];l.bindBuffer(l.ARRAY_BUFFER,p.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,ic,ac)}if(Cc)for(uc=0,Zb=Cc.length;uc<Zb;uc++)if(Ca=Cc[uc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){ua=0;gc=Ca.value.length;
if(1===Ca.size)for(Xa=0;Xa<gc;Xa++)Ca.array[Xa]=Ca.value[Xa];else if(2===Ca.size)for(Xa=0;Xa<gc;Xa++)hb=Ca.value[Xa],Ca.array[ua]=hb.x,Ca.array[ua+1]=hb.y,ua+=2;else if(3===Ca.size)if("c"===Ca.type)for(Xa=0;Xa<gc;Xa++)hb=Ca.value[Xa],Ca.array[ua]=hb.r,Ca.array[ua+1]=hb.g,Ca.array[ua+2]=hb.b,ua+=3;else for(Xa=0;Xa<gc;Xa++)hb=Ca.value[Xa],Ca.array[ua]=hb.x,Ca.array[ua+1]=hb.y,Ca.array[ua+2]=hb.z,ua+=3;else if(4===Ca.size)for(Xa=0;Xa<gc;Xa++)hb=Ca.value[Xa],Ca.array[ua]=hb.x,Ca.array[ua+1]=hb.y,Ca.array[ua+
2]=hb.z,Ca.array[ua+3]=hb.w,ua+=4;l.bindBuffer(l.ARRAY_BUFFER,Ca.buffer);l.bufferData(l.ARRAY_BUFFER,Ca.array,ac)}}p.verticesNeedUpdate=!1;p.colorsNeedUpdate=!1;p.lineDistancesNeedUpdate=!1;z.attributes&&E(z)}else if(e instanceof THREE.PointCloud){z=d(e,p);w=z.attributes&&u(z);if(p.verticesNeedUpdate||p.colorsNeedUpdate||e.sortParticles||w){var Dc=l.DYNAMIC_DRAW,ib,Jb,Kb,$,Lb,Wb,vc=p.vertices,Ec=vc.length,Fc=p.colors,jc=Fc.length,cc=p.__vertexArray,dc=p.__colorArray,Rb=p.__sortArray,kc=p.verticesNeedUpdate,
pc=p.colorsNeedUpdate,Sb=p.__webglCustomAttributesList,xb,hc,ma,yb,za,Z;if(e.sortParticles){Ac.copy(tc);Ac.multiply(e.matrixWorld);for(ib=0;ib<Ec;ib++)Kb=vc[ib],oa.copy(Kb),oa.applyProjection(Ac),Rb[ib]=[oa.z,ib];Rb.sort(n);for(ib=0;ib<Ec;ib++)Kb=vc[Rb[ib][1]],$=3*ib,cc[$]=Kb.x,cc[$+1]=Kb.y,cc[$+2]=Kb.z;for(Jb=0;Jb<jc;Jb++)$=3*Jb,Wb=Fc[Rb[Jb][1]],dc[$]=Wb.r,dc[$+1]=Wb.g,dc[$+2]=Wb.b;if(Sb)for(xb=0,hc=Sb.length;xb<hc;xb++)if(Z=Sb[xb],void 0===Z.boundTo||"vertices"===Z.boundTo)if($=0,yb=Z.value.length,
1===Z.size)for(ma=0;ma<yb;ma++)Lb=Rb[ma][1],Z.array[ma]=Z.value[Lb];else if(2===Z.size)for(ma=0;ma<yb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.x,Z.array[$+1]=za.y,$+=2;else if(3===Z.size)if("c"===Z.type)for(ma=0;ma<yb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.r,Z.array[$+1]=za.g,Z.array[$+2]=za.b,$+=3;else for(ma=0;ma<yb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,$+=3;else if(4===Z.size)for(ma=0;ma<yb;ma++)Lb=Rb[ma][1],za=Z.value[Lb],Z.array[$]=
za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,Z.array[$+3]=za.w,$+=4}else{if(kc)for(ib=0;ib<Ec;ib++)Kb=vc[ib],$=3*ib,cc[$]=Kb.x,cc[$+1]=Kb.y,cc[$+2]=Kb.z;if(pc)for(Jb=0;Jb<jc;Jb++)Wb=Fc[Jb],$=3*Jb,dc[$]=Wb.r,dc[$+1]=Wb.g,dc[$+2]=Wb.b;if(Sb)for(xb=0,hc=Sb.length;xb<hc;xb++)if(Z=Sb[xb],Z.needsUpdate&&(void 0===Z.boundTo||"vertices"===Z.boundTo))if(yb=Z.value.length,$=0,1===Z.size)for(ma=0;ma<yb;ma++)Z.array[ma]=Z.value[ma];else if(2===Z.size)for(ma=0;ma<yb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=
za.y,$+=2;else if(3===Z.size)if("c"===Z.type)for(ma=0;ma<yb;ma++)za=Z.value[ma],Z.array[$]=za.r,Z.array[$+1]=za.g,Z.array[$+2]=za.b,$+=3;else for(ma=0;ma<yb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,$+=3;else if(4===Z.size)for(ma=0;ma<yb;ma++)za=Z.value[ma],Z.array[$]=za.x,Z.array[$+1]=za.y,Z.array[$+2]=za.z,Z.array[$+3]=za.w,$+=4}if(kc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,p.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,cc,Dc);if(pc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,
p.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,dc,Dc);if(Sb)for(xb=0,hc=Sb.length;xb<hc;xb++)if(Z=Sb[xb],Z.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,Z.buffer),l.bufferData(l.ARRAY_BUFFER,Z.array,Dc)}p.verticesNeedUpdate=!1;p.colorsNeedUpdate=!1;z.attributes&&E(z)}for(var ec=0,Gc=s.length;ec<Gc;ec++){var wc=s[ec],Xb=wc,qc=Xb.object,xc=Xb.buffer,yc=qc.geometry,Yb=qc.material;Yb instanceof THREE.MeshFaceMaterial?(Yb=Yb.materials[yc instanceof THREE.BufferGeometry?0:xc.materialIndex],
Xb.material=Yb,Yb.transparent?sa.push(Xb):ab.push(Xb)):Yb&&(Xb.material=Yb,Yb.transparent?sa.push(Xb):ab.push(Xb));wc.render=!0;!0===G.sortObjects&&(null!==e.renderDepth?wc.z=e.renderDepth:(oa.setFromMatrixPosition(e.matrixWorld),oa.applyProjection(tc),wc.z=oa.z))}}}ec=0;for(Gc=e.children.length;ec<Gc;ec++)q(a,e.children[ec],f)}}function s(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)a[d].render(b,c,Zb,jc)}function t(a,b,c,d,e,g){for(var f,h,k,l=a.length-1;-1!==l;l--){f=a[l];h=f.object;k=
f.buffer;w(h,b);if(g)f=g;else{f=f.material;if(!f)continue;e&&G.setBlending(f.blending,f.blendEquation,f.blendSrc,f.blendDst);G.setDepthTest(f.depthTest);G.setDepthWrite(f.depthWrite);K(f.polygonOffset,f.polygonOffsetFactor,f.polygonOffsetUnits)}G.setMaterialFaces(f);k instanceof THREE.BufferGeometry?G.renderBufferDirect(b,c,d,f,k,h):G.renderBuffer(b,c,d,f,k,h)}}function r(a,b,c,d,e,f,g){for(var h,k,l=0,m=a.length;l<m;l++)if(h=a[l],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&G.setBlending(h.blending,
h.blendEquation,h.blendSrc,h.blendDst);G.setDepthTest(h.depthTest);G.setDepthWrite(h.depthWrite);K(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}G.renderImmediateObject(c,d,e,h,k)}}function p(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function v(a,b,d){var e=!1;a=b.material;if(void 0===d.geometryGroups||d.groupsNeedUpdate)delete Ka[b.id],d.makeGroups(a instanceof THREE.MeshFaceMaterial,Bb?4294967296:65535),d.groupsNeedUpdate=
!1;for(var f=0,g=d.geometryGroupsList.length;f<g;f++){a=d.geometryGroupsList[f];if(a.__webglVertexBuffer)e=!1;else{e=a;e.__webglVertexBuffer=l.createBuffer();e.__webglNormalBuffer=l.createBuffer();e.__webglTangentBuffer=l.createBuffer();e.__webglColorBuffer=l.createBuffer();e.__webglUVBuffer=l.createBuffer();e.__webglUV2Buffer=l.createBuffer();e.__webglSkinIndicesBuffer=l.createBuffer();e.__webglSkinWeightsBuffer=l.createBuffer();e.__webglFaceBuffer=l.createBuffer();e.__webglLineBuffer=l.createBuffer();
var h=void 0,k=void 0;if(e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],h=0,k=e.numMorphTargets;h<k;h++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],h=0,k=e.numMorphNormals;h<k;h++)e.__webglMorphNormalsBuffers.push(l.createBuffer());G.info.memory.geometries++;c(a,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;e=d.colorsNeedUpdate=
!0}(e||void 0===b.__webglActive)&&x(Ka,a,b)}b.__webglActive=!0}function x(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 u(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function E(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function y(a){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete Ka[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=
la,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglActive}function z(a,b,c,d,e){var f,g,h,k;Ha=0;if(d.needsUpdate){d.program&&pc(d);d.addEventListener("dispose",qc);var m;d instanceof THREE.MeshDepthMaterial?m="depth":d instanceof THREE.MeshNormalMaterial?m="normal":d instanceof THREE.MeshBasicMaterial?m="basic":d instanceof THREE.MeshLambertMaterial?m="lambert":d instanceof THREE.MeshPhongMaterial?m="phong":d instanceof THREE.LineBasicMaterial?m="basic":d instanceof THREE.LineDashedMaterial?
m="dashed":d instanceof THREE.PointCloudMaterial&&(m="particle_basic");if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=0,r=0,s=0,q=0,t=0,u=b.length;t<u;t++){var v=b[t];v.onlyShadow||!1===v.visible||(v instanceof THREE.DirectionalLight&&p++,v instanceof THREE.PointLight&&r++,v instanceof
THREE.SpotLight&&s++,v instanceof THREE.HemisphereLight&&q++)}f=p;g=r;h=s;k=q;for(var x,y=0,w=0,E=b.length;w<E;w++){var z=b[w];z.castShadow&&(z instanceof THREE.SpotLight&&y++,z instanceof THREE.DirectionalLight&&!z.shadowCascade&&y++)}x=y;var C;if(ic&&e&&e.skeleton&&e.skeleton.useVertexTexture)C=1024;else{var K=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),H=Math.floor((K-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(H=Math.min(e.skeleton.bones.length,H),H<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+
e.skeleton.bones.length+", this GPU supports just "+H+" (try OpenGL instead of ANGLE)"));C=H}var P={precision:Y,supportsVertexTextures:rc,map:!!d.map,envMap:!!d.envMap,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:Ga,skinning:d.skinning,maxBones:C,useVertexTexture:ic&&e&&e.skeleton&&e.skeleton.useVertexTexture,
morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:G.maxMorphTargets,maxMorphNormals:G.maxMorphNormals,maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:x,shadowMapEnabled:G.shadowMapEnabled&&e.receiveShadow&&0<x,shadowMapType:G.shadowMapType,shadowMapDebug:G.shadowMapDebug,shadowMapCascade:G.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},J=[];m?J.push(m):
(J.push(d.fragmentShader),J.push(d.vertexShader));if(void 0!==d.defines)for(var I in d.defines)J.push(I),J.push(d.defines[I]);for(I in P)J.push(I),J.push(P[I]);for(var T=J.join(),Q,aa=0,Da=bb.length;aa<Da;aa++){var ca=bb[aa];if(ca.code===T){Q=ca;Q.usedTimes++;break}}void 0===Q&&(Q=new THREE.WebGLProgram(G,T,d,P),bb.push(Q),G.info.memory.programs=bb.length);d.program=Q;var Oa=Q.attributes;if(d.morphTargets){d.numSupportedMorphTargets=0;for(var da,Na="morphTarget",sa=0;sa<G.maxMorphTargets;sa++)da=
Na+sa,0<=Oa[da]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,Na="morphNormal",sa=0;sa<G.maxMorphNormals;sa++)da=Na+sa,0<=Oa[da]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var Ka in d.__webglShader.uniforms){var ia=d.program.uniforms[Ka];ia&&d.uniformsList.push([d.__webglShader.uniforms[Ka],ia])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(G.maxMorphTargets));var ja=!1,ga=!1,pa=!1,na=
d.program,la=na.uniforms,S=d.__webglShader.uniforms;na.id!==nb&&(l.useProgram(na.program),nb=na.id,pa=ga=ja=!0);d.id!==qa&&(-1===qa&&(pa=!0),qa=d.id,ga=!0);if(ja||a!==cb)l.uniformMatrix4fv(la.projectionMatrix,!1,a.projectionMatrix.elements),Ga&&l.uniform1f(la.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==cb&&(cb=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==la.cameraPosition&&(oa.setFromMatrixPosition(a.matrixWorld),l.uniform3f(la.cameraPosition,
oa.x,oa.y,oa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==la.viewMatrix&&l.uniformMatrix4fv(la.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==la.bindMatrix&&l.uniformMatrix4fv(la.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==la.bindMatrixInverse&&l.uniformMatrix4fv(la.bindMatrixInverse,!1,e.bindMatrixInverse.elements),ic&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==
la.boneTexture){var ab=D();l.uniform1i(la.boneTexture,ab);G.setTexture(e.skeleton.boneTexture,ab)}null!==la.boneTextureWidth&&l.uniform1i(la.boneTextureWidth,e.skeleton.boneTextureWidth);null!==la.boneTextureHeight&&l.uniform1i(la.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==la.boneGlobalMatrices&&l.uniformMatrix4fv(la.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(ga){c&&d.fog&&(S.fogColor.value=c.color,c instanceof THREE.Fog?(S.fogNear.value=
c.near,S.fogFar.value=c.far):c instanceof THREE.FogExp2&&(S.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ub){var pa=!0,ba,ha,Aa,va=0,xa=0,ya=0,ka,Ea,La,ta,Ra,Qa,Ia=kc,Pa=Ia.directional.colors,Va=Ia.directional.positions,Za=Ia.point.colors,ob=Ia.point.positions,sb=Ia.point.distances,pb=Ia.spot.colors,tb=Ia.spot.positions,Bb=Ia.spot.distances,jb=Ia.spot.directions,ub=Ia.spot.anglesCos,Eb=Ia.spot.exponents,Fb=Ia.hemi.skyColors,
Gb=Ia.hemi.groundColors,qb=Ia.hemi.positions,Ya=0,kb=0,Wa=0,wa=0,Ma=0,O=0,$a=0,lb=0,Hb=0,Ib=0,db=0,Sa=0;ba=0;for(ha=b.length;ba<ha;ba++)Aa=b[ba],Aa.onlyShadow||(ka=Aa.color,ta=Aa.intensity,Qa=Aa.distance,Aa instanceof THREE.AmbientLight?Aa.visible&&(G.gammaInput?(va+=ka.r*ka.r,xa+=ka.g*ka.g,ya+=ka.b*ka.b):(va+=ka.r,xa+=ka.g,ya+=ka.b)):Aa instanceof THREE.DirectionalLight?(Ma+=1,Aa.visible&&(fa.setFromMatrixPosition(Aa.matrixWorld),oa.setFromMatrixPosition(Aa.target.matrixWorld),fa.sub(oa),fa.normalize(),
Hb=3*Ya,Va[Hb]=fa.x,Va[Hb+1]=fa.y,Va[Hb+2]=fa.z,G.gammaInput?A(Pa,Hb,ka,ta*ta):N(Pa,Hb,ka,ta),Ya+=1)):Aa instanceof THREE.PointLight?(O+=1,Aa.visible&&(Ib=3*kb,G.gammaInput?A(Za,Ib,ka,ta*ta):N(Za,Ib,ka,ta),oa.setFromMatrixPosition(Aa.matrixWorld),ob[Ib]=oa.x,ob[Ib+1]=oa.y,ob[Ib+2]=oa.z,sb[kb]=Qa,kb+=1)):Aa instanceof THREE.SpotLight?($a+=1,Aa.visible&&(db=3*Wa,G.gammaInput?A(pb,db,ka,ta*ta):N(pb,db,ka,ta),fa.setFromMatrixPosition(Aa.matrixWorld),tb[db]=fa.x,tb[db+1]=fa.y,tb[db+2]=fa.z,Bb[Wa]=Qa,oa.setFromMatrixPosition(Aa.target.matrixWorld),
fa.sub(oa),fa.normalize(),jb[db]=fa.x,jb[db+1]=fa.y,jb[db+2]=fa.z,ub[Wa]=Math.cos(Aa.angle),Eb[Wa]=Aa.exponent,Wa+=1)):Aa instanceof THREE.HemisphereLight&&(lb+=1,Aa.visible&&(fa.setFromMatrixPosition(Aa.matrixWorld),fa.normalize(),Sa=3*wa,qb[Sa]=fa.x,qb[Sa+1]=fa.y,qb[Sa+2]=fa.z,Ea=Aa.color,La=Aa.groundColor,G.gammaInput?(Ra=ta*ta,A(Fb,Sa,Ea,Ra),A(Gb,Sa,La,Ra)):(N(Fb,Sa,Ea,ta),N(Gb,Sa,La,ta)),wa+=1)));ba=3*Ya;for(ha=Math.max(Pa.length,3*Ma);ba<ha;ba++)Pa[ba]=0;ba=3*kb;for(ha=Math.max(Za.length,3*
O);ba<ha;ba++)Za[ba]=0;ba=3*Wa;for(ha=Math.max(pb.length,3*$a);ba<ha;ba++)pb[ba]=0;ba=3*wa;for(ha=Math.max(Fb.length,3*lb);ba<ha;ba++)Fb[ba]=0;ba=3*wa;for(ha=Math.max(Gb.length,3*lb);ba<ha;ba++)Gb[ba]=0;Ia.directional.length=Ya;Ia.point.length=kb;Ia.spot.length=Wa;Ia.hemi.length=wa;Ia.ambient[0]=va;Ia.ambient[1]=xa;Ia.ambient[2]=ya;Ub=!1}if(pa){var Ja=kc;S.ambientLightColor.value=Ja.ambient;S.directionalLightColor.value=Ja.directional.colors;S.directionalLightDirection.value=Ja.directional.positions;
S.pointLightColor.value=Ja.point.colors;S.pointLightPosition.value=Ja.point.positions;S.pointLightDistance.value=Ja.point.distances;S.spotLightColor.value=Ja.spot.colors;S.spotLightPosition.value=Ja.spot.positions;S.spotLightDistance.value=Ja.spot.distances;S.spotLightDirection.value=Ja.spot.directions;S.spotLightAngleCos.value=Ja.spot.anglesCos;S.spotLightExponent.value=Ja.spot.exponents;S.hemisphereLightSkyColor.value=Ja.hemi.skyColors;S.hemisphereLightGroundColor.value=Ja.hemi.groundColors;S.hemisphereLightDirection.value=
Ja.hemi.positions;B(S,!0)}else B(S,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){S.opacity.value=d.opacity;G.gammaInput?S.diffuse.value.copyGammaToLinear(d.color):S.diffuse.value=d.color;S.map.value=d.map;S.lightMap.value=d.lightMap;S.specularMap.value=d.specularMap;S.alphaMap.value=d.alphaMap;d.bumpMap&&(S.bumpMap.value=d.bumpMap,S.bumpScale.value=d.bumpScale);d.normalMap&&(S.normalMap.value=d.normalMap,S.normalScale.value.copy(d.normalScale));
var Ta;d.map?Ta=d.map:d.specularMap?Ta=d.specularMap:d.normalMap?Ta=d.normalMap:d.bumpMap?Ta=d.bumpMap:d.alphaMap&&(Ta=d.alphaMap);if(void 0!==Ta){var eb=Ta.offset,Ab=Ta.repeat;S.offsetRepeat.value.set(eb.x,eb.y,Ab.x,Ab.y)}S.envMap.value=d.envMap;S.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;S.reflectivity.value=d.reflectivity;S.refractionRatio.value=d.refractionRatio;S.combine.value=d.combine;S.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof
THREE.LineBasicMaterial?(S.diffuse.value=d.color,S.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(S.diffuse.value=d.color,S.opacity.value=d.opacity,S.dashSize.value=d.dashSize,S.totalSize.value=d.dashSize+d.gapSize,S.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(S.psColor.value=d.color,S.opacity.value=d.opacity,S.size.value=d.size,S.scale.value=V.height/2,S.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(S.shininess.value=d.shininess,G.gammaInput?(S.ambient.value.copyGammaToLinear(d.ambient),
S.emissive.value.copyGammaToLinear(d.emissive),S.specular.value.copyGammaToLinear(d.specular)):(S.ambient.value=d.ambient,S.emissive.value=d.emissive,S.specular.value=d.specular),d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(G.gammaInput?(S.ambient.value.copyGammaToLinear(d.ambient),S.emissive.value.copyGammaToLinear(d.emissive)):(S.ambient.value=d.ambient,S.emissive.value=d.emissive),d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?
(S.mNear.value=a.near,S.mFar.value=a.far,S.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(S.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&S.shadowMatrix)for(var Ob=0,zb=0,F=b.length;zb<F;zb++){var rb=b[zb];rb.castShadow&&(rb instanceof THREE.SpotLight||rb instanceof THREE.DirectionalLight&&!rb.shadowCascade)&&(S.shadowMap.value[Ob]=rb.shadowMap,S.shadowMapSize.value[Ob]=rb.shadowMapSize,S.shadowMatrix.value[Ob]=rb.shadowMatrix,S.shadowDarkness.value[Ob]=rb.shadowDarkness,
S.shadowBias.value[Ob]=rb.shadowBias,Ob++)}for(var Cb=d.uniformsList,Fa,Pb,mb,wb=0,Tb=Cb.length;wb<Tb;wb++){var ra=Cb[wb][0];if(!1!==ra.needsUpdate){var Mb=ra.type,X=ra.value,W=Cb[wb][1];switch(Mb){case "1i":l.uniform1i(W,X);break;case "1f":l.uniform1f(W,X);break;case "2f":l.uniform2f(W,X[0],X[1]);break;case "3f":l.uniform3f(W,X[0],X[1],X[2]);break;case "4f":l.uniform4f(W,X[0],X[1],X[2],X[3]);break;case "1iv":l.uniform1iv(W,X);break;case "3iv":l.uniform3iv(W,X);break;case "1fv":l.uniform1fv(W,X);
break;case "2fv":l.uniform2fv(W,X);break;case "3fv":l.uniform3fv(W,X);break;case "4fv":l.uniform4fv(W,X);break;case "Matrix3fv":l.uniformMatrix3fv(W,!1,X);break;case "Matrix4fv":l.uniformMatrix4fv(W,!1,X);break;case "i":l.uniform1i(W,X);break;case "f":l.uniform1f(W,X);break;case "v2":l.uniform2f(W,X.x,X.y);break;case "v3":l.uniform3f(W,X.x,X.y,X.z);break;case "v4":l.uniform4f(W,X.x,X.y,X.z,X.w);break;case "c":l.uniform3f(W,X.r,X.g,X.b);break;case "iv1":l.uniform1iv(W,X);break;case "iv":l.uniform3iv(W,
X);break;case "fv1":l.uniform1fv(W,X);break;case "fv":l.uniform3fv(W,X);break;case "v2v":void 0===ra._array&&(ra._array=new Float32Array(2*X.length));for(var ea=0,fb=X.length;ea<fb;ea++)mb=2*ea,ra._array[mb]=X[ea].x,ra._array[mb+1]=X[ea].y;l.uniform2fv(W,ra._array);break;case "v3v":void 0===ra._array&&(ra._array=new Float32Array(3*X.length));ea=0;for(fb=X.length;ea<fb;ea++)mb=3*ea,ra._array[mb]=X[ea].x,ra._array[mb+1]=X[ea].y,ra._array[mb+2]=X[ea].z;l.uniform3fv(W,ra._array);break;case "v4v":void 0===
ra._array&&(ra._array=new Float32Array(4*X.length));ea=0;for(fb=X.length;ea<fb;ea++)mb=4*ea,ra._array[mb]=X[ea].x,ra._array[mb+1]=X[ea].y,ra._array[mb+2]=X[ea].z,ra._array[mb+3]=X[ea].w;l.uniform4fv(W,ra._array);break;case "m3":l.uniformMatrix3fv(W,!1,X.elements);break;case "m3v":void 0===ra._array&&(ra._array=new Float32Array(9*X.length));ea=0;for(fb=X.length;ea<fb;ea++)X[ea].flattenToArrayOffset(ra._array,9*ea);l.uniformMatrix3fv(W,!1,ra._array);break;case "m4":l.uniformMatrix4fv(W,!1,X.elements);
break;case "m4v":void 0===ra._array&&(ra._array=new Float32Array(16*X.length));ea=0;for(fb=X.length;ea<fb;ea++)X[ea].flattenToArrayOffset(ra._array,16*ea);l.uniformMatrix4fv(W,!1,ra._array);break;case "t":Fa=X;Pb=D();l.uniform1i(W,Pb);if(!Fa)continue;if(Fa instanceof THREE.CubeTexture||Fa.image instanceof Array&&6===Fa.image.length){var Ua=Fa,Nb=Pb;if(6===Ua.image.length)if(Ua.needsUpdate){Ua.image.__webglTextureCube||(Ua.addEventListener("dispose",sc),Ua.image.__webglTextureCube=l.createTexture(),
G.info.memory.textures++);l.activeTexture(l.TEXTURE0+Nb);l.bindTexture(l.TEXTURE_CUBE_MAP,Ua.image.__webglTextureCube);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,Ua.flipY);for(var $b=Ua instanceof THREE.CompressedTexture,Qb=[],gb=0;6>gb;gb++)Qb[gb]=G.autoScaleCubemaps&&!$b?M(Ua.image[gb],Mc):Ua.image[gb];var Ba=Qb[0],ac=THREE.Math.isPowerOfTwo(Ba.width)&&THREE.Math.isPowerOfTwo(Ba.height),Db=L(Ua.format),Vb=L(Ua.type);R(l.TEXTURE_CUBE_MAP,Ua,ac);for(gb=0;6>gb;gb++)if($b)for(var vb,bc=Qb[gb].mipmaps,ua=0,
fc=bc.length;ua<fc;ua++)vb=bc[ua],Ua.format!==THREE.RGBAFormat?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,ua,Db,vb.width,vb.height,0,vb.data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,ua,Db,vb.width,vb.height,0,Db,Vb,vb.data);else l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+gb,0,Db,Db,Vb,Qb[gb]);Ua.generateMipmaps&&ac&&l.generateMipmap(l.TEXTURE_CUBE_MAP);Ua.needsUpdate=!1;if(Ua.onUpdate)Ua.onUpdate()}else l.activeTexture(l.TEXTURE0+Nb),l.bindTexture(l.TEXTURE_CUBE_MAP,Ua.image.__webglTextureCube)}else if(Fa instanceof
THREE.WebGLRenderTargetCube){var Zb=Fa;l.activeTexture(l.TEXTURE0+Pb);l.bindTexture(l.TEXTURE_CUBE_MAP,Zb.__webglTexture)}else G.setTexture(Fa,Pb);break;case "tv":void 0===ra._array&&(ra._array=[]);ea=0;for(fb=ra.value.length;ea<fb;ea++)ra._array[ea]=D();l.uniform1iv(W,ra._array);ea=0;for(fb=ra.value.length;ea<fb;ea++)Fa=ra.value[ea],Pb=ra._array[ea],Fa&&G.setTexture(Fa,Pb);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Mb)}}}}l.uniformMatrix4fv(la.modelViewMatrix,!1,e._modelViewMatrix.elements);
la.normalMatrix&&l.uniformMatrix3fv(la.normalMatrix,!1,e._normalMatrix.elements);null!==la.modelMatrix&&l.uniformMatrix4fv(la.modelMatrix,!1,e.matrixWorld.elements);return na}function B(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=
b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function D(){var a=Ha;a>=xc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+xc);Ha+=1;return a}function w(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}
function A(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 N(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function P(a){a!==ha&&(l.lineWidth(a),ha=a)}function K(a,b,c){pb!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),pb=a);!a||ta===b&&ka===c||(l.polygonOffset(b,c),ta=b,ka=c)}function R(a,b,c){c?(l.texParameteri(a,l.TEXTURE_WRAP_S,L(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,L(b.wrapT)),l.texParameteri(a,l.TEXTURE_MAG_FILTER,L(b.magFilter)),l.texParameteri(a,
l.TEXTURE_MIN_FILTER,L(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_MAG_FILTER,T(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,T(b.minFilter)));zb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(l.texParameterf(a,zb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,yc)),b.__oldAnisotropy=b.anisotropy)}function M(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),
d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+".");return d}return a}function H(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,
l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a)):l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,b.height)}function C(a){a instanceof THREE.WebGLRenderTargetCube?(l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture),l.generateMipmap(l.TEXTURE_CUBE_MAP),l.bindTexture(l.TEXTURE_CUBE_MAP,null)):(l.bindTexture(l.TEXTURE_2D,
a.__webglTexture),l.generateMipmap(l.TEXTURE_2D),l.bindTexture(l.TEXTURE_2D,null))}function T(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?l.NEAREST:l.LINEAR}function L(a){if(a===THREE.RepeatWrapping)return l.REPEAT;if(a===THREE.ClampToEdgeWrapping)return l.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return l.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return l.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return l.NEAREST_MIPMAP_NEAREST;
if(a===THREE.NearestMipMapLinearFilter)return l.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return l.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return l.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return l.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return l.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return l.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return l.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return l.UNSIGNED_SHORT_5_6_5;
if(a===THREE.ByteType)return l.BYTE;if(a===THREE.ShortType)return l.SHORT;if(a===THREE.UnsignedShortType)return l.UNSIGNED_SHORT;if(a===THREE.IntType)return l.INT;if(a===THREE.UnsignedIntType)return l.UNSIGNED_INT;if(a===THREE.FloatType)return l.FLOAT;if(a===THREE.AlphaFormat)return l.ALPHA;if(a===THREE.RGBFormat)return l.RGB;if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return l.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return l.FUNC_ADD;
if(a===THREE.SubtractEquation)return l.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return l.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return l.ZERO;if(a===THREE.OneFactor)return l.ONE;if(a===THREE.SrcColorFactor)return l.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return l.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;
if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;if(void 0!==sb){if(a===THREE.RGB_S3TC_DXT1_Format)return sb.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return sb.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return sb.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return sb.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",
THREE.REVISION);a=a||{};var V=void 0!==a.canvas?a.canvas:document.createElement("canvas"),J=void 0!==a.context?a.context:null,Y=void 0!==a.precision?a.precision:"highp",aa=void 0!==a.alpha?a.alpha:!1,na=void 0!==a.depth?a.depth:!0,I=void 0!==a.stencil?a.stencil:!0,ba=void 0!==a.antialias?a.antialias:!1,Q=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ca=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,Ga=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Da=new THREE.Color(0),
Na=0,Oa=[],Ka={},la=[],ab=[],sa=[];this.domElement=V;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 G=this,bb=[],nb=null,ob=null,qa=-1,pa=null,cb=null,Ha=0,Ea=-1,La=-1,va=-1,ya=-1,da=-1,xa=-1,Qa=-1,Va=-1,pb=null,ta=null,ka=null,ha=null,Pa=0,Tb=0,Mb=V.width,Nb=V.height,Zb=0,jc=0,tb=new Uint8Array(16),wb=new Uint8Array(16),zc=new THREE.Frustum,tc=new THREE.Matrix4,Ac=new THREE.Matrix4,
oa=new THREE.Vector3,fa=new THREE.Vector3,Ub=!0,kc={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:[]}},l,Eb,Ab,zb,sb,Bb;(function(){try{var a={alpha:aa,depth:na,stencil:I,antialias:ba,premultipliedAlpha:Q,preserveDrawingBuffer:ca};l=J||V.getContext("webgl",a)||V.getContext("experimental-webgl",
a);if(null===l)throw"Error creating WebGL context.";}catch(b){console.error(b)}Eb=l.getExtension("OES_texture_float");l.getExtension("OES_texture_float_linear");Ab=l.getExtension("OES_standard_derivatives");zb=l.getExtension("EXT_texture_filter_anisotropic")||l.getExtension("MOZ_EXT_texture_filter_anisotropic")||l.getExtension("WEBKIT_EXT_texture_filter_anisotropic");sb=l.getExtension("WEBGL_compressed_texture_s3tc")||l.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||l.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
Bb=l.getExtension("OES_element_index_uint");null===Eb&&console.log("THREE.WebGLRenderer: Float textures not supported.");null===Ab&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===zb&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");null===sb&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===Bb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===l.getShaderPrecisionFormat&&
(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});Ga&&l.getExtension("EXT_frag_depth")})();l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(Pa,Tb,Mb,Nb);l.clearColor(Da.r,Da.g,Da.b,Na);this.context=l;var xc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Nc=
l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Oc=l.getParameter(l.MAX_TEXTURE_SIZE),Mc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),yc=zb?l.getParameter(zb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,rc=0<Nc,ic=rc&&Eb;sb&&l.getParameter(l.COMPRESSED_TEXTURE_FORMATS);var Pc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),Qc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var Rc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),
Sc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var Tc=0<Pc.precision&&0<Rc.precision,Jc=0<Qc.precision&&0<Sc.precision;"highp"!==Y||Tc||(Jc?(Y="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(Y="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==Y||Jc||(Y="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=
function(){return l};this.supportsVertexTextures=function(){return rc};this.supportsFloatTextures=function(){return Ab};this.supportsStandardDerivatives=function(){return xb};this.supportsCompressedTextureS3TC=function(){return sb};this.getMaxAnisotropy=function(){return yc};this.getPrecision=function(){return Y};this.setSize=function(a,b,c){V.width=a*this.devicePixelRatio;V.height=b*this.devicePixelRatio;!1!==c&&(V.style.width=a+"px",V.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=
function(a,b,c,d){Qa=a*this.devicePixelRatio;Tb=b*this.devicePixelRatio;Mb=c*this.devicePixelRatio;Nb=d*this.devicePixelRatio;l.viewport(Qa,Tb,Mb,Nb)};this.setScissor=function(a,b,c,d){l.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.setClearColor=function(a,b){Ea.set(a);Oa=void 0!==b?b:1;l.clearColor(Ea.r,Ea.g,Ea.b,Oa)};this.setClearColorHex=function(a,
b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return Ea};this.getClearAlpha=function(){return Oa};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=
function(){l.clear(l.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,Pa,La,la);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this,Pa,La,la);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){jb=null;qa=oa=Sa=ta=ua=-1;Ub=!0;Ia=ya=-1;this.shadowMapPlugin.update(a,b)};var Hc=function(a){a=a.target;a.removeEventListener("dispose",Hc);y(a)},Ic=function(a){a=a.target;a.removeEventListener("dispose",
function(){return l};this.supportsVertexTextures=function(){return rc};this.supportsFloatTextures=function(){return Eb};this.supportsStandardDerivatives=function(){return Ab};this.supportsCompressedTextureS3TC=function(){return sb};this.getMaxAnisotropy=function(){return yc};this.getPrecision=function(){return Y};this.setSize=function(a,b,c){V.width=a*this.devicePixelRatio;V.height=b*this.devicePixelRatio;!1!==c&&(V.style.width=a+"px",V.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=
function(a,b,c,d){Pa=a*this.devicePixelRatio;Tb=b*this.devicePixelRatio;Mb=c*this.devicePixelRatio;Nb=d*this.devicePixelRatio;l.viewport(Pa,Tb,Mb,Nb)};this.setScissor=function(a,b,c,d){l.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.setClearColor=function(a,b){Da.set(a);Na=void 0!==b?b:1;l.clearColor(Da.r,Da.g,Da.b,Na)};this.setClearColorHex=function(a,
b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return Da};this.getClearAlpha=function(){return Na};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=
function(){l.clear(l.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,Oa,Ka,la);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this,Oa,Ka,la);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){nb=null;qa=pa=Va=Qa=va=-1;Ub=!0;La=Ea=-1;this.shadowMapPlugin.update(a,b)};var Hc=function(a){a=a.target;a.removeEventListener("dispose",Hc);y(a)},Ic=function(a){a=a.target;a.removeEventListener("dispose",
Ic);a.__webglInit=void 0;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes)void 0!==a.attributes[b].buffer&&l.deleteBuffer(a.attributes[b].buffer);G.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++)l.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals)for(e=0,f=d.numMorphNormals;e<f;e++)l.deleteBuffer(d.__webglMorphNormalsBuffers[e]);
Kc(d)}}else Kc(a)},sc=function(a){a=a.target;a.removeEventListener("dispose",sc);a.image&&a.image.__webglTextureCube?l.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,l.deleteTexture(a.__webglTexture));G.info.memory.textures--},Lc=function(a){a=a.target;a.removeEventListener("dispose",Lc);if(a&&a.__webglTexture)if(l.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);
else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);G.info.memory.textures--},qc=function(a){a=a.target;a.removeEventListener("dispose",qc);pc(a)},Kc=function(a){void 0!==a.__webglVertexBuffer&&l.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&l.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&l.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&l.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&
l.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&l.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&l.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&l.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&l.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&l.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&l.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[b].buffer);
G.info.memory.geometries--},pc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=cb.length;a<c;a++)if(d=cb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=cb.length;a<c;a++)d=cb[a],d.program!==b&&e.push(d);cb=e;l.deleteProgram(b);G.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){g();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&
G.info.memory.geometries--},pc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=bb.length;a<c;a++)if(d=bb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=bb.length;a<c;a++)d=bb[a],d.program!==b&&e.push(d);bb=e;l.deleteProgram(b);G.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){g();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&
(a.__webglNormalBuffer=l.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=l.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=l.createBuffer());a.hasPositions&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,a.positionArray,l.DYNAMIC_DRAW),f(b.attributes.position),l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,!1,0,0));if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,
e,k,m,n,p,r,s,q,t,u,v=3*a.count;for(u=0;u<v;u+=9)t=a.normalArray,d=t[u],e=t[u+1],k=t[u+2],m=t[u+3],p=t[u+4],s=t[u+5],n=t[u+6],r=t[u+7],q=t[u+8],d=(d+m+n)/3,e=(e+p+r)/3,k=(k+s+q)/3,t[u]=d,t[u+1]=e,t[u+2]=k,t[u+3]=d,t[u+4]=e,t[u+5]=k,t[u+6]=d,t[u+7]=e,t[u+8]=k}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);f(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer),l.bufferData(l.ARRAY_BUFFER,a.uvArray,
l.DYNAMIC_DRAW),f(b.attributes.uv),l.vertexAttribPointer(b.attributes.uv,2,l.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW),f(b.attributes.color),l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,!1,0,0));h();l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,h){if(!1!==d.visible)if(a=z(a,b,c,d,h),b=!1,c=16777215*f.id+2*a.id+(d.wireframe?
1:0),c!==oa&&(oa=c,b=!0),b&&g(),h instanceof THREE.Mesh)if(c=f.attributes.index){var k,m;c.array instanceof Uint32Array?(k=l.UNSIGNED_INT,m=4):(k=l.UNSIGNED_SHORT,m=2);var n=f.offsets;if(0===n.length)b&&(e(d,a,f,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,c.buffer)),l.drawElements(l.TRIANGLES,c.array.length,k,0),G.info.render.calls++,G.info.render.vertices+=c.array.length,G.info.render.faces+=c.array.length/3;else{b=!0;for(var p=0,r=n.length;p<r;p++){var s=n[p].index;b&&(e(d,a,f,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
1:0),c!==pa&&(pa=c,b=!0),b&&g(),h instanceof THREE.Mesh)if(c=f.attributes.index){var k,m;c.array instanceof Uint32Array?(k=l.UNSIGNED_INT,m=4):(k=l.UNSIGNED_SHORT,m=2);var n=f.offsets;if(0===n.length)b&&(e(d,a,f,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,c.buffer)),l.drawElements(l.TRIANGLES,c.array.length,k,0),G.info.render.calls++,G.info.render.vertices+=c.array.length,G.info.render.faces+=c.array.length/3;else{b=!0;for(var p=0,r=n.length;p<r;p++){var s=n[p].index;b&&(e(d,a,f,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
c.buffer));l.drawElements(l.TRIANGLES,n[p].count,k,n[p].start*m);G.info.render.calls++;G.info.render.vertices+=n[p].count;G.info.render.faces+=n[p].count/3}}}else b&&e(d,a,f,0),d=f.attributes.position,l.drawArrays(l.TRIANGLES,0,d.array.length/3),G.info.render.calls++,G.info.render.vertices+=d.array.length/3,G.info.render.faces+=d.array.length/9;else if(h instanceof THREE.PointCloud)b&&e(d,a,f,0),d=f.attributes.position,l.drawArrays(l.POINTS,0,d.array.length/3),G.info.render.calls++,G.info.render.points+=
d.array.length/3;else if(h instanceof THREE.Line)if(h=h.type===THREE.LineStrip?l.LINE_STRIP:l.LINES,P(d.linewidth),c=f.attributes.index)if(c.array instanceof Uint32Array?(k=l.UNSIGNED_INT,m=4):(k=l.UNSIGNED_SHORT,m=2),n=f.offsets,0===n.length)b&&(e(d,a,f,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,c.buffer)),l.drawElements(h,c.array.length,k,0),G.info.render.calls++,G.info.render.vertices+=c.array.length;else for(1<n.length&&(b=!0),p=0,r=n.length;p<r;p++)s=n[p].index,b&&(e(d,a,f,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
c.buffer)),l.drawElements(h,n[p].count,k,n[p].start*m),G.info.render.calls++,G.info.render.vertices+=n[p].count;else b&&e(d,a,f,0),d=f.attributes.position,l.drawArrays(h,0,d.array.length/3),G.info.render.calls++,G.info.render.points+=d.array.length/3};this.renderBuffer=function(a,b,c,d,e,k){if(!1!==d.visible){var m,p;c=z(a,b,c,d,k);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==oa&&(oa=c,a=!0);a&&g();if(!d.morphTargets&&0<=b.position)a&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer),
c.buffer)),l.drawElements(h,n[p].count,k,n[p].start*m),G.info.render.calls++,G.info.render.vertices+=n[p].count;else b&&e(d,a,f,0),d=f.attributes.position,l.drawArrays(h,0,d.array.length/3),G.info.render.calls++,G.info.render.points+=d.array.length/3};this.renderBuffer=function(a,b,c,d,e,k){if(!1!==d.visible){var m,p;c=z(a,b,c,d,k);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==pa&&(pa=c,a=!0);a&&g();if(!d.morphTargets&&0<=b.position)a&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer),
f(b.position),l.vertexAttribPointer(b.position,3,l.FLOAT,!1,0,0));else if(k.morphTargetBase){c=d.program.attributes;-1!==k.morphTargetBase&&0<=c.position?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[k.morphTargetBase]),f(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0)):0<=c.position&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer),f(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0));if(k.morphTargetForcedOrder.length){var r=0;p=k.morphTargetForcedOrder;
for(m=k.morphTargetInfluences;r<d.numSupportedMorphTargets&&r<p.length;)0<=c["morphTarget"+r]&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[p[r]]),f(c["morphTarget"+r]),l.vertexAttribPointer(c["morphTarget"+r],3,l.FLOAT,!1,0,0)),0<=c["morphNormal"+r]&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[p[r]]),f(c["morphNormal"+r]),l.vertexAttribPointer(c["morphNormal"+r],3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[r]=m[p[r]],r++}else{p=[];m=k.morphTargetInfluences;
var s,t=m.length;for(s=0;s<t;s++)r=m[s],0<r&&p.push([r,s]);p.length>d.numSupportedMorphTargets?(p.sort(n),p.length=d.numSupportedMorphTargets):p.length>d.numSupportedMorphNormals?p.sort(n):0===p.length&&p.push([0,0]);for(r=0;r<d.numSupportedMorphTargets;)p[r]?(s=p[r][1],0<=c["morphTarget"+r]&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[s]),f(c["morphTarget"+r]),l.vertexAttribPointer(c["morphTarget"+r],3,l.FLOAT,!1,0,0)),0<=c["morphNormal"+r]&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,
......@@ -577,20 +576,20 @@ c.buffer),f(b[c.buffer.belongsToAttribute]),l.vertexAttribPointer(b[c.buffer.bel
3,l.FLOAT,!1,0,0));0<=b.tangent&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglTangentBuffer),f(b.tangent),l.vertexAttribPointer(b.tangent,4,l.FLOAT,!1,0,0));0<=b.uv&&(k.geometry.faceVertexUvs[0]?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglUVBuffer),f(b.uv),l.vertexAttribPointer(b.uv,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(k.geometry.faceVertexUvs[1]?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglUV2Buffer),f(b.uv2),l.vertexAttribPointer(b.uv2,
2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),f(b.skinIndex),l.vertexAttribPointer(b.skinIndex,4,l.FLOAT,!1,0,0),l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),f(b.skinWeight),l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,!1,0,0));0<=b.lineDistance&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglLineDistanceBuffer),f(b.lineDistance),l.vertexAttribPointer(b.lineDistance,
1,l.FLOAT,!1,0,0))}h();k instanceof THREE.Mesh?(k=e.__typeArray===Uint32Array?l.UNSIGNED_INT:l.UNSIGNED_SHORT,d.wireframe?(P(d.wireframeLinewidth),a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),l.drawElements(l.LINES,e.__webglLineCount,k,0)):(a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),l.drawElements(l.TRIANGLES,e.__webglFaceCount,k,0)),G.info.render.calls++,G.info.render.vertices+=e.__webglFaceCount,G.info.render.faces+=e.__webglFaceCount/3):k instanceof THREE.Line?(k=
k.type===THREE.LineStrip?l.LINE_STRIP:l.LINES,P(d.linewidth),l.drawArrays(k,0,e.__webglLineCount),G.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,e.__webglParticleCount),G.info.render.calls++,G.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=a.fog;qa=-1;Za=null;Ub=!0;!0===a.autoUpdate&&a.updateMatrixWorld();
void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);tc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);zc.setFromMatrix(tc);Pa.length=0;bb.length=0;sa.length=0;q(a,a,b);!0===G.sortObjects&&(bb.sort(k),sa.sort(m));s(this.renderPluginsPre,a,b);G.info.render.calls=0;G.info.render.vertices=0;G.info.render.faces=0;G.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&
this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(e=la.length;d<e;d++)f=la[d],g=f.object,g.visible&&(w(g,b),p(f));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),K(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),t(bb,b,Pa,h,!0,d),t(sa,b,Pa,h,!0,d),r(la,"",b,Pa,h,!1,d)):(d=null,this.setBlending(THREE.NoBlending),t(bb,b,Pa,h,!1,d),r(la,
"opaque",b,Pa,h,!1,d),t(sa,b,Pa,h,!0,d),r(la,"transparent",b,Pa,h,!0,d));s(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&C(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=z(a,b,c,d,e);oa=-1;G.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,zc):e.render(function(a){G.renderBufferImmediate(a,f,d)})};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};
this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;ya!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),ya=b);Ia!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Ia=a)};this.setDepthTest=
function(a){ta!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),ta=a)};this.setDepthWrite=function(a){Sa!==a&&(l.depthMask(a),Sa=a)};this.setBlending=function(a,b,c,d){a!==ua&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),
l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),ua=a);if(a===THREE.CustomBlending){if(b!==ka&&(l.blendEquation(L(b)),ka=b),c!==da||d!==xa)l.blendFunc(L(c),L(d)),da=c,xa=d}else xa=da=ka=null};this.uploadTexture=function(a){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",sc),a.__webglTexture=l.createTexture(),
k.type===THREE.LineStrip?l.LINE_STRIP:l.LINES,P(d.linewidth),l.drawArrays(k,0,e.__webglLineCount),G.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,e.__webglParticleCount),G.info.render.calls++,G.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=a.fog;qa=-1;cb=null;Ub=!0;!0===a.autoUpdate&&a.updateMatrixWorld();
void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);tc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);zc.setFromMatrix(tc);Oa.length=0;ab.length=0;sa.length=0;q(a,a,b);!0===G.sortObjects&&(ab.sort(k),sa.sort(m));s(this.renderPluginsPre,a,b);G.info.render.calls=0;G.info.render.vertices=0;G.info.render.faces=0;G.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&
this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(e=la.length;d<e;d++)f=la[d],g=f.object,g.visible&&(w(g,b),p(f));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),K(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),t(ab,b,Oa,h,!0,d),t(sa,b,Oa,h,!0,d),r(la,"",b,Oa,h,!1,d)):(d=null,this.setBlending(THREE.NoBlending),t(ab,b,Oa,h,!1,d),r(la,
"opaque",b,Oa,h,!1,d),t(sa,b,Oa,h,!0,d),r(la,"transparent",b,Oa,h,!0,d));s(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&C(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=z(a,b,c,d,e);pa=-1;G.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,zc):e.render(function(a){G.renderBufferImmediate(a,f,d)})};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};
this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;Ea!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),Ea=b);La!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),La=a)};this.setDepthTest=
function(a){Qa!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),Qa=a)};this.setDepthWrite=function(a){Va!==a&&(l.depthMask(a),Va=a)};this.setBlending=function(a,b,c,d){a!==va&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),
l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),va=a);if(a===THREE.CustomBlending){if(b!==ya&&(l.blendEquation(L(b)),ya=b),c!==da||d!==xa)l.blendFunc(L(c),L(d)),da=c,xa=d}else xa=da=ya=null};this.uploadTexture=function(a){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",sc),a.__webglTexture=l.createTexture(),
G.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=M(a.image,Oc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=L(a.format),e=L(a.type);R(l.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,
g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,
0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?G.uploadTexture(a):l.bindTexture(l.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",Lc);a.__webglTexture=
l.createTexture();G.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=L(a.format),e=L(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);R(l.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=l.createFramebuffer();a.__webglRenderbuffer[f]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+
f;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[f]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,h,g.__webglTexture,0);H(a.__webglRenderbuffer[f],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),R(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,
a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):H(a.__webglRenderbuffer,a),c&&l.generateMipmap(l.TEXTURE_2D);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,
null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Mb,a=Nb,d=Qa,e=Tb);b!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),ob=b);Zb=c;jc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Mb,a=Nb,d=Pa,e=Tb);b!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),ob=b);Zb=c;jc=a};this.resetGLState=function(){cb=nb=null;qa=pa=La=Ea=Va=Qa=va=-1;Ub=!0};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.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;
......@@ -819,19 +818,19 @@ c.getUniformLocation(s,"opacity");r.color=c.getUniformLocation(s,"color");r.scal
c.enableVertexAttribArray(t.vertex);c.enableVertexAttribArray(t.uv);c.uniform1i(N.occlusionMap,0);c.uniform1i(N.map,1);c.bindBuffer(c.ARRAY_BUFFER,h);c.vertexAttribPointer(B.vertex,2,c.FLOAT,!1,16,0);c.vertexAttribPointer(B.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,k);c.disable(c.CULL_FACE);c.depthMask(!1);for(var P=0,K=b.length;P<K;P++){B=16/g;D.set(B*E,B);var R=b[P];a.set(R.matrixWorld.elements[12],R.matrixWorld.elements[13],R.matrixWorld.elements[14]);a.applyMatrix4(e.matrixWorldInverse);
a.applyProjection(e.projectionMatrix);w.copy(a);A.x=w.x*y+y;A.y=w.y*z+z;if(q||0<A.x&&A.x<f&&0<A.y&&A.y<g){c.activeTexture(c.TEXTURE1);c.bindTexture(c.TEXTURE_2D,m);c.copyTexImage2D(c.TEXTURE_2D,0,c.RGB,A.x-8,A.y-8,16,16,0);c.uniform1i(N.renderType,0);c.uniform2f(N.scale,D.x,D.y);c.uniform3f(N.screenPosition,w.x,w.y,w.z);c.disable(c.BLEND);c.enable(c.DEPTH_TEST);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);c.activeTexture(c.TEXTURE0);c.bindTexture(c.TEXTURE_2D,n);c.copyTexImage2D(c.TEXTURE_2D,
0,c.RGBA,A.x-8,A.y-8,16,16,0);c.uniform1i(N.renderType,1);c.disable(c.DEPTH_TEST);c.activeTexture(c.TEXTURE1);c.bindTexture(c.TEXTURE_2D,m);c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0);R.positionScreen.copy(w);R.customUpdateCallback?R.customUpdateCallback(R):R.updateLensFlares();c.uniform1i(N.renderType,2);c.enable(c.BLEND);for(var M=0,H=R.lensFlares.length;M<H;M++){var C=R.lensFlares[M];0.001<C.opacity&&0.001<C.scale&&(w.x=C.x,w.y=C.y,w.z=C.z,B=C.size*C.scale/g,D.x=B*E,D.y=B,c.uniform3f(N.screenPosition,
w.x,w.y,w.z),c.uniform2f(N.scale,D.x,D.y),c.uniform1f(N.rotation,C.rotation),c.uniform1f(N.opacity,C.opacity),c.uniform3f(N.color,C.color.r,C.color.g,C.color.b),d.setBlending(C.blending,C.blendEquation,C.blendSrc,C.blendDst),d.setTexture(C.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0))}}}c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(!0)}}};
w.x,w.y,w.z),c.uniform2f(N.scale,D.x,D.y),c.uniform1f(N.rotation,C.rotation),c.uniform1f(N.opacity,C.opacity),c.uniform3f(N.color,C.color.r,C.color.g,C.color.b),d.setBlending(C.blending,C.blendEquation,C.blendSrc,C.blendDst),d.setTexture(C.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0))}}}c.enable(c.CULL_FACE);c.enable(c.DEPTH_TEST);c.depthMask(!0);d.resetGLState()}}};
THREE.ShadowMapPlugin=function(){function a(b,c,d){if(c.visible){var f=e[c.id];if(f&&c.castShadow&&(!1===c.frustumCulled||!0===n.intersectsObject(c)))for(var g=0,h=f.length;g<h;g++){var k=f[g];c._modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,c.matrixWorld);p.push(k)}g=0;for(h=c.children.length;g<h;g++)a(b,c.children[g],d)}}var b,c,d,e,g,f,h,k,m,n=new THREE.Frustum,q=new THREE.Matrix4,s=new THREE.Vector3,t=new THREE.Vector3,r=new THREE.Vector3,p=[];this.init=function(a,n,p,r){b=a.context;c=
a;d=n;e=p;g=r;a=THREE.ShaderLib.depthRGBA;n=THREE.UniformsUtils.clone(a.uniforms);f=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:n});h=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:n,morphTargets:!0});k=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:n,skinning:!0});m=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,
uniforms:n,morphTargets:!0,skinning:!0});f._shadowPass=!0;h._shadowPass=!0;k._shadowPass=!0;m._shadowPass=!0};this.render=function(a,b){c.shadowMapEnabled&&c.shadowMapAutoUpdate&&this.update(a,b)};this.update=function(e,x){var u,E,y,z,B,D,w,A,N=[];z=0;b.clearColor(1,1,1,1);b.disable(b.BLEND);b.enable(b.CULL_FACE);b.frontFace(b.CCW);c.shadowMapCullFace===THREE.CullFaceFront?b.cullFace(b.FRONT):b.cullFace(b.BACK);c.setDepthTest(!0);u=0;for(E=d.length;u<E;u++)if(y=d[u],y.castShadow)if(y instanceof THREE.DirectionalLight&&
y.shadowCascade)for(B=0;B<y.shadowCascadeCount;B++){var P;if(y.shadowCascadeArray[B])P=y.shadowCascadeArray[B];else{w=y;var K=B;P=new THREE.DirectionalLight;P.isVirtual=!0;P.onlyShadow=!0;P.castShadow=!0;P.shadowCameraNear=w.shadowCameraNear;P.shadowCameraFar=w.shadowCameraFar;P.shadowCameraLeft=w.shadowCameraLeft;P.shadowCameraRight=w.shadowCameraRight;P.shadowCameraBottom=w.shadowCameraBottom;P.shadowCameraTop=w.shadowCameraTop;P.shadowCameraVisible=w.shadowCameraVisible;P.shadowDarkness=w.shadowDarkness;
P.shadowBias=w.shadowCascadeBias[K];P.shadowMapWidth=w.shadowCascadeWidth[K];P.shadowMapHeight=w.shadowCascadeHeight[K];P.pointsWorld=[];P.pointsFrustum=[];A=P.pointsWorld;D=P.pointsFrustum;for(var R=0;8>R;R++)A[R]=new THREE.Vector3,D[R]=new THREE.Vector3;A=w.shadowCascadeNearZ[K];w=w.shadowCascadeFarZ[K];D[0].set(-1,-1,A);D[1].set(1,-1,A);D[2].set(-1,1,A);D[3].set(1,1,A);D[4].set(-1,-1,w);D[5].set(1,-1,w);D[6].set(-1,1,w);D[7].set(1,1,w);P.originalCamera=x;D=new THREE.Gyroscope;D.position.copy(y.shadowCascadeOffset);
D.add(P);D.add(P.target);x.add(D);y.shadowCascadeArray[B]=P;console.log("Created virtualLight",P)}K=y;A=B;w=K.shadowCascadeArray[A];w.position.copy(K.position);w.target.position.copy(K.target.position);w.lookAt(w.target);w.shadowCameraVisible=K.shadowCameraVisible;w.shadowDarkness=K.shadowDarkness;w.shadowBias=K.shadowCascadeBias[A];D=K.shadowCascadeNearZ[A];K=K.shadowCascadeFarZ[A];w=w.pointsFrustum;w[0].z=D;w[1].z=D;w[2].z=D;w[3].z=D;w[4].z=K;w[5].z=K;w[6].z=K;w[7].z=K;N[z]=P;z++}else N[z]=y,z++;
u=0;for(E=N.length;u<E;u++){y=N[u];y.shadowMap||(B=THREE.LinearFilter,c.shadowMapType===THREE.PCFSoftShadowMap&&(B=THREE.NearestFilter),y.shadowMap=new THREE.WebGLRenderTarget(y.shadowMapWidth,y.shadowMapHeight,{minFilter:B,magFilter:B,format:THREE.RGBAFormat}),y.shadowMapSize=new THREE.Vector2(y.shadowMapWidth,y.shadowMapHeight),y.shadowMatrix=new THREE.Matrix4);if(!y.shadowCamera){if(y instanceof THREE.SpotLight)y.shadowCamera=new THREE.PerspectiveCamera(y.shadowCameraFov,y.shadowMapWidth/y.shadowMapHeight,
y.shadowCameraNear,y.shadowCameraFar);else if(y instanceof THREE.DirectionalLight)y.shadowCamera=new THREE.OrthographicCamera(y.shadowCameraLeft,y.shadowCameraRight,y.shadowCameraTop,y.shadowCameraBottom,y.shadowCameraNear,y.shadowCameraFar);else{console.error("Unsupported light type for shadow");continue}e.add(y.shadowCamera);!0===e.autoUpdate&&e.updateMatrixWorld()}y.shadowCameraVisible&&!y.cameraHelper&&(y.cameraHelper=new THREE.CameraHelper(y.shadowCamera),y.shadowCamera.add(y.cameraHelper));
uniforms:n,morphTargets:!0,skinning:!0});f._shadowPass=!0;h._shadowPass=!0;k._shadowPass=!0;m._shadowPass=!0};this.render=function(a,b){!1!==c.shadowMapEnabled&&!1!==c.shadowMapAutoUpdate&&this.update(a,b)};this.update=function(e,x){var u,E,y,z,B,D,w,A,N=[];z=0;b.clearColor(1,1,1,1);b.disable(b.BLEND);b.enable(b.CULL_FACE);b.frontFace(b.CCW);c.shadowMapCullFace===THREE.CullFaceFront?b.cullFace(b.FRONT):b.cullFace(b.BACK);c.setDepthTest(!0);u=0;for(E=d.length;u<E;u++)if(y=d[u],y.castShadow)if(y instanceof
THREE.DirectionalLight&&y.shadowCascade)for(B=0;B<y.shadowCascadeCount;B++){var P;if(y.shadowCascadeArray[B])P=y.shadowCascadeArray[B];else{w=y;var K=B;P=new THREE.DirectionalLight;P.isVirtual=!0;P.onlyShadow=!0;P.castShadow=!0;P.shadowCameraNear=w.shadowCameraNear;P.shadowCameraFar=w.shadowCameraFar;P.shadowCameraLeft=w.shadowCameraLeft;P.shadowCameraRight=w.shadowCameraRight;P.shadowCameraBottom=w.shadowCameraBottom;P.shadowCameraTop=w.shadowCameraTop;P.shadowCameraVisible=w.shadowCameraVisible;
P.shadowDarkness=w.shadowDarkness;P.shadowBias=w.shadowCascadeBias[K];P.shadowMapWidth=w.shadowCascadeWidth[K];P.shadowMapHeight=w.shadowCascadeHeight[K];P.pointsWorld=[];P.pointsFrustum=[];A=P.pointsWorld;D=P.pointsFrustum;for(var R=0;8>R;R++)A[R]=new THREE.Vector3,D[R]=new THREE.Vector3;A=w.shadowCascadeNearZ[K];w=w.shadowCascadeFarZ[K];D[0].set(-1,-1,A);D[1].set(1,-1,A);D[2].set(-1,1,A);D[3].set(1,1,A);D[4].set(-1,-1,w);D[5].set(1,-1,w);D[6].set(-1,1,w);D[7].set(1,1,w);P.originalCamera=x;D=new THREE.Gyroscope;
D.position.copy(y.shadowCascadeOffset);D.add(P);D.add(P.target);x.add(D);y.shadowCascadeArray[B]=P;console.log("Created virtualLight",P)}K=y;A=B;w=K.shadowCascadeArray[A];w.position.copy(K.position);w.target.position.copy(K.target.position);w.lookAt(w.target);w.shadowCameraVisible=K.shadowCameraVisible;w.shadowDarkness=K.shadowDarkness;w.shadowBias=K.shadowCascadeBias[A];D=K.shadowCascadeNearZ[A];K=K.shadowCascadeFarZ[A];w=w.pointsFrustum;w[0].z=D;w[1].z=D;w[2].z=D;w[3].z=D;w[4].z=K;w[5].z=K;w[6].z=
K;w[7].z=K;N[z]=P;z++}else N[z]=y,z++;u=0;for(E=N.length;u<E;u++){y=N[u];y.shadowMap||(B=THREE.LinearFilter,c.shadowMapType===THREE.PCFSoftShadowMap&&(B=THREE.NearestFilter),y.shadowMap=new THREE.WebGLRenderTarget(y.shadowMapWidth,y.shadowMapHeight,{minFilter:B,magFilter:B,format:THREE.RGBAFormat}),y.shadowMapSize=new THREE.Vector2(y.shadowMapWidth,y.shadowMapHeight),y.shadowMatrix=new THREE.Matrix4);if(!y.shadowCamera){if(y instanceof THREE.SpotLight)y.shadowCamera=new THREE.PerspectiveCamera(y.shadowCameraFov,
y.shadowMapWidth/y.shadowMapHeight,y.shadowCameraNear,y.shadowCameraFar);else if(y instanceof THREE.DirectionalLight)y.shadowCamera=new THREE.OrthographicCamera(y.shadowCameraLeft,y.shadowCameraRight,y.shadowCameraTop,y.shadowCameraBottom,y.shadowCameraNear,y.shadowCameraFar);else{console.error("Unsupported light type for shadow");continue}e.add(y.shadowCamera);!0===e.autoUpdate&&e.updateMatrixWorld()}y.shadowCameraVisible&&!y.cameraHelper&&(y.cameraHelper=new THREE.CameraHelper(y.shadowCamera),y.shadowCamera.add(y.cameraHelper));
if(y.isVirtual&&P.originalCamera==x){B=x;z=y.shadowCamera;D=y.pointsFrustum;w=y.pointsWorld;s.set(Infinity,Infinity,Infinity);t.set(-Infinity,-Infinity,-Infinity);for(K=0;8>K;K++)A=w[K],A.copy(D[K]),THREE.ShadowMapPlugin.__projector.unprojectVector(A,B),A.applyMatrix4(z.matrixWorldInverse),A.x<s.x&&(s.x=A.x),A.x>t.x&&(t.x=A.x),A.y<s.y&&(s.y=A.y),A.y>t.y&&(t.y=A.y),A.z<s.z&&(s.z=A.z),A.z>t.z&&(t.z=A.z);z.left=s.x;z.right=t.x;z.top=t.y;z.bottom=s.y;z.updateProjectionMatrix()}z=y.shadowMap;D=y.shadowMatrix;
B=y.shadowCamera;B.position.setFromMatrixPosition(y.matrixWorld);r.setFromMatrixPosition(y.target.matrixWorld);B.lookAt(r);B.updateMatrixWorld();B.matrixWorldInverse.getInverse(B.matrixWorld);y.cameraHelper&&(y.cameraHelper.visible=y.shadowCameraVisible);y.shadowCameraVisible&&y.cameraHelper.update();D.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);D.multiply(B.projectionMatrix);D.multiply(B.matrixWorldInverse);q.multiplyMatrices(B.projectionMatrix,B.matrixWorldInverse);n.setFromMatrix(q);c.setRenderTarget(z);
c.clear();p.length=0;a(e,e,B);y=0;for(z=p.length;y<z;y++)w=p[y],D=w.object,w=w.buffer,K=D.material instanceof THREE.MeshFaceMaterial?D.material.materials[0]:D.material,A=void 0!==D.geometry.morphTargets&&0<D.geometry.morphTargets.length&&K.morphTargets,R=D instanceof THREE.SkinnedMesh&&K.skinning,A=D.customDepthMaterial?D.customDepthMaterial:R?A?m:k:A?h:f,c.setMaterialFaces(K),w instanceof THREE.BufferGeometry?c.renderBufferDirect(B,d,null,A,w,D):c.renderBuffer(B,d,null,A,w,D);y=0;for(z=g.length;y<
z;y++)w=g[y],D=w.object,D.visible&&D.castShadow&&(D._modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,D.matrixWorld),c.renderImmediateObject(B,d,null,f,D))}u=c.getClearColor();E=c.getClearAlpha();b.clearColor(u.r,u.g,u.b,E);b.enable(b.BLEND);c.shadowMapCullFace===THREE.CullFaceFront&&b.cullFace(b.BACK)}};THREE.ShadowMapPlugin.__projector=new THREE.Projector;
z;y++)w=g[y],D=w.object,D.visible&&D.castShadow&&(D._modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,D.matrixWorld),c.renderImmediateObject(B,d,null,f,D))}u=c.getClearColor();E=c.getClearAlpha();b.clearColor(u.r,u.g,u.b,E);b.enable(b.BLEND);c.shadowMapCullFace===THREE.CullFaceFront&&b.cullFace(b.BACK);c.resetGLState()}};THREE.ShadowMapPlugin.__projector=new THREE.Projector;
THREE.SpritePlugin=function(){var a,b,c,d,e,g,f,h,k,m,n,q,s,t,r,p,v;function x(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var u,E,y,z=[],B,D,w,A,N;this.init=function(x){u=x.context;E=x;B=new Float32Array([-0.5,-0.5,0,0,0.5,-0.5,1,0,0.5,0.5,1,1,-0.5,0.5,0,1]);D=new Uint16Array([0,1,2,0,2,3]);w=u.createBuffer();A=u.createBuffer();u.bindBuffer(u.ARRAY_BUFFER,w);u.bufferData(u.ARRAY_BUFFER,B,u.STATIC_DRAW);u.bindBuffer(u.ELEMENT_ARRAY_BUFFER,A);u.bufferData(u.ELEMENT_ARRAY_BUFFER,D,u.STATIC_DRAW);x=u.createProgram();
var z=u.createShader(u.VERTEX_SHADER),R=u.createShader(u.FRAGMENT_SHADER);u.shaderSource(z,["precision "+E.getPrecision()+" float;","uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n"));
u.shaderSource(R,["precision "+E.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n"));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册