@webarkit/nft-marker-creator-app
Version:
NFt Marker Creator based on WebARKitLib, ported thanks to Emscripten
98 lines • 564 kB
JavaScript
// threejs.org/license
(function(l,ta){"object"===typeof exports&&"undefined"!==typeof module?ta(exports):"function"===typeof define&&define.amd?define(["exports"],ta):(l=l||self,ta(l.THREE={}))})(this,function(l){function ta(){}function B(a,b){this.x=a||0;this.y=b||0}function aa(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function n(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function ba(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}
function W(a,b,c,d,e,f,g,h,k,m){Object.defineProperty(this,"id",{value:Uf++});this.uuid=K.generateUUID();this.name="";this.image=void 0!==a?a:W.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:W.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:1001;this.wrapT=void 0!==d?d:1001;this.magFilter=void 0!==e?e:1006;this.minFilter=void 0!==f?f:1008;this.anisotropy=void 0!==k?k:1;this.format=void 0!==g?g:1023;this.type=void 0!==h?h:1009;this.offset=new B(0,0);this.repeat=new B(1,1);this.center=new B(0,0);this.rotation=
0;this.matrixAutoUpdate=!0;this.matrix=new ba;this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this.encoding=void 0!==m?m:3E3;this.version=0;this.onUpdate=null}function Y(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}function Ta(a,b,c){this.width=a;this.height=b;this.scissor=new Y(0,0,a,b);this.scissorTest=!1;this.viewport=new Y(0,0,a,b);c=c||{};this.texture=new W(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy,
c.encoding);this.texture.generateMipmaps=void 0!==c.generateMipmaps?c.generateMipmaps:!1;this.texture.minFilter=void 0!==c.minFilter?c.minFilter:1006;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.depthTexture=void 0!==c.depthTexture?c.depthTexture:null}function $d(a,b,c){Ta.call(this,a,b,c);this.samples=4}function pb(a,b,c){Ta.call(this,a,b,c)}function qb(a,b,c,d,e,f,g,h,k,m,p,q){W.call(this,null,f,g,h,k,m,d,e,p,q);this.image=
{data:a,width:b,height:c};this.magFilter=void 0!==k?k:1003;this.minFilter=void 0!==m?m:1003;this.flipY=this.generateMipmaps=!1;this.unpackAlignment=1}function Ja(a,b){this.min=void 0!==a?a:new n(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new n(-Infinity,-Infinity,-Infinity)}function Ua(a,b){this.center=void 0!==a?a:new n;this.radius=void 0!==b?b:0}function Va(a,b){this.normal=void 0!==a?a:new n(1,0,0);this.constant=void 0!==b?b:0}function vd(a,b,c,d,e,f){this.planes=[void 0!==a?a:new Va,void 0!==
b?b:new Va,void 0!==c?c:new Va,void 0!==d?d:new Va,void 0!==e?e:new Va,void 0!==f?f:new Va]}function P(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function Pb(a){var b={},c;for(c in a){b[c]={};for(var d in a[c]){var e=a[c][d];e&&(e.isColor||e.isMatrix3||e.isMatrix4||e.isVector2||e.isVector3||e.isVector4||e.isTexture)?b[c][d]=e.clone():Array.isArray(e)?b[c][d]=e.slice():b[c][d]=
e}}return b}function ia(a){for(var b={},c=0;c<a.length;c++){var d=Pb(a[c]),e;for(e in d)b[e]=d[e]}return b}function M(a,b,c){return void 0===b&&void 0===c?this.set(a):this.setRGB(a,b,c)}function ae(){function a(e,f){!1!==c&&(d(e,f),b.requestAnimationFrame(a))}var b=null,c=!1,d=null;return{start:function(){!0!==c&&null!==d&&(b.requestAnimationFrame(a),c=!0)},stop:function(){c=!1},setAnimationLoop:function(a){d=a},setContext:function(a){b=a}}}function Vf(a){function b(b,c){var d=b.array,e=b.dynamic?
35048:35044,h=a.createBuffer();a.bindBuffer(c,h);a.bufferData(c,d,e);b.onUploadCallback();c=5126;d instanceof Float32Array?c=5126:d instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):d instanceof Uint16Array?c=5123:d instanceof Int16Array?c=5122:d instanceof Uint32Array?c=5125:d instanceof Int32Array?c=5124:d instanceof Int8Array?c=5120:d instanceof Uint8Array&&(c=5121);return{buffer:h,type:c,bytesPerElement:d.BYTES_PER_ELEMENT,version:b.version}}
var c=new WeakMap;return{get:function(a){a.isInterleavedBufferAttribute&&(a=a.data);return c.get(a)},remove:function(b){b.isInterleavedBufferAttribute&&(b=b.data);var d=c.get(b);d&&(a.deleteBuffer(d.buffer),c.delete(b))},update:function(d,e){d.isInterleavedBufferAttribute&&(d=d.data);var f=c.get(d);if(void 0===f)c.set(d,b(d,e));else if(f.version<d.version){var g=d,h=g.array,k=g.updateRange;a.bindBuffer(e,f.buffer);!1===g.dynamic?a.bufferData(e,h,35044):-1===k.count?a.bufferSubData(e,0,h):0===k.count?
console.error("THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually."):(a.bufferSubData(e,k.offset*h.BYTES_PER_ELEMENT,h.subarray(k.offset,k.offset+k.count)),k.count=-1);f.version=d.version}}}}function Qb(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d&&d.isVector3?d:new n;this.vertexNormals=Array.isArray(d)?d:[];this.color=e&&e.isColor?e:new M;this.vertexColors=Array.isArray(e)?
e:[];this.materialIndex=void 0!==f?f:0}function rb(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||rb.DefaultOrder}function be(){this.mask=1}function C(){Object.defineProperty(this,"id",{value:Wf++});this.uuid=K.generateUUID();this.name="";this.type="Object3D";this.parent=null;this.children=[];this.up=C.DefaultUp.clone();var a=new n,b=new rb,c=new aa,d=new n(1,1,1);b.onChange(function(){c.setFromEuler(b,!1)});c.onChange(function(){b.setFromQuaternion(c,void 0,!1)});Object.defineProperties(this,
{position:{configurable:!0,enumerable:!0,value:a},rotation:{configurable:!0,enumerable:!0,value:b},quaternion:{configurable:!0,enumerable:!0,value:c},scale:{configurable:!0,enumerable:!0,value:d},modelViewMatrix:{value:new P},normalMatrix:{value:new ba}});this.matrix=new P;this.matrixWorld=new P;this.matrixAutoUpdate=C.DefaultMatrixAutoUpdate;this.matrixWorldNeedsUpdate=!1;this.layers=new be;this.visible=!0;this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.renderOrder=0;this.userData=
{}}function N(){Object.defineProperty(this,"id",{value:Xf+=2});this.uuid=K.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.verticesNeedUpdate=this.elementsNeedUpdate=
!1}function S(a,b,c){if(Array.isArray(a))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="";this.array=a;this.itemSize=b;this.count=void 0!==a?a.length/b:0;this.normalized=!0===c;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}function xc(a,b,c){S.call(this,new Int8Array(a),b,c)}function yc(a,b,c){S.call(this,new Uint8Array(a),b,c)}function zc(a,b,c){S.call(this,new Uint8ClampedArray(a),b,c)}function Ac(a,b,c){S.call(this,new Int16Array(a),
b,c)}function sb(a,b,c){S.call(this,new Uint16Array(a),b,c)}function Bc(a,b,c){S.call(this,new Int32Array(a),b,c)}function tb(a,b,c){S.call(this,new Uint32Array(a),b,c)}function E(a,b,c){S.call(this,new Float32Array(a),b,c)}function Cc(a,b,c){S.call(this,new Float64Array(a),b,c)}function Qe(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=
this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1}function Re(a){if(0===a.length)return-Infinity;for(var b=a[0],c=1,d=a.length;c<d;++c)a[c]>b&&(b=a[c]);return b}function z(){Object.defineProperty(this,"id",{value:Yf+=2});this.uuid=K.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}}
function Rb(a,b,c,d,e,f){N.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new ub(a,b,c,d,e,f));this.mergeVertices()}function ub(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,l,ua,F,Zf){var r=f/ua,u=g/F,x=f/2,w=g/2,A=l/2;g=ua+1;var y=F+1,X=f=0,Q,J,D=new n;for(J=0;J<y;J++){var B=J*u-w;for(Q=0;Q<g;Q++)D[a]=(Q*r-x)*d,D[b]=B*e,D[c]=A,m.push(D.x,D.y,D.z),D[a]=0,D[b]=0,D[c]=0<l?1:-1,p.push(D.x,D.y,D.z),q.push(Q/
ua),q.push(1-J/F),f+=1}for(J=0;J<F;J++)for(Q=0;Q<ua;Q++)a=v+Q+g*(J+1),b=v+(Q+1)+g*(J+1),c=v+(Q+1)+g*J,k.push(v+Q+g*J,a,c),k.push(a,b,c),X+=6;h.addGroup(t,X,Zf);t+=X;v+=f}z.call(this);this.type="BoxBufferGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};var h=this;a=a||1;b=b||1;c=c||1;d=Math.floor(d)||1;e=Math.floor(e)||1;f=Math.floor(f)||1;var k=[],m=[],p=[],q=[],v=0,t=0;g("z","y","x",-1,-1,c,b,a,f,e,0);g("z","y","x",1,-1,c,b,-a,f,e,1);g("x","z",
"y",1,1,a,c,b,d,f,2);g("x","z","y",1,-1,a,c,-b,d,f,3);g("x","y","z",1,-1,a,b,c,d,e,4);g("x","y","z",-1,-1,a,b,-c,d,e,5);this.setIndex(k);this.addAttribute("position",new E(m,3));this.addAttribute("normal",new E(p,3));this.addAttribute("uv",new E(q,2))}function Dc(a,b,c,d){N.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new vb(a,b,c,d));this.mergeVertices()}function vb(a,b,c,d){z.call(this);this.type="PlaneBufferGeometry";
this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};a=a||1;b=b||1;var e=a/2,f=b/2;c=Math.floor(c)||1;d=Math.floor(d)||1;var g=c+1,h=d+1,k=a/c,m=b/d,p=[],q=[],v=[],t=[];for(a=0;a<h;a++){var l=a*m-f;for(b=0;b<g;b++)q.push(b*k-e,-l,0),v.push(0,0,1),t.push(b/c),t.push(1-a/d)}for(a=0;a<d;a++)for(b=0;b<c;b++)e=b+g*(a+1),f=b+1+g*(a+1),h=b+1+g*a,p.push(b+g*a,e,h),p.push(e,f,h);this.setIndex(p);this.addAttribute("position",new E(q,3));this.addAttribute("normal",new E(v,3));this.addAttribute("uv",
new E(t,2))}function O(){Object.defineProperty(this,"id",{value:$f++});this.uuid=K.generateUUID();this.name="";this.type="Material";this.lights=this.fog=!0;this.blending=1;this.side=0;this.vertexTangents=this.flatShading=!1;this.vertexColors=0;this.opacity=1;this.transparent=!1;this.blendSrc=204;this.blendDst=205;this.blendEquation=100;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=3;this.depthWrite=this.depthTest=!0;this.clippingPlanes=null;this.clipShadows=this.clipIntersection=
!1;this.shadowSide=null;this.colorWrite=!0;this.precision=null;this.polygonOffset=!1;this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.dithering=!1;this.alphaTest=0;this.premultipliedAlpha=!1;this.visible=!0;this.userData={};this.needsUpdate=!0}function Ca(a){O.call(this);this.type="ShaderMaterial";this.defines={};this.uniforms={};this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";
this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.morphNormals=this.morphTargets=this.skinning=this.clipping=this.lights=this.fog=!1;this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1};this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.uniformsNeedUpdate=!1;void 0!==a&&(void 0!==a.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(a))}
function wb(a,b){this.origin=void 0!==a?a:new n;this.direction=void 0!==b?b:new n}function ra(a,b,c){this.a=void 0!==a?a:new n;this.b=void 0!==b?b:new n;this.c=void 0!==c?c:new n}function Da(a){O.call(this);this.type="MeshBasicMaterial";this.color=new M(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.envMap=this.alphaMap=this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=
1;this.wireframeLinejoin=this.wireframeLinecap="round";this.lights=this.morphTargets=this.skinning=!1;this.setValues(a)}function va(a,b){C.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new z;this.material=void 0!==b?b:new Da({color:16777215*Math.random()});this.drawMode=0;this.updateMorphTargets()}function ag(a,b,c,d){function e(a,c){b.buffers.color.setClear(a.r,a.g,a.b,c,d)}var f=new M(0),g=0,h,k,m=null,p=0;return{getClearColor:function(){return f},setClearColor:function(a,b){f.set(a);g=
void 0!==b?b:1;e(f,g)},getClearAlpha:function(){return g},setClearAlpha:function(a){g=a;e(f,g)},render:function(b,d,t,l){d=d.background;t=a.vr;(t=t.getSession&&t.getSession())&&"additive"===t.environmentBlendMode&&(d=null);null===d?(e(f,g),m=null,p=0):d&&d.isColor&&(e(d,1),l=!0,m=null,p=0);(a.autoClear||l)&&a.clear(a.autoClearColor,a.autoClearDepth,a.autoClearStencil);if(d&&(d.isCubeTexture||d.isWebGLRenderTargetCube)){void 0===k&&(k=new va(new ub(1,1,1),new Ca({type:"BackgroundCubeMaterial",uniforms:Pb(Wa.cube.uniforms),
vertexShader:Wa.cube.vertexShader,fragmentShader:Wa.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),k.geometry.removeAttribute("normal"),k.geometry.removeAttribute("uv"),k.onBeforeRender=function(a,b,c){this.matrixWorld.copyPosition(c.matrixWorld)},Object.defineProperty(k.material,"map",{get:function(){return this.uniforms.tCube.value}}),c.update(k));l=d.isWebGLRenderTargetCube?d.texture:d;k.material.uniforms.tCube.value=l;k.material.uniforms.tFlip.value=d.isWebGLRenderTargetCube?
1:-1;if(m!==d||p!==l.version)k.material.needsUpdate=!0,m=d,p=l.version;b.unshift(k,k.geometry,k.material,0,0,null)}else if(d&&d.isTexture){void 0===h&&(h=new va(new vb(2,2),new Ca({type:"BackgroundMaterial",uniforms:Pb(Wa.background.uniforms),vertexShader:Wa.background.vertexShader,fragmentShader:Wa.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.removeAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),c.update(h));
h.material.uniforms.t2D.value=d;!0===d.matrixAutoUpdate&&d.updateMatrix();h.material.uniforms.uvTransform.value.copy(d.matrix);if(m!==d||p!==d.version)h.material.needsUpdate=!0,m=d,p=d.version;b.unshift(h,h.geometry,h.material,0,0,null)}}}}function bg(a,b,c,d){var e;this.setMode=function(a){e=a};this.render=function(b,d){a.drawArrays(e,b,d);c.update(d,e)};this.renderInstances=function(f,g,h){if(d.isWebGL2)var k=a;else if(k=b.get("ANGLE_instanced_arrays"),null===k){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
return}k[d.isWebGL2?"drawArraysInstanced":"drawArraysInstancedANGLE"](e,g,h,f.maxInstancedCount);c.update(h,e,f.maxInstancedCount)}}function cg(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(35633,36338).precision&&0<a.getShaderPrecisionFormat(35632,36338).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(35633,36337).precision&&0<a.getShaderPrecisionFormat(35632,36337).precision?"mediump":"lowp"}var e,f="undefined"!==typeof WebGL2RenderingContext&&
a instanceof WebGL2RenderingContext,g=void 0!==c.precision?c.precision:"highp",h=d(g);h!==g&&(console.warn("THREE.WebGLRenderer:",g,"not supported, using",h,"instead."),g=h);c=!0===c.logarithmicDepthBuffer;h=a.getParameter(34930);var k=a.getParameter(35660),m=a.getParameter(3379),p=a.getParameter(34076),q=a.getParameter(34921),v=a.getParameter(36347),t=a.getParameter(36348),l=a.getParameter(36349),u=0<k,x=f||!!b.get("OES_texture_float"),n=u&&x,w=f?a.getParameter(36183):0;return{isWebGL2:f,getMaxAnisotropy:function(){if(void 0!==
e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,precision:g,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:k,maxTextureSize:m,maxCubemapSize:p,maxAttributes:q,maxVertexUniforms:v,maxVaryings:t,maxFragmentUniforms:l,vertexTextures:u,floatFragmentTextures:x,floatVertexTextures:n,maxSamples:w}}function dg(){function a(){m.value!==d&&(m.value=d,m.needsUpdate=0<e);c.numPlanes=e;c.numIntersection=
0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=m.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;k.getNormalMatrix(b);if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,k),h.normal.toArray(g,d),g[d+3]=h.constant}m.value=g;m.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new Va,k=new ba,m={value:null,needsUpdate:!1};this.uniform=m;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=
0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=function(c,h,k,t,l,u){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var p=4*k,q=l.clippingState||null;m.value=q;q=b(c,t,p,u);for(c=0;c!==p;++c)q[c]=d[c];l.clippingState=q;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=k}}}function eg(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=
a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}}function fg(a,b,c){function d(a){var g=a.target;a=e[g.id];null!==a.index&&b.remove(a.index);for(var k in a.attributes)b.remove(a.attributes[k]);g.removeEventListener("dispose",d);delete e[g.id];if(k=f[a.id])b.remove(k),delete f[a.id];
c.memory.geometries--}var e={},f={};return{get:function(a,b){var f=e[b.id];if(f)return f;b.addEventListener("dispose",d);b.isBufferGeometry?f=b:b.isGeometry&&(void 0===b._bufferGeometry&&(b._bufferGeometry=(new z).setFromObject(a)),f=b._bufferGeometry);e[b.id]=f;c.memory.geometries++;return f},update:function(a){var c=a.index,d=a.attributes;null!==c&&b.update(c,34963);for(var e in d)b.update(d[e],34962);a=a.morphAttributes;for(e in a){c=a[e];d=0;for(var f=c.length;d<f;d++)b.update(c[d],34962)}},getWireframeAttribute:function(a){var c=
f[a.id];if(c)return c;c=[];var d=a.index,e=a.attributes;if(null!==d){d=d.array;e=0;for(var g=d.length;e<g;e+=3){var q=d[e+0],v=d[e+1],l=d[e+2];c.push(q,v,v,l,l,q)}}else for(d=e.position.array,e=0,g=d.length/3-1;e<g;e+=3)q=e+0,v=e+1,l=e+2,c.push(q,v,v,l,l,q);c=new (65535<Re(c)?tb:sb)(c,1);b.update(c,34963);return f[a.id]=c}}}function gg(a,b,c,d){var e,f,g;this.setMode=function(a){e=a};this.setIndex=function(a){f=a.type;g=a.bytesPerElement};this.render=function(b,d){a.drawElements(e,d,f,b*g);c.update(d,
e)};this.renderInstances=function(h,k,m){if(d.isWebGL2)var p=a;else if(p=b.get("ANGLE_instanced_arrays"),null===p){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}p[d.isWebGL2?"drawElementsInstanced":"drawElementsInstancedANGLE"](e,m,f,k*g,h.maxInstancedCount);c.update(m,e,h.maxInstancedCount)}}function hg(a){var b={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,
textures:0},render:b,programs:null,autoReset:!0,reset:function(){b.frame++;b.calls=0;b.triangles=0;b.points=0;b.lines=0},update:function(a,d,e){e=e||1;b.calls++;switch(d){case 4:b.triangles+=a/3*e;break;case 5:case 6:b.triangles+=e*(a-2);break;case 1:b.lines+=a/2*e;break;case 3:b.lines+=e*(a-1);break;case 2:b.lines+=e*a;break;case 0:b.points+=e*a;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",d)}}}}function ig(a,b){return Math.abs(b[1])-Math.abs(a[1])}function jg(a){var b={},c=
new Float32Array(8);return{update:function(d,e,f,g){var h=d.morphTargetInfluences,k=h.length;d=b[e.id];if(void 0===d){d=[];for(var m=0;m<k;m++)d[m]=[m,0];b[e.id]=d}var p=f.morphTargets&&e.morphAttributes.position;f=f.morphNormals&&e.morphAttributes.normal;for(m=0;m<k;m++){var q=d[m];0!==q[1]&&(p&&e.removeAttribute("morphTarget"+m),f&&e.removeAttribute("morphNormal"+m))}for(m=0;m<k;m++)q=d[m],q[0]=m,q[1]=h[m];d.sort(ig);for(m=0;8>m;m++){if(q=d[m])if(h=q[0],k=q[1]){p&&e.addAttribute("morphTarget"+m,
p[h]);f&&e.addAttribute("morphNormal"+m,f[h]);c[m]=k;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function kg(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function bb(a,b,c,d,e,f,g,h,k,m){a=void 0!==a?a:[];W.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h,k,m);this.flipY=!1}function Sb(a,b,c,d){W.call(this,null);
this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Tb(a,b,c,d){W.call(this,null);this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Ub(a,b,c){var d=a[0];if(0>=d||0<d)return a;var e=b*c,f=Te[e];void 0===f&&(f=new Float32Array(e),Te[e]=f);if(0!==b)for(d.toArray(f,0),d=1,e=0;d!==b;++d)e+=c,a[d].toArray(f,e);return f}function U(a,
b){if(a.length!==b.length)return!1;for(var c=0,d=a.length;c<d;c++)if(a[c]!==b[c])return!1;return!0}function sa(a,b){for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}function Ue(a,b){var c=Ve[b];void 0===c&&(c=new Int32Array(b),Ve[b]=c);for(var d=0;d!==b;++d)c[d]=a.allocateTextureUnit();return c}function lg(a,b){var c=this.cache;c[0]!==b&&(a.uniform1f(this.addr,b),c[0]=b)}function mg(a,b){var c=this.cache;c[0]!==b&&(a.uniform1i(this.addr,b),c[0]=b)}function ng(a,b){var c=this.cache;if(void 0!==b.x){if(c[0]!==
b.x||c[1]!==b.y)a.uniform2f(this.addr,b.x,b.y),c[0]=b.x,c[1]=b.y}else U(c,b)||(a.uniform2fv(this.addr,b),sa(c,b))}function og(a,b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y||c[2]!==b.z)a.uniform3f(this.addr,b.x,b.y,b.z),c[0]=b.x,c[1]=b.y,c[2]=b.z}else if(void 0!==b.r){if(c[0]!==b.r||c[1]!==b.g||c[2]!==b.b)a.uniform3f(this.addr,b.r,b.g,b.b),c[0]=b.r,c[1]=b.g,c[2]=b.b}else U(c,b)||(a.uniform3fv(this.addr,b),sa(c,b))}function pg(a,b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||
c[1]!==b.y||c[2]!==b.z||c[3]!==b.w)a.uniform4f(this.addr,b.x,b.y,b.z,b.w),c[0]=b.x,c[1]=b.y,c[2]=b.z,c[3]=b.w}else U(c,b)||(a.uniform4fv(this.addr,b),sa(c,b))}function qg(a,b){var c=this.cache,d=b.elements;void 0===d?U(c,b)||(a.uniformMatrix2fv(this.addr,!1,b),sa(c,b)):U(c,d)||(We.set(d),a.uniformMatrix2fv(this.addr,!1,We),sa(c,d))}function rg(a,b){var c=this.cache,d=b.elements;void 0===d?U(c,b)||(a.uniformMatrix3fv(this.addr,!1,b),sa(c,b)):U(c,d)||(Xe.set(d),a.uniformMatrix3fv(this.addr,!1,Xe),sa(c,
d))}function sg(a,b){var c=this.cache,d=b.elements;void 0===d?U(c,b)||(a.uniformMatrix4fv(this.addr,!1,b),sa(c,b)):U(c,d)||(Ye.set(d),a.uniformMatrix4fv(this.addr,!1,Ye),sa(c,d))}function tg(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTexture2D(b||Ze,e)}function ug(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture2DArray(b||vg,e)}function wg(a,b,c){var d=this.cache,e=c.allocateTextureUnit();
d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture3D(b||xg,e)}function yg(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTextureCube(b||$e,e)}function af(a,b){var c=this.cache;U(c,b)||(a.uniform2iv(this.addr,b),sa(c,b))}function bf(a,b){var c=this.cache;U(c,b)||(a.uniform3iv(this.addr,b),sa(c,b))}function cf(a,b){var c=this.cache;U(c,b)||(a.uniform4iv(this.addr,b),sa(c,b))}function zg(a){switch(a){case 5126:return lg;case 35664:return ng;
case 35665:return og;case 35666:return pg;case 35674:return qg;case 35675:return rg;case 35676:return sg;case 35678:case 36198:return tg;case 35679:return wg;case 35680:return yg;case 36289:return ug;case 5124:case 35670:return mg;case 35667:case 35671:return af;case 35668:case 35672:return bf;case 35669:case 35673:return cf}}function Ag(a,b){var c=this.cache;U(c,b)||(a.uniform1fv(this.addr,b),sa(c,b))}function Bg(a,b){var c=this.cache;U(c,b)||(a.uniform1iv(this.addr,b),sa(c,b))}function Cg(a,b){var c=
this.cache;b=Ub(b,this.size,2);U(c,b)||(a.uniform2fv(this.addr,b),this.updateCache(b))}function Dg(a,b){var c=this.cache;b=Ub(b,this.size,3);U(c,b)||(a.uniform3fv(this.addr,b),this.updateCache(b))}function Eg(a,b){var c=this.cache;b=Ub(b,this.size,4);U(c,b)||(a.uniform4fv(this.addr,b),this.updateCache(b))}function Fg(a,b){var c=this.cache;b=Ub(b,this.size,4);U(c,b)||(a.uniformMatrix2fv(this.addr,!1,b),this.updateCache(b))}function Gg(a,b){var c=this.cache;b=Ub(b,this.size,9);U(c,b)||(a.uniformMatrix3fv(this.addr,
!1,b),this.updateCache(b))}function Hg(a,b){var c=this.cache;b=Ub(b,this.size,16);U(c,b)||(a.uniformMatrix4fv(this.addr,!1,b),this.updateCache(b))}function Ig(a,b,c){var d=this.cache,e=b.length,f=Ue(c,e);!1===U(d,f)&&(a.uniform1iv(this.addr,f),sa(d,f));for(a=0;a!==e;++a)c.safeSetTexture2D(b[a]||Ze,f[a])}function Jg(a,b,c){var d=this.cache,e=b.length,f=Ue(c,e);!1===U(d,f)&&(a.uniform1iv(this.addr,f),sa(d,f));for(a=0;a!==e;++a)c.safeSetTextureCube(b[a]||$e,f[a])}function Kg(a){switch(a){case 5126:return Ag;
case 35664:return Cg;case 35665:return Dg;case 35666:return Eg;case 35674:return Fg;case 35675:return Gg;case 35676:return Hg;case 35678:return Ig;case 35680:return Jg;case 5124:case 35670:return Bg;case 35667:case 35671:return af;case 35668:case 35672:return bf;case 35669:case 35673:return cf}}function Lg(a,b,c){this.id=a;this.addr=c;this.cache=[];this.setValue=zg(b.type)}function df(a,b,c){this.id=a;this.addr=c;this.cache=[];this.size=b.size;this.setValue=Kg(b.type)}function ef(a){this.id=a;this.seq=
[];this.map={}}function hb(a,b){this.seq=[];this.map={};for(var c=a.getProgramParameter(b,35718),d=0;d<c;++d){var e=a.getActiveUniform(b,d),f=a.getUniformLocation(b,e.name),g=this,h=e.name,k=h.length;for(de.lastIndex=0;;){var m=de.exec(h),p=de.lastIndex,q=m[1],v=m[3];"]"===m[2]&&(q|=0);if(void 0===v||"["===v&&p+2===k){h=g;e=void 0===v?new Lg(q,e,f):new df(q,e,f);h.seq.push(e);h.map[e.id]=e;break}else v=g.map[q],void 0===v&&(v=new ef(q),q=g,g=v,q.seq.push(g),q.map[g.id]=g),g=v}}}function Mg(a){a=a.split("\n");
for(var b=0;b<a.length;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function ff(a,b,c){var d=a.createShader(b);a.shaderSource(d,c);a.compileShader(d);!1===a.getShaderParameter(d,35713)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==a.getShaderInfoLog(d)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",35633===b?"vertex":"fragment",a.getShaderInfoLog(d),Mg(c));return d}function gf(a){switch(a){case 3E3:return["Linear","( value )"];case 3001:return["sRGB","( value )"];case 3002:return["RGBE",
"( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];default:throw Error("unsupported encoding: "+a);}}function xd(a,b){b=gf(b);return"vec4 "+a+"( vec4 value ) { return "+b[0]+"ToLinear"+b[1]+"; }"}function Ng(a,b){b=gf(b);return"vec4 "+a+"( vec4 value ) { return LinearTo"+b[0]+b[1]+"; }"}function Og(a,b){switch(b){case 1:b="Linear";break;case 2:b="Reinhard";
break;case 3:b="Uncharted2";break;case 4:b="OptimizedCineon";break;case 5:b="ACESFilmic";break;default:throw Error("unsupported toneMapping: "+b);}return"vec3 "+a+"( vec3 color ) { return "+b+"ToneMapping( color ); }"}function Pg(a,b,c){a=a||{};return[a.derivatives||b.envMapCubeUV||b.bumpMap||b.normalMap&&!b.objectSpaceNormalMap||b.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(a.fragDepth||b.logarithmicDepthBuffer)&&c.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":
"",a.drawBuffers&&c.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(a.shaderTextureLOD||b.envMap)&&c.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Ec).join("\n")}function Qg(a){var b=[],c;for(c in a){var d=a[c];!1!==d&&b.push("#define "+c+" "+d)}return b.join("\n")}function Ec(a){return""!==a}function hf(a,b){return a.replace(/NUM_DIR_LIGHTS/g,b.numDirLights).replace(/NUM_SPOT_LIGHTS/g,b.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,
b.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,b.numPointLights).replace(/NUM_HEMI_LIGHTS/g,b.numHemiLights)}function jf(a,b){return a.replace(/NUM_CLIPPING_PLANES/g,b.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,b.numClippingPlanes-b.numClipIntersection)}function ee(a){return a.replace(/^[ \t]*#include +<([\w\d./]+)>/gm,function(a,c){a=T[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return ee(a)})}function kf(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,
function(a,c,d,e){a="";for(c=parseInt(c);c<parseInt(d);c++)a+=e.replace(/\[ i \]/g,"[ "+c+" ]");return a})}function Rg(a,b,c,d,e,f,g,h){var k=a.context,m=d.defines,p=e.vertexShader,q=e.fragmentShader,v="SHADOWMAP_TYPE_BASIC";1===f.shadowMapType?v="SHADOWMAP_TYPE_PCF":2===f.shadowMapType&&(v="SHADOWMAP_TYPE_PCF_SOFT");var l="ENVMAP_TYPE_CUBE",r="ENVMAP_MODE_REFLECTION",u="ENVMAP_BLENDING_MULTIPLY";if(f.envMap){switch(d.envMap.mapping){case 301:case 302:l="ENVMAP_TYPE_CUBE";break;case 306:case 307:l=
"ENVMAP_TYPE_CUBE_UV";break;case 303:case 304:l="ENVMAP_TYPE_EQUIREC";break;case 305:l="ENVMAP_TYPE_SPHERE"}switch(d.envMap.mapping){case 302:case 304:r="ENVMAP_MODE_REFRACTION"}switch(d.combine){case 0:u="ENVMAP_BLENDING_MULTIPLY";break;case 1:u="ENVMAP_BLENDING_MIX";break;case 2:u="ENVMAP_BLENDING_ADD"}}a=0<a.gammaFactor?a.gammaFactor:1;var x=g.isWebGL2?"":Pg(d.extensions,f,b),n=Qg(m),w=k.createProgram();d.isRawShaderMaterial?(m=[n].filter(Ec).join("\n"),0<m.length&&(m+="\n"),b=[x,n].filter(Ec).join("\n"),
0<b.length&&(b+="\n")):(m=["precision "+f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+e.name,n,f.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+a,"#define MAX_BONES "+f.maxBones,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+r:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":
"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.displacementMap&&f.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors?"#define USE_COLOR":"",f.flatShading?"#define FLAT_SHADED":
"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture?"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals&&!1===f.flatShading?"#define USE_MORPHNORMALS":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+v:"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(g.isWebGL2||b.get("EXT_frag_depth"))?
"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;",
"\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Ec).join("\n"),b=[x,"precision "+
f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+e.name,n,f.alphaTest?"#define ALPHATEST "+f.alphaTest+(f.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+a,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.matcap?"#define USE_MATCAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+l:"",f.envMap?"#define "+r:"",f.envMap?"#define "+u:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?
"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors?"#define USE_COLOR":"",f.gradientMap?"#define USE_GRADIENTMAP":"",f.flatShading?"#define FLAT_SHADED":
"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+v:"",f.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",f.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(g.isWebGL2||b.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",f.envMap&&(g.isWebGL2||b.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":
"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==f.toneMapping?"#define TONE_MAPPING":"",0!==f.toneMapping?T.tonemapping_pars_fragment:"",0!==f.toneMapping?Og("toneMapping",f.toneMapping):"",f.dithering?"#define DITHERING":"",f.outputEncoding||f.mapEncoding||f.matcapEncoding||f.envMapEncoding||f.emissiveMapEncoding?T.encodings_pars_fragment:"",f.mapEncoding?xd("mapTexelToLinear",f.mapEncoding):"",f.matcapEncoding?xd("matcapTexelToLinear",f.matcapEncoding):"",f.envMapEncoding?xd("envMapTexelToLinear",
f.envMapEncoding):"",f.emissiveMapEncoding?xd("emissiveMapTexelToLinear",f.emissiveMapEncoding):"",f.outputEncoding?Ng("linearToOutputTexel",f.outputEncoding):"",f.depthPacking?"#define DEPTH_PACKING "+d.depthPacking:"","\n"].filter(Ec).join("\n"));p=ee(p);p=hf(p,f);p=jf(p,f);q=ee(q);q=hf(q,f);q=jf(q,f);p=kf(p);q=kf(q);g.isWebGL2&&!d.isRawShaderMaterial&&(g=!1,v=/^\s*#version\s+300\s+es\s*\n/,d.isShaderMaterial&&null!==p.match(v)&&null!==q.match(v)&&(g=!0,p=p.replace(v,""),q=q.replace(v,"")),m="#version 300 es\n\n#define attribute in\n#define varying out\n#define texture2D texture\n"+
m,b=["#version 300 es\n\n#define varying in",g?"":"out highp vec4 pc_fragColor;",g?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+
"\n"+b);q=b+q;p=ff(k,35633,m+p);q=ff(k,35632,q);k.attachShader(w,p);k.attachShader(w,q);void 0!==d.index0AttributeName?k.bindAttribLocation(w,0,d.index0AttributeName):!0===f.morphTargets&&k.bindAttribLocation(w,0,"position");k.linkProgram(w);f=k.getProgramInfoLog(w).trim();g=k.getShaderInfoLog(p).trim();v=k.getShaderInfoLog(q).trim();r=l=!0;if(!1===k.getProgramParameter(w,35714))l=!1,console.error("THREE.WebGLProgram: shader error: ",k.getError(),"35715",k.getProgramParameter(w,35715),"gl.getProgramInfoLog",
f,g,v);else if(""!==f)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f);else if(""===g||""===v)r=!1;r&&(this.diagnostics={runnable:l,material:d,programLog:f,vertexShader:{log:g,prefix:m},fragmentShader:{log:v,prefix:b}});k.deleteShader(p);k.deleteShader(q);var y;this.getUniforms=function(){void 0===y&&(y=new hb(k,w,h));return y};var D;this.getAttributes=function(){if(void 0===D){for(var a={},b=k.getProgramParameter(w,35721),c=0;c<b;c++){var d=k.getActiveAttrib(w,c).name;a[d]=k.getAttribLocation(w,
d)}D=a}return D};this.destroy=function(){k.deleteProgram(w);this.program=void 0};Object.defineProperties(this,{uniforms:{get:function(){console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms().");return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGLProgram: .attributes is now .getAttributes().");return this.getAttributes()}}});this.name=e.name;this.id=Sg++;this.code=c;this.usedTimes=1;this.program=w;this.vertexShader=p;this.fragmentShader=q;return this}function Tg(a,
b,c,d){function e(a,b){if(a)a.isTexture?c=a.encoding:a.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),c=a.texture.encoding);else var c=3E3;3E3===c&&b&&(c=3007);return c}var f=[],g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"phong",MeshStandardMaterial:"physical",
MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},h="precision supportsVertexTextures map mapEncoding matcap matcapEncoding envMap envMapMode envMapEncoding lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap objectSpaceNormalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors vertexTangents fog useFog fogExp flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering".split(" ");
this.getParameters=function(b,d,f,h,v,l,r){var k=g[b.type];if(r.isSkinnedMesh){var m=r.skeleton.bones;if(c.floatVertexTextures)m=1024;else{var p=Math.min(Math.floor((c.maxVertexUniforms-20)/4),m.length);p<m.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+m.length+" bones. This GPU supports "+p+"."),m=0):m=p}}else m=0;p=c.precision;null!==b.precision&&(p=c.getMaxPrecision(b.precision),p!==b.precision&&console.warn("THREE.WebGLProgram.getParameters:",b.precision,"not supported, using",p,"instead."));
var q=a.getRenderTarget();return{shaderID:k,precision:p,supportsVertexTextures:c.vertexTextures,outputEncoding:e(q?q.texture:null,a.gammaOutput),map:!!b.map,mapEncoding:e(b.map,a.gammaInput),matcap:!!b.matcap,matcapEncoding:e(b.matcap,a.gammaInput),envMap:!!b.envMap,envMapMode:b.envMap&&b.envMap.mapping,envMapEncoding:e(b.envMap,a.gammaInput),envMapCubeUV:!!b.envMap&&(306===b.envMap.mapping||307===b.envMap.mapping),lightMap:!!b.lightMap,aoMap:!!b.aoMap,emissiveMap:!!b.emissiveMap,emissiveMapEncoding:e(b.emissiveMap,
a.gammaInput),bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,objectSpaceNormalMap:1===b.normalMapType,displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,gradientMap:!!b.gradientMap,combine:b.combine,vertexTangents:b.normalMap&&b.vertexTangents,vertexColors:b.vertexColors,fog:!!h,useFog:b.fog,fogExp:h&&h.isFogExp2,flatShading:b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:c.logarithmicDepthBuffer,
skinning:b.skinning&&0<m,maxBones:m,useVertexTexture:c.floatVertexTextures,morphTargets:b.morphTargets,morphNormals:b.morphNormals,maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:d.directional.length,numPointLights:d.point.length,numSpotLights:d.spot.length,numRectAreaLights:d.rectArea.length,numHemiLights:d.hemi.length,numClippingPlanes:v,numClipIntersection:l,dithering:b.dithering,shadowMapEnabled:a.shadowMap.enabled&&r.receiveShadow&&0<f.length,shadowMapType:a.shadowMap.type,
toneMapping:a.toneMapping,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha,alphaTest:b.alphaTest,doubleSided:2===b.side,flipSided:1===b.side,depthPacking:void 0!==b.depthPacking?b.depthPacking:!1}};this.getProgramCode=function(b,c){var d=[];c.shaderID?d.push(c.shaderID):(d.push(b.fragmentShader),d.push(b.vertexShader));if(void 0!==b.defines)for(var e in b.defines)d.push(e),d.push(b.defines[e]);for(e=0;e<h.length;e++)d.push(c[h[e]]);d.push(b.onBeforeCompile.toString());
d.push(a.gammaOutput);d.push(a.gammaFactor);return d.join()};this.acquireProgram=function(e,g,h,q){for(var k,m=0,p=f.length;m<p;m++){var l=f[m];if(l.code===q){k=l;++k.usedTimes;break}}void 0===k&&(k=new Rg(a,b,q,e,g,h,c,d),f.push(k));return k};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=f.indexOf(a);f[b]=f[f.length-1];f.pop();a.destroy()}};this.programs=f}function Ug(){var a=new WeakMap;return{get:function(b){var c=a.get(b);void 0===c&&(c={},a.set(b,c));return c},remove:function(b){a.delete(b)},
update:function(b,c,d){a.get(b)[c]=d},dispose:function(){a=new WeakMap}}}function Vg(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program!==b.program?a.program.id-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function Wg(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-
b.id}function lf(){function a(a,d,e,m,p,q){var g=b[c];void 0===g?(g={id:a.id,object:a,geometry:d,material:e,program:e.program||f,groupOrder:m,renderOrder:a.renderOrder,z:p,group:q},b[c]=g):(g.id=a.id,g.object=a,g.geometry=d,g.material=e,g.program=e.program||f,g.groupOrder=m,g.renderOrder=a.renderOrder,g.z=p,g.group=q);c++;return g}var b=[],c=0,d=[],e=[],f={id:-1};return{opaque:d,transparent:e,init:function(){c=0;d.length=0;e.length=0},push:function(b,c,f,m,p,q){b=a(b,c,f,m,p,q);(!0===f.transparent?
e:d).push(b)},unshift:function(b,c,f,m,p,q){b=a(b,c,f,m,p,q);(!0===f.transparent?e:d).unshift(b)},sort:function(){1<d.length&&d.sort(Vg);1<e.length&&e.sort(Wg)}}}function Xg(){function a(c){c=c.target;c.removeEventListener("dispose",a);delete b[c.id]}var b={};return{get:function(c,d){var e=b[c.id];if(void 0===e){var f=new lf;b[c.id]={};b[c.id][d.id]=f;c.addEventListener("dispose",a)}else f=e[d.id],void 0===f&&(f=new lf,e[d.id]=f);return f},dispose:function(){b={}}}}function Yg(){var a={};return{get:function(b){if(void 0!==
a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={direction:new n,color:new M,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "SpotLight":c={position:new n,direction:new n,color:new M,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "PointLight":c={position:new n,color:new M,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B,shadowCameraNear:1,shadowCameraFar:1E3};break;
case "HemisphereLight":c={direction:new n,skyColor:new M,groundColor:new M};break;case "RectAreaLight":c={color:new M,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function Zg(){var a=new Yg,b={id:$g++,hash:{stateID:-1,directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,shadowsLength:-1},ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],
pointShadowMatrix:[],hemi:[]},c=new n,d=new P,e=new P;return{setup:function(f,g,h){var k=0,m=0,p=0,q=0,v=0,l=0,r=0,u=0;h=h.matrixWorldInverse;for(var n=0,A=f.length;n<A;n++){var w=f[n],y=w.color,D=w.intensity,J=w.distance,ua=w.shadow&&w.shadow.map?w.shadow.map.texture:null;if(w.isAmbientLight)k+=y.r*D,m+=y.g*D,p+=y.b*D;else if(w.isDirectionalLight){var F=a.get(w);F.color.copy(w.color).multiplyScalar(w.intensity);F.direction.setFromMatrixPosition(w.matrixWorld);c.setFromMatrixPosition(w.target.matrixWorld);
F.direction.sub(c);F.direction.transformDirection(h);if(F.shadow=w.castShadow)y=w.shadow,F.shadowBias=y.bias,F.shadowRadius=y.radius,F.shadowMapSize=y.mapSize;b.directionalShadowMap[q]=ua;b.directionalShadowMatrix[q]=w.shadow.matrix;b.directional[q]=F;q++}else if(w.isSpotLight){F=a.get(w);F.position.setFromMatrixPosition(w.matrixWorld);F.position.applyMatrix4(h);F.color.copy(y).multiplyScalar(D);F.distance=J;F.direction.setFromMatrixPosition(w.matrixWorld);c.setFromMatrixPosition(w.target.matrixWorld);
F.direction.sub(c);F.direction.transformDirection(h);F.coneCos=Math.cos(w.angle);F.penumbraCos=Math.cos(w.angle*(1-w.penumbra));F.decay=w.decay;if(F.shadow=w.castShadow)y=w.shadow,F.shadowBias=y.bias,F.shadowRadius=y.radius,F.shadowMapSize=y.mapSize;b.spotShadowMap[l]=ua;b.spotShadowMatrix[l]=w.shadow.matrix;b.spot[l]=F;l++}else if(w.isRectAreaLight)F=a.get(w),F.color.copy(y).multiplyScalar(D),F.position.setFromMatrixPosition(w.matrixWorld),F.position.applyMatrix4(h),e.identity(),d.copy(w.matrixWorld),
d.premultiply(h),e.extractRotation(d),F.halfWidth.set(.5*w.width,0,0),F.halfHeight.set(0,.5*w.height,0),F.halfWidth.applyMatrix4(e),F.halfHeight.applyMatrix4(e),b.rectArea[r]=F,r++;else if(w.isPointLight){F=a.get(w);F.position.setFromMatrixPosition(w.matrixWorld);F.position.applyMatrix4(h);F.color.copy(w.color).multiplyScalar(w.intensity);F.distance=w.distance;F.decay=w.decay;if(F.shadow=w.castShadow)y=w.shadow,F.shadowBias=y.bias,F.shadowRadius=y.radius,F.shadowMapSize=y.mapSize,F.shadowCameraNear=
y.camera.near,F.shadowCameraFar=y.camera.far;b.pointShadowMap[v]=ua;b.pointShadowMatrix[v]=w.shadow.matrix;b.point[v]=F;v++}else w.isHemisphereLight&&(F=a.get(w),F.direction.setFromMatrixPosition(w.matrixWorld),F.direction.transformDirection(h),F.direction.normalize(),F.skyColor.copy(w.color).multiplyScalar(D),F.groundColor.copy(w.groundColor).multiplyScalar(D),b.hemi[u]=F,u++)}b.ambient[0]=k;b.ambient[1]=m;b.ambient[2]=p;b.directional.length=q;b.spot.length=l;b.rectArea.length=r;b.point.length=v;
b.hemi.length=u;b.hash.stateID=b.id;b.hash.directionalLength=q;b.hash.pointLength=v;b.hash.spotLength=l;b.hash.rectAreaLength=r;b.hash.hemiLength=u;b.hash.shadowsLength=g.length},state:b}}function mf(){var a=new Zg,b=[],c=[];return{init:function(){b.length=0;c.length=0},state:{lightsArray:b,shadowsArray:c,lights:a},setupLights:function(d){a.setup(b,c,d)},pushLight:function(a){b.push(a)},pushShadow:function(a){c.push(a)}}}function ah(){function a(c){c=c.target;c.removeEventListener("dispose",a);delete b[c.id]}
var b={};return{get:function(c,d){if(void 0===b[c.id]){var e=new mf;b[c.id]={};b[c.id][d.id]=e;c.addEventListener("dispose",a)}else void 0===b[c.id][d.id]?(e=new mf,b[c.id][d.id]=e):e=b[c.id][d.id];return e},dispose:function(){b={}}}}function ib(a){O.call(this);this.type="MeshDepthMaterial";this.depthPacking=3200;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=
this.fog=!1;this.setValues(a)}function jb(a){O.call(this);this.type="MeshDistanceMaterial";this.referencePosition=new n;this.nearDistance=1;this.farDistance=1E3;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.lights=this.fog=!1;this.setValues(a)}function nf(a,b,c){function d(b,c,d,e,f,g){var h=b.geometry;var k=q;var m=b.customDepthMaterial;d&&(k=v,m=b.customDistanceMaterial);m?k=m:(m=!1,c.morphTargets&&(h&&h.isBufferGeometry?
m=h.morphAttributes&&h.morphAttributes.position&&0<h.morphAttributes.position.length:h&&h.isGeometry&&(m=h.morphTargets&&0<h.morphTargets.length)),b.isSkinnedMesh&&!1===c.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",b),b=b.isSkinnedMesh&&c.skinning,h=0,m&&(h|=1),b&&(h|=2),k=k[h]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(h=k.uuid,m=c.uuid,b=l[h],void 0===b&&(b={},l[h]=b),h=b[m],void 0===h&&(h=k.clone(),b[m]=h),
k=h);k.visible=c.visible;k.wireframe=c.wireframe;k.side=null!=c.shadowSide?c.shadowSide:r[c.side];k.clipShadows=c.clipShadows;k.clippingPlanes=c.clippingPlanes;k.clipIntersection=c.clipIntersection;k.wireframeLinewid