@pelotto-tech/bellwether 0.0.0 → 0.1.0
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/LICENSE +202 -0
- package/README.md +228 -1
- package/dist/agents/claude.d.ts +8 -0
- package/dist/agents/claude.js +63 -0
- package/dist/agents/claude.js.map +1 -0
- package/dist/agents/copilot.d.ts +7 -0
- package/dist/agents/copilot.js +39 -0
- package/dist/agents/copilot.js.map +1 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.js +8 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/paths.d.ts +2 -0
- package/dist/agents/paths.js +5 -0
- package/dist/agents/paths.js.map +1 -0
- package/dist/agents/types.d.ts +29 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +38 -0
- package/dist/install.js +104 -0
- package/dist/install.js.map +1 -0
- package/dist/json-file.d.ts +12 -0
- package/dist/json-file.js +33 -0
- package/dist/json-file.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +75 -0
- package/dist/main.js.map +1 -0
- package/dist/roles.d.ts +3 -0
- package/dist/roles.js +13 -0
- package/dist/roles.js.map +1 -0
- package/dist/run.d.ts +9 -0
- package/dist/run.js +41 -0
- package/dist/run.js.map +1 -0
- package/dist/skill.d.ts +9 -0
- package/dist/skill.js +65 -0
- package/dist/skill.js.map +1 -0
- package/package.json +53 -6
- package/runtime/adapter/dist/actions.d.ts +15 -0
- package/runtime/adapter/dist/actions.js +7 -0
- package/runtime/adapter/dist/actions.js.map +1 -0
- package/runtime/adapter/dist/bin.d.ts +2 -0
- package/runtime/adapter/dist/bin.js +121 -0
- package/runtime/adapter/dist/bin.js.map +1 -0
- package/runtime/adapter/dist/config.d.ts +41 -0
- package/runtime/adapter/dist/config.js +71 -0
- package/runtime/adapter/dist/config.js.map +1 -0
- package/runtime/adapter/dist/core.d.ts +8 -0
- package/runtime/adapter/dist/core.js +10 -0
- package/runtime/adapter/dist/core.js.map +1 -0
- package/runtime/adapter/dist/herdr/connection.d.ts +34 -0
- package/runtime/adapter/dist/herdr/connection.js +137 -0
- package/runtime/adapter/dist/herdr/connection.js.map +1 -0
- package/runtime/adapter/dist/herdr/index.d.ts +5 -0
- package/runtime/adapter/dist/herdr/index.js +5 -0
- package/runtime/adapter/dist/herdr/index.js.map +1 -0
- package/runtime/adapter/dist/herdr/mapper.d.ts +27 -0
- package/runtime/adapter/dist/herdr/mapper.js +141 -0
- package/runtime/adapter/dist/herdr/mapper.js.map +1 -0
- package/runtime/adapter/dist/herdr/paths.d.ts +29 -0
- package/runtime/adapter/dist/herdr/paths.js +89 -0
- package/runtime/adapter/dist/herdr/paths.js.map +1 -0
- package/runtime/adapter/dist/herdr/protocol.d.ts +102 -0
- package/runtime/adapter/dist/herdr/protocol.js +19 -0
- package/runtime/adapter/dist/herdr/protocol.js.map +1 -0
- package/runtime/adapter/dist/herdr/source.d.ts +99 -0
- package/runtime/adapter/dist/herdr/source.js +316 -0
- package/runtime/adapter/dist/herdr/source.js.map +1 -0
- package/runtime/adapter/dist/index.d.ts +6 -0
- package/runtime/adapter/dist/index.js +7 -0
- package/runtime/adapter/dist/index.js.map +1 -0
- package/runtime/adapter/dist/mock.d.ts +33 -0
- package/runtime/adapter/dist/mock.js +130 -0
- package/runtime/adapter/dist/mock.js.map +1 -0
- package/runtime/adapter/dist/random.d.ts +3 -0
- package/runtime/adapter/dist/random.js +18 -0
- package/runtime/adapter/dist/random.js.map +1 -0
- package/runtime/adapter/dist/recording.d.ts +22 -0
- package/runtime/adapter/dist/recording.js +52 -0
- package/runtime/adapter/dist/recording.js.map +1 -0
- package/runtime/adapter/dist/roles.d.ts +16 -0
- package/runtime/adapter/dist/roles.js +21 -0
- package/runtime/adapter/dist/roles.js.map +1 -0
- package/runtime/adapter/dist/rollup.d.ts +5 -0
- package/runtime/adapter/dist/rollup.js +18 -0
- package/runtime/adapter/dist/rollup.js.map +1 -0
- package/runtime/adapter/dist/scrub.d.ts +9 -0
- package/runtime/adapter/dist/scrub.js +56 -0
- package/runtime/adapter/dist/scrub.js.map +1 -0
- package/runtime/adapter/dist/server.d.ts +47 -0
- package/runtime/adapter/dist/server.js +119 -0
- package/runtime/adapter/dist/server.js.map +1 -0
- package/runtime/adapter/dist/source.d.ts +20 -0
- package/runtime/adapter/dist/source.js +14 -0
- package/runtime/adapter/dist/source.js.map +1 -0
- package/runtime/adapter/dist/types.d.ts +66 -0
- package/runtime/adapter/dist/types.js +23 -0
- package/runtime/adapter/dist/types.js.map +1 -0
- package/runtime/adapter/dist/world.d.ts +9 -0
- package/runtime/adapter/dist/world.js +64 -0
- package/runtime/adapter/dist/world.js.map +1 -0
- package/runtime/adapter/package.json +37 -0
- package/runtime/renderer/dist/assets/BitmapFont-CrMu5gVf.js +6 -0
- package/runtime/renderer/dist/assets/CanvasRenderer-BJUwGe2K.js +1 -0
- package/runtime/renderer/dist/assets/Filter-CYMWP98C.js +1 -0
- package/runtime/renderer/dist/assets/RenderTargetSystem-CUv6yCH8.js +184 -0
- package/runtime/renderer/dist/assets/WebGLRenderer-DT-aSeEc.js +156 -0
- package/runtime/renderer/dist/assets/WebGPURenderer-CV0poHB6.js +75 -0
- package/runtime/renderer/dist/assets/browserAll-BpE2Jy31.js +14 -0
- package/runtime/renderer/dist/assets/getTexelRangeRects-BCdgu8cV.js +195 -0
- package/runtime/renderer/dist/assets/index-BgIYSiaY.js +296 -0
- package/runtime/renderer/dist/assets/webworkerAll-DEtPMT-J.js +83 -0
- package/runtime/renderer/dist/index.html +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{y as C,q as Ce,z as Te,A as ee,M as I,D as P,F as Oe,w as Pe,H as ke,J as _e,K as je,h as be,T as Se,L as Ve,N as Ye,O as $e,P as Xe,Q as Me,U as ze,V as Je,W as J}from"./index-BgIYSiaY.js";import{R as Ke,S as Qe,B as Ze,a as et,b as tt,c as st,A as nt,C as at}from"./RenderTargetSystem-CUv6yCH8.js";import"./Filter-CYMWP98C.js";const he=class q{static _getPatternRepeat(e,t){const a=e&&e!=="clamp-to-edge",s=t&&t!=="clamp-to-edge";return a&&s?"repeat":a?"repeat-x":s?"repeat-y":"no-repeat"}start(e,t,a){}execute(e,t){const a=t.elements;if(!a||!a.length)return;const s=e.renderer,o=s.canvasContext,r=o.activeContext;for(let l=0;l<a.length;l++){const i=a[l];if(!i.packAsQuad)continue;const c=i,d=c.texture,v=d?C.getCanvasSource(d):null;if(!v)continue;const y=d.source.style,H=o.smoothProperty,W=y.scaleMode!=="nearest";r[H]!==W&&(r[H]=W),o.setBlendMode(t.blendMode);const F=s.globalUniforms.globalUniformData?.worldColor??4294967295,S=c.color,D=(F>>>24&255)/255,k=(S>>>24&255)/255,g=s.filter?.alphaMultiplier??1,M=D*k*g;if(M<=0)continue;r.globalAlpha=M;const K=F&16777215,_=S&16777215,U=Te(ee(_,K)),B=d.frame,Y=y.addressModeU??y.addressMode,N=y.addressModeV??y.addressMode,u=q._getPatternRepeat(Y,N),m=d.source._resolution??d.source.resolution??1,f=c.renderable?.renderGroup?.isCachedAsTexture,G=B.x*m,O=B.y*m,b=B.width*m,E=B.height*m,x=c.bounds,w=s.renderTarget.renderTarget.isRoot,R=x.minX,$=x.minY,L=x.maxX-x.minX,A=x.maxY-x.minY,T=d.rotate,h=d.uvs,se=Math.min(h.x0,h.x1,h.x2,h.x3,h.y0,h.y1,h.y2,h.y3),Le=Math.max(h.x0,h.x1,h.x2,h.x3,h.y0,h.y1,h.y2,h.y3),de=u!=="no-repeat"&&(se<0||Le>1),Q=T&&!(!de&&(U!==16777215||T));Q?(q._tempPatternMatrix.copyFrom(c.transform),Ce.matrixAppendRotationInv(q._tempPatternMatrix,T,R,$,L,A),o.setContextTransform(q._tempPatternMatrix,c.roundPixels===1,void 0,f&&w)):o.setContextTransform(c.transform,c.roundPixels===1,void 0,f&&w);const ne=L,ae=A;let X=Q?0:R,z=Q?0:$;if(!Q&&c.roundPixels===1&&(X|=0,z|=0),de){let oe=v;const j=U!==16777215&&!T,V=B.width<=d.source.width&&B.height<=d.source.height;j&&V&&(oe=C.getTintedCanvas({texture:d},U));const re=r.createPattern(oe,u);if(!re)continue;const pe=ne,ue=ae;if(pe===0||ue===0)continue;const me=1/pe,fe=1/ue,ge=(h.x1-h.x0)*me,ve=(h.y1-h.y0)*me,ye=(h.x3-h.x0)*fe,xe=(h.y3-h.y0)*fe,qe=h.x0-ge*X-ye*z,Ne=h.y0-ve*X-xe*z,ie=d.source.pixelWidth,ce=d.source.pixelHeight;q._tempPatternMatrix.set(ge*ie,ve*ce,ye*ie,xe*ce,qe*ie,Ne*ce),C.applyPatternTransform(re,q._tempPatternMatrix),r.fillStyle=re,r.fillRect(X,z,ne,ae)}else{const j=U!==16777215||T?C.getTintedCanvas({texture:d},U):v,V=j!==v;r.drawImage(j,V?0:G,V?0:O,V?j.width:b,V?j.height:E,X,z,ne,ae)}}}};he._tempPatternMatrix=new I;he.extension={type:[P.CanvasPipesAdaptor],name:"batch"};let ot=he;class we{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;s[this._colorStackIndex]=s[this._colorStackIndex-1]&e.mask;const o=this._colorStack[this._colorStackIndex];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1})),this._colorStackIndex++}pop(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;this._colorStackIndex--;const o=s[this._colorStackIndex-1];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}}we.extension={type:[P.CanvasPipes],name:"colorMask"};function rt(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function Re(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;rt(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.moveTo(t.x+t.radius,t.y),n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?(n.moveTo(t.x+t.halfWidth,t.y),n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2)):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.moveTo(1,0),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function it(n,e,t){const a=[],s=[],o=[];if(!ke[e.type]?.build(e,a))return!1;const l=e.closePath??!0;_e(a,t,!1,l,s,o);for(let i=0;i<o.length;i+=3){const c=o[i]*2,d=o[i+1]*2,v=o[i+2]*2;n.moveTo(s[c],s[c+1]),n.lineTo(s[d],s[d+1]),n.lineTo(s[v],s[v+1]),n.closePath()}return!0}function ct(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),Re(n,a.shape),o&&n.restore()}return!0}class Ie{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){if(e.action!=="pushMaskBegin"&&e.action!=="popMaskEnd")return;const t=this._renderer,a=t.canvasContext,s=a?.activeContext;if(!s)return;if(e.action==="popMaskEnd"){this._canvasMaskStack.pop()&&s.restore();return}e.inverse&&this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");const o=e.mask.mask;if(!(o instanceof Oe)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}const r=o,l=r.context?.instructions;if(!l?.length){this._canvasMaskStack.push(!1);return}s.save(),a.setContextTransform(r.groupTransform,(t._roundPixels|r._roundPixels)===1),s.beginPath();let i=!1,c=!1;for(let d=0;d<l.length;d++){const v=l[d],y=v.action;if(y!=="fill"&&y!=="stroke")continue;const H=v.data,W=H?.path?.shapePath;if(!W?.shapePrimitives?.length)continue;const F=y==="stroke",S=W.shapePrimitives;for(let D=0;D<S.length;D++){const k=S[D];if(!k?.shape)continue;const g=k.transform,M=g&&!g.isIdentity();M&&(s.save(),s.transform(g.a,g.b,g.c,g.d,g.tx,g.ty)),F&&H.style?i=it(s,k.shape,H.style)||i:(Re(s,k.shape),c=ct(s,k.holes)||c,i=!0),M&&s.restore()}}if(!i){s.restore(),this._canvasMaskStack.push(!1);return}c?s.clip("evenodd"):s.clip(),this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(e,t){this._warnedMaskTypes.has(e)||(this._warnedMaskTypes.add(e),Pe(t))}}Ie.extension={type:[P.CanvasPipes],name:"stencilMask"};const p="source-over";function lt(){const n=je(),e=Object.create(null);return e.inherit=p,e.none=p,e.normal="source-over",e.add="lighter",e.multiply=n?"multiply":p,e.screen=n?"screen":p,e.overlay=n?"overlay":p,e.darken=n?"darken":p,e.lighten=n?"lighten":p,e["color-dodge"]=n?"color-dodge":p,e["color-burn"]=n?"color-burn":p,e["hard-light"]=n?"hard-light":p,e["soft-light"]=n?"soft-light":p,e.difference=n?"difference":p,e.exclusion=n?"exclusion":p,e.saturation=n?"saturation":p,e.color=n?"color":p,e.luminosity=n?"luminosity":p,e["linear-burn"]=n?"color-burn":p,e["linear-dodge"]=n?"color-dodge":p,e["linear-light"]=n?"hard-light":p,e["pin-light"]=n?"hard-light":p,e["vivid-light"]=n?"hard-light":p,e["hard-mix"]=p,e.negation=n?"difference":p,e["normal-npm"]=e.normal,e["add-npm"]=e.add,e["screen-npm"]=e.screen,e.erase="destination-out",e.subtract=p,e.divide=p,e.min=p,e.max=p,e}const ht=new I;class Be{constructor(e){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=lt(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=e}resolutionChange(e){this.activeResolution=e}init(){const e=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:e}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){const t=this.rootContext;t.webkitImageSmoothingEnabled?this.smoothProperty="webkitImageSmoothingEnabled":t.mozImageSmoothingEnabled?this.smoothProperty="mozImageSmoothingEnabled":t.oImageSmoothingEnabled?this.smoothProperty="oImageSmoothingEnabled":t.msImageSmoothingEnabled&&(this.smoothProperty="msImageSmoothingEnabled")}}setContextTransform(e,t,a,s){const o=s?I.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||I.IDENTITY;let r=ht;r.copyFrom(o),r.append(e);const l=this._projTransform,i=this.activeResolution;if(a=a||i,l){const c=I.shared;c.copyFrom(r),c.prepend(l),r=c}t?this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i|0,r.ty*i|0):this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i,r.ty*i)}clear(e,t){const a=this.activeContext,s=this._renderer;if(a.clearRect(0,0,s.width,s.height),e){const o=be.shared.setValue(e);a.globalAlpha=t??o.alpha,a.fillStyle=o.toHex(),a.fillRect(0,0,s.width,s.height),a.globalAlpha=1}}setBlendMode(e){if(this._activeBlendMode===e)return;this._activeBlendMode=e,this._outerBlend=!1;const t=this.blendModes[e];if(!t){this._warnedBlendModes.has(e)||(console.warn(`CanvasRenderer: blend mode "${e}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(e)),this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=t}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}Be.extension={type:[P.CanvasSystem],name:"canvasContext"};class Ae{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}Ae.extension={type:[P.CanvasSystem],name:"limits"};const dt="#808080",Z=new I,pt=new I,ut=new I,le=new I,mt=new I;function ft(n,e,t){n.beginPath();for(let a=0;a<t.length;a+=3){const s=t[a]*2,o=t[a+1]*2,r=t[a+2]*2;n.moveTo(e[s],e[s+1]),n.lineTo(e[o],e[o+1]),n.lineTo(e[r],e[r+1]),n.closePath()}n.fill()}function gt(n){return`#${(n&16777215).toString(16).padStart(6,"0")}`}function vt(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function te(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;vt(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function yt(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),te(n,a.shape),o&&n.restore()}return!0}function xt(n,e,t,a){const s=n.fill;if(s instanceof Ye){s.buildGradient();const r=s.texture;if(r){const l=C.getTintedPattern(r,e),i=t?le.copyFrom(t).scale(r.source.pixelWidth,r.source.pixelHeight):le.copyFrom(s.transform);return a&&!n.textureSpace&&i.append(a),C.applyPatternTransform(l,i),l}}if(s instanceof $e){const r=C.getTintedPattern(s.texture,e);return C.applyPatternTransform(r,s.transform,!1),r}const o=n.texture;if(o&&o!==Se.WHITE){if(!o.source.resource)return dt;const r=C.getTintedPattern(o,e);let l=n.matrix;if(t){const{resolution:i}=o.source;if(l=le.copyFrom(t),o.rotate){const{uvs:c,orig:d}=o;l.prepend(mt.set(c.x1-c.x0,c.y1-c.y0,c.x3-c.x0,c.y3-c.y0,c.x0,c.y0).invert()).scale(d.width*i,d.height*i)}else l.scale(o.source.pixelWidth,o.source.pixelHeight).translate(-o.frame.x*i,-o.frame.y*i)}return C.applyPatternTransform(r,l),r}return gt(e)}class He{constructor(){this.shader=null}contextChange(e){}execute(e,t){const a=e.renderer,s=a.canvasContext,o=s.activeContext,r=t.groupTransform,l=a.globalUniforms.globalUniformData?.worldColor??4294967295,i=t.groupColorAlpha,c=(l>>>24&255)/255,d=(i>>>24&255)/255,v=a.filter?.alphaMultiplier??1,y=c*d*v;if(y<=0)return;const H=l&16777215,W=i&16777215,F=Te(ee(W,H)),S=a._roundPixels|t._roundPixels;o.save(),s.setContextTransform(r,S===1),s.setBlendMode(t.groupBlendMode);const D=t.context.instructions;for(let k=0;k<D.length;k++){const g=D[k];if(g.action==="texture"){const u=g.data,m=u.image,f=m?C.getCanvasSource(m):null;if(!f)continue;const G=u.alpha*y;if(G<=0)continue;const O=ee(u.style,F);o.globalAlpha=G;let b=f;O!==16777215&&(b=C.getTintedCanvas({texture:m},O));const E=m.frame,x=m.source._resolution??m.source.resolution??1;let w=E.x*x,R=E.y*x;const $=E.width*x,L=E.height*x;b!==f&&(w=0,R=0);const A=u.transform,T=A&&!A.isIdentity(),h=m.rotate;T||h?(Z.copyFrom(r),T&&Z.append(A),h&&Ce.matrixAppendRotationInv(Z,h,u.dx,u.dy,u.dw,u.dh),s.setContextTransform(Z,S===1)):s.setContextTransform(r,S===1),o.drawImage(b,w,R,b===f?$:b.width,b===f?L:b.height,h?0:u.dx,h?0:u.dy,u.dw,u.dh),(T||h)&&s.setContextTransform(r,S===1);continue}const M=g.data,K=M?.path?.shapePath;if(!K?.shapePrimitives?.length)continue;const _=M.style,U=ee(_.color,F),B=_.alpha*y;if(B<=0)continue;const Y=g.action==="stroke";if(o.globalAlpha=B,Y){const u=_;o.lineWidth=u.width,o.lineCap=u.cap,o.lineJoin=u.join,o.miterLimit=u.miterLimit}const N=K.shapePrimitives;if(!Y&&M.hole?.shapePath?.shapePrimitives?.length){const u=N[N.length-1];u.holes=M.hole.shapePath.shapePrimitives}for(let u=0;u<N.length;u++){const m=N[u];if(!m?.shape)continue;const f=m.transform,G=f&&!f.isIdentity(),O=_.texture&&_.texture!==Se.WHITE,b=_.textureSpace==="global"?f:null,E=O?Ve(pt,_,m.shape,b):null,x=G?ut.copyFrom(r).append(f):r,w=xt(_,U,E,x);if(G&&(o.save(),o.transform(f.a,f.b,f.c,f.d,f.tx,f.ty)),Y){const R=_;if(R.alignment!==.5&&!R.pixelLine){const L=[],A=[],T=[];if(ke[m.shape.type]?.build(m.shape,L)){const se=m.shape.closePath??!0;_e(L,R,!1,se,A,T),o.fillStyle=w,ft(o,A,T)}else o.strokeStyle=w,o.beginPath(),te(o,m.shape),o.stroke()}else o.strokeStyle=w,o.beginPath(),te(o,m.shape),o.stroke()}else o.fillStyle=w,o.beginPath(),te(o,m.shape),yt(o,m.holes)?o.fill("evenodd"):o.fill();G&&o.restore()}}o.restore()}destroy(){this.shader=null}}He.extension={type:[P.CanvasPipesAdaptor],name:"graphics"};class Ct{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){const t=e.colorTexture,{canvas:a,context:s}=this._ensureCanvas(t);return{canvas:a,context:s,width:a.width,height:a.height}}resizeGpuRenderTarget(e){const t=e.colorTexture,{canvas:a}=this._ensureCanvas(t);a.width=e.pixelWidth,a.height=e.pixelHeight}startRenderPass(e,t,a,s){const o=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=o.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,a,s)}clear(e,t,a,s){const r=this._renderTargetSystem.getGpuRenderTarget(e).context,l=s||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(r.setTransform(1,0,0,1,0,0),r.clearRect(l.x,l.y,l.width,l.height),a){const i=be.shared.setValue(a);i.alpha>0&&(r.globalAlpha=i.alpha,r.fillStyle=i.toHex(),r.fillRect(l.x,l.y,l.width,l.height),r.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,a,s,o){const l=this._renderTargetSystem.getGpuRenderTarget(e).canvas,i=t.source,{context:c}=this._ensureCanvas(i),d=o?.x??0,v=o?.y??0;return c.drawImage(l,a.x,a.y,s.width,s.height,d,v,s.width,s.height),i.update(),t}copyDepthTexture(e,t,a,s,o){Pe("[CanvasRenderTargetAdaptor] copyDepthTexture is not supported in the canvas renderer")}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!Xe.test(t))&&(t=Me.get().createCanvas(e.pixelWidth,e.pixelHeight),e.resource=t),(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(t.width=e.pixelWidth,t.height=e.pixelHeight);const a=t.getContext("2d");return{canvas:t,context:a}}}class De extends Ke{constructor(e){super(e),this.adaptor=new Ct,this.adaptor.init(e,this)}}De.extension={type:[P.CanvasSystem],name:"renderTarget"};class Ge{constructor(e){}init(){}initSource(e){}generateCanvas(e){const t=Me.get().createCanvas(),a=t.getContext("2d"),s=C.getCanvasSource(e);if(!s)return t;const o=e.frame,r=e.source._resolution??e.source.resolution??1,l=o.x*r,i=o.y*r,c=o.width*r,d=o.height*r;return t.width=Math.ceil(c),t.height=Math.ceil(d),a.drawImage(s,l,i,c,d,0,0,c,d),t}getPixels(e){const t=this.generateCanvas(e);return{pixels:t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}}destroy(){}}Ge.extension={type:[P.CanvasSystem],name:"texture"};const Tt=[...Qe,Be,Ae,Ge,De],Pt=[Ze,et,tt,st,nt,Ie,we,at],kt=[ot,He],Ee=[],We=[],Fe=[],Ue=[];J.handleByNamedList(P.CanvasSystem,Ee);J.handleByNamedList(P.CanvasPipes,We);J.handleByNamedList(P.CanvasPipesAdaptor,Fe);J.handleByNamedList(P.CanvasLoader,Ue);J.add(...Tt,...Pt,...kt);class wt extends ze{constructor(){const e={name:"canvas",type:Je.CANVAS,systems:Ee,renderPipes:We,renderPipeAdaptors:Fe,loaders:Ue};super(e)}}export{wt as CanvasRenderer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{S as n,a as u,G as o,b as f}from"./index-BgIYSiaY.js";const s=class i extends n{constructor(e){e={...i.defaultOptions,...e},super(e),this.enabled=!0,this._state=u.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.clipToViewport=e.clipToViewport,this.addResource("uTexture",0,1),e.blendRequired&&this.addResource("uBackTexture",0,3)}apply(e,t,a,r){e.applyFilter(this,t,a,r)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:a,...r}=e;let l,d;return t&&(l=o.from(t)),a&&(d=f.from(a)),new i({gpuProgram:l,glProgram:d,...r})}};s.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let b=s;export{b as F};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import{ad as qe,a8 as pe,M as x,G as Ke,b as Xe,w as R,T as _,a as Je,ae as fe,D as d,W as $,af as E,ag as Qe,ah as Y,ai as v,V as L,aj as me,ak as Ze,s as T,a7 as U,al as ge,am as ae,an as _e,ao as xe,ap as be,aq as ye,$ as O,h as W,Q as q,a6 as w,R as P,ar as et,Z as tt,as as rt,a3 as st,X as ie,at as oe,d as f,E as nt,x as at,P as V,au as it,v as ot,e as le,av as lt,aw as dt,ax as ct}from"./index-BgIYSiaY.js";import{F as ht}from"./Filter-CYMWP98C.js";var ut=`in vec2 vMaskCoord;
|
|
2
|
+
in vec2 vTextureCoord;
|
|
3
|
+
|
|
4
|
+
uniform sampler2D uTexture;
|
|
5
|
+
uniform sampler2D uMaskTexture;
|
|
6
|
+
|
|
7
|
+
uniform float uAlpha;
|
|
8
|
+
uniform vec4 uMaskClamp;
|
|
9
|
+
uniform float uInverse;
|
|
10
|
+
uniform float uChannel;
|
|
11
|
+
|
|
12
|
+
out vec4 finalColor;
|
|
13
|
+
|
|
14
|
+
void main(void)
|
|
15
|
+
{
|
|
16
|
+
float clip = step(3.5,
|
|
17
|
+
step(uMaskClamp.x, vMaskCoord.x) +
|
|
18
|
+
step(uMaskClamp.y, vMaskCoord.y) +
|
|
19
|
+
step(vMaskCoord.x, uMaskClamp.z) +
|
|
20
|
+
step(vMaskCoord.y, uMaskClamp.w));
|
|
21
|
+
|
|
22
|
+
// TODO look into why this is needed
|
|
23
|
+
float npmAlpha = uAlpha;
|
|
24
|
+
vec4 original = texture(uTexture, vTextureCoord);
|
|
25
|
+
vec4 masky = texture(uMaskTexture, vMaskCoord);
|
|
26
|
+
|
|
27
|
+
float a;
|
|
28
|
+
if (uChannel == 1.0) {
|
|
29
|
+
a = masky.a * npmAlpha * clip;
|
|
30
|
+
} else {
|
|
31
|
+
float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);
|
|
32
|
+
a = alphaMul * masky.r * npmAlpha * clip;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (uInverse == 1.0) {
|
|
36
|
+
a = 1.0 - a;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
finalColor = original * a;
|
|
40
|
+
}
|
|
41
|
+
`,pt=`in vec2 aPosition;
|
|
42
|
+
|
|
43
|
+
out vec2 vTextureCoord;
|
|
44
|
+
out vec2 vMaskCoord;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
uniform vec4 uInputSize;
|
|
48
|
+
uniform vec4 uOutputFrame;
|
|
49
|
+
uniform vec4 uOutputTexture;
|
|
50
|
+
uniform mat3 uFilterMatrix;
|
|
51
|
+
|
|
52
|
+
vec4 filterVertexPosition( vec2 aPosition )
|
|
53
|
+
{
|
|
54
|
+
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
|
|
55
|
+
|
|
56
|
+
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
|
|
57
|
+
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
|
|
58
|
+
|
|
59
|
+
return vec4(position, 0.0, 1.0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
vec2 filterTextureCoord( vec2 aPosition )
|
|
63
|
+
{
|
|
64
|
+
return aPosition * (uOutputFrame.zw * uInputSize.zw);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
vec2 getFilterCoord( vec2 aPosition )
|
|
68
|
+
{
|
|
69
|
+
return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void main(void)
|
|
73
|
+
{
|
|
74
|
+
gl_Position = filterVertexPosition(aPosition);
|
|
75
|
+
vTextureCoord = filterTextureCoord(aPosition);
|
|
76
|
+
vMaskCoord = getFilterCoord(aPosition);
|
|
77
|
+
}
|
|
78
|
+
`,de=`struct GlobalFilterUniforms {
|
|
79
|
+
uInputSize:vec4<f32>,
|
|
80
|
+
uInputPixel:vec4<f32>,
|
|
81
|
+
uInputClamp:vec4<f32>,
|
|
82
|
+
uOutputFrame:vec4<f32>,
|
|
83
|
+
uGlobalFrame:vec4<f32>,
|
|
84
|
+
uOutputTexture:vec4<f32>,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
struct MaskUniforms {
|
|
88
|
+
uFilterMatrix:mat3x3<f32>,
|
|
89
|
+
uMaskClamp:vec4<f32>,
|
|
90
|
+
uAlpha:f32,
|
|
91
|
+
uInverse:f32,
|
|
92
|
+
uChannel:f32,
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
96
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
97
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
98
|
+
|
|
99
|
+
@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;
|
|
100
|
+
@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;
|
|
101
|
+
|
|
102
|
+
struct VSOutput {
|
|
103
|
+
@builtin(position) position: vec4<f32>,
|
|
104
|
+
@location(0) uv : vec2<f32>,
|
|
105
|
+
@location(1) filterUv : vec2<f32>,
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
109
|
+
{
|
|
110
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
111
|
+
|
|
112
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
113
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
114
|
+
|
|
115
|
+
return vec4(position, 0.0, 1.0);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
119
|
+
{
|
|
120
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
124
|
+
{
|
|
125
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
fn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>
|
|
129
|
+
{
|
|
130
|
+
return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
fn getSize() -> vec2<f32>
|
|
134
|
+
{
|
|
135
|
+
return gfu.uGlobalFrame.zw;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@vertex
|
|
139
|
+
fn mainVertex(
|
|
140
|
+
@location(0) aPosition : vec2<f32>,
|
|
141
|
+
) -> VSOutput {
|
|
142
|
+
return VSOutput(
|
|
143
|
+
filterVertexPosition(aPosition),
|
|
144
|
+
filterTextureCoord(aPosition),
|
|
145
|
+
getFilterCoord(aPosition)
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@fragment
|
|
150
|
+
fn mainFragment(
|
|
151
|
+
@location(0) uv: vec2<f32>,
|
|
152
|
+
@location(1) filterUv: vec2<f32>,
|
|
153
|
+
@builtin(position) position: vec4<f32>
|
|
154
|
+
) -> @location(0) vec4<f32> {
|
|
155
|
+
|
|
156
|
+
var maskClamp = filterUniforms.uMaskClamp;
|
|
157
|
+
var uAlpha = filterUniforms.uAlpha;
|
|
158
|
+
|
|
159
|
+
var clip = step(3.5,
|
|
160
|
+
step(maskClamp.x, filterUv.x) +
|
|
161
|
+
step(maskClamp.y, filterUv.y) +
|
|
162
|
+
step(filterUv.x, maskClamp.z) +
|
|
163
|
+
step(filterUv.y, maskClamp.w));
|
|
164
|
+
|
|
165
|
+
var mask = textureSample(uMaskTexture, uSampler, filterUv);
|
|
166
|
+
var source = textureSample(uTexture, uSampler, uv);
|
|
167
|
+
|
|
168
|
+
var a: f32;
|
|
169
|
+
if (filterUniforms.uChannel == 1.0) {
|
|
170
|
+
a = mask.a * uAlpha * clip;
|
|
171
|
+
} else {
|
|
172
|
+
var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);
|
|
173
|
+
a = alphaMul * mask.r * uAlpha * clip;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (filterUniforms.uInverse == 1.0) {
|
|
177
|
+
a = 1.0 - a;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return source * a;
|
|
181
|
+
}
|
|
182
|
+
`;class ft extends ht{constructor(e){const{sprite:t,...r}=e,s=new qe(t.texture),n=new pe({uFilterMatrix:{value:new x,type:"mat3x3<f32>"},uMaskClamp:{value:s.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"},uInverse:{value:e.inverse?1:0,type:"f32"},uChannel:{value:e.channel==="alpha"?1:0,type:"f32"}}),i=Ke.from({vertex:{source:de,entryPoint:"mainVertex"},fragment:{source:de,entryPoint:"mainFragment"}}),l=Xe.from({vertex:pt,fragment:ut,name:"mask-filter"});super({...r,gpuProgram:i,glProgram:l,clipToViewport:!1,resources:{filterUniforms:n,uMaskTexture:t.texture.source}}),this.sprite=t,this._textureMatrix=s}setSprite(e){this.sprite=e;const t=this._getSafeTexture();this._textureMatrix.texture=t,this.resources.uMaskTexture=t.source}set inverse(e){this.resources.filterUniforms.uniforms.uInverse=e?1:0}get inverse(){return this.resources.filterUniforms.uniforms.uInverse===1}set channel(e){this.resources.filterUniforms.uniforms.uChannel=e==="alpha"?1:0}get channel(){return this.resources.filterUniforms.uniforms.uChannel===1?"alpha":"red"}apply(e,t,r,s){const n=this._getSafeTexture();this._textureMatrix.texture=n,e.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=n.source,e.applyFilter(this,t,r,s)}_getSafeTexture(){const e=this.sprite.texture;return e.destroyed||!e.source||e.source.destroyed?(R("[MaskFilter] The mask texture was destroyed while the mask is still in use. Remove the mask before destroying its texture."),_.EMPTY):e}destroy(e=!1){this._textureMatrix.destroy(),super.destroy(e)}}const K=class Te{constructor(e,t){this.state=Je.for2d(),this._batchersByInstructionSet=Object.create(null),this._activeBatches=Object.create(null),this.renderer=e,this._adaptor=t,this._adaptor.init?.(this)}static getBatcher(e,t){return new this._availableBatchers[e]({maxTextures:t})}buildStart(e){let t=this._batchersByInstructionSet[e.uid];t||(t=this._batchersByInstructionSet[e.uid]=Object.create(null),t.default||(t.default=new fe({maxTextures:this.renderer.limits.maxBatchableTextures}))),this._activeBatches=t,this._activeBatch=this._activeBatches.default;for(const r in this._activeBatches)this._activeBatches[r].begin()}addToBatch(e,t){if(this._activeBatch.name!==e.batcherName){this._activeBatch.break(t);let r=this._activeBatches[e.batcherName];r||(r=this._activeBatches[e.batcherName]=Te.getBatcher(e.batcherName,this.renderer.limits.maxBatchableTextures),r.begin()),this._activeBatch=r}this._activeBatch.add(e)}break(e){this._activeBatch.break(e)}buildEnd(e){this._activeBatch.break(e);const t=this._activeBatches;for(const r in t){const s=t[r],n=s.geometry;n.indexBuffer.setDataWithSize(s.indexBuffer,s.indexSize,!0),n.buffers[0].setDataWithSize(s.attributeBuffer.float32View,s.attributeSize,!1)}}upload(e){const t=this._batchersByInstructionSet[e.uid];for(const r in t){const s=t[r],n=s.geometry;s.dirty&&(s.dirty=!1,n.buffers[0].update(s.attributeSize*4))}}execute(e){if(e.action==="startBatch"){const t=e.batcher,r=t.geometry,s=t.shader;this._adaptor.start(this,r,s)}this._adaptor.execute(this,e)}destroyInstructionSet(e){const t=this._batchersByInstructionSet[e.uid];if(t){for(const r in t)t[r].destroy();delete this._batchersByInstructionSet[e.uid],this._activeBatches===t&&(this._activeBatches=Object.create(null),this._activeBatch=null)}}destroy(){this.state=null,this.renderer=null,this._adaptor=null;for(const e in this._activeBatches)this._activeBatches[e].destroy();this._activeBatches=null}};K.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"batch"};K._availableBatchers=Object.create(null);let ve=K;$.handleByMap(d.Batcher,ve._availableBatchers);$.add(fe);const mt=new Y;class gt extends me{constructor(){super(),this._placeholderSprite=new Ze(_.EMPTY),this.filters=[new ft({sprite:this._placeholderSprite,inverse:!1,resolution:"inherit",antialias:"inherit"})]}get sprite(){return this.filters[0].sprite}set sprite(e){this.filters[0].setSprite(e)}get inverse(){return this.filters[0].inverse}set inverse(e){this.filters[0].inverse=e}get channel(){return this.filters[0].channel}set channel(e){this.filters[0].channel=e}reset(){this._placeholderSprite.texture=_.EMPTY,this.sprite=this._placeholderSprite}}class Ce{constructor(e){this._activeMaskStage=[],this._usedEffects=[],this._renderer=e,e.runners.postrender.add(this)}push(e,t,r){const s=this._renderer;if(s.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1,maskedContainer:t}),e.inverse=t._maskOptions.inverse,e.channel=t._maskOptions.channel??"red",e.renderMaskToTexture){const n=e.mask;n.includeInBuild=!0,n.collectRenderables(r,s,null),n.includeInBuild=!1}s.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:e,maskedContainer:t,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){const t=this._renderer,r=e.mask.renderMaskToTexture;if(e.action==="pushMaskBegin"){const s=E.get(gt);if(s.inverse=e.inverse,s.channel=e.mask.channel,r){e.mask.mask.measurable=!0;const n=Qe(e.mask.mask,!0,mt);e.mask.mask.measurable=!1,n.ceil();const i=t.renderTarget.renderTarget.colorTexture.source,l=v.getOptimalTexture({width:n.width,height:n.height,resolution:i._resolution,antialias:i.antialias});t.renderTarget.push({target:l,clear:!0}),t.globalUniforms.push({offset:n,worldColor:4294967295});const o=s.sprite;o.texture=l,o.worldTransform.tx=n.minX,o.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:s,maskedContainer:e.maskedContainer,filterTexture:l})}else s.sprite=e.mask.mask,this._activeMaskStage.push({filterEffect:s,maskedContainer:e.maskedContainer})}else if(e.action==="pushMaskEnd"){const s=this._activeMaskStage[this._activeMaskStage.length-1];r&&(t.type===L.WEBGL&&t.renderTarget.finishRenderPass(),t.renderTarget.pop(),t.globalUniforms.pop()),t.filter.push({renderPipeId:"filter",action:"pushFilter",container:s.maskedContainer,filterEffect:s.filterEffect,canBundle:!1})}else if(e.action==="popMaskEnd"){t.filter.pop();const s=this._activeMaskStage.pop();r&&v.returnTexture(s.filterTexture),this._usedEffects.push(s.filterEffect)}}postrender(){const e=this._usedEffects;for(let t=0;t<e.length;t++)E.return(e[t]);e.length=0}destroy(){this.postrender(),this._renderer.runners.postrender.remove(this),this._renderer=null,this._activeMaskStage=null,this._usedEffects=null}}Ce.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"alphaMask"};class Se{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,r){this._renderer.renderPipes.batch.break(r);const n=this._colorStack;n[this._colorStackIndex]=n[this._colorStackIndex-1]&e.mask;const i=this._colorStack[this._colorStackIndex];i!==this._currentColor&&(this._currentColor=i,r.add({renderPipeId:"colorMask",colorMask:i,canBundle:!1})),this._colorStackIndex++}pop(e,t,r){this._renderer.renderPipes.batch.break(r);const n=this._colorStack;this._colorStackIndex--;const i=n[this._colorStackIndex-1];i!==this._currentColor&&(this._currentColor=i,r.add({renderPipeId:"colorMask",colorMask:i,canBundle:!1}))}execute(e){this._renderer.colorMask.setMask(e.colorMask)}destroy(){this._renderer=null,this._colorStack=null}}Se.extension={type:[d.WebGLPipes,d.WebGPUPipes],name:"colorMask"};class ke{constructor(e){this._maskHash=new WeakMap,this._renderer=e}push(e,t,r){const s=e,n=this._renderer;n.renderPipes.batch.break(r),n.renderPipes.blendMode.setBlendMode(s.mask,"none",r),r.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const i=s.mask;i.includeInBuild=!0,this._maskHash.has(s)||this._maskHash.set(s,{instructionsStart:0,instructionsLength:0});const l=this._maskHash.get(s);l.instructionsStart=r.instructionSize,i.collectRenderables(r,n,null),i.includeInBuild=!1,n.renderPipes.batch.break(r),r.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const o=r.instructionSize-l.instructionsStart-1;l.instructionsLength=o}pop(e,t,r){const s=e,n=this._renderer;n.renderPipes.batch.break(r),n.renderPipes.blendMode.setBlendMode(s.mask,"none",r),r.add({renderPipeId:"stencilMask",action:"popMaskBegin",inverse:t._maskOptions.inverse,canBundle:!1});const i=this._maskHash.get(e);for(let l=0;l<i.instructionsLength;l++)r.instructions[r.instructionSize++]=r.instructions[i.instructionsStart++];r.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(e){const r=this._renderer,s=r.renderTarget.getGpuRenderTarget(r.renderTarget.renderTarget);let n=s.maskStackIndex;e.action==="pushMaskBegin"?(r.renderTarget.ensureDepthStencil(),r.stencil.setStencilMode(T.RENDERING_MASK_ADD,n),n++,r.colorMask.setMask(0)):e.action==="pushMaskEnd"?(e.inverse?r.stencil.setStencilMode(T.INVERSE_MASK_ACTIVE,n):r.stencil.setStencilMode(T.MASK_ACTIVE,n),r.colorMask.setMask(15)):e.action==="popMaskBegin"?(r.colorMask.setMask(0),n!==0?r.stencil.setStencilMode(T.RENDERING_MASK_REMOVE,n):(r.renderTarget.clear(null,U.STENCIL),r.stencil.setStencilMode(T.DISABLED,n)),n--):e.action==="popMaskEnd"&&(e.inverse?r.stencil.setStencilMode(T.INVERSE_MASK_ACTIVE,n):r.stencil.setStencilMode(T.MASK_ACTIVE,n),r.colorMask.setMask(15)),s.maskStackIndex=n}destroy(){this._renderer=null,this._maskHash=null}}ke.extension={type:[d.WebGLPipes,d.WebGPUPipes],name:"stencilMask"};class Re{constructor(e){this._renderer=e}updateRenderable(){}destroyRenderable(){}validateRenderable(){return!1}addRenderable(e,t){this._renderer.renderPipes.batch.break(t),t.add(e)}execute(e){e.isRenderable&&e.render(this._renderer)}destroy(){this._renderer=null}}Re.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"customRender"};function N(a,e){const t=a.instructionSet,r=t.instructions;for(let s=0;s<t.instructionSize;s++){const n=r[s];e[n.renderPipeId].execute(n)}}class Me{constructor(e){this._renderer=e}addRenderGroup(e,t){e.isCachedAsTexture?this._addRenderableCacheAsTexture(e,t):this._addRenderableDirect(e,t)}execute(e){e.isRenderable&&(e.isCachedAsTexture?this._executeCacheAsTexture(e):this._executeDirect(e))}destroy(){this._renderer=null}_addRenderableDirect(e,t){this._renderer.renderPipes.batch.break(t),e._batchableRenderGroup&&(E.return(e._batchableRenderGroup),e._batchableRenderGroup=null),t.add(e)}_addRenderableCacheAsTexture(e,t){const r=e._batchableRenderGroup??(e._batchableRenderGroup=E.get(ge));r.renderable=e.root,r.transform=e.root.relativeGroupTransform,r.texture=e.texture,r.bounds=e._textureBounds,t.add(e),this._renderer.renderPipes.blendMode.pushBlendMode(e,e.root.groupBlendMode,t),this._renderer.renderPipes.batch.addToBatch(r,t),this._renderer.renderPipes.blendMode.popBlendMode(t)}_executeCacheAsTexture(e){if(e.textureNeedsUpdate){e.textureNeedsUpdate=!1;const t=new x().translate(-e._textureBounds.x,-e._textureBounds.y);this._renderer.renderTarget.push({target:e.texture,clear:!0,frame:e.texture.frame}),this._renderer.globalUniforms.push({worldTransformMatrix:t,worldColor:4294967295,offset:{x:0,y:0}}),N(e,this._renderer.renderPipes),this._renderer.renderTarget.finishRenderPass(),this._renderer.renderTarget.pop(),this._renderer.globalUniforms.pop()}e._batchableRenderGroup._batcher.updateElement(e._batchableRenderGroup),e._batchableRenderGroup._batcher.geometry.buffers[0].update()}_executeDirect(e){this._renderer.globalUniforms.push({worldTransformMatrix:e.inverseParentTextureTransform,worldColor:e.worldColorAlpha}),N(e,this._renderer.renderPipes),this._renderer.globalUniforms.pop()}}Me.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"renderGroup"};class we{constructor(e){this._renderer=e}addRenderable(e,t){const r=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){const t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){const t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.bounds=e.visualBounds,t.texture=e._texture}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){const t=new ge;return t.renderable=e,t.transform=e.groupTransform,t.texture=e._texture,t.bounds=e.visualBounds,t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}}we.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"sprite"};const B={};$.handle(d.BlendMode,a=>{if(!a.name)throw new Error("BlendMode extension must have a name property");B[a.name]=a.ref},a=>{delete B[a.name]});class Pe{constructor(e){this._blendModeStack=[],this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=e,this._renderer.runners.prerender.add(this)}prerender(){this._activeBlendMode="normal",this._isAdvanced=!1}pushBlendMode(e,t,r){this._blendModeStack.push(t),this.setBlendMode(e,t,r)}popBlendMode(e){this._blendModeStack.pop();const t=this._blendModeStack[this._activeBlendMode.length-1]??"normal";this.setBlendMode(null,t,e)}setBlendMode(e,t,r){const s=e instanceof ae;if(this._activeBlendMode===t){this._isAdvanced&&e&&!s&&this._renderableList?.push(e);return}this._isAdvanced&&this._endAdvancedBlendMode(r),this._activeBlendMode=t,e&&(this._isAdvanced=!!B[t],this._isAdvanced&&this._beginAdvancedBlendMode(e,r))}_beginAdvancedBlendMode(e,t){this._renderer.renderPipes.batch.break(t);const r=this._activeBlendMode;if(!B[r]){R(`Unable to assign BlendMode: '${r}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);return}const s=this._ensureFilterEffect(r),n=e instanceof ae,i={renderPipeId:"filter",action:"pushFilter",filterEffect:s,renderables:n?null:[e],container:n?e.root:null,canBundle:!1};this._renderableList=i.renderables,t.add(i)}_ensureFilterEffect(e){let t=this._filterHash[e];return t||(t=this._filterHash[e]=new me,t.filters=[new B[e]]),t}_endAdvancedBlendMode(e){this._isAdvanced=!1,this._renderableList=null,this._renderer.renderPipes.batch.break(e),e.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(e){this._isAdvanced&&this._endAdvancedBlendMode(e)}destroy(){this._renderer=null,this._renderableList=null;for(const e in this._filterHash)this._filterHash[e].destroy();this._filterHash=null}}Pe.extension={type:[d.WebGLPipes,d.WebGPUPipes,d.CanvasPipes],name:"blendMode"};function j(a,e){e||(e=0);for(let t=e;t<a.length&&a[t];t++)a[t]=null}const _t=new O,ce=xe|be|ye;function Be(a,e=!1){xt(a);const t=a.childrenToUpdate,r=a.updateTick++;for(const s in t){const n=Number(s),i=t[s],l=i.list,o=i.index;for(let h=0;h<o;h++){const c=l[h];c.parentRenderGroup===a&&c.relativeRenderGroupDepth===n&&Ge(c,r,0)}j(l,o),i.index=0}if(e)for(let s=0;s<a.renderGroupChildren.length;s++)Be(a.renderGroupChildren[s],e)}function xt(a){const e=a.root;let t;if(a.renderGroupParent){const r=a.renderGroupParent;a.worldTransform.appendFrom(e.relativeGroupTransform,r.worldTransform),a.worldColor=_e(e.groupColor,r.worldColor),t=e.groupAlpha*r.worldAlpha}else a.worldTransform.copyFrom(e.localTransform),a.worldColor=e.localColor,t=e.localAlpha;t=t<0?0:t>1?1:t,a.worldAlpha=t,a.worldColorAlpha=a.worldColor+((t*255|0)<<24)}function Ge(a,e,t){if(e===a.updateTick)return;a.updateTick=e,a.didChange=!1;const r=a.localTransform;a.updateLocalTransform();const s=a.parent;if(s&&!s.renderGroup?(t|=a._updateFlags,a.relativeGroupTransform.appendFrom(r,s.relativeGroupTransform),t&ce&&he(a,s,t)):(t=a._updateFlags,a.relativeGroupTransform.copyFrom(r),t&ce&&he(a,_t,t)),!a.renderGroup){const n=a.children,i=n.length;for(let h=0;h<i;h++)Ge(n[h],e,t);const l=a.parentRenderGroup,o=a;o.renderPipeId&&!l.structureDidChange&&l.updateRenderable(o)}}function he(a,e,t){if(t&be){a.groupColor=_e(a.localColor,e.groupColor);let r=a.localAlpha*e.groupAlpha;r=r<0?0:r>1?1:r,a.groupAlpha=r,a.groupColorAlpha=a.groupColor+((r*255|0)<<24)}t&ye&&(a.groupBlendMode=a.localBlendMode==="inherit"?e.groupBlendMode:a.localBlendMode),t&xe&&(a.globalDisplayStatus=a.localDisplayStatus&e.globalDisplayStatus),a._updateFlags=0}function bt(a,e){const{list:t}=a.childrenRenderablesToUpdate;let r=!1;for(let s=0;s<a.childrenRenderablesToUpdate.index;s++){const n=t[s];if(r=e[n.renderPipeId].validateRenderable(n),r)break}return a.structureDidChange=r,r}const yt=new x;class Ae{constructor(e){this._renderer=e}render({container:e,transform:t}){const r=e.parent,s=e.renderGroup.renderGroupParent;e.parent=null,e.renderGroup.renderGroupParent=null;const n=this._renderer,i=yt;t&&(i.copyFrom(e.renderGroup.localTransform),e.renderGroup.localTransform.copyFrom(t));const l=n.renderPipes;this._updateCachedRenderGroups(e.renderGroup,null),this._updateRenderGroups(e.renderGroup),n.globalUniforms.start({worldTransformMatrix:t?e.renderGroup.localTransform:e.renderGroup.worldTransform,worldColor:e.renderGroup.worldColorAlpha}),N(e.renderGroup,l),l.uniformBatch&&l.uniformBatch.renderEnd(),t&&e.renderGroup.localTransform.copyFrom(i),e.parent=r,e.renderGroup.renderGroupParent=s}destroy(){this._renderer=null}_updateCachedRenderGroups(e,t){if(e._parentCacheAsTextureRenderGroup=t,e.isCachedAsTexture){if(!e.textureNeedsUpdate)return;t=e}for(let r=e.renderGroupChildren.length-1;r>=0;r--)this._updateCachedRenderGroups(e.renderGroupChildren[r],t);if(e.invalidateMatrices(),e.isCachedAsTexture){if(e.textureNeedsUpdate){const r=e.root.getLocalBounds(),s=this._renderer,n=e.textureOptions.resolution||s.view.resolution,i=e.textureOptions.antialias??s.view.antialias,l=e.textureOptions.scaleMode??"linear",o=e.texture;r.ceil(),e.texture&&v.returnTexture(e.texture);const h=v.getOptimalTexture({width:r.width,height:r.height,resolution:n,antialias:i,scaleMode:l});e.texture=h,e._textureBounds||(e._textureBounds=new Y),e._textureBounds.copyFrom(r),o!==e.texture&&e.renderGroupParent&&(e.renderGroupParent.structureDidChange=!0)}}else e.texture&&(v.returnTexture(e.texture),e.texture=null)}_updateRenderGroups(e){const t=this._renderer,r=t.renderPipes;if(e.runOnRender(t),e.instructionSet.renderPipes=r,e.structureDidChange?j(e.childrenRenderablesToUpdate.list,0):bt(e,r),Be(e),e.structureDidChange?(e.structureDidChange=!1,this._buildInstructions(e,t)):this._updateRenderables(e),e.childrenRenderablesToUpdate.index=0,t.renderPipes.batch.upload(e.instructionSet),!(e.isCachedAsTexture&&!e.textureNeedsUpdate))for(let s=0;s<e.renderGroupChildren.length;s++)this._updateRenderGroups(e.renderGroupChildren[s])}_updateRenderables(e){const{list:t,index:r}=e.childrenRenderablesToUpdate;for(let s=0;s<r;s++){const n=t[s];n.didViewUpdate&&e.updateRenderable(n)}j(t,r)}_buildInstructions(e,t){const r=e.root,s=e.instructionSet;s.reset();const n=t.renderPipes?t:t.batch.renderer,i=n.renderPipes;i.batch.buildStart(s),i.blendMode.buildStart(),i.colorMask.buildStart(),r.sortableChildren&&r.sortChildren(),r.collectRenderablesWithEffects(s,n,null),i.batch.buildEnd(s),i.blendMode.buildEnd(s)}}Ae.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"renderGroup"};const X=class Ue{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new W(0),this.color=this._backgroundColor,this.alpha=1}init(e){e={...Ue.defaultOptions,...e},this.clearBeforeRender=e.clearBeforeRender,this.color=e.background||e.backgroundColor||this._backgroundColor,this.alpha=e.backgroundAlpha,this._backgroundColor.setAlpha(e.backgroundAlpha)}get color(){return this._backgroundColor}set color(e){W.shared.setValue(e).alpha<1&&this._backgroundColor.alpha===1&&R("Cannot set a transparent background on an opaque canvas. To enable transparency, set backgroundAlpha < 1 when initializing your Application."),this._backgroundColor.setValue(e)}get alpha(){return this._backgroundColor.alpha}set alpha(e){this._backgroundColor.setAlpha(e)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}};X.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"background",priority:0};X.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};let Tt=X;const H={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},J=class Ie{constructor(e){this._renderer=e}_normalizeOptions(e,t={}){return e instanceof O||e instanceof _?{target:e,...t}:{...t,...e}}async image(e){const t=q.get().createImage();return t.src=await this.base64(e),t}async base64(e){e=this._normalizeOptions(e,Ie.defaultImageOptions);const{format:t,quality:r}=e,s=this.canvas(e);if(s.toBlob!==void 0)return new Promise((n,i)=>{s.toBlob(l=>{if(!l){i(new Error("ICanvas.toBlob failed!"));return}const o=new FileReader;o.onload=()=>n(o.result),o.onerror=i,o.readAsDataURL(l)},H[t],r)});if(s.toDataURL!==void 0)return s.toDataURL(H[t],r);if(s.convertToBlob!==void 0){const n=await s.convertToBlob({type:H[t],quality:r});return new Promise((i,l)=>{const o=new FileReader;o.onload=()=>i(o.result),o.onerror=l,o.readAsDataURL(n)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e){e=this._normalizeOptions(e);const t=e.target,r=this._renderer;if(t instanceof _)return r.texture.generateCanvas(t);const s=r.textureGenerator.generateTexture(e),n=r.texture.generateCanvas(s);return s.destroy(!0),n}pixels(e){e=this._normalizeOptions(e);const t=e.target,r=this._renderer,s=t instanceof _?t:r.textureGenerator.generateTexture(e),n=r.texture.getPixels(s);return t instanceof O&&s.destroy(!0),n}texture(e){return e=this._normalizeOptions(e),e.target instanceof _?e.target:this._renderer.textureGenerator.generateTexture(e)}download(e){e=this._normalizeOptions(e);const t=this.canvas(e),r=document.createElement("a");r.download=e.filename??"image.png",r.href=t.toDataURL("image/png"),document.body.appendChild(r),r.click(),document.body.removeChild(r)}log(e){const t=e.width??200;e=this._normalizeOptions(e);const r=this.canvas(e),s=r.toDataURL();console.log(`[Pixi Texture] ${r.width}px ${r.height}px`);const n=["font-size: 1px;",`padding: ${t}px 300px;`,`background: url(${s}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",n)}destroy(){this._renderer=null}};J.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"extract"};J.defaultImageOptions={format:"png",quality:1};let vt=J;class Q extends _{static create(e){const{dynamic:t,textureOptions:r,...s}=e;return new Q({...r,source:new w(s),dynamic:t??!1})}resize(e,t,r){return this.source.resize(e,t,r),this}}const Ct=new P,St=new Y,kt=[0,0,0,0];class De{constructor(e){this._renderer=e}generateTexture(e){e instanceof O&&(e={target:e,frame:void 0,textureSourceOptions:{},resolution:void 0});const t=e.resolution||this._renderer.resolution,r=e.antialias||this._renderer.view.antialias,s=e.target;let n=e.clearColor;n?n=Array.isArray(n)&&n.length===4?n:W.shared.setValue(n).toArray():n=kt;const i=e.frame?.copyTo(Ct)||et(s,St).rectangle,l=e.defaultAnchor&&{defaultAnchor:e.defaultAnchor};i.width=Math.max(i.width,1/t)|0,i.height=Math.max(i.height,1/t)|0;const o=Q.create({...e.textureSourceOptions,width:i.width,height:i.height,resolution:t,antialias:r,textureOptions:l}),h=x.shared.translate(-i.x,-i.y);return this._renderer.render({container:s,transform:h,target:o,clearColor:n}),o.source.updateMipmaps(),o}destroy(){this._renderer=null}}De.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"textureGenerator"};function Rt(a){let e=!1;for(const r in a)if(a[r]==null){e=!0;break}if(!e)return a;const t=Object.create(null);for(const r in a){const s=a[r];s&&(t[r]=s)}return t}function Mt(a){let e=0;for(let t=0;t<a.length;t++)a[t]==null?e++:a[t-e]=a[t];return a.length-=e,a}const Z=class Ee{constructor(e){this._managedResources=[],this._managedResourceHashes=[],this._managedCollections=[],this._ready=!1,this._running=!1,this._renderer=e}init(e){e={...Ee.defaultOptions,...e},this.maxUnusedTime=e.gcMaxUnusedTime,this._frequency=e.gcFrequency,this.enabled=e.gcActive,this.now=performance.now()}get enabled(){return!!this._handler}set enabled(e){this.enabled!==e&&(e?(this._handler=this._renderer.scheduler.repeat(()=>{this._ready=!0},this._frequency,!1),this._collectionsHandler=this._renderer.scheduler.repeat(()=>{for(const t of this._managedCollections){const{context:r,collection:s,type:n}=t;n==="hash"?r[s]=Rt(r[s]):r[s]=Mt(r[s])}},this._frequency)):(this._renderer.scheduler.cancel(this._handler),this._renderer.scheduler.cancel(this._collectionsHandler),this._handler=0,this._collectionsHandler=0))}prerender({container:e}){this.now=performance.now(),e.renderGroup.gcTick=this._renderer.tick++,this._updateInstructionGCTick(e.renderGroup,e.renderGroup.gcTick)}postrender(){!this._ready||!this.enabled||(this.run(),this._ready=!1)}_updateInstructionGCTick(e,t){e.instructionSet.gcTick=t,e.gcTick=t;for(const r of e.renderGroupChildren)this._updateInstructionGCTick(r,t)}addCollection(e,t,r){this._managedCollections.push({context:e,collection:t,type:r})}addResource(e,t){if(e._gcLastUsed!==-1){e._gcLastUsed=this.now,e._onTouch?.(this.now);return}const r=this._managedResources.length;e._gcData={index:r,type:t},e._gcLastUsed=this.now,e._onTouch?.(this.now),e.once("unload",this.removeResource,this),this._managedResources.push(e)}removeResource(e){const t=e._gcData;if(!t)return;const r=t.index,s=this._managedResources.length-1;if(this._running)this._managedResources[r]=null;else{if(r!==s){const n=this._managedResources[s];this._managedResources[r]=n,n._gcData.index=r}this._managedResources.length--}e._gcData=null,e._gcLastUsed=-1}addResourceHash(e,t,r,s=0){this._managedResourceHashes.push({context:e,hash:t,type:r,priority:s}),this._managedResourceHashes.sort((n,i)=>n.priority-i.priority)}run(){if(this._running)return;const e=performance.now(),t=this._managedResourceHashes,r=this._managedResources;this._running=!0;try{for(const n of t)this.runOnHash(n,e);const s=r.length;for(let n=0;n<s;n++){const i=r[n];i&&this.runOnResource(i,e)}}finally{let s=0;for(let n=0;n<r.length;n++){const i=r[n];i&&(s!==n&&(r[s]=i,i._gcData.index=s),s++)}r.length=s,this._running=!1}}updateRenderableGCTick(e,t){const r=e.renderGroup??e.parentRenderGroup,s=r?.instructionSet?.gcTick??-1;(r?.gcTick??0)===s&&(e._gcLastUsed=t,e._onTouch?.(t))}runOnResource(e,t){e._gcData.type==="renderable"&&this.updateRenderableGCTick(e,t),!(t-e._gcLastUsed<this.maxUnusedTime||!e.autoGarbageCollect)&&(e.off("unload",this.removeResource,this),e.unload(),this.removeResource(e))}_createHashClone(e,t){const r=Object.create(null);for(const s in e){if(s===t)break;e[s]!==null&&(r[s]=e[s])}return r}runOnHash(e,t){const{context:r,hash:s,type:n}=e,i=r[s];let l=null,o=0;for(const h in i){const c=i[h];if(c===null){o++,o===1e4&&!l&&(l=this._createHashClone(i,h));continue}if(c._gcLastUsed===-1){c._gcLastUsed=t,c._onTouch?.(t),l&&(l[h]=c);continue}if(n==="renderable"&&this.updateRenderableGCTick(c,t),!(t-c._gcLastUsed<this.maxUnusedTime)&&c.autoGarbageCollect){if(n==="renderable"){const p=c,u=p.renderGroup??p.parentRenderGroup;u&&(u.structureDidChange=!0)}c.unload(),c._gcData=null,c._gcLastUsed=-1,l||(o+1!==1e4?(i[h]=null,o++):l=this._createHashClone(i,h))}else l&&(l[h]=c)}l&&(r[s]=l)}destroy(){this.enabled=!1,this._managedResources.forEach(e=>{e?.off("unload",this.removeResource,this)}),this._managedResources.length=0,this._managedResourceHashes.length=0,this._managedCollections.length=0,this._renderer=null}};Z.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"gc",priority:0};Z.defaultOptions={gcActive:!0,gcMaxUnusedTime:6e4,gcFrequency:3e4};let wt=Z;class Oe{constructor(e){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=e}reset(){this._stackIndex=0;for(let e=0;e<this._activeUniforms.length;e++)this._uniformsPool.push(this._activeUniforms[e]);for(let e=0;e<this._activeBindGroups.length;e++)this._bindGroupPool.push(this._activeBindGroups[e]);this._activeUniforms.length=0,this._activeBindGroups.length=0}start(e){this.reset(),this.push(e)}bind({size:e,projectionMatrix:t,worldTransformMatrix:r,worldColor:s,offset:n}){const i=this._renderer.renderTarget.renderTarget,l=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{worldTransformMatrix:new x,worldColor:4294967295,offset:new tt},o={projectionMatrix:t||this._renderer.renderTarget.projectionMatrix,resolution:e||i.size,worldTransformMatrix:r||l.worldTransformMatrix,worldColor:s||l.worldColor,offset:n||l.offset,bindGroup:null},h=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(h);const c=h.uniforms;c.uProjectionMatrix=o.projectionMatrix,c.uResolution=o.resolution,c.uWorldTransformMatrix.copyFrom(o.worldTransformMatrix),c.uWorldTransformMatrix.tx-=o.offset.x,c.uWorldTransformMatrix.ty-=o.offset.y,rt(o.worldColor,c.uWorldColorAlpha,0),h.update();let m;this._renderer.renderPipes.uniformBatch?m=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(h,!1):(m=this._bindGroupPool.pop()||new st,this._activeBindGroups.push(m),m.setResource(h,0)),o.bindGroup=m,this._currentGlobalUniformData=o}push(e){this.bind(e),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===L.WEBGL&&this._currentGlobalUniformData.bindGroup.resources[0].update()}get bindGroup(){return this._currentGlobalUniformData.bindGroup}get globalUniformData(){return this._currentGlobalUniformData}get uniformGroup(){return this._currentGlobalUniformData.bindGroup.resources[0]}_createUniforms(){return new pe({uProjectionMatrix:{value:new x,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new x,type:"mat3x3<f32>"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4<f32>"},uResolution:{value:[0,0],type:"vec2<f32>"}},{isStatic:!0})}destroy(){this._renderer=null,this._globalUniformDataStack.length=0,this._uniformsPool.length=0,this._activeUniforms.length=0,this._bindGroupPool.length=0,this._activeBindGroups.length=0,this._currentGlobalUniformData=null}}Oe.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"globalUniforms"};let Pt=1;class Le{constructor(){this._tasks=[],this._offset=0}init(){ie.system.add(this._update,this)}repeat(e,t,r=!0){const s=Pt++;let n=0;return r&&(this._offset+=1e3,n=this._offset),this._tasks.push({func:e,duration:t,start:performance.now(),offset:n,last:performance.now(),repeat:!0,id:s}),s}cancel(e){for(let t=0;t<this._tasks.length;t++)if(this._tasks[t].id===e){this._tasks.splice(t,1);return}}_update(){const e=performance.now();for(let t=0;t<this._tasks.length;t++){const r=this._tasks[t];if(e-r.offset-r.last>=r.duration){const s=e-r.start;r.func(s),r.last=e}}}destroy(){ie.system.remove(this._update,this),this._tasks.length=0}}Le.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"scheduler",priority:0};let ue=!1;function Bt(a){if(!ue){if(q.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){const e=[`%c %c %c %c %c PixiJS %c v${oe} (${a}) http://www.pixijs.com/
|
|
183
|
+
|
|
184
|
+
`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...e)}else globalThis.console&&globalThis.console.log(`PixiJS ${oe} - ${a} - http://www.pixijs.com/`);ue=!0}}class ee{constructor(e){this._renderer=e}init(e){if(e.hello){let t=this._renderer.name;this._renderer.type===L.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),Bt(t)}}}ee.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"hello",priority:-2};ee.defaultOptions={hello:!1};const te=class Fe{constructor(e){this._renderer=e}init(e){e={...Fe.defaultOptions,...e},this.maxUnusedTime=e.renderableGCMaxUnusedTime}get enabled(){return f("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled}set enabled(e){f("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled=e}addManagedHash(e,t){f("8.15.0","RenderableGCSystem.addManagedHash is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"hash")}addManagedArray(e,t){f("8.15.0","RenderableGCSystem.addManagedArray is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"array")}addRenderable(e){f("8.15.0","RenderableGCSystem.addRenderable is deprecated, please use the GCSystem instead."),this._renderer.gc.addResource(e,"renderable")}run(){f("8.15.0","RenderableGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};te.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"renderableGC",priority:0};te.defaultOptions={renderableGCActive:!0,renderableGCMaxUnusedTime:6e4,renderableGCFrequency:3e4};let Gt=te;const re=class I{get count(){return this._renderer.tick}get checkCount(){return this._checkCount}set checkCount(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._checkCount=e}get maxIdle(){return this._renderer.gc.maxUnusedTime/1e3*60}set maxIdle(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.maxUnusedTime=e/60*1e3}get checkCountMax(){return Math.floor(this._renderer.gc._frequency/1e3)}set checkCountMax(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead.")}get active(){return this._renderer.gc.enabled}set active(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.enabled=e}constructor(e){this._renderer=e,this._checkCount=0}init(e){e.textureGCActive!==I.defaultOptions.textureGCActive&&(this.active=e.textureGCActive),e.textureGCMaxIdle!==I.defaultOptions.textureGCMaxIdle&&(this.maxIdle=e.textureGCMaxIdle),e.textureGCCheckCountMax!==I.defaultOptions.textureGCCheckCountMax&&(this.checkCountMax=e.textureGCCheckCountMax)}run(){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};re.extension={type:[d.WebGLSystem,d.WebGPUSystem],name:"textureGC"};re.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:null,textureGCMaxIdle:3600,textureGCCheckCountMax:600};let At=re;const ze=class He extends nt{constructor(e={}){super(),this.uid=at("renderTarget"),this.colorAttachments=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,this._depth=!1,this._stencil=!1,this._colorTextures=null;const t="colorAttachments"in e?e:this._normalizeOptions(e);if(this.isRoot=t.isRoot??!1,this.label=t.label,this.colorAttachments=t.colorAttachments,this.depthStencilAttachment=t.depthStencilAttachment,this.depthStencilAttachment){const r=this.depthStencilAttachment.texture.format;this._depth||(this._depth=r.includes("depth")),this._stencil||(this._stencil=r.includes("stencil"))}if(this.colorAttachments.length===0&&!this.depthStencilAttachment)throw new Error("[RenderTarget] no color textures or depth textures were provided. Provide a depthStencilTexture or set depth/stencil to true when using colorTextures: 0.");if(this.colorAttachments.length>0){const r=this.colorTexture;this.resize(r.width,r.height,r._resolution)}this.sizeSource&&this.sizeSource.on("resize",this.onSourceResize,this)}_normalizeOptions(e){const t={...He.defaultOptions,...e},r=[];let s;if(typeof t.colorTextures=="number"){if(t.colorTextures>0){this._managedColorTextures=!0;for(let i=0;i<t.colorTextures;i++)r.push({texture:new w({width:t.width,height:t.height,resolution:t.resolution,antialias:t.antialias}),loadOp:"clear",storeOp:"store"})}}else t.colorTextures.forEach(i=>{r.push({texture:i.source,loadOp:"clear",storeOp:"store"})});const n=t.depthStencilTexture===!0;if(this._depth=!!(t.depth||n),this._stencil=!!(t.stencil||n),t.depthStencilTexture instanceof _||t.depthStencilTexture instanceof w){if(t.isRoot)throw new Error("[RenderTarget] cannot attach a depth-stencil texture to the screen — the canvas owns its own depth/stencil buffers. Render to a texture target instead.");s={texture:t.depthStencilTexture.source}}else(n&&!t.isRoot||(t.stencil||t.depth)&&r.length===0)&&(s=this._createDepthStencilTexture(t.width,t.height,t.resolution));return{colorAttachments:r,depthStencilAttachment:s,isRoot:t.isRoot,label:t.label}}get size(){const e=this._size;return e[0]=this.pixelWidth,e[1]=this.pixelHeight,e}get width(){return this.sizeSource.width}get height(){return this.sizeSource.height}get pixelWidth(){return this.sizeSource.pixelWidth}get pixelHeight(){return this.sizeSource.pixelHeight}get resolution(){return this.sizeSource._resolution}get colorTextures(){return this._colorTextures||(this._colorTextures=this.colorAttachments.map(e=>e.texture)),this._colorTextures}get depthStencilTexture(){return this.depthStencilAttachment?.texture??null}get depth(){return this._depth}get stencil(){return this._stencil}get colorTexture(){return this.colorAttachments[0]?.texture}get sizeSource(){return this.colorAttachments[0]?.texture??this.depthStencilAttachment?.texture}onSourceResize(e){this.resize(e.width,e.height,e._resolution,!0)}ensureDepthStencilTexture(){this._createDepthStencilTexture(this.sizeSource.width,this.sizeSource.height,this.sizeSource._resolution),this._depth=!0,this._stencil=!0}resize(e,t,r=this.resolution,s=!1){if(this.dirtyId++,this.colorAttachments.forEach((n,i)=>{s&&i===0||n.texture.resize(e,t,r)}),this.depthStencilAttachment){if(s&&this.colorAttachments.length===0)return;this.depthStencilAttachment.texture.resize(e,t,r)}}destroy(){!this.colorAttachments&&!this.depthStencilAttachment||(this.emit("destroy",this),this.sizeSource.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorAttachments.forEach(e=>{e.texture.destroy()}),this.depthStencilAttachment&&(this.depthStencilAttachment.texture.destroy(),delete this.depthStencilAttachment),this.colorAttachments=null,this._colorTextures=null,this.removeAllListeners())}_createDepthStencilTexture(e,t,r){return this.depthStencilAttachment??(this.depthStencilAttachment={texture:new w({width:e,height:t,resolution:r,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1})}),this.depthStencilAttachment}};ze.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let D=ze;const k=new Map;it.register(k);function We(a,e){if(!k.has(a)){const t=new _({source:new V({resource:a,...e})}),r=()=>{k.get(a)===t&&k.delete(a)};t.once("destroy",r),t.source.once("destroy",r),k.set(a,t)}return k.get(a)}const se=class Ve{get autoDensity(){return this.texture.source.autoDensity}set autoDensity(e){this.texture.source.autoDensity=e}get resolution(){return this.texture.source._resolution}set resolution(e){this.texture.source.resize(this.texture.source.width,this.texture.source.height,e)}constructor(e){this._renderer=e}init(e){e={...Ve.defaultOptions,...e},e.view&&(f(ot,"ViewSystem.view has been renamed to ViewSystem.canvas"),e.canvas=e.view),this.screen=new P(0,0,e.width,e.height),this.canvas=e.canvas||q.get().createCanvas(),this.antialias=!!e.antialias;const{depth:t,...r}=e;this.texture=We(this.canvas,r),this.renderTarget=new D({colorTextures:[this.texture],depth:!!t,isRoot:!0}),this.texture.source.transparent=e.backgroundAlpha<1,this.texture.source.on("resize",this._updateScreenSize,this),this.resolution=e.resolution,this._updateScreenSize()}resize(e,t,r){this.texture.source.resize(e,t,r),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height}destroy(e=!1){(typeof e=="boolean"?e:e?.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.texture.source.off("resize",this._updateScreenSize,this),v.removeScreen(this._renderer.uid),le.removeScreen(this._renderer.uid),this.texture.destroy()}_updateScreenSize(){const{pixelWidth:e,pixelHeight:t}=this.texture.source,r=this._renderer.uid;v.setScreenSize(r,e,t),le.setScreenSize(r,e,t)}};se.extension={type:[d.WebGLSystem,d.WebGPUSystem,d.CanvasSystem],name:"view",priority:0};se.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};let Ut=se;const Lt=[Tt,Oe,ee,Ut,Ae,wt,At,De,vt,lt,Gt,Le],Ft=[Pe,ve,we,Me,Ce,ke,Se,Re];function It(a,e,t,r,s,n){const i=n?1:-1;return a.identity(),a.a=1/r*2,a.d=i*(1/s*2),a.tx=-1-e*a.a,a.ty=-i-t*a.d,a}function Dt(a){if(a.colorAttachments.length===0)return!1;const e=a.colorTexture.resource;return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement&&document.body.contains(e)}class zt{constructor(e){this.rootViewPort=new P,this.viewport=new P,this.onRenderTargetChange=new dt("onRenderTargetChange"),this.projectionMatrix=new x,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._bindState={target:null,frame:void 0,mipLevel:0,layer:0,flipY:!1},this._bindFrame=new P,this._renderer=e,e.gc.addCollection(this,"_gpuRenderTargetHash","hash")}get renderSurface(){return this._bindState.target}get mipLevel(){return this._bindState.mipLevel}get layer(){return this._bindState.layer}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart(e){this._renderTargetStack.length=0,this.push(e),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=Dt(this.rootRenderTarget),this.adaptor.prerender?.(this.rootRenderTarget)}postrender(){this.adaptor.postrender?.(this.rootRenderTarget)}bind(e,t=!0,r,s,n=0,i=0,l){let o;"target"in e?o=e:(f("8.20.0","RenderTargetSystem.bind: positional arguments are deprecated, please use an options object instead: bind({ target, clear, clearColor, frame, mipLevel, layer, flipY })"),o={target:e,clear:t,clearColor:r,frame:s,mipLevel:n,layer:i,flipY:l});const h=o.target;t=o.clear??!0,r=o.clearColor,n=(o.mipLevel??0)|0,i=(o.layer??0)|0,l=o.flipY,s=o.frame;const c=this.getRenderTarget(h),m=this.renderTarget!==c||!!c.flipY!=!!l;this.renderTarget=c;const p=this.getGpuRenderTarget(c);(c.pixelWidth!==p.width||c.pixelHeight!==p.height)&&(this.adaptor.resizeGpuRenderTarget(c),p.width=c.pixelWidth,p.height=c.pixelHeight);const u=c.colorAttachments[0]?.texture||c.depthStencilAttachment?.texture,g=this.viewport,ne=u.dimension==="3d"?Math.max(u.depth>>n,1):u.depthOrArrayLayers;if(i<0||i>=ne)throw new Error(`[RenderTargetSystem] layer ${i} is out of bounds (layer count=${ne}).`);const M=this._bindState;M.target=h,M.frame=s?this._bindFrame.copyFrom(s):void 0,M.mipLevel=n,M.layer=i,M.flipY=l;const F=Math.max(u.pixelWidth>>n,1),z=Math.max(u.pixelHeight>>n,1);if(!s&&h instanceof _&&(s=h.frame),s){const G=u._resolution,A=1<<Math.max(n,0),Ne=s.x*G+.5|0,je=s.y*G+.5|0,$e=s.width*G+.5|0,Ye=s.height*G+.5|0;let b=Math.floor(Ne/A),y=Math.floor(je/A),C=Math.ceil($e/A),S=Math.ceil(Ye/A);b<0&&(C+=b,b=0),y<0&&(S+=y,y=0),b=Math.min(b,F-1),y=Math.min(y,z-1),C=Math.min(C,F-b),S=Math.min(S,z-y),C=Math.max(C,1),S=Math.max(S,1),g.x=b,g.y=y,g.width=C,g.height=S}else g.x=0,g.y=0,g.width=F,g.height=z;return c.flipY=l,It(this.projectionMatrix,0,0,g.width/u.resolution,g.height/u.resolution,!c.isRoot!=!!c.flipY),this.adaptor.startRenderPass(c,t,r,g,n,i),m&&this.onRenderTargetChange.emit(c),c}getBindState(e){if(!this.renderTarget)throw new Error("[RenderTargetSystem] getBindState is only valid while a render surface is bound");const t=this._bindState;return e??(e={}),e.target=t.target,e.clear=U.NONE,e.clearColor=void 0,t.frame?e.frame?e.frame.copyFrom(t.frame):e.frame=t.frame.clone():e.frame=void 0,e.mipLevel=t.mipLevel,e.layer=t.layer,e.flipY=!!t.flipY,e}isFrontFaceInverted(e,t){if(!e){if(e=this.renderTarget,!e)return!1;t=e.flipY}return!!t!=(this._renderer.type===L.WEBGL&&!e.isRoot)}get frontFaceInverted(){return f(ct,"RenderTargetSystem.frontFaceInverted is deprecated, use isFrontFaceInverted() instead"),this.isFrontFaceInverted()}clear(e,t=U.ALL,r,s=this.mipLevel,n=this.layer){t&&(e&&(e=this.getRenderTarget(e)),this.adaptor.clear(e||this.renderTarget,t,r,this.viewport,s,n))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(e,t=U.ALL,r,s,n=0,i=0,l){let o;"target"in e?o=e:(f("8.20.0","RenderTargetSystem.push: positional arguments are deprecated, please use an options object instead: push({ target, clear, clearColor, frame, mipLevel, layer, flipY })"),o={target:e,clear:t,clearColor:r,frame:s,mipLevel:n,layer:i,flipY:l});const h=this.bind(o);return this._renderTargetStack.push({target:o.target,clear:!1,clearColor:void 0,frame:o.frame?o.frame.clone():void 0,mipLevel:o.mipLevel,layer:o.layer,flipY:o.flipY}),h}pop(){this._renderTargetStack.pop();const e=this._renderTargetStack[this._renderTargetStack.length-1];if(!e)throw new Error("[RenderTargetSystem] pop: no previous binding to restore (unbalanced pop)");return this.bind(e)}getRenderTarget(e){return e.isTexture&&(e=e.source),this._renderSurfaceToRenderTargetHash.get(e)??this._initRenderTarget(e)}copyToTexture(e,t,r,s,n){const i=this.getRenderTarget(e);r.x<0&&(s.width+=r.x,n.x-=r.x,r.x=0),r.y<0&&(s.height+=r.y,n.y-=r.y,r.y=0);const{pixelWidth:l,pixelHeight:o}=i;return s.width=Math.min(s.width,l-r.x),s.height=Math.min(s.height,o-r.y),this.adaptor.copyToTexture(i,t,r,s,n)}copyDepthTexture(e,t,r,s,n={x:0,y:0}){const i=this.getRenderTarget(e);if(!i.depthStencilAttachment){R("[RenderTargetSystem] copyDepthTexture: the source render target has no depth attachment to copy from");return}const l=t.source;if(!l.format.includes("depth")&&!l.format.includes("stencil")){R(`[RenderTargetSystem] copyDepthTexture: the destination texture must have a depth/stencil format (got '${l.format}')`);return}let o=r.x,h=r.y,c=n.x,m=n.y,p=s.width,u=s.height;o<0&&(p+=o,c-=o,o=0),h<0&&(u+=h,m-=h,h=0),p=Math.min(p,i.pixelWidth-o),u=Math.min(u,i.pixelHeight-h),p=Math.min(p,l.pixelWidth-c),u=Math.min(u,l.pixelHeight-m),!(p<=0||u<=0)&&this.adaptor.copyDepthTexture(i,t,{x:o,y:h},{width:p,height:u},{x:c,y:m})}ensureDepthStencil(){if(!this.renderTarget.stencil){if(this.renderTarget.depthStencilTexture){R(`[RenderTargetSystem] a stencil mask is being used, but the render target's depthStencilTexture format '${this.renderTarget.depthStencilTexture.format}' has no stencil aspect, so masking cannot work here. Use a 'depth24plus-stencil8' texture instead.`);return}this.renderTarget._depth=!0,this.renderTarget._stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport,0,this.layer)}}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((e,t)=>{e!==t?this._releaseRenderTarget(t,e):e.off("destroy",this._onRenderTargetDestroy,this)}),this._renderSurfaceToRenderTargetHash.clear();for(const e of Object.values(this._gpuRenderTargetHash))e&&this.adaptor.destroyGpuRenderTarget(e);this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(e){let t=null;if(V.test(e)&&(e=We(e).source),e instanceof D)t=e,e.once("destroy",this._onRenderTargetDestroy,this);else if(e instanceof w){const r=e.format;t=r.includes("depth")||r.includes("stencil")?new D({colorTextures:0,depthStencilTexture:e}):new D({colorTextures:[e]}),e.source instanceof V&&(t.isRoot=!0),e.once("destroy",this._onRenderSurfaceDestroy,this)}return this._renderSurfaceToRenderTargetHash.set(e,t),t}_onRenderSurfaceDestroy(e){const t=this._renderSurfaceToRenderTargetHash.get(e);t&&this._releaseRenderTarget(e,t)}_onRenderTargetDestroy(e){this._renderSurfaceToRenderTargetHash.delete(e),this._releaseGpuRenderTarget(e)}_releaseRenderTarget(e,t){t.destroy(),this._renderSurfaceToRenderTargetHash.delete(e),e.off("destroy",this._onRenderSurfaceDestroy,this),this._releaseGpuRenderTarget(t)}_releaseGpuRenderTarget(e){const t=this._gpuRenderTargetHash[e.uid];t&&(this._gpuRenderTargetHash[e.uid]=null,this.adaptor.destroyGpuRenderTarget(t))}getGpuRenderTarget(e){return this._gpuRenderTargetHash[e.uid]||(this._gpuRenderTargetHash[e.uid]=this.adaptor.initGpuRenderTarget(e))}resetState(){this.renderTarget=null,this._bindState.target=null}}export{Ce as A,Pe as B,Re as C,zt as R,Lt as S,ve as a,we as b,Me as c,Ft as d};
|