Embark on a journey through the realm of advanced AI with LoLLMS, your ultimate companion for intelligent conversations and multimodal interactions. Unleash the power of large language models and explore new frontiers in artificial intelligence.
Discover the capabilities of LoLLMS:
Embark on a journey through the realm of advanced AI with LoLLMS, your ultimate companion for intelligent conversations and multimodal interactions. Unleash the power of large language models and explore new frontiers in artificial intelligence.
Discover the capabilities of LoLLMS:
0?1:-1,u.push(ne.x,ne.y,ne.z),h.push(Se/A),h.push(1-le/I),U+=1}}for(let le=0;le>8&255]+Rn[t>>16&255]+Rn[t>>24&255]+"-"+Rn[e&255]+Rn[e>>8&255]+"-"+Rn[e>>16&15|64]+Rn[e>>24&255]+"-"+Rn[n&63|128]+Rn[n>>8&255]+"-"+Rn[n>>16&255]+Rn[n>>24&255]+Rn[s&255]+Rn[s>>8&255]+Rn[s>>16&255]+Rn[s>>24&255]).toLowerCase()}function Nn(t,e,n){return Math.max(e,Math.min(n,t))}function KE(t,e){return(t%e+e)%e}function _At(t,e,n,s,i){return s+(t-e)*(i-s)/(n-e)}function hAt(t,e,n){return t!==e?(n-t)/(e-t):0}function xl(t,e,n){return(1-n)*t+n*e}function fAt(t,e,n,s){return xl(t,e,1-Math.exp(-n*s))}function mAt(t,e=1){return e-Math.abs(KE(t,e*2)-e)}function gAt(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*(3-2*t))}function bAt(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*t*(t*(t*6-15)+10))}function EAt(t,e){return t+Math.floor(Math.random()*(e-t+1))}function yAt(t,e){return t+Math.random()*(e-t)}function vAt(t){return t*(.5-Math.random())}function SAt(t){t!==void 0&&(uC=t);let e=uC+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function TAt(t){return t*Tl}function xAt(t){return t*fa}function sb(t){return(t&t-1)===0&&t!==0}function CAt(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function lu(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function wAt(t,e,n,s,i){const r=Math.cos,o=Math.sin,a=r(n/2),c=o(n/2),d=r((e+s)/2),u=o((e+s)/2),h=r((e-s)/2),f=o((e-s)/2),m=r((s-e)/2),_=o((s-e)/2);switch(i){case"XYX":t.set(a*u,c*h,c*f,a*d);break;case"YZY":t.set(c*f,a*u,c*h,a*d);break;case"ZXZ":t.set(c*h,c*f,a*u,a*d);break;case"XZX":t.set(a*u,c*_,c*m,a*d);break;case"YXY":t.set(c*m,a*u,c*_,a*d);break;case"ZYZ":t.set(c*_,c*m,a*u,a*d);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ei(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function Vt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(t*4294967295);case Uint16Array:return Math.round(t*65535);case Uint8Array:return Math.round(t*255);case Int32Array:return Math.round(t*2147483647);case Int16Array:return Math.round(t*32767);case Int8Array:return Math.round(t*127);default:throw new Error("Invalid component type.")}}const RAt={DEG2RAD:Tl,RAD2DEG:fa,generateUUID:Bs,clamp:Nn,euclideanModulo:KE,mapLinear:_At,inverseLerp:hAt,lerp:xl,damp:fAt,pingpong:mAt,smoothstep:gAt,smootherstep:bAt,randInt:EAt,randFloat:yAt,randFloatSpread:vAt,seededRandom:SAt,degToRad:TAt,radToDeg:xAt,isPowerOfTwo:sb,ceilPowerOfTwo:CAt,floorPowerOfTwo:lu,setQuaternionFromProperEuler:wAt,normalize:Vt,denormalize:ei};class At{constructor(e=0,n=0){At.prototype.isVector2=!0,this.x=e,this.y=n}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,n){return this.x=e,this.y=n,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const n=this.x,s=this.y,i=e.elements;return this.x=i[0]*n+i[3]*s+i[6],this.y=i[1]*n+i[4]*s+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this}clampLength(e,n){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(e,Math.min(n,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const n=Math.sqrt(this.lengthSq()*e.lengthSq());if(n===0)return Math.PI/2;const s=this.dot(e)/n;return Math.acos(Nn(s,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const n=this.x-e.x,s=this.y-e.y;return n*n+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this}lerpVectors(e,n,s){return this.x=e.x+(n.x-e.x)*s,this.y=e.y+(n.y-e.y)*s,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this}rotateAround(e,n){const s=Math.cos(n),i=Math.sin(n),r=this.x-e.x,o=this.y-e.y;return this.x=r*s-o*i+e.x,this.y=r*i+o*s+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Tt{constructor(e,n,s,i,r,o,a,c,d){Tt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,n,s,i,r,o,a,c,d)}set(e,n,s,i,r,o,a,c,d){const u=this.elements;return u[0]=e,u[1]=i,u[2]=a,u[3]=n,u[4]=r,u[5]=c,u[6]=s,u[7]=o,u[8]=d,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const n=this.elements,s=e.elements;return n[0]=s[0],n[1]=s[1],n[2]=s[2],n[3]=s[3],n[4]=s[4],n[5]=s[5],n[6]=s[6],n[7]=s[7],n[8]=s[8],this}extractBasis(e,n,s){return e.setFromMatrix3Column(this,0),n.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const n=e.elements;return this.set(n[0],n[4],n[8],n[1],n[5],n[9],n[2],n[6],n[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,n){const s=e.elements,i=n.elements,r=this.elements,o=s[0],a=s[3],c=s[6],d=s[1],u=s[4],h=s[7],f=s[2],m=s[5],_=s[8],g=i[0],b=i[3],E=i[6],y=i[1],v=i[4],S=i[7],R=i[2],C=i[5],A=i[8];return r[0]=o*g+a*y+c*R,r[3]=o*b+a*v+c*C,r[6]=o*E+a*S+c*A,r[1]=d*g+u*y+h*R,r[4]=d*b+u*v+h*C,r[7]=d*E+u*S+h*A,r[2]=f*g+m*y+_*R,r[5]=f*b+m*v+_*C,r[8]=f*E+m*S+_*A,this}multiplyScalar(e){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=e,n[4]*=e,n[7]*=e,n[2]*=e,n[5]*=e,n[8]*=e,this}determinant(){const e=this.elements,n=e[0],s=e[1],i=e[2],r=e[3],o=e[4],a=e[5],c=e[6],d=e[7],u=e[8];return n*o*u-n*a*d-s*r*u+s*a*c+i*r*d-i*o*c}invert(){const e=this.elements,n=e[0],s=e[1],i=e[2],r=e[3],o=e[4],a=e[5],c=e[6],d=e[7],u=e[8],h=u*o-a*d,f=a*c-u*r,m=d*r-o*c,_=n*h+s*f+i*m;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);const g=1/_;return e[0]=h*g,e[1]=(i*d-u*s)*g,e[2]=(a*s-i*o)*g,e[3]=f*g,e[4]=(u*n-i*c)*g,e[5]=(i*r-a*n)*g,e[6]=m*g,e[7]=(s*c-d*n)*g,e[8]=(o*n-s*r)*g,this}transpose(){let e;const n=this.elements;return e=n[1],n[1]=n[3],n[3]=e,e=n[2],n[2]=n[6],n[6]=e,e=n[5],n[5]=n[7],n[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const n=this.elements;return e[0]=n[0],e[1]=n[3],e[2]=n[6],e[3]=n[1],e[4]=n[4],e[5]=n[7],e[6]=n[2],e[7]=n[5],e[8]=n[8],this}setUvTransform(e,n,s,i,r,o,a){const c=Math.cos(r),d=Math.sin(r);return this.set(s*c,s*d,-s*(c*o+d*a)+o+e,-i*d,i*c,-i*(-d*o+c*a)+a+n,0,0,1),this}scale(e,n){return this.premultiply(Mm.makeScale(e,n)),this}rotate(e){return this.premultiply(Mm.makeRotation(-e)),this}translate(e,n){return this.premultiply(Mm.makeTranslation(e,n)),this}makeTranslation(e,n){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,n,0,0,1),this}makeRotation(e){const n=Math.cos(e),s=Math.sin(e);return this.set(n,-s,0,s,n,0,0,0,1),this}makeScale(e,n){return this.set(e,0,0,0,n,0,0,0,1),this}equals(e){const n=this.elements,s=e.elements;for(let i=0;i<9;i++)if(n[i]!==s[i])return!1;return!0}fromArray(e,n=0){for(let s=0;s<9;s++)this.elements[s]=e[s+n];return this}toArray(e=[],n=0){const s=this.elements;return e[n]=s[0],e[n+1]=s[1],e[n+2]=s[2],e[n+3]=s[3],e[n+4]=s[4],e[n+5]=s[5],e[n+6]=s[6],e[n+7]=s[7],e[n+8]=s[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Mm=new Tt;function UN(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function Yl(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function AAt(){const t=Yl("canvas");return t.style.display="block",t}const pC={};function Cl(t){t in pC||(pC[t]=!0,console.warn(t))}const _C=new Tt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),hC=new Tt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Pc={[wn]:{transfer:iu,primaries:ru,toReference:t=>t,fromReference:t=>t},[tn]:{transfer:Kt,primaries:ru,toReference:t=>t.convertSRGBToLinear(),fromReference:t=>t.convertLinearToSRGB()},[tp]:{transfer:iu,primaries:ou,toReference:t=>t.applyMatrix3(hC),fromReference:t=>t.applyMatrix3(_C)},[WE]:{transfer:Kt,primaries:ou,toReference:t=>t.convertSRGBToLinear().applyMatrix3(hC),fromReference:t=>t.applyMatrix3(_C).convertLinearToSRGB()}},NAt=new Set([wn,tp]),Ut={enabled:!0,_workingColorSpace:wn,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(t){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!t},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(t){if(!NAt.has(t))throw new Error(`Unsupported working color space, "${t}".`);this._workingColorSpace=t},convert:function(t,e,n){if(this.enabled===!1||e===n||!e||!n)return t;const s=Pc[e].toReference,i=Pc[n].fromReference;return i(s(t))},fromWorkingColorSpace:function(t,e){return this.convert(t,this._workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this._workingColorSpace)},getPrimaries:function(t){return Pc[t].primaries},getTransfer:function(t){return t===_s?iu:Pc[t].transfer}};function Qo(t){return t<.04045?t*.0773993808:Math.pow(t*.9478672986+.0521327014,2.4)}function Im(t){return t<.0031308?t*12.92:1.055*Math.pow(t,.41666)-.055}let Eo;class FN{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{Eo===void 0&&(Eo=Yl("canvas")),Eo.width=e.width,Eo.height=e.height;const s=Eo.getContext("2d");e instanceof ImageData?s.putImageData(e,0,0):s.drawImage(e,0,0,e.width,e.height),n=Eo}return n.width>2048||n.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const n=Yl("canvas");n.width=e.width,n.height=e.height;const s=n.getContext("2d");s.drawImage(e,0,0,e.width,e.height);const i=s.getImageData(0,0,e.width,e.height),r=i.data;for(let o=0;o0&&(s.userData=this.userData),n||(e.textures[this.uuid]=s),s}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==CN)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case pa:e.x=e.x-Math.floor(e.x);break;case us:e.x=e.x<0?0:1;break;case su:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case pa:e.y=e.y-Math.floor(e.y);break;case us:e.y=e.y<0?0:1;break;case su:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Cl("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===tn?Qr:LN}set encoding(e){Cl("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Qr?tn:_s}}Cn.DEFAULT_IMAGE=null;Cn.DEFAULT_MAPPING=CN;Cn.DEFAULT_ANISOTROPY=1;class $t{constructor(e=0,n=0,s=0,i=1){$t.prototype.isVector4=!0,this.x=e,this.y=n,this.z=s,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,n,s,i){return this.x=e,this.y=n,this.z=s,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;case 3:this.w=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this.z=e.z+n.z,this.w=e.w+n.w,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this.z+=e.z*n,this.w+=e.w*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this.z=e.z-n.z,this.w=e.w-n.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const n=this.x,s=this.y,i=this.z,r=this.w,o=e.elements;return this.x=o[0]*n+o[4]*s+o[8]*i+o[12]*r,this.y=o[1]*n+o[5]*s+o[9]*i+o[13]*r,this.z=o[2]*n+o[6]*s+o[10]*i+o[14]*r,this.w=o[3]*n+o[7]*s+o[11]*i+o[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const n=Math.sqrt(1-e.w*e.w);return n<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/n,this.y=e.y/n,this.z=e.z/n),this}setAxisAngleFromRotationMatrix(e){let n,s,i,r;const c=e.elements,d=c[0],u=c[4],h=c[8],f=c[1],m=c[5],_=c[9],g=c[2],b=c[6],E=c[10];if(Math.abs(u-f)<.01&&Math.abs(h-g)<.01&&Math.abs(_-b)<.01){if(Math.abs(u+f)<.1&&Math.abs(h+g)<.1&&Math.abs(_+b)<.1&&Math.abs(d+m+E-3)<.1)return this.set(1,0,0,0),this;n=Math.PI;const v=(d+1)/2,S=(m+1)/2,R=(E+1)/2,C=(u+f)/4,A=(h+g)/4,I=(_+b)/4;return v>S&&v>R?v<.01?(s=0,i=.707106781,r=.707106781):(s=Math.sqrt(v),i=C/s,r=A/s):S>R?S<.01?(s=.707106781,i=0,r=.707106781):(i=Math.sqrt(S),s=C/i,r=I/i):R<.01?(s=.707106781,i=.707106781,r=0):(r=Math.sqrt(R),s=A/r,i=I/r),this.set(s,i,r,n),this}let y=Math.sqrt((b-_)*(b-_)+(h-g)*(h-g)+(f-u)*(f-u));return Math.abs(y)<.001&&(y=1),this.x=(b-_)/y,this.y=(h-g)/y,this.z=(f-u)/y,this.w=Math.acos((d+m+E-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this.z=Math.max(e.z,Math.min(n.z,this.z)),this.w=Math.max(e.w,Math.min(n.w,this.w)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this.z=Math.max(e,Math.min(n,this.z)),this.w=Math.max(e,Math.min(n,this.w)),this}clampLength(e,n){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(e,Math.min(n,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this.z+=(e.z-this.z)*n,this.w+=(e.w-this.w)*n,this}lerpVectors(e,n,s){return this.x=e.x+(n.x-e.x)*s,this.y=e.y+(n.y-e.y)*s,this.z=e.z+(n.z-e.z)*s,this.w=e.w+(n.w-e.w)*s,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this.z=e[n+2],this.w=e[n+3],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e[n+2]=this.z,e[n+3]=this.w,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this.z=e.getZ(n),this.w=e.getW(n),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class IAt extends Ua{constructor(e=1,n=1,s={}){super(),this.isRenderTarget=!0,this.width=e,this.height=n,this.depth=1,this.scissor=new $t(0,0,e,n),this.scissorTest=!1,this.viewport=new $t(0,0,e,n);const i={width:e,height:n,depth:1};s.encoding!==void 0&&(Cl("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),s.colorSpace=s.encoding===Qr?tn:_s),s=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:zn,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0},s),this.texture=new Cn(i,s.mapping,s.wrapS,s.wrapT,s.magFilter,s.minFilter,s.format,s.type,s.anisotropy,s.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=s.generateMipmaps,this.texture.internalFormat=s.internalFormat,this.depthBuffer=s.depthBuffer,this.stencilBuffer=s.stencilBuffer,this.depthTexture=s.depthTexture,this.samples=s.samples}setSize(e,n,s=1){(this.width!==e||this.height!==n||this.depth!==s)&&(this.width=e,this.height=n,this.depth=s,this.texture.image.width=e,this.texture.image.height=n,this.texture.image.depth=s,this.dispose()),this.viewport.set(0,0,e,n),this.scissor.set(0,0,e,n)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const n=Object.assign({},e.texture.image);return this.texture.source=new BN(n),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class io extends IAt{constructor(e=1,n=1,s={}){super(e,n,s),this.isWebGLRenderTarget=!0}}class GN extends Cn{constructor(e=null,n=1,s=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:n,height:s,depth:i},this.magFilter=gn,this.minFilter=gn,this.wrapR=us,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class kAt extends Cn{constructor(e=null,n=1,s=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:n,height:s,depth:i},this.magFilter=gn,this.minFilter=gn,this.wrapR=us,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class yr{constructor(e=0,n=0,s=0,i=1){this.isQuaternion=!0,this._x=e,this._y=n,this._z=s,this._w=i}static slerpFlat(e,n,s,i,r,o,a){let c=s[i+0],d=s[i+1],u=s[i+2],h=s[i+3];const f=r[o+0],m=r[o+1],_=r[o+2],g=r[o+3];if(a===0){e[n+0]=c,e[n+1]=d,e[n+2]=u,e[n+3]=h;return}if(a===1){e[n+0]=f,e[n+1]=m,e[n+2]=_,e[n+3]=g;return}if(h!==g||c!==f||d!==m||u!==_){let b=1-a;const E=c*f+d*m+u*_+h*g,y=E>=0?1:-1,v=1-E*E;if(v>Number.EPSILON){const R=Math.sqrt(v),C=Math.atan2(R,E*y);b=Math.sin(b*C)/R,a=Math.sin(a*C)/R}const S=a*y;if(c=c*b+f*S,d=d*b+m*S,u=u*b+_*S,h=h*b+g*S,b===1-a){const R=1/Math.sqrt(c*c+d*d+u*u+h*h);c*=R,d*=R,u*=R,h*=R}}e[n]=c,e[n+1]=d,e[n+2]=u,e[n+3]=h}static multiplyQuaternionsFlat(e,n,s,i,r,o){const a=s[i],c=s[i+1],d=s[i+2],u=s[i+3],h=r[o],f=r[o+1],m=r[o+2],_=r[o+3];return e[n]=a*_+u*h+c*m-d*f,e[n+1]=c*_+u*f+d*h-a*m,e[n+2]=d*_+u*m+a*f-c*h,e[n+3]=u*_-a*h-c*f-d*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,n,s,i){return this._x=e,this._y=n,this._z=s,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,n){const s=e._x,i=e._y,r=e._z,o=e._order,a=Math.cos,c=Math.sin,d=a(s/2),u=a(i/2),h=a(r/2),f=c(s/2),m=c(i/2),_=c(r/2);switch(o){case"XYZ":this._x=f*u*h+d*m*_,this._y=d*m*h-f*u*_,this._z=d*u*_+f*m*h,this._w=d*u*h-f*m*_;break;case"YXZ":this._x=f*u*h+d*m*_,this._y=d*m*h-f*u*_,this._z=d*u*_-f*m*h,this._w=d*u*h+f*m*_;break;case"ZXY":this._x=f*u*h-d*m*_,this._y=d*m*h+f*u*_,this._z=d*u*_+f*m*h,this._w=d*u*h-f*m*_;break;case"ZYX":this._x=f*u*h-d*m*_,this._y=d*m*h+f*u*_,this._z=d*u*_-f*m*h,this._w=d*u*h+f*m*_;break;case"YZX":this._x=f*u*h+d*m*_,this._y=d*m*h+f*u*_,this._z=d*u*_-f*m*h,this._w=d*u*h-f*m*_;break;case"XZY":this._x=f*u*h-d*m*_,this._y=d*m*h-f*u*_,this._z=d*u*_+f*m*h,this._w=d*u*h+f*m*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return n!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,n){const s=n/2,i=Math.sin(s);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(e){const n=e.elements,s=n[0],i=n[4],r=n[8],o=n[1],a=n[5],c=n[9],d=n[2],u=n[6],h=n[10],f=s+a+h;if(f>0){const m=.5/Math.sqrt(f+1);this._w=.25/m,this._x=(u-c)*m,this._y=(r-d)*m,this._z=(o-i)*m}else if(s>a&&s>h){const m=2*Math.sqrt(1+s-a-h);this._w=(u-c)/m,this._x=.25*m,this._y=(i+o)/m,this._z=(r+d)/m}else if(a>h){const m=2*Math.sqrt(1+a-s-h);this._w=(r-d)/m,this._x=(i+o)/m,this._y=.25*m,this._z=(c+u)/m}else{const m=2*Math.sqrt(1+h-s-a);this._w=(o-i)/m,this._x=(r+d)/m,this._y=(c+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,n){let s=e.dot(n)+1;return s Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=s):(this._x=0,this._y=-e.z,this._z=e.y,this._w=s)):(this._x=e.y*n.z-e.z*n.y,this._y=e.z*n.x-e.x*n.z,this._z=e.x*n.y-e.y*n.x,this._w=s),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Nn(this.dot(e),-1,1)))}rotateTowards(e,n){const s=this.angleTo(e);if(s===0)return this;const i=Math.min(1,n/s);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,n){const s=e._x,i=e._y,r=e._z,o=e._w,a=n._x,c=n._y,d=n._z,u=n._w;return this._x=s*u+o*a+i*d-r*c,this._y=i*u+o*c+r*a-s*d,this._z=r*u+o*d+s*c-i*a,this._w=o*u-s*a-i*c-r*d,this._onChangeCallback(),this}slerp(e,n){if(n===0)return this;if(n===1)return this.copy(e);const s=this._x,i=this._y,r=this._z,o=this._w;let a=o*e._w+s*e._x+i*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=s,this._y=i,this._z=r,this;const c=1-a*a;if(c<=Number.EPSILON){const m=1-n;return this._w=m*o+n*this._w,this._x=m*s+n*this._x,this._y=m*i+n*this._y,this._z=m*r+n*this._z,this.normalize(),this._onChangeCallback(),this}const d=Math.sqrt(c),u=Math.atan2(d,a),h=Math.sin((1-n)*u)/d,f=Math.sin(n*u)/d;return this._w=o*h+this._w*f,this._x=s*h+this._x*f,this._y=i*h+this._y*f,this._z=r*h+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,n,s){return this.copy(e).slerp(n,s)}random(){const e=Math.random(),n=Math.sqrt(1-e),s=Math.sqrt(e),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(n*Math.cos(i),s*Math.sin(r),s*Math.cos(r),n*Math.sin(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,n=0){return this._x=e[n],this._y=e[n+1],this._z=e[n+2],this._w=e[n+3],this._onChangeCallback(),this}toArray(e=[],n=0){return e[n]=this._x,e[n+1]=this._y,e[n+2]=this._z,e[n+3]=this._w,e}fromBufferAttribute(e,n){return this._x=e.getX(n),this._y=e.getY(n),this._z=e.getZ(n),this._w=e.getW(n),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class oe{constructor(e=0,n=0,s=0){oe.prototype.isVector3=!0,this.x=e,this.y=n,this.z=s}set(e,n,s){return s===void 0&&(s=this.z),this.x=e,this.y=n,this.z=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this.z=e.z+n.z,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this.z+=e.z*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this.z=e.z-n.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,n){return this.x=e.x*n.x,this.y=e.y*n.y,this.z=e.z*n.z,this}applyEuler(e){return this.applyQuaternion(fC.setFromEuler(e))}applyAxisAngle(e,n){return this.applyQuaternion(fC.setFromAxisAngle(e,n))}applyMatrix3(e){const n=this.x,s=this.y,i=this.z,r=e.elements;return this.x=r[0]*n+r[3]*s+r[6]*i,this.y=r[1]*n+r[4]*s+r[7]*i,this.z=r[2]*n+r[5]*s+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const n=this.x,s=this.y,i=this.z,r=e.elements,o=1/(r[3]*n+r[7]*s+r[11]*i+r[15]);return this.x=(r[0]*n+r[4]*s+r[8]*i+r[12])*o,this.y=(r[1]*n+r[5]*s+r[9]*i+r[13])*o,this.z=(r[2]*n+r[6]*s+r[10]*i+r[14])*o,this}applyQuaternion(e){const n=this.x,s=this.y,i=this.z,r=e.x,o=e.y,a=e.z,c=e.w,d=2*(o*i-a*s),u=2*(a*n-r*i),h=2*(r*s-o*n);return this.x=n+c*d+o*h-a*u,this.y=s+c*u+a*d-r*h,this.z=i+c*h+r*u-o*d,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const n=this.x,s=this.y,i=this.z,r=e.elements;return this.x=r[0]*n+r[4]*s+r[8]*i,this.y=r[1]*n+r[5]*s+r[9]*i,this.z=r[2]*n+r[6]*s+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this.z=Math.max(e.z,Math.min(n.z,this.z)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this.z=Math.max(e,Math.min(n,this.z)),this}clampLength(e,n){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(e,Math.min(n,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this.z+=(e.z-this.z)*n,this}lerpVectors(e,n,s){return this.x=e.x+(n.x-e.x)*s,this.y=e.y+(n.y-e.y)*s,this.z=e.z+(n.z-e.z)*s,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,n){const s=e.x,i=e.y,r=e.z,o=n.x,a=n.y,c=n.z;return this.x=i*c-r*a,this.y=r*o-s*c,this.z=s*a-i*o,this}projectOnVector(e){const n=e.lengthSq();if(n===0)return this.set(0,0,0);const s=e.dot(this)/n;return this.copy(e).multiplyScalar(s)}projectOnPlane(e){return Dm.copy(this).projectOnVector(e),this.sub(Dm)}reflect(e){return this.sub(Dm.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const n=Math.sqrt(this.lengthSq()*e.lengthSq());if(n===0)return Math.PI/2;const s=this.dot(e)/n;return Math.acos(Nn(s,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const n=this.x-e.x,s=this.y-e.y,i=this.z-e.z;return n*n+s*s+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,n,s){const i=Math.sin(n)*e;return this.x=i*Math.sin(s),this.y=Math.cos(n)*e,this.z=i*Math.cos(s),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,n,s){return this.x=e*Math.sin(n),this.y=s,this.z=e*Math.cos(n),this}setFromMatrixPosition(e){const n=e.elements;return this.x=n[12],this.y=n[13],this.z=n[14],this}setFromMatrixScale(e){const n=this.setFromMatrixColumn(e,0).length(),s=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=n,this.y=s,this.z=i,this}setFromMatrixColumn(e,n){return this.fromArray(e.elements,n*4)}setFromMatrix3Column(e,n){return this.fromArray(e.elements,n*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this.z=e[n+2],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e[n+2]=this.z,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this.z=e.getZ(n),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,n=Math.random()*Math.PI*2,s=Math.sqrt(1-e**2);return this.x=s*Math.cos(n),this.y=s*Math.sin(n),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Dm=new oe,fC=new yr;class Fi{constructor(e=new oe(1/0,1/0,1/0),n=new oe(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=n}set(e,n){return this.min.copy(e),this.max.copy(n),this}setFromArray(e){this.makeEmpty();for(let n=0,s=e.length;n this.max.x||e.ythis.max.y||e.z this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,n){return n.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x this.max.x||e.max.y this.max.y||e.max.z this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,Rs),Rs.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let n,s;return e.normal.x>0?(n=e.normal.x*this.min.x,s=e.normal.x*this.max.x):(n=e.normal.x*this.max.x,s=e.normal.x*this.min.x),e.normal.y>0?(n+=e.normal.y*this.min.y,s+=e.normal.y*this.max.y):(n+=e.normal.y*this.max.y,s+=e.normal.y*this.min.y),e.normal.z>0?(n+=e.normal.z*this.min.z,s+=e.normal.z*this.max.z):(n+=e.normal.z*this.max.z,s+=e.normal.z*this.min.z),n<=-e.constant&&s>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Ja),Fc.subVectors(this.max,Ja),yo.subVectors(e.a,Ja),vo.subVectors(e.b,Ja),So.subVectors(e.c,Ja),qi.subVectors(vo,yo),$i.subVectors(So,vo),wr.subVectors(yo,So);let n=[0,-qi.z,qi.y,0,-$i.z,$i.y,0,-wr.z,wr.y,qi.z,0,-qi.x,$i.z,0,-$i.x,wr.z,0,-wr.x,-qi.y,qi.x,0,-$i.y,$i.x,0,-wr.y,wr.x,0];return!Lm(n,yo,vo,So,Fc)||(n=[1,0,0,0,1,0,0,0,1],!Lm(n,yo,vo,So,Fc))?!1:(Bc.crossVectors(qi,$i),n=[Bc.x,Bc.y,Bc.z],Lm(n,yo,vo,So,Fc))}clampPoint(e,n){return n.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Rs).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Rs).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(bi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bi),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const bi=[new oe,new oe,new oe,new oe,new oe,new oe,new oe,new oe],Rs=new oe,Uc=new Fi,yo=new oe,vo=new oe,So=new oe,qi=new oe,$i=new oe,wr=new oe,Ja=new oe,Fc=new oe,Bc=new oe,Rr=new oe;function Lm(t,e,n,s,i){for(let r=0,o=t.length-3;r<=o;r+=3){Rr.fromArray(t,r);const a=i.x*Math.abs(Rr.x)+i.y*Math.abs(Rr.y)+i.z*Math.abs(Rr.z),c=e.dot(Rr),d=n.dot(Rr),u=s.dot(Rr);if(Math.max(-Math.max(c,d,u),Math.min(c,d,u))>a)return!1}return!0}const DAt=new Fi,el=new oe,Pm=new oe;class pi{constructor(e=new oe,n=-1){this.center=e,this.radius=n}set(e,n){return this.center.copy(e),this.radius=n,this}setFromPoints(e,n){const s=this.center;n!==void 0?s.copy(n):DAt.setFromPoints(e).getCenter(s);let i=0;for(let r=0,o=e.length;r this.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;el.subVectors(e,this.center);const n=el.lengthSq();if(n>this.radius*this.radius){const s=Math.sqrt(n),i=(s-this.radius)*.5;this.center.addScaledVector(el,i/s),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Pm.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(el.copy(e.center).add(Pm)),this.expandByPoint(el.copy(e.center).sub(Pm))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Ei=new oe,Um=new oe,Gc=new oe,Yi=new oe,Fm=new oe,Vc=new oe,Bm=new oe;class np{constructor(e=new oe,n=new oe(0,0,-1)){this.origin=e,this.direction=n}set(e,n){return this.origin.copy(e),this.direction.copy(n),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,n){return n.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Ei)),this}closestPointToPoint(e,n){n.subVectors(e,this.origin);const s=n.dot(this.direction);return s<0?n.copy(this.origin):n.copy(this.origin).addScaledVector(this.direction,s)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const n=Ei.subVectors(e,this.origin).dot(this.direction);return n<0?this.origin.distanceToSquared(e):(Ei.copy(this.origin).addScaledVector(this.direction,n),Ei.distanceToSquared(e))}distanceSqToSegment(e,n,s,i){Um.copy(e).add(n).multiplyScalar(.5),Gc.copy(n).sub(e).normalize(),Yi.copy(this.origin).sub(Um);const r=e.distanceTo(n)*.5,o=-this.direction.dot(Gc),a=Yi.dot(this.direction),c=-Yi.dot(Gc),d=Yi.lengthSq(),u=Math.abs(1-o*o);let h,f,m,_;if(u>0)if(h=o*c-a,f=o*a-c,_=r*u,h>=0)if(f>=-_)if(f<=_){const g=1/u;h*=g,f*=g,m=h*(h+o*f+2*a)+f*(o*h+f+2*c)+d}else f=r,h=Math.max(0,-(o*f+a)),m=-h*h+f*(f+2*c)+d;else f=-r,h=Math.max(0,-(o*f+a)),m=-h*h+f*(f+2*c)+d;else f<=-_?(h=Math.max(0,-(-o*r+a)),f=h>0?-r:Math.min(Math.max(-r,-c),r),m=-h*h+f*(f+2*c)+d):f<=_?(h=0,f=Math.min(Math.max(-r,-c),r),m=f*(f+2*c)+d):(h=Math.max(0,-(o*r+a)),f=h>0?r:Math.min(Math.max(-r,-c),r),m=-h*h+f*(f+2*c)+d);else f=o>0?-r:r,h=Math.max(0,-(o*f+a)),m=-h*h+f*(f+2*c)+d;return s&&s.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(Um).addScaledVector(Gc,f),m}intersectSphere(e,n){Ei.subVectors(e.center,this.origin);const s=Ei.dot(this.direction),i=Ei.dot(Ei)-s*s,r=e.radius*e.radius;if(i>r)return null;const o=Math.sqrt(r-i),a=s-o,c=s+o;return c<0?null:a<0?this.at(c,n):this.at(a,n)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const n=e.normal.dot(this.direction);if(n===0)return e.distanceToPoint(this.origin)===0?0:null;const s=-(this.origin.dot(e.normal)+e.constant)/n;return s>=0?s:null}intersectPlane(e,n){const s=this.distanceToPlane(e);return s===null?null:this.at(s,n)}intersectsPlane(e){const n=e.distanceToPoint(this.origin);return n===0||e.normal.dot(this.direction)*n<0}intersectBox(e,n){let s,i,r,o,a,c;const d=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,f=this.origin;return d>=0?(s=(e.min.x-f.x)*d,i=(e.max.x-f.x)*d):(s=(e.max.x-f.x)*d,i=(e.min.x-f.x)*d),u>=0?(r=(e.min.y-f.y)*u,o=(e.max.y-f.y)*u):(r=(e.max.y-f.y)*u,o=(e.min.y-f.y)*u),s>o||r>i||((r>s||isNaN(s))&&(s=r),(o=0?(a=(e.min.z-f.z)*h,c=(e.max.z-f.z)*h):(a=(e.max.z-f.z)*h,c=(e.min.z-f.z)*h),s>c||a>i)||((a>s||s!==s)&&(s=a),(c=0?s:i,n)}intersectsBox(e){return this.intersectBox(e,Ei)!==null}intersectTriangle(e,n,s,i,r){Fm.subVectors(n,e),Vc.subVectors(s,e),Bm.crossVectors(Fm,Vc);let o=this.direction.dot(Bm),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Yi.subVectors(this.origin,e);const c=a*this.direction.dot(Vc.crossVectors(Yi,Vc));if(c<0)return null;const d=a*this.direction.dot(Fm.cross(Yi));if(d<0||c+d>o)return null;const u=-a*Yi.dot(Bm);return u<0?null:this.at(u/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class xt{constructor(e,n,s,i,r,o,a,c,d,u,h,f,m,_,g,b){xt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,n,s,i,r,o,a,c,d,u,h,f,m,_,g,b)}set(e,n,s,i,r,o,a,c,d,u,h,f,m,_,g,b){const E=this.elements;return E[0]=e,E[4]=n,E[8]=s,E[12]=i,E[1]=r,E[5]=o,E[9]=a,E[13]=c,E[2]=d,E[6]=u,E[10]=h,E[14]=f,E[3]=m,E[7]=_,E[11]=g,E[15]=b,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new xt().fromArray(this.elements)}copy(e){const n=this.elements,s=e.elements;return n[0]=s[0],n[1]=s[1],n[2]=s[2],n[3]=s[3],n[4]=s[4],n[5]=s[5],n[6]=s[6],n[7]=s[7],n[8]=s[8],n[9]=s[9],n[10]=s[10],n[11]=s[11],n[12]=s[12],n[13]=s[13],n[14]=s[14],n[15]=s[15],this}copyPosition(e){const n=this.elements,s=e.elements;return n[12]=s[12],n[13]=s[13],n[14]=s[14],this}setFromMatrix3(e){const n=e.elements;return this.set(n[0],n[3],n[6],0,n[1],n[4],n[7],0,n[2],n[5],n[8],0,0,0,0,1),this}extractBasis(e,n,s){return e.setFromMatrixColumn(this,0),n.setFromMatrixColumn(this,1),s.setFromMatrixColumn(this,2),this}makeBasis(e,n,s){return this.set(e.x,n.x,s.x,0,e.y,n.y,s.y,0,e.z,n.z,s.z,0,0,0,0,1),this}extractRotation(e){const n=this.elements,s=e.elements,i=1/To.setFromMatrixColumn(e,0).length(),r=1/To.setFromMatrixColumn(e,1).length(),o=1/To.setFromMatrixColumn(e,2).length();return n[0]=s[0]*i,n[1]=s[1]*i,n[2]=s[2]*i,n[3]=0,n[4]=s[4]*r,n[5]=s[5]*r,n[6]=s[6]*r,n[7]=0,n[8]=s[8]*o,n[9]=s[9]*o,n[10]=s[10]*o,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromEuler(e){const n=this.elements,s=e.x,i=e.y,r=e.z,o=Math.cos(s),a=Math.sin(s),c=Math.cos(i),d=Math.sin(i),u=Math.cos(r),h=Math.sin(r);if(e.order==="XYZ"){const f=o*u,m=o*h,_=a*u,g=a*h;n[0]=c*u,n[4]=-c*h,n[8]=d,n[1]=m+_*d,n[5]=f-g*d,n[9]=-a*c,n[2]=g-f*d,n[6]=_+m*d,n[10]=o*c}else if(e.order==="YXZ"){const f=c*u,m=c*h,_=d*u,g=d*h;n[0]=f+g*a,n[4]=_*a-m,n[8]=o*d,n[1]=o*h,n[5]=o*u,n[9]=-a,n[2]=m*a-_,n[6]=g+f*a,n[10]=o*c}else if(e.order==="ZXY"){const f=c*u,m=c*h,_=d*u,g=d*h;n[0]=f-g*a,n[4]=-o*h,n[8]=_+m*a,n[1]=m+_*a,n[5]=o*u,n[9]=g-f*a,n[2]=-o*d,n[6]=a,n[10]=o*c}else if(e.order==="ZYX"){const f=o*u,m=o*h,_=a*u,g=a*h;n[0]=c*u,n[4]=_*d-m,n[8]=f*d+g,n[1]=c*h,n[5]=g*d+f,n[9]=m*d-_,n[2]=-d,n[6]=a*c,n[10]=o*c}else if(e.order==="YZX"){const f=o*c,m=o*d,_=a*c,g=a*d;n[0]=c*u,n[4]=g-f*h,n[8]=_*h+m,n[1]=h,n[5]=o*u,n[9]=-a*u,n[2]=-d*u,n[6]=m*h+_,n[10]=f-g*h}else if(e.order==="XZY"){const f=o*c,m=o*d,_=a*c,g=a*d;n[0]=c*u,n[4]=-h,n[8]=d*u,n[1]=f*h+g,n[5]=o*u,n[9]=m*h-_,n[2]=_*h-m,n[6]=a*u,n[10]=g*h+f}return n[3]=0,n[7]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromQuaternion(e){return this.compose(LAt,e,PAt)}lookAt(e,n,s){const i=this.elements;return jn.subVectors(e,n),jn.lengthSq()===0&&(jn.z=1),jn.normalize(),Wi.crossVectors(s,jn),Wi.lengthSq()===0&&(Math.abs(s.z)===1?jn.x+=1e-4:jn.z+=1e-4,jn.normalize(),Wi.crossVectors(s,jn)),Wi.normalize(),zc.crossVectors(jn,Wi),i[0]=Wi.x,i[4]=zc.x,i[8]=jn.x,i[1]=Wi.y,i[5]=zc.y,i[9]=jn.y,i[2]=Wi.z,i[6]=zc.z,i[10]=jn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,n){const s=e.elements,i=n.elements,r=this.elements,o=s[0],a=s[4],c=s[8],d=s[12],u=s[1],h=s[5],f=s[9],m=s[13],_=s[2],g=s[6],b=s[10],E=s[14],y=s[3],v=s[7],S=s[11],R=s[15],C=i[0],A=i[4],I=i[8],x=i[12],O=i[1],B=i[5],H=i[9],te=i[13],k=i[2],$=i[6],q=i[10],U=i[14],W=i[3],ne=i[7],le=i[11],me=i[15];return r[0]=o*C+a*O+c*k+d*W,r[4]=o*A+a*B+c*$+d*ne,r[8]=o*I+a*H+c*q+d*le,r[12]=o*x+a*te+c*U+d*me,r[1]=u*C+h*O+f*k+m*W,r[5]=u*A+h*B+f*$+m*ne,r[9]=u*I+h*H+f*q+m*le,r[13]=u*x+h*te+f*U+m*me,r[2]=_*C+g*O+b*k+E*W,r[6]=_*A+g*B+b*$+E*ne,r[10]=_*I+g*H+b*q+E*le,r[14]=_*x+g*te+b*U+E*me,r[3]=y*C+v*O+S*k+R*W,r[7]=y*A+v*B+S*$+R*ne,r[11]=y*I+v*H+S*q+R*le,r[15]=y*x+v*te+S*U+R*me,this}multiplyScalar(e){const n=this.elements;return n[0]*=e,n[4]*=e,n[8]*=e,n[12]*=e,n[1]*=e,n[5]*=e,n[9]*=e,n[13]*=e,n[2]*=e,n[6]*=e,n[10]*=e,n[14]*=e,n[3]*=e,n[7]*=e,n[11]*=e,n[15]*=e,this}determinant(){const e=this.elements,n=e[0],s=e[4],i=e[8],r=e[12],o=e[1],a=e[5],c=e[9],d=e[13],u=e[2],h=e[6],f=e[10],m=e[14],_=e[3],g=e[7],b=e[11],E=e[15];return _*(+r*c*h-i*d*h-r*a*f+s*d*f+i*a*m-s*c*m)+g*(+n*c*m-n*d*f+r*o*f-i*o*m+i*d*u-r*c*u)+b*(+n*d*h-n*a*m-r*o*h+s*o*m+r*a*u-s*d*u)+E*(-i*a*u-n*c*h+n*a*f+i*o*h-s*o*f+s*c*u)}transpose(){const e=this.elements;let n;return n=e[1],e[1]=e[4],e[4]=n,n=e[2],e[2]=e[8],e[8]=n,n=e[6],e[6]=e[9],e[9]=n,n=e[3],e[3]=e[12],e[12]=n,n=e[7],e[7]=e[13],e[13]=n,n=e[11],e[11]=e[14],e[14]=n,this}setPosition(e,n,s){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=n,i[14]=s),this}invert(){const e=this.elements,n=e[0],s=e[1],i=e[2],r=e[3],o=e[4],a=e[5],c=e[6],d=e[7],u=e[8],h=e[9],f=e[10],m=e[11],_=e[12],g=e[13],b=e[14],E=e[15],y=h*b*d-g*f*d+g*c*m-a*b*m-h*c*E+a*f*E,v=_*f*d-u*b*d-_*c*m+o*b*m+u*c*E-o*f*E,S=u*g*d-_*h*d+_*a*m-o*g*m-u*a*E+o*h*E,R=_*h*c-u*g*c-_*a*f+o*g*f+u*a*b-o*h*b,C=n*y+s*v+i*S+r*R;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const A=1/C;return e[0]=y*A,e[1]=(g*f*r-h*b*r-g*i*m+s*b*m+h*i*E-s*f*E)*A,e[2]=(a*b*r-g*c*r+g*i*d-s*b*d-a*i*E+s*c*E)*A,e[3]=(h*c*r-a*f*r-h*i*d+s*f*d+a*i*m-s*c*m)*A,e[4]=v*A,e[5]=(u*b*r-_*f*r+_*i*m-n*b*m-u*i*E+n*f*E)*A,e[6]=(_*c*r-o*b*r-_*i*d+n*b*d+o*i*E-n*c*E)*A,e[7]=(o*f*r-u*c*r+u*i*d-n*f*d-o*i*m+n*c*m)*A,e[8]=S*A,e[9]=(_*h*r-u*g*r-_*s*m+n*g*m+u*s*E-n*h*E)*A,e[10]=(o*g*r-_*a*r+_*s*d-n*g*d-o*s*E+n*a*E)*A,e[11]=(u*a*r-o*h*r-u*s*d+n*h*d+o*s*m-n*a*m)*A,e[12]=R*A,e[13]=(u*g*i-_*h*i+_*s*f-n*g*f-u*s*b+n*h*b)*A,e[14]=(_*a*i-o*g*i-_*s*c+n*g*c+o*s*b-n*a*b)*A,e[15]=(o*h*i-u*a*i+u*s*c-n*h*c-o*s*f+n*a*f)*A,this}scale(e){const n=this.elements,s=e.x,i=e.y,r=e.z;return n[0]*=s,n[4]*=i,n[8]*=r,n[1]*=s,n[5]*=i,n[9]*=r,n[2]*=s,n[6]*=i,n[10]*=r,n[3]*=s,n[7]*=i,n[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,n=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],s=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(n,s,i))}makeTranslation(e,n,s){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,n,0,0,1,s,0,0,0,1),this}makeRotationX(e){const n=Math.cos(e),s=Math.sin(e);return this.set(1,0,0,0,0,n,-s,0,0,s,n,0,0,0,0,1),this}makeRotationY(e){const n=Math.cos(e),s=Math.sin(e);return this.set(n,0,s,0,0,1,0,0,-s,0,n,0,0,0,0,1),this}makeRotationZ(e){const n=Math.cos(e),s=Math.sin(e);return this.set(n,-s,0,0,s,n,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,n){const s=Math.cos(n),i=Math.sin(n),r=1-s,o=e.x,a=e.y,c=e.z,d=r*o,u=r*a;return this.set(d*o+s,d*a-i*c,d*c+i*a,0,d*a+i*c,u*a+s,u*c-i*o,0,d*c-i*a,u*c+i*o,r*c*c+s,0,0,0,0,1),this}makeScale(e,n,s){return this.set(e,0,0,0,0,n,0,0,0,0,s,0,0,0,0,1),this}makeShear(e,n,s,i,r,o){return this.set(1,s,r,0,e,1,o,0,n,i,1,0,0,0,0,1),this}compose(e,n,s){const i=this.elements,r=n._x,o=n._y,a=n._z,c=n._w,d=r+r,u=o+o,h=a+a,f=r*d,m=r*u,_=r*h,g=o*u,b=o*h,E=a*h,y=c*d,v=c*u,S=c*h,R=s.x,C=s.y,A=s.z;return i[0]=(1-(g+E))*R,i[1]=(m+S)*R,i[2]=(_-v)*R,i[3]=0,i[4]=(m-S)*C,i[5]=(1-(f+E))*C,i[6]=(b+y)*C,i[7]=0,i[8]=(_+v)*A,i[9]=(b-y)*A,i[10]=(1-(f+g))*A,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,n,s){const i=this.elements;let r=To.set(i[0],i[1],i[2]).length();const o=To.set(i[4],i[5],i[6]).length(),a=To.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],As.copy(this);const d=1/r,u=1/o,h=1/a;return As.elements[0]*=d,As.elements[1]*=d,As.elements[2]*=d,As.elements[4]*=u,As.elements[5]*=u,As.elements[6]*=u,As.elements[8]*=h,As.elements[9]*=h,As.elements[10]*=h,n.setFromRotationMatrix(As),s.x=r,s.y=o,s.z=a,this}makePerspective(e,n,s,i,r,o,a=Ni){const c=this.elements,d=2*r/(n-e),u=2*r/(s-i),h=(n+e)/(n-e),f=(s+i)/(s-i);let m,_;if(a===Ni)m=-(o+r)/(o-r),_=-2*o*r/(o-r);else if(a===au)m=-o/(o-r),_=-o*r/(o-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return c[0]=d,c[4]=0,c[8]=h,c[12]=0,c[1]=0,c[5]=u,c[9]=f,c[13]=0,c[2]=0,c[6]=0,c[10]=m,c[14]=_,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,n,s,i,r,o,a=Ni){const c=this.elements,d=1/(n-e),u=1/(s-i),h=1/(o-r),f=(n+e)*d,m=(s+i)*u;let _,g;if(a===Ni)_=(o+r)*h,g=-2*h;else if(a===au)_=r*h,g=-1*h;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return c[0]=2*d,c[4]=0,c[8]=0,c[12]=-f,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-m,c[2]=0,c[6]=0,c[10]=g,c[14]=-_,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const n=this.elements,s=e.elements;for(let i=0;i<16;i++)if(n[i]!==s[i])return!1;return!0}fromArray(e,n=0){for(let s=0;s<16;s++)this.elements[s]=e[s+n];return this}toArray(e=[],n=0){const s=this.elements;return e[n]=s[0],e[n+1]=s[1],e[n+2]=s[2],e[n+3]=s[3],e[n+4]=s[4],e[n+5]=s[5],e[n+6]=s[6],e[n+7]=s[7],e[n+8]=s[8],e[n+9]=s[9],e[n+10]=s[10],e[n+11]=s[11],e[n+12]=s[12],e[n+13]=s[13],e[n+14]=s[14],e[n+15]=s[15],e}}const To=new oe,As=new xt,LAt=new oe(0,0,0),PAt=new oe(1,1,1),Wi=new oe,zc=new oe,jn=new oe,mC=new xt,gC=new yr;class sp{constructor(e=0,n=0,s=0,i=sp.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=n,this._z=s,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,n,s,i=this._order){return this._x=e,this._y=n,this._z=s,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,n=this._order,s=!0){const i=e.elements,r=i[0],o=i[4],a=i[8],c=i[1],d=i[5],u=i[9],h=i[2],f=i[6],m=i[10];switch(n){case"XYZ":this._y=Math.asin(Nn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(f,d),this._z=0);break;case"YXZ":this._x=Math.asin(-Nn(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(c,d)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(Nn(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-h,m),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(c,r));break;case"ZYX":this._y=Math.asin(-Nn(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(f,m),this._z=Math.atan2(c,r)):(this._x=0,this._z=Math.atan2(-o,d));break;case"YZX":this._z=Math.asin(Nn(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,d),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-Nn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(f,d),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+n)}return this._order=n,s===!0&&this._onChangeCallback(),this}setFromQuaternion(e,n,s){return mC.makeRotationFromQuaternion(e),this.setFromRotationMatrix(mC,n,s)}setFromVector3(e,n=this._order){return this.set(e.x,e.y,e.z,n)}reorder(e){return gC.setFromEuler(this),this.setFromQuaternion(gC,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],n=0){return e[n]=this._x,e[n+1]=this._y,e[n+2]=this._z,e[n+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}sp.DEFAULT_ORDER="XYZ";class VN{constructor(){this.mask=1}set(e){this.mask=(1< >>0}enable(e){this.mask|=1< 1){for(let n=0;n 1){for(let s=0;s 0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),i.maxGeometryCount=this._maxGeometryCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(e),this.boundingSphere!==null&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()}));function r(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(e)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const c=a.shapes;if(Array.isArray(c))for(let d=0,u=c.length;d0){i.children=[];for(let a=0;a 0){i.animations=[];for(let a=0;a 0&&(s.geometries=a),c.length>0&&(s.materials=c),d.length>0&&(s.textures=d),u.length>0&&(s.images=u),h.length>0&&(s.shapes=h),f.length>0&&(s.skeletons=f),m.length>0&&(s.animations=m),_.length>0&&(s.nodes=_)}return s.object=i,s;function o(a){const c=[];for(const d in a){const u=a[d];delete u.metadata,c.push(u)}return c}}clone(e){return new this.constructor().copy(this,e)}copy(e,n=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),n===!0)for(let s=0;s 0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,n,s,i,r){Ns.subVectors(i,n),vi.subVectors(s,n),Gm.subVectors(e,n);const o=Ns.dot(Ns),a=Ns.dot(vi),c=Ns.dot(Gm),d=vi.dot(vi),u=vi.dot(Gm),h=o*d-a*a;if(h===0)return r.set(-2,-1,-1);const f=1/h,m=(d*c-a*u)*f,_=(o*u-a*c)*f;return r.set(1-m-_,_,m)}static containsPoint(e,n,s,i){return this.getBarycoord(e,n,s,i,Si),Si.x>=0&&Si.y>=0&&Si.x+Si.y<=1}static getUV(e,n,s,i,r,o,a,c){return qc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),qc=!0),this.getInterpolation(e,n,s,i,r,o,a,c)}static getInterpolation(e,n,s,i,r,o,a,c){return this.getBarycoord(e,n,s,i,Si),c.setScalar(0),c.addScaledVector(r,Si.x),c.addScaledVector(o,Si.y),c.addScaledVector(a,Si.z),c}static isFrontFacing(e,n,s,i){return Ns.subVectors(s,n),vi.subVectors(e,n),Ns.cross(vi).dot(i)<0}set(e,n,s){return this.a.copy(e),this.b.copy(n),this.c.copy(s),this}setFromPointsAndIndices(e,n,s,i){return this.a.copy(e[n]),this.b.copy(e[s]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,n,s,i){return this.a.fromBufferAttribute(e,n),this.b.fromBufferAttribute(e,s),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Ns.subVectors(this.c,this.b),vi.subVectors(this.a,this.b),Ns.cross(vi).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return ks.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,n){return ks.getBarycoord(e,this.a,this.b,this.c,n)}getUV(e,n,s,i,r){return qc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),qc=!0),ks.getInterpolation(e,this.a,this.b,this.c,n,s,i,r)}getInterpolation(e,n,s,i,r){return ks.getInterpolation(e,this.a,this.b,this.c,n,s,i,r)}containsPoint(e){return ks.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return ks.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,n){const s=this.a,i=this.b,r=this.c;let o,a;Co.subVectors(i,s),wo.subVectors(r,s),Vm.subVectors(e,s);const c=Co.dot(Vm),d=wo.dot(Vm);if(c<=0&&d<=0)return n.copy(s);zm.subVectors(e,i);const u=Co.dot(zm),h=wo.dot(zm);if(u>=0&&h<=u)return n.copy(i);const f=c*h-u*d;if(f<=0&&c>=0&&u<=0)return o=c/(c-u),n.copy(s).addScaledVector(Co,o);Hm.subVectors(e,r);const m=Co.dot(Hm),_=wo.dot(Hm);if(_>=0&&m<=_)return n.copy(r);const g=m*d-c*_;if(g<=0&&d>=0&&_<=0)return a=d/(d-_),n.copy(s).addScaledVector(wo,a);const b=u*_-m*h;if(b<=0&&h-u>=0&&m-_>=0)return SC.subVectors(r,i),a=(h-u)/(h-u+(m-_)),n.copy(i).addScaledVector(SC,a);const E=1/(b+g+f);return o=g*E,a=f*E,n.copy(s).addScaledVector(Co,o).addScaledVector(wo,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const zN={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Ki={h:0,s:0,l:0},$c={h:0,s:0,l:0};function qm(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*6*(2/3-n):t}class _t{constructor(e,n,s){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,n,s)}set(e,n,s){if(n===void 0&&s===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,n,s);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,n=tn){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ut.toWorkingColorSpace(this,n),this}setRGB(e,n,s,i=Ut.workingColorSpace){return this.r=e,this.g=n,this.b=s,Ut.toWorkingColorSpace(this,i),this}setHSL(e,n,s,i=Ut.workingColorSpace){if(e=KE(e,1),n=Nn(n,0,1),s=Nn(s,0,1),n===0)this.r=this.g=this.b=s;else{const r=s<=.5?s*(1+n):s+n-s*n,o=2*s-r;this.r=qm(o,r,e+1/3),this.g=qm(o,r,e),this.b=qm(o,r,e-1/3)}return Ut.toWorkingColorSpace(this,i),this}setStyle(e,n=tn){function s(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,n);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,n);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,n);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=i[1],o=r.length;if(o===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,n);if(o===6)return this.setHex(parseInt(r,16),n);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,n);return this}setColorName(e,n=tn){const s=zN[e.toLowerCase()];return s!==void 0?this.setHex(s,n):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Qo(e.r),this.g=Qo(e.g),this.b=Qo(e.b),this}copyLinearToSRGB(e){return this.r=Im(e.r),this.g=Im(e.g),this.b=Im(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=tn){return Ut.fromWorkingColorSpace(An.copy(this),e),Math.round(Nn(An.r*255,0,255))*65536+Math.round(Nn(An.g*255,0,255))*256+Math.round(Nn(An.b*255,0,255))}getHexString(e=tn){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,n=Ut.workingColorSpace){Ut.fromWorkingColorSpace(An.copy(this),n);const s=An.r,i=An.g,r=An.b,o=Math.max(s,i,r),a=Math.min(s,i,r);let c,d;const u=(a+o)/2;if(a===o)c=0,d=0;else{const h=o-a;switch(d=u<=.5?h/(o+a):h/(2-o-a),o){case s:c=(i-r)/h+(i 0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const n in e){const s=e[n];if(s===void 0){console.warn(`THREE.Material: parameter '${n}' has value of undefined.`);continue}const i=this[n];if(i===void 0){console.warn(`THREE.Material: '${n}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(s):i&&i.isVector3&&s&&s.isVector3?i.copy(s):this[n]=s}}toJSON(e){const n=e===void 0||typeof e=="string";n&&(e={textures:{},images:{}});const s={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};s.uuid=this.uuid,s.type=this.type,this.name!==""&&(s.name=this.name),this.color&&this.color.isColor&&(s.color=this.color.getHex()),this.roughness!==void 0&&(s.roughness=this.roughness),this.metalness!==void 0&&(s.metalness=this.metalness),this.sheen!==void 0&&(s.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(s.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(s.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(s.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(s.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(s.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(s.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(s.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(s.shininess=this.shininess),this.clearcoat!==void 0&&(s.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(s.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(s.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(s.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(s.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,s.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(s.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(s.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(s.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(s.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(s.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(s.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(s.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(s.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(s.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(s.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(s.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(s.lightMap=this.lightMap.toJSON(e).uuid,s.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(s.aoMap=this.aoMap.toJSON(e).uuid,s.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(s.bumpMap=this.bumpMap.toJSON(e).uuid,s.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(s.normalMap=this.normalMap.toJSON(e).uuid,s.normalMapType=this.normalMapType,s.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(s.displacementMap=this.displacementMap.toJSON(e).uuid,s.displacementScale=this.displacementScale,s.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(s.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(s.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(s.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(s.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(s.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(s.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(s.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(s.combine=this.combine)),this.envMapIntensity!==void 0&&(s.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(s.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(s.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(s.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(s.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(s.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(s.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(s.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(s.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(s.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(s.size=this.size),this.shadowSide!==null&&(s.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(s.sizeAttenuation=this.sizeAttenuation),this.blending!==jo&&(s.blending=this.blending),this.side!==Li&&(s.side=this.side),this.vertexColors===!0&&(s.vertexColors=!0),this.opacity<1&&(s.opacity=this.opacity),this.transparent===!0&&(s.transparent=!0),this.blendSrc!==jg&&(s.blendSrc=this.blendSrc),this.blendDst!==Qg&&(s.blendDst=this.blendDst),this.blendEquation!==Fr&&(s.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(s.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(s.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(s.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(s.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(s.blendAlpha=this.blendAlpha),this.depthFunc!==nu&&(s.depthFunc=this.depthFunc),this.depthTest===!1&&(s.depthTest=this.depthTest),this.depthWrite===!1&&(s.depthWrite=this.depthWrite),this.colorWrite===!1&&(s.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(s.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==cC&&(s.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(s.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(s.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==bo&&(s.stencilFail=this.stencilFail),this.stencilZFail!==bo&&(s.stencilZFail=this.stencilZFail),this.stencilZPass!==bo&&(s.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(s.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(s.rotation=this.rotation),this.polygonOffset===!0&&(s.polygonOffset=!0),this.polygonOffsetFactor!==0&&(s.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(s.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(s.linewidth=this.linewidth),this.dashSize!==void 0&&(s.dashSize=this.dashSize),this.gapSize!==void 0&&(s.gapSize=this.gapSize),this.scale!==void 0&&(s.scale=this.scale),this.dithering===!0&&(s.dithering=!0),this.alphaTest>0&&(s.alphaTest=this.alphaTest),this.alphaHash===!0&&(s.alphaHash=!0),this.alphaToCoverage===!0&&(s.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(s.premultipliedAlpha=!0),this.forceSinglePass===!0&&(s.forceSinglePass=!0),this.wireframe===!0&&(s.wireframe=!0),this.wireframeLinewidth>1&&(s.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(s.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(s.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(s.flatShading=!0),this.visible===!1&&(s.visible=!1),this.toneMapped===!1&&(s.toneMapped=!1),this.fog===!1&&(s.fog=!1),Object.keys(this.userData).length>0&&(s.userData=this.userData);function i(r){const o=[];for(const a in r){const c=r[a];delete c.metadata,o.push(c)}return o}if(n){const r=i(e.textures),o=i(e.images);r.length>0&&(s.textures=r),o.length>0&&(s.images=o)}return s}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const n=e.clippingPlanes;let s=null;if(n!==null){const i=n.length;s=new Array(i);for(let r=0;r!==i;++r)s[r]=n[r].clone()}return this.clippingPlanes=s,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class lr extends Gs{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new _t(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=qE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const on=new oe,Yc=new At;class Bn{constructor(e,n,s=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=n,this.count=e!==void 0?e.length/n:0,this.normalized=s,this.usage=tb,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=Ai,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.BufferAttribute: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,n){this.updateRanges.push({start:e,count:n})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,n,s){e*=this.itemSize,s*=n.itemSize;for(let i=0,r=this.itemSize;i 0&&(e.userData=this.userData),this.parameters!==void 0){const c=this.parameters;for(const d in c)c[d]!==void 0&&(e[d]=c[d]);return e}e.data={attributes:{}};const n=this.index;n!==null&&(e.data.index={type:n.array.constructor.name,array:Array.prototype.slice.call(n.array)});const s=this.attributes;for(const c in s){const d=s[c];e.data.attributes[c]=d.toJSON(e.data)}const i={};let r=!1;for(const c in this.morphAttributes){const d=this.morphAttributes[c],u=[];for(let h=0,f=d.length;h 0&&(i[c]=u,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const n={};this.name=e.name;const s=e.index;s!==null&&this.setIndex(s.clone(n));const i=e.attributes;for(const d in i){const u=i[d];this.setAttribute(d,u.clone(n))}const r=e.morphAttributes;for(const d in r){const u=[],h=r[d];for(let f=0,m=h.length;f 0){const i=n[s[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r (e.far-e.near)**2))&&(TC.copy(r).invert(),Ar.copy(e.ray).applyMatrix4(TC),!(s.boundingBox!==null&&Ar.intersectsBox(s.boundingBox)===!1)&&this._computeIntersections(e,n,Ar)))}_computeIntersections(e,n,s){let i;const r=this.geometry,o=this.material,a=r.index,c=r.attributes.position,d=r.attributes.uv,u=r.attributes.uv1,h=r.attributes.normal,f=r.groups,m=r.drawRange;if(a!==null)if(Array.isArray(o))for(let _=0,g=f.length;_ n.far?null:{distance:d,point:Jc.clone(),object:t}}function ed(t,e,n,s,i,r,o,a,c,d){t.getVertexPosition(a,Ao),t.getVertexPosition(c,No),t.getVertexPosition(d,Oo);const u=qAt(t,e,n,s,Ao,No,Oo,Zc);if(u){i&&(jc.fromBufferAttribute(i,a),Qc.fromBufferAttribute(i,c),Xc.fromBufferAttribute(i,d),u.uv=ks.getInterpolation(Zc,Ao,No,Oo,jc,Qc,Xc,new At)),r&&(jc.fromBufferAttribute(r,a),Qc.fromBufferAttribute(r,c),Xc.fromBufferAttribute(r,d),u.uv1=ks.getInterpolation(Zc,Ao,No,Oo,jc,Qc,Xc,new At),u.uv2=u.uv1),o&&(CC.fromBufferAttribute(o,a),wC.fromBufferAttribute(o,c),RC.fromBufferAttribute(o,d),u.normal=ks.getInterpolation(Zc,Ao,No,Oo,CC,wC,RC,new oe),u.normal.dot(s.direction)>0&&u.normal.multiplyScalar(-1));const h={a,b:c,c:d,normal:new oe,materialIndex:0};ks.getNormal(Ao,No,Oo,h.normal),u.face=h}return u}class hr extends _i{constructor(e=1,n=1,s=1,i=1,r=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:n,depth:s,widthSegments:i,heightSegments:r,depthSegments:o};const a=this;i=Math.floor(i),r=Math.floor(r),o=Math.floor(o);const c=[],d=[],u=[],h=[];let f=0,m=0;_("z","y","x",-1,-1,s,n,e,o,r,0),_("z","y","x",1,-1,s,n,-e,o,r,1),_("x","z","y",1,1,e,s,n,i,o,2),_("x","z","y",1,-1,e,s,-n,i,o,3),_("x","y","z",1,-1,e,n,s,i,r,4),_("x","y","z",-1,-1,e,n,-s,i,r,5),this.setIndex(c),this.setAttribute("position",new Oi(d,3)),this.setAttribute("normal",new Oi(u,3)),this.setAttribute("uv",new Oi(h,2));function _(g,b,E,y,v,S,R,C,A,I,x){const O=S/A,B=R/I,H=S/2,te=R/2,k=C/2,$=A+1,q=I+1;let U=0,W=0;const ne=new oe;for(let le=0;le 0?1:-1,u.push(ne.x,ne.y,ne.z),h.push(Se/A),h.push(1-le/I),U+=1}}for(let le=0;le0&&(n.defines=this.defines),n.vertexShader=this.vertexShader,n.fragmentShader=this.fragmentShader,n.lights=this.lights,n.clipping=this.clipping;const s={};for(const i in this.extensions)this.extensions[i]===!0&&(s[i]=!0);return Object.keys(s).length>0&&(n.extensions=s),n}}class YN extends Jt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new xt,this.projectionMatrix=new xt,this.projectionMatrixInverse=new xt,this.coordinateSystem=Ni}copy(e,n){return super.copy(e,n),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Un extends YN{constructor(e=50,n=1,s=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=s,this.far=i,this.focus=10,this.aspect=n,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const n=.5*this.getFilmHeight()/e;this.fov=fa*2*Math.atan(n),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Tl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return fa*2*Math.atan(Math.tan(Tl*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,n,s,i,r,o){this.aspect=e/n,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=s,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let n=e*Math.tan(Tl*.5*this.fov)/this.zoom,s=2*n,i=this.aspect*s,r=-.5*i;const o=this.view;if(this.view!==null&&this.view.enabled){const c=o.fullWidth,d=o.fullHeight;r+=o.offsetX*i/c,n-=o.offsetY*s/d,i*=o.width/c,s*=o.height/d}const a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,n,n-s,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.fov=this.fov,n.object.zoom=this.zoom,n.object.near=this.near,n.object.far=this.far,n.object.focus=this.focus,n.object.aspect=this.aspect,this.view!==null&&(n.object.view=Object.assign({},this.view)),n.object.filmGauge=this.filmGauge,n.object.filmOffset=this.filmOffset,n}}const Mo=-90,Io=1;class qAt extends Jt{constructor(e,n,s){super(),this.type="CubeCamera",this.renderTarget=s,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new Un(Mo,Io,e,n);i.layers=this.layers,this.add(i);const r=new Un(Mo,Io,e,n);r.layers=this.layers,this.add(r);const o=new Un(Mo,Io,e,n);o.layers=this.layers,this.add(o);const a=new Un(Mo,Io,e,n);a.layers=this.layers,this.add(a);const c=new Un(Mo,Io,e,n);c.layers=this.layers,this.add(c);const d=new Un(Mo,Io,e,n);d.layers=this.layers,this.add(d)}updateCoordinateSystem(){const e=this.coordinateSystem,n=this.children.concat(),[s,i,r,o,a,c]=n;for(const d of n)this.remove(d);if(e===Ni)s.up.set(0,1,0),s.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(e===au)s.up.set(0,-1,0),s.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const d of n)this.add(d),d.updateMatrixWorld()}update(e,n){this.parent===null&&this.updateMatrixWorld();const{renderTarget:s,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[r,o,a,c,d,u]=this.children,h=e.getRenderTarget(),f=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),_=e.xr.enabled;e.xr.enabled=!1;const g=s.texture.generateMipmaps;s.texture.generateMipmaps=!1,e.setRenderTarget(s,0,i),e.render(n,r),e.setRenderTarget(s,1,i),e.render(n,o),e.setRenderTarget(s,2,i),e.render(n,a),e.setRenderTarget(s,3,i),e.render(n,c),e.setRenderTarget(s,4,i),e.render(n,d),s.texture.generateMipmaps=g,e.setRenderTarget(s,5,i),e.render(n,u),e.setRenderTarget(h,f,m),e.xr.enabled=_,s.texture.needsPMREMUpdate=!0}}class WN extends Cn{constructor(e,n,s,i,r,o,a,c,d,u){e=e!==void 0?e:[],n=n!==void 0?n:da,super(e,n,s,i,r,o,a,c,d,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class $At extends io{constructor(e=1,n={}){super(e,e,n),this.isWebGLCubeRenderTarget=!0;const s={width:e,height:e,depth:1},i=[s,s,s,s,s,s];n.encoding!==void 0&&(Cl("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),n.colorSpace=n.encoding===Qr?tn:_s),this.texture=new WN(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:zn}fromEquirectangularTexture(e,n){this.texture.type=n.type,this.texture.colorSpace=n.colorSpace,this.texture.generateMipmaps=n.generateMipmaps,this.texture.minFilter=n.minFilter,this.texture.magFilter=n.magFilter;const s={uniforms:{tEquirect:{value:null}},vertexShader:` +}`;class ro extends Gs{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=WAt,this.fragmentShader=KAt,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ma(e.uniforms),this.uniformsGroups=$At(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const n=super.toJSON(e);n.glslVersion=this.glslVersion,n.uniforms={};for(const i in this.uniforms){const o=this.uniforms[i].value;o&&o.isTexture?n.uniforms[i]={type:"t",value:o.toJSON(e).uuid}:o&&o.isColor?n.uniforms[i]={type:"c",value:o.getHex()}:o&&o.isVector2?n.uniforms[i]={type:"v2",value:o.toArray()}:o&&o.isVector3?n.uniforms[i]={type:"v3",value:o.toArray()}:o&&o.isVector4?n.uniforms[i]={type:"v4",value:o.toArray()}:o&&o.isMatrix3?n.uniforms[i]={type:"m3",value:o.toArray()}:o&&o.isMatrix4?n.uniforms[i]={type:"m4",value:o.toArray()}:n.uniforms[i]={value:o}}Object.keys(this.defines).length>0&&(n.defines=this.defines),n.vertexShader=this.vertexShader,n.fragmentShader=this.fragmentShader,n.lights=this.lights,n.clipping=this.clipping;const s={};for(const i in this.extensions)this.extensions[i]===!0&&(s[i]=!0);return Object.keys(s).length>0&&(n.extensions=s),n}}class YN extends Jt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new xt,this.projectionMatrix=new xt,this.projectionMatrixInverse=new xt,this.coordinateSystem=Ni}copy(e,n){return super.copy(e,n),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Un extends YN{constructor(e=50,n=1,s=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=s,this.far=i,this.focus=10,this.aspect=n,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const n=.5*this.getFilmHeight()/e;this.fov=fa*2*Math.atan(n),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Tl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return fa*2*Math.atan(Math.tan(Tl*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,n,s,i,r,o){this.aspect=e/n,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=s,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let n=e*Math.tan(Tl*.5*this.fov)/this.zoom,s=2*n,i=this.aspect*s,r=-.5*i;const o=this.view;if(this.view!==null&&this.view.enabled){const c=o.fullWidth,d=o.fullHeight;r+=o.offsetX*i/c,n-=o.offsetY*s/d,i*=o.width/c,s*=o.height/d}const a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,n,n-s,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.fov=this.fov,n.object.zoom=this.zoom,n.object.near=this.near,n.object.far=this.far,n.object.focus=this.focus,n.object.aspect=this.aspect,this.view!==null&&(n.object.view=Object.assign({},this.view)),n.object.filmGauge=this.filmGauge,n.object.filmOffset=this.filmOffset,n}}const Mo=-90,Io=1;class jAt extends Jt{constructor(e,n,s){super(),this.type="CubeCamera",this.renderTarget=s,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new Un(Mo,Io,e,n);i.layers=this.layers,this.add(i);const r=new Un(Mo,Io,e,n);r.layers=this.layers,this.add(r);const o=new Un(Mo,Io,e,n);o.layers=this.layers,this.add(o);const a=new Un(Mo,Io,e,n);a.layers=this.layers,this.add(a);const c=new Un(Mo,Io,e,n);c.layers=this.layers,this.add(c);const d=new Un(Mo,Io,e,n);d.layers=this.layers,this.add(d)}updateCoordinateSystem(){const e=this.coordinateSystem,n=this.children.concat(),[s,i,r,o,a,c]=n;for(const d of n)this.remove(d);if(e===Ni)s.up.set(0,1,0),s.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(e===au)s.up.set(0,-1,0),s.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const d of n)this.add(d),d.updateMatrixWorld()}update(e,n){this.parent===null&&this.updateMatrixWorld();const{renderTarget:s,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[r,o,a,c,d,u]=this.children,h=e.getRenderTarget(),f=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),_=e.xr.enabled;e.xr.enabled=!1;const g=s.texture.generateMipmaps;s.texture.generateMipmaps=!1,e.setRenderTarget(s,0,i),e.render(n,r),e.setRenderTarget(s,1,i),e.render(n,o),e.setRenderTarget(s,2,i),e.render(n,a),e.setRenderTarget(s,3,i),e.render(n,c),e.setRenderTarget(s,4,i),e.render(n,d),s.texture.generateMipmaps=g,e.setRenderTarget(s,5,i),e.render(n,u),e.setRenderTarget(h,f,m),e.xr.enabled=_,s.texture.needsPMREMUpdate=!0}}class WN extends Cn{constructor(e,n,s,i,r,o,a,c,d,u){e=e!==void 0?e:[],n=n!==void 0?n:da,super(e,n,s,i,r,o,a,c,d,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class QAt extends io{constructor(e=1,n={}){super(e,e,n),this.isWebGLCubeRenderTarget=!0;const s={width:e,height:e,depth:1},i=[s,s,s,s,s,s];n.encoding!==void 0&&(Cl("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),n.colorSpace=n.encoding===Qr?tn:_s),this.texture=new WN(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:zn}fromEquirectangularTexture(e,n){this.texture.type=n.type,this.texture.colorSpace=n.colorSpace,this.texture.generateMipmaps=n.generateMipmaps,this.texture.minFilter=n.minFilter,this.texture.magFilter=n.magFilter;const s={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -371,9 +371,9 @@ ${c}`;navigator.clipboard.writeText(d)}else navigator.clipboard.writeText(e);thi gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},i=new hr(5,5,5),r=new ro({name:"CubemapFromEquirect",uniforms:ma(s.uniforms),vertexShader:s.vertexShader,fragmentShader:s.fragmentShader,side:$n,blending:ur});r.uniforms.tEquirect.value=n;const o=new Fn(i,r),a=n.minFilter;return n.minFilter===so&&(n.minFilter=zn),new qAt(1,10,this).update(e,o),n.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,n,s,i){const r=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(n,s,i);e.setRenderTarget(r)}}const Wm=new oe,YAt=new oe,WAt=new Tt;class Ir{constructor(e=new oe(1,0,0),n=0){this.isPlane=!0,this.normal=e,this.constant=n}set(e,n){return this.normal.copy(e),this.constant=n,this}setComponents(e,n,s,i){return this.normal.set(e,n,s),this.constant=i,this}setFromNormalAndCoplanarPoint(e,n){return this.normal.copy(e),this.constant=-n.dot(this.normal),this}setFromCoplanarPoints(e,n,s){const i=Wm.subVectors(s,n).cross(YAt.subVectors(e,n)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,n){return n.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,n){const s=e.delta(Wm),i=this.normal.dot(s);if(i===0)return this.distanceToPoint(e.start)===0?n.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:n.copy(e.start).addScaledVector(s,r)}intersectsLine(e){const n=this.distanceToPoint(e.start),s=this.distanceToPoint(e.end);return n<0&&s>0||s<0&&n>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,n){const s=n||WAt.getNormalMatrix(e),i=this.coplanarPoint(Wm).applyMatrix4(e),r=this.normal.applyMatrix3(s).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Nr=new pi,td=new oe;class jE{constructor(e=new Ir,n=new Ir,s=new Ir,i=new Ir,r=new Ir,o=new Ir){this.planes=[e,n,s,i,r,o]}set(e,n,s,i,r,o){const a=this.planes;return a[0].copy(e),a[1].copy(n),a[2].copy(s),a[3].copy(i),a[4].copy(r),a[5].copy(o),this}copy(e){const n=this.planes;for(let s=0;s<6;s++)n[s].copy(e.planes[s]);return this}setFromProjectionMatrix(e,n=Ni){const s=this.planes,i=e.elements,r=i[0],o=i[1],a=i[2],c=i[3],d=i[4],u=i[5],h=i[6],f=i[7],m=i[8],_=i[9],g=i[10],b=i[11],E=i[12],y=i[13],v=i[14],S=i[15];if(s[0].setComponents(c-r,f-d,b-m,S-E).normalize(),s[1].setComponents(c+r,f+d,b+m,S+E).normalize(),s[2].setComponents(c+o,f+u,b+_,S+y).normalize(),s[3].setComponents(c-o,f-u,b-_,S-y).normalize(),s[4].setComponents(c-a,f-h,b-g,S-v).normalize(),n===Ni)s[5].setComponents(c+a,f+h,b+g,S+v).normalize();else if(n===au)s[5].setComponents(a,h,g,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+n);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Nr.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const n=e.geometry;n.boundingSphere===null&&n.computeBoundingSphere(),Nr.copy(n.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Nr)}intersectsSprite(e){return Nr.center.set(0,0,0),Nr.radius=.7071067811865476,Nr.applyMatrix4(e.matrixWorld),this.intersectsSphere(Nr)}intersectsSphere(e){const n=this.planes,s=e.center,i=-e.radius;for(let r=0;r<6;r++)if(n[r].distanceToPoint(s)0?e.max.x:e.min.x,td.y=i.normal.y>0?e.max.y:e.min.y,td.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(td)<0)return!1}return!0}containsPoint(e){const n=this.planes;for(let s=0;s<6;s++)if(n[s].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function KN(){let t=null,e=!1,n=null,s=null;function i(r,o){n(r,o),s=t.requestAnimationFrame(i)}return{start:function(){e!==!0&&n!==null&&(s=t.requestAnimationFrame(i),e=!0)},stop:function(){t.cancelAnimationFrame(s),e=!1},setAnimationLoop:function(r){n=r},setContext:function(r){t=r}}}function KAt(t,e){const n=e.isWebGL2,s=new WeakMap;function i(d,u){const h=d.array,f=d.usage,m=h.byteLength,_=t.createBuffer();t.bindBuffer(u,_),t.bufferData(u,h,f),d.onUploadCallback();let g;if(h instanceof Float32Array)g=t.FLOAT;else if(h instanceof Uint16Array)if(d.isFloat16BufferAttribute)if(n)g=t.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else g=t.UNSIGNED_SHORT;else if(h instanceof Int16Array)g=t.SHORT;else if(h instanceof Uint32Array)g=t.UNSIGNED_INT;else if(h instanceof Int32Array)g=t.INT;else if(h instanceof Int8Array)g=t.BYTE;else if(h instanceof Uint8Array)g=t.UNSIGNED_BYTE;else if(h instanceof Uint8ClampedArray)g=t.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+h);return{buffer:_,type:g,bytesPerElement:h.BYTES_PER_ELEMENT,version:d.version,size:m}}function r(d,u,h){const f=u.array,m=u._updateRange,_=u.updateRanges;if(t.bindBuffer(h,d),m.count===-1&&_.length===0&&t.bufferSubData(h,0,f),_.length!==0){for(let g=0,b=_.length;g1?null:n.copy(e.start).addScaledVector(s,r)}intersectsLine(e){const n=this.distanceToPoint(e.start),s=this.distanceToPoint(e.end);return n<0&&s>0||s<0&&n>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,n){const s=n||ZAt.getNormalMatrix(e),i=this.coplanarPoint(Wm).applyMatrix4(e),r=this.normal.applyMatrix3(s).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Nr=new pi,td=new oe;class jE{constructor(e=new Ir,n=new Ir,s=new Ir,i=new Ir,r=new Ir,o=new Ir){this.planes=[e,n,s,i,r,o]}set(e,n,s,i,r,o){const a=this.planes;return a[0].copy(e),a[1].copy(n),a[2].copy(s),a[3].copy(i),a[4].copy(r),a[5].copy(o),this}copy(e){const n=this.planes;for(let s=0;s<6;s++)n[s].copy(e.planes[s]);return this}setFromProjectionMatrix(e,n=Ni){const s=this.planes,i=e.elements,r=i[0],o=i[1],a=i[2],c=i[3],d=i[4],u=i[5],h=i[6],f=i[7],m=i[8],_=i[9],g=i[10],b=i[11],E=i[12],y=i[13],v=i[14],S=i[15];if(s[0].setComponents(c-r,f-d,b-m,S-E).normalize(),s[1].setComponents(c+r,f+d,b+m,S+E).normalize(),s[2].setComponents(c+o,f+u,b+_,S+y).normalize(),s[3].setComponents(c-o,f-u,b-_,S-y).normalize(),s[4].setComponents(c-a,f-h,b-g,S-v).normalize(),n===Ni)s[5].setComponents(c+a,f+h,b+g,S+v).normalize();else if(n===au)s[5].setComponents(a,h,g,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+n);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Nr.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const n=e.geometry;n.boundingSphere===null&&n.computeBoundingSphere(),Nr.copy(n.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Nr)}intersectsSprite(e){return Nr.center.set(0,0,0),Nr.radius=.7071067811865476,Nr.applyMatrix4(e.matrixWorld),this.intersectsSphere(Nr)}intersectsSphere(e){const n=this.planes,s=e.center,i=-e.radius;for(let r=0;r<6;r++)if(n[r].distanceToPoint(s)0?e.max.x:e.min.x,td.y=i.normal.y>0?e.max.y:e.min.y,td.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(td)<0)return!1}return!0}containsPoint(e){const n=this.planes;for(let s=0;s<6;s++)if(n[s].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function KN(){let t=null,e=!1,n=null,s=null;function i(r,o){n(r,o),s=t.requestAnimationFrame(i)}return{start:function(){e!==!0&&n!==null&&(s=t.requestAnimationFrame(i),e=!0)},stop:function(){t.cancelAnimationFrame(s),e=!1},setAnimationLoop:function(r){n=r},setContext:function(r){t=r}}}function JAt(t,e){const n=e.isWebGL2,s=new WeakMap;function i(d,u){const h=d.array,f=d.usage,m=h.byteLength,_=t.createBuffer();t.bindBuffer(u,_),t.bufferData(u,h,f),d.onUploadCallback();let g;if(h instanceof Float32Array)g=t.FLOAT;else if(h instanceof Uint16Array)if(d.isFloat16BufferAttribute)if(n)g=t.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else g=t.UNSIGNED_SHORT;else if(h instanceof Int16Array)g=t.SHORT;else if(h instanceof Uint32Array)g=t.UNSIGNED_INT;else if(h instanceof Int32Array)g=t.INT;else if(h instanceof Int8Array)g=t.BYTE;else if(h instanceof Uint8Array)g=t.UNSIGNED_BYTE;else if(h instanceof Uint8ClampedArray)g=t.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+h);return{buffer:_,type:g,bytesPerElement:h.BYTES_PER_ELEMENT,version:d.version,size:m}}function r(d,u,h){const f=u.array,m=u._updateRange,_=u.updateRanges;if(t.bindBuffer(h,d),m.count===-1&&_.length===0&&t.bufferSubData(h,0,f),_.length!==0){for(let g=0,b=_.length;g 0 +#endif`,f2t=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #pragma unroll_loop_start for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { @@ -570,26 +570,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #pragma unroll_loop_end if ( clipped ) discard; #endif -#endif`,u2t=`#if NUM_CLIPPING_PLANES > 0 +#endif`,m2t=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,p2t=`#if NUM_CLIPPING_PLANES > 0 +#endif`,g2t=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,_2t=`#if NUM_CLIPPING_PLANES > 0 +#endif`,b2t=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,h2t=`#if defined( USE_COLOR_ALPHA ) +#endif`,E2t=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,f2t=`#if defined( USE_COLOR_ALPHA ) +#endif`,y2t=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,m2t=`#if defined( USE_COLOR_ALPHA ) +#endif`,v2t=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) varying vec3 vColor; -#endif`,g2t=`#if defined( USE_COLOR_ALPHA ) +#endif`,S2t=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) vColor = vec3( 1.0 ); @@ -599,7 +599,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #endif #ifdef USE_INSTANCING_COLOR vColor.xyz *= instanceColor.xyz; -#endif`,b2t=`#define PI 3.141592653589793 +#endif`,T2t=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -677,7 +677,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,E2t=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,x2t=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -775,7 +775,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,y2t=`vec3 transformedNormal = objectNormal; +#endif`,C2t=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -804,18 +804,18 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,v2t=`#ifdef USE_DISPLACEMENTMAP +#endif`,w2t=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,S2t=`#ifdef USE_DISPLACEMENTMAP +#endif`,R2t=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,T2t=`#ifdef USE_EMISSIVEMAP +#endif`,A2t=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,x2t=`#ifdef USE_EMISSIVEMAP +#endif`,N2t=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,C2t="gl_FragColor = linearToOutputTexel( gl_FragColor );",w2t=` +#endif`,O2t="gl_FragColor = linearToOutputTexel( gl_FragColor );",M2t=` const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( vec3( 0.8224621, 0.177538, 0.0 ), vec3( 0.0331941, 0.9668058, 0.0 ), @@ -843,7 +843,7 @@ vec4 LinearToLinear( in vec4 value ) { } vec4 LinearTosRGB( in vec4 value ) { return sRGBTransferOETF( value ); -}`,R2t=`#ifdef USE_ENVMAP +}`,I2t=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -872,7 +872,7 @@ vec4 LinearTosRGB( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,A2t=`#ifdef USE_ENVMAP +#endif`,k2t=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; #ifdef ENVMAP_TYPE_CUBE @@ -881,7 +881,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,N2t=`#ifdef USE_ENVMAP +#endif`,D2t=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -892,7 +892,7 @@ vec4 LinearTosRGB( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,O2t=`#ifdef USE_ENVMAP +#endif`,L2t=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -903,7 +903,7 @@ vec4 LinearTosRGB( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,M2t=`#ifdef USE_ENVMAP +#endif`,P2t=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -920,18 +920,18 @@ vec4 LinearTosRGB( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,I2t=`#ifdef USE_FOG +#endif`,U2t=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,k2t=`#ifdef USE_FOG +#endif`,F2t=`#ifdef USE_FOG varying float vFogDepth; -#endif`,D2t=`#ifdef USE_FOG +#endif`,B2t=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,L2t=`#ifdef USE_FOG +#endif`,G2t=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -940,7 +940,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,P2t=`#ifdef USE_GRADIENTMAP +#endif`,V2t=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -952,16 +952,16 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,U2t=`#ifdef USE_LIGHTMAP +}`,z2t=`#ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; reflectedLight.indirectDiffuse += lightMapIrradiance; -#endif`,F2t=`#ifdef USE_LIGHTMAP +#endif`,H2t=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,B2t=`LambertMaterial material; +#endif`,q2t=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,G2t=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,$2t=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -975,7 +975,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,V2t=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Y2t=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -1098,7 +1098,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,z2t=`#ifdef USE_ENVMAP +#endif`,W2t=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -1131,8 +1131,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,H2t=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,q2t=`varying vec3 vViewPosition; +#endif`,K2t=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,j2t=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -1144,11 +1144,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,$2t=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Q2t=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,Y2t=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,X2t=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -1165,7 +1165,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,W2t=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Z2t=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -1248,7 +1248,7 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,K2t=`struct PhysicalMaterial { +#endif`,J2t=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; @@ -1548,7 +1548,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,j2t=` +}`,eNt=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1663,7 +1663,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,Q2t=`#if defined( RE_IndirectDiffuse ) +#endif`,tNt=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1682,25 +1682,25 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,X2t=`#if defined( RE_IndirectDiffuse ) +#endif`,nNt=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,Z2t=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,sNt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,J2t=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,iNt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,eNt=`#ifdef USE_LOGDEPTHBUF +#endif`,rNt=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT varying float vFragDepth; varying float vIsPerspective; #else uniform float logDepthBufFC; #endif -#endif`,tNt=`#ifdef USE_LOGDEPTHBUF +#endif`,oNt=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); @@ -1710,16 +1710,16 @@ IncidentLight directLight; gl_Position.z *= gl_Position.w; } #endif -#endif`,nNt=`#ifdef USE_MAP +#endif`,aNt=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,sNt=`#ifdef USE_MAP +#endif`,lNt=`#ifdef USE_MAP uniform sampler2D map; -#endif`,iNt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,cNt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1731,7 +1731,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,rNt=`#if defined( USE_POINTS_UV ) +#endif`,dNt=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1743,13 +1743,13 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,oNt=`float metalnessFactor = metalness; +#endif`,uNt=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,aNt=`#ifdef USE_METALNESSMAP +#endif`,pNt=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,lNt=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) +#endif`,_Nt=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1758,7 +1758,7 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,cNt=`#ifdef USE_MORPHNORMALS +#endif`,hNt=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1770,7 +1770,7 @@ IncidentLight directLight; objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; #endif -#endif`,dNt=`#ifdef USE_MORPHTARGETS +#endif`,fNt=`#ifdef USE_MORPHTARGETS uniform float morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1790,7 +1790,7 @@ IncidentLight directLight; uniform float morphTargetInfluences[ 4 ]; #endif #endif -#endif`,uNt=`#ifdef USE_MORPHTARGETS +#endif`,mNt=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1808,7 +1808,7 @@ IncidentLight directLight; transformed += morphTarget7 * morphTargetInfluences[ 7 ]; #endif #endif -#endif`,pNt=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,gNt=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1849,7 +1849,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,_Nt=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,bNt=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1864,25 +1864,25 @@ vec3 nonPerturbedNormal = normal;`,_Nt=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,hNt=`#ifndef FLAT_SHADED +#endif`,ENt=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,fNt=`#ifndef FLAT_SHADED +#endif`,yNt=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,mNt=`#ifndef FLAT_SHADED +#endif`,vNt=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,gNt=`#ifdef USE_NORMALMAP +#endif`,SNt=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1904,13 +1904,13 @@ vec3 nonPerturbedNormal = normal;`,_Nt=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,bNt=`#ifdef USE_CLEARCOAT +#endif`,TNt=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,ENt=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,xNt=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,yNt=`#ifdef USE_CLEARCOATMAP +#endif`,CNt=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1919,18 +1919,18 @@ vec3 nonPerturbedNormal = normal;`,_Nt=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,vNt=`#ifdef USE_IRIDESCENCEMAP +#endif`,wNt=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,SNt=`#ifdef OPAQUE +#endif`,RNt=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,TNt=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,ANt=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -1971,9 +1971,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,xNt=`#ifdef PREMULTIPLIED_ALPHA +}`,NNt=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,CNt=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,ONt=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -1981,22 +1981,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,MNt=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,RNt=`#ifdef DITHERING +#endif`,INt=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,ANt=`float roughnessFactor = roughness; +#endif`,kNt=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,NNt=`#ifdef USE_ROUGHNESSMAP +#endif`,DNt=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,ONt=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,LNt=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -2173,7 +2173,7 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); #endif } -#endif`,MNt=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,PNt=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -2211,7 +2211,7 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,INt=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,UNt=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -2243,7 +2243,7 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,kNt=`float getShadowMask() { +#endif`,FNt=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -2275,12 +2275,12 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING #endif #endif return shadow; -}`,DNt=`#ifdef USE_SKINNING +}`,BNt=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,LNt=`#ifdef USE_SKINNING +#endif`,GNt=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2295,7 +2295,7 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,PNt=`#ifdef USE_SKINNING +#endif`,VNt=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2303,7 +2303,7 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,UNt=`#ifdef USE_SKINNING +#endif`,zNt=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2314,17 +2314,17 @@ gl_Position = projectionMatrix * mvPosition;`,wNt=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,FNt=`float specularStrength; +#endif`,HNt=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,BNt=`#ifdef USE_SPECULARMAP +#endif`,qNt=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,GNt=`#if defined( TONE_MAPPING ) +#endif`,$Nt=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,VNt=`#ifndef saturate +#endif`,YNt=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2360,7 +2360,7 @@ vec3 ACESFilmicToneMapping( vec3 color ) { color = ACESOutputMat * color; return saturate( color ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,WNt=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2381,7 +2381,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,HNt=`#ifdef USE_TRANSMISSION +#endif`,KNt=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2487,7 +2487,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,qNt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,jNt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2557,7 +2557,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,$Nt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,QNt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2651,7 +2651,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,YNt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,XNt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2722,7 +2722,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,WNt=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,ZNt=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2731,12 +2731,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zNt=`#ifdef USE_TRANSMIS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`;const KNt=`varying vec2 vUv; +#endif`;const JNt=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,jNt=`uniform sampler2D t2D; +}`,eOt=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2748,14 +2748,14 @@ void main() { gl_FragColor = texColor; #include#include -}`,QNt=`varying vec3 vWorldDirection; +}`,tOt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,XNt=`#ifdef ENVMAP_TYPE_CUBE +}`,nOt=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2777,14 +2777,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,ZNt=`varying vec3 vWorldDirection; +}`,sOt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,JNt=`uniform samplerCube tCube; +}`,iOt=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2794,7 +2794,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,eOt=`#include +}`,rOt=`#include #include #include #include @@ -2820,7 +2820,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,tOt=`#if DEPTH_PACKING == 3200 +}`,oOt=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2850,7 +2850,7 @@ void main() { #elif DEPTH_PACKING == 3201 gl_FragColor = packDepthToRGBA( fragCoordZ ); #endif -}`,nOt=`#define DISTANCE +}`,aOt=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2876,7 +2876,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,sOt=`#define DISTANCE +}`,lOt=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2900,13 +2900,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,iOt=`varying vec3 vWorldDirection; +}`,cOt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,rOt=`uniform sampler2D tEquirect; +}`,dOt=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2915,7 +2915,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,oOt=`uniform float scale; +}`,uOt=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2936,7 +2936,7 @@ void main() { #include #include #include -}`,aOt=`uniform vec3 diffuse; +}`,pOt=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2964,7 +2964,7 @@ void main() { #include #include #include -}`,lOt=`#include +}`,_Ot=`#include #include #include #include @@ -2995,7 +2995,7 @@ void main() { #include #include #include -}`,cOt=`uniform vec3 diffuse; +}`,hOt=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -3043,7 +3043,7 @@ void main() { #include #include #include -}`,dOt=`#define LAMBERT +}`,fOt=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -3081,7 +3081,7 @@ void main() { #include #include #include -}`,uOt=`#define LAMBERT +}`,mOt=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3138,7 +3138,7 @@ void main() { #include #include #include -}`,pOt=`#define MATCAP +}`,gOt=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -3171,7 +3171,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,_Ot=`#define MATCAP +}`,bOt=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3217,7 +3217,7 @@ void main() { #include #include #include -}`,hOt=`#define NORMAL +}`,EOt=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3249,7 +3249,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,fOt=`#define NORMAL +}`,yOt=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3270,7 +3270,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,mOt=`#define PHONG +}`,vOt=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3308,7 +3308,7 @@ void main() { #include #include #include -}`,gOt=`#define PHONG +}`,SOt=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3367,7 +3367,7 @@ void main() { #include #include #include -}`,bOt=`#define STANDARD +}`,TOt=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3409,7 +3409,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,EOt=`#define STANDARD +}`,xOt=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3531,7 +3531,7 @@ void main() { #include #include #include -}`,yOt=`#define TOON +}`,COt=`#define TOON varying vec3 vViewPosition; #include #include @@ -3567,7 +3567,7 @@ void main() { #include #include #include -}`,vOt=`#define TOON +}`,wOt=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3620,7 +3620,7 @@ void main() { #include #include #include -}`,SOt=`uniform float size; +}`,ROt=`uniform float size; uniform float scale; #include #include @@ -3650,7 +3650,7 @@ void main() { #include #include #include -}`,TOt=`uniform vec3 diffuse; +}`,AOt=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3675,7 +3675,7 @@ void main() { #include #include #include -}`,xOt=`#include +}`,NOt=`#include #include #include #include @@ -3697,7 +3697,7 @@ void main() { #include #include #include -}`,COt=`uniform vec3 color; +}`,OOt=`uniform vec3 color; uniform float opacity; #include #include @@ -3713,7 +3713,7 @@ void main() { #include #include #include -}`,wOt=`uniform float rotation; +}`,MOt=`uniform float rotation; uniform vec2 center; #include #include @@ -3739,7 +3739,7 @@ void main() { #include #include #include -}`,ROt=`uniform vec3 diffuse; +}`,IOt=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3764,7 +3764,7 @@ void main() { #include #include #include -}`,St={alphahash_fragment:jAt,alphahash_pars_fragment:QAt,alphamap_fragment:XAt,alphamap_pars_fragment:ZAt,alphatest_fragment:JAt,alphatest_pars_fragment:e2t,aomap_fragment:t2t,aomap_pars_fragment:n2t,batching_pars_vertex:s2t,batching_vertex:i2t,begin_vertex:r2t,beginnormal_vertex:o2t,bsdfs:a2t,iridescence_fragment:l2t,bumpmap_pars_fragment:c2t,clipping_planes_fragment:d2t,clipping_planes_pars_fragment:u2t,clipping_planes_pars_vertex:p2t,clipping_planes_vertex:_2t,color_fragment:h2t,color_pars_fragment:f2t,color_pars_vertex:m2t,color_vertex:g2t,common:b2t,cube_uv_reflection_fragment:E2t,defaultnormal_vertex:y2t,displacementmap_pars_vertex:v2t,displacementmap_vertex:S2t,emissivemap_fragment:T2t,emissivemap_pars_fragment:x2t,colorspace_fragment:C2t,colorspace_pars_fragment:w2t,envmap_fragment:R2t,envmap_common_pars_fragment:A2t,envmap_pars_fragment:N2t,envmap_pars_vertex:O2t,envmap_physical_pars_fragment:z2t,envmap_vertex:M2t,fog_vertex:I2t,fog_pars_vertex:k2t,fog_fragment:D2t,fog_pars_fragment:L2t,gradientmap_pars_fragment:P2t,lightmap_fragment:U2t,lightmap_pars_fragment:F2t,lights_lambert_fragment:B2t,lights_lambert_pars_fragment:G2t,lights_pars_begin:V2t,lights_toon_fragment:H2t,lights_toon_pars_fragment:q2t,lights_phong_fragment:$2t,lights_phong_pars_fragment:Y2t,lights_physical_fragment:W2t,lights_physical_pars_fragment:K2t,lights_fragment_begin:j2t,lights_fragment_maps:Q2t,lights_fragment_end:X2t,logdepthbuf_fragment:Z2t,logdepthbuf_pars_fragment:J2t,logdepthbuf_pars_vertex:eNt,logdepthbuf_vertex:tNt,map_fragment:nNt,map_pars_fragment:sNt,map_particle_fragment:iNt,map_particle_pars_fragment:rNt,metalnessmap_fragment:oNt,metalnessmap_pars_fragment:aNt,morphcolor_vertex:lNt,morphnormal_vertex:cNt,morphtarget_pars_vertex:dNt,morphtarget_vertex:uNt,normal_fragment_begin:pNt,normal_fragment_maps:_Nt,normal_pars_fragment:hNt,normal_pars_vertex:fNt,normal_vertex:mNt,normalmap_pars_fragment:gNt,clearcoat_normal_fragment_begin:bNt,clearcoat_normal_fragment_maps:ENt,clearcoat_pars_fragment:yNt,iridescence_pars_fragment:vNt,opaque_fragment:SNt,packing:TNt,premultiplied_alpha_fragment:xNt,project_vertex:CNt,dithering_fragment:wNt,dithering_pars_fragment:RNt,roughnessmap_fragment:ANt,roughnessmap_pars_fragment:NNt,shadowmap_pars_fragment:ONt,shadowmap_pars_vertex:MNt,shadowmap_vertex:INt,shadowmask_pars_fragment:kNt,skinbase_vertex:DNt,skinning_pars_vertex:LNt,skinning_vertex:PNt,skinnormal_vertex:UNt,specularmap_fragment:FNt,specularmap_pars_fragment:BNt,tonemapping_fragment:GNt,tonemapping_pars_fragment:VNt,transmission_fragment:zNt,transmission_pars_fragment:HNt,uv_pars_fragment:qNt,uv_pars_vertex:$Nt,uv_vertex:YNt,worldpos_vertex:WNt,background_vert:KNt,background_frag:jNt,backgroundCube_vert:QNt,backgroundCube_frag:XNt,cube_vert:ZNt,cube_frag:JNt,depth_vert:eOt,depth_frag:tOt,distanceRGBA_vert:nOt,distanceRGBA_frag:sOt,equirect_vert:iOt,equirect_frag:rOt,linedashed_vert:oOt,linedashed_frag:aOt,meshbasic_vert:lOt,meshbasic_frag:cOt,meshlambert_vert:dOt,meshlambert_frag:uOt,meshmatcap_vert:pOt,meshmatcap_frag:_Ot,meshnormal_vert:hOt,meshnormal_frag:fOt,meshphong_vert:mOt,meshphong_frag:gOt,meshphysical_vert:bOt,meshphysical_frag:EOt,meshtoon_vert:yOt,meshtoon_frag:vOt,points_vert:SOt,points_frag:TOt,shadow_vert:xOt,shadow_frag:COt,sprite_vert:wOt,sprite_frag:ROt},We={common:{diffuse:{value:new _t(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Tt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Tt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Tt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Tt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Tt},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Tt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Tt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Tt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Tt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new _t(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new _t(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0},uvTransform:{value:new Tt}},sprite:{diffuse:{value:new _t(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}}},Xs={basic:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.fog]),vertexShader:St.meshbasic_vert,fragmentShader:St.meshbasic_frag},lambert:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new _t(0)}}]),vertexShader:St.meshlambert_vert,fragmentShader:St.meshlambert_frag},phong:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new _t(0)},specular:{value:new _t(1118481)},shininess:{value:30}}]),vertexShader:St.meshphong_vert,fragmentShader:St.meshphong_frag},standard:{uniforms:Pn([We.common,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.roughnessmap,We.metalnessmap,We.fog,We.lights,{emissive:{value:new _t(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:St.meshphysical_vert,fragmentShader:St.meshphysical_frag},toon:{uniforms:Pn([We.common,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.gradientmap,We.fog,We.lights,{emissive:{value:new _t(0)}}]),vertexShader:St.meshtoon_vert,fragmentShader:St.meshtoon_frag},matcap:{uniforms:Pn([We.common,We.bumpmap,We.normalmap,We.displacementmap,We.fog,{matcap:{value:null}}]),vertexShader:St.meshmatcap_vert,fragmentShader:St.meshmatcap_frag},points:{uniforms:Pn([We.points,We.fog]),vertexShader:St.points_vert,fragmentShader:St.points_frag},dashed:{uniforms:Pn([We.common,We.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:St.linedashed_vert,fragmentShader:St.linedashed_frag},depth:{uniforms:Pn([We.common,We.displacementmap]),vertexShader:St.depth_vert,fragmentShader:St.depth_frag},normal:{uniforms:Pn([We.common,We.bumpmap,We.normalmap,We.displacementmap,{opacity:{value:1}}]),vertexShader:St.meshnormal_vert,fragmentShader:St.meshnormal_frag},sprite:{uniforms:Pn([We.sprite,We.fog]),vertexShader:St.sprite_vert,fragmentShader:St.sprite_frag},background:{uniforms:{uvTransform:{value:new Tt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:St.background_vert,fragmentShader:St.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:St.backgroundCube_vert,fragmentShader:St.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:St.cube_vert,fragmentShader:St.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:St.equirect_vert,fragmentShader:St.equirect_frag},distanceRGBA:{uniforms:Pn([We.common,We.displacementmap,{referencePosition:{value:new oe},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:St.distanceRGBA_vert,fragmentShader:St.distanceRGBA_frag},shadow:{uniforms:Pn([We.lights,We.fog,{color:{value:new _t(0)},opacity:{value:1}}]),vertexShader:St.shadow_vert,fragmentShader:St.shadow_frag}};Xs.physical={uniforms:Pn([Xs.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Tt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Tt},clearcoatNormalScale:{value:new At(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Tt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Tt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Tt},sheen:{value:0},sheenColor:{value:new _t(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Tt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Tt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Tt},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Tt},attenuationDistance:{value:0},attenuationColor:{value:new _t(0)},specularColor:{value:new _t(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Tt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Tt},anisotropyVector:{value:new At},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Tt}}]),vertexShader:St.meshphysical_vert,fragmentShader:St.meshphysical_frag};const nd={r:0,b:0,g:0};function AOt(t,e,n,s,i,r,o){const a=new _t(0);let c=r===!0?0:1,d,u,h=null,f=0,m=null;function _(b,E){let y=!1,v=E.isScene===!0?E.background:null;v&&v.isTexture&&(v=(E.backgroundBlurriness>0?n:e).get(v)),v===null?g(a,c):v&&v.isColor&&(g(v,1),y=!0);const S=t.xr.getEnvironmentBlendMode();S==="additive"?s.buffers.color.setClear(0,0,0,1,o):S==="alpha-blend"&&s.buffers.color.setClear(0,0,0,0,o),(t.autoClear||y)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),v&&(v.isCubeTexture||v.mapping===ep)?(u===void 0&&(u=new Fn(new hr(1,1,1),new ro({name:"BackgroundCubeMaterial",uniforms:ma(Xs.backgroundCube.uniforms),vertexShader:Xs.backgroundCube.vertexShader,fragmentShader:Xs.backgroundCube.fragmentShader,side:$n,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(R,C,A){this.matrixWorld.copyPosition(A.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),u.material.uniforms.envMap.value=v,u.material.uniforms.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,u.material.toneMapped=Ut.getTransfer(v.colorSpace)!==Kt,(h!==v||f!==v.version||m!==t.toneMapping)&&(u.material.needsUpdate=!0,h=v,f=v.version,m=t.toneMapping),u.layers.enableAll(),b.unshift(u,u.geometry,u.material,0,0,null)):v&&v.isTexture&&(d===void 0&&(d=new Fn(new QE(2,2),new ro({name:"BackgroundMaterial",uniforms:ma(Xs.background.uniforms),vertexShader:Xs.background.vertexShader,fragmentShader:Xs.background.fragmentShader,side:Li,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),Object.defineProperty(d.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(d)),d.material.uniforms.t2D.value=v,d.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,d.material.toneMapped=Ut.getTransfer(v.colorSpace)!==Kt,v.matrixAutoUpdate===!0&&v.updateMatrix(),d.material.uniforms.uvTransform.value.copy(v.matrix),(h!==v||f!==v.version||m!==t.toneMapping)&&(d.material.needsUpdate=!0,h=v,f=v.version,m=t.toneMapping),d.layers.enableAll(),b.unshift(d,d.geometry,d.material,0,0,null))}function g(b,E){b.getRGB(nd,$N(t)),s.buffers.color.setClear(nd.r,nd.g,nd.b,E,o)}return{getClearColor:function(){return a},setClearColor:function(b,E=1){a.set(b),c=E,g(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(b){c=b,g(a,c)},render:_}}function NOt(t,e,n,s){const i=t.getParameter(t.MAX_VERTEX_ATTRIBS),r=s.isWebGL2?null:e.get("OES_vertex_array_object"),o=s.isWebGL2||r!==null,a={},c=b(null);let d=c,u=!1;function h(k,$,q,U,W){let ne=!1;if(o){const le=g(U,q,$);d!==le&&(d=le,m(d.object)),ne=E(k,U,q,W),ne&&y(k,U,q,W)}else{const le=$.wireframe===!0;(d.geometry!==U.id||d.program!==q.id||d.wireframe!==le)&&(d.geometry=U.id,d.program=q.id,d.wireframe=le,ne=!0)}W!==null&&n.update(W,t.ELEMENT_ARRAY_BUFFER),(ne||u)&&(u=!1,I(k,$,q,U),W!==null&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.get(W).buffer))}function f(){return s.isWebGL2?t.createVertexArray():r.createVertexArrayOES()}function m(k){return s.isWebGL2?t.bindVertexArray(k):r.bindVertexArrayOES(k)}function _(k){return s.isWebGL2?t.deleteVertexArray(k):r.deleteVertexArrayOES(k)}function g(k,$,q){const U=q.wireframe===!0;let W=a[k.id];W===void 0&&(W={},a[k.id]=W);let ne=W[$.id];ne===void 0&&(ne={},W[$.id]=ne);let le=ne[U];return le===void 0&&(le=b(f()),ne[U]=le),le}function b(k){const $=[],q=[],U=[];for(let W=0;W=0){const Ee=W[Se];let Me=ne[Se];if(Me===void 0&&(Se==="instanceMatrix"&&k.instanceMatrix&&(Me=k.instanceMatrix),Se==="instanceColor"&&k.instanceColor&&(Me=k.instanceColor)),Ee===void 0||Ee.attribute!==Me||Me&&Ee.data!==Me.data)return!0;le++}return d.attributesNum!==le||d.index!==U}function y(k,$,q,U){const W={},ne=$.attributes;let le=0;const me=q.getAttributes();for(const Se in me)if(me[Se].location>=0){let Ee=ne[Se];Ee===void 0&&(Se==="instanceMatrix"&&k.instanceMatrix&&(Ee=k.instanceMatrix),Se==="instanceColor"&&k.instanceColor&&(Ee=k.instanceColor));const Me={};Me.attribute=Ee,Ee&&Ee.data&&(Me.data=Ee.data),W[Se]=Me,le++}d.attributes=W,d.attributesNum=le,d.index=U}function v(){const k=d.newAttributes;for(let $=0,q=k.length;$ =0){let de=W[me];if(de===void 0&&(me==="instanceMatrix"&&k.instanceMatrix&&(de=k.instanceMatrix),me==="instanceColor"&&k.instanceColor&&(de=k.instanceColor)),de!==void 0){const Ee=de.normalized,Me=de.itemSize,ke=n.get(de);if(ke===void 0)continue;const Z=ke.buffer,he=ke.type,_e=ke.bytesPerElement,we=s.isWebGL2===!0&&(he===t.INT||he===t.UNSIGNED_INT||de.gpuType===RN);if(de.isInterleavedBufferAttribute){const Ue=de.data,N=Ue.stride,z=de.offset;if(Ue.isInstancedInterleavedBuffer){for(let Y=0;Y0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";A="mediump"}return A==="mediump"&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&t.constructor.name==="WebGL2RenderingContext";let a=n.precision!==void 0?n.precision:"highp";const c=r(a);c!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",c,"instead."),a=c);const d=o||e.has("WEBGL_draw_buffers"),u=n.logarithmicDepthBuffer===!0,h=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),f=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=t.getParameter(t.MAX_TEXTURE_SIZE),_=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),g=t.getParameter(t.MAX_VERTEX_ATTRIBS),b=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),E=t.getParameter(t.MAX_VARYING_VECTORS),y=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=f>0,S=o||e.has("OES_texture_float"),R=v&&S,C=o?t.getParameter(t.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:d,getMaxAnisotropy:i,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:u,maxTextures:h,maxVertexTextures:f,maxTextureSize:m,maxCubemapSize:_,maxAttributes:g,maxVertexUniforms:b,maxVaryings:E,maxFragmentUniforms:y,vertexTextures:v,floatFragmentTextures:S,floatVertexTextures:R,maxSamples:C}}function IOt(t){const e=this;let n=null,s=0,i=!1,r=!1;const o=new Ir,a=new Tt,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(h,f){const m=h.length!==0||f||s!==0||i;return i=f,s=h.length,m},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(h,f){n=u(h,f,0)},this.setState=function(h,f,m){const _=h.clippingPlanes,g=h.clipIntersection,b=h.clipShadows,E=t.get(h);if(!i||_===null||_.length===0||r&&!b)r?u(null):d();else{const y=r?0:s,v=y*4;let S=E.clippingState||null;c.value=S,S=u(_,f,v,m);for(let R=0;R!==v;++R)S[R]=n[R];E.clippingState=S,this.numIntersection=g?this.numPlanes:0,this.numPlanes+=y}};function d(){c.value!==n&&(c.value=n,c.needsUpdate=s>0),e.numPlanes=s,e.numIntersection=0}function u(h,f,m,_){const g=h!==null?h.length:0;let b=null;if(g!==0){if(b=c.value,_!==!0||b===null){const E=m+g*4,y=f.matrixWorldInverse;a.getNormalMatrix(y),(b===null||b.length 0){const d=new $At(c.height/2);return d.fromEquirectangularTexture(t,o),e.set(o,d),o.addEventListener("dispose",i),n(d.texture,o.mapping)}else return null}}return o}function i(o){const a=o.target;a.removeEventListener("dispose",i);const c=e.get(a);c!==void 0&&(e.delete(a),c.dispose())}function r(){e=new WeakMap}return{get:s,dispose:r}}class XE extends YN{constructor(e=-1,n=1,s=1,i=-1,r=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=n,this.top=s,this.bottom=i,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,n,s,i,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=s,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),n=(this.top-this.bottom)/(2*this.zoom),s=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=s-e,o=s+e,a=i+n,c=i-n;if(this.view!==null&&this.view.enabled){const d=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=d*this.view.offsetX,o=r+d*this.view.width,a-=u*this.view.offsetY,c=a-u*this.view.height}this.projectionMatrix.makeOrthographic(r,o,a,c,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.zoom=this.zoom,n.object.left=this.left,n.object.right=this.right,n.object.top=this.top,n.object.bottom=this.bottom,n.object.near=this.near,n.object.far=this.far,this.view!==null&&(n.object.view=Object.assign({},this.view)),n}}const Bo=4,AC=[.125,.215,.35,.446,.526,.582],Br=20,Km=new XE,NC=new _t;let jm=null,Qm=0,Xm=0;const kr=(1+Math.sqrt(5))/2,ko=1/kr,OC=[new oe(1,1,1),new oe(-1,1,1),new oe(1,1,-1),new oe(-1,1,-1),new oe(0,kr,ko),new oe(0,kr,-ko),new oe(ko,0,kr),new oe(-ko,0,kr),new oe(kr,ko,0),new oe(-kr,ko,0)];class MC{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,n=0,s=.1,i=100){jm=this._renderer.getRenderTarget(),Qm=this._renderer.getActiveCubeFace(),Xm=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,s,i,r),n>0&&this._blur(r,0,0,n),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,n=null){return this._fromTexture(e,n)}fromCubemap(e,n=null){return this._fromTexture(e,n)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=DC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=kC(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e 2?v:0,v,v),u.setRenderTarget(i),g&&u.render(_,a),u.render(e,a)}_.geometry.dispose(),_.material.dispose(),u.toneMapping=f,u.autoClear=h,e.background=b}_textureToCubeUV(e,n){const s=this._renderer,i=e.mapping===da||e.mapping===ua;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=DC()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=kC());const r=i?this._cubemapMaterial:this._equirectMaterial,o=new Fn(this._lodPlanes[0],r),a=r.uniforms;a.envMap.value=e;const c=this._cubeSize;sd(n,0,0,3*c,2*c),s.setRenderTarget(n),s.render(o,Km)}_applyPMREM(e){const n=this._renderer,s=n.autoClear;n.autoClear=!1;for(let i=1;i Br&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${b} samples when the maximum is set to ${Br}`);const E=[];let y=0;for(let A=0;A
v-Bo?i-v+Bo:0),C=4*(this._cubeSize-S);sd(n,R,C,3*S,2*S),c.setRenderTarget(n),c.render(h,Km)}}function DOt(t){const e=[],n=[],s=[];let i=t;const r=t-Bo+1+AC.length;for(let o=0;ot-Bo?c=AC[o-t+Bo-1]:o===0&&(c=0),s.push(c);const d=1/(a-2),u=-d,h=1+d,f=[u,u,h,u,h,h,u,u,h,h,u,h],m=6,_=6,g=3,b=2,E=1,y=new Float32Array(g*_*m),v=new Float32Array(b*_*m),S=new Float32Array(E*_*m);for(let C=0;C 2?0:-1,x=[A,I,0,A+2/3,I,0,A+2/3,I+1,0,A,I,0,A+2/3,I+1,0,A,I+1,0];y.set(x,g*_*C),v.set(f,b*_*C);const O=[C,C,C,C,C,C];S.set(O,E*_*C)}const R=new _i;R.setAttribute("position",new Bn(y,g)),R.setAttribute("uv",new Bn(v,b)),R.setAttribute("faceIndex",new Bn(S,E)),e.push(R),i>Bo&&i--}return{lodPlanes:e,sizeLods:n,sigmas:s}}function IC(t,e,n){const s=new io(t,e,n);return s.texture.mapping=ep,s.texture.name="PMREM.cubeUv",s.scissorTest=!0,s}function sd(t,e,n,s,i){t.viewport.set(e,n,s,i),t.scissor.set(e,n,s,i)}function LOt(t,e,n){const s=new Float32Array(Br),i=new oe(0,1,0);return new ro({name:"SphericalGaussianBlur",defines:{n:Br,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:s},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:ZE(),fragmentShader:` +}`,St={alphahash_fragment:e2t,alphahash_pars_fragment:t2t,alphamap_fragment:n2t,alphamap_pars_fragment:s2t,alphatest_fragment:i2t,alphatest_pars_fragment:r2t,aomap_fragment:o2t,aomap_pars_fragment:a2t,batching_pars_vertex:l2t,batching_vertex:c2t,begin_vertex:d2t,beginnormal_vertex:u2t,bsdfs:p2t,iridescence_fragment:_2t,bumpmap_pars_fragment:h2t,clipping_planes_fragment:f2t,clipping_planes_pars_fragment:m2t,clipping_planes_pars_vertex:g2t,clipping_planes_vertex:b2t,color_fragment:E2t,color_pars_fragment:y2t,color_pars_vertex:v2t,color_vertex:S2t,common:T2t,cube_uv_reflection_fragment:x2t,defaultnormal_vertex:C2t,displacementmap_pars_vertex:w2t,displacementmap_vertex:R2t,emissivemap_fragment:A2t,emissivemap_pars_fragment:N2t,colorspace_fragment:O2t,colorspace_pars_fragment:M2t,envmap_fragment:I2t,envmap_common_pars_fragment:k2t,envmap_pars_fragment:D2t,envmap_pars_vertex:L2t,envmap_physical_pars_fragment:W2t,envmap_vertex:P2t,fog_vertex:U2t,fog_pars_vertex:F2t,fog_fragment:B2t,fog_pars_fragment:G2t,gradientmap_pars_fragment:V2t,lightmap_fragment:z2t,lightmap_pars_fragment:H2t,lights_lambert_fragment:q2t,lights_lambert_pars_fragment:$2t,lights_pars_begin:Y2t,lights_toon_fragment:K2t,lights_toon_pars_fragment:j2t,lights_phong_fragment:Q2t,lights_phong_pars_fragment:X2t,lights_physical_fragment:Z2t,lights_physical_pars_fragment:J2t,lights_fragment_begin:eNt,lights_fragment_maps:tNt,lights_fragment_end:nNt,logdepthbuf_fragment:sNt,logdepthbuf_pars_fragment:iNt,logdepthbuf_pars_vertex:rNt,logdepthbuf_vertex:oNt,map_fragment:aNt,map_pars_fragment:lNt,map_particle_fragment:cNt,map_particle_pars_fragment:dNt,metalnessmap_fragment:uNt,metalnessmap_pars_fragment:pNt,morphcolor_vertex:_Nt,morphnormal_vertex:hNt,morphtarget_pars_vertex:fNt,morphtarget_vertex:mNt,normal_fragment_begin:gNt,normal_fragment_maps:bNt,normal_pars_fragment:ENt,normal_pars_vertex:yNt,normal_vertex:vNt,normalmap_pars_fragment:SNt,clearcoat_normal_fragment_begin:TNt,clearcoat_normal_fragment_maps:xNt,clearcoat_pars_fragment:CNt,iridescence_pars_fragment:wNt,opaque_fragment:RNt,packing:ANt,premultiplied_alpha_fragment:NNt,project_vertex:ONt,dithering_fragment:MNt,dithering_pars_fragment:INt,roughnessmap_fragment:kNt,roughnessmap_pars_fragment:DNt,shadowmap_pars_fragment:LNt,shadowmap_pars_vertex:PNt,shadowmap_vertex:UNt,shadowmask_pars_fragment:FNt,skinbase_vertex:BNt,skinning_pars_vertex:GNt,skinning_vertex:VNt,skinnormal_vertex:zNt,specularmap_fragment:HNt,specularmap_pars_fragment:qNt,tonemapping_fragment:$Nt,tonemapping_pars_fragment:YNt,transmission_fragment:WNt,transmission_pars_fragment:KNt,uv_pars_fragment:jNt,uv_pars_vertex:QNt,uv_vertex:XNt,worldpos_vertex:ZNt,background_vert:JNt,background_frag:eOt,backgroundCube_vert:tOt,backgroundCube_frag:nOt,cube_vert:sOt,cube_frag:iOt,depth_vert:rOt,depth_frag:oOt,distanceRGBA_vert:aOt,distanceRGBA_frag:lOt,equirect_vert:cOt,equirect_frag:dOt,linedashed_vert:uOt,linedashed_frag:pOt,meshbasic_vert:_Ot,meshbasic_frag:hOt,meshlambert_vert:fOt,meshlambert_frag:mOt,meshmatcap_vert:gOt,meshmatcap_frag:bOt,meshnormal_vert:EOt,meshnormal_frag:yOt,meshphong_vert:vOt,meshphong_frag:SOt,meshphysical_vert:TOt,meshphysical_frag:xOt,meshtoon_vert:COt,meshtoon_frag:wOt,points_vert:ROt,points_frag:AOt,shadow_vert:NOt,shadow_frag:OOt,sprite_vert:MOt,sprite_frag:IOt},We={common:{diffuse:{value:new _t(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Tt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Tt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Tt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Tt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Tt},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Tt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Tt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Tt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Tt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new _t(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new _t(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0},uvTransform:{value:new Tt}},sprite:{diffuse:{value:new _t(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}}},Xs={basic:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.fog]),vertexShader:St.meshbasic_vert,fragmentShader:St.meshbasic_frag},lambert:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new _t(0)}}]),vertexShader:St.meshlambert_vert,fragmentShader:St.meshlambert_frag},phong:{uniforms:Pn([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new _t(0)},specular:{value:new _t(1118481)},shininess:{value:30}}]),vertexShader:St.meshphong_vert,fragmentShader:St.meshphong_frag},standard:{uniforms:Pn([We.common,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.roughnessmap,We.metalnessmap,We.fog,We.lights,{emissive:{value:new _t(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:St.meshphysical_vert,fragmentShader:St.meshphysical_frag},toon:{uniforms:Pn([We.common,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.gradientmap,We.fog,We.lights,{emissive:{value:new _t(0)}}]),vertexShader:St.meshtoon_vert,fragmentShader:St.meshtoon_frag},matcap:{uniforms:Pn([We.common,We.bumpmap,We.normalmap,We.displacementmap,We.fog,{matcap:{value:null}}]),vertexShader:St.meshmatcap_vert,fragmentShader:St.meshmatcap_frag},points:{uniforms:Pn([We.points,We.fog]),vertexShader:St.points_vert,fragmentShader:St.points_frag},dashed:{uniforms:Pn([We.common,We.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:St.linedashed_vert,fragmentShader:St.linedashed_frag},depth:{uniforms:Pn([We.common,We.displacementmap]),vertexShader:St.depth_vert,fragmentShader:St.depth_frag},normal:{uniforms:Pn([We.common,We.bumpmap,We.normalmap,We.displacementmap,{opacity:{value:1}}]),vertexShader:St.meshnormal_vert,fragmentShader:St.meshnormal_frag},sprite:{uniforms:Pn([We.sprite,We.fog]),vertexShader:St.sprite_vert,fragmentShader:St.sprite_frag},background:{uniforms:{uvTransform:{value:new Tt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:St.background_vert,fragmentShader:St.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:St.backgroundCube_vert,fragmentShader:St.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:St.cube_vert,fragmentShader:St.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:St.equirect_vert,fragmentShader:St.equirect_frag},distanceRGBA:{uniforms:Pn([We.common,We.displacementmap,{referencePosition:{value:new oe},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:St.distanceRGBA_vert,fragmentShader:St.distanceRGBA_frag},shadow:{uniforms:Pn([We.lights,We.fog,{color:{value:new _t(0)},opacity:{value:1}}]),vertexShader:St.shadow_vert,fragmentShader:St.shadow_frag}};Xs.physical={uniforms:Pn([Xs.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Tt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Tt},clearcoatNormalScale:{value:new At(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Tt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Tt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Tt},sheen:{value:0},sheenColor:{value:new _t(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Tt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Tt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Tt},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Tt},attenuationDistance:{value:0},attenuationColor:{value:new _t(0)},specularColor:{value:new _t(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Tt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Tt},anisotropyVector:{value:new At},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Tt}}]),vertexShader:St.meshphysical_vert,fragmentShader:St.meshphysical_frag};const nd={r:0,b:0,g:0};function kOt(t,e,n,s,i,r,o){const a=new _t(0);let c=r===!0?0:1,d,u,h=null,f=0,m=null;function _(b,E){let y=!1,v=E.isScene===!0?E.background:null;v&&v.isTexture&&(v=(E.backgroundBlurriness>0?n:e).get(v)),v===null?g(a,c):v&&v.isColor&&(g(v,1),y=!0);const S=t.xr.getEnvironmentBlendMode();S==="additive"?s.buffers.color.setClear(0,0,0,1,o):S==="alpha-blend"&&s.buffers.color.setClear(0,0,0,0,o),(t.autoClear||y)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),v&&(v.isCubeTexture||v.mapping===ep)?(u===void 0&&(u=new Fn(new hr(1,1,1),new ro({name:"BackgroundCubeMaterial",uniforms:ma(Xs.backgroundCube.uniforms),vertexShader:Xs.backgroundCube.vertexShader,fragmentShader:Xs.backgroundCube.fragmentShader,side:$n,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(R,C,A){this.matrixWorld.copyPosition(A.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),u.material.uniforms.envMap.value=v,u.material.uniforms.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,u.material.toneMapped=Ut.getTransfer(v.colorSpace)!==Kt,(h!==v||f!==v.version||m!==t.toneMapping)&&(u.material.needsUpdate=!0,h=v,f=v.version,m=t.toneMapping),u.layers.enableAll(),b.unshift(u,u.geometry,u.material,0,0,null)):v&&v.isTexture&&(d===void 0&&(d=new Fn(new QE(2,2),new ro({name:"BackgroundMaterial",uniforms:ma(Xs.background.uniforms),vertexShader:Xs.background.vertexShader,fragmentShader:Xs.background.fragmentShader,side:Li,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),Object.defineProperty(d.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(d)),d.material.uniforms.t2D.value=v,d.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,d.material.toneMapped=Ut.getTransfer(v.colorSpace)!==Kt,v.matrixAutoUpdate===!0&&v.updateMatrix(),d.material.uniforms.uvTransform.value.copy(v.matrix),(h!==v||f!==v.version||m!==t.toneMapping)&&(d.material.needsUpdate=!0,h=v,f=v.version,m=t.toneMapping),d.layers.enableAll(),b.unshift(d,d.geometry,d.material,0,0,null))}function g(b,E){b.getRGB(nd,$N(t)),s.buffers.color.setClear(nd.r,nd.g,nd.b,E,o)}return{getClearColor:function(){return a},setClearColor:function(b,E=1){a.set(b),c=E,g(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(b){c=b,g(a,c)},render:_}}function DOt(t,e,n,s){const i=t.getParameter(t.MAX_VERTEX_ATTRIBS),r=s.isWebGL2?null:e.get("OES_vertex_array_object"),o=s.isWebGL2||r!==null,a={},c=b(null);let d=c,u=!1;function h(k,$,q,U,W){let ne=!1;if(o){const le=g(U,q,$);d!==le&&(d=le,m(d.object)),ne=E(k,U,q,W),ne&&y(k,U,q,W)}else{const le=$.wireframe===!0;(d.geometry!==U.id||d.program!==q.id||d.wireframe!==le)&&(d.geometry=U.id,d.program=q.id,d.wireframe=le,ne=!0)}W!==null&&n.update(W,t.ELEMENT_ARRAY_BUFFER),(ne||u)&&(u=!1,I(k,$,q,U),W!==null&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.get(W).buffer))}function f(){return s.isWebGL2?t.createVertexArray():r.createVertexArrayOES()}function m(k){return s.isWebGL2?t.bindVertexArray(k):r.bindVertexArrayOES(k)}function _(k){return s.isWebGL2?t.deleteVertexArray(k):r.deleteVertexArrayOES(k)}function g(k,$,q){const U=q.wireframe===!0;let W=a[k.id];W===void 0&&(W={},a[k.id]=W);let ne=W[$.id];ne===void 0&&(ne={},W[$.id]=ne);let le=ne[U];return le===void 0&&(le=b(f()),ne[U]=le),le}function b(k){const $=[],q=[],U=[];for(let W=0;W=0){const Ee=W[Se];let Me=ne[Se];if(Me===void 0&&(Se==="instanceMatrix"&&k.instanceMatrix&&(Me=k.instanceMatrix),Se==="instanceColor"&&k.instanceColor&&(Me=k.instanceColor)),Ee===void 0||Ee.attribute!==Me||Me&&Ee.data!==Me.data)return!0;le++}return d.attributesNum!==le||d.index!==U}function y(k,$,q,U){const W={},ne=$.attributes;let le=0;const me=q.getAttributes();for(const Se in me)if(me[Se].location>=0){let Ee=ne[Se];Ee===void 0&&(Se==="instanceMatrix"&&k.instanceMatrix&&(Ee=k.instanceMatrix),Se==="instanceColor"&&k.instanceColor&&(Ee=k.instanceColor));const Me={};Me.attribute=Ee,Ee&&Ee.data&&(Me.data=Ee.data),W[Se]=Me,le++}d.attributes=W,d.attributesNum=le,d.index=U}function v(){const k=d.newAttributes;for(let $=0,q=k.length;$ =0){let de=W[me];if(de===void 0&&(me==="instanceMatrix"&&k.instanceMatrix&&(de=k.instanceMatrix),me==="instanceColor"&&k.instanceColor&&(de=k.instanceColor)),de!==void 0){const Ee=de.normalized,Me=de.itemSize,ke=n.get(de);if(ke===void 0)continue;const Z=ke.buffer,he=ke.type,_e=ke.bytesPerElement,we=s.isWebGL2===!0&&(he===t.INT||he===t.UNSIGNED_INT||de.gpuType===RN);if(de.isInterleavedBufferAttribute){const Ue=de.data,N=Ue.stride,z=de.offset;if(Ue.isInstancedInterleavedBuffer){for(let Y=0;Y0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";A="mediump"}return A==="mediump"&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&t.constructor.name==="WebGL2RenderingContext";let a=n.precision!==void 0?n.precision:"highp";const c=r(a);c!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",c,"instead."),a=c);const d=o||e.has("WEBGL_draw_buffers"),u=n.logarithmicDepthBuffer===!0,h=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),f=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=t.getParameter(t.MAX_TEXTURE_SIZE),_=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),g=t.getParameter(t.MAX_VERTEX_ATTRIBS),b=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),E=t.getParameter(t.MAX_VARYING_VECTORS),y=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=f>0,S=o||e.has("OES_texture_float"),R=v&&S,C=o?t.getParameter(t.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:d,getMaxAnisotropy:i,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:u,maxTextures:h,maxVertexTextures:f,maxTextureSize:m,maxCubemapSize:_,maxAttributes:g,maxVertexUniforms:b,maxVaryings:E,maxFragmentUniforms:y,vertexTextures:v,floatFragmentTextures:S,floatVertexTextures:R,maxSamples:C}}function UOt(t){const e=this;let n=null,s=0,i=!1,r=!1;const o=new Ir,a=new Tt,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(h,f){const m=h.length!==0||f||s!==0||i;return i=f,s=h.length,m},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(h,f){n=u(h,f,0)},this.setState=function(h,f,m){const _=h.clippingPlanes,g=h.clipIntersection,b=h.clipShadows,E=t.get(h);if(!i||_===null||_.length===0||r&&!b)r?u(null):d();else{const y=r?0:s,v=y*4;let S=E.clippingState||null;c.value=S,S=u(_,f,v,m);for(let R=0;R!==v;++R)S[R]=n[R];E.clippingState=S,this.numIntersection=g?this.numPlanes:0,this.numPlanes+=y}};function d(){c.value!==n&&(c.value=n,c.needsUpdate=s>0),e.numPlanes=s,e.numIntersection=0}function u(h,f,m,_){const g=h!==null?h.length:0;let b=null;if(g!==0){if(b=c.value,_!==!0||b===null){const E=m+g*4,y=f.matrixWorldInverse;a.getNormalMatrix(y),(b===null||b.length 0){const d=new QAt(c.height/2);return d.fromEquirectangularTexture(t,o),e.set(o,d),o.addEventListener("dispose",i),n(d.texture,o.mapping)}else return null}}return o}function i(o){const a=o.target;a.removeEventListener("dispose",i);const c=e.get(a);c!==void 0&&(e.delete(a),c.dispose())}function r(){e=new WeakMap}return{get:s,dispose:r}}class XE extends YN{constructor(e=-1,n=1,s=1,i=-1,r=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=n,this.top=s,this.bottom=i,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,n,s,i,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=s,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),n=(this.top-this.bottom)/(2*this.zoom),s=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=s-e,o=s+e,a=i+n,c=i-n;if(this.view!==null&&this.view.enabled){const d=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=d*this.view.offsetX,o=r+d*this.view.width,a-=u*this.view.offsetY,c=a-u*this.view.height}this.projectionMatrix.makeOrthographic(r,o,a,c,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.zoom=this.zoom,n.object.left=this.left,n.object.right=this.right,n.object.top=this.top,n.object.bottom=this.bottom,n.object.near=this.near,n.object.far=this.far,this.view!==null&&(n.object.view=Object.assign({},this.view)),n}}const Bo=4,AC=[.125,.215,.35,.446,.526,.582],Br=20,Km=new XE,NC=new _t;let jm=null,Qm=0,Xm=0;const kr=(1+Math.sqrt(5))/2,ko=1/kr,OC=[new oe(1,1,1),new oe(-1,1,1),new oe(1,1,-1),new oe(-1,1,-1),new oe(0,kr,ko),new oe(0,kr,-ko),new oe(ko,0,kr),new oe(-ko,0,kr),new oe(kr,ko,0),new oe(-kr,ko,0)];class MC{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,n=0,s=.1,i=100){jm=this._renderer.getRenderTarget(),Qm=this._renderer.getActiveCubeFace(),Xm=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,s,i,r),n>0&&this._blur(r,0,0,n),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,n=null){return this._fromTexture(e,n)}fromCubemap(e,n=null){return this._fromTexture(e,n)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=DC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=kC(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e 2?v:0,v,v),u.setRenderTarget(i),g&&u.render(_,a),u.render(e,a)}_.geometry.dispose(),_.material.dispose(),u.toneMapping=f,u.autoClear=h,e.background=b}_textureToCubeUV(e,n){const s=this._renderer,i=e.mapping===da||e.mapping===ua;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=DC()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=kC());const r=i?this._cubemapMaterial:this._equirectMaterial,o=new Fn(this._lodPlanes[0],r),a=r.uniforms;a.envMap.value=e;const c=this._cubeSize;sd(n,0,0,3*c,2*c),s.setRenderTarget(n),s.render(o,Km)}_applyPMREM(e){const n=this._renderer,s=n.autoClear;n.autoClear=!1;for(let i=1;i Br&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${b} samples when the maximum is set to ${Br}`);const E=[];let y=0;for(let A=0;A
v-Bo?i-v+Bo:0),C=4*(this._cubeSize-S);sd(n,R,C,3*S,2*S),c.setRenderTarget(n),c.render(h,Km)}}function BOt(t){const e=[],n=[],s=[];let i=t;const r=t-Bo+1+AC.length;for(let o=0;ot-Bo?c=AC[o-t+Bo-1]:o===0&&(c=0),s.push(c);const d=1/(a-2),u=-d,h=1+d,f=[u,u,h,u,h,h,u,u,h,h,u,h],m=6,_=6,g=3,b=2,E=1,y=new Float32Array(g*_*m),v=new Float32Array(b*_*m),S=new Float32Array(E*_*m);for(let C=0;C 2?0:-1,x=[A,I,0,A+2/3,I,0,A+2/3,I+1,0,A,I,0,A+2/3,I+1,0,A,I+1,0];y.set(x,g*_*C),v.set(f,b*_*C);const O=[C,C,C,C,C,C];S.set(O,E*_*C)}const R=new _i;R.setAttribute("position",new Bn(y,g)),R.setAttribute("uv",new Bn(v,b)),R.setAttribute("faceIndex",new Bn(S,E)),e.push(R),i>Bo&&i--}return{lodPlanes:e,sizeLods:n,sigmas:s}}function IC(t,e,n){const s=new io(t,e,n);return s.texture.mapping=ep,s.texture.name="PMREM.cubeUv",s.scissorTest=!0,s}function sd(t,e,n,s,i){t.viewport.set(e,n,s,i),t.scissor.set(e,n,s,i)}function GOt(t,e,n){const s=new Float32Array(Br),i=new oe(0,1,0);return new ro({name:"SphericalGaussianBlur",defines:{n:Br,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:s},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:ZE(),fragmentShader:` precision mediump float; precision mediump int; @@ -3914,26 +3914,26 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function POt(t){let e=new WeakMap,n=null;function s(a){if(a&&a.isTexture){const c=a.mapping,d=c===Xg||c===Zg,u=c===da||c===ua;if(d||u)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let h=e.get(a);return n===null&&(n=new MC(t)),h=d?n.fromEquirectangular(a,h):n.fromCubemap(a,h),e.set(a,h),h.texture}else{if(e.has(a))return e.get(a).texture;{const h=a.image;if(d&&h&&h.height>0||u&&h&&i(h)){n===null&&(n=new MC(t));const f=d?n.fromEquirectangular(a):n.fromCubemap(a);return e.set(a,f),a.addEventListener("dispose",r),f.texture}else return null}}}return a}function i(a){let c=0;const d=6;for(let u=0;u e.maxTextureSize&&(B=Math.ceil(O/e.maxTextureSize),O=e.maxTextureSize);const H=new Float32Array(O*B*4*g),te=new GN(H,O,B,g);te.type=Ai,te.needsUpdate=!0;const k=x*4;for(let q=0;q 0)return t;const i=e*n;let r=LC[i];if(r===void 0&&(r=new Float32Array(i),LC[i]=r),e!==0){s.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=n,t[o].toArray(r,a)}return r}function _n(t,e){if(t.length!==e.length)return!1;for(let n=0,s=t.length;n 0||u&&h&&i(h)){n===null&&(n=new MC(t));const f=d?n.fromEquirectangular(a):n.fromCubemap(a);return e.set(a,f),a.addEventListener("dispose",r),f.texture}else return null}}}return a}function i(a){let c=0;const d=6;for(let u=0;ue.maxTextureSize&&(B=Math.ceil(O/e.maxTextureSize),O=e.maxTextureSize);const H=new Float32Array(O*B*4*g),te=new GN(H,O,B,g);te.type=Ai,te.needsUpdate=!0;const k=x*4;for(let q=0;q 0)return t;const i=e*n;let r=LC[i];if(r===void 0&&(r=new Float32Array(i),LC[i]=r),e!==0){s.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=n,t[o].toArray(r,a)}return r}function _n(t,e){if(t.length!==e.length)return!1;for(let n=0,s=t.length;n ":" "} ${a}: ${n[o]}`)}return s.join(` -`)}function FMt(t){const e=Ut.getPrimaries(Ut.workingColorSpace),n=Ut.getPrimaries(t);let s;switch(e===n?s="":e===ou&&n===ru?s="LinearDisplayP3ToLinearSRGB":e===ru&&n===ou&&(s="LinearSRGBToLinearDisplayP3"),t){case wn:case tp:return[s,"LinearTransferOETF"];case tn:case WE:return[s,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[s,"LinearTransferOETF"]}}function zC(t,e,n){const s=t.getShaderParameter(e,t.COMPILE_STATUS),i=t.getShaderInfoLog(e).trim();if(s&&i==="")return"";const r=/ERROR: 0:(\d+)/.exec(i);if(r){const o=parseInt(r[1]);return n.toUpperCase()+` +`)}function HMt(t){const e=Ut.getPrimaries(Ut.workingColorSpace),n=Ut.getPrimaries(t);let s;switch(e===n?s="":e===ou&&n===ru?s="LinearDisplayP3ToLinearSRGB":e===ru&&n===ou&&(s="LinearSRGBToLinearDisplayP3"),t){case wn:case tp:return[s,"LinearTransferOETF"];case tn:case WE:return[s,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[s,"LinearTransferOETF"]}}function zC(t,e,n){const s=t.getShaderParameter(e,t.COMPILE_STATUS),i=t.getShaderInfoLog(e).trim();if(s&&i==="")return"";const r=/ERROR: 0:(\d+)/.exec(i);if(r){const o=parseInt(r[1]);return n.toUpperCase()+` `+i+` -`+UMt(t.getShaderSource(e),o)}else return i}function BMt(t,e){const n=FMt(e);return`vec4 ${t}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function GMt(t,e){let n;switch(e){case PRt:n="Linear";break;case URt:n="Reinhard";break;case FRt:n="OptimizedCineon";break;case BRt:n="ACESFilmic";break;case GRt:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function VMt(t){return[t.extensionDerivatives||t.envMapCubeUVHeight||t.bumpMap||t.normalMapTangentSpace||t.clearcoatNormalMap||t.flatShading||t.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap||t.transmission)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(pl).join(` -`)}function zMt(t){const e=[];for(const n in t){const s=t[n];s!==!1&&e.push("#define "+n+" "+s)}return e.join(` -`)}function HMt(t,e){const n={},s=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function ib(t){return t.replace(qMt,YMt)}const $Mt=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function YMt(t,e){let n=St[e];if(n===void 0){const s=$Mt.get(e);if(s!==void 0)n=St[s],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,s);else throw new Error("Can not resolve #include <"+e+">")}return ib(n)}const WMt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function $C(t){return t.replace(WMt,KMt)}function KMt(t,e,n,s){let i="";for(let r=parseInt(e);r/gm;function ib(t){return t.replace(jMt,XMt)}const QMt=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function XMt(t,e){let n=St[e];if(n===void 0){const s=QMt.get(e);if(s!==void 0)n=St[s],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,s);else throw new Error("Can not resolve #include <"+e+">")}return ib(n)}const ZMt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function $C(t){return t.replace(ZMt,JMt)}function JMt(t,e,n,s){let i="";for(let r=parseInt(e);r 0&&(b+=` `),E=[m,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_].filter(pl).join(` `),E.length>0&&(E+=` `)):(b=[YC(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_,n.batching?"#define USE_BATCHING":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+u:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&n.flatShading===!1?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&n.flatShading===!1?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+c:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` `].filter(pl).join(` -`),E=[m,YC(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+d:"",n.envMap?"#define "+u:"",n.envMap?"#define "+h:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&n.flatShading===!1?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+c:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==pr?"#define TONE_MAPPING":"",n.toneMapping!==pr?St.tonemapping_pars_fragment:"",n.toneMapping!==pr?GMt("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",St.colorspace_pars_fragment,BMt("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"",` +`),E=[m,YC(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+d:"",n.envMap?"#define "+u:"",n.envMap?"#define "+h:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&n.flatShading===!1?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+c:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==pr?"#define TONE_MAPPING":"",n.toneMapping!==pr?St.tonemapping_pars_fragment:"",n.toneMapping!==pr?$Mt("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",St.colorspace_pars_fragment,qMt("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"",` `].filter(pl).join(` `)),o=ib(o),o=HC(o,n),o=qC(o,n),a=ib(a),a=HC(a,n),a=qC(a,n),o=$C(o),a=$C(a),n.isWebGL2&&n.isRawShaderMaterial!==!0&&(y=`#version 300 es `,b=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` @@ -3944,9 +3944,9 @@ precision `+t.precision+" int;";return t.precision==="highp"?e+=` Program Info Log: `+H+` `+U+` -`+W)}else H!==""?console.warn("THREE.WebGLProgram: Program Info Log:",H):(te===""||k==="")&&(q=!1);q&&(B.diagnostics={runnable:$,programLog:H,vertexShader:{log:te,prefix:b},fragmentShader:{log:k,prefix:E}})}i.deleteShader(R),i.deleteShader(C),I=new Rd(i,g),x=HMt(i,g)}let I;this.getUniforms=function(){return I===void 0&&A(this),I};let x;this.getAttributes=function(){return x===void 0&&A(this),x};let O=n.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return O===!1&&(O=i.getProgramParameter(g,LMt)),O},this.destroy=function(){s.releaseStatesOfProgram(this),i.deleteProgram(g),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=PMt++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=R,this.fragmentShader=C,this}let tIt=0;class nIt{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const n=e.vertexShader,s=e.fragmentShader,i=this._getShaderStage(n),r=this._getShaderStage(s),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(e){const n=this.materialCache.get(e);for(const s of n)s.usedTimes--,s.usedTimes===0&&this.shaderCache.delete(s.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const n=this.materialCache;let s=n.get(e);return s===void 0&&(s=new Set,n.set(e,s)),s}_getShaderStage(e){const n=this.shaderCache;let s=n.get(e);return s===void 0&&(s=new sIt(e),n.set(e,s)),s}}class sIt{constructor(e){this.id=tIt++,this.code=e,this.usedTimes=0}}function iIt(t,e,n,s,i,r,o){const a=new VN,c=new nIt,d=[],u=i.isWebGL2,h=i.logarithmicDepthBuffer,f=i.vertexTextures;let m=i.precision;const _={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function g(x){return x===0?"uv":`uv${x}`}function b(x,O,B,H,te){const k=H.fog,$=te.geometry,q=x.isMeshStandardMaterial?H.environment:null,U=(x.isMeshStandardMaterial?n:e).get(x.envMap||q),W=U&&U.mapping===ep?U.image.height:null,ne=_[x.type];x.precision!==null&&(m=i.getMaxPrecision(x.precision),m!==x.precision&&console.warn("THREE.WebGLProgram.getParameters:",x.precision,"not supported, using",m,"instead."));const le=$.morphAttributes.position||$.morphAttributes.normal||$.morphAttributes.color,me=le!==void 0?le.length:0;let Se=0;$.morphAttributes.position!==void 0&&(Se=1),$.morphAttributes.normal!==void 0&&(Se=2),$.morphAttributes.color!==void 0&&(Se=3);let de,Ee,Me,ke;if(ne){const En=Xs[ne];de=En.vertexShader,Ee=En.fragmentShader}else de=x.vertexShader,Ee=x.fragmentShader,c.update(x),Me=c.getVertexShaderID(x),ke=c.getFragmentShaderID(x);const Z=t.getRenderTarget(),he=te.isInstancedMesh===!0,_e=te.isBatchedMesh===!0,we=!!x.map,Ue=!!x.matcap,N=!!U,z=!!x.aoMap,Y=!!x.lightMap,ce=!!x.bumpMap,re=!!x.normalMap,xe=!!x.displacementMap,Ne=!!x.emissiveMap,ie=!!x.metalnessMap,Re=!!x.roughnessMap,ge=x.anisotropy>0,De=x.clearcoat>0,L=x.iridescence>0,M=x.sheen>0,Q=x.transmission>0,ye=ge&&!!x.anisotropyMap,X=De&&!!x.clearcoatMap,se=De&&!!x.clearcoatNormalMap,Ae=De&&!!x.clearcoatRoughnessMap,Ce=L&&!!x.iridescenceMap,Fe=L&&!!x.iridescenceThicknessMap,Ze=M&&!!x.sheenColorMap,ft=M&&!!x.sheenRoughnessMap,Be=!!x.specularMap,pt=!!x.specularColorMap,st=!!x.specularIntensityMap,Ye=Q&&!!x.transmissionMap,nt=Q&&!!x.thicknessMap,je=!!x.gradientMap,yt=!!x.alphaMap,ee=x.alphaTest>0,Qe=!!x.alphaHash,Ve=!!x.extensions,Oe=!!$.attributes.uv1,He=!!$.attributes.uv2,lt=!!$.attributes.uv3;let Nt=pr;return x.toneMapped&&(Z===null||Z.isXRRenderTarget===!0)&&(Nt=t.toneMapping),{isWebGL2:u,shaderID:ne,shaderType:x.type,shaderName:x.name,vertexShader:de,fragmentShader:Ee,defines:x.defines,customVertexShaderID:Me,customFragmentShaderID:ke,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:m,batching:_e,instancing:he,instancingColor:he&&te.instanceColor!==null,supportsVertexTextures:f,outputColorSpace:Z===null?t.outputColorSpace:Z.isXRRenderTarget===!0?Z.texture.colorSpace:wn,map:we,matcap:Ue,envMap:N,envMapMode:N&&U.mapping,envMapCubeUVHeight:W,aoMap:z,lightMap:Y,bumpMap:ce,normalMap:re,displacementMap:f&&xe,emissiveMap:Ne,normalMapObjectSpace:re&&x.normalMapType===eAt,normalMapTangentSpace:re&&x.normalMapType===YE,metalnessMap:ie,roughnessMap:Re,anisotropy:ge,anisotropyMap:ye,clearcoat:De,clearcoatMap:X,clearcoatNormalMap:se,clearcoatRoughnessMap:Ae,iridescence:L,iridescenceMap:Ce,iridescenceThicknessMap:Fe,sheen:M,sheenColorMap:Ze,sheenRoughnessMap:ft,specularMap:Be,specularColorMap:pt,specularIntensityMap:st,transmission:Q,transmissionMap:Ye,thicknessMap:nt,gradientMap:je,opaque:x.transparent===!1&&x.blending===jo,alphaMap:yt,alphaTest:ee,alphaHash:Qe,combine:x.combine,mapUv:we&&g(x.map.channel),aoMapUv:z&&g(x.aoMap.channel),lightMapUv:Y&&g(x.lightMap.channel),bumpMapUv:ce&&g(x.bumpMap.channel),normalMapUv:re&&g(x.normalMap.channel),displacementMapUv:xe&&g(x.displacementMap.channel),emissiveMapUv:Ne&&g(x.emissiveMap.channel),metalnessMapUv:ie&&g(x.metalnessMap.channel),roughnessMapUv:Re&&g(x.roughnessMap.channel),anisotropyMapUv:ye&&g(x.anisotropyMap.channel),clearcoatMapUv:X&&g(x.clearcoatMap.channel),clearcoatNormalMapUv:se&&g(x.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ae&&g(x.clearcoatRoughnessMap.channel),iridescenceMapUv:Ce&&g(x.iridescenceMap.channel),iridescenceThicknessMapUv:Fe&&g(x.iridescenceThicknessMap.channel),sheenColorMapUv:Ze&&g(x.sheenColorMap.channel),sheenRoughnessMapUv:ft&&g(x.sheenRoughnessMap.channel),specularMapUv:Be&&g(x.specularMap.channel),specularColorMapUv:pt&&g(x.specularColorMap.channel),specularIntensityMapUv:st&&g(x.specularIntensityMap.channel),transmissionMapUv:Ye&&g(x.transmissionMap.channel),thicknessMapUv:nt&&g(x.thicknessMap.channel),alphaMapUv:yt&&g(x.alphaMap.channel),vertexTangents:!!$.attributes.tangent&&(re||ge),vertexColors:x.vertexColors,vertexAlphas:x.vertexColors===!0&&!!$.attributes.color&&$.attributes.color.itemSize===4,vertexUv1s:Oe,vertexUv2s:He,vertexUv3s:lt,pointsUvs:te.isPoints===!0&&!!$.attributes.uv&&(we||yt),fog:!!k,useFog:x.fog===!0,fogExp2:k&&k.isFogExp2,flatShading:x.flatShading===!0,sizeAttenuation:x.sizeAttenuation===!0,logarithmicDepthBuffer:h,skinning:te.isSkinnedMesh===!0,morphTargets:$.morphAttributes.position!==void 0,morphNormals:$.morphAttributes.normal!==void 0,morphColors:$.morphAttributes.color!==void 0,morphTargetsCount:me,morphTextureStride:Se,numDirLights:O.directional.length,numPointLights:O.point.length,numSpotLights:O.spot.length,numSpotLightMaps:O.spotLightMap.length,numRectAreaLights:O.rectArea.length,numHemiLights:O.hemi.length,numDirLightShadows:O.directionalShadowMap.length,numPointLightShadows:O.pointShadowMap.length,numSpotLightShadows:O.spotShadowMap.length,numSpotLightShadowsWithMaps:O.numSpotLightShadowsWithMaps,numLightProbes:O.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:x.dithering,shadowMapEnabled:t.shadowMap.enabled&&B.length>0,shadowMapType:t.shadowMap.type,toneMapping:Nt,useLegacyLights:t._useLegacyLights,decodeVideoTexture:we&&x.map.isVideoTexture===!0&&Ut.getTransfer(x.map.colorSpace)===Kt,premultipliedAlpha:x.premultipliedAlpha,doubleSided:x.side===Js,flipSided:x.side===$n,useDepthPacking:x.depthPacking>=0,depthPacking:x.depthPacking||0,index0AttributeName:x.index0AttributeName,extensionDerivatives:Ve&&x.extensions.derivatives===!0,extensionFragDepth:Ve&&x.extensions.fragDepth===!0,extensionDrawBuffers:Ve&&x.extensions.drawBuffers===!0,extensionShaderTextureLOD:Ve&&x.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:u||s.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||s.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||s.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:s.has("KHR_parallel_shader_compile"),customProgramCacheKey:x.customProgramCacheKey()}}function E(x){const O=[];if(x.shaderID?O.push(x.shaderID):(O.push(x.customVertexShaderID),O.push(x.customFragmentShaderID)),x.defines!==void 0)for(const B in x.defines)O.push(B),O.push(x.defines[B]);return x.isRawShaderMaterial===!1&&(y(O,x),v(O,x),O.push(t.outputColorSpace)),O.push(x.customProgramCacheKey),O.join()}function y(x,O){x.push(O.precision),x.push(O.outputColorSpace),x.push(O.envMapMode),x.push(O.envMapCubeUVHeight),x.push(O.mapUv),x.push(O.alphaMapUv),x.push(O.lightMapUv),x.push(O.aoMapUv),x.push(O.bumpMapUv),x.push(O.normalMapUv),x.push(O.displacementMapUv),x.push(O.emissiveMapUv),x.push(O.metalnessMapUv),x.push(O.roughnessMapUv),x.push(O.anisotropyMapUv),x.push(O.clearcoatMapUv),x.push(O.clearcoatNormalMapUv),x.push(O.clearcoatRoughnessMapUv),x.push(O.iridescenceMapUv),x.push(O.iridescenceThicknessMapUv),x.push(O.sheenColorMapUv),x.push(O.sheenRoughnessMapUv),x.push(O.specularMapUv),x.push(O.specularColorMapUv),x.push(O.specularIntensityMapUv),x.push(O.transmissionMapUv),x.push(O.thicknessMapUv),x.push(O.combine),x.push(O.fogExp2),x.push(O.sizeAttenuation),x.push(O.morphTargetsCount),x.push(O.morphAttributeCount),x.push(O.numDirLights),x.push(O.numPointLights),x.push(O.numSpotLights),x.push(O.numSpotLightMaps),x.push(O.numHemiLights),x.push(O.numRectAreaLights),x.push(O.numDirLightShadows),x.push(O.numPointLightShadows),x.push(O.numSpotLightShadows),x.push(O.numSpotLightShadowsWithMaps),x.push(O.numLightProbes),x.push(O.shadowMapType),x.push(O.toneMapping),x.push(O.numClippingPlanes),x.push(O.numClipIntersection),x.push(O.depthPacking)}function v(x,O){a.disableAll(),O.isWebGL2&&a.enable(0),O.supportsVertexTextures&&a.enable(1),O.instancing&&a.enable(2),O.instancingColor&&a.enable(3),O.matcap&&a.enable(4),O.envMap&&a.enable(5),O.normalMapObjectSpace&&a.enable(6),O.normalMapTangentSpace&&a.enable(7),O.clearcoat&&a.enable(8),O.iridescence&&a.enable(9),O.alphaTest&&a.enable(10),O.vertexColors&&a.enable(11),O.vertexAlphas&&a.enable(12),O.vertexUv1s&&a.enable(13),O.vertexUv2s&&a.enable(14),O.vertexUv3s&&a.enable(15),O.vertexTangents&&a.enable(16),O.anisotropy&&a.enable(17),O.alphaHash&&a.enable(18),O.batching&&a.enable(19),x.push(a.mask),a.disableAll(),O.fog&&a.enable(0),O.useFog&&a.enable(1),O.flatShading&&a.enable(2),O.logarithmicDepthBuffer&&a.enable(3),O.skinning&&a.enable(4),O.morphTargets&&a.enable(5),O.morphNormals&&a.enable(6),O.morphColors&&a.enable(7),O.premultipliedAlpha&&a.enable(8),O.shadowMapEnabled&&a.enable(9),O.useLegacyLights&&a.enable(10),O.doubleSided&&a.enable(11),O.flipSided&&a.enable(12),O.useDepthPacking&&a.enable(13),O.dithering&&a.enable(14),O.transmission&&a.enable(15),O.sheen&&a.enable(16),O.opaque&&a.enable(17),O.pointsUvs&&a.enable(18),O.decodeVideoTexture&&a.enable(19),x.push(a.mask)}function S(x){const O=_[x.type];let B;if(O){const H=Xs[O];B=VAt.clone(H.uniforms)}else B=x.uniforms;return B}function R(x,O){let B;for(let H=0,te=d.length;H 0?s.push(E):m.transparent===!0?i.push(E):n.push(E)}function c(h,f,m,_,g,b){const E=o(h,f,m,_,g,b);m.transmission>0?s.unshift(E):m.transparent===!0?i.unshift(E):n.unshift(E)}function d(h,f){n.length>1&&n.sort(h||oIt),s.length>1&&s.sort(f||WC),i.length>1&&i.sort(f||WC)}function u(){for(let h=e,f=t.length;h =r.length?(o=new KC,r.push(o)):o=r[i],o}function n(){t=new WeakMap}return{get:e,dispose:n}}function lIt(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new oe,color:new _t};break;case"SpotLight":n={position:new oe,direction:new oe,color:new _t,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new oe,color:new _t,distance:0,decay:0};break;case"HemisphereLight":n={direction:new oe,skyColor:new _t,groundColor:new _t};break;case"RectAreaLight":n={color:new _t,position:new oe,halfWidth:new oe,halfHeight:new oe};break}return t[e.id]=n,n}}}function cIt(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return t[e.id]=n,n}}}let dIt=0;function uIt(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function pIt(t,e){const n=new lIt,s=cIt(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let u=0;u<9;u++)i.probe.push(new oe);const r=new oe,o=new xt,a=new xt;function c(u,h){let f=0,m=0,_=0;for(let H=0;H<9;H++)i.probe[H].set(0,0,0);let g=0,b=0,E=0,y=0,v=0,S=0,R=0,C=0,A=0,I=0,x=0;u.sort(uIt);const O=h===!0?Math.PI:1;for(let H=0,te=u.length;H 0&&(e.isWebGL2||t.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=We.LTC_FLOAT_1,i.rectAreaLTC2=We.LTC_FLOAT_2):t.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=We.LTC_HALF_1,i.rectAreaLTC2=We.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=f,i.ambient[1]=m,i.ambient[2]=_;const B=i.hash;(B.directionalLength!==g||B.pointLength!==b||B.spotLength!==E||B.rectAreaLength!==y||B.hemiLength!==v||B.numDirectionalShadows!==S||B.numPointShadows!==R||B.numSpotShadows!==C||B.numSpotMaps!==A||B.numLightProbes!==x)&&(i.directional.length=g,i.spot.length=E,i.rectArea.length=y,i.point.length=b,i.hemi.length=v,i.directionalShadow.length=S,i.directionalShadowMap.length=S,i.pointShadow.length=R,i.pointShadowMap.length=R,i.spotShadow.length=C,i.spotShadowMap.length=C,i.directionalShadowMatrix.length=S,i.pointShadowMatrix.length=R,i.spotLightMatrix.length=C+A-I,i.spotLightMap.length=A,i.numSpotLightShadowsWithMaps=I,i.numLightProbes=x,B.directionalLength=g,B.pointLength=b,B.spotLength=E,B.rectAreaLength=y,B.hemiLength=v,B.numDirectionalShadows=S,B.numPointShadows=R,B.numSpotShadows=C,B.numSpotMaps=A,B.numLightProbes=x,i.version=dIt++)}function d(u,h){let f=0,m=0,_=0,g=0,b=0;const E=h.matrixWorldInverse;for(let y=0,v=u.length;y =a.length?(c=new jC(t,e),a.push(c)):c=a[o],c}function i(){n=new WeakMap}return{get:s,dispose:i}}class hIt extends Gs{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=ZRt,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class fIt extends Gs{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const mIt=`void main() { +`+W)}else H!==""?console.warn("THREE.WebGLProgram: Program Info Log:",H):(te===""||k==="")&&(q=!1);q&&(B.diagnostics={runnable:$,programLog:H,vertexShader:{log:te,prefix:b},fragmentShader:{log:k,prefix:E}})}i.deleteShader(R),i.deleteShader(C),I=new Rd(i,g),x=KMt(i,g)}let I;this.getUniforms=function(){return I===void 0&&A(this),I};let x;this.getAttributes=function(){return x===void 0&&A(this),x};let O=n.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return O===!1&&(O=i.getProgramParameter(g,GMt)),O},this.destroy=function(){s.releaseStatesOfProgram(this),i.deleteProgram(g),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=VMt++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=R,this.fragmentShader=C,this}let oIt=0;class aIt{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const n=e.vertexShader,s=e.fragmentShader,i=this._getShaderStage(n),r=this._getShaderStage(s),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(e){const n=this.materialCache.get(e);for(const s of n)s.usedTimes--,s.usedTimes===0&&this.shaderCache.delete(s.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const n=this.materialCache;let s=n.get(e);return s===void 0&&(s=new Set,n.set(e,s)),s}_getShaderStage(e){const n=this.shaderCache;let s=n.get(e);return s===void 0&&(s=new lIt(e),n.set(e,s)),s}}class lIt{constructor(e){this.id=oIt++,this.code=e,this.usedTimes=0}}function cIt(t,e,n,s,i,r,o){const a=new VN,c=new aIt,d=[],u=i.isWebGL2,h=i.logarithmicDepthBuffer,f=i.vertexTextures;let m=i.precision;const _={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function g(x){return x===0?"uv":`uv${x}`}function b(x,O,B,H,te){const k=H.fog,$=te.geometry,q=x.isMeshStandardMaterial?H.environment:null,U=(x.isMeshStandardMaterial?n:e).get(x.envMap||q),W=U&&U.mapping===ep?U.image.height:null,ne=_[x.type];x.precision!==null&&(m=i.getMaxPrecision(x.precision),m!==x.precision&&console.warn("THREE.WebGLProgram.getParameters:",x.precision,"not supported, using",m,"instead."));const le=$.morphAttributes.position||$.morphAttributes.normal||$.morphAttributes.color,me=le!==void 0?le.length:0;let Se=0;$.morphAttributes.position!==void 0&&(Se=1),$.morphAttributes.normal!==void 0&&(Se=2),$.morphAttributes.color!==void 0&&(Se=3);let de,Ee,Me,ke;if(ne){const En=Xs[ne];de=En.vertexShader,Ee=En.fragmentShader}else de=x.vertexShader,Ee=x.fragmentShader,c.update(x),Me=c.getVertexShaderID(x),ke=c.getFragmentShaderID(x);const Z=t.getRenderTarget(),he=te.isInstancedMesh===!0,_e=te.isBatchedMesh===!0,we=!!x.map,Ue=!!x.matcap,N=!!U,z=!!x.aoMap,Y=!!x.lightMap,ce=!!x.bumpMap,re=!!x.normalMap,xe=!!x.displacementMap,Ne=!!x.emissiveMap,ie=!!x.metalnessMap,Re=!!x.roughnessMap,ge=x.anisotropy>0,De=x.clearcoat>0,L=x.iridescence>0,M=x.sheen>0,Q=x.transmission>0,ye=ge&&!!x.anisotropyMap,X=De&&!!x.clearcoatMap,se=De&&!!x.clearcoatNormalMap,Ae=De&&!!x.clearcoatRoughnessMap,Ce=L&&!!x.iridescenceMap,Fe=L&&!!x.iridescenceThicknessMap,Ze=M&&!!x.sheenColorMap,ft=M&&!!x.sheenRoughnessMap,Be=!!x.specularMap,pt=!!x.specularColorMap,st=!!x.specularIntensityMap,Ye=Q&&!!x.transmissionMap,nt=Q&&!!x.thicknessMap,je=!!x.gradientMap,yt=!!x.alphaMap,ee=x.alphaTest>0,Qe=!!x.alphaHash,Ve=!!x.extensions,Oe=!!$.attributes.uv1,He=!!$.attributes.uv2,lt=!!$.attributes.uv3;let Nt=pr;return x.toneMapped&&(Z===null||Z.isXRRenderTarget===!0)&&(Nt=t.toneMapping),{isWebGL2:u,shaderID:ne,shaderType:x.type,shaderName:x.name,vertexShader:de,fragmentShader:Ee,defines:x.defines,customVertexShaderID:Me,customFragmentShaderID:ke,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:m,batching:_e,instancing:he,instancingColor:he&&te.instanceColor!==null,supportsVertexTextures:f,outputColorSpace:Z===null?t.outputColorSpace:Z.isXRRenderTarget===!0?Z.texture.colorSpace:wn,map:we,matcap:Ue,envMap:N,envMapMode:N&&U.mapping,envMapCubeUVHeight:W,aoMap:z,lightMap:Y,bumpMap:ce,normalMap:re,displacementMap:f&&xe,emissiveMap:Ne,normalMapObjectSpace:re&&x.normalMapType===rAt,normalMapTangentSpace:re&&x.normalMapType===YE,metalnessMap:ie,roughnessMap:Re,anisotropy:ge,anisotropyMap:ye,clearcoat:De,clearcoatMap:X,clearcoatNormalMap:se,clearcoatRoughnessMap:Ae,iridescence:L,iridescenceMap:Ce,iridescenceThicknessMap:Fe,sheen:M,sheenColorMap:Ze,sheenRoughnessMap:ft,specularMap:Be,specularColorMap:pt,specularIntensityMap:st,transmission:Q,transmissionMap:Ye,thicknessMap:nt,gradientMap:je,opaque:x.transparent===!1&&x.blending===jo,alphaMap:yt,alphaTest:ee,alphaHash:Qe,combine:x.combine,mapUv:we&&g(x.map.channel),aoMapUv:z&&g(x.aoMap.channel),lightMapUv:Y&&g(x.lightMap.channel),bumpMapUv:ce&&g(x.bumpMap.channel),normalMapUv:re&&g(x.normalMap.channel),displacementMapUv:xe&&g(x.displacementMap.channel),emissiveMapUv:Ne&&g(x.emissiveMap.channel),metalnessMapUv:ie&&g(x.metalnessMap.channel),roughnessMapUv:Re&&g(x.roughnessMap.channel),anisotropyMapUv:ye&&g(x.anisotropyMap.channel),clearcoatMapUv:X&&g(x.clearcoatMap.channel),clearcoatNormalMapUv:se&&g(x.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ae&&g(x.clearcoatRoughnessMap.channel),iridescenceMapUv:Ce&&g(x.iridescenceMap.channel),iridescenceThicknessMapUv:Fe&&g(x.iridescenceThicknessMap.channel),sheenColorMapUv:Ze&&g(x.sheenColorMap.channel),sheenRoughnessMapUv:ft&&g(x.sheenRoughnessMap.channel),specularMapUv:Be&&g(x.specularMap.channel),specularColorMapUv:pt&&g(x.specularColorMap.channel),specularIntensityMapUv:st&&g(x.specularIntensityMap.channel),transmissionMapUv:Ye&&g(x.transmissionMap.channel),thicknessMapUv:nt&&g(x.thicknessMap.channel),alphaMapUv:yt&&g(x.alphaMap.channel),vertexTangents:!!$.attributes.tangent&&(re||ge),vertexColors:x.vertexColors,vertexAlphas:x.vertexColors===!0&&!!$.attributes.color&&$.attributes.color.itemSize===4,vertexUv1s:Oe,vertexUv2s:He,vertexUv3s:lt,pointsUvs:te.isPoints===!0&&!!$.attributes.uv&&(we||yt),fog:!!k,useFog:x.fog===!0,fogExp2:k&&k.isFogExp2,flatShading:x.flatShading===!0,sizeAttenuation:x.sizeAttenuation===!0,logarithmicDepthBuffer:h,skinning:te.isSkinnedMesh===!0,morphTargets:$.morphAttributes.position!==void 0,morphNormals:$.morphAttributes.normal!==void 0,morphColors:$.morphAttributes.color!==void 0,morphTargetsCount:me,morphTextureStride:Se,numDirLights:O.directional.length,numPointLights:O.point.length,numSpotLights:O.spot.length,numSpotLightMaps:O.spotLightMap.length,numRectAreaLights:O.rectArea.length,numHemiLights:O.hemi.length,numDirLightShadows:O.directionalShadowMap.length,numPointLightShadows:O.pointShadowMap.length,numSpotLightShadows:O.spotShadowMap.length,numSpotLightShadowsWithMaps:O.numSpotLightShadowsWithMaps,numLightProbes:O.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:x.dithering,shadowMapEnabled:t.shadowMap.enabled&&B.length>0,shadowMapType:t.shadowMap.type,toneMapping:Nt,useLegacyLights:t._useLegacyLights,decodeVideoTexture:we&&x.map.isVideoTexture===!0&&Ut.getTransfer(x.map.colorSpace)===Kt,premultipliedAlpha:x.premultipliedAlpha,doubleSided:x.side===Js,flipSided:x.side===$n,useDepthPacking:x.depthPacking>=0,depthPacking:x.depthPacking||0,index0AttributeName:x.index0AttributeName,extensionDerivatives:Ve&&x.extensions.derivatives===!0,extensionFragDepth:Ve&&x.extensions.fragDepth===!0,extensionDrawBuffers:Ve&&x.extensions.drawBuffers===!0,extensionShaderTextureLOD:Ve&&x.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:u||s.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||s.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||s.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:s.has("KHR_parallel_shader_compile"),customProgramCacheKey:x.customProgramCacheKey()}}function E(x){const O=[];if(x.shaderID?O.push(x.shaderID):(O.push(x.customVertexShaderID),O.push(x.customFragmentShaderID)),x.defines!==void 0)for(const B in x.defines)O.push(B),O.push(x.defines[B]);return x.isRawShaderMaterial===!1&&(y(O,x),v(O,x),O.push(t.outputColorSpace)),O.push(x.customProgramCacheKey),O.join()}function y(x,O){x.push(O.precision),x.push(O.outputColorSpace),x.push(O.envMapMode),x.push(O.envMapCubeUVHeight),x.push(O.mapUv),x.push(O.alphaMapUv),x.push(O.lightMapUv),x.push(O.aoMapUv),x.push(O.bumpMapUv),x.push(O.normalMapUv),x.push(O.displacementMapUv),x.push(O.emissiveMapUv),x.push(O.metalnessMapUv),x.push(O.roughnessMapUv),x.push(O.anisotropyMapUv),x.push(O.clearcoatMapUv),x.push(O.clearcoatNormalMapUv),x.push(O.clearcoatRoughnessMapUv),x.push(O.iridescenceMapUv),x.push(O.iridescenceThicknessMapUv),x.push(O.sheenColorMapUv),x.push(O.sheenRoughnessMapUv),x.push(O.specularMapUv),x.push(O.specularColorMapUv),x.push(O.specularIntensityMapUv),x.push(O.transmissionMapUv),x.push(O.thicknessMapUv),x.push(O.combine),x.push(O.fogExp2),x.push(O.sizeAttenuation),x.push(O.morphTargetsCount),x.push(O.morphAttributeCount),x.push(O.numDirLights),x.push(O.numPointLights),x.push(O.numSpotLights),x.push(O.numSpotLightMaps),x.push(O.numHemiLights),x.push(O.numRectAreaLights),x.push(O.numDirLightShadows),x.push(O.numPointLightShadows),x.push(O.numSpotLightShadows),x.push(O.numSpotLightShadowsWithMaps),x.push(O.numLightProbes),x.push(O.shadowMapType),x.push(O.toneMapping),x.push(O.numClippingPlanes),x.push(O.numClipIntersection),x.push(O.depthPacking)}function v(x,O){a.disableAll(),O.isWebGL2&&a.enable(0),O.supportsVertexTextures&&a.enable(1),O.instancing&&a.enable(2),O.instancingColor&&a.enable(3),O.matcap&&a.enable(4),O.envMap&&a.enable(5),O.normalMapObjectSpace&&a.enable(6),O.normalMapTangentSpace&&a.enable(7),O.clearcoat&&a.enable(8),O.iridescence&&a.enable(9),O.alphaTest&&a.enable(10),O.vertexColors&&a.enable(11),O.vertexAlphas&&a.enable(12),O.vertexUv1s&&a.enable(13),O.vertexUv2s&&a.enable(14),O.vertexUv3s&&a.enable(15),O.vertexTangents&&a.enable(16),O.anisotropy&&a.enable(17),O.alphaHash&&a.enable(18),O.batching&&a.enable(19),x.push(a.mask),a.disableAll(),O.fog&&a.enable(0),O.useFog&&a.enable(1),O.flatShading&&a.enable(2),O.logarithmicDepthBuffer&&a.enable(3),O.skinning&&a.enable(4),O.morphTargets&&a.enable(5),O.morphNormals&&a.enable(6),O.morphColors&&a.enable(7),O.premultipliedAlpha&&a.enable(8),O.shadowMapEnabled&&a.enable(9),O.useLegacyLights&&a.enable(10),O.doubleSided&&a.enable(11),O.flipSided&&a.enable(12),O.useDepthPacking&&a.enable(13),O.dithering&&a.enable(14),O.transmission&&a.enable(15),O.sheen&&a.enable(16),O.opaque&&a.enable(17),O.pointsUvs&&a.enable(18),O.decodeVideoTexture&&a.enable(19),x.push(a.mask)}function S(x){const O=_[x.type];let B;if(O){const H=Xs[O];B=YAt.clone(H.uniforms)}else B=x.uniforms;return B}function R(x,O){let B;for(let H=0,te=d.length;H 0?s.push(E):m.transparent===!0?i.push(E):n.push(E)}function c(h,f,m,_,g,b){const E=o(h,f,m,_,g,b);m.transmission>0?s.unshift(E):m.transparent===!0?i.unshift(E):n.unshift(E)}function d(h,f){n.length>1&&n.sort(h||uIt),s.length>1&&s.sort(f||WC),i.length>1&&i.sort(f||WC)}function u(){for(let h=e,f=t.length;h =r.length?(o=new KC,r.push(o)):o=r[i],o}function n(){t=new WeakMap}return{get:e,dispose:n}}function _It(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new oe,color:new _t};break;case"SpotLight":n={position:new oe,direction:new oe,color:new _t,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new oe,color:new _t,distance:0,decay:0};break;case"HemisphereLight":n={direction:new oe,skyColor:new _t,groundColor:new _t};break;case"RectAreaLight":n={color:new _t,position:new oe,halfWidth:new oe,halfHeight:new oe};break}return t[e.id]=n,n}}}function hIt(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return t[e.id]=n,n}}}let fIt=0;function mIt(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function gIt(t,e){const n=new _It,s=hIt(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let u=0;u<9;u++)i.probe.push(new oe);const r=new oe,o=new xt,a=new xt;function c(u,h){let f=0,m=0,_=0;for(let H=0;H<9;H++)i.probe[H].set(0,0,0);let g=0,b=0,E=0,y=0,v=0,S=0,R=0,C=0,A=0,I=0,x=0;u.sort(mIt);const O=h===!0?Math.PI:1;for(let H=0,te=u.length;H 0&&(e.isWebGL2||t.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=We.LTC_FLOAT_1,i.rectAreaLTC2=We.LTC_FLOAT_2):t.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=We.LTC_HALF_1,i.rectAreaLTC2=We.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=f,i.ambient[1]=m,i.ambient[2]=_;const B=i.hash;(B.directionalLength!==g||B.pointLength!==b||B.spotLength!==E||B.rectAreaLength!==y||B.hemiLength!==v||B.numDirectionalShadows!==S||B.numPointShadows!==R||B.numSpotShadows!==C||B.numSpotMaps!==A||B.numLightProbes!==x)&&(i.directional.length=g,i.spot.length=E,i.rectArea.length=y,i.point.length=b,i.hemi.length=v,i.directionalShadow.length=S,i.directionalShadowMap.length=S,i.pointShadow.length=R,i.pointShadowMap.length=R,i.spotShadow.length=C,i.spotShadowMap.length=C,i.directionalShadowMatrix.length=S,i.pointShadowMatrix.length=R,i.spotLightMatrix.length=C+A-I,i.spotLightMap.length=A,i.numSpotLightShadowsWithMaps=I,i.numLightProbes=x,B.directionalLength=g,B.pointLength=b,B.spotLength=E,B.rectAreaLength=y,B.hemiLength=v,B.numDirectionalShadows=S,B.numPointShadows=R,B.numSpotShadows=C,B.numSpotMaps=A,B.numLightProbes=x,i.version=fIt++)}function d(u,h){let f=0,m=0,_=0,g=0,b=0;const E=h.matrixWorldInverse;for(let y=0,v=u.length;y =a.length?(c=new jC(t,e),a.push(c)):c=a[o],c}function i(){n=new WeakMap}return{get:s,dispose:i}}class EIt extends Gs{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=sAt,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class yIt extends Gs{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const vIt=`void main() { gl_Position = vec4( position, 1.0 ); -}`,gIt=`uniform sampler2D shadow_pass; +}`,SIt=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3972,12 +3972,12 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function bIt(t,e,n){let s=new jE;const i=new At,r=new At,o=new $t,a=new hIt({depthPacking:JRt}),c=new fIt,d={},u=n.maxTextureSize,h={[Li]:$n,[$n]:Li,[Js]:Js},f=new ro({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:mIt,fragmentShader:gIt}),m=f.clone();m.defines.HORIZONTAL_PASS=1;const _=new _i;_.setAttribute("position",new Bn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const g=new Fn(_,f),b=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=xN;let E=this.type;this.render=function(R,C,A){if(b.enabled===!1||b.autoUpdate===!1&&b.needsUpdate===!1||R.length===0)return;const I=t.getRenderTarget(),x=t.getActiveCubeFace(),O=t.getActiveMipmapLevel(),B=t.state;B.setBlending(ur),B.buffers.color.setClear(1,1,1,1),B.buffers.depth.setTest(!0),B.setScissorTest(!1);const H=E!==Ci&&this.type===Ci,te=E===Ci&&this.type!==Ci;for(let k=0,$=R.length;k<$;k++){const q=R[k],U=q.shadow;if(U===void 0){console.warn("THREE.WebGLShadowMap:",q,"has no shadow.");continue}if(U.autoUpdate===!1&&U.needsUpdate===!1)continue;i.copy(U.mapSize);const W=U.getFrameExtents();if(i.multiply(W),r.copy(U.mapSize),(i.x>u||i.y>u)&&(i.x>u&&(r.x=Math.floor(u/W.x),i.x=r.x*W.x,U.mapSize.x=r.x),i.y>u&&(r.y=Math.floor(u/W.y),i.y=r.y*W.y,U.mapSize.y=r.y)),U.map===null||H===!0||te===!0){const le=this.type!==Ci?{minFilter:gn,magFilter:gn}:{};U.map!==null&&U.map.dispose(),U.map=new io(i.x,i.y,le),U.map.texture.name=q.name+".shadowMap",U.camera.updateProjectionMatrix()}t.setRenderTarget(U.map),t.clear();const ne=U.getViewportCount();for(let le=0;le 0||C.map&&C.alphaTest>0){const B=x.uuid,H=C.uuid;let te=d[B];te===void 0&&(te={},d[B]=te);let k=te[H];k===void 0&&(k=x.clone(),te[H]=k),x=k}if(x.visible=C.visible,x.wireframe=C.wireframe,I===Ci?x.side=C.shadowSide!==null?C.shadowSide:C.side:x.side=C.shadowSide!==null?C.shadowSide:h[C.side],x.alphaMap=C.alphaMap,x.alphaTest=C.alphaTest,x.map=C.map,x.clipShadows=C.clipShadows,x.clippingPlanes=C.clippingPlanes,x.clipIntersection=C.clipIntersection,x.displacementMap=C.displacementMap,x.displacementScale=C.displacementScale,x.displacementBias=C.displacementBias,x.wireframeLinewidth=C.wireframeLinewidth,x.linewidth=C.linewidth,A.isPointLight===!0&&x.isMeshDistanceMaterial===!0){const B=t.properties.get(x);B.light=A}return x}function S(R,C,A,I,x){if(R.visible===!1)return;if(R.layers.test(C.layers)&&(R.isMesh||R.isLine||R.isPoints)&&(R.castShadow||R.receiveShadow&&x===Ci)&&(!R.frustumCulled||s.intersectsObject(R))){R.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,R.matrixWorld);const H=e.update(R),te=R.material;if(Array.isArray(te)){const k=H.groups;for(let $=0,q=k.length;$ =1):le.indexOf("OpenGL ES")!==-1&&(ne=parseFloat(/^OpenGL ES (\d)/.exec(le)[1]),W=ne>=2);let me=null,Se={};const de=t.getParameter(t.SCISSOR_BOX),Ee=t.getParameter(t.VIEWPORT),Me=new $t().fromArray(de),ke=new $t().fromArray(Ee);function Z(ee,Qe,Ve,Oe){const He=new Uint8Array(4),lt=t.createTexture();t.bindTexture(ee,lt),t.texParameteri(ee,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(ee,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let Nt=0;Nt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap;let g;const b=new WeakMap;let E=!1;try{E=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function y(L,M){return E?new OffscreenCanvas(L,M):Yl("canvas")}function v(L,M,Q,ye){let X=1;if((L.width>ye||L.height>ye)&&(X=ye/Math.max(L.width,L.height)),X<1||M===!0)if(typeof HTMLImageElement<"u"&&L instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&L instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&L instanceof ImageBitmap){const se=M?lu:Math.floor,Ae=se(X*L.width),Ce=se(X*L.height);g===void 0&&(g=y(Ae,Ce));const Fe=Q?y(Ae,Ce):g;return Fe.width=Ae,Fe.height=Ce,Fe.getContext("2d").drawImage(L,0,0,Ae,Ce),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+L.width+"x"+L.height+") to ("+Ae+"x"+Ce+")."),Fe}else return"data"in L&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+L.width+"x"+L.height+")."),L;return L}function S(L){return sb(L.width)&&sb(L.height)}function R(L){return a?!1:L.wrapS!==us||L.wrapT!==us||L.minFilter!==gn&&L.minFilter!==zn}function C(L,M){return L.generateMipmaps&&M&&L.minFilter!==gn&&L.minFilter!==zn}function A(L){t.generateMipmap(L)}function I(L,M,Q,ye,X=!1){if(a===!1)return M;if(L!==null){if(t[L]!==void 0)return t[L];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+L+"'")}let se=M;if(M===t.RED&&(Q===t.FLOAT&&(se=t.R32F),Q===t.HALF_FLOAT&&(se=t.R16F),Q===t.UNSIGNED_BYTE&&(se=t.R8)),M===t.RED_INTEGER&&(Q===t.UNSIGNED_BYTE&&(se=t.R8UI),Q===t.UNSIGNED_SHORT&&(se=t.R16UI),Q===t.UNSIGNED_INT&&(se=t.R32UI),Q===t.BYTE&&(se=t.R8I),Q===t.SHORT&&(se=t.R16I),Q===t.INT&&(se=t.R32I)),M===t.RG&&(Q===t.FLOAT&&(se=t.RG32F),Q===t.HALF_FLOAT&&(se=t.RG16F),Q===t.UNSIGNED_BYTE&&(se=t.RG8)),M===t.RGBA){const Ae=X?iu:Ut.getTransfer(ye);Q===t.FLOAT&&(se=t.RGBA32F),Q===t.HALF_FLOAT&&(se=t.RGBA16F),Q===t.UNSIGNED_BYTE&&(se=Ae===Kt?t.SRGB8_ALPHA8:t.RGBA8),Q===t.UNSIGNED_SHORT_4_4_4_4&&(se=t.RGBA4),Q===t.UNSIGNED_SHORT_5_5_5_1&&(se=t.RGB5_A1)}return(se===t.R16F||se===t.R32F||se===t.RG16F||se===t.RG32F||se===t.RGBA16F||se===t.RGBA32F)&&e.get("EXT_color_buffer_float"),se}function x(L,M,Q){return C(L,Q)===!0||L.isFramebufferTexture&&L.minFilter!==gn&&L.minFilter!==zn?Math.log2(Math.max(M.width,M.height))+1:L.mipmaps!==void 0&&L.mipmaps.length>0?L.mipmaps.length:L.isCompressedTexture&&Array.isArray(L.image)?M.mipmaps.length:1}function O(L){return L===gn||L===Jg||L===wd?t.NEAREST:t.LINEAR}function B(L){const M=L.target;M.removeEventListener("dispose",B),te(M),M.isVideoTexture&&_.delete(M)}function H(L){const M=L.target;M.removeEventListener("dispose",H),$(M)}function te(L){const M=s.get(L);if(M.__webglInit===void 0)return;const Q=L.source,ye=b.get(Q);if(ye){const X=ye[M.__cacheKey];X.usedTimes--,X.usedTimes===0&&k(L),Object.keys(ye).length===0&&b.delete(Q)}s.remove(L)}function k(L){const M=s.get(L);t.deleteTexture(M.__webglTexture);const Q=L.source,ye=b.get(Q);delete ye[M.__cacheKey],o.memory.textures--}function $(L){const M=L.texture,Q=s.get(L),ye=s.get(M);if(ye.__webglTexture!==void 0&&(t.deleteTexture(ye.__webglTexture),o.memory.textures--),L.depthTexture&&L.depthTexture.dispose(),L.isWebGLCubeRenderTarget)for(let X=0;X<6;X++){if(Array.isArray(Q.__webglFramebuffer[X]))for(let se=0;se =c&&console.warn("THREE.WebGLTextures: Trying to use "+L+" texture units while this GPU supports only "+c),q+=1,L}function ne(L){const M=[];return M.push(L.wrapS),M.push(L.wrapT),M.push(L.wrapR||0),M.push(L.magFilter),M.push(L.minFilter),M.push(L.anisotropy),M.push(L.internalFormat),M.push(L.format),M.push(L.type),M.push(L.generateMipmaps),M.push(L.premultiplyAlpha),M.push(L.flipY),M.push(L.unpackAlignment),M.push(L.colorSpace),M.join()}function le(L,M){const Q=s.get(L);if(L.isVideoTexture&&ge(L),L.isRenderTargetTexture===!1&&L.version>0&&Q.__version!==L.version){const ye=L.image;if(ye===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(ye.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{_e(Q,L,M);return}}n.bindTexture(t.TEXTURE_2D,Q.__webglTexture,t.TEXTURE0+M)}function me(L,M){const Q=s.get(L);if(L.version>0&&Q.__version!==L.version){_e(Q,L,M);return}n.bindTexture(t.TEXTURE_2D_ARRAY,Q.__webglTexture,t.TEXTURE0+M)}function Se(L,M){const Q=s.get(L);if(L.version>0&&Q.__version!==L.version){_e(Q,L,M);return}n.bindTexture(t.TEXTURE_3D,Q.__webglTexture,t.TEXTURE0+M)}function de(L,M){const Q=s.get(L);if(L.version>0&&Q.__version!==L.version){we(Q,L,M);return}n.bindTexture(t.TEXTURE_CUBE_MAP,Q.__webglTexture,t.TEXTURE0+M)}const Ee={[pa]:t.REPEAT,[us]:t.CLAMP_TO_EDGE,[su]:t.MIRRORED_REPEAT},Me={[gn]:t.NEAREST,[Jg]:t.NEAREST_MIPMAP_NEAREST,[wd]:t.NEAREST_MIPMAP_LINEAR,[zn]:t.LINEAR,[wN]:t.LINEAR_MIPMAP_NEAREST,[so]:t.LINEAR_MIPMAP_LINEAR},ke={[tAt]:t.NEVER,[aAt]:t.ALWAYS,[nAt]:t.LESS,[PN]:t.LEQUAL,[sAt]:t.EQUAL,[oAt]:t.GEQUAL,[iAt]:t.GREATER,[rAt]:t.NOTEQUAL};function Z(L,M,Q){if(Q?(t.texParameteri(L,t.TEXTURE_WRAP_S,Ee[M.wrapS]),t.texParameteri(L,t.TEXTURE_WRAP_T,Ee[M.wrapT]),(L===t.TEXTURE_3D||L===t.TEXTURE_2D_ARRAY)&&t.texParameteri(L,t.TEXTURE_WRAP_R,Ee[M.wrapR]),t.texParameteri(L,t.TEXTURE_MAG_FILTER,Me[M.magFilter]),t.texParameteri(L,t.TEXTURE_MIN_FILTER,Me[M.minFilter])):(t.texParameteri(L,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(L,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),(L===t.TEXTURE_3D||L===t.TEXTURE_2D_ARRAY)&&t.texParameteri(L,t.TEXTURE_WRAP_R,t.CLAMP_TO_EDGE),(M.wrapS!==us||M.wrapT!==us)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(L,t.TEXTURE_MAG_FILTER,O(M.magFilter)),t.texParameteri(L,t.TEXTURE_MIN_FILTER,O(M.minFilter)),M.minFilter!==gn&&M.minFilter!==zn&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),M.compareFunction&&(t.texParameteri(L,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(L,t.TEXTURE_COMPARE_FUNC,ke[M.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){const ye=e.get("EXT_texture_filter_anisotropic");if(M.magFilter===gn||M.minFilter!==wd&&M.minFilter!==so||M.type===Ai&&e.has("OES_texture_float_linear")===!1||a===!1&&M.type===ql&&e.has("OES_texture_half_float_linear")===!1)return;(M.anisotropy>1||s.get(M).__currentAnisotropy)&&(t.texParameterf(L,ye.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(M.anisotropy,i.getMaxAnisotropy())),s.get(M).__currentAnisotropy=M.anisotropy)}}function he(L,M){let Q=!1;L.__webglInit===void 0&&(L.__webglInit=!0,M.addEventListener("dispose",B));const ye=M.source;let X=b.get(ye);X===void 0&&(X={},b.set(ye,X));const se=ne(M);if(se!==L.__cacheKey){X[se]===void 0&&(X[se]={texture:t.createTexture(),usedTimes:0},o.memory.textures++,Q=!0),X[se].usedTimes++;const Ae=X[L.__cacheKey];Ae!==void 0&&(X[L.__cacheKey].usedTimes--,Ae.usedTimes===0&&k(M)),L.__cacheKey=se,L.__webglTexture=X[se].texture}return Q}function _e(L,M,Q){let ye=t.TEXTURE_2D;(M.isDataArrayTexture||M.isCompressedArrayTexture)&&(ye=t.TEXTURE_2D_ARRAY),M.isData3DTexture&&(ye=t.TEXTURE_3D);const X=he(L,M),se=M.source;n.bindTexture(ye,L.__webglTexture,t.TEXTURE0+Q);const Ae=s.get(se);if(se.version!==Ae.__version||X===!0){n.activeTexture(t.TEXTURE0+Q);const Ce=Ut.getPrimaries(Ut.workingColorSpace),Fe=M.colorSpace===_s?null:Ut.getPrimaries(M.colorSpace),Ze=M.colorSpace===_s||Ce===Fe?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,M.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,M.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,M.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ze);const ft=R(M)&&S(M.image)===!1;let Be=v(M.image,ft,!1,u);Be=De(M,Be);const pt=S(Be)||a,st=r.convert(M.format,M.colorSpace);let Ye=r.convert(M.type),nt=I(M.internalFormat,st,Ye,M.colorSpace,M.isVideoTexture);Z(ye,M,pt);let je;const yt=M.mipmaps,ee=a&&M.isVideoTexture!==!0&&nt!==kN,Qe=Ae.__version===void 0||X===!0,Ve=x(M,Be,pt);if(M.isDepthTexture)nt=t.DEPTH_COMPONENT,a?M.type===Ai?nt=t.DEPTH_COMPONENT32F:M.type===ar?nt=t.DEPTH_COMPONENT24:M.type===Kr?nt=t.DEPTH24_STENCIL8:nt=t.DEPTH_COMPONENT16:M.type===Ai&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),M.format===jr&&nt===t.DEPTH_COMPONENT&&M.type!==$E&&M.type!==ar&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),M.type=ar,Ye=r.convert(M.type)),M.format===_a&&nt===t.DEPTH_COMPONENT&&(nt=t.DEPTH_STENCIL,M.type!==Kr&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),M.type=Kr,Ye=r.convert(M.type))),Qe&&(ee?n.texStorage2D(t.TEXTURE_2D,1,nt,Be.width,Be.height):n.texImage2D(t.TEXTURE_2D,0,nt,Be.width,Be.height,0,st,Ye,null));else if(M.isDataTexture)if(yt.length>0&&pt){ee&&Qe&&n.texStorage2D(t.TEXTURE_2D,Ve,nt,yt[0].width,yt[0].height);for(let Oe=0,He=yt.length;Oe >=1,He>>=1}}else if(yt.length>0&&pt){ee&&Qe&&n.texStorage2D(t.TEXTURE_2D,Ve,nt,yt[0].width,yt[0].height);for(let Oe=0,He=yt.length;Oe 0&&Qe++,n.texStorage2D(t.TEXTURE_CUBE_MAP,Qe,je,Be[0].width,Be[0].height));for(let Oe=0;Oe<6;Oe++)if(ft){yt?n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+Oe,0,0,0,Be[Oe].width,Be[Oe].height,Ye,nt,Be[Oe].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+Oe,0,je,Be[Oe].width,Be[Oe].height,0,Ye,nt,Be[Oe].data);for(let He=0;He >se),Be=Math.max(1,M.height>>se);X===t.TEXTURE_3D||X===t.TEXTURE_2D_ARRAY?n.texImage3D(X,se,Fe,ft,Be,M.depth,0,Ae,Ce,null):n.texImage2D(X,se,Fe,ft,Be,0,Ae,Ce,null)}n.bindFramebuffer(t.FRAMEBUFFER,L),Re(M)?f.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,ye,X,s.get(Q).__webglTexture,0,ie(M)):(X===t.TEXTURE_2D||X>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&X<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,ye,X,s.get(Q).__webglTexture,se),n.bindFramebuffer(t.FRAMEBUFFER,null)}function N(L,M,Q){if(t.bindRenderbuffer(t.RENDERBUFFER,L),M.depthBuffer&&!M.stencilBuffer){let ye=a===!0?t.DEPTH_COMPONENT24:t.DEPTH_COMPONENT16;if(Q||Re(M)){const X=M.depthTexture;X&&X.isDepthTexture&&(X.type===Ai?ye=t.DEPTH_COMPONENT32F:X.type===ar&&(ye=t.DEPTH_COMPONENT24));const se=ie(M);Re(M)?f.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,se,ye,M.width,M.height):t.renderbufferStorageMultisample(t.RENDERBUFFER,se,ye,M.width,M.height)}else t.renderbufferStorage(t.RENDERBUFFER,ye,M.width,M.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,L)}else if(M.depthBuffer&&M.stencilBuffer){const ye=ie(M);Q&&Re(M)===!1?t.renderbufferStorageMultisample(t.RENDERBUFFER,ye,t.DEPTH24_STENCIL8,M.width,M.height):Re(M)?f.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,ye,t.DEPTH24_STENCIL8,M.width,M.height):t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,M.width,M.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,L)}else{const ye=M.isWebGLMultipleRenderTargets===!0?M.texture:[M.texture];for(let X=0;X 0){Q.__webglFramebuffer[Ce]=[];for(let Fe=0;Fe 0){Q.__webglFramebuffer=[];for(let Ce=0;Ce 0&&Re(L)===!1){const Ce=se?M:[M];Q.__webglMultisampledFramebuffer=t.createFramebuffer(),Q.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,Q.__webglMultisampledFramebuffer);for(let Fe=0;Fe 0)for(let Fe=0;Fe 0)for(let Fe=0;Fe 0&&Re(L)===!1){const M=L.isWebGLMultipleRenderTargets?L.texture:[L.texture],Q=L.width,ye=L.height;let X=t.COLOR_BUFFER_BIT;const se=[],Ae=L.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,Ce=s.get(L),Fe=L.isWebGLMultipleRenderTargets===!0;if(Fe)for(let Ze=0;Ze 0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&M.__useRenderToTexture!==!1}function ge(L){const M=o.render.frame;_.get(L)!==M&&(_.set(L,M),L.update())}function De(L,M){const Q=L.colorSpace,ye=L.format,X=L.type;return L.isCompressedTexture===!0||L.isVideoTexture===!0||L.format===nb||Q!==wn&&Q!==_s&&(Ut.getTransfer(Q)===Kt?a===!1?e.has("EXT_sRGB")===!0&&ye===ps?(L.format=nb,L.minFilter=zn,L.generateMipmaps=!1):M=FN.sRGBToLinear(M):(ye!==ps||X!==_r)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",Q)),M}this.allocateTextureUnit=W,this.resetTextureUnits=U,this.setTexture2D=le,this.setTexture2DArray=me,this.setTexture3D=Se,this.setTextureCube=de,this.rebindTextures=ce,this.setupRenderTarget=re,this.updateRenderTargetMipmap=xe,this.updateMultisampleRenderTarget=Ne,this.setupDepthRenderbuffer=Y,this.setupFrameBufferTexture=Ue,this.useMultisampledRTT=Re}function vIt(t,e,n){const s=n.isWebGL2;function i(r,o=_s){let a;const c=Ut.getTransfer(o);if(r===_r)return t.UNSIGNED_BYTE;if(r===AN)return t.UNSIGNED_SHORT_4_4_4_4;if(r===NN)return t.UNSIGNED_SHORT_5_5_5_1;if(r===zRt)return t.BYTE;if(r===HRt)return t.SHORT;if(r===$E)return t.UNSIGNED_SHORT;if(r===RN)return t.INT;if(r===ar)return t.UNSIGNED_INT;if(r===Ai)return t.FLOAT;if(r===ql)return s?t.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(r===qRt)return t.ALPHA;if(r===ps)return t.RGBA;if(r===$Rt)return t.LUMINANCE;if(r===YRt)return t.LUMINANCE_ALPHA;if(r===jr)return t.DEPTH_COMPONENT;if(r===_a)return t.DEPTH_STENCIL;if(r===nb)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(r===WRt)return t.RED;if(r===ON)return t.RED_INTEGER;if(r===KRt)return t.RG;if(r===MN)return t.RG_INTEGER;if(r===IN)return t.RGBA_INTEGER;if(r===Cm||r===wm||r===Rm||r===Am)if(c===Kt)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(r===Cm)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===wm)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===Rm)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===Am)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(r===Cm)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===wm)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===Rm)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===Am)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===L1||r===P1||r===U1||r===F1)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(r===L1)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===P1)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===U1)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===F1)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===kN)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(r===B1||r===G1)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(r===B1)return c===Kt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===G1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===V1||r===z1||r===H1||r===q1||r===$1||r===Y1||r===W1||r===K1||r===j1||r===Q1||r===X1||r===Z1||r===J1||r===eC)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(r===V1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===z1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===H1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===q1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===$1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===Y1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===W1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===K1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===j1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===Q1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===X1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===Z1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===J1)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===eC)return c===Kt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===Nm||r===tC||r===nC)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(r===Nm)return c===Kt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(r===tC)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(r===nC)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(r===jRt||r===sC||r===iC||r===rC)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(r===Nm)return a.COMPRESSED_RED_RGTC1_EXT;if(r===sC)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===iC)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===rC)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return r===Kr?s?t.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):t[r]!==void 0?t[r]:null}return{convert:i}}class SIt extends Un{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Hr extends Jt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const TIt={type:"move"};class Jm{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Hr,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Hr,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new oe,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new oe),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Hr,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new oe,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new oe),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const n=this._hand;if(n)for(const s of e.hand.values())this._getHandJoint(n,s)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,n,s){let i=null,r=null,o=null;const a=this._targetRay,c=this._grip,d=this._hand;if(e&&n.session.visibilityState!=="visible-blurred"){if(d&&e.hand){o=!0;for(const g of e.hand.values()){const b=n.getJointPose(g,s),E=this._getHandJoint(d,g);b!==null&&(E.matrix.fromArray(b.transform.matrix),E.matrix.decompose(E.position,E.rotation,E.scale),E.matrixWorldNeedsUpdate=!0,E.jointRadius=b.radius),E.visible=b!==null}const u=d.joints["index-finger-tip"],h=d.joints["thumb-tip"],f=u.position.distanceTo(h.position),m=.02,_=.005;d.inputState.pinching&&f>m+_?(d.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!d.inputState.pinching&&f<=m-_&&(d.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else c!==null&&e.gripSpace&&(r=n.getPose(e.gripSpace,s),r!==null&&(c.matrix.fromArray(r.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,r.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(r.linearVelocity)):c.hasLinearVelocity=!1,r.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(r.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(i=n.getPose(e.targetRaySpace,s),i===null&&r!==null&&(i=r),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(TIt)))}return a!==null&&(a.visible=i!==null),c!==null&&(c.visible=r!==null),d!==null&&(d.visible=o!==null),this}_getHandJoint(e,n){if(e.joints[n.jointName]===void 0){const s=new Hr;s.matrixAutoUpdate=!1,s.visible=!1,e.joints[n.jointName]=s,e.add(s)}return e.joints[n.jointName]}}class xIt extends Ua{constructor(e,n){super();const s=this;let i=null,r=1,o=null,a="local-floor",c=1,d=null,u=null,h=null,f=null,m=null,_=null;const g=n.getContextAttributes();let b=null,E=null;const y=[],v=[],S=new At;let R=null;const C=new Un;C.layers.enable(1),C.viewport=new $t;const A=new Un;A.layers.enable(2),A.viewport=new $t;const I=[C,A],x=new SIt;x.layers.enable(1),x.layers.enable(2);let O=null,B=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(de){let Ee=y[de];return Ee===void 0&&(Ee=new Jm,y[de]=Ee),Ee.getTargetRaySpace()},this.getControllerGrip=function(de){let Ee=y[de];return Ee===void 0&&(Ee=new Jm,y[de]=Ee),Ee.getGripSpace()},this.getHand=function(de){let Ee=y[de];return Ee===void 0&&(Ee=new Jm,y[de]=Ee),Ee.getHandSpace()};function H(de){const Ee=v.indexOf(de.inputSource);if(Ee===-1)return;const Me=y[Ee];Me!==void 0&&(Me.update(de.inputSource,de.frame,d||o),Me.dispatchEvent({type:de.type,data:de.inputSource}))}function te(){i.removeEventListener("select",H),i.removeEventListener("selectstart",H),i.removeEventListener("selectend",H),i.removeEventListener("squeeze",H),i.removeEventListener("squeezestart",H),i.removeEventListener("squeezeend",H),i.removeEventListener("end",te),i.removeEventListener("inputsourceschange",k);for(let de=0;de =0&&(v[ke]=null,y[ke].disconnect(Me))}for(let Ee=0;Ee =v.length){v.push(Me),ke=he;break}else if(v[he]===null){v[he]=Me,ke=he;break}if(ke===-1)break}const Z=y[ke];Z&&Z.connect(Me)}}const $=new oe,q=new oe;function U(de,Ee,Me){$.setFromMatrixPosition(Ee.matrixWorld),q.setFromMatrixPosition(Me.matrixWorld);const ke=$.distanceTo(q),Z=Ee.projectionMatrix.elements,he=Me.projectionMatrix.elements,_e=Z[14]/(Z[10]-1),we=Z[14]/(Z[10]+1),Ue=(Z[9]+1)/Z[5],N=(Z[9]-1)/Z[5],z=(Z[8]-1)/Z[0],Y=(he[8]+1)/he[0],ce=_e*z,re=_e*Y,xe=ke/(-z+Y),Ne=xe*-z;Ee.matrixWorld.decompose(de.position,de.quaternion,de.scale),de.translateX(Ne),de.translateZ(xe),de.matrixWorld.compose(de.position,de.quaternion,de.scale),de.matrixWorldInverse.copy(de.matrixWorld).invert();const ie=_e+xe,Re=we+xe,ge=ce-Ne,De=re+(ke-Ne),L=Ue*we/Re*ie,M=N*we/Re*ie;de.projectionMatrix.makePerspective(ge,De,L,M,ie,Re),de.projectionMatrixInverse.copy(de.projectionMatrix).invert()}function W(de,Ee){Ee===null?de.matrixWorld.copy(de.matrix):de.matrixWorld.multiplyMatrices(Ee.matrixWorld,de.matrix),de.matrixWorldInverse.copy(de.matrixWorld).invert()}this.updateCamera=function(de){if(i===null)return;x.near=A.near=C.near=de.near,x.far=A.far=C.far=de.far,(O!==x.near||B!==x.far)&&(i.updateRenderState({depthNear:x.near,depthFar:x.far}),O=x.near,B=x.far);const Ee=de.parent,Me=x.cameras;W(x,Ee);for(let ke=0;ke 0&&(b.alphaTest.value=E.alphaTest);const y=e.get(E).envMap;if(y&&(b.envMap.value=y,b.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,b.reflectivity.value=E.reflectivity,b.ior.value=E.ior,b.refractionRatio.value=E.refractionRatio),E.lightMap){b.lightMap.value=E.lightMap;const v=t._useLegacyLights===!0?Math.PI:1;b.lightMapIntensity.value=E.lightMapIntensity*v,n(E.lightMap,b.lightMapTransform)}E.aoMap&&(b.aoMap.value=E.aoMap,b.aoMapIntensity.value=E.aoMapIntensity,n(E.aoMap,b.aoMapTransform))}function o(b,E){b.diffuse.value.copy(E.color),b.opacity.value=E.opacity,E.map&&(b.map.value=E.map,n(E.map,b.mapTransform))}function a(b,E){b.dashSize.value=E.dashSize,b.totalSize.value=E.dashSize+E.gapSize,b.scale.value=E.scale}function c(b,E,y,v){b.diffuse.value.copy(E.color),b.opacity.value=E.opacity,b.size.value=E.size*y,b.scale.value=v*.5,E.map&&(b.map.value=E.map,n(E.map,b.uvTransform)),E.alphaMap&&(b.alphaMap.value=E.alphaMap,n(E.alphaMap,b.alphaMapTransform)),E.alphaTest>0&&(b.alphaTest.value=E.alphaTest)}function d(b,E){b.diffuse.value.copy(E.color),b.opacity.value=E.opacity,b.rotation.value=E.rotation,E.map&&(b.map.value=E.map,n(E.map,b.mapTransform)),E.alphaMap&&(b.alphaMap.value=E.alphaMap,n(E.alphaMap,b.alphaMapTransform)),E.alphaTest>0&&(b.alphaTest.value=E.alphaTest)}function u(b,E){b.specular.value.copy(E.specular),b.shininess.value=Math.max(E.shininess,1e-4)}function h(b,E){E.gradientMap&&(b.gradientMap.value=E.gradientMap)}function f(b,E){b.metalness.value=E.metalness,E.metalnessMap&&(b.metalnessMap.value=E.metalnessMap,n(E.metalnessMap,b.metalnessMapTransform)),b.roughness.value=E.roughness,E.roughnessMap&&(b.roughnessMap.value=E.roughnessMap,n(E.roughnessMap,b.roughnessMapTransform)),e.get(E).envMap&&(b.envMapIntensity.value=E.envMapIntensity)}function m(b,E,y){b.ior.value=E.ior,E.sheen>0&&(b.sheenColor.value.copy(E.sheenColor).multiplyScalar(E.sheen),b.sheenRoughness.value=E.sheenRoughness,E.sheenColorMap&&(b.sheenColorMap.value=E.sheenColorMap,n(E.sheenColorMap,b.sheenColorMapTransform)),E.sheenRoughnessMap&&(b.sheenRoughnessMap.value=E.sheenRoughnessMap,n(E.sheenRoughnessMap,b.sheenRoughnessMapTransform))),E.clearcoat>0&&(b.clearcoat.value=E.clearcoat,b.clearcoatRoughness.value=E.clearcoatRoughness,E.clearcoatMap&&(b.clearcoatMap.value=E.clearcoatMap,n(E.clearcoatMap,b.clearcoatMapTransform)),E.clearcoatRoughnessMap&&(b.clearcoatRoughnessMap.value=E.clearcoatRoughnessMap,n(E.clearcoatRoughnessMap,b.clearcoatRoughnessMapTransform)),E.clearcoatNormalMap&&(b.clearcoatNormalMap.value=E.clearcoatNormalMap,n(E.clearcoatNormalMap,b.clearcoatNormalMapTransform),b.clearcoatNormalScale.value.copy(E.clearcoatNormalScale),E.side===$n&&b.clearcoatNormalScale.value.negate())),E.iridescence>0&&(b.iridescence.value=E.iridescence,b.iridescenceIOR.value=E.iridescenceIOR,b.iridescenceThicknessMinimum.value=E.iridescenceThicknessRange[0],b.iridescenceThicknessMaximum.value=E.iridescenceThicknessRange[1],E.iridescenceMap&&(b.iridescenceMap.value=E.iridescenceMap,n(E.iridescenceMap,b.iridescenceMapTransform)),E.iridescenceThicknessMap&&(b.iridescenceThicknessMap.value=E.iridescenceThicknessMap,n(E.iridescenceThicknessMap,b.iridescenceThicknessMapTransform))),E.transmission>0&&(b.transmission.value=E.transmission,b.transmissionSamplerMap.value=y.texture,b.transmissionSamplerSize.value.set(y.width,y.height),E.transmissionMap&&(b.transmissionMap.value=E.transmissionMap,n(E.transmissionMap,b.transmissionMapTransform)),b.thickness.value=E.thickness,E.thicknessMap&&(b.thicknessMap.value=E.thicknessMap,n(E.thicknessMap,b.thicknessMapTransform)),b.attenuationDistance.value=E.attenuationDistance,b.attenuationColor.value.copy(E.attenuationColor)),E.anisotropy>0&&(b.anisotropyVector.value.set(E.anisotropy*Math.cos(E.anisotropyRotation),E.anisotropy*Math.sin(E.anisotropyRotation)),E.anisotropyMap&&(b.anisotropyMap.value=E.anisotropyMap,n(E.anisotropyMap,b.anisotropyMapTransform))),b.specularIntensity.value=E.specularIntensity,b.specularColor.value.copy(E.specularColor),E.specularColorMap&&(b.specularColorMap.value=E.specularColorMap,n(E.specularColorMap,b.specularColorMapTransform)),E.specularIntensityMap&&(b.specularIntensityMap.value=E.specularIntensityMap,n(E.specularIntensityMap,b.specularIntensityMapTransform))}function _(b,E){E.matcap&&(b.matcap.value=E.matcap)}function g(b,E){const y=e.get(E).light;b.referencePosition.value.setFromMatrixPosition(y.matrixWorld),b.nearDistance.value=y.shadow.camera.near,b.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:s,refreshMaterialUniforms:i}}function wIt(t,e,n,s){let i={},r={},o=[];const a=n.isWebGL2?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0;function c(y,v){const S=v.program;s.uniformBlockBinding(y,S)}function d(y,v){let S=i[y.id];S===void 0&&(_(y),S=u(y),i[y.id]=S,y.addEventListener("dispose",b));const R=v.program;s.updateUBOMapping(y,R);const C=e.render.frame;r[y.id]!==C&&(f(y),r[y.id]=C)}function u(y){const v=h();y.__bindingPointIndex=v;const S=t.createBuffer(),R=y.__size,C=y.usage;return t.bindBuffer(t.UNIFORM_BUFFER,S),t.bufferData(t.UNIFORM_BUFFER,R,C),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.UNIFORM_BUFFER,v,S),S}function h(){for(let y=0;y0){C=S%R;const H=R-C;C!==0&&H-O.boundary<0&&(S+=R-C,x.__offset=S)}S+=O.storage}return C=S%R,C>0&&(S+=R-C),y.__size=S,y.__cache={},this}function g(y){const v={boundary:0,storage:0};return typeof y=="number"?(v.boundary=4,v.storage=4):y.isVector2?(v.boundary=8,v.storage=8):y.isVector3||y.isColor?(v.boundary=16,v.storage=12):y.isVector4?(v.boundary=16,v.storage=16):y.isMatrix3?(v.boundary=48,v.storage=48):y.isMatrix4?(v.boundary=64,v.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),v}function b(y){const v=y.target;v.removeEventListener("dispose",b);const S=o.indexOf(v.__bindingPointIndex);o.splice(S,1),t.deleteBuffer(i[v.id]),delete i[v.id],delete r[v.id]}function E(){for(const y in i)t.deleteBuffer(i[y]);o=[],i={},r={}}return{bind:c,update:d,dispose:E}}class tO{constructor(e={}){const{canvas:n=TAt(),context:s=null,depth:i=!0,stencil:r=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:d=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:h=!1}=e;this.isWebGLRenderer=!0;let f;s!==null?f=s.getContextAttributes().alpha:f=o;const m=new Uint32Array(4),_=new Int32Array(4);let g=null,b=null;const E=[],y=[];this.domElement=n,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=tn,this._useLegacyLights=!1,this.toneMapping=pr,this.toneMappingExposure=1;const v=this;let S=!1,R=0,C=0,A=null,I=-1,x=null;const O=new $t,B=new $t;let H=null;const te=new _t(0);let k=0,$=n.width,q=n.height,U=1,W=null,ne=null;const le=new $t(0,0,$,q),me=new $t(0,0,$,q);let Se=!1;const de=new jE;let Ee=!1,Me=!1,ke=null;const Z=new xt,he=new At,_e=new oe,we={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Ue(){return A===null?U:1}let N=s;function z(F,ue){for(let be=0;be {function Xe(){if(ve.forEach(function(it){Ne.get(it).currentProgram.isReady()&&ve.delete(it)}),ve.size===0){fe(F);return}setTimeout(Xe,10)}Y.get("KHR_parallel_shader_compile")!==null?Xe():setTimeout(Xe,10)})};let Nt=null;function sn(F){Nt&&Nt(F)}function En(){yn.stop()}function Gt(){yn.start()}const yn=new KN;yn.setAnimationLoop(sn),typeof self<"u"&&yn.setContext(self),this.setAnimationLoop=function(F){Nt=F,je.setAnimationLoop(F),F===null?yn.stop():yn.start()},je.addEventListener("sessionstart",En),je.addEventListener("sessionend",Gt),this.render=function(F,ue){if(ue!==void 0&&ue.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(S===!0)return;F.matrixWorldAutoUpdate===!0&&F.updateMatrixWorld(),ue.parent===null&&ue.matrixWorldAutoUpdate===!0&&ue.updateMatrixWorld(),je.enabled===!0&&je.isPresenting===!0&&(je.cameraAutoUpdate===!0&&je.updateCamera(ue),ue=je.getCamera()),F.isScene===!0&&F.onBeforeRender(v,F,ue,A),b=se.get(F,y.length),b.init(),y.push(b),Z.multiplyMatrices(ue.projectionMatrix,ue.matrixWorldInverse),de.setFromProjectionMatrix(Z),Me=this.localClippingEnabled,Ee=Ae.init(this.clippingPlanes,Me),g=X.get(F,E.length),g.init(),E.push(g),rs(F,ue,0,v.sortObjects),g.finish(),v.sortObjects===!0&&g.sort(W,ne),this.info.render.frame++,Ee===!0&&Ae.beginShadows();const be=b.state.shadowsArray;if(Ce.render(be,F,ue),Ee===!0&&Ae.endShadows(),this.info.autoReset===!0&&this.info.reset(),Fe.render(g,F),b.setupLights(v._useLegacyLights),ue.isArrayCamera){const ve=ue.cameras;for(let fe=0,Xe=ve.length;fe 0?b=y[y.length-1]:b=null,E.pop(),E.length>0?g=E[E.length-1]:g=null};function rs(F,ue,be,ve){if(F.visible===!1)return;if(F.layers.test(ue.layers)){if(F.isGroup)be=F.renderOrder;else if(F.isLOD)F.autoUpdate===!0&&F.update(ue);else if(F.isLight)b.pushLight(F),F.castShadow&&b.pushShadow(F);else if(F.isSprite){if(!F.frustumCulled||de.intersectsSprite(F)){ve&&_e.setFromMatrixPosition(F.matrixWorld).applyMatrix4(Z);const it=M.update(F),at=F.material;at.visible&&g.push(F,it,at,be,_e.z,null)}}else if((F.isMesh||F.isLine||F.isPoints)&&(!F.frustumCulled||de.intersectsObject(F))){const it=M.update(F),at=F.material;if(ve&&(F.boundingSphere!==void 0?(F.boundingSphere===null&&F.computeBoundingSphere(),_e.copy(F.boundingSphere.center)):(it.boundingSphere===null&&it.computeBoundingSphere(),_e.copy(it.boundingSphere.center)),_e.applyMatrix4(F.matrixWorld).applyMatrix4(Z)),Array.isArray(at)){const ut=it.groups;for(let Et=0,ht=ut.length;Et 0&&lp(fe,Xe,ue,be),ve&&re.viewport(O.copy(ve)),fe.length>0&&uo(fe,ue,be),Xe.length>0&&uo(Xe,ue,be),it.length>0&&uo(it,ue,be),re.buffers.depth.setTest(!0),re.buffers.depth.setMask(!0),re.buffers.color.setMask(!0),re.setPolygonOffset(!1)}function lp(F,ue,be,ve){if((be.isScene===!0?be.overrideMaterial:null)!==null)return;const Xe=ce.isWebGL2;ke===null&&(ke=new io(1,1,{generateMipmaps:!0,type:Y.has("EXT_color_buffer_half_float")?ql:_r,minFilter:so,samples:Xe?4:0})),v.getDrawingBufferSize(he),Xe?ke.setSize(he.x,he.y):ke.setSize(lu(he.x),lu(he.y));const it=v.getRenderTarget();v.setRenderTarget(ke),v.getClearColor(te),k=v.getClearAlpha(),k<1&&v.setClearColor(16777215,.5),v.clear();const at=v.toneMapping;v.toneMapping=pr,uo(F,be,ve),ie.updateMultisampleRenderTarget(ke),ie.updateRenderTargetMipmap(ke);let ut=!1;for(let Et=0,ht=ue.length;Et 0),mt=!!be.morphAttributes.position,Zt=!!be.morphAttributes.normal,kn=!!be.morphAttributes.color;let rn=pr;ve.toneMapped&&(A===null||A.isXRRenderTarget===!0)&&(rn=v.toneMapping);const ws=be.morphAttributes.position||be.morphAttributes.normal||be.morphAttributes.color,Wt=ws!==void 0?ws.length:0,vt=Ne.get(ve),Ha=b.state.lights;if(Ee===!0&&(Me===!0||F!==x)){const Gn=F===x&&ve.id===I;Ae.setState(ve,F,Gn)}let Qt=!1;ve.version===vt.__version?(vt.needsLights&&vt.lightsStateVersion!==Ha.state.version||vt.outputColorSpace!==at||fe.isBatchedMesh&&vt.batching===!1||!fe.isBatchedMesh&&vt.batching===!0||fe.isInstancedMesh&&vt.instancing===!1||!fe.isInstancedMesh&&vt.instancing===!0||fe.isSkinnedMesh&&vt.skinning===!1||!fe.isSkinnedMesh&&vt.skinning===!0||fe.isInstancedMesh&&vt.instancingColor===!0&&fe.instanceColor===null||fe.isInstancedMesh&&vt.instancingColor===!1&&fe.instanceColor!==null||vt.envMap!==ut||ve.fog===!0&&vt.fog!==Xe||vt.numClippingPlanes!==void 0&&(vt.numClippingPlanes!==Ae.numPlanes||vt.numIntersection!==Ae.numIntersection)||vt.vertexAlphas!==Et||vt.vertexTangents!==ht||vt.morphTargets!==mt||vt.morphNormals!==Zt||vt.morphColors!==kn||vt.toneMapping!==rn||ce.isWebGL2===!0&&vt.morphTargetsCount!==Wt)&&(Qt=!0):(Qt=!0,vt.__version=ve.version);let fi=vt.currentProgram;Qt===!0&&(fi=po(ve,ue,fe));let pc=!1,vr=!1,qa=!1;const fn=fi.getUniforms(),mi=vt.uniforms;if(re.useProgram(fi.program)&&(pc=!0,vr=!0,qa=!0),ve.id!==I&&(I=ve.id,vr=!0),pc||x!==F){fn.setValue(N,"projectionMatrix",F.projectionMatrix),fn.setValue(N,"viewMatrix",F.matrixWorldInverse);const Gn=fn.map.cameraPosition;Gn!==void 0&&Gn.setValue(N,_e.setFromMatrixPosition(F.matrixWorld)),ce.logarithmicDepthBuffer&&fn.setValue(N,"logDepthBufFC",2/(Math.log(F.far+1)/Math.LN2)),(ve.isMeshPhongMaterial||ve.isMeshToonMaterial||ve.isMeshLambertMaterial||ve.isMeshBasicMaterial||ve.isMeshStandardMaterial||ve.isShaderMaterial)&&fn.setValue(N,"isOrthographic",F.isOrthographicCamera===!0),x!==F&&(x=F,vr=!0,qa=!0)}if(fe.isSkinnedMesh){fn.setOptional(N,fe,"bindMatrix"),fn.setOptional(N,fe,"bindMatrixInverse");const Gn=fe.skeleton;Gn&&(ce.floatVertexTextures?(Gn.boneTexture===null&&Gn.computeBoneTexture(),fn.setValue(N,"boneTexture",Gn.boneTexture,ie)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}fe.isBatchedMesh&&(fn.setOptional(N,fe,"batchingTexture"),fn.setValue(N,"batchingTexture",fe._matricesTexture,ie));const $a=be.morphAttributes;if(($a.position!==void 0||$a.normal!==void 0||$a.color!==void 0&&ce.isWebGL2===!0)&&Ze.update(fe,be,fi),(vr||vt.receiveShadow!==fe.receiveShadow)&&(vt.receiveShadow=fe.receiveShadow,fn.setValue(N,"receiveShadow",fe.receiveShadow)),ve.isMeshGouraudMaterial&&ve.envMap!==null&&(mi.envMap.value=ut,mi.flipEnvMap.value=ut.isCubeTexture&&ut.isRenderTargetTexture===!1?-1:1),vr&&(fn.setValue(N,"toneMappingExposure",v.toneMappingExposure),vt.needsLights&&dp(mi,qa),Xe&&ve.fog===!0&&ye.refreshFogUniforms(mi,Xe),ye.refreshMaterialUniforms(mi,ve,U,q,ke),Rd.upload(N,dc(vt),mi,ie)),ve.isShaderMaterial&&ve.uniformsNeedUpdate===!0&&(Rd.upload(N,dc(vt),mi,ie),ve.uniformsNeedUpdate=!1),ve.isSpriteMaterial&&fn.setValue(N,"center",fe.center),fn.setValue(N,"modelViewMatrix",fe.modelViewMatrix),fn.setValue(N,"normalMatrix",fe.normalMatrix),fn.setValue(N,"modelMatrix",fe.matrixWorld),ve.isShaderMaterial||ve.isRawShaderMaterial){const Gn=ve.uniformsGroups;for(let Ya=0,pp=Gn.length;Ya 0&&ie.useMultisampledRTT(F)===!1?fe=Ne.get(F).__webglMultisampledFramebuffer:Array.isArray(ht)?fe=ht[be]:fe=ht,O.copy(F.viewport),B.copy(F.scissor),H=F.scissorTest}else O.copy(le).multiplyScalar(U).floor(),B.copy(me).multiplyScalar(U).floor(),H=Se;if(re.bindFramebuffer(N.FRAMEBUFFER,fe)&&ce.drawBuffers&&ve&&re.drawBuffers(F,fe),re.viewport(O),re.scissor(B),re.setScissorTest(H),Xe){const ut=Ne.get(F.texture);N.framebufferTexture2D(N.FRAMEBUFFER,N.COLOR_ATTACHMENT0,N.TEXTURE_CUBE_MAP_POSITIVE_X+ue,ut.__webglTexture,be)}else if(it){const ut=Ne.get(F.texture),Et=ue||0;N.framebufferTextureLayer(N.FRAMEBUFFER,N.COLOR_ATTACHMENT0,ut.__webglTexture,be||0,Et)}I=-1},this.readRenderTargetPixels=function(F,ue,be,ve,fe,Xe,it){if(!(F&&F.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let at=Ne.get(F).__webglFramebuffer;if(F.isWebGLCubeRenderTarget&&it!==void 0&&(at=at[it]),at){re.bindFramebuffer(N.FRAMEBUFFER,at);try{const ut=F.texture,Et=ut.format,ht=ut.type;if(Et!==ps&&pt.convert(Et)!==N.getParameter(N.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const mt=ht===ql&&(Y.has("EXT_color_buffer_half_float")||ce.isWebGL2&&Y.has("EXT_color_buffer_float"));if(ht!==_r&&pt.convert(ht)!==N.getParameter(N.IMPLEMENTATION_COLOR_READ_TYPE)&&!(ht===Ai&&(ce.isWebGL2||Y.has("OES_texture_float")||Y.has("WEBGL_color_buffer_float")))&&!mt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ue>=0&&ue<=F.width-ve&&be>=0&&be<=F.height-fe&&N.readPixels(ue,be,ve,fe,pt.convert(Et),pt.convert(ht),Xe)}finally{const ut=A!==null?Ne.get(A).__webglFramebuffer:null;re.bindFramebuffer(N.FRAMEBUFFER,ut)}}},this.copyFramebufferToTexture=function(F,ue,be=0){const ve=Math.pow(2,-be),fe=Math.floor(ue.image.width*ve),Xe=Math.floor(ue.image.height*ve);ie.setTexture2D(ue,0),N.copyTexSubImage2D(N.TEXTURE_2D,be,0,0,F.x,F.y,fe,Xe),re.unbindTexture()},this.copyTextureToTexture=function(F,ue,be,ve=0){const fe=ue.image.width,Xe=ue.image.height,it=pt.convert(be.format),at=pt.convert(be.type);ie.setTexture2D(be,0),N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL,be.flipY),N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL,be.premultiplyAlpha),N.pixelStorei(N.UNPACK_ALIGNMENT,be.unpackAlignment),ue.isDataTexture?N.texSubImage2D(N.TEXTURE_2D,ve,F.x,F.y,fe,Xe,it,at,ue.image.data):ue.isCompressedTexture?N.compressedTexSubImage2D(N.TEXTURE_2D,ve,F.x,F.y,ue.mipmaps[0].width,ue.mipmaps[0].height,it,ue.mipmaps[0].data):N.texSubImage2D(N.TEXTURE_2D,ve,F.x,F.y,it,at,ue.image),ve===0&&be.generateMipmaps&&N.generateMipmap(N.TEXTURE_2D),re.unbindTexture()},this.copyTextureToTexture3D=function(F,ue,be,ve,fe=0){if(v.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const Xe=F.max.x-F.min.x+1,it=F.max.y-F.min.y+1,at=F.max.z-F.min.z+1,ut=pt.convert(ve.format),Et=pt.convert(ve.type);let ht;if(ve.isData3DTexture)ie.setTexture3D(ve,0),ht=N.TEXTURE_3D;else if(ve.isDataArrayTexture)ie.setTexture2DArray(ve,0),ht=N.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL,ve.flipY),N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ve.premultiplyAlpha),N.pixelStorei(N.UNPACK_ALIGNMENT,ve.unpackAlignment);const mt=N.getParameter(N.UNPACK_ROW_LENGTH),Zt=N.getParameter(N.UNPACK_IMAGE_HEIGHT),kn=N.getParameter(N.UNPACK_SKIP_PIXELS),rn=N.getParameter(N.UNPACK_SKIP_ROWS),ws=N.getParameter(N.UNPACK_SKIP_IMAGES),Wt=be.isCompressedTexture?be.mipmaps[0]:be.image;N.pixelStorei(N.UNPACK_ROW_LENGTH,Wt.width),N.pixelStorei(N.UNPACK_IMAGE_HEIGHT,Wt.height),N.pixelStorei(N.UNPACK_SKIP_PIXELS,F.min.x),N.pixelStorei(N.UNPACK_SKIP_ROWS,F.min.y),N.pixelStorei(N.UNPACK_SKIP_IMAGES,F.min.z),be.isDataTexture||be.isData3DTexture?N.texSubImage3D(ht,fe,ue.x,ue.y,ue.z,Xe,it,at,ut,Et,Wt.data):be.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),N.compressedTexSubImage3D(ht,fe,ue.x,ue.y,ue.z,Xe,it,at,ut,Wt.data)):N.texSubImage3D(ht,fe,ue.x,ue.y,ue.z,Xe,it,at,ut,Et,Wt),N.pixelStorei(N.UNPACK_ROW_LENGTH,mt),N.pixelStorei(N.UNPACK_IMAGE_HEIGHT,Zt),N.pixelStorei(N.UNPACK_SKIP_PIXELS,kn),N.pixelStorei(N.UNPACK_SKIP_ROWS,rn),N.pixelStorei(N.UNPACK_SKIP_IMAGES,ws),fe===0&&ve.generateMipmaps&&N.generateMipmap(ht),re.unbindTexture()},this.initTexture=function(F){F.isCubeTexture?ie.setTextureCube(F,0):F.isData3DTexture?ie.setTexture3D(F,0):F.isDataArrayTexture||F.isCompressedArrayTexture?ie.setTexture2DArray(F,0):ie.setTexture2D(F,0),re.unbindTexture()},this.resetState=function(){R=0,C=0,A=null,re.reset(),st.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Ni}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const n=this.getContext();n.drawingBufferColorSpace=e===WE?"display-p3":"srgb",n.unpackColorSpace=Ut.workingColorSpace===tp?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===tn?Qr:LN}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Qr?tn:wn}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}}class RIt extends tO{}RIt.prototype.isWebGL1Renderer=!0;class AIt extends Jt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,n){return super.copy(e,n),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const n=super.toJSON(e);return this.fog!==null&&(n.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(n.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(n.object.backgroundIntensity=this.backgroundIntensity),n}}class NIt{constructor(e,n){this.isInterleavedBuffer=!0,this.array=e,this.stride=n,this.count=e!==void 0?e.length/n:0,this.usage=tb,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=Bs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.InterleavedBuffer: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,n){this.updateRanges.push({start:e,count:n})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,n,s){e*=this.stride,s*=n.stride;for(let i=0,r=this.stride;i c)continue;f.applyMatrix4(this.matrixWorld);const I=e.ray.origin.distanceTo(f);I e.far||n.push({distance:I,point:h.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}else{const E=Math.max(0,o.start),y=Math.min(b.count,o.start+o.count);for(let v=E,S=y-1;v c)continue;f.applyMatrix4(this.matrixWorld);const C=e.ray.origin.distanceTo(f);Ce.far||n.push({distance:C,point:h.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const n=this.geometry.morphAttributes,s=Object.keys(n);if(s.length>0){const i=n[s[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r 0){const i=n[s[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r i.far)return;r.push({distance:d,distanceToRay:Math.sqrt(a),point:c,index:e,face:null,object:o})}}class ny extends Gs{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new _t(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new _t(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=YE,this.normalScale=new At(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Bi extends ny{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new At(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Nn(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(n){this.ior=(1+.4*n)/(1-.4*n)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new _t(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new _t(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new _t(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class uw extends Gs{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new _t(16777215),this.specular=new _t(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new _t(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=YE,this.normalScale=new At(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=qE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}function cd(t,e,n){return!t||!n&&t.constructor===e?t:typeof e.BYTES_PER_ELEMENT=="number"?new e(t):Array.prototype.slice.call(t)}function BIt(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function GIt(t){function e(i,r){return t[i]-t[r]}const n=t.length,s=new Array(n);for(let i=0;i!==n;++i)s[i]=i;return s.sort(e),s}function pw(t,e,n){const s=t.length,i=new t.constructor(s);for(let r=0,o=0;o!==s;++r){const a=n[r]*e;for(let c=0;c!==e;++c)i[o++]=t[a+c]}return i}function rO(t,e,n,s){let i=1,r=t[0];for(;r!==void 0&&r[s]===void 0;)r=t[i++];if(r===void 0)return;let o=r[s];if(o!==void 0)if(Array.isArray(o))do o=r[s],o!==void 0&&(e.push(r.time),n.push.apply(n,o)),r=t[i++];while(r!==void 0);else if(o.toArray!==void 0)do o=r[s],o!==void 0&&(e.push(r.time),o.toArray(n,n.length)),r=t[i++];while(r!==void 0);else do o=r[s],o!==void 0&&(e.push(r.time),n.push(o)),r=t[i++];while(r!==void 0)}class rc{constructor(e,n,s,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new n.constructor(s),this.sampleValues=n,this.valueSize=s,this.settings=null,this.DefaultSettings_={}}evaluate(e){const n=this.parameterPositions;let s=this._cachedIndex,i=n[s],r=n[s-1];e:{t:{let o;n:{s:if(!(e=r)){const a=n[1];e=r)break t}o=s,s=0;break n}break e}for(;s >>1;e n;)--o;if(++o,r!==0||o!==i){r>=o&&(o=Math.max(o,1),r=o-1);const a=this.getValueSize();this.times=s.slice(r,o),this.values=this.values.slice(r*a,o*a)}return this}validate(){let e=!0;const n=this.getValueSize();n-Math.floor(n)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const s=this.times,i=this.values,r=s.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==r;a++){const c=s[a];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,c),e=!1;break}if(o!==null&&o>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,c,o),e=!1;break}o=c}if(i!==void 0&&BIt(i))for(let a=0,c=i.length;a!==c;++a){const d=i[a];if(isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,d),e=!1;break}}return e}optimize(){const e=this.times.slice(),n=this.values.slice(),s=this.getValueSize(),i=this.getInterpolation()===Om,r=e.length-1;let o=1;for(let a=1;a