shaders 2.0.659 → 2.0.660

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue/index.js CHANGED
@@ -407,7 +407,7 @@ var<${n}> ${e} : ${a};`}},zO=class{constructor(e){this.backend=e}getCurrentDepth
407
407
  `,a+=e.flow.code.replace(/^\t/gm,``)+`
408
408
  `,a+=`/* ... */ `+n+` /* ... */
409
409
  `,a+=`// #`+i+`#
410
- `,t===null?console.log(a):t(e,a),n}};const VZ=(e,t=null)=>yJ(new BZ(yJ(e),t));z(`debug`,VZ);const HZ=CJ(([e])=>KZ(e.rgb)),UZ=CJ(([e,t=EJ(1)])=>t.mix(KZ(e.rgb),e.rgb)),WZ=CJ(([e,t=EJ(1)])=>{let n=YJ(e.r,e.g,e.b).div(3),r=e.r.max(e.g.max(e.b)),i=r.sub(n).mul(t).mul(-3);return _X(e.rgb,r,i)}),GZ=CJ(([e,t=EJ(1)])=>{let n=PJ(.57735,.57735,.57735),r=t.cos();return PJ(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(cX(n,e.rgb).mul(r.oneMinus())))))}),KZ=(e,t=PJ(BK.getLuminanceCoefficients(new ZK)))=>cX(e,t),qZ={name:`Grayscale`,category:`Color Adjustments`,props:{},fragmentNode:({childNode:e})=>{let{vec4:t}=QO;if(!e)return console.error(`You must pass a child component into the Grayscale shader.`),t(0);let n=e||t(0,0,0,0);return t(HZ(n.rgb).rgb,n.a)}},JZ={name:`Grid`,category:`Shapes & Masks`,props:{color:{default:`#ffffff`,transform:zG,description:`The color of the grid lines`,ui:{type:`color`,label:`Color`}},cells:{default:10,description:`Number of cells along the shortest canvas edge (creates square cells)`,ui:{type:`range`,min:1,max:50,step:1,label:`Cells`}},thickness:{default:1,description:`Thickness of grid lines (normalized, 0.0-1.0)`,ui:{type:`range`,min:0,max:5,step:.1,label:`Thickness`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,vec4:n,fract:r,max:i,screenUV:a,viewportSize:o,fwidth:s,smoothstep:c}=QO,l=o.x.div(o.y),u=t(a.x.mul(l),a.y.oneMinus()),d=e.cells.uniform,f=u.mul(d),p=r(f),m=e.thickness.uniform.mul(.01),h=p.x.min(p.x.oneMinus()),g=p.y.min(p.y.oneMinus()),_=s(f),v=c(m.add(_.x),m,h),y=c(m.add(_.y),m,g),b=i(v,y);return n(e.color.uniform.rgb,e.color.uniform.a.mul(b))}},YZ={name:`GridDistortion`,category:`Distortions`,requiresRTT:!0,props:{smoothness:{default:0,description:`How smooth and flowing the motion is`,ui:{type:`range`,min:0,max:1,step:.01,label:`Smoothness`}},intensity:{default:1,description:`Strength of the distortion effect`,ui:{type:`range`,min:0,max:5,step:.1,label:`Intensity`}},swirl:{default:0,description:`Amount of swirl motion`,ui:{type:`range`,min:0,max:2,step:.1,label:`Swirl`}},duration:{default:3,description:`How long the effect persists (higher = longer)`,ui:{type:`range`,min:0,max:10,step:.1,label:`Duration`}},radius:{default:1,description:`Radius of the distortion effect`,ui:{type:`range`,min:0,max:3,step:.01,label:`Radius`}},gridSize:{default:20,description:`Resolution of the distortion grid (higher = more detailed)`,ui:{type:`range`,min:8,max:128,step:1,label:`Grid Size`}}},fragmentNode:({uniforms:e,onBeforeRender:t,childNode:n,onCleanup:r,dimensions:i})=>{let{vec2:a,vec4:o,float:s,uniform:c,screenUV:l,convertToTexture:u,texture:d}=QO;if(!n)return o(0,0,0,0);let f=Math.round(i.width),p=Math.round(i.height),m=u(n,f,p),h=Math.max(8,Math.min(128,Math.floor(e.gridSize.uniform.value))),g=new Float32Array(h*h*2),_=new Iz(g,h,h,QF,qF);_.magFilter=HF,_.minFilter=HF,_.needsUpdate=!0;let v=d(_),y=c(.5),b=c(.5),x=c(0),S=c(0),ee=.5,te=.5,ne=Date.now();t(({pointer:t})=>{let n=Date.now(),r=Math.min((n-ne)/1e3,.016);ne=n;let i=r>0?(t.x-ee)/r:0,a=r>0?(t.y-te)/r:0;x.value=x.value*.85+i*.15,S.value=S.value*.85+a*.15,y.value=t.x,b.value=t.y;let o=e.duration.uniform.value,s=e.intensity.uniform.value,c=e.radius.uniform.value*.05,l=e.swirl.uniform.value;for(let e=0;e<h;e++)for(let n=0;n<h;n++){let u=(e*h+n)*2;g[u]*=1-o*r,g[u+1]*=1-o*r;let d=(n+.5)/h,f=(e+.5)/h,p=d-t.x,m=f-t.y,_=Math.sqrt(p*p+m*m);if(_<c*2&&Math.abs(i)+Math.abs(a)>.01){let e=Math.exp(-_*_/(c*c));if(g[u]+=x.value*e*s*r*.5,g[u+1]+=S.value*e*s*r*.5,l>0){let t=Math.atan2(m,p)+Math.PI*.5;g[u]+=Math.cos(t)*l*e*r*2,g[u+1]+=Math.sin(t)*l*e*r*2}}g[u]=Math.max(-1,Math.min(1,g[u])),g[u+1]=Math.max(-1,Math.min(1,g[u+1]))}_.needsUpdate=!0,ee=t.x,te=t.y}),r(()=>{_.dispose()});let re=e.gridSize.uniform,ie=s(1).div(re),ae=l.div(ie).floor().mul(ie).add(ie.mul(.5)),oe=v.sample(ae).xy,se=s(.1),ce=s(-.1),le=oe.clamp(a(ce,ce),a(se,se)),ue=l.sub(le);return m.sample(ue)}},XZ={name:`HueShift`,category:`Color Adjustments`,props:{shift:{default:0,description:`The amount to shift the hue by`,ui:{type:`range`,min:-180,max:180,step:1,label:`Shift`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Hue Shift shader.`),n(0);let r=t||n(0,0,0,0);return n(GZ(r.rgb,e.shift.uniform).rgb,r.a)}},ZZ={name:`ImageTexture`,category:`Textures`,props:{src:{default:`https://picsum.photos/1920/1080`,description:`Image URL to display`,ui:{type:`text`,label:`Source URL`}},fit:{default:`cover`,description:`How the image should fit within the canvas`}},fragmentNode:({uniforms:e,onCleanup:t})=>{let{texture:n,screenUV:r}=QO,i=new uB,a=i.load(e.src.uniform.value);a.colorSpace=cI,a.flipY=!0;let o=n(a);t(()=>{a.dispose()});let s=r.xy.setY(r.y.oneMinus());return o.sample(s)}},QZ={name:`Invert`,category:`Color Adjustments`,props:{},fragmentNode:({childNode:e})=>{let{vec4:t,vec3:n}=QO;if(!e)return console.error(`You must pass a child component into the Invert shader.`),t(0);let r=e||t(0,0,0,0);return t(n(1,1,1).sub(r.rgb),r.a)}},$Z={name:`LinearGradient`,category:`Gradients & Colors`,props:{startColor:{default:`#1aff00`,transform:zG,description:`The starting color of the gradient`,ui:{type:`color`,label:`Start Color`}},endColor:{default:`#0000ff`,transform:zG,description:`The ending color of the gradient`,ui:{type:`color`,label:`End Color`}},angle:{default:0,transform:VG,description:`The rotation angle of the gradient (in degrees)`,ui:{type:`range`,min:0,max:360,step:1,label:`Angle`}},center:{default:{x:.5,y:.5},transform:BG}},fragmentNode:({uniforms:e})=>{let{vec2:t,mix:n,float:r,cos:i,sin:a,dot:o,radians:s,screenUV:c,abs:l,div:u}=QO,d=s(e.angle.uniform),f=i(d),p=a(d),m=t(f,p),h=t(e.center.uniform[0],e.center.uniform[1].oneMinus()),g=c.sub(h),_=o(g,m),v=r(.5).mul(l(f).add(l(p))),y=u(_,v.max(1e-6)),b=y.mul(.5).add(.5).clamp(r(0),r(1));return n(e.startColor.uniform,e.endColor.uniform,b)}},eQ={name:`Liquify`,category:`Distortions`,requiresRTT:!0,props:{smoothness:{default:0,description:`How smooth and flowing the motion is (0-1)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Smoothness`}},intensity:{default:1,description:`Strength of the distortion effect`,ui:{type:`range`,min:0,max:5,step:.1,label:`Intensity`}},swirl:{default:0,description:`Amount of swirl motion (0-1)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Swirl`}},duration:{default:3,description:`How long the effect persists (higher = longer)`,ui:{type:`range`,min:0,max:10,step:.1,label:`Duration`}},radius:{default:1,description:`Radius of the distortion effect`,ui:{type:`range`,min:0,max:3,step:.01,label:`Radius`}}},fragmentNode:({uniforms:e,onBeforeRender:t,childNode:n,onCleanup:r,dimensions:i})=>{let{vec2:a,vec4:o,float:s,uniform:c,screenUV:l,convertToTexture:u,texture:d}=QO;if(!n)return o(0,0,0,0);let f=Math.round(i.width),p=Math.round(i.height),m=u(n,f,p),h=32,g=new Float32Array(h*h*2),_=new Iz(g,h,h,QF,qF);_.magFilter=HF,_.minFilter=HF,_.needsUpdate=!0;let v=d(_),y=c(.5),b=c(.5),x=c(0),S=c(0),ee=.5,te=.5,ne=Date.now();t(({pointer:t})=>{let n=Date.now(),r=Math.min((n-ne)/1e3,.016);ne=n;let i=r>0?(t.x-ee)/r:0,a=r>0?(t.y-te)/r:0;x.value=x.value*.85+i*.15,S.value=S.value*.85+a*.15,y.value=t.x,b.value=t.y;let o=e.duration.uniform.value,s=e.intensity.uniform.value,c=e.radius.uniform.value*.05,l=e.swirl.uniform.value;for(let e=0;e<h;e++)for(let n=0;n<h;n++){let u=(e*h+n)*2;g[u]*=1-o*r,g[u+1]*=1-o*r;let d=(n+.5)/h,f=(e+.5)/h,p=d-t.x,m=f-t.y,_=Math.sqrt(p*p+m*m);if(_<c*2&&Math.abs(i)+Math.abs(a)>.01){let e=Math.exp(-_*_/(c*c));if(g[u]+=x.value*e*s*r*.5,g[u+1]+=S.value*e*s*r*.5,l>0){let t=Math.atan2(m,p)+Math.PI*.5;g[u]+=Math.cos(t)*l*e*r*2,g[u+1]+=Math.sin(t)*l*e*r*2}}g[u]=Math.max(-1,Math.min(1,g[u])),g[u+1]=Math.max(-1,Math.min(1,g[u+1]))}_.needsUpdate=!0,ee=t.x,te=t.y}),r(()=>{_.dispose()});let re=v.sample(l).xy,ie=s(.2),ae=s(-.2),oe=re.clamp(a(ae,ae),a(ie,ie)),se=l.sub(oe);return m.sample(se)}},tQ={name:`Pixelate`,category:`Effects`,requiresRTT:!0,props:{scale:{default:50,description:`Pixel size - higher values create larger, more visible pixels`,ui:{type:`range`,min:1,max:200,step:1,label:`Scale`}}},fragmentNode:({uniforms:e,childNode:t,dimensions:n})=>{let{vec4:r,floor:i,screenUV:a,convertToTexture:o}=QO;if(!t)return r(0,0,0,0);let s=Math.round(n.width),c=Math.round(n.height),l=o(t,s,c),u=e.scale.uniform,d=i(a.mul(u)).div(u);return l.sample(d)}};var nQ=class extends wq{static get type(){return`PosterizeNode`}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){let{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}};const rQ=B(nQ).setParameterLength(2),iQ={name:`Posterize`,category:`Color Adjustments`,props:{intensity:{default:5,description:`The intensity of the posterization effect (lower is more posterized)`,ui:{type:`range`,min:2,max:20,step:1,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n,int:r}=QO;if(!t)return console.error(`You must pass a child component into the Posterize shader.`),n(0);let i=t||n(0,0,0,0);return rQ(i,r(e.intensity.uniform))}},aQ={name:`RadialGradient`,category:`Gradients & Colors`,props:{startColor:{default:`#ff0000`,transform:zG,description:`The starting color at the center of the gradient`,ui:{type:`color`,label:`Start Color`}},endColor:{default:`#0000ff`,transform:zG,description:`The ending color at the edge of the gradient`,ui:{type:`color`,label:`End Color`}},center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the radial gradient`},radius:{default:1,description:`The radius of the gradient (normalized, 0.0-1.0)`,ui:{type:`range`,min:0,max:2,step:.01,label:`Radius`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,mix:n,float:r,distance:i,screenUV:a,viewportSize:o}=QO,s=o.x.div(o.y),c=t(a.x.mul(s),a.y),l=t(e.center.uniform.x.mul(s),e.center.uniform.y.oneMinus()),u=i(c,l),d=u.div(e.radius.uniform).clamp(r(0),r(1));return n(e.startColor.uniform,e.endColor.uniform,d)}},oQ={name:`Saturation`,category:`Color Adjustments`,props:{intensity:{default:1,description:`The intensity of the saturation effect (1 being no change)`,ui:{type:`range`,min:0,max:3,step:.01,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Saturation shader.`),n(0);let r=t||n(0,0,0,0);return n(UZ(r.rgb,e.intensity.uniform).rgb,r.a)}},sQ={name:`SolidColor`,category:`Gradients & Colors`,props:{color:{default:`#5b18ca`,transform:zG,description:`The solid color to display`,ui:{type:`color`,label:`Color`}}},fragmentNode:({uniforms:e})=>e.color.uniform},cQ={name:`Spiral`,category:`Shapes & Masks`,props:{colorBack:{default:`#000000`,transform:zG,description:`Background color`,ui:{type:`color`,label:`Background Color`}},colorFront:{default:`#ffffff`,transform:zG,description:`Spiral stroke color`,ui:{type:`color`,label:`Spiral Color`}},strokeWidth:{default:.5,description:`Thickness of spiral stroke`,ui:{type:`range`,min:0,max:2,step:.01,label:`Stroke Width`}},strokeFalloff:{default:0,description:`Stroke losing width further from center`,ui:{type:`range`,min:0,max:1,step:.01,label:`Stroke Falloff`}},softness:{default:0,description:`Color transition sharpness (0 = hard edge, 1 = smooth fade)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Softness`}},speed:{default:1,description:`Animation speed (negative values reverse direction)`,ui:{type:`range`,min:-3,max:3,step:.1,label:`Speed`}},center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the spiral`},scale:{default:1,description:`Scale factor for spiral bands (higher = more bands, lower = fewer bands)`,ui:{type:`range`,min:.1,max:5,step:.1,label:`Scale`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,vec4:n,float:r,atan:i,length:a,clamp:o,fract:s,abs:c,mix:l,smoothstep:u,screenUV:d,time:f,fwidth:p,viewportSize:m}=QO,h=m.x.div(m.y),g=t(d.x.mul(h),d.y),_=t(e.center.uniform.x.mul(h),e.center.uniform.y.oneMinus()),v=g.sub(_),y=f.mul(e.speed.uniform),b=a(v),x=b,S=i(v.y,v.x).sub(y),ee=r(6.283185307),te=S.div(ee),ne=x.mul(e.scale.uniform).add(te),re=s(ne),ie=c(re.sub(.5)).mul(2),ae=o(e.strokeWidth.uniform,e.strokeFalloff.uniform.mul(.005),1),oe=o(e.strokeFalloff.uniform,0,1).mul(b).oneMinus(),se=ae.mul(oe),ce=p(ne),le=r(4).sub(u(.05,.4,e.strokeWidth.uniform.mul(2)).mul(u(.05,.4,e.strokeWidth.uniform.oneMinus().mul(2))).mul(3)),ue=l(le.mul(ce),p(ie),o(ce,0,1)),de=u(se.sub(ue).sub(e.softness.uniform),se.add(ue).add(e.softness.uniform),ie),fe=e.colorFront.uniform.rgb.mul(e.colorFront.uniform.a),pe=e.colorFront.uniform.a,me=e.colorBack.uniform.rgb.mul(e.colorBack.uniform.a),he=e.colorBack.uniform.a,ge=fe.mul(de),_e=pe.mul(de),ve=ge.add(me.mul(_e.oneMinus())),ye=_e.add(he.mul(_e.oneMinus()));return n(ve,ye)}},lQ={name:`Swirl`,category:`Gradients & Colors`,props:{colorA:{default:`#1275d8`,description:`Primary gradient color`,transform:zG,ui:{type:`color`,label:`Primary Color`}},colorB:{default:`#e19136`,description:`Secondary gradient color`,transform:zG,ui:{type:`color`,label:`Secondary Color`}},colorC:{default:`#320485`,description:`Accent gradient color`,transform:zG,ui:{type:`color`,label:`Accent Color`}},speed:{default:1,description:`Flow animation speed`,ui:{type:`range`,min:0,max:5,step:.1,label:`Speed`}},scale:{default:5,description:`Gradient scale`,ui:{type:`range`,min:.1,max:20,step:.1,label:`Scale`}},complexity:{default:5,description:`Flow complexity`,ui:{type:`range`,min:1,max:10,step:.1,label:`Complexity`}}},fragmentNode:({uniforms:e})=>{let t=LP(),n=rP.mul(e.speed.uniform),r=e.scale.uniform,i=e.complexity.uniform,a=bN(t.x.mul(r.mul(1.2)).add(n.mul(.8))).mul(.3),o=hj(t.y.mul(r.mul(.9)).sub(n.mul(.6))).mul(.3),s=WP(t.x.add(bN(t.y.mul(i.mul(2)).add(n)).mul(.08)),t.y.add(hj(t.x.mul(i.mul(1.5)).sub(n.mul(.7))).mul(.08))),c=bN(s.x.mul(r.mul(3)).add(s.y.mul(r.mul(2))).add(n.mul(.5))),l=hj(s.x.sub(s.y).mul(r.mul(2.5)).add(n.mul(.3))),u=bN(s.x.mul(i).add(a).add(s.y.mul(i.mul(.8)).add(o)).add(n.mul(.4))),d=SM(c,l,u.mul(.5).add(.5)),f=s.x.mul(.7).add(s.y.mul(.3)).add(d.mul(.2)),p=SM(e.colorA.uniform,e.colorB.uniform,CN(.1,.6,f)),m=SM(p,e.colorC.uniform,CN(.4,.9,f.add(u.mul(.3)))),h=bN(n.mul(3).add(f.mul(10))).mul(.02).add(1),g=m.mul(h);return KP(g,1)}},uQ={name:`Twirl`,category:`Distortions`,requiresRTT:!0,props:{center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the twirl effect`},intensity:{default:1,description:`The strength of the twirl effect`,ui:{type:`range`,min:-5,max:5,step:.1,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t,dimensions:n})=>{let{vec2:r,vec4:i,cos:a,sin:o,length:s,screenUV:c,convertToTexture:l}=QO;if(!t)return console.error(`You must pass a child component into the Twirl shader.`),i(0);let u=Math.round(n.width),d=Math.round(n.height),f=l(t,u,d),p=c,m=r(e.center.uniform.x,e.center.uniform.y.oneMinus()),h=p.sub(m),g=e.intensity.uniform.mul(s(h)),_=a(g),v=o(g),y=_.mul(h.x).sub(v.mul(h.y)),b=v.mul(h.x).add(_.mul(h.y)),x=r(y.add(m.x),b.add(m.y));return i(f.sample(x))}},dQ={name:`Vibrance`,category:`Color Adjustments`,props:{intensity:{default:0,description:`The intensity of the vibrance effect`,ui:{type:`range`,min:-2,max:2,step:.01,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Vibrance shader.`),n(0);let r=t||n(0,0,0,0);return n(WZ(r.rgb,e.intensity.uniform).rgb,r.a)}};function fQ(e,t,n=1){let r=e.rgb,i=t.rgb,a=CM(r,i),o=CM(t.a,n),s=SM(r,a,o),c=xM(e.a,CM(t.a,n));return KP(s,c)}function pQ(e,t,n=1){let r=CM(t.a,n),i=Mk(r,CM(e.a,zN(1,r))),a=Mk(CM(t.rgb,r),CM(e.rgb,CM(e.a,zN(1,r))));return KP(a,i)}const mQ={normal:pQ,multiply:fQ};function hQ(e,t,n=`normal`,r=1){let i=mQ[n]||mQ.normal;return i(e,t,r)}function gQ(e,t){let n=CM(e.a,t.a);return KP(e.rgb,n)}function _Q(e,t){let n=zN(1,t.a),r=CM(e.a,n);return KP(e.rgb,r)}function vQ(e,t){let n=GP(.2126,.7152,.0722),r=Vj(t.rgb,n),i=CM(e.a,r);return KP(e.rgb,i)}function yQ(e,t){let n=GP(.2126,.7152,.0722),r=Vj(t.rgb,n),i=zN(1,r),a=CM(e.a,i);return KP(e.rgb,a)}const bQ={alpha:gQ,alphaInverted:_Q,luminance:vQ,luminanceInverted:yQ};function xQ(e,t,n=`alpha`){let r=bQ[n]||bQ.alpha;return r(e,t)}const SQ={BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1};let CQ=!1;const wQ=()=>{try{if(SQ!==void 0){let{MODE:e,DEV:t}=SQ;return t||e===`development`}if(typeof window<`u`&&window.location){let e=window.location.hostname;return e===`localhost`||e===`127.0.0.1`||e.endsWith(`.local`)||e.includes(`dev.`)||e.startsWith(`dev-`)}return!1}catch{return!1}};function TQ(){let e=null,t,n,r,i,a,o={nodes:new Map,rootId:null,idToNodeId:new Map},s=null,c=null,l=null,u=!1,d=!1,f=!1,p=null,m=!1,h=!0,g=0,_=0,v=!1,y=0,b=0,x=!1,S=8,ee=.5,te=.5,ne=!1,re=!1,ie=!1,ae=[],oe=!1,se=[],ce=!1,le=()=>{var e,t,n;return(e=t=(n=window).matchMedia)?.call(n,`(prefers-reduced-motion: reduce)`).matches??!1},ue=(e,r)=>{if(e<=0||r<=0||e===g&&r===_)return;let a=performance.now();if(a-y<S)return;let s=g,c=_;g=e,_=r,y=a,f||=!0,t.setSize(e,r,!1);let l=e/r,u=2,d=u*l;n.left=-d/2,n.right=d/2,n.top=u/2,n.bottom=-u/2,n.updateProjectionMatrix(),i.scale.set(d,u,1),(o.rootId&&(s===0||c===0)||o.rootId&&f)&&me(),Ee().catch(console.warn)},de=e=>{if(!t||!n||!i)return;let r=e[0];if(!r)return;let{width:a,height:o}=r.contentRect,s=Math.round(a),c=Math.round(o);s===0||c===0||ue(s,c)},fe=t=>{let n=t[0];if(!n)return;let r=m;m=n.isIntersecting;let i=e?.getBoundingClientRect(),s=v;if(v=m&&!!i&&i.width>0&&i.height>0,m&&!r){if(x=!0,e){let{width:t,height:n}=e.getBoundingClientRect(),r=Math.round(t),i=Math.round(n);r>0&&i>0&&(g===0||_===0||r!==g||i!==_?(ue(r,i),!s&&v&&me()):a&&u&&o.rootId&&(a.needsUpdate=!0,me(),Ee().catch(console.warn)))}h&&De()}else !m&&r&&Oe()},pe=!1,me=()=>{if(!o.rootId||!a||re)return;let e=o.nodes.get(o.rootId);if(e){if(g===0||_===0){pe||(pe=!0,requestAnimationFrame(()=>{pe=!1,g>0&&_>0&&me()}));return}re=!0;try{let e=ye(o.rootId);e&&a&&(x&&(a.fragmentNode=null,a.needsUpdate=!0,x=!1),a.fragmentNode=e,a.needsUpdate=!0)}catch(e){console.error(`Error composing shader tree:`,e)}finally{re=!1}m&&Ee().catch(console.warn)}},he=e=>{let t=[];return o.nodes.forEach(n=>{n.parentId===e&&t.push(n)}),t},ge=e=>{for(let[t,n]of o.nodes.entries())if(n.metadata.id===e)return t;return null},_e=(e,t,n,r)=>{var i,a;if(!(i=a=t.metadata.mask)?.source)return e;let o=t.metadata.mask.source,s=ge(o);if(!s)return e;if(r.has(s))return console.error(`Uh oh, looks like you've got a circular dependency in your shader masks.`),e;let c=new Set(r);c.add(n);let l=ye(s,c),u=t.metadata.mask.type||`alpha`;return xQ(e,l,u)},ve=e=>{var t,n;let r=o.nodes.get(e);if(!r||!r.metadata.id)return!1;let i=r.metadata.id;for(let e of o.nodes.values())if((t=n=e.metadata.mask)?.source===i)return!0;return!1},ye=(t,n=new Set)=>{if(g===0||_===0)return KP(0,0,0,0);let r=o.nodes.get(t);if(!r)return KP(0,0,0,0);let i=e=>{r.cleanupCallbacks.push(e)},a=e=>{r.beforeRenderCallbacks.push(e)},s=e=>{r.afterRenderCallbacks.push(e)},c=he(t);if(c.length===0){if(r.requiresRTT&&!v)return KP(0,0,0,0);let o=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:void 0,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(o,r,t,n)}else{let o=[...c].sort((e,t)=>e.metadata.renderOrder-t.metadata.renderOrder),l=r.parentId===null;if(l){let c;for(let e of o){let t=e.metadata.opacity??(ve(e.id)?0:1);if(t===0&&!ve(e.id))continue;let r=ye(e.id,n),i;if(e.metadata.opacity===void 0?(i=ve(e.id)?0:1,e.opacityUniform.value=i):i=e.metadata.opacity,c===void 0){let t=e.requiresRTT||i!==1;c=t?hQ(KP(1,1,1,0),r,e.metadata.blendMode,e.opacityUniform):r}else c=hQ(c,r,e.metadata.blendMode,e.opacityUniform)}if(r.requiresRTT&&!v)return KP(0,0,0,0);let l=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:c,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(l,r,t,n)}else{let c;for(let e of o){let t=ye(e.id,n),r=e.metadata.opacity??(ve(e.id)?0:1);if(r===0&&!ve(e.id))continue;let i;if(e.metadata.opacity===void 0?(i=ve(e.id)?0:1,e.opacityUniform.value=i):i=e.metadata.opacity,c===void 0){let n=e.requiresRTT||i!==1;c=n?hQ(KP(1,1,1,0),t,e.metadata.blendMode,e.opacityUniform):t}else c=hQ(c,t,e.metadata.blendMode,e.opacityUniform)}if(r.requiresRTT&&!v)return KP(0,0,0,0);let l=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:c,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(l,r,t,n)}}},be=(e,t,n,r,i={},s)=>{let c=0;if(n!==null){let e=Array.from(o.nodes.values()).filter(e=>e.parentId===n);e.length>0&&(c=Math.max(...e.map(e=>e.metadata.renderOrder))+1)}let l=r?.opacity===void 0?1:r.opacity,d=kP(l),f={id:e,fragmentNodeFunc:t,parentId:n,requiresRTT:s?.requiresRTT||!1,opacityUniform:d,metadata:{blendMode:r?.blendMode||`normal`,opacity:r?.opacity,id:r?.id,mask:r?.mask,renderOrder:r?.renderOrder===void 0?c:r?.renderOrder},uniforms:i,cleanupCallbacks:[],beforeRenderCallbacks:[],afterRenderCallbacks:[]};o.nodes.set(e,f),n===null&&(o.rootId=e),a&&u&&g>0&&_>0?(ae.includes(e)||ae.push(e),oe||(oe=!0,queueMicrotask(()=>{oe=!1,ae=[],me()}))):a&&u&&(pe||(pe=!0,requestAnimationFrame(()=>{pe=!1,g>0&&_>0&&me()})))},xe=(e,t,n)=>{let r=o.nodes.get(e);if(!r||!r.uniforms)return;let i=r.uniforms[t];!i||!i.uniform||(i.uniform.value=n,m&&Ee())},Se=(e,t)=>{var n,r,i,s,c,l,d,f;let p=o.nodes.get(e);if(!p)return;let h=!1;if(t.blendMode!==void 0&&p.metadata.blendMode!==t.blendMode&&(p.metadata.blendMode=t.blendMode,h=!0),t.opacity!==void 0&&p.metadata.opacity!==t.opacity){let e=p.metadata.opacity===0,n=t.opacity===0;p.metadata.opacity=t.opacity,p.opacityUniform.value=t.opacity,e!==n&&(h=!0)}t.renderOrder!==void 0&&p.metadata.renderOrder!==t.renderOrder&&(p.metadata.renderOrder=t.renderOrder,h=!0),t.id!==void 0&&p.metadata.id!==t.id&&(p.metadata.id=t.id,h=!0),t.mask!==void 0&&((n=c=p.metadata.mask)?.source!==(r=l=t.mask)?.source||(i=d=p.metadata.mask)?.type!==(s=f=t.mask)?.type)&&(p.metadata.mask=t.mask,h=!0),h&&a&&u?(se.includes(e)||se.push(e),ce||(ce=!0,queueMicrotask(()=>{ce=!1,se=[],me()}))):m&&Ee()},Ce=e=>{if(!o.nodes.has(e))return;let t=o.nodes.get(e);if(t&&t.cleanupCallbacks.length>0)for(let n of t.cleanupCallbacks)try{n()}catch(t){console.error(`Error executing cleanup callback for node ${e}:`,t)}let n=he(e);for(let e of n)Ce(e.id);o.rootId===e&&(o.rootId=null),o.nodes.delete(e),a&&u&&me()},we=e=>{let t={deltaTime:e,pointer:{x:ee,y:te},pointerActive:ne,dimensions:{width:g,height:_}};for(let e of o.nodes.values())if(e.beforeRenderCallbacks.length>0)for(let n of e.beforeRenderCallbacks)try{n(t)}catch(t){console.error(`Error executing before render callback for node ${e.id}:`,t)}},Te=e=>{let t={deltaTime:e,pointer:{x:ee,y:te},pointerActive:ne,dimensions:{width:g,height:_}};for(let e of o.nodes.values())if(e.afterRenderCallbacks.length>0)for(let n of e.afterRenderCallbacks)try{n(t)}catch(t){console.error(`Error executing after render callback for node ${e.id}:`,t)}},Ee=async()=>{if(!u||!t||!r||!n||!a||g===0||_===0)return;let e=performance.now(),i=b>0?(e-b)/1e3:.016,o=Math.min(i,.1);b=e,we(o);try{if(re)return;t instanceof ZO?await t.renderAsync(r,n).then(()=>{u&&Te(o)}).catch(e=>{console.error(`WebGPU render error:`,e)}):(t.render(r,n),Te(o))}catch(e){console.error(`Render frame error:`,e)}},De=()=>{if(s||!h||!m)return;let e=()=>{s=requestAnimationFrame(e),Ee().catch(console.warn)};e()},Oe=()=>{s&&(cancelAnimationFrame(s),s=null)},ke=t=>{if(!e)return;let n,r;if(`touches`in t){if(t.touches.length===0)return;n=t.touches[0].clientX,r=t.touches[0].clientY}else n=t.clientX,r=t.clientY;let i=e.getBoundingClientRect(),a=(n-i.left)/i.width,o=(r-i.top)/i.height;ee=a,te=o},Ae=e=>{ke(e)},je=e=>{ke(e)},Me=()=>{ne=!1,Ee().catch(console.warn)},Ne=()=>{ne=!1,Ee().catch(console.warn)},Pe=()=>{ne=!0,Ee().catch(console.warn)},Fe=()=>{ne=!0,Ee().catch(console.warn)},Ie=async({canvas:o})=>{if(u||d)return;d=!0,p=new AbortController;let s=p;try{if(e=o,r=new io,r.background=null,n=new gs(-1,1,1,-1,.1,10),n.position.z=1,n.lookAt(0,0,0),ie||(window.addEventListener(`mousemove`,Ae),window.addEventListener(`touchmove`,je),window.addEventListener(`mouseup`,Me),window.addEventListener(`touchend`,Ne),o.addEventListener(`mousedown`,Pe),o.addEventListener(`touchstart`,Fe),ie=!0),s.signal.aborted)return;try{if(t=new ZO({canvas:o,antialias:!0,alpha:!0,depth:!1,powerPreference:`high-performance`}),await t.init(),s.signal.aborted)return}catch(e){if(s.signal.aborted)return;console.error(`[Shaders] WebGPU initialization error:`,e);return}if(s.signal.aborted)return;t.setPixelRatio(Math.min(window.devicePixelRatio,2)),t.outputColorSpace=hn,a=new $_({transparent:!0}),a.fragmentNode=KP(0,0,0,0);let d=new Do(2,2);i=new Ia(d,a),r.add(i),c=new ResizeObserver(de),c.observe(o),l=new IntersectionObserver(fe,{threshold:0}),l.observe(o);let p=o.getBoundingClientRect();m=p.width>0&&p.height>0&&p.top<window.innerHeight&&p.bottom>0&&p.left<window.innerWidth&&p.right>0,v=m&&p.width>0&&p.height>0,h=!le();let{width:g,height:_}=o.getBoundingClientRect(),y=Math.round(g),b=Math.round(_);y>0&&b>0?(ue(y,b),f=!0,await Ee()):f=!1,h&&m&&De(),s.signal.aborted||(u=!0)}catch(e){console.error(`[Shaders] Initialization error:`,e)}finally{d=!1,p===s&&(p=null)}},Le=()=>{!wQ()||CQ||(console.warn(`Shaders is running in development mode. Please purchase a license at https://shaders.com to use it in production.`),CQ=!0)},Re=()=>{if(p&&p.abort(),c&&(c.disconnect(),c=null),l&&(l.disconnect(),l=null),ie&&(e&&(e.removeEventListener(`mousedown`,Pe),e.removeEventListener(`touchstart`,Fe)),window&&(window.removeEventListener(`mousemove`,Ae),window.removeEventListener(`touchmove`,je),window.removeEventListener(`mouseup`,Me),window.removeEventListener(`touchend`,Ne)),ie=!1),Oe(),o.nodes.clear(),o.rootId=null,o.idToNodeId.clear(),ae=[],oe=!1,se=[],ce=!1,i){r&&r.remove(i);try{i.geometry&&typeof i.geometry.dispose==`function`&&i.geometry.dispose()}catch{}try{i.material instanceof ia&&typeof i.material.dispose==`function`&&i.material.dispose()}catch{}}if(t&&typeof t.dispose==`function`)try{t.dispose()}catch{}e=null,t=null,n=null,r=null,i=null,a=null,u=!1,d=!1,f=!1,p=null,g=0,_=0,m=!1,h=!0,ee=.5,te=.5,ne=!1};return{initialize:Ie,cleanup:Re,registerNode:be,removeNode:Ce,updateUniformValue:xe,updateNodeMetadata:Se,showLicenseWarning:Le,isInitialized:()=>u}}const{uniform:EQ}=QO;function DQ(e,t,n){let r={};return Object.entries(e.props).forEach(([e,i])=>{let a=t[e],o=a;i.transform&&(o=i.transform(a)),r[e]={uniform:EQ(o).label(`${e}_${n}`),transform:i.transform||void 0}}),r}const{vec2:OQ,fract:kQ,sin:AQ,dot:jQ}=QO,MQ=e=>kQ(AQ(jQ(e,OQ(12.12345,78.12345))).mul(40000.12345)),koe=(e=.03)=>t=>MQ(t).mul(e).mul(.10012345),{vec2:NQ}=QO,Aoe=(e=NQ(0),t=.02,n=1,r=1)=>{let{vec2:i,sin:a,cos:o,time:s}=QO,c=r*1.618033988749895,l=r*2.718281828459045,u=(Math.sin(r)+2)*5,d=(Math.cos(r)+2)*5,f=i(a(e.x.mul(n).mul(u).add(s.mul(.1)).add(c)),o(e.y.mul(n).mul(u).add(s.mul(.1)).add(l))),p=i(a(e.y.mul(n).mul(d).add(s.mul(.05)).add(l)),o(e.x.mul(n).mul(d).add(s.mul(.05)).add(c))),m=f.add(p).mul(t);return e.add(m)},joe=(e,t,n=.6,r=.3,i=1)=>{let{max:a,smoothstep:o,vec4:s}=QO,c=a(a(e.r,e.g),e.b),l=o(n,n+r,c).mul(i).mul(1),u=e.rgb.add(t.rgb.mul(l));return s(u,e.a)},Moe=(e={})=>{let{inset:t=.4,softness:n=.5,offsetX:r=0,offsetY:i=0}=e,{float:a,smoothstep:o,uv:s}=QO,c=s(),l=c.x.sub(.5).sub(a(r)).mul(2),u=c.y.sub(.5).add(a(i)).mul(2),d=l.mul(l).add(u.mul(u)).sqrt();return a(1).sub(o(a(1).sub(a(t)),a(1).sub(a(t)).add(a(n)),d.mul(a(1).add(a(n)))))},PQ=()=>{let e={},t={ascii:EB,checkerboard:HG,circle:UG,dotGrid:WG,glassTiles:GG,grayscale:qZ,grid:JZ,gridDistortion:YZ,hueShift:XZ,imageTexture:ZZ,invert:QZ,linearGradient:$Z,liquify:eQ,pixelate:tQ,posterize:iQ,radialGradient:aQ,saturation:oQ,solidColor:sQ,spiral:cQ,swirl:lQ,twirl:uQ,vibrance:dQ};return Object.entries(t).forEach(([t,n])=>{let r={};n.props&&Object.entries(n.props).forEach(([e,t])=>{t.ui&&(r[e]={ui:t.ui,default:t.default,description:t.description})}),e[n.name]={name:n.name,fileName:t,category:n.category||`Uncategorized`,definition:n,propsMetadata:r}}),e},Noe=PQ();var FQ=r({__name:`Ascii`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},characters:{},cellSize:{},fontFamily:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${EB.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(EB,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,EB.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,EB)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${EB.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),IQ=FQ,LQ=r({__name:`Checkerboard`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorA:{},colorB:{},cells:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${HG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(HG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,HG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,HG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${HG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),RQ=LQ,zQ=r({__name:`Circle`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},radius:{},softness:{},center:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${UG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(UG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,UG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,UG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${UG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),BQ=zQ,VQ=r({__name:`DotGrid`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},density:{},dotSize:{},twinkle:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${WG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(WG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,WG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,WG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${WG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),HQ=VQ,UQ=r({__name:`GlassTiles`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{},tileCount:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${GG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(GG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,GG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,GG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${GG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),WQ=UQ,GQ=r({__name:`Grayscale`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${qZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(qZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,qZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,qZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${qZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),KQ=GQ,qQ=r({__name:`Grid`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},cells:{},thickness:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${JZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(JZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,JZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,JZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${JZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),JQ=qQ,YQ=r({__name:`GridDistortion`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},smoothness:{},intensity:{},swirl:{},duration:{},radius:{},gridSize:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${YZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(YZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,YZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,YZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${YZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),XQ=YQ,ZQ=r({__name:`HueShift`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},shift:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${XZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(XZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,XZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,XZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${XZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),QQ=ZQ,$Q=r({__name:`ImageTexture`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},src:{},fit:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${ZZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(ZZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,ZZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,ZZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${ZZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),e$=$Q,t$=r({__name:`Invert`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${QZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(QZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,QZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,QZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${QZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),n$=t$,r$=r({__name:`LinearGradient`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},startColor:{},endColor:{},angle:{},center:{}},{blendMode:`normal`,renderOrder:0,...Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${$Z.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ($Z,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,$Z.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,$Z)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${$Z.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),i$=r$,a$=r({__name:`Liquify`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},smoothness:{},intensity:{},swirl:{},duration:{},radius:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${eQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(eQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,eQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,eQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${eQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),o$=a$,s$=r({__name:`Pixelate`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},scale:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${tQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(tQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,tQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,tQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${tQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),c$=s$,l$=r({__name:`Posterize`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${iQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(iQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,iQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,iQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${iQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),u$=l$,d$=r({__name:`RadialGradient`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},startColor:{},endColor:{},center:{},radius:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${aQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(aQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,aQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,aQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${aQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),f$=d$,p$=r({__name:`Saturation`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${oQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(oQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,oQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,oQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${oQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),m$=p$,h$=r({__name:`SolidColor`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${sQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(sQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,sQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,sQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${sQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),g$=h$,_$=r({__name:`Spiral`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorBack:{},colorFront:{},strokeWidth:{},strokeFalloff:{},softness:{},speed:{},center:{},scale:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${cQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(cQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,cQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,cQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${cQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),v$=_$,y$=r({__name:`Swirl`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorA:{},colorB:{},colorC:{},speed:{},scale:{},complexity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${lQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(lQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,lQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,lQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${lQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),b$=y$,x$=r({__name:`Twirl`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},center:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${uQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(uQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,uQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,uQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${uQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),S$=x$,C$=r({__name:`Vibrance`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${dQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(dQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,dQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,dQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${dQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),w$=C$;const T$=`alphaMap.alphaTest.anisotropy.anisotropyMap.anisotropyRotation.aoMap.aoMapIntensity.attenuationColor.attenuationDistance.bumpMap.clearcoat.clearcoatMap.clearcoatNormalMap.clearcoatNormalScale.clearcoatRoughness.color.dispersion.displacementMap.emissive.emissiveIntensity.emissiveMap.envMap.envMapIntensity.gradientMap.ior.iridescence.iridescenceIOR.iridescenceMap.iridescenceThicknessMap.lightMap.lightMapIntensity.map.matcap.metalness.metalnessMap.normalMap.normalScale.opacity.roughness.roughnessMap.sheen.sheenColor.sheenColorMap.sheenRoughnessMap.shininess.specular.specularColor.specularColorMap.specularIntensity.specularIntensityMap.specularMap.thickness.transmission.transmissionMap`.split(`.`);var E$=class{constructor(e){this.renderObjects=new WeakMap,this.hasNode=this.containsNode(e),this.hasAnimation=e.object.isSkinnedMesh===!0,this.refreshUniforms=T$,this.renderId=0}firstInitialization(e){let t=this.renderObjects.has(e);return t===!1?(this.getRenderObjectData(e),!0):!1}needsVelocity(e){let t=e.getMRT();return t!==null&&t.has(`velocity`)}getRenderObjectData(e){let t=this.renderObjects.get(e);if(t===void 0){let{geometry:n,material:r,object:i}=e;if(t={material:this.getMaterialData(r),geometry:{id:n.id,attributes:this.getAttributesData(n.attributes),indexVersion:n.index?n.index.version:null,drawRange:{start:n.drawRange.start,count:n.drawRange.count}},worldMatrix:i.matrixWorld.clone()},i.center&&(t.center=i.center.clone()),i.morphTargetInfluences&&(t.morphTargetInfluences=i.morphTargetInfluences.slice()),e.bundle!==null&&(t.version=e.bundle.version),t.material.transmission>0){let{width:n,height:r}=e.context;t.bufferWidth=n,t.bufferHeight=r}this.renderObjects.set(e,t)}return t}getAttributesData(e){let t={};for(let n in e){let r=e[n];t[n]={version:r.version}}return t}containsNode(e){let t=e.material;for(let e in t)if(t[e]&&t[e].isNode)return!0;return e.renderer.overrideNodes.modelViewMatrix!==null||e.renderer.overrideNodes.modelNormalViewMatrix!==null}getMaterialData(e){let t={};for(let n of this.refreshUniforms){let r=e[n];if(r==null)continue;typeof r==`object`&&r.clone!==void 0?r.isTexture===!0?t[n]={id:r.id,version:r.version}:t[n]=r.clone():t[n]=r}return t}equals(e){let{object:t,material:n,geometry:r}=e,i=this.getRenderObjectData(e);if(i.worldMatrix.equals(t.matrixWorld)!==!0)return i.worldMatrix.copy(t.matrixWorld),!1;let a=i.material;for(let e in a){let t=a[e],r=n[e];if(t.equals!==void 0){if(t.equals(r)===!1)return t.copy(r),!1}else if(r.isTexture===!0){if(t.id!==r.id||t.version!==r.version)return t.id=r.id,t.version=r.version,!1}else if(t!==r)return a[e]=r,!1}if(a.transmission>0){let{width:t,height:n}=e.context;if(i.bufferWidth!==t||i.bufferHeight!==n)return i.bufferWidth=t,i.bufferHeight=n,!1}let o=i.geometry,s=r.attributes,c=o.attributes,l=Object.keys(c),u=Object.keys(s);if(o.id!==r.id)return o.id=r.id,!1;if(l.length!==u.length)return i.geometry.attributes=this.getAttributesData(s),!1;for(let e of l){let t=c[e],n=s[e];if(n===void 0)return delete c[e],!1;if(t.version!==n.version)return t.version=n.version,!1}let d=r.index,f=o.indexVersion,p=d?d.version:null;if(f!==p)return o.indexVersion=p,!1;if(o.drawRange.start!==r.drawRange.start||o.drawRange.count!==r.drawRange.count)return o.drawRange.start=r.drawRange.start,o.drawRange.count=r.drawRange.count,!1;if(i.morphTargetInfluences){let e=!1;for(let n=0;n<i.morphTargetInfluences.length;n++)i.morphTargetInfluences[n]!==t.morphTargetInfluences[n]&&(e=!0);if(e)return!0}return i.center&&i.center.equals(t.center)===!1?(i.center.copy(t.center),!0):(e.bundle!==null&&(i.version=e.bundle.version),!0)}needsRefresh(e,t){if(this.hasNode||this.hasAnimation||this.firstInitialization(e)||this.needsVelocity(t.renderer))return!0;let{renderId:n}=t;if(this.renderId!==n)return this.renderId=n,!0;let r=e.object.static===!0,i=e.bundle!==null&&e.bundle.static===!0&&this.getRenderObjectData(e).version===e.bundle.version;if(r||i)return!1;let a=this.equals(e)!==!0;return a}};function D$(e,t=0){let n=3735928559^t,r=1103547991^t;if(e instanceof Array)for(let t=0,i;t<e.length;t++)i=e[t],n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);else for(let t=0,i;t<e.length;t++)i=e.charCodeAt(t),n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}const O$=e=>D$(e),k$=e=>D$(e),A$=(...e)=>D$(e);function j$(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of M$(e))n.push(D$(r.slice(0,-4)),i.getCacheKey(t));return D$(n)}function*M$(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;e<r.length;e++){let i=r[e];i&&(i.isNode===!0||t&&typeof i.toJSON==`function`)&&(yield{property:n,index:e,childNode:i})}else if(r&&r.isNode===!0)yield{property:n,childNode:r};else if(typeof r==`object`)for(let e in r){let i=r[e];i&&(i.isNode===!0||t&&typeof i.toJSON==`function`)&&(yield{property:n,index:e,childNode:i})}}}const N$=new Map([[1,`float`],[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),P$=new WeakMap;function F$(e){return N$.get(e)}function I$(e){if(/[iu]?vec\d/.test(e))return e.startsWith(`ivec`)?Int32Array:e.startsWith(`uvec`)?Uint32Array:Float32Array;if(/mat\d/.test(e)||/float/.test(e))return Float32Array;if(/uint/.test(e))return Uint32Array;if(/int/.test(e))return Int32Array;throw Error(`THREE.NodeUtils: Unsupported type: ${e}`)}function L$(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 9;if(/mat4/.test(e))return 16;console.error(`THREE.TSL: Unsupported type:`,e)}function R$(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 12;if(/mat4/.test(e))return 16;console.error(`THREE.TSL: Unsupported type:`,e)}function z$(e){if(/float|int|uint/.test(e))return 4;if(/vec2/.test(e))return 8;if(/vec3/.test(e)||/vec4/.test(e))return 16;if(/mat2/.test(e))return 8;if(/mat3/.test(e))return 48;if(/mat4/.test(e))return 64;console.error(`THREE.TSL: Unsupported type:`,e)}function B$(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?`node`:t===`number`?`float`:t===`boolean`?`bool`:t===`string`?`string`:t===`function`?`shader`:e.isVector2===!0?`vec2`:e.isVector3===!0?`vec3`:e.isVector4===!0?`vec4`:e.isMatrix2===!0?`mat2`:e.isMatrix3===!0?`mat3`:e.isMatrix4===!0?`mat4`:e.isColor===!0?`color`:e instanceof ArrayBuffer?`ArrayBuffer`:null}function V$(e,...t){let n=e?e.slice(-4):void 0;return t.length===1&&(n===`vec2`?t=[t[0],t[0]]:n===`vec3`?t=[t[0],t[0],t[0]]:n===`vec4`&&(t=[t[0],t[0],t[0],t[0]])),e===`color`?new KR(...t):n===`vec2`?new eL(...t):n===`vec3`?new R(...t):n===`vec4`?new wL(...t):n===`mat2`?new TB(...t):n===`mat3`?new iL(...t):n===`mat4`?new eR(...t):e===`bool`?t[0]||!1:e===`float`||e===`int`||e===`uint`?t[0]||0:e===`string`?t[0]||``:e===`ArrayBuffer`?W$(t[0]):null}function H$(e){let t=P$.get(e);return t===void 0&&(t={},P$.set(e,t)),t}function U$(e){let t=``,n=new Uint8Array(e);for(let e=0;e<n.length;e++)t+=String.fromCharCode(n[e]);return btoa(t)}function W$(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0)).buffer}const G$={VERTEX:`vertex`,FRAGMENT:`fragment`},K$={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},q$={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},J$={READ_ONLY:`readOnly`,WRITE_ONLY:`writeOnly`,READ_WRITE:`readWrite`},Y$=[`fragment`,`vertex`],X$=[`setup`,`analyze`,`generate`],Z$=[...Y$,`compute`],Q$=[`x`,`y`,`z`,`w`],$$={analyze:`setup`,generate:`analyze`};let e1=0;var t1=class extends EI{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=K$.NONE,this.updateBeforeType=K$.NONE,this.updateAfterType=K$.NONE,this.uuid=$I.generateUUID(),this.version=0,this.global=!1,this.parents=!1,this.isNode=!0,this._cacheKey=null,this._cacheKeyVersion=0,Object.defineProperty(this,`id`,{value:e1++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,K$.FRAME)}onRenderUpdate(e){return this.onUpdate(e,K$.RENDER)}onObjectUpdate(e){return this.onUpdate(e,K$.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of M$(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=A$(j$(this,e),this.customCacheKey()),this._cacheKeyVersion=this.version),this._cacheKey}customCacheKey(){return 0}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e),n=e.getElementType(t);return n}getMemberType(){return`void`}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e),n=e.getNodeFromHash(t);return n||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return t.outputNode||null}analyze(e,t=null){let n=e.increaseUsage(this);if(this.parents===!0){let n=e.getDataFromNode(this,`any`);n.stages=n.stages||{},n.stages[e.shaderStage]=n.stages[e.shaderStage]||[],n.stages[e.shaderStage].push(t)}if(n===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e,this)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);let r=e.getDataFromNode(this);r.buildStages=r.buildStages||{},r.buildStages[e.buildStage]=!0;let i=$$[e.buildStage];if(i&&r.buildStages[i]!==!0){let t=e.getBuildStage();e.setBuildStage(i),this.build(e),e.setBuildStage(t)}e.addNode(this),e.addChain(this);let a=null,o=e.getBuildStage();if(o===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){t.initialized=!0,t.outputNode=this.setup(e)||t.outputNode||null;for(let n of Object.values(t))if(n&&n.isNode===!0){if(n.parents===!0){let t=e.getNodeProperties(n);t.parents=t.parents||[],t.parents.push(this)}n.build(e)}}a=t.outputNode}else if(o===`analyze`)this.analyze(e,t);else if(o===`generate`){let n=this.generate.length===1;if(n){let n=this.getNodeType(e),r=e.getDataFromNode(this);a=r.snippet,a===void 0?r.generated===void 0?(r.generated=!0,a=this.generate(e)||``,r.snippet=a):(console.warn(`THREE.Node: Recursion detected.`,this),a=``):r.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),a=e.format(a,n,t)}else a=this.generate(e,t)||``}return e.removeChain(this),e.addSequentialNode(this),a}getSerializeChildren(){return M$(this)}serialize(e){let t=this.getSerializeChildren(),n={};for(let{property:r,index:i,childNode:a}of t)i===void 0?n[r]=a.toJSON(e.meta).uuid:(n[r]===void 0&&(n[r]=Number.isInteger(i)?[]:{}),n[r][i]=a.toJSON(e.meta).uuid);Object.keys(n).length>0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){let t=e.meta.nodes;for(let n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){let r=[];for(let i of e.inputNodes[n])r.push(t[i]);this[n]=r}else if(typeof e.inputNodes[n]==`object`){let r={};for(let i in e.inputNodes[n]){let a=e.inputNodes[n][i];r[i]=t[a]}this[n]=r}else{let r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){let{uuid:t,type:n}=this,r=e===void 0||typeof e==`string`;r&&(e={textures:{},images:{},nodes:{}});let i=e.nodes[t];i===void 0&&(i={uuid:t,type:n,meta:e,metadata:{version:4.7,type:`Node`,generator:`Node.toJSON`}},r!==!0&&(e.nodes[i.uuid]=i),this.serialize(i),delete i.meta);function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(r){let t=a(e.textures),n=a(e.images),r=a(e.nodes);t.length>0&&(i.textures=t),n.length>0&&(i.images=n),r.length>0&&(i.nodes=r)}return i}},n1=class extends t1{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){let t=this.indexNode.getNodeType(e),n=this.node.build(e),r=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:`uint`);return`${n}[ ${r} ]`}},r1=class extends t1{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(e){let t=this.node.getNodeType(e),n=null;for(let r of this.convertTo.split(`|`))(n===null||e.getTypeLength(t)===e.getTypeLength(r))&&(n=r);return n}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){let n=this.node,r=this.getNodeType(e),i=n.build(e,r);return e.format(i,r,t)}},i1=class extends t1{static get type(){return`TempNode`}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){let n=e.getBuildStage();if(n===`generate`){let n=e.getVectorType(this.getNodeType(e,t)),r=e.getDataFromNode(this);if(r.propertyName!==void 0)return e.format(r.propertyName,n,t);if(n!==`void`&&t!==`void`&&this.hasDependencies(e)){let i=super.build(e,n),a=e.getVarFromNode(this,null,n),o=e.getPropertyName(a);return e.addLineFlowCode(`${o} = ${i}`,this),r.snippet=i,r.propertyName=o,e.format(r.propertyName,n,t)}}return super.build(e,t)}},a1=class extends i1{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(e){return this.nodeType===null?e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0)):e.getVectorType(this.nodeType)}generate(e,t){let n=this.getNodeType(e),r=e.getTypeLength(n),i=this.nodes,a=e.getComponentType(n),o=[],s=0;for(let t of i){if(s>=r){console.error(`THREE.TSL: Length of parameters exceeds maximum length of function '${n}()' type.`);break}let i=t.getNodeType(e),c=e.getTypeLength(i),l;s+c>r&&(console.error(`THREE.TSL: Length of '${n}()' data exceeds maximum length of output type.`),c=r-s,i=e.getTypeFromLength(c)),s+=c,l=t.build(e,i);let u=e.getComponentType(i);u!==a&&(l=e.format(l,u,a)),o.push(l)}let c=`${e.getType(n)}( ${o.join(`, `)} )`;return e.format(c,n,t)}};const o1=Q$.join(``);var s1=class extends t1{static get type(){return`SplitNode`}constructor(e,t=`x`){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(let t of this.components)e=Math.max(Q$.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}generate(e,t){let n=this.node,r=e.getTypeLength(n.getNodeType(e)),i=null;if(r>1){let a=null,o=this.getVectorLength();o>=r&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let s=n.build(e,a);i=this.components.length===r&&this.components===o1.slice(0,this.components.length)?e.format(s,a,t):e.format(`${s}.${this.components}`,this.getNodeType(e),t)}else i=n.build(e,t);return i}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},c1=class extends i1{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getComponentType(r.getNodeType(e)),o=e.getTypeFromLength(n.length,a),s=r.build(e,o),c=t.build(e,i),l=e.getTypeLength(i),u=[];for(let e=0;e<l;e++){let t=Q$[e];t===n[0]?(u.push(s),e+=n.length-1):u.push(c+`.`+t)}return`${e.getType(i)}( ${u.join(`, `)} )`}},l1=class extends i1{static get type(){return`FlipNode`}constructor(e,t){super(),this.sourceNode=e,this.components=t}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{components:t,sourceNode:n}=this,r=this.getNodeType(e),i=n.build(e),a=e.getVarFromNode(this),o=e.getPropertyName(a);e.addLineFlowCode(o+` = `+i,this);let s=e.getTypeLength(r),c=[],l=0;for(let e=0;e<s;e++){let n=Q$[e];n===t[l]?(c.push(`1.0 - `+(o+`.`+n)),l++):c.push(o+`.`+n)}return`${e.getType(r)}( ${c.join(`, `)} )`}},u1=class extends t1{static get type(){return`InputNode`}constructor(e,t=null){super(t),this.isInputNode=!0,this.value=e,this.precision=null}getNodeType(){return this.nodeType===null?B$(this.value):this.nodeType}getInputType(e){return this.getNodeType(e)}setPrecision(e){return this.precision=e,this}serialize(e){super.serialize(e),e.value=this.value,this.value&&this.value.toArray&&(e.value=this.value.toArray()),e.valueType=B$(this.value),e.nodeType=this.nodeType,e.valueType===`ArrayBuffer`&&(e.value=U$(e.value)),e.precision=this.precision}deserialize(e){super.deserialize(e),this.nodeType=e.nodeType,this.value=Array.isArray(e.value)?V$(e.valueType,...e.value):e.value,this.precision=e.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(e.value))}generate(){console.warn(`Abstract function.`)}};const d1=/float|u?int/;var f1=class extends u1{static get type(){return`ConstNode`}constructor(e,t=null){super(e,t),this.isConstNode=!0}generateConst(e){return e.generateConst(this.getNodeType(e),this.value)}generate(e,t){let n=this.getNodeType(e);return d1.test(n)&&d1.test(t)?e.generateConst(t,this.value):e.format(this.generateConst(e),n,t)}},p1=class extends t1{static get type(){return`MemberNode`}constructor(e,t){super(),this.node=e,this.property=t,this.isMemberNode=!0}getNodeType(e){return this.node.getMemberType(e,this.property)}generate(e){let t=this.node.build(e);return t+`.`+this.property}};let m1=null;const h1=new Map;function H(e,t){if(h1.has(e)){console.warn(`THREE.TSL: Redefinition of method chaining '${e}'.`);return}if(typeof t!=`function`)throw Error(`THREE.TSL: Node element ${e} is not a function`);h1.set(e,t)}const g1=e=>e.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),_1=e=>g1(e).split(``).sort().join(``),v1={setup(e,t){let n=t.shift();return e(W1(n),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(m1.assign(n,...e),n);if(h1.has(t)){let r=h1.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&h1.has(t.slice(0,t.length-6))){let r=h1.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=g1(t),U(new s1(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=_1(t.slice(3).toLowerCase()),n=>U(new c1(e,t,U(n)));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=_1(t.slice(4).toLowerCase()),()=>U(new l1(U(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),U(new s1(e,t));else if(/^\d+$/.test(t)===!0)return U(new n1(n,new f1(Number(t),`uint`)));else if(/^get$/.test(t)===!0)return e=>U(new p1(n,e))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},y1=new WeakMap,b1=new WeakMap,x1=function(e,t=null){let n=B$(e);if(n===`node`){let t=y1.get(e);return t===void 0&&(t=new Proxy(e,v1),y1.set(e,t),y1.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return U(R1(e,t));else if(n===`shader`)return K(e);return e},S1=function(e,t=null){for(let n in e)e[n]=U(e[n],t);return e},C1=function(e,t=null){let n=e.length;for(let r=0;r<n;r++)e[r]=U(e[r],t);return e},w1=function(e,t=null,n=null,r=null){let i=e=>U(r===null?e:Object.assign(e,r)),a,o=t,s,c;function l(t){let n;return n=o?/[a-z]/i.test(o)?o+`()`:o:e.type,s!==void 0&&t.length<s?(console.error(`THREE.TSL: "${n}" parameter length is less than minimum required.`),t.concat(Array(s-t.length).fill(0))):c!==void 0&&t.length>c?(console.error(`THREE.TSL: "${n}" parameter length exceeds limit.`),t.slice(0,c)):t}return t===null?a=(...t)=>i(new e(...G1(l(t)))):n===null?a=(...n)=>i(new e(t,...G1(l(n)))):(n=U(n),a=(...r)=>i(new e(t,...G1(l(r)),n))),a.setParameterLength=(...e)=>(e.length===1?s=c=e[0]:e.length===2&&([s,c]=e),a),a.setName=e=>(o=e,a),a},T1=function(e,...t){return U(new e(...G1(t)))};var E1=class extends t1{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t,this.isShaderCallNodeInternal=!0}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t),i=t.namespace&&t.namespace===e.namespace?e.getNamespace(`once`):`once`;if(r[i])return r[i];let a=null;if(t.layout){let r=b1.get(e.constructor);r===void 0&&(r=new WeakMap,b1.set(e.constructor,r));let i=r.get(t);i===void 0&&(i=U(e.buildFunctionNode(t)),r.set(t,i)),e.addInclude(i),a=U(i.call(n))}else{let r=t.jsFunc,i=n!==null||r.length>1?r(n||[],e):r(e);a=U(i)}return t.once&&(r[i]=a),a}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let t=e.getNodeProperties(this),n=e.getOutputNamespace();return t[n]=t[n]||this.setupOutput(e),t[n]}build(e,t=null){let n=null,r=e.getBuildStage(),i=e.getNodeProperties(this),a=e.getOutputNamespace(),o=this.getOutputNode(e);if(r===`setup`){let t=e.getNamespace(`initialized`);i[t]!==!0&&(i[t]=!0,i[a]=this.getOutputNode(e),i[a].build(e)),n=i[a]}else r===`analyze`?o.build(e,t):r===`generate`&&(n=o.build(e,t)||``);return n}},D1=class extends t1{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1,this.namespace=null}setLayout(e){return this.layout=e,this}call(e=null){return W1(e),U(new E1(this,e))}setup(){return this.call()}};const O1=[!1,!0],k1=[0,1,2,3],A1=[-1,-2],j1=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],M1=new Map;for(let e of O1)M1.set(e,new f1(e));const N1=new Map;for(let e of k1)N1.set(e,new f1(e,`uint`));const P1=new Map([...N1].map(e=>new f1(e.value,`int`)));for(let e of A1)P1.set(e,new f1(e,`int`));const F1=new Map([...P1].map(e=>new f1(e.value)));for(let e of j1)F1.set(e,new f1(e));for(let e of j1)F1.set(-e,new f1(-e));const I1={bool:M1,uint:N1,ints:P1,float:F1},L1=new Map([...M1,...F1]),R1=(e,t)=>L1.has(e)?L1.get(e):e.isNode===!0?e:new f1(e,t),z1=e=>{try{return e.getNodeType()}catch{return}},B1=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[V$(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return U(t.get(n[0]));if(n.length===1){let t=R1(n[0],e);return z1(t)===e?U(t):U(new r1(t,e))}let r=n.map(e=>R1(e));return U(new a1(r,e))}},V1=e=>typeof e==`object`&&e?e.value:e,H1=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function U1(e,t){return new Proxy(new D1(e,t),v1)}const U=(e,t=null)=>x1(e,t),W1=(e,t=null)=>new S1(e,t),G1=(e,t=null)=>new C1(e,t),W=(...e)=>new w1(...e),G=(...e)=>new T1(...e);let K1=0;const K=(e,t=null)=>{let n=null;t!==null&&(typeof t==`object`?n=t.return:(typeof t==`string`?n=t:console.error(`THREE.TSL: Invalid layout type.`),t=null));let r=new U1(e,n),i=(...e)=>{let t;W1(e);let i=e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype);t=i?[...e]:e[0];let a=r.call(t);return n===`void`&&a.toStack(),a};if(i.shaderNode=r,i.id=r.id,i.getNodeType=(...e)=>r.getNodeType(...e),i.getCacheKey=(...e)=>r.getCacheKey(...e),i.setLayout=e=>(r.setLayout(e),i),i.once=(e=null)=>(r.once=!0,r.namespace=e,i),t!==null){if(typeof t.inputs!=`object`){let e={name:`fn`+ K1++,type:n,inputs:[]};for(let n in t){if(n===`return`)continue;e.inputs.push({name:n,type:t[n]})}t=e}i.setLayout(t)}return i},q1=e=>{m1=e},J1=()=>m1,Y1=(...e)=>m1.If(...e),X1=(...e)=>m1.Switch(...e);function Z1(e){return m1&&m1.add(e),e}H(`toStack`,Z1);const Q1=new B1(`color`),q=new B1(`float`,I1.float),J=new B1(`int`,I1.ints),$1=new B1(`uint`,I1.uint),e0=new B1(`bool`,I1.bool),Y=new B1(`vec2`),t0=new B1(`ivec2`),n0=new B1(`uvec2`),r0=new B1(`bvec2`),X=new B1(`vec3`),i0=new B1(`ivec3`),a0=new B1(`uvec3`),o0=new B1(`bvec3`),s0=new B1(`vec4`),c0=new B1(`ivec4`),l0=new B1(`uvec4`),u0=new B1(`bvec4`),d0=new B1(`mat2`),f0=new B1(`mat3`),p0=new B1(`mat4`),m0=(e=``)=>U(new f1(e,`string`)),h0=e=>U(new f1(e,`ArrayBuffer`));H(`toColor`,Q1),H(`toFloat`,q),H(`toInt`,J),H(`toUint`,$1),H(`toBool`,e0),H(`toVec2`,Y),H(`toIVec2`,t0),H(`toUVec2`,n0),H(`toBVec2`,r0),H(`toVec3`,X),H(`toIVec3`,i0),H(`toUVec3`,a0),H(`toBVec3`,o0),H(`toVec4`,s0),H(`toIVec4`,c0),H(`toUVec4`,l0),H(`toBVec4`,u0),H(`toMat2`,d0),H(`toMat3`,f0),H(`toMat4`,p0);const g0=W(n1).setParameterLength(2),_0=(e,t)=>U(new r1(U(e),t)),v0=(e,t)=>U(new s1(U(e),t));H(`element`,g0),H(`convert`,_0);const y0=e=>(console.warn(`THREE.TSL: append() has been renamed to Stack().`),Z1(e));H(`append`,e=>(console.warn(`THREE.TSL: .append() has been renamed to .toStack().`),Z1(e)));const b0=(...e)=>(console.warn(`THREE.TSL: tslFn() has been renamed to Fn().`),K(...e));var x0=class extends t1{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0,this.global=!0}getHash(e){return this.name||super.getHash(e)}generate(e){let t;return this.varying===!0?(t=e.getVaryingFromNode(this,this.name),t.needsInterpolation=!0):t=e.getVarFromNode(this,this.name),e.getPropertyName(t)}};const S0=(e,t)=>U(new x0(e,t)),C0=(e,t)=>U(new x0(e,t,!0)),w0=G(x0,`vec4`,`DiffuseColor`),T0=G(x0,`vec3`,`EmissiveColor`),E0=G(x0,`float`,`Roughness`),D0=G(x0,`float`,`Metalness`),O0=G(x0,`float`,`Clearcoat`),k0=G(x0,`float`,`ClearcoatRoughness`),A0=G(x0,`vec3`,`Sheen`),j0=G(x0,`float`,`SheenRoughness`),M0=G(x0,`float`,`Iridescence`),N0=G(x0,`float`,`IridescenceIOR`),P0=G(x0,`float`,`IridescenceThickness`),F0=G(x0,`float`,`AlphaT`),I0=G(x0,`float`,`Anisotropy`),L0=G(x0,`vec3`,`AnisotropyT`),R0=G(x0,`vec3`,`AnisotropyB`),z0=G(x0,`color`,`SpecularColor`),B0=G(x0,`float`,`SpecularF90`),V0=G(x0,`float`,`Shininess`),H0=G(x0,`vec4`,`Output`),U0=G(x0,`float`,`dashSize`),W0=G(x0,`float`,`gapSize`),G0=G(x0,`float`,`pointWidth`),K0=G(x0,`float`,`IOR`),q0=G(x0,`float`,`Transmission`),J0=G(x0,`float`,`Thickness`),Y0=G(x0,`float`,`AttenuationDistance`),X0=G(x0,`color`,`AttenuationColor`),Z0=G(x0,`float`,`Dispersion`);var Q0=class extends t1{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.shared=t,this.order=n,this.isUniformGroup=!0}serialize(e){super.serialize(e),e.name=this.name,e.version=this.version,e.shared=this.shared}deserialize(e){super.deserialize(e),this.name=e.name,this.version=e.version,this.shared=e.shared}};const $0=e=>new Q0(e),e2=(e,t=0)=>new Q0(e,!0,t),t2=e2(`frame`),n2=e2(`render`),r2=$0(`object`);var i2=class extends u1{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=r2}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},t)}generate(e,t){let n=this.getNodeType(e),r=this.getUniformHash(e),i=e.getNodeFromHash(r);i===void 0&&(e.setHashNode(this,r),i=this);let a=i.getInputType(e),o=e.getUniformFromNode(i,a,e.shaderStage,this.name||e.context.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};const a2=(e,t)=>{let n=H1(t||e),r=e&&e.isNode===!0?e.node&&e.node.value||e.value:e;return U(new i2(r,n))};var o2=class extends i1{static get type(){return`ArrayNode`}constructor(e,t,n=null){super(e),this.count=t,this.values=n,this.isArrayNode=!0}getNodeType(e){return this.nodeType===null&&(this.nodeType=this.values[0].getNodeType(e)),this.nodeType}getElementType(e){return this.getNodeType(e)}generate(e){let t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}};const s2=(...e)=>{let t;if(e.length===1){let n=e[0];t=new o2(null,n.length,n)}else{let n=e[0],r=e[1];t=new o2(n,r)}return U(t)};H(`toArray`,(e,t)=>s2(Array(t).fill(e)));var c2=class extends i1{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}getNodeType(e,t){return t===`void`?`void`:this.targetNode.getNodeType(e)}needsSplitAssign(e){let{targetNode:t}=this;if(e.isAvailable(`swizzleAssign`)===!1&&t.isSplitNode&&t.components.length>1){let n=e.getTypeLength(t.node.getNodeType(e)),r=Q$.join(``).slice(0,n)!==t.components;return r}return!1}setup(e){let{targetNode:t,sourceNode:n}=this,r=e.getNodeProperties(this);r.sourceNode=n,r.targetNode=t.context({assign:!0})}generate(e,t){let{targetNode:n,sourceNode:r}=e.getNodeProperties(this),i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node,l=c.node.context({assign:!0}),d=l.build(e);for(let t=0;t<c.components.length;t++){let n=c.components[t];e.addLineFlowCode(`${d}.${n} = ${i}[ ${t} ]`,this)}t!==`void`&&(u=o)}else u=`${o} = ${s}`,(t===`void`||c===`void`)&&(e.addLineFlowCode(u,this),t!==`void`&&(u=o));return l.initialized=!0,e.format(u,a,t)}};const l2=W(c2).setParameterLength(2);H(`assign`,l2);var u2=class extends i1{static get type(){return`FunctionCallNode`}constructor(e=null,t={}){super(),this.functionNode=e,this.parameters=t}setParameters(e){return this.parameters=e,this}getParameters(){return this.parameters}getNodeType(e){return this.functionNode.getNodeType(e)}generate(e){let t=[],n=this.functionNode,r=n.getInputs(e),i=this.parameters,a=(t,n)=>{let r=n.type,i=r===`pointer`,a;return a=i?`&`+t.build(e):t.build(e,r),a};if(Array.isArray(i)){if(i.length>r.length)console.error(`THREE.TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'.`),i.length=r.length;else if(i.length<r.length)for(console.error(`THREE.TSL: The number of provided parameters is less than the expected number of inputs in 'Fn()'.`);i.length<r.length;)i.push(q(0));for(let e=0;e<i.length;e++)t.push(a(i[e],r[e]))}else for(let e of r){let n=i[e.name];n===void 0?(console.error(`THREE.TSL: Input '${e.name}' not found in \'Fn()\'.`),t.push(a(q(0),e))):t.push(a(n,e))}let o=n.build(e,`property`);return`${o}( ${t.join(`, `)} )`}};const d2=(e,...t)=>(t=t.length>1||t[0]&&t[0].isNode===!0?G1(t):W1(t[0]),U(new u2(U(e),t)));H(`call`,d2);const f2={"==":`equal`,"!=":`notEqual`,"<":`lessThan`,">":`greaterThan`,"<=":`lessThanEqual`,">=":`greaterThanEqual`,"%":`mod`};var p2=class e extends i1{static get type(){return`OperatorNode`}constructor(t,n,r,...i){if(super(),i.length>0){let a=new e(t,n,r);for(let n=0;n<i.length-1;n++)a=new e(t,a,i[n]);n=a,r=i[i.length-1]}this.op=t,this.aNode=n,this.bNode=r,this.isOperatorNode=!0}getOperatorMethod(e,t){return e.getMethod(f2[this.op],t)}getNodeType(e){let t=this.op,n=this.aNode,r=this.bNode,i=n.getNodeType(e),a=r?r.getNodeType(e):null;if(i===`void`||a===`void`)return`void`;if(t===`%`)return i;if(t===`~`||t===`&`||t===`|`||t===`^`||t===`>>`||t===`<<`)return e.getIntegerType(i);if(t===`!`||t===`&&`||t===`||`||t===`^^`)return`bool`;if(t===`==`||t===`!=`||t===`<`||t===`>`||t===`<=`||t===`>=`){let t=Math.max(e.getTypeLength(i),e.getTypeLength(a));return t>1?`bvec${t}`:`bool`}else{if(e.isMatrix(i)){if(a===`float`)return i;if(e.isVector(a))return e.getVectorFromMatrix(i);if(e.isMatrix(a))return i}else if(e.isMatrix(a)){if(i===`float`)return a;if(e.isVector(i))return e.getVectorFromMatrix(a)}return e.getTypeLength(a)>e.getTypeLength(i)?a:i}}generate(e,t){let n=this.op,{aNode:r,bNode:i}=this,a=this.getNodeType(e),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i?i.getNodeType(e):null,n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`||n===`!=`?e.isVector(o)?s=o:e.isVector(s)?o=s:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):n===`%`?(o=a,s=e.isInteger(o)&&e.isInteger(s)?s:o):e.isMatrix(o)?s===`float`?s=`float`:e.isVector(s)?s=e.getVectorFromMatrix(o):e.isMatrix(s)||(o=s=a):o=e.isMatrix(s)?o===`float`?`float`:e.isVector(o)?e.getVectorFromMatrix(s):s=a:s=a);let c=r.build(e,o),l=i?i.build(e,s):null,u=e.getFunctionOperator(n);if(t!==`void`){let r=e.renderer.coordinateSystem===wI;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`)return r&&e.isVector(o)?e.format(`${this.getOperatorMethod(e,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(n===`%`)return e.isInteger(s)?e.format(`( ${c} % ${l} )`,a,t):e.format(`${this.getOperatorMethod(e,a)}( ${c}, ${l} )`,a,t);if(n===`!`||n===`~`)return e.format(`(${n}${c})`,o,t);if(u)return e.format(`${u}( ${c}, ${l} )`,a,t);if(e.isMatrix(o)&&s===`float`)return e.format(`( ${l} ${n} ${c} )`,a,t);if(o===`float`&&e.isMatrix(s))return e.format(`${c} ${n} ${l}`,a,t);{let i=`( ${c} ${n} ${l} )`;return!r&&a===`bool`&&e.isVector(o)&&e.isVector(s)&&(i=`all${i}`),e.format(i,a,t)}}else if(o!==`void`)return u?e.format(`${u}( ${c}, ${l} )`,a,t):e.isMatrix(o)&&s===`float`?e.format(`${l} ${n} ${c}`,a,t):e.format(`${c} ${n} ${l}`,a,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}};const m2=W(p2,`+`).setParameterLength(2,1/0).setName(`add`),h2=W(p2,`-`).setParameterLength(2,1/0).setName(`sub`),g2=W(p2,`*`).setParameterLength(2,1/0).setName(`mul`),_2=W(p2,`/`).setParameterLength(2,1/0).setName(`div`),v2=W(p2,`%`).setParameterLength(2).setName(`mod`),y2=W(p2,`==`).setParameterLength(2).setName(`equal`),b2=W(p2,`!=`).setParameterLength(2).setName(`notEqual`),x2=W(p2,`<`).setParameterLength(2).setName(`lessThan`),S2=W(p2,`>`).setParameterLength(2).setName(`greaterThan`),C2=W(p2,`<=`).setParameterLength(2).setName(`lessThanEqual`),w2=W(p2,`>=`).setParameterLength(2).setName(`greaterThanEqual`),T2=W(p2,`&&`).setParameterLength(2,1/0).setName(`and`),E2=W(p2,`||`).setParameterLength(2,1/0).setName(`or`),D2=W(p2,`!`).setParameterLength(1).setName(`not`),O2=W(p2,`^^`).setParameterLength(2).setName(`xor`),k2=W(p2,`&`).setParameterLength(2).setName(`bitAnd`),A2=W(p2,`~`).setParameterLength(2).setName(`bitNot`),j2=W(p2,`|`).setParameterLength(2).setName(`bitOr`),M2=W(p2,`^`).setParameterLength(2).setName(`bitXor`),N2=W(p2,`<<`).setParameterLength(2).setName(`shiftLeft`),P2=W(p2,`>>`).setParameterLength(2).setName(`shiftRight`),F2=K(([e])=>(e.addAssign(1),e)),I2=K(([e])=>(e.subAssign(1),e)),L2=K(([e])=>{let t=J(e).toConst();return e.addAssign(1),t}),R2=K(([e])=>{let t=J(e).toConst();return e.subAssign(1),t});H(`add`,m2),H(`sub`,h2),H(`mul`,g2),H(`div`,_2),H(`mod`,v2),H(`equal`,y2),H(`notEqual`,b2),H(`lessThan`,x2),H(`greaterThan`,S2),H(`lessThanEqual`,C2),H(`greaterThanEqual`,w2),H(`and`,T2),H(`or`,E2),H(`not`,D2),H(`xor`,O2),H(`bitAnd`,k2),H(`bitNot`,A2),H(`bitOr`,j2),H(`bitXor`,M2),H(`shiftLeft`,N2),H(`shiftRight`,P2),H(`incrementBefore`,F2),H(`decrementBefore`,I2),H(`increment`,L2),H(`decrement`,R2);const z2=(e,t)=>(console.warn(`THREE.TSL: "remainder()" is deprecated. Use "mod( int( ... ) )" instead.`),v2(e,t)),B2=(e,t)=>(console.warn(`THREE.TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.`),v2(J(e),J(t)));H(`remainder`,z2),H(`modInt`,B2);var Z=class e extends i1{static get type(){return`MathNode`}constructor(t,n,r=null,i=null){if(super(),(t===e.MAX||t===e.MIN)&&arguments.length>3){let a=new e(t,n,r);for(let n=2;n<arguments.length-1;n++)a=new e(t,a,arguments[n]);n=a,r=arguments[arguments.length-1],i=null}this.method=t,this.aNode=n,this.bNode=r,this.cNode=i,this.isMathNode=!0}getInputType(e){let t=this.aNode.getNodeType(e),n=this.bNode?this.bNode.getNodeType(e):null,r=this.cNode?this.cNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n),o=e.isMatrix(r)?0:e.getTypeLength(r);return i>a&&i>o?t:a>o?n:o>i?r:t}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL||n===e.ANY?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):this.getInputType(t)}setup(t){let{aNode:n,bNode:r,method:i}=this,a=null;if(i===e.ONE_MINUS)a=h2(1,n);else if(i===e.RECIPROCAL)a=_2(1,n);else if(i===e.DIFFERENCE)a=d4(h2(n,r));else if(i===e.TRANSFORM_DIRECTION){let e=n,i=r;t.isMatrix(e.getNodeType(t))?i=s0(X(i),0):e=s0(X(e),0);let o=g2(e,i).xyz;a=r4(o)}return a===null?super.setup(t):a}generate(t,n){let r=t.getNodeProperties(this);if(r.outputNode)return super.generate(t,n);let i=this.method,a=this.getNodeType(t),o=this.getInputType(t),s=this.aNode,c=this.bNode,l=this.cNode,u=t.renderer.coordinateSystem;if(i===e.NEGATE)return t.format(`( - `+s.build(t,o)+` )`,a,n);{let r=[];return i===e.CROSS?r.push(s.build(t,a),c.build(t,a)):u===wI&&i===e.STEP?r.push(s.build(t,t.getTypeLength(s.getNodeType(t))===1?`float`:o),c.build(t,o)):u===wI&&(i===e.MIN||i===e.MAX)?r.push(s.build(t,o),c.build(t,t.getTypeLength(c.getNodeType(t))===1?`float`:o)):i===e.REFRACT?r.push(s.build(t,o),c.build(t,o),l.build(t,`float`)):i===e.MIX?r.push(s.build(t,o),c.build(t,o),l.build(t,t.getTypeLength(l.getNodeType(t))===1?`float`:o)):(u===TI&&i===e.ATAN&&c!==null&&(i=`atan2`),t.shaderStage!==`fragment`&&(i===e.DFDX||i===e.DFDY)&&(console.warn(`THREE.TSL: '${i}' is not supported in the ${t.shaderStage} stage.`),i=`/*`+i+`*/`),r.push(s.build(t,o)),c!==null&&r.push(c.build(t,o)),l!==null&&r.push(l.build(t,o))),t.format(`${t.getMethod(i,a)}( ${r.join(`, `)} )`,a,n)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Z.ALL=`all`,Z.ANY=`any`,Z.RADIANS=`radians`,Z.DEGREES=`degrees`,Z.EXP=`exp`,Z.EXP2=`exp2`,Z.LOG=`log`,Z.LOG2=`log2`,Z.SQRT=`sqrt`,Z.INVERSE_SQRT=`inversesqrt`,Z.FLOOR=`floor`,Z.CEIL=`ceil`,Z.NORMALIZE=`normalize`,Z.FRACT=`fract`,Z.SIN=`sin`,Z.COS=`cos`,Z.TAN=`tan`,Z.ASIN=`asin`,Z.ACOS=`acos`,Z.ATAN=`atan`,Z.ABS=`abs`,Z.SIGN=`sign`,Z.LENGTH=`length`,Z.NEGATE=`negate`,Z.ONE_MINUS=`oneMinus`,Z.DFDX=`dFdx`,Z.DFDY=`dFdy`,Z.ROUND=`round`,Z.RECIPROCAL=`reciprocal`,Z.TRUNC=`trunc`,Z.FWIDTH=`fwidth`,Z.TRANSPOSE=`transpose`,Z.BITCAST=`bitcast`,Z.EQUALS=`equals`,Z.MIN=`min`,Z.MAX=`max`,Z.STEP=`step`,Z.REFLECT=`reflect`,Z.DISTANCE=`distance`,Z.DIFFERENCE=`difference`,Z.DOT=`dot`,Z.CROSS=`cross`,Z.POW=`pow`,Z.TRANSFORM_DIRECTION=`transformDirection`,Z.MIX=`mix`,Z.CLAMP=`clamp`,Z.REFRACT=`refract`,Z.SMOOTHSTEP=`smoothstep`,Z.FACEFORWARD=`faceforward`;const V2=q(1e-6),H2=q(1e6),U2=q(Math.PI),W2=q(Math.PI*2),G2=W(Z,Z.ALL).setParameterLength(1),K2=W(Z,Z.ANY).setParameterLength(1),q2=W(Z,Z.RADIANS).setParameterLength(1),J2=W(Z,Z.DEGREES).setParameterLength(1),Y2=W(Z,Z.EXP).setParameterLength(1),X2=W(Z,Z.EXP2).setParameterLength(1),Z2=W(Z,Z.LOG).setParameterLength(1),Q2=W(Z,Z.LOG2).setParameterLength(1),$2=W(Z,Z.SQRT).setParameterLength(1),e4=W(Z,Z.INVERSE_SQRT).setParameterLength(1),t4=W(Z,Z.FLOOR).setParameterLength(1),n4=W(Z,Z.CEIL).setParameterLength(1),r4=W(Z,Z.NORMALIZE).setParameterLength(1),i4=W(Z,Z.FRACT).setParameterLength(1),a4=W(Z,Z.SIN).setParameterLength(1),o4=W(Z,Z.COS).setParameterLength(1),s4=W(Z,Z.TAN).setParameterLength(1),c4=W(Z,Z.ASIN).setParameterLength(1),l4=W(Z,Z.ACOS).setParameterLength(1),u4=W(Z,Z.ATAN).setParameterLength(1,2),d4=W(Z,Z.ABS).setParameterLength(1),f4=W(Z,Z.SIGN).setParameterLength(1),p4=W(Z,Z.LENGTH).setParameterLength(1),m4=W(Z,Z.NEGATE).setParameterLength(1),h4=W(Z,Z.ONE_MINUS).setParameterLength(1),g4=W(Z,Z.DFDX).setParameterLength(1),_4=W(Z,Z.DFDY).setParameterLength(1),v4=W(Z,Z.ROUND).setParameterLength(1),y4=W(Z,Z.RECIPROCAL).setParameterLength(1),b4=W(Z,Z.TRUNC).setParameterLength(1),x4=W(Z,Z.FWIDTH).setParameterLength(1),S4=W(Z,Z.TRANSPOSE).setParameterLength(1),C4=W(Z,Z.BITCAST).setParameterLength(2),w4=(e,t)=>(console.warn(`THREE.TSL: "equals" is deprecated. Use "equal" inside a vector instead, like: "bvec*( equal( ... ) )"`),y2(e,t)),T4=W(Z,Z.MIN).setParameterLength(2,1/0),E4=W(Z,Z.MAX).setParameterLength(2,1/0),D4=W(Z,Z.STEP).setParameterLength(2),O4=W(Z,Z.REFLECT).setParameterLength(2),k4=W(Z,Z.DISTANCE).setParameterLength(2),A4=W(Z,Z.DIFFERENCE).setParameterLength(2),j4=W(Z,Z.DOT).setParameterLength(2),M4=W(Z,Z.CROSS).setParameterLength(2),N4=W(Z,Z.POW).setParameterLength(2),P4=W(Z,Z.POW,2).setParameterLength(1),F4=W(Z,Z.POW,3).setParameterLength(1),I4=W(Z,Z.POW,4).setParameterLength(1),L4=W(Z,Z.TRANSFORM_DIRECTION).setParameterLength(2),R4=e=>g2(f4(e),N4(d4(e),1/3)),z4=e=>j4(e,e),B4=W(Z,Z.MIX).setParameterLength(3),V4=(e,t=0,n=1)=>U(new Z(Z.CLAMP,U(e),U(t),U(n))),H4=e=>V4(e),U4=W(Z,Z.REFRACT).setParameterLength(3),W4=W(Z,Z.SMOOTHSTEP).setParameterLength(3),G4=W(Z,Z.FACEFORWARD).setParameterLength(3),K4=K(([e])=>{let t=12.9898,n=78.233,r=43758.5453,i=j4(e.xy,Y(t,n)),a=v2(i,U2);return i4(a4(a).mul(r))}),q4=(e,t,n)=>B4(t,n,e),J4=(e,t,n)=>W4(t,n,e),Y4=(e,t)=>(console.warn(`THREE.TSL: "atan2" is overloaded. Use "atan" instead.`),u4(e,t)),Poe=G4,Foe=e4;H(`all`,G2),H(`any`,K2),H(`equals`,w4),H(`radians`,q2),H(`degrees`,J2),H(`exp`,Y2),H(`exp2`,X2),H(`log`,Z2),H(`log2`,Q2),H(`sqrt`,$2),H(`inverseSqrt`,e4),H(`floor`,t4),H(`ceil`,n4),H(`normalize`,r4),H(`fract`,i4),H(`sin`,a4),H(`cos`,o4),H(`tan`,s4),H(`asin`,c4),H(`acos`,l4),H(`atan`,u4),H(`abs`,d4),H(`sign`,f4),H(`length`,p4),H(`lengthSq`,z4),H(`negate`,m4),H(`oneMinus`,h4),H(`dFdx`,g4),H(`dFdy`,_4),H(`round`,v4),H(`reciprocal`,y4),H(`trunc`,b4),H(`fwidth`,x4),H(`atan2`,Y4),H(`min`,T4),H(`max`,E4),H(`step`,D4),H(`reflect`,O4),H(`distance`,k4),H(`dot`,j4),H(`cross`,M4),H(`pow`,N4),H(`pow2`,P4),H(`pow3`,F4),H(`pow4`,I4),H(`transformDirection`,L4),H(`mix`,q4),H(`clamp`,V4),H(`refract`,U4),H(`smoothstep`,J4),H(`faceForward`,G4),H(`difference`,A4),H(`saturate`,H4),H(`cbrt`,R4),H(`transpose`,S4),H(`rand`,K4);var Ioe=class extends t1{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return this.setup(e),this.getNodeType(e);let r=t.getNodeType(e);if(n!==null){let t=n.getNodeType(e);if(e.getTypeLength(t)>e.getTypeLength(r))return t}return r}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=r?r.context({nodeBlock:r}):null}generate(e,t){let n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;let{condNode:i,ifNode:a,elseNode:o}=e.getNodeProperties(this),s=e.currentFunctionNode,c=t!==`void`,l=c?S0(n).build(e):``;r.nodeProperty=l;let u=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${u} ) {\n\n`).addFlowTab();let d=a.build(e,n);if(d&&(c?d=l+` = `+d+`;`:(d=`return `+d+`;`,s===null&&(console.warn(`THREE.TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`),d=`// `+d))),e.removeFlowTab().addFlowCode(e.tab+` `+d+`
410
+ `,t===null?console.log(a):t(e,a),n}};const VZ=(e,t=null)=>yJ(new BZ(yJ(e),t));z(`debug`,VZ);const HZ=CJ(([e])=>KZ(e.rgb)),UZ=CJ(([e,t=EJ(1)])=>t.mix(KZ(e.rgb),e.rgb)),WZ=CJ(([e,t=EJ(1)])=>{let n=YJ(e.r,e.g,e.b).div(3),r=e.r.max(e.g.max(e.b)),i=r.sub(n).mul(t).mul(-3);return _X(e.rgb,r,i)}),GZ=CJ(([e,t=EJ(1)])=>{let n=PJ(.57735,.57735,.57735),r=t.cos();return PJ(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(cX(n,e.rgb).mul(r.oneMinus())))))}),KZ=(e,t=PJ(BK.getLuminanceCoefficients(new ZK)))=>cX(e,t),qZ={name:`Grayscale`,category:`Color Adjustments`,props:{},fragmentNode:({childNode:e})=>{let{vec4:t}=QO;if(!e)return console.error(`You must pass a child component into the Grayscale shader.`),t(0);let n=e||t(0,0,0,0);return t(HZ(n.rgb).rgb,n.a)}},JZ={name:`Grid`,category:`Shapes & Masks`,props:{color:{default:`#ffffff`,transform:zG,description:`The color of the grid lines`,ui:{type:`color`,label:`Color`}},cells:{default:10,description:`Number of cells along the shortest canvas edge (creates square cells)`,ui:{type:`range`,min:1,max:50,step:1,label:`Cells`}},thickness:{default:1,description:`Thickness of grid lines (normalized, 0.0-1.0)`,ui:{type:`range`,min:0,max:5,step:.1,label:`Thickness`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,vec4:n,fract:r,max:i,screenUV:a,viewportSize:o,fwidth:s,smoothstep:c}=QO,l=o.x.div(o.y),u=t(a.x.mul(l),a.y.oneMinus()),d=e.cells.uniform,f=u.mul(d),p=r(f),m=e.thickness.uniform.mul(.01),h=p.x.min(p.x.oneMinus()),g=p.y.min(p.y.oneMinus()),_=s(f),v=c(m.add(_.x),m,h),y=c(m.add(_.y),m,g),b=i(v,y);return n(e.color.uniform.rgb,e.color.uniform.a.mul(b))}},YZ={name:`GridDistortion`,category:`Distortions`,requiresRTT:!0,props:{smoothness:{default:0,description:`How smooth and flowing the motion is`,ui:{type:`range`,min:0,max:1,step:.01,label:`Smoothness`}},intensity:{default:1,description:`Strength of the distortion effect`,ui:{type:`range`,min:0,max:5,step:.1,label:`Intensity`}},swirl:{default:0,description:`Amount of swirl motion`,ui:{type:`range`,min:0,max:2,step:.1,label:`Swirl`}},duration:{default:3,description:`How long the effect persists (higher = longer)`,ui:{type:`range`,min:0,max:10,step:.1,label:`Duration`}},radius:{default:1,description:`Radius of the distortion effect`,ui:{type:`range`,min:0,max:3,step:.01,label:`Radius`}},gridSize:{default:20,description:`Resolution of the distortion grid (higher = more detailed)`,ui:{type:`range`,min:8,max:128,step:1,label:`Grid Size`}}},fragmentNode:({uniforms:e,onBeforeRender:t,childNode:n,onCleanup:r,dimensions:i})=>{let{vec2:a,vec4:o,float:s,uniform:c,screenUV:l,convertToTexture:u,texture:d}=QO;if(!n)return o(0,0,0,0);let f=Math.round(i.width),p=Math.round(i.height),m=u(n,f,p),h=Math.max(8,Math.min(128,Math.floor(e.gridSize.uniform.value))),g=new Float32Array(h*h*2),_=new Iz(g,h,h,QF,qF);_.magFilter=HF,_.minFilter=HF,_.needsUpdate=!0;let v=d(_),y=c(.5),b=c(.5),x=c(0),S=c(0),ee=.5,te=.5,ne=Date.now();t(({pointer:t})=>{let n=Date.now(),r=Math.min((n-ne)/1e3,.016);ne=n;let i=r>0?(t.x-ee)/r:0,a=r>0?(t.y-te)/r:0;x.value=x.value*.85+i*.15,S.value=S.value*.85+a*.15,y.value=t.x,b.value=t.y;let o=e.duration.uniform.value,s=e.intensity.uniform.value,c=e.radius.uniform.value*.05,l=e.swirl.uniform.value;for(let e=0;e<h;e++)for(let n=0;n<h;n++){let u=(e*h+n)*2;g[u]*=1-o*r,g[u+1]*=1-o*r;let d=(n+.5)/h,f=(e+.5)/h,p=d-t.x,m=f-t.y,_=Math.sqrt(p*p+m*m);if(_<c*2&&Math.abs(i)+Math.abs(a)>.01){let e=Math.exp(-_*_/(c*c));if(g[u]+=x.value*e*s*r*.5,g[u+1]+=S.value*e*s*r*.5,l>0){let t=Math.atan2(m,p)+Math.PI*.5;g[u]+=Math.cos(t)*l*e*r*2,g[u+1]+=Math.sin(t)*l*e*r*2}}g[u]=Math.max(-1,Math.min(1,g[u])),g[u+1]=Math.max(-1,Math.min(1,g[u+1]))}_.needsUpdate=!0,ee=t.x,te=t.y}),r(()=>{_.dispose()});let re=e.gridSize.uniform,ie=s(1).div(re),ae=l.div(ie).floor().mul(ie).add(ie.mul(.5)),oe=v.sample(ae).xy,se=s(.1),ce=s(-.1),le=oe.clamp(a(ce,ce),a(se,se)),ue=l.sub(le);return m.sample(ue)}},XZ={name:`HueShift`,category:`Color Adjustments`,props:{shift:{default:0,description:`The amount to shift the hue by`,ui:{type:`range`,min:-180,max:180,step:1,label:`Shift`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Hue Shift shader.`),n(0);let r=t||n(0,0,0,0);return n(GZ(r.rgb,e.shift.uniform).rgb,r.a)}},ZZ={name:`ImageTexture`,category:`Textures`,props:{src:{default:`https://picsum.photos/1920/1080`,description:`Image URL to display`,ui:{type:`text`,label:`Source URL`}},fit:{default:`cover`,description:`How the image should fit within the canvas`}},fragmentNode:({uniforms:e,onCleanup:t})=>{let{texture:n,screenUV:r}=QO,i=new uB,a=i.load(e.src.uniform.value);a.colorSpace=cI,a.flipY=!0;let o=n(a);t(()=>{a.dispose()});let s=r.xy.setY(r.y.oneMinus());return o.sample(s)}},QZ={name:`Invert`,category:`Color Adjustments`,props:{},fragmentNode:({childNode:e})=>{let{vec4:t,vec3:n}=QO;if(!e)return console.error(`You must pass a child component into the Invert shader.`),t(0);let r=e||t(0,0,0,0);return t(n(1,1,1).sub(r.rgb),r.a)}},$Z={name:`LinearGradient`,category:`Gradients & Colors`,props:{startColor:{default:`#1aff00`,transform:zG,description:`The starting color of the gradient`,ui:{type:`color`,label:`Start Color`}},endColor:{default:`#0000ff`,transform:zG,description:`The ending color of the gradient`,ui:{type:`color`,label:`End Color`}},angle:{default:0,transform:VG,description:`The rotation angle of the gradient (in degrees)`,ui:{type:`range`,min:0,max:360,step:1,label:`Angle`}},center:{default:{x:.5,y:.5},transform:BG}},fragmentNode:({uniforms:e})=>{let{vec2:t,mix:n,float:r,cos:i,sin:a,dot:o,radians:s,screenUV:c,abs:l,div:u}=QO,d=s(e.angle.uniform),f=i(d),p=a(d),m=t(f,p),h=t(e.center.uniform[0],e.center.uniform[1].oneMinus()),g=c.sub(h),_=o(g,m),v=r(.5).mul(l(f).add(l(p))),y=u(_,v.max(1e-6)),b=y.mul(.5).add(.5).clamp(r(0),r(1));return n(e.startColor.uniform,e.endColor.uniform,b)}},eQ={name:`Liquify`,category:`Distortions`,requiresRTT:!0,props:{smoothness:{default:0,description:`How smooth and flowing the motion is (0-1)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Smoothness`}},intensity:{default:1,description:`Strength of the distortion effect`,ui:{type:`range`,min:0,max:5,step:.1,label:`Intensity`}},swirl:{default:0,description:`Amount of swirl motion (0-1)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Swirl`}},duration:{default:3,description:`How long the effect persists (higher = longer)`,ui:{type:`range`,min:0,max:10,step:.1,label:`Duration`}},radius:{default:1,description:`Radius of the distortion effect`,ui:{type:`range`,min:0,max:3,step:.01,label:`Radius`}}},fragmentNode:({uniforms:e,onBeforeRender:t,childNode:n,onCleanup:r,dimensions:i})=>{let{vec2:a,vec4:o,float:s,uniform:c,screenUV:l,convertToTexture:u,texture:d}=QO;if(!n)return o(0,0,0,0);let f=Math.round(i.width),p=Math.round(i.height),m=u(n,f,p),h=32,g=new Float32Array(h*h*2),_=new Iz(g,h,h,QF,qF);_.magFilter=HF,_.minFilter=HF,_.needsUpdate=!0;let v=d(_),y=c(.5),b=c(.5),x=c(0),S=c(0),ee=.5,te=.5,ne=Date.now();t(({pointer:t})=>{let n=Date.now(),r=Math.min((n-ne)/1e3,.016);ne=n;let i=r>0?(t.x-ee)/r:0,a=r>0?(t.y-te)/r:0;x.value=x.value*.85+i*.15,S.value=S.value*.85+a*.15,y.value=t.x,b.value=t.y;let o=e.duration.uniform.value,s=e.intensity.uniform.value,c=e.radius.uniform.value*.05,l=e.swirl.uniform.value;for(let e=0;e<h;e++)for(let n=0;n<h;n++){let u=(e*h+n)*2;g[u]*=1-o*r,g[u+1]*=1-o*r;let d=(n+.5)/h,f=(e+.5)/h,p=d-t.x,m=f-t.y,_=Math.sqrt(p*p+m*m);if(_<c*2&&Math.abs(i)+Math.abs(a)>.01){let e=Math.exp(-_*_/(c*c));if(g[u]+=x.value*e*s*r*.5,g[u+1]+=S.value*e*s*r*.5,l>0){let t=Math.atan2(m,p)+Math.PI*.5;g[u]+=Math.cos(t)*l*e*r*2,g[u+1]+=Math.sin(t)*l*e*r*2}}g[u]=Math.max(-1,Math.min(1,g[u])),g[u+1]=Math.max(-1,Math.min(1,g[u+1]))}_.needsUpdate=!0,ee=t.x,te=t.y}),r(()=>{_.dispose()});let re=v.sample(l).xy,ie=s(.2),ae=s(-.2),oe=re.clamp(a(ae,ae),a(ie,ie)),se=l.sub(oe);return m.sample(se)}},tQ={name:`Pixelate`,category:`Effects`,requiresRTT:!0,props:{scale:{default:50,description:`Pixel size - higher values create larger, more visible pixels`,ui:{type:`range`,min:1,max:200,step:1,label:`Scale`}}},fragmentNode:({uniforms:e,childNode:t,dimensions:n})=>{let{vec4:r,floor:i,screenUV:a,convertToTexture:o}=QO;if(!t)return r(0,0,0,0);let s=Math.round(n.width),c=Math.round(n.height),l=o(t,s,c),u=e.scale.uniform,d=i(a.mul(u)).div(u);return l.sample(d)}};var nQ=class extends wq{static get type(){return`PosterizeNode`}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){let{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}};const rQ=B(nQ).setParameterLength(2),iQ={name:`Posterize`,category:`Color Adjustments`,props:{intensity:{default:5,description:`The intensity of the posterization effect (lower is more posterized)`,ui:{type:`range`,min:2,max:20,step:1,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n,int:r}=QO;if(!t)return console.error(`You must pass a child component into the Posterize shader.`),n(0);let i=t||n(0,0,0,0);return rQ(i,r(e.intensity.uniform))}},aQ={name:`RadialGradient`,category:`Gradients & Colors`,props:{startColor:{default:`#ff0000`,transform:zG,description:`The starting color at the center of the gradient`,ui:{type:`color`,label:`Start Color`}},endColor:{default:`#0000ff`,transform:zG,description:`The ending color at the edge of the gradient`,ui:{type:`color`,label:`End Color`}},center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the radial gradient`},radius:{default:1,description:`The radius of the gradient (normalized, 0.0-1.0)`,ui:{type:`range`,min:0,max:2,step:.01,label:`Radius`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,mix:n,float:r,distance:i,screenUV:a,viewportSize:o}=QO,s=o.x.div(o.y),c=t(a.x.mul(s),a.y),l=t(e.center.uniform.x.mul(s),e.center.uniform.y.oneMinus()),u=i(c,l),d=u.div(e.radius.uniform).clamp(r(0),r(1));return n(e.startColor.uniform,e.endColor.uniform,d)}},oQ={name:`Saturation`,category:`Color Adjustments`,props:{intensity:{default:1,description:`The intensity of the saturation effect (1 being no change)`,ui:{type:`range`,min:0,max:3,step:.01,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Saturation shader.`),n(0);let r=t||n(0,0,0,0);return n(UZ(r.rgb,e.intensity.uniform).rgb,r.a)}},sQ={name:`SolidColor`,category:`Gradients & Colors`,props:{color:{default:`#5b18ca`,transform:zG,description:`The solid color to display`,ui:{type:`color`,label:`Color`}}},fragmentNode:({uniforms:e})=>e.color.uniform},cQ={name:`Spiral`,category:`Shapes & Masks`,props:{colorBack:{default:`#000000`,transform:zG,description:`Background color`,ui:{type:`color`,label:`Background Color`}},colorFront:{default:`#ffffff`,transform:zG,description:`Spiral stroke color`,ui:{type:`color`,label:`Spiral Color`}},strokeWidth:{default:.5,description:`Thickness of spiral stroke`,ui:{type:`range`,min:0,max:2,step:.01,label:`Stroke Width`}},strokeFalloff:{default:0,description:`Stroke losing width further from center`,ui:{type:`range`,min:0,max:1,step:.01,label:`Stroke Falloff`}},softness:{default:0,description:`Color transition sharpness (0 = hard edge, 1 = smooth fade)`,ui:{type:`range`,min:0,max:1,step:.01,label:`Softness`}},speed:{default:1,description:`Animation speed (negative values reverse direction)`,ui:{type:`range`,min:-3,max:3,step:.1,label:`Speed`}},center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the spiral`},scale:{default:1,description:`Scale factor for spiral bands (higher = more bands, lower = fewer bands)`,ui:{type:`range`,min:.1,max:5,step:.1,label:`Scale`}}},fragmentNode:({uniforms:e})=>{let{vec2:t,vec4:n,float:r,atan:i,length:a,clamp:o,fract:s,abs:c,mix:l,smoothstep:u,screenUV:d,time:f,fwidth:p,viewportSize:m}=QO,h=m.x.div(m.y),g=t(d.x.mul(h),d.y),_=t(e.center.uniform.x.mul(h),e.center.uniform.y.oneMinus()),v=g.sub(_),y=f.mul(e.speed.uniform),b=a(v),x=b,S=i(v.y,v.x).sub(y),ee=r(6.283185307),te=S.div(ee),ne=x.mul(e.scale.uniform).add(te),re=s(ne),ie=c(re.sub(.5)).mul(2),ae=o(e.strokeWidth.uniform,e.strokeFalloff.uniform.mul(.005),1),oe=o(e.strokeFalloff.uniform,0,1).mul(b).oneMinus(),se=ae.mul(oe),ce=p(ne),le=r(4).sub(u(.05,.4,e.strokeWidth.uniform.mul(2)).mul(u(.05,.4,e.strokeWidth.uniform.oneMinus().mul(2))).mul(3)),ue=l(le.mul(ce),p(ie),o(ce,0,1)),de=u(se.sub(ue).sub(e.softness.uniform),se.add(ue).add(e.softness.uniform),ie),fe=e.colorFront.uniform.rgb.mul(e.colorFront.uniform.a),pe=e.colorFront.uniform.a,me=e.colorBack.uniform.rgb.mul(e.colorBack.uniform.a),he=e.colorBack.uniform.a,ge=fe.mul(de),_e=pe.mul(de),ve=ge.add(me.mul(_e.oneMinus())),ye=_e.add(he.mul(_e.oneMinus()));return n(ve,ye)}},lQ={name:`Swirl`,category:`Gradients & Colors`,props:{colorA:{default:`#1275d8`,description:`Primary gradient color`,transform:zG,ui:{type:`color`,label:`Primary Color`}},colorB:{default:`#e19136`,description:`Secondary gradient color`,transform:zG,ui:{type:`color`,label:`Secondary Color`}},colorC:{default:`#320485`,description:`Accent gradient color`,transform:zG,ui:{type:`color`,label:`Accent Color`}},speed:{default:1,description:`Flow animation speed`,ui:{type:`range`,min:0,max:5,step:.1,label:`Speed`}},scale:{default:5,description:`Gradient scale`,ui:{type:`range`,min:.1,max:20,step:.1,label:`Scale`}},complexity:{default:5,description:`Flow complexity`,ui:{type:`range`,min:1,max:10,step:.1,label:`Complexity`}}},fragmentNode:({uniforms:e})=>{let t=LP(),n=rP.mul(e.speed.uniform),r=e.scale.uniform,i=e.complexity.uniform,a=bN(t.x.mul(r.mul(1.2)).add(n.mul(.8))).mul(.3),o=hj(t.y.mul(r.mul(.9)).sub(n.mul(.6))).mul(.3),s=WP(t.x.add(bN(t.y.mul(i.mul(2)).add(n)).mul(.08)),t.y.add(hj(t.x.mul(i.mul(1.5)).sub(n.mul(.7))).mul(.08))),c=bN(s.x.mul(r.mul(3)).add(s.y.mul(r.mul(2))).add(n.mul(.5))),l=hj(s.x.sub(s.y).mul(r.mul(2.5)).add(n.mul(.3))),u=bN(s.x.mul(i).add(a).add(s.y.mul(i.mul(.8)).add(o)).add(n.mul(.4))),d=SM(c,l,u.mul(.5).add(.5)),f=s.x.mul(.7).add(s.y.mul(.3)).add(d.mul(.2)),p=SM(e.colorA.uniform,e.colorB.uniform,CN(.1,.6,f)),m=SM(p,e.colorC.uniform,CN(.4,.9,f.add(u.mul(.3)))),h=bN(n.mul(3).add(f.mul(10))).mul(.02).add(1),g=m.mul(h);return KP(g,1)}},uQ={name:`Twirl`,category:`Distortions`,requiresRTT:!0,props:{center:{default:{x:.5,y:.5},transform:BG,description:`The center point of the twirl effect`},intensity:{default:1,description:`The strength of the twirl effect`,ui:{type:`range`,min:-5,max:5,step:.1,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t,dimensions:n})=>{let{vec2:r,vec4:i,cos:a,sin:o,length:s,screenUV:c,convertToTexture:l}=QO;if(!t)return console.error(`You must pass a child component into the Twirl shader.`),i(0);let u=Math.round(n.width),d=Math.round(n.height),f=l(t,u,d),p=c,m=r(e.center.uniform.x,e.center.uniform.y.oneMinus()),h=p.sub(m),g=e.intensity.uniform.mul(s(h)),_=a(g),v=o(g),y=_.mul(h.x).sub(v.mul(h.y)),b=v.mul(h.x).add(_.mul(h.y)),x=r(y.add(m.x),b.add(m.y));return i(f.sample(x))}},dQ={name:`Vibrance`,category:`Color Adjustments`,props:{intensity:{default:0,description:`The intensity of the vibrance effect`,ui:{type:`range`,min:-2,max:2,step:.01,label:`Intensity`}}},fragmentNode:({uniforms:e,childNode:t})=>{let{vec4:n}=QO;if(!t)return console.error(`You must pass a child component into the Vibrance shader.`),n(0);let r=t||n(0,0,0,0);return n(WZ(r.rgb,e.intensity.uniform).rgb,r.a)}};function fQ(e,t,n=1){let r=e.rgb,i=t.rgb,a=CM(r,i),o=CM(t.a,n),s=SM(r,a,o),c=xM(e.a,CM(t.a,n));return KP(s,c)}function pQ(e,t,n=1){let r=CM(t.a,n),i=Mk(r,CM(e.a,zN(1,r))),a=Mk(CM(t.rgb,r),CM(e.rgb,CM(e.a,zN(1,r))));return KP(a,i)}const mQ={normal:pQ,multiply:fQ};function hQ(e,t,n=`normal`,r=1){let i=mQ[n]||mQ.normal;return i(e,t,r)}function gQ(e,t){let n=CM(e.a,t.a);return KP(e.rgb,n)}function _Q(e,t){let n=zN(1,t.a),r=CM(e.a,n);return KP(e.rgb,r)}function vQ(e,t){let n=GP(.2126,.7152,.0722),r=Vj(t.rgb,n),i=CM(e.a,r);return KP(e.rgb,i)}function yQ(e,t){let n=GP(.2126,.7152,.0722),r=Vj(t.rgb,n),i=zN(1,r),a=CM(e.a,i);return KP(e.rgb,a)}const bQ={alpha:gQ,alphaInverted:_Q,luminance:vQ,luminanceInverted:yQ};function xQ(e,t,n=`alpha`){let r=bQ[n]||bQ.alpha;return r(e,t)}const SQ={BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1};let CQ=!1;const wQ=()=>{try{if(SQ!==void 0){let{MODE:e,DEV:t}=SQ;return t||e===`development`}if(typeof window<`u`&&window.location){let e=window.location.hostname;return e===`localhost`||e===`127.0.0.1`||e.endsWith(`.local`)||e.includes(`dev.`)||e.startsWith(`dev-`)}return!1}catch{return!1}};function TQ(){let e=null,t,n,r,i,a,o={nodes:new Map,rootId:null,idToNodeId:new Map},s=null,c=null,l=null,u=!1,d=!1,f=!1,p=null,m=!1,h=!0,g=0,_=0,v=!1,y=0,b=0,x=!1,S=8,ee=.5,te=.5,ne=!1,re=!1,ie=!1,ae=[],oe=!1,se=[],ce=!1,le=()=>{var e,t,n;return(e=t=(n=window).matchMedia)?.call(n,`(prefers-reduced-motion: reduce)`).matches??!1},ue=(e,r)=>{if(e<=0||r<=0||e===g&&r===_)return;let a=performance.now();if(a-y<S)return;let s=g,c=_;g=e,_=r,y=a,f||=!0,t.setSize(e,r,!1);let l=e/r,u=2,d=u*l;n.left=-d/2,n.right=d/2,n.top=u/2,n.bottom=-u/2,n.updateProjectionMatrix(),i.scale.set(d,u,1),(o.rootId&&(s===0||c===0)||o.rootId&&f)&&me(),Ee().catch(console.warn)},de=e=>{if(!t||!n||!i)return;let r=e[0];if(!r)return;let{width:a,height:o}=r.contentRect,s=Math.round(a),c=Math.round(o);s===0||c===0||ue(s,c)},fe=t=>{let n=t[0];if(!n)return;let r=m;m=n.isIntersecting;let i=e?.getBoundingClientRect(),s=v;if(v=m&&!!i&&i.width>0&&i.height>0,m&&!r){if(x=!0,e){let{width:t,height:n}=e.getBoundingClientRect(),r=Math.round(t),i=Math.round(n);r>0&&i>0&&(g===0||_===0||r!==g||i!==_?(ue(r,i),!s&&v&&me()):a&&u&&o.rootId&&(a.needsUpdate=!0,me(),Ee().catch(console.warn)))}h&&De()}else !m&&r&&Oe()},pe=!1,me=()=>{if(!o.rootId||!a||re)return;let e=o.nodes.get(o.rootId);if(e){if(g===0||_===0){pe||(pe=!0,requestAnimationFrame(()=>{pe=!1,g>0&&_>0&&me()}));return}re=!0;try{let e=ye(o.rootId);e&&a&&(x&&(a.fragmentNode=null,a.needsUpdate=!0,x=!1),a.fragmentNode=e,a.needsUpdate=!0)}catch(e){console.error(`Error composing shader tree:`,e)}finally{re=!1}m&&Ee().catch(console.warn)}},he=e=>{let t=[];return o.nodes.forEach(n=>{n.parentId===e&&t.push(n)}),t},ge=e=>{for(let[t,n]of o.nodes.entries())if(n.metadata.id===e)return t;return null},_e=(e,t,n,r)=>{var i,a;if(!(i=a=t.metadata.mask)?.source)return e;let o=t.metadata.mask.source,s=ge(o);if(!s)return e;if(r.has(s))return console.error(`Uh oh, looks like you've got a circular dependency in your shader masks.`),e;let c=new Set(r);c.add(n);let l=ye(s,c),u=t.metadata.mask.type||`alpha`;return xQ(e,l,u)},ve=e=>{var t,n;let r=o.nodes.get(e);if(!r||!r.metadata.id)return!1;let i=r.metadata.id;for(let e of o.nodes.values())if((t=n=e.metadata.mask)?.source===i)return!0;return!1},ye=(t,n=new Set)=>{if(g===0||_===0)return KP(0,0,0,0);let r=o.nodes.get(t);if(!r)return KP(0,0,0,0);let i=e=>{r.cleanupCallbacks.push(e)},a=e=>{r.beforeRenderCallbacks.push(e)},s=e=>{r.afterRenderCallbacks.push(e)},c=he(t);if(c.length===0){if(r.requiresRTT&&!v)return KP(0,0,0,0);let o=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:void 0,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(o,r,t,n)}else{let o=[...c].sort((e,t)=>e.metadata.renderOrder-t.metadata.renderOrder),l=r.parentId===null;if(l){let c;for(let e of o){let t=e.metadata.opacity??(ve(e.id)?0:1);if(t===0&&!ve(e.id))continue;let r=ye(e.id,n),i;if(e.metadata.opacity===void 0?(i=ve(e.id)?0:1,e.opacityUniform.value=i):i=e.metadata.opacity,c===void 0){let t=i!==1;c=t?hQ(KP(1,1,1,0),r,e.metadata.blendMode,e.opacityUniform):r}else c=hQ(c,r,e.metadata.blendMode,e.opacityUniform)}if(r.requiresRTT&&!v)return KP(0,0,0,0);let l=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:c,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(l,r,t,n)}else{let c;for(let e of o){let t=ye(e.id,n),r=e.metadata.opacity??(ve(e.id)?0:1);if(r===0&&!ve(e.id))continue;let i;if(e.metadata.opacity===void 0?(i=ve(e.id)?0:1,e.opacityUniform.value=i):i=e.metadata.opacity,c===void 0){let n=i!==1;c=n?hQ(KP(1,1,1,0),t,e.metadata.blendMode,e.opacityUniform):t}else c=hQ(c,t,e.metadata.blendMode,e.opacityUniform)}if(r.requiresRTT&&!v)return KP(0,0,0,0);let l=r.fragmentNodeFunc({uniforms:r.uniforms??{},childNode:c,onCleanup:i,onBeforeRender:a,onAfterRender:s,canvas:e,dimensions:{width:Math.max(512,g),height:Math.max(512,_)}});return _e(l,r,t,n)}}},be=(e,t,n,r,i={},s)=>{let c=0;if(n!==null){let e=Array.from(o.nodes.values()).filter(e=>e.parentId===n);e.length>0&&(c=Math.max(...e.map(e=>e.metadata.renderOrder))+1)}let l=r?.opacity===void 0?1:r.opacity,d=kP(l),f={id:e,fragmentNodeFunc:t,parentId:n,requiresRTT:s?.requiresRTT||!1,opacityUniform:d,metadata:{blendMode:r?.blendMode||`normal`,opacity:r?.opacity,id:r?.id,mask:r?.mask,renderOrder:r?.renderOrder===void 0?c:r?.renderOrder},uniforms:i,cleanupCallbacks:[],beforeRenderCallbacks:[],afterRenderCallbacks:[]};o.nodes.set(e,f),n===null&&(o.rootId=e),a&&u&&g>0&&_>0?(ae.includes(e)||ae.push(e),oe||(oe=!0,queueMicrotask(()=>{oe=!1,ae=[],me()}))):a&&u&&(pe||(pe=!0,requestAnimationFrame(()=>{pe=!1,g>0&&_>0&&me()})))},xe=(e,t,n)=>{let r=o.nodes.get(e);if(!r||!r.uniforms)return;let i=r.uniforms[t];!i||!i.uniform||(i.uniform.value=n,m&&Ee())},Se=(e,t)=>{var n,r,i,s,c,l,d,f;let p=o.nodes.get(e);if(!p)return;let h=!1;if(t.blendMode!==void 0&&p.metadata.blendMode!==t.blendMode&&(p.metadata.blendMode=t.blendMode,h=!0),t.opacity!==void 0&&p.metadata.opacity!==t.opacity){let e=p.metadata.opacity===0,n=t.opacity===0;p.metadata.opacity=t.opacity,p.opacityUniform.value=t.opacity,e!==n&&(h=!0)}t.renderOrder!==void 0&&p.metadata.renderOrder!==t.renderOrder&&(p.metadata.renderOrder=t.renderOrder,h=!0),t.id!==void 0&&p.metadata.id!==t.id&&(p.metadata.id=t.id,h=!0),t.mask!==void 0&&((n=c=p.metadata.mask)?.source!==(r=l=t.mask)?.source||(i=d=p.metadata.mask)?.type!==(s=f=t.mask)?.type)&&(p.metadata.mask=t.mask,h=!0),h&&a&&u?(se.includes(e)||se.push(e),ce||(ce=!0,queueMicrotask(()=>{ce=!1,se=[],me()}))):m&&Ee()},Ce=e=>{if(!o.nodes.has(e))return;let t=o.nodes.get(e);if(t&&t.cleanupCallbacks.length>0)for(let n of t.cleanupCallbacks)try{n()}catch(t){console.error(`Error executing cleanup callback for node ${e}:`,t)}let n=he(e);for(let e of n)Ce(e.id);o.rootId===e&&(o.rootId=null),o.nodes.delete(e),a&&u&&me()},we=e=>{let t={deltaTime:e,pointer:{x:ee,y:te},pointerActive:ne,dimensions:{width:g,height:_}};for(let e of o.nodes.values())if(e.beforeRenderCallbacks.length>0)for(let n of e.beforeRenderCallbacks)try{n(t)}catch(t){console.error(`Error executing before render callback for node ${e.id}:`,t)}},Te=e=>{let t={deltaTime:e,pointer:{x:ee,y:te},pointerActive:ne,dimensions:{width:g,height:_}};for(let e of o.nodes.values())if(e.afterRenderCallbacks.length>0)for(let n of e.afterRenderCallbacks)try{n(t)}catch(t){console.error(`Error executing after render callback for node ${e.id}:`,t)}},Ee=async()=>{if(!u||!t||!r||!n||!a||g===0||_===0)return;let e=performance.now(),i=b>0?(e-b)/1e3:.016,o=Math.min(i,.1);b=e,we(o);try{if(re)return;t instanceof ZO?await t.renderAsync(r,n).then(()=>{u&&Te(o)}).catch(e=>{console.error(`WebGPU render error:`,e)}):(t.render(r,n),Te(o))}catch(e){console.error(`Render frame error:`,e)}},De=()=>{if(s||!h||!m)return;let e=()=>{s=requestAnimationFrame(e),Ee().catch(console.warn)};e()},Oe=()=>{s&&(cancelAnimationFrame(s),s=null)},ke=t=>{if(!e)return;let n,r;if(`touches`in t){if(t.touches.length===0)return;n=t.touches[0].clientX,r=t.touches[0].clientY}else n=t.clientX,r=t.clientY;let i=e.getBoundingClientRect(),a=(n-i.left)/i.width,o=(r-i.top)/i.height;ee=a,te=o},Ae=e=>{ke(e)},je=e=>{ke(e)},Me=()=>{ne=!1,Ee().catch(console.warn)},Ne=()=>{ne=!1,Ee().catch(console.warn)},Pe=()=>{ne=!0,Ee().catch(console.warn)},Fe=()=>{ne=!0,Ee().catch(console.warn)},Ie=async({canvas:o})=>{if(u||d)return;d=!0,p=new AbortController;let s=p;try{if(e=o,r=new io,r.background=null,n=new gs(-1,1,1,-1,.1,10),n.position.z=1,n.lookAt(0,0,0),ie||(window.addEventListener(`mousemove`,Ae),window.addEventListener(`touchmove`,je),window.addEventListener(`mouseup`,Me),window.addEventListener(`touchend`,Ne),o.addEventListener(`mousedown`,Pe),o.addEventListener(`touchstart`,Fe),ie=!0),s.signal.aborted)return;try{if(t=new ZO({canvas:o,antialias:!0,alpha:!0,depth:!1,powerPreference:`high-performance`}),await t.init(),s.signal.aborted)return}catch(e){if(s.signal.aborted)return;console.error(`[Shaders] WebGPU initialization error:`,e);return}if(s.signal.aborted)return;t.setPixelRatio(Math.min(window.devicePixelRatio,2)),t.outputColorSpace=hn,a=new $_({transparent:!0}),a.fragmentNode=KP(0,0,0,0);let d=new Do(2,2);i=new Ia(d,a),r.add(i),c=new ResizeObserver(de),c.observe(o),l=new IntersectionObserver(fe,{threshold:0}),l.observe(o);let p=o.getBoundingClientRect();m=p.width>0&&p.height>0&&p.top<window.innerHeight&&p.bottom>0&&p.left<window.innerWidth&&p.right>0,v=m&&p.width>0&&p.height>0,h=!le();let{width:g,height:_}=o.getBoundingClientRect(),y=Math.round(g),b=Math.round(_);y>0&&b>0?(ue(y,b),f=!0,await Ee()):f=!1,h&&m&&De(),s.signal.aborted||(u=!0)}catch(e){console.error(`[Shaders] Initialization error:`,e)}finally{d=!1,p===s&&(p=null)}},Le=()=>{!wQ()||CQ||(console.warn(`Shaders is running in development mode. Please purchase a license at https://shaders.com to use it in production.`),CQ=!0)},Re=()=>{if(p&&p.abort(),c&&(c.disconnect(),c=null),l&&(l.disconnect(),l=null),ie&&(e&&(e.removeEventListener(`mousedown`,Pe),e.removeEventListener(`touchstart`,Fe)),window&&(window.removeEventListener(`mousemove`,Ae),window.removeEventListener(`touchmove`,je),window.removeEventListener(`mouseup`,Me),window.removeEventListener(`touchend`,Ne)),ie=!1),Oe(),o.nodes.clear(),o.rootId=null,o.idToNodeId.clear(),ae=[],oe=!1,se=[],ce=!1,i){r&&r.remove(i);try{i.geometry&&typeof i.geometry.dispose==`function`&&i.geometry.dispose()}catch{}try{i.material instanceof ia&&typeof i.material.dispose==`function`&&i.material.dispose()}catch{}}if(t&&typeof t.dispose==`function`)try{t.dispose()}catch{}e=null,t=null,n=null,r=null,i=null,a=null,u=!1,d=!1,f=!1,p=null,g=0,_=0,m=!1,h=!0,ee=.5,te=.5,ne=!1};return{initialize:Ie,cleanup:Re,registerNode:be,removeNode:Ce,updateUniformValue:xe,updateNodeMetadata:Se,showLicenseWarning:Le,isInitialized:()=>u}}const{uniform:EQ}=QO;function DQ(e,t,n){let r={};return Object.entries(e.props).forEach(([e,i])=>{let a=t[e],o=a;i.transform&&(o=i.transform(a)),r[e]={uniform:EQ(o).label(`${e}_${n}`),transform:i.transform||void 0}}),r}const{vec2:OQ,fract:kQ,sin:AQ,dot:jQ}=QO,MQ=e=>kQ(AQ(jQ(e,OQ(12.12345,78.12345))).mul(40000.12345)),koe=(e=.03)=>t=>MQ(t).mul(e).mul(.10012345),{vec2:NQ}=QO,Aoe=(e=NQ(0),t=.02,n=1,r=1)=>{let{vec2:i,sin:a,cos:o,time:s}=QO,c=r*1.618033988749895,l=r*2.718281828459045,u=(Math.sin(r)+2)*5,d=(Math.cos(r)+2)*5,f=i(a(e.x.mul(n).mul(u).add(s.mul(.1)).add(c)),o(e.y.mul(n).mul(u).add(s.mul(.1)).add(l))),p=i(a(e.y.mul(n).mul(d).add(s.mul(.05)).add(l)),o(e.x.mul(n).mul(d).add(s.mul(.05)).add(c))),m=f.add(p).mul(t);return e.add(m)},joe=(e,t,n=.6,r=.3,i=1)=>{let{max:a,smoothstep:o,vec4:s}=QO,c=a(a(e.r,e.g),e.b),l=o(n,n+r,c).mul(i).mul(1),u=e.rgb.add(t.rgb.mul(l));return s(u,e.a)},Moe=(e={})=>{let{inset:t=.4,softness:n=.5,offsetX:r=0,offsetY:i=0}=e,{float:a,smoothstep:o,uv:s}=QO,c=s(),l=c.x.sub(.5).sub(a(r)).mul(2),u=c.y.sub(.5).add(a(i)).mul(2),d=l.mul(l).add(u.mul(u)).sqrt();return a(1).sub(o(a(1).sub(a(t)),a(1).sub(a(t)).add(a(n)),d.mul(a(1).add(a(n)))))},PQ=()=>{let e={},t={ascii:EB,checkerboard:HG,circle:UG,dotGrid:WG,glassTiles:GG,grayscale:qZ,grid:JZ,gridDistortion:YZ,hueShift:XZ,imageTexture:ZZ,invert:QZ,linearGradient:$Z,liquify:eQ,pixelate:tQ,posterize:iQ,radialGradient:aQ,saturation:oQ,solidColor:sQ,spiral:cQ,swirl:lQ,twirl:uQ,vibrance:dQ};return Object.entries(t).forEach(([t,n])=>{let r={};n.props&&Object.entries(n.props).forEach(([e,t])=>{t.ui&&(r[e]={ui:t.ui,default:t.default,description:t.description})}),e[n.name]={name:n.name,fileName:t,category:n.category||`Uncategorized`,definition:n,propsMetadata:r}}),e},Noe=PQ();var FQ=r({__name:`Ascii`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},characters:{},cellSize:{},fontFamily:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${EB.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(EB.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(EB,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,EB.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,EB)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${EB.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),IQ=FQ,LQ=r({__name:`Checkerboard`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorA:{},colorB:{},cells:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${HG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(HG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(HG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,HG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,HG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${HG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),RQ=LQ,zQ=r({__name:`Circle`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},radius:{},softness:{},center:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${UG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(UG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(UG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,UG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,UG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${UG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),BQ=zQ,VQ=r({__name:`DotGrid`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},density:{},dotSize:{},twinkle:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${WG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(WG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(WG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,WG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,WG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${WG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),HQ=VQ,UQ=r({__name:`GlassTiles`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{},tileCount:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${GG.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(GG.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(GG,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,GG.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,GG)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${GG.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),WQ=UQ,GQ=r({__name:`Grayscale`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${qZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(qZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(qZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,qZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,qZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${qZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),KQ=GQ,qQ=r({__name:`Grid`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{},cells:{},thickness:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${JZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(JZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(JZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,JZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,JZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${JZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),JQ=qQ,YQ=r({__name:`GridDistortion`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},smoothness:{},intensity:{},swirl:{},duration:{},radius:{},gridSize:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${YZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(YZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(YZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,YZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,YZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${YZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),XQ=YQ,ZQ=r({__name:`HueShift`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},shift:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${XZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(XZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(XZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,XZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,XZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${XZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),QQ=ZQ,$Q=r({__name:`ImageTexture`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},src:{},fit:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${ZZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(ZZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(ZZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,ZZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,ZZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${ZZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),e$=$Q,t$=r({__name:`Invert`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${QZ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(QZ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(QZ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,QZ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,QZ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${QZ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),n$=t$,r$=r({__name:`LinearGradient`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},startColor:{},endColor:{},angle:{},center:{}},{blendMode:`normal`,renderOrder:0,...Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${$Z.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries($Z.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ($Z,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,$Z.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,$Z)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${$Z.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),i$=r$,a$=r({__name:`Liquify`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},smoothness:{},intensity:{},swirl:{},duration:{},radius:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${eQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(eQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(eQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,eQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,eQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${eQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),o$=a$,s$=r({__name:`Pixelate`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},scale:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${tQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(tQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(tQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,tQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,tQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${tQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),c$=s$,l$=r({__name:`Posterize`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${iQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(iQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(iQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,iQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,iQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${iQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),u$=l$,d$=r({__name:`RadialGradient`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},startColor:{},endColor:{},center:{},radius:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${aQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(aQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(aQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,aQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,aQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${aQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),f$=d$,p$=r({__name:`Saturation`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${oQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(oQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(oQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,oQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,oQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${oQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),m$=p$,h$=r({__name:`SolidColor`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},color:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${sQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(sQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(sQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,sQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,sQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${sQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),g$=h$,_$=r({__name:`Spiral`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorBack:{},colorFront:{},strokeWidth:{},strokeFalloff:{},softness:{},speed:{},center:{},scale:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${cQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(cQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(cQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,cQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,cQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${cQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),v$=_$,y$=r({__name:`Swirl`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},colorA:{},colorB:{},colorC:{},speed:{},scale:{},complexity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${lQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(lQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(lQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,lQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,lQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${lQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),b$=y$,x$=r({__name:`Twirl`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},center:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${uQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(uQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(uQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,uQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,uQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${uQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),S$=x$,C$=r({__name:`Vibrance`,props:o({blendMode:{},opacity:{},id:{},maskSource:{},maskType:{},renderOrder:{},intensity:{}},{blendMode:`normal`,renderOrder:0,...Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})}),setup(t){let n=t,r=n.id||`${dQ.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;d(`ombreParentId`,r);let o=e(()=>{let e={...Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})};for(let t in n)t!==`blendMode`&&t!==`opacity`&&n[t]!==Object.entries(dQ.props).reduce((e,[t,n])=>(e[t]=n.default,e),{})[t]&&(e[t]=m(n[t]));return e}),s=DQ(dQ,o.value,r),l=a(`ombreParentId`);if(l===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let u=a(`ombreNodeRegister`);if(u===void 0)throw Error(`Shader components must be used inside an <Shader> component or another shader component`);let f=a(`ombreUniformUpdate`);if(f===void 0)throw Error(`Shader components require ombreUniformUpdate from parent`);let g=a(`ombreMetadataUpdate`);if(g===void 0)throw Error(`Shader components require ombreMetadataUpdate from parent`);let _=a(`ombreRendererResetSignal`),v=()=>{u(r,dQ.fragmentNode,l,{blendMode:n.blendMode,opacity:n.opacity,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder},s,dQ)},y=()=>{let e=i();e.run(()=>{Object.entries(s).forEach(([e,{uniform:t,transform:i}])=>{h(()=>n[e],n=>{if(t&&t.value!==void 0){let t=i?i(n):n;f(r,e,t)}},{deep:!0})}),h(()=>[n.blendMode,n.opacity,n.maskSource,n.maskType,n.renderOrder],([e,t])=>{g(r,{blendMode:e,opacity:t,id:n.id,mask:n.maskSource?{source:n.maskSource,type:n.maskType||`alpha`}:void 0,renderOrder:n.renderOrder})},{deep:!0}),_&&h(_,()=>{console.log(`[${dQ.name}] Re-registering due to renderer reset`),v()}),v()}),c(()=>{e.stop()})};return y(),c(()=>{u(r,null,null,null,null,null)}),(e,t)=>p(e.$slots,`default`)}}),w$=C$;const T$=`alphaMap.alphaTest.anisotropy.anisotropyMap.anisotropyRotation.aoMap.aoMapIntensity.attenuationColor.attenuationDistance.bumpMap.clearcoat.clearcoatMap.clearcoatNormalMap.clearcoatNormalScale.clearcoatRoughness.color.dispersion.displacementMap.emissive.emissiveIntensity.emissiveMap.envMap.envMapIntensity.gradientMap.ior.iridescence.iridescenceIOR.iridescenceMap.iridescenceThicknessMap.lightMap.lightMapIntensity.map.matcap.metalness.metalnessMap.normalMap.normalScale.opacity.roughness.roughnessMap.sheen.sheenColor.sheenColorMap.sheenRoughnessMap.shininess.specular.specularColor.specularColorMap.specularIntensity.specularIntensityMap.specularMap.thickness.transmission.transmissionMap`.split(`.`);var E$=class{constructor(e){this.renderObjects=new WeakMap,this.hasNode=this.containsNode(e),this.hasAnimation=e.object.isSkinnedMesh===!0,this.refreshUniforms=T$,this.renderId=0}firstInitialization(e){let t=this.renderObjects.has(e);return t===!1?(this.getRenderObjectData(e),!0):!1}needsVelocity(e){let t=e.getMRT();return t!==null&&t.has(`velocity`)}getRenderObjectData(e){let t=this.renderObjects.get(e);if(t===void 0){let{geometry:n,material:r,object:i}=e;if(t={material:this.getMaterialData(r),geometry:{id:n.id,attributes:this.getAttributesData(n.attributes),indexVersion:n.index?n.index.version:null,drawRange:{start:n.drawRange.start,count:n.drawRange.count}},worldMatrix:i.matrixWorld.clone()},i.center&&(t.center=i.center.clone()),i.morphTargetInfluences&&(t.morphTargetInfluences=i.morphTargetInfluences.slice()),e.bundle!==null&&(t.version=e.bundle.version),t.material.transmission>0){let{width:n,height:r}=e.context;t.bufferWidth=n,t.bufferHeight=r}this.renderObjects.set(e,t)}return t}getAttributesData(e){let t={};for(let n in e){let r=e[n];t[n]={version:r.version}}return t}containsNode(e){let t=e.material;for(let e in t)if(t[e]&&t[e].isNode)return!0;return e.renderer.overrideNodes.modelViewMatrix!==null||e.renderer.overrideNodes.modelNormalViewMatrix!==null}getMaterialData(e){let t={};for(let n of this.refreshUniforms){let r=e[n];if(r==null)continue;typeof r==`object`&&r.clone!==void 0?r.isTexture===!0?t[n]={id:r.id,version:r.version}:t[n]=r.clone():t[n]=r}return t}equals(e){let{object:t,material:n,geometry:r}=e,i=this.getRenderObjectData(e);if(i.worldMatrix.equals(t.matrixWorld)!==!0)return i.worldMatrix.copy(t.matrixWorld),!1;let a=i.material;for(let e in a){let t=a[e],r=n[e];if(t.equals!==void 0){if(t.equals(r)===!1)return t.copy(r),!1}else if(r.isTexture===!0){if(t.id!==r.id||t.version!==r.version)return t.id=r.id,t.version=r.version,!1}else if(t!==r)return a[e]=r,!1}if(a.transmission>0){let{width:t,height:n}=e.context;if(i.bufferWidth!==t||i.bufferHeight!==n)return i.bufferWidth=t,i.bufferHeight=n,!1}let o=i.geometry,s=r.attributes,c=o.attributes,l=Object.keys(c),u=Object.keys(s);if(o.id!==r.id)return o.id=r.id,!1;if(l.length!==u.length)return i.geometry.attributes=this.getAttributesData(s),!1;for(let e of l){let t=c[e],n=s[e];if(n===void 0)return delete c[e],!1;if(t.version!==n.version)return t.version=n.version,!1}let d=r.index,f=o.indexVersion,p=d?d.version:null;if(f!==p)return o.indexVersion=p,!1;if(o.drawRange.start!==r.drawRange.start||o.drawRange.count!==r.drawRange.count)return o.drawRange.start=r.drawRange.start,o.drawRange.count=r.drawRange.count,!1;if(i.morphTargetInfluences){let e=!1;for(let n=0;n<i.morphTargetInfluences.length;n++)i.morphTargetInfluences[n]!==t.morphTargetInfluences[n]&&(e=!0);if(e)return!0}return i.center&&i.center.equals(t.center)===!1?(i.center.copy(t.center),!0):(e.bundle!==null&&(i.version=e.bundle.version),!0)}needsRefresh(e,t){if(this.hasNode||this.hasAnimation||this.firstInitialization(e)||this.needsVelocity(t.renderer))return!0;let{renderId:n}=t;if(this.renderId!==n)return this.renderId=n,!0;let r=e.object.static===!0,i=e.bundle!==null&&e.bundle.static===!0&&this.getRenderObjectData(e).version===e.bundle.version;if(r||i)return!1;let a=this.equals(e)!==!0;return a}};function D$(e,t=0){let n=3735928559^t,r=1103547991^t;if(e instanceof Array)for(let t=0,i;t<e.length;t++)i=e[t],n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);else for(let t=0,i;t<e.length;t++)i=e.charCodeAt(t),n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}const O$=e=>D$(e),k$=e=>D$(e),A$=(...e)=>D$(e);function j$(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of M$(e))n.push(D$(r.slice(0,-4)),i.getCacheKey(t));return D$(n)}function*M$(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;e<r.length;e++){let i=r[e];i&&(i.isNode===!0||t&&typeof i.toJSON==`function`)&&(yield{property:n,index:e,childNode:i})}else if(r&&r.isNode===!0)yield{property:n,childNode:r};else if(typeof r==`object`)for(let e in r){let i=r[e];i&&(i.isNode===!0||t&&typeof i.toJSON==`function`)&&(yield{property:n,index:e,childNode:i})}}}const N$=new Map([[1,`float`],[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),P$=new WeakMap;function F$(e){return N$.get(e)}function I$(e){if(/[iu]?vec\d/.test(e))return e.startsWith(`ivec`)?Int32Array:e.startsWith(`uvec`)?Uint32Array:Float32Array;if(/mat\d/.test(e)||/float/.test(e))return Float32Array;if(/uint/.test(e))return Uint32Array;if(/int/.test(e))return Int32Array;throw Error(`THREE.NodeUtils: Unsupported type: ${e}`)}function L$(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 9;if(/mat4/.test(e))return 16;console.error(`THREE.TSL: Unsupported type:`,e)}function R$(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 12;if(/mat4/.test(e))return 16;console.error(`THREE.TSL: Unsupported type:`,e)}function z$(e){if(/float|int|uint/.test(e))return 4;if(/vec2/.test(e))return 8;if(/vec3/.test(e)||/vec4/.test(e))return 16;if(/mat2/.test(e))return 8;if(/mat3/.test(e))return 48;if(/mat4/.test(e))return 64;console.error(`THREE.TSL: Unsupported type:`,e)}function B$(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?`node`:t===`number`?`float`:t===`boolean`?`bool`:t===`string`?`string`:t===`function`?`shader`:e.isVector2===!0?`vec2`:e.isVector3===!0?`vec3`:e.isVector4===!0?`vec4`:e.isMatrix2===!0?`mat2`:e.isMatrix3===!0?`mat3`:e.isMatrix4===!0?`mat4`:e.isColor===!0?`color`:e instanceof ArrayBuffer?`ArrayBuffer`:null}function V$(e,...t){let n=e?e.slice(-4):void 0;return t.length===1&&(n===`vec2`?t=[t[0],t[0]]:n===`vec3`?t=[t[0],t[0],t[0]]:n===`vec4`&&(t=[t[0],t[0],t[0],t[0]])),e===`color`?new KR(...t):n===`vec2`?new eL(...t):n===`vec3`?new R(...t):n===`vec4`?new wL(...t):n===`mat2`?new TB(...t):n===`mat3`?new iL(...t):n===`mat4`?new eR(...t):e===`bool`?t[0]||!1:e===`float`||e===`int`||e===`uint`?t[0]||0:e===`string`?t[0]||``:e===`ArrayBuffer`?W$(t[0]):null}function H$(e){let t=P$.get(e);return t===void 0&&(t={},P$.set(e,t)),t}function U$(e){let t=``,n=new Uint8Array(e);for(let e=0;e<n.length;e++)t+=String.fromCharCode(n[e]);return btoa(t)}function W$(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0)).buffer}const G$={VERTEX:`vertex`,FRAGMENT:`fragment`},K$={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},q$={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},J$={READ_ONLY:`readOnly`,WRITE_ONLY:`writeOnly`,READ_WRITE:`readWrite`},Y$=[`fragment`,`vertex`],X$=[`setup`,`analyze`,`generate`],Z$=[...Y$,`compute`],Q$=[`x`,`y`,`z`,`w`],$$={analyze:`setup`,generate:`analyze`};let e1=0;var t1=class extends EI{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=K$.NONE,this.updateBeforeType=K$.NONE,this.updateAfterType=K$.NONE,this.uuid=$I.generateUUID(),this.version=0,this.global=!1,this.parents=!1,this.isNode=!0,this._cacheKey=null,this._cacheKeyVersion=0,Object.defineProperty(this,`id`,{value:e1++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,K$.FRAME)}onRenderUpdate(e){return this.onUpdate(e,K$.RENDER)}onObjectUpdate(e){return this.onUpdate(e,K$.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of M$(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=A$(j$(this,e),this.customCacheKey()),this._cacheKeyVersion=this.version),this._cacheKey}customCacheKey(){return 0}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e),n=e.getElementType(t);return n}getMemberType(){return`void`}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e),n=e.getNodeFromHash(t);return n||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return t.outputNode||null}analyze(e,t=null){let n=e.increaseUsage(this);if(this.parents===!0){let n=e.getDataFromNode(this,`any`);n.stages=n.stages||{},n.stages[e.shaderStage]=n.stages[e.shaderStage]||[],n.stages[e.shaderStage].push(t)}if(n===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e,this)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);let r=e.getDataFromNode(this);r.buildStages=r.buildStages||{},r.buildStages[e.buildStage]=!0;let i=$$[e.buildStage];if(i&&r.buildStages[i]!==!0){let t=e.getBuildStage();e.setBuildStage(i),this.build(e),e.setBuildStage(t)}e.addNode(this),e.addChain(this);let a=null,o=e.getBuildStage();if(o===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){t.initialized=!0,t.outputNode=this.setup(e)||t.outputNode||null;for(let n of Object.values(t))if(n&&n.isNode===!0){if(n.parents===!0){let t=e.getNodeProperties(n);t.parents=t.parents||[],t.parents.push(this)}n.build(e)}}a=t.outputNode}else if(o===`analyze`)this.analyze(e,t);else if(o===`generate`){let n=this.generate.length===1;if(n){let n=this.getNodeType(e),r=e.getDataFromNode(this);a=r.snippet,a===void 0?r.generated===void 0?(r.generated=!0,a=this.generate(e)||``,r.snippet=a):(console.warn(`THREE.Node: Recursion detected.`,this),a=``):r.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),a=e.format(a,n,t)}else a=this.generate(e,t)||``}return e.removeChain(this),e.addSequentialNode(this),a}getSerializeChildren(){return M$(this)}serialize(e){let t=this.getSerializeChildren(),n={};for(let{property:r,index:i,childNode:a}of t)i===void 0?n[r]=a.toJSON(e.meta).uuid:(n[r]===void 0&&(n[r]=Number.isInteger(i)?[]:{}),n[r][i]=a.toJSON(e.meta).uuid);Object.keys(n).length>0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){let t=e.meta.nodes;for(let n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){let r=[];for(let i of e.inputNodes[n])r.push(t[i]);this[n]=r}else if(typeof e.inputNodes[n]==`object`){let r={};for(let i in e.inputNodes[n]){let a=e.inputNodes[n][i];r[i]=t[a]}this[n]=r}else{let r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){let{uuid:t,type:n}=this,r=e===void 0||typeof e==`string`;r&&(e={textures:{},images:{},nodes:{}});let i=e.nodes[t];i===void 0&&(i={uuid:t,type:n,meta:e,metadata:{version:4.7,type:`Node`,generator:`Node.toJSON`}},r!==!0&&(e.nodes[i.uuid]=i),this.serialize(i),delete i.meta);function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(r){let t=a(e.textures),n=a(e.images),r=a(e.nodes);t.length>0&&(i.textures=t),n.length>0&&(i.images=n),r.length>0&&(i.nodes=r)}return i}},n1=class extends t1{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){let t=this.indexNode.getNodeType(e),n=this.node.build(e),r=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:`uint`);return`${n}[ ${r} ]`}},r1=class extends t1{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(e){let t=this.node.getNodeType(e),n=null;for(let r of this.convertTo.split(`|`))(n===null||e.getTypeLength(t)===e.getTypeLength(r))&&(n=r);return n}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){let n=this.node,r=this.getNodeType(e),i=n.build(e,r);return e.format(i,r,t)}},i1=class extends t1{static get type(){return`TempNode`}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){let n=e.getBuildStage();if(n===`generate`){let n=e.getVectorType(this.getNodeType(e,t)),r=e.getDataFromNode(this);if(r.propertyName!==void 0)return e.format(r.propertyName,n,t);if(n!==`void`&&t!==`void`&&this.hasDependencies(e)){let i=super.build(e,n),a=e.getVarFromNode(this,null,n),o=e.getPropertyName(a);return e.addLineFlowCode(`${o} = ${i}`,this),r.snippet=i,r.propertyName=o,e.format(r.propertyName,n,t)}}return super.build(e,t)}},a1=class extends i1{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(e){return this.nodeType===null?e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0)):e.getVectorType(this.nodeType)}generate(e,t){let n=this.getNodeType(e),r=e.getTypeLength(n),i=this.nodes,a=e.getComponentType(n),o=[],s=0;for(let t of i){if(s>=r){console.error(`THREE.TSL: Length of parameters exceeds maximum length of function '${n}()' type.`);break}let i=t.getNodeType(e),c=e.getTypeLength(i),l;s+c>r&&(console.error(`THREE.TSL: Length of '${n}()' data exceeds maximum length of output type.`),c=r-s,i=e.getTypeFromLength(c)),s+=c,l=t.build(e,i);let u=e.getComponentType(i);u!==a&&(l=e.format(l,u,a)),o.push(l)}let c=`${e.getType(n)}( ${o.join(`, `)} )`;return e.format(c,n,t)}};const o1=Q$.join(``);var s1=class extends t1{static get type(){return`SplitNode`}constructor(e,t=`x`){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(let t of this.components)e=Math.max(Q$.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}generate(e,t){let n=this.node,r=e.getTypeLength(n.getNodeType(e)),i=null;if(r>1){let a=null,o=this.getVectorLength();o>=r&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let s=n.build(e,a);i=this.components.length===r&&this.components===o1.slice(0,this.components.length)?e.format(s,a,t):e.format(`${s}.${this.components}`,this.getNodeType(e),t)}else i=n.build(e,t);return i}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},c1=class extends i1{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getComponentType(r.getNodeType(e)),o=e.getTypeFromLength(n.length,a),s=r.build(e,o),c=t.build(e,i),l=e.getTypeLength(i),u=[];for(let e=0;e<l;e++){let t=Q$[e];t===n[0]?(u.push(s),e+=n.length-1):u.push(c+`.`+t)}return`${e.getType(i)}( ${u.join(`, `)} )`}},l1=class extends i1{static get type(){return`FlipNode`}constructor(e,t){super(),this.sourceNode=e,this.components=t}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{components:t,sourceNode:n}=this,r=this.getNodeType(e),i=n.build(e),a=e.getVarFromNode(this),o=e.getPropertyName(a);e.addLineFlowCode(o+` = `+i,this);let s=e.getTypeLength(r),c=[],l=0;for(let e=0;e<s;e++){let n=Q$[e];n===t[l]?(c.push(`1.0 - `+(o+`.`+n)),l++):c.push(o+`.`+n)}return`${e.getType(r)}( ${c.join(`, `)} )`}},u1=class extends t1{static get type(){return`InputNode`}constructor(e,t=null){super(t),this.isInputNode=!0,this.value=e,this.precision=null}getNodeType(){return this.nodeType===null?B$(this.value):this.nodeType}getInputType(e){return this.getNodeType(e)}setPrecision(e){return this.precision=e,this}serialize(e){super.serialize(e),e.value=this.value,this.value&&this.value.toArray&&(e.value=this.value.toArray()),e.valueType=B$(this.value),e.nodeType=this.nodeType,e.valueType===`ArrayBuffer`&&(e.value=U$(e.value)),e.precision=this.precision}deserialize(e){super.deserialize(e),this.nodeType=e.nodeType,this.value=Array.isArray(e.value)?V$(e.valueType,...e.value):e.value,this.precision=e.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(e.value))}generate(){console.warn(`Abstract function.`)}};const d1=/float|u?int/;var f1=class extends u1{static get type(){return`ConstNode`}constructor(e,t=null){super(e,t),this.isConstNode=!0}generateConst(e){return e.generateConst(this.getNodeType(e),this.value)}generate(e,t){let n=this.getNodeType(e);return d1.test(n)&&d1.test(t)?e.generateConst(t,this.value):e.format(this.generateConst(e),n,t)}},p1=class extends t1{static get type(){return`MemberNode`}constructor(e,t){super(),this.node=e,this.property=t,this.isMemberNode=!0}getNodeType(e){return this.node.getMemberType(e,this.property)}generate(e){let t=this.node.build(e);return t+`.`+this.property}};let m1=null;const h1=new Map;function H(e,t){if(h1.has(e)){console.warn(`THREE.TSL: Redefinition of method chaining '${e}'.`);return}if(typeof t!=`function`)throw Error(`THREE.TSL: Node element ${e} is not a function`);h1.set(e,t)}const g1=e=>e.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),_1=e=>g1(e).split(``).sort().join(``),v1={setup(e,t){let n=t.shift();return e(W1(n),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(m1.assign(n,...e),n);if(h1.has(t)){let r=h1.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&h1.has(t.slice(0,t.length-6))){let r=h1.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=g1(t),U(new s1(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=_1(t.slice(3).toLowerCase()),n=>U(new c1(e,t,U(n)));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=_1(t.slice(4).toLowerCase()),()=>U(new l1(U(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),U(new s1(e,t));else if(/^\d+$/.test(t)===!0)return U(new n1(n,new f1(Number(t),`uint`)));else if(/^get$/.test(t)===!0)return e=>U(new p1(n,e))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},y1=new WeakMap,b1=new WeakMap,x1=function(e,t=null){let n=B$(e);if(n===`node`){let t=y1.get(e);return t===void 0&&(t=new Proxy(e,v1),y1.set(e,t),y1.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return U(R1(e,t));else if(n===`shader`)return K(e);return e},S1=function(e,t=null){for(let n in e)e[n]=U(e[n],t);return e},C1=function(e,t=null){let n=e.length;for(let r=0;r<n;r++)e[r]=U(e[r],t);return e},w1=function(e,t=null,n=null,r=null){let i=e=>U(r===null?e:Object.assign(e,r)),a,o=t,s,c;function l(t){let n;return n=o?/[a-z]/i.test(o)?o+`()`:o:e.type,s!==void 0&&t.length<s?(console.error(`THREE.TSL: "${n}" parameter length is less than minimum required.`),t.concat(Array(s-t.length).fill(0))):c!==void 0&&t.length>c?(console.error(`THREE.TSL: "${n}" parameter length exceeds limit.`),t.slice(0,c)):t}return t===null?a=(...t)=>i(new e(...G1(l(t)))):n===null?a=(...n)=>i(new e(t,...G1(l(n)))):(n=U(n),a=(...r)=>i(new e(t,...G1(l(r)),n))),a.setParameterLength=(...e)=>(e.length===1?s=c=e[0]:e.length===2&&([s,c]=e),a),a.setName=e=>(o=e,a),a},T1=function(e,...t){return U(new e(...G1(t)))};var E1=class extends t1{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t,this.isShaderCallNodeInternal=!0}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t),i=t.namespace&&t.namespace===e.namespace?e.getNamespace(`once`):`once`;if(r[i])return r[i];let a=null;if(t.layout){let r=b1.get(e.constructor);r===void 0&&(r=new WeakMap,b1.set(e.constructor,r));let i=r.get(t);i===void 0&&(i=U(e.buildFunctionNode(t)),r.set(t,i)),e.addInclude(i),a=U(i.call(n))}else{let r=t.jsFunc,i=n!==null||r.length>1?r(n||[],e):r(e);a=U(i)}return t.once&&(r[i]=a),a}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let t=e.getNodeProperties(this),n=e.getOutputNamespace();return t[n]=t[n]||this.setupOutput(e),t[n]}build(e,t=null){let n=null,r=e.getBuildStage(),i=e.getNodeProperties(this),a=e.getOutputNamespace(),o=this.getOutputNode(e);if(r===`setup`){let t=e.getNamespace(`initialized`);i[t]!==!0&&(i[t]=!0,i[a]=this.getOutputNode(e),i[a].build(e)),n=i[a]}else r===`analyze`?o.build(e,t):r===`generate`&&(n=o.build(e,t)||``);return n}},D1=class extends t1{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1,this.namespace=null}setLayout(e){return this.layout=e,this}call(e=null){return W1(e),U(new E1(this,e))}setup(){return this.call()}};const O1=[!1,!0],k1=[0,1,2,3],A1=[-1,-2],j1=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],M1=new Map;for(let e of O1)M1.set(e,new f1(e));const N1=new Map;for(let e of k1)N1.set(e,new f1(e,`uint`));const P1=new Map([...N1].map(e=>new f1(e.value,`int`)));for(let e of A1)P1.set(e,new f1(e,`int`));const F1=new Map([...P1].map(e=>new f1(e.value)));for(let e of j1)F1.set(e,new f1(e));for(let e of j1)F1.set(-e,new f1(-e));const I1={bool:M1,uint:N1,ints:P1,float:F1},L1=new Map([...M1,...F1]),R1=(e,t)=>L1.has(e)?L1.get(e):e.isNode===!0?e:new f1(e,t),z1=e=>{try{return e.getNodeType()}catch{return}},B1=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[V$(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return U(t.get(n[0]));if(n.length===1){let t=R1(n[0],e);return z1(t)===e?U(t):U(new r1(t,e))}let r=n.map(e=>R1(e));return U(new a1(r,e))}},V1=e=>typeof e==`object`&&e?e.value:e,H1=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function U1(e,t){return new Proxy(new D1(e,t),v1)}const U=(e,t=null)=>x1(e,t),W1=(e,t=null)=>new S1(e,t),G1=(e,t=null)=>new C1(e,t),W=(...e)=>new w1(...e),G=(...e)=>new T1(...e);let K1=0;const K=(e,t=null)=>{let n=null;t!==null&&(typeof t==`object`?n=t.return:(typeof t==`string`?n=t:console.error(`THREE.TSL: Invalid layout type.`),t=null));let r=new U1(e,n),i=(...e)=>{let t;W1(e);let i=e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype);t=i?[...e]:e[0];let a=r.call(t);return n===`void`&&a.toStack(),a};if(i.shaderNode=r,i.id=r.id,i.getNodeType=(...e)=>r.getNodeType(...e),i.getCacheKey=(...e)=>r.getCacheKey(...e),i.setLayout=e=>(r.setLayout(e),i),i.once=(e=null)=>(r.once=!0,r.namespace=e,i),t!==null){if(typeof t.inputs!=`object`){let e={name:`fn`+ K1++,type:n,inputs:[]};for(let n in t){if(n===`return`)continue;e.inputs.push({name:n,type:t[n]})}t=e}i.setLayout(t)}return i},q1=e=>{m1=e},J1=()=>m1,Y1=(...e)=>m1.If(...e),X1=(...e)=>m1.Switch(...e);function Z1(e){return m1&&m1.add(e),e}H(`toStack`,Z1);const Q1=new B1(`color`),q=new B1(`float`,I1.float),J=new B1(`int`,I1.ints),$1=new B1(`uint`,I1.uint),e0=new B1(`bool`,I1.bool),Y=new B1(`vec2`),t0=new B1(`ivec2`),n0=new B1(`uvec2`),r0=new B1(`bvec2`),X=new B1(`vec3`),i0=new B1(`ivec3`),a0=new B1(`uvec3`),o0=new B1(`bvec3`),s0=new B1(`vec4`),c0=new B1(`ivec4`),l0=new B1(`uvec4`),u0=new B1(`bvec4`),d0=new B1(`mat2`),f0=new B1(`mat3`),p0=new B1(`mat4`),m0=(e=``)=>U(new f1(e,`string`)),h0=e=>U(new f1(e,`ArrayBuffer`));H(`toColor`,Q1),H(`toFloat`,q),H(`toInt`,J),H(`toUint`,$1),H(`toBool`,e0),H(`toVec2`,Y),H(`toIVec2`,t0),H(`toUVec2`,n0),H(`toBVec2`,r0),H(`toVec3`,X),H(`toIVec3`,i0),H(`toUVec3`,a0),H(`toBVec3`,o0),H(`toVec4`,s0),H(`toIVec4`,c0),H(`toUVec4`,l0),H(`toBVec4`,u0),H(`toMat2`,d0),H(`toMat3`,f0),H(`toMat4`,p0);const g0=W(n1).setParameterLength(2),_0=(e,t)=>U(new r1(U(e),t)),v0=(e,t)=>U(new s1(U(e),t));H(`element`,g0),H(`convert`,_0);const y0=e=>(console.warn(`THREE.TSL: append() has been renamed to Stack().`),Z1(e));H(`append`,e=>(console.warn(`THREE.TSL: .append() has been renamed to .toStack().`),Z1(e)));const b0=(...e)=>(console.warn(`THREE.TSL: tslFn() has been renamed to Fn().`),K(...e));var x0=class extends t1{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0,this.global=!0}getHash(e){return this.name||super.getHash(e)}generate(e){let t;return this.varying===!0?(t=e.getVaryingFromNode(this,this.name),t.needsInterpolation=!0):t=e.getVarFromNode(this,this.name),e.getPropertyName(t)}};const S0=(e,t)=>U(new x0(e,t)),C0=(e,t)=>U(new x0(e,t,!0)),w0=G(x0,`vec4`,`DiffuseColor`),T0=G(x0,`vec3`,`EmissiveColor`),E0=G(x0,`float`,`Roughness`),D0=G(x0,`float`,`Metalness`),O0=G(x0,`float`,`Clearcoat`),k0=G(x0,`float`,`ClearcoatRoughness`),A0=G(x0,`vec3`,`Sheen`),j0=G(x0,`float`,`SheenRoughness`),M0=G(x0,`float`,`Iridescence`),N0=G(x0,`float`,`IridescenceIOR`),P0=G(x0,`float`,`IridescenceThickness`),F0=G(x0,`float`,`AlphaT`),I0=G(x0,`float`,`Anisotropy`),L0=G(x0,`vec3`,`AnisotropyT`),R0=G(x0,`vec3`,`AnisotropyB`),z0=G(x0,`color`,`SpecularColor`),B0=G(x0,`float`,`SpecularF90`),V0=G(x0,`float`,`Shininess`),H0=G(x0,`vec4`,`Output`),U0=G(x0,`float`,`dashSize`),W0=G(x0,`float`,`gapSize`),G0=G(x0,`float`,`pointWidth`),K0=G(x0,`float`,`IOR`),q0=G(x0,`float`,`Transmission`),J0=G(x0,`float`,`Thickness`),Y0=G(x0,`float`,`AttenuationDistance`),X0=G(x0,`color`,`AttenuationColor`),Z0=G(x0,`float`,`Dispersion`);var Q0=class extends t1{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.shared=t,this.order=n,this.isUniformGroup=!0}serialize(e){super.serialize(e),e.name=this.name,e.version=this.version,e.shared=this.shared}deserialize(e){super.deserialize(e),this.name=e.name,this.version=e.version,this.shared=e.shared}};const $0=e=>new Q0(e),e2=(e,t=0)=>new Q0(e,!0,t),t2=e2(`frame`),n2=e2(`render`),r2=$0(`object`);var i2=class extends u1{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=r2}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},t)}generate(e,t){let n=this.getNodeType(e),r=this.getUniformHash(e),i=e.getNodeFromHash(r);i===void 0&&(e.setHashNode(this,r),i=this);let a=i.getInputType(e),o=e.getUniformFromNode(i,a,e.shaderStage,this.name||e.context.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};const a2=(e,t)=>{let n=H1(t||e),r=e&&e.isNode===!0?e.node&&e.node.value||e.value:e;return U(new i2(r,n))};var o2=class extends i1{static get type(){return`ArrayNode`}constructor(e,t,n=null){super(e),this.count=t,this.values=n,this.isArrayNode=!0}getNodeType(e){return this.nodeType===null&&(this.nodeType=this.values[0].getNodeType(e)),this.nodeType}getElementType(e){return this.getNodeType(e)}generate(e){let t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}};const s2=(...e)=>{let t;if(e.length===1){let n=e[0];t=new o2(null,n.length,n)}else{let n=e[0],r=e[1];t=new o2(n,r)}return U(t)};H(`toArray`,(e,t)=>s2(Array(t).fill(e)));var c2=class extends i1{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}getNodeType(e,t){return t===`void`?`void`:this.targetNode.getNodeType(e)}needsSplitAssign(e){let{targetNode:t}=this;if(e.isAvailable(`swizzleAssign`)===!1&&t.isSplitNode&&t.components.length>1){let n=e.getTypeLength(t.node.getNodeType(e)),r=Q$.join(``).slice(0,n)!==t.components;return r}return!1}setup(e){let{targetNode:t,sourceNode:n}=this,r=e.getNodeProperties(this);r.sourceNode=n,r.targetNode=t.context({assign:!0})}generate(e,t){let{targetNode:n,sourceNode:r}=e.getNodeProperties(this),i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node,l=c.node.context({assign:!0}),d=l.build(e);for(let t=0;t<c.components.length;t++){let n=c.components[t];e.addLineFlowCode(`${d}.${n} = ${i}[ ${t} ]`,this)}t!==`void`&&(u=o)}else u=`${o} = ${s}`,(t===`void`||c===`void`)&&(e.addLineFlowCode(u,this),t!==`void`&&(u=o));return l.initialized=!0,e.format(u,a,t)}};const l2=W(c2).setParameterLength(2);H(`assign`,l2);var u2=class extends i1{static get type(){return`FunctionCallNode`}constructor(e=null,t={}){super(),this.functionNode=e,this.parameters=t}setParameters(e){return this.parameters=e,this}getParameters(){return this.parameters}getNodeType(e){return this.functionNode.getNodeType(e)}generate(e){let t=[],n=this.functionNode,r=n.getInputs(e),i=this.parameters,a=(t,n)=>{let r=n.type,i=r===`pointer`,a;return a=i?`&`+t.build(e):t.build(e,r),a};if(Array.isArray(i)){if(i.length>r.length)console.error(`THREE.TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'.`),i.length=r.length;else if(i.length<r.length)for(console.error(`THREE.TSL: The number of provided parameters is less than the expected number of inputs in 'Fn()'.`);i.length<r.length;)i.push(q(0));for(let e=0;e<i.length;e++)t.push(a(i[e],r[e]))}else for(let e of r){let n=i[e.name];n===void 0?(console.error(`THREE.TSL: Input '${e.name}' not found in \'Fn()\'.`),t.push(a(q(0),e))):t.push(a(n,e))}let o=n.build(e,`property`);return`${o}( ${t.join(`, `)} )`}};const d2=(e,...t)=>(t=t.length>1||t[0]&&t[0].isNode===!0?G1(t):W1(t[0]),U(new u2(U(e),t)));H(`call`,d2);const f2={"==":`equal`,"!=":`notEqual`,"<":`lessThan`,">":`greaterThan`,"<=":`lessThanEqual`,">=":`greaterThanEqual`,"%":`mod`};var p2=class e extends i1{static get type(){return`OperatorNode`}constructor(t,n,r,...i){if(super(),i.length>0){let a=new e(t,n,r);for(let n=0;n<i.length-1;n++)a=new e(t,a,i[n]);n=a,r=i[i.length-1]}this.op=t,this.aNode=n,this.bNode=r,this.isOperatorNode=!0}getOperatorMethod(e,t){return e.getMethod(f2[this.op],t)}getNodeType(e){let t=this.op,n=this.aNode,r=this.bNode,i=n.getNodeType(e),a=r?r.getNodeType(e):null;if(i===`void`||a===`void`)return`void`;if(t===`%`)return i;if(t===`~`||t===`&`||t===`|`||t===`^`||t===`>>`||t===`<<`)return e.getIntegerType(i);if(t===`!`||t===`&&`||t===`||`||t===`^^`)return`bool`;if(t===`==`||t===`!=`||t===`<`||t===`>`||t===`<=`||t===`>=`){let t=Math.max(e.getTypeLength(i),e.getTypeLength(a));return t>1?`bvec${t}`:`bool`}else{if(e.isMatrix(i)){if(a===`float`)return i;if(e.isVector(a))return e.getVectorFromMatrix(i);if(e.isMatrix(a))return i}else if(e.isMatrix(a)){if(i===`float`)return a;if(e.isVector(i))return e.getVectorFromMatrix(a)}return e.getTypeLength(a)>e.getTypeLength(i)?a:i}}generate(e,t){let n=this.op,{aNode:r,bNode:i}=this,a=this.getNodeType(e),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i?i.getNodeType(e):null,n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`||n===`!=`?e.isVector(o)?s=o:e.isVector(s)?o=s:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):n===`%`?(o=a,s=e.isInteger(o)&&e.isInteger(s)?s:o):e.isMatrix(o)?s===`float`?s=`float`:e.isVector(s)?s=e.getVectorFromMatrix(o):e.isMatrix(s)||(o=s=a):o=e.isMatrix(s)?o===`float`?`float`:e.isVector(o)?e.getVectorFromMatrix(s):s=a:s=a);let c=r.build(e,o),l=i?i.build(e,s):null,u=e.getFunctionOperator(n);if(t!==`void`){let r=e.renderer.coordinateSystem===wI;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`)return r&&e.isVector(o)?e.format(`${this.getOperatorMethod(e,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(n===`%`)return e.isInteger(s)?e.format(`( ${c} % ${l} )`,a,t):e.format(`${this.getOperatorMethod(e,a)}( ${c}, ${l} )`,a,t);if(n===`!`||n===`~`)return e.format(`(${n}${c})`,o,t);if(u)return e.format(`${u}( ${c}, ${l} )`,a,t);if(e.isMatrix(o)&&s===`float`)return e.format(`( ${l} ${n} ${c} )`,a,t);if(o===`float`&&e.isMatrix(s))return e.format(`${c} ${n} ${l}`,a,t);{let i=`( ${c} ${n} ${l} )`;return!r&&a===`bool`&&e.isVector(o)&&e.isVector(s)&&(i=`all${i}`),e.format(i,a,t)}}else if(o!==`void`)return u?e.format(`${u}( ${c}, ${l} )`,a,t):e.isMatrix(o)&&s===`float`?e.format(`${l} ${n} ${c}`,a,t):e.format(`${c} ${n} ${l}`,a,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}};const m2=W(p2,`+`).setParameterLength(2,1/0).setName(`add`),h2=W(p2,`-`).setParameterLength(2,1/0).setName(`sub`),g2=W(p2,`*`).setParameterLength(2,1/0).setName(`mul`),_2=W(p2,`/`).setParameterLength(2,1/0).setName(`div`),v2=W(p2,`%`).setParameterLength(2).setName(`mod`),y2=W(p2,`==`).setParameterLength(2).setName(`equal`),b2=W(p2,`!=`).setParameterLength(2).setName(`notEqual`),x2=W(p2,`<`).setParameterLength(2).setName(`lessThan`),S2=W(p2,`>`).setParameterLength(2).setName(`greaterThan`),C2=W(p2,`<=`).setParameterLength(2).setName(`lessThanEqual`),w2=W(p2,`>=`).setParameterLength(2).setName(`greaterThanEqual`),T2=W(p2,`&&`).setParameterLength(2,1/0).setName(`and`),E2=W(p2,`||`).setParameterLength(2,1/0).setName(`or`),D2=W(p2,`!`).setParameterLength(1).setName(`not`),O2=W(p2,`^^`).setParameterLength(2).setName(`xor`),k2=W(p2,`&`).setParameterLength(2).setName(`bitAnd`),A2=W(p2,`~`).setParameterLength(2).setName(`bitNot`),j2=W(p2,`|`).setParameterLength(2).setName(`bitOr`),M2=W(p2,`^`).setParameterLength(2).setName(`bitXor`),N2=W(p2,`<<`).setParameterLength(2).setName(`shiftLeft`),P2=W(p2,`>>`).setParameterLength(2).setName(`shiftRight`),F2=K(([e])=>(e.addAssign(1),e)),I2=K(([e])=>(e.subAssign(1),e)),L2=K(([e])=>{let t=J(e).toConst();return e.addAssign(1),t}),R2=K(([e])=>{let t=J(e).toConst();return e.subAssign(1),t});H(`add`,m2),H(`sub`,h2),H(`mul`,g2),H(`div`,_2),H(`mod`,v2),H(`equal`,y2),H(`notEqual`,b2),H(`lessThan`,x2),H(`greaterThan`,S2),H(`lessThanEqual`,C2),H(`greaterThanEqual`,w2),H(`and`,T2),H(`or`,E2),H(`not`,D2),H(`xor`,O2),H(`bitAnd`,k2),H(`bitNot`,A2),H(`bitOr`,j2),H(`bitXor`,M2),H(`shiftLeft`,N2),H(`shiftRight`,P2),H(`incrementBefore`,F2),H(`decrementBefore`,I2),H(`increment`,L2),H(`decrement`,R2);const z2=(e,t)=>(console.warn(`THREE.TSL: "remainder()" is deprecated. Use "mod( int( ... ) )" instead.`),v2(e,t)),B2=(e,t)=>(console.warn(`THREE.TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.`),v2(J(e),J(t)));H(`remainder`,z2),H(`modInt`,B2);var Z=class e extends i1{static get type(){return`MathNode`}constructor(t,n,r=null,i=null){if(super(),(t===e.MAX||t===e.MIN)&&arguments.length>3){let a=new e(t,n,r);for(let n=2;n<arguments.length-1;n++)a=new e(t,a,arguments[n]);n=a,r=arguments[arguments.length-1],i=null}this.method=t,this.aNode=n,this.bNode=r,this.cNode=i,this.isMathNode=!0}getInputType(e){let t=this.aNode.getNodeType(e),n=this.bNode?this.bNode.getNodeType(e):null,r=this.cNode?this.cNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n),o=e.isMatrix(r)?0:e.getTypeLength(r);return i>a&&i>o?t:a>o?n:o>i?r:t}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL||n===e.ANY?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):this.getInputType(t)}setup(t){let{aNode:n,bNode:r,method:i}=this,a=null;if(i===e.ONE_MINUS)a=h2(1,n);else if(i===e.RECIPROCAL)a=_2(1,n);else if(i===e.DIFFERENCE)a=d4(h2(n,r));else if(i===e.TRANSFORM_DIRECTION){let e=n,i=r;t.isMatrix(e.getNodeType(t))?i=s0(X(i),0):e=s0(X(e),0);let o=g2(e,i).xyz;a=r4(o)}return a===null?super.setup(t):a}generate(t,n){let r=t.getNodeProperties(this);if(r.outputNode)return super.generate(t,n);let i=this.method,a=this.getNodeType(t),o=this.getInputType(t),s=this.aNode,c=this.bNode,l=this.cNode,u=t.renderer.coordinateSystem;if(i===e.NEGATE)return t.format(`( - `+s.build(t,o)+` )`,a,n);{let r=[];return i===e.CROSS?r.push(s.build(t,a),c.build(t,a)):u===wI&&i===e.STEP?r.push(s.build(t,t.getTypeLength(s.getNodeType(t))===1?`float`:o),c.build(t,o)):u===wI&&(i===e.MIN||i===e.MAX)?r.push(s.build(t,o),c.build(t,t.getTypeLength(c.getNodeType(t))===1?`float`:o)):i===e.REFRACT?r.push(s.build(t,o),c.build(t,o),l.build(t,`float`)):i===e.MIX?r.push(s.build(t,o),c.build(t,o),l.build(t,t.getTypeLength(l.getNodeType(t))===1?`float`:o)):(u===TI&&i===e.ATAN&&c!==null&&(i=`atan2`),t.shaderStage!==`fragment`&&(i===e.DFDX||i===e.DFDY)&&(console.warn(`THREE.TSL: '${i}' is not supported in the ${t.shaderStage} stage.`),i=`/*`+i+`*/`),r.push(s.build(t,o)),c!==null&&r.push(c.build(t,o)),l!==null&&r.push(l.build(t,o))),t.format(`${t.getMethod(i,a)}( ${r.join(`, `)} )`,a,n)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Z.ALL=`all`,Z.ANY=`any`,Z.RADIANS=`radians`,Z.DEGREES=`degrees`,Z.EXP=`exp`,Z.EXP2=`exp2`,Z.LOG=`log`,Z.LOG2=`log2`,Z.SQRT=`sqrt`,Z.INVERSE_SQRT=`inversesqrt`,Z.FLOOR=`floor`,Z.CEIL=`ceil`,Z.NORMALIZE=`normalize`,Z.FRACT=`fract`,Z.SIN=`sin`,Z.COS=`cos`,Z.TAN=`tan`,Z.ASIN=`asin`,Z.ACOS=`acos`,Z.ATAN=`atan`,Z.ABS=`abs`,Z.SIGN=`sign`,Z.LENGTH=`length`,Z.NEGATE=`negate`,Z.ONE_MINUS=`oneMinus`,Z.DFDX=`dFdx`,Z.DFDY=`dFdy`,Z.ROUND=`round`,Z.RECIPROCAL=`reciprocal`,Z.TRUNC=`trunc`,Z.FWIDTH=`fwidth`,Z.TRANSPOSE=`transpose`,Z.BITCAST=`bitcast`,Z.EQUALS=`equals`,Z.MIN=`min`,Z.MAX=`max`,Z.STEP=`step`,Z.REFLECT=`reflect`,Z.DISTANCE=`distance`,Z.DIFFERENCE=`difference`,Z.DOT=`dot`,Z.CROSS=`cross`,Z.POW=`pow`,Z.TRANSFORM_DIRECTION=`transformDirection`,Z.MIX=`mix`,Z.CLAMP=`clamp`,Z.REFRACT=`refract`,Z.SMOOTHSTEP=`smoothstep`,Z.FACEFORWARD=`faceforward`;const V2=q(1e-6),H2=q(1e6),U2=q(Math.PI),W2=q(Math.PI*2),G2=W(Z,Z.ALL).setParameterLength(1),K2=W(Z,Z.ANY).setParameterLength(1),q2=W(Z,Z.RADIANS).setParameterLength(1),J2=W(Z,Z.DEGREES).setParameterLength(1),Y2=W(Z,Z.EXP).setParameterLength(1),X2=W(Z,Z.EXP2).setParameterLength(1),Z2=W(Z,Z.LOG).setParameterLength(1),Q2=W(Z,Z.LOG2).setParameterLength(1),$2=W(Z,Z.SQRT).setParameterLength(1),e4=W(Z,Z.INVERSE_SQRT).setParameterLength(1),t4=W(Z,Z.FLOOR).setParameterLength(1),n4=W(Z,Z.CEIL).setParameterLength(1),r4=W(Z,Z.NORMALIZE).setParameterLength(1),i4=W(Z,Z.FRACT).setParameterLength(1),a4=W(Z,Z.SIN).setParameterLength(1),o4=W(Z,Z.COS).setParameterLength(1),s4=W(Z,Z.TAN).setParameterLength(1),c4=W(Z,Z.ASIN).setParameterLength(1),l4=W(Z,Z.ACOS).setParameterLength(1),u4=W(Z,Z.ATAN).setParameterLength(1,2),d4=W(Z,Z.ABS).setParameterLength(1),f4=W(Z,Z.SIGN).setParameterLength(1),p4=W(Z,Z.LENGTH).setParameterLength(1),m4=W(Z,Z.NEGATE).setParameterLength(1),h4=W(Z,Z.ONE_MINUS).setParameterLength(1),g4=W(Z,Z.DFDX).setParameterLength(1),_4=W(Z,Z.DFDY).setParameterLength(1),v4=W(Z,Z.ROUND).setParameterLength(1),y4=W(Z,Z.RECIPROCAL).setParameterLength(1),b4=W(Z,Z.TRUNC).setParameterLength(1),x4=W(Z,Z.FWIDTH).setParameterLength(1),S4=W(Z,Z.TRANSPOSE).setParameterLength(1),C4=W(Z,Z.BITCAST).setParameterLength(2),w4=(e,t)=>(console.warn(`THREE.TSL: "equals" is deprecated. Use "equal" inside a vector instead, like: "bvec*( equal( ... ) )"`),y2(e,t)),T4=W(Z,Z.MIN).setParameterLength(2,1/0),E4=W(Z,Z.MAX).setParameterLength(2,1/0),D4=W(Z,Z.STEP).setParameterLength(2),O4=W(Z,Z.REFLECT).setParameterLength(2),k4=W(Z,Z.DISTANCE).setParameterLength(2),A4=W(Z,Z.DIFFERENCE).setParameterLength(2),j4=W(Z,Z.DOT).setParameterLength(2),M4=W(Z,Z.CROSS).setParameterLength(2),N4=W(Z,Z.POW).setParameterLength(2),P4=W(Z,Z.POW,2).setParameterLength(1),F4=W(Z,Z.POW,3).setParameterLength(1),I4=W(Z,Z.POW,4).setParameterLength(1),L4=W(Z,Z.TRANSFORM_DIRECTION).setParameterLength(2),R4=e=>g2(f4(e),N4(d4(e),1/3)),z4=e=>j4(e,e),B4=W(Z,Z.MIX).setParameterLength(3),V4=(e,t=0,n=1)=>U(new Z(Z.CLAMP,U(e),U(t),U(n))),H4=e=>V4(e),U4=W(Z,Z.REFRACT).setParameterLength(3),W4=W(Z,Z.SMOOTHSTEP).setParameterLength(3),G4=W(Z,Z.FACEFORWARD).setParameterLength(3),K4=K(([e])=>{let t=12.9898,n=78.233,r=43758.5453,i=j4(e.xy,Y(t,n)),a=v2(i,U2);return i4(a4(a).mul(r))}),q4=(e,t,n)=>B4(t,n,e),J4=(e,t,n)=>W4(t,n,e),Y4=(e,t)=>(console.warn(`THREE.TSL: "atan2" is overloaded. Use "atan" instead.`),u4(e,t)),Poe=G4,Foe=e4;H(`all`,G2),H(`any`,K2),H(`equals`,w4),H(`radians`,q2),H(`degrees`,J2),H(`exp`,Y2),H(`exp2`,X2),H(`log`,Z2),H(`log2`,Q2),H(`sqrt`,$2),H(`inverseSqrt`,e4),H(`floor`,t4),H(`ceil`,n4),H(`normalize`,r4),H(`fract`,i4),H(`sin`,a4),H(`cos`,o4),H(`tan`,s4),H(`asin`,c4),H(`acos`,l4),H(`atan`,u4),H(`abs`,d4),H(`sign`,f4),H(`length`,p4),H(`lengthSq`,z4),H(`negate`,m4),H(`oneMinus`,h4),H(`dFdx`,g4),H(`dFdy`,_4),H(`round`,v4),H(`reciprocal`,y4),H(`trunc`,b4),H(`fwidth`,x4),H(`atan2`,Y4),H(`min`,T4),H(`max`,E4),H(`step`,D4),H(`reflect`,O4),H(`distance`,k4),H(`dot`,j4),H(`cross`,M4),H(`pow`,N4),H(`pow2`,P4),H(`pow3`,F4),H(`pow4`,I4),H(`transformDirection`,L4),H(`mix`,q4),H(`clamp`,V4),H(`refract`,U4),H(`smoothstep`,J4),H(`faceForward`,G4),H(`difference`,A4),H(`saturate`,H4),H(`cbrt`,R4),H(`transpose`,S4),H(`rand`,K4);var Ioe=class extends t1{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return this.setup(e),this.getNodeType(e);let r=t.getNodeType(e);if(n!==null){let t=n.getNodeType(e);if(e.getTypeLength(t)>e.getTypeLength(r))return t}return r}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=r?r.context({nodeBlock:r}):null}generate(e,t){let n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;let{condNode:i,ifNode:a,elseNode:o}=e.getNodeProperties(this),s=e.currentFunctionNode,c=t!==`void`,l=c?S0(n).build(e):``;r.nodeProperty=l;let u=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${u} ) {\n\n`).addFlowTab();let d=a.build(e,n);if(d&&(c?d=l+` = `+d+`;`:(d=`return `+d+`;`,s===null&&(console.warn(`THREE.TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`),d=`// `+d))),e.removeFlowTab().addFlowCode(e.tab+` `+d+`
411
411
 
412
412
  `+e.tab+`}`),o!==null){e.addFlowCode(` else {
413
413
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shaders",
3
3
  "private": false,
4
- "version": "2.0.659",
4
+ "version": "2.0.660",
5
5
  "description": "Declarative shader components",
6
6
  "author": "Simon Le Marchant<https://github.com/marchantweb>",
7
7
  "homepage": "https://shaders.com/",