@ray-js/robot-map-sdk 0.0.9 → 0.0.10

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.
Files changed (134) hide show
  1. package/dist/index.d.ts +355 -3818
  2. package/dist-docs/404.html +3 -3
  3. package/dist-docs/assets/{app.BJnAJzet.js → app.Dqj628zE.js} +1 -1
  4. package/dist-docs/assets/chunks/@localSearchIndexroot.5wY6DA9h.js +1 -0
  5. package/dist-docs/assets/chunks/BitmapFont.BXsyt1Ko.js +4 -0
  6. package/dist-docs/assets/chunks/BufferResource.8pzc1eMm.js +155 -0
  7. package/dist-docs/assets/chunks/CanvasRenderer.DpOhlsYI.js +1 -0
  8. package/dist-docs/assets/chunks/RenderTargetSystem.CWKFKvEe.js +172 -0
  9. package/dist-docs/assets/chunks/{VPLocalSearchBox.D9iYIKMO.js → VPLocalSearchBox.D1fbUxUi.js} +2 -2
  10. package/dist-docs/assets/chunks/WebGLRenderer.BlPSqrND.js +156 -0
  11. package/dist-docs/assets/chunks/WebGPURenderer.szL5hbKh.js +41 -0
  12. package/dist-docs/assets/chunks/browserAll.BxwMP9Gg.js +14 -0
  13. package/dist-docs/assets/chunks/framework.CBLqO2Q1.js +18 -0
  14. package/dist-docs/assets/chunks/index.nS-neZH_.js +744 -0
  15. package/dist-docs/assets/chunks/json-editor-vue.CBQvp8j1.js +3882 -0
  16. package/dist-docs/assets/chunks/mapValues.D2X8cRgC.js +1 -0
  17. package/dist-docs/assets/chunks/theme.B9FcKggM.js +4 -0
  18. package/dist-docs/assets/chunks/vanilla-picker.B6E6ObS_.js +8 -0
  19. package/dist-docs/assets/chunks/webworkerAll.BXgPGAoF.js +56 -0
  20. package/dist-docs/assets/doubleBed.CzextF6m.png +0 -0
  21. package/dist-docs/assets/{guide_advanced-usage.md.BPrKHNKt.js → guide_advanced-usage.md.COVLyRkA.js} +96 -3
  22. package/dist-docs/assets/guide_advanced-usage.md.COVLyRkA.lean.js +1 -0
  23. package/dist-docs/assets/{guide_concepts.md.DBFk-g-l.js → guide_concepts.md.CJ87tk-r.js} +1 -1
  24. package/dist-docs/assets/{guide_concepts.md.DBFk-g-l.lean.js → guide_concepts.md.CJ87tk-r.lean.js} +1 -1
  25. package/dist-docs/assets/{guide_getting-started.md.Zvm4buzY.js → guide_getting-started.md.B8rkVqGP.js} +1 -1
  26. package/dist-docs/assets/{guide_getting-started.md.Zvm4buzY.lean.js → guide_getting-started.md.B8rkVqGP.lean.js} +1 -1
  27. package/dist-docs/assets/{guide_mcp.md.1UIpY4E0.js → guide_mcp.md.CabCiX8Z.js} +1 -1
  28. package/dist-docs/assets/{guide_mcp.md.1UIpY4E0.lean.js → guide_mcp.md.CabCiX8Z.lean.js} +1 -1
  29. package/dist-docs/assets/{index.md.Sm6vD2Gl.js → index.md.wTsFvv0N.js} +1 -1
  30. package/dist-docs/assets/{index.md.Sm6vD2Gl.lean.js → index.md.wTsFvv0N.lean.js} +1 -1
  31. package/dist-docs/assets/{plans_2026-03-04-detected-objects-visibility-design.md.530AI9zE.js → plans_2026-03-04-detected-objects-visibility-design.md.Dqboot5W.js} +1 -1
  32. package/dist-docs/assets/{plans_2026-03-04-detected-objects-visibility-design.md.530AI9zE.lean.js → plans_2026-03-04-detected-objects-visibility-design.md.Dqboot5W.lean.js} +1 -1
  33. package/dist-docs/assets/{plans_2026-03-04-show-detected-objects-implementation-plan.md.foeG7qiK.js → plans_2026-03-04-show-detected-objects-implementation-plan.md.CDWwQtWj.js} +1 -1
  34. package/dist-docs/assets/{plans_2026-03-04-show-detected-objects-implementation-plan.md.foeG7qiK.lean.js → plans_2026-03-04-show-detected-objects-implementation-plan.md.CDWwQtWj.lean.js} +1 -1
  35. package/dist-docs/assets/plans_2026-03-10-simulator-debug-design.md.BZibn7uw.js +1 -0
  36. package/dist-docs/assets/plans_2026-03-10-simulator-debug-design.md.BZibn7uw.lean.js +1 -0
  37. package/dist-docs/assets/plans_2026-03-10-simulator-events-console-design.md.BVmEzCbR.js +8 -0
  38. package/dist-docs/assets/plans_2026-03-10-simulator-events-console-design.md.BVmEzCbR.lean.js +1 -0
  39. package/dist-docs/assets/plans_2026-03-10-simulator-events-console-implementation-plan.md.S2f1zs9-.js +1 -0
  40. package/dist-docs/assets/plans_2026-03-10-simulator-events-console-implementation-plan.md.S2f1zs9-.lean.js +1 -0
  41. package/dist-docs/assets/plans_2026-03-10-simulator-runtime-controls-design.md.mqeNaYgg.js +1 -0
  42. package/dist-docs/assets/plans_2026-03-10-simulator-runtime-controls-design.md.mqeNaYgg.lean.js +1 -0
  43. package/dist-docs/assets/plans_2026-03-10-simulator-runtime-controls-implementation-plan.md.BXG1UWFt.js +1 -0
  44. package/dist-docs/assets/plans_2026-03-10-simulator-runtime-controls-implementation-plan.md.BXG1UWFt.lean.js +1 -0
  45. package/dist-docs/assets/{records_bugs_2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.md.BT3816jW.js → records_bugs_2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.md.BbQpA41Y.js} +1 -1
  46. package/dist-docs/assets/{records_bugs_2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.md.BT3816jW.lean.js → records_bugs_2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.md.BbQpA41Y.lean.js} +1 -1
  47. package/dist-docs/assets/records_bugs_2026-03-10-events-drawer-toolbar-scroll-bugfix.md.DbHxPv4D.js +1 -0
  48. package/dist-docs/assets/records_bugs_2026-03-10-events-drawer-toolbar-scroll-bugfix.md.DbHxPv4D.lean.js +1 -0
  49. package/dist-docs/assets/records_bugs_2026-03-10-simulator-initial-render-layout-bugfix.md.w7--2hvH.js +1 -0
  50. package/dist-docs/assets/records_bugs_2026-03-10-simulator-initial-render-layout-bugfix.md.w7--2hvH.lean.js +1 -0
  51. package/dist-docs/assets/records_bugs_2026-03-10-simulator-wheel-scroll-leak-bugfix.md.B6gIem2P.js +1 -0
  52. package/dist-docs/assets/records_bugs_2026-03-10-simulator-wheel-scroll-leak-bugfix.md.B6gIem2P.lean.js +1 -0
  53. package/dist-docs/assets/{records_plans_2026-03-02-furniture-feature-plan.md.DkXKivuL.js → records_plans_2026-03-02-furniture-feature-plan.md.CqSsyNDo.js} +1 -1
  54. package/dist-docs/assets/{records_plans_2026-03-02-furniture-feature-plan.md.DkXKivuL.lean.js → records_plans_2026-03-02-furniture-feature-plan.md.CqSsyNDo.lean.js} +1 -1
  55. package/dist-docs/assets/records_plans_2026-03-10-simulator-events-console-plan.md.CfHLEHcc.js +1 -0
  56. package/dist-docs/assets/records_plans_2026-03-10-simulator-events-console-plan.md.CfHLEHcc.lean.js +1 -0
  57. package/dist-docs/assets/records_plans_2026-03-10-simulator-last-successful-combo-cache-plan.md.Z2RoK239.js +1 -0
  58. package/dist-docs/assets/records_plans_2026-03-10-simulator-last-successful-combo-cache-plan.md.Z2RoK239.lean.js +1 -0
  59. package/dist-docs/assets/records_plans_2026-03-10-simulator-map-parsed-view-plan.md.S9jPz75o.js +1 -0
  60. package/dist-docs/assets/records_plans_2026-03-10-simulator-map-parsed-view-plan.md.S9jPz75o.lean.js +1 -0
  61. package/dist-docs/assets/records_plans_2026-03-10-simulator-map-playground-refactor-plan.md.BuILlmcV.js +1 -0
  62. package/dist-docs/assets/records_plans_2026-03-10-simulator-map-playground-refactor-plan.md.BuILlmcV.lean.js +1 -0
  63. package/dist-docs/assets/records_plans_2026-03-10-simulator-playground-plan.md.CQAR-T7p.js +1 -0
  64. package/dist-docs/assets/records_plans_2026-03-10-simulator-playground-plan.md.CQAR-T7p.lean.js +1 -0
  65. package/dist-docs/assets/records_plans_2026-03-10-simulator-runtime-controls-plan.md.DSVD-qCa.js +1 -0
  66. package/dist-docs/assets/records_plans_2026-03-10-simulator-runtime-controls-plan.md.DSVD-qCa.lean.js +1 -0
  67. package/dist-docs/assets/records_plans_2026-03-11-simulator-src-migration-implementation.md.FnB5Cx6R.js +1 -0
  68. package/dist-docs/assets/records_plans_2026-03-11-simulator-src-migration-implementation.md.FnB5Cx6R.lean.js +1 -0
  69. package/dist-docs/assets/records_plans_2026-03-11-simulator-src-migration-plan.md.BBfaeRrq.js +1 -0
  70. package/dist-docs/assets/records_plans_2026-03-11-simulator-src-migration-plan.md.BBfaeRrq.lean.js +1 -0
  71. package/dist-docs/assets/{reference_callbacks.md.CwvDSJWk.js → reference_callbacks.md.BIwuGR3s.js} +16 -2
  72. package/dist-docs/assets/reference_callbacks.md.BIwuGR3s.lean.js +1 -0
  73. package/dist-docs/assets/{reference_config.md.CK4ueBig.js → reference_config.md.DHynhVxG.js} +1 -1
  74. package/dist-docs/assets/{reference_config.md.CK4ueBig.lean.js → reference_config.md.DHynhVxG.lean.js} +1 -1
  75. package/dist-docs/assets/{reference_data.md.DciSLVC8.js → reference_data.md.B_XpUFrn.js} +38 -2
  76. package/dist-docs/assets/reference_data.md.B_XpUFrn.lean.js +1 -0
  77. package/dist-docs/assets/{reference_methods.md.CL2sjTJ7.js → reference_methods.md.eH-UCMbE.js} +23 -3
  78. package/dist-docs/assets/reference_methods.md.eH-UCMbE.lean.js +1 -0
  79. package/dist-docs/assets/{reference_runtime.md.aDpGKfHs.js → reference_runtime.md.BEy8BhSZ.js} +2 -2
  80. package/dist-docs/assets/reference_runtime.md.BEy8BhSZ.lean.js +1 -0
  81. package/dist-docs/assets/{reference_types.md.D2IglsHQ.js → reference_types.md.hikiO8Cq.js} +20 -3
  82. package/dist-docs/assets/reference_types.md.hikiO8Cq.lean.js +1 -0
  83. package/dist-docs/assets/{reference_utils.md.CSshxnp0.js → reference_utils.md.Dy6XKVWh.js} +1 -1
  84. package/dist-docs/assets/{reference_utils.md.CSshxnp0.lean.js → reference_utils.md.Dy6XKVWh.lean.js} +1 -1
  85. package/dist-docs/assets/robot.CSiuukeH.png +0 -0
  86. package/dist-docs/assets/simulator_index.md.CF95Y_c9.js +1 -0
  87. package/dist-docs/assets/simulator_index.md.CF95Y_c9.lean.js +1 -0
  88. package/dist-docs/assets/sleep.CRKZ3XeQ.png +0 -0
  89. package/dist-docs/assets/sleep.C_YKDk6M.json +879 -0
  90. package/dist-docs/assets/{style.CN_tJoU2.css → style.DrlDtCux.css} +1 -1
  91. package/dist-docs/guide/advanced-usage.html +102 -9
  92. package/dist-docs/guide/concepts.html +7 -7
  93. package/dist-docs/guide/getting-started.html +7 -7
  94. package/dist-docs/guide/mcp.html +7 -7
  95. package/dist-docs/hashmap.json +1 -1
  96. package/dist-docs/index.html +7 -7
  97. package/dist-docs/plans/2026-03-04-detected-objects-visibility-design.html +7 -7
  98. package/dist-docs/plans/2026-03-04-show-detected-objects-implementation-plan.html +7 -7
  99. package/dist-docs/plans/2026-03-10-simulator-debug-design.html +25 -0
  100. package/dist-docs/plans/2026-03-10-simulator-events-console-design.html +32 -0
  101. package/dist-docs/plans/2026-03-10-simulator-events-console-implementation-plan.html +25 -0
  102. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-design.html +25 -0
  103. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-implementation-plan.html +25 -0
  104. package/dist-docs/records/bugs/2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.html +7 -7
  105. package/dist-docs/records/bugs/2026-03-10-events-drawer-toolbar-scroll-bugfix.html +25 -0
  106. package/dist-docs/records/bugs/2026-03-10-simulator-initial-render-layout-bugfix.html +25 -0
  107. package/dist-docs/records/bugs/2026-03-10-simulator-wheel-scroll-leak-bugfix.html +25 -0
  108. package/dist-docs/records/plans/2026-03-02-furniture-feature-plan.html +7 -7
  109. package/dist-docs/records/plans/2026-03-10-simulator-events-console-plan.html +25 -0
  110. package/dist-docs/records/plans/2026-03-10-simulator-last-successful-combo-cache-plan.html +25 -0
  111. package/dist-docs/records/plans/2026-03-10-simulator-map-parsed-view-plan.html +25 -0
  112. package/dist-docs/records/plans/2026-03-10-simulator-map-playground-refactor-plan.html +25 -0
  113. package/dist-docs/records/plans/2026-03-10-simulator-playground-plan.html +25 -0
  114. package/dist-docs/records/plans/2026-03-10-simulator-runtime-controls-plan.html +25 -0
  115. package/dist-docs/records/plans/2026-03-11-simulator-src-migration-implementation.html +25 -0
  116. package/dist-docs/records/plans/2026-03-11-simulator-src-migration-plan.html +25 -0
  117. package/dist-docs/reference/callbacks.html +22 -8
  118. package/dist-docs/reference/config.html +7 -7
  119. package/dist-docs/reference/data.html +44 -8
  120. package/dist-docs/reference/methods.html +29 -9
  121. package/dist-docs/reference/runtime.html +8 -8
  122. package/dist-docs/reference/types.html +26 -9
  123. package/dist-docs/reference/utils.html +7 -7
  124. package/dist-docs/simulator/index.html +25 -0
  125. package/package.json +8 -4
  126. package/dist-docs/assets/chunks/@localSearchIndexroot.HZmZuAtg.js +0 -1
  127. package/dist-docs/assets/chunks/framework.DRADY2L-.js +0 -18
  128. package/dist-docs/assets/chunks/theme.D78lSkQK.js +0 -2
  129. package/dist-docs/assets/guide_advanced-usage.md.BPrKHNKt.lean.js +0 -1
  130. package/dist-docs/assets/reference_callbacks.md.CwvDSJWk.lean.js +0 -1
  131. package/dist-docs/assets/reference_data.md.DciSLVC8.lean.js +0 -1
  132. package/dist-docs/assets/reference_methods.md.CL2sjTJ7.lean.js +0 -1
  133. package/dist-docs/assets/reference_runtime.md.aDpGKfHs.lean.js +0 -1
  134. package/dist-docs/assets/reference_types.md.D2IglsHQ.lean.js +0 -1
@@ -0,0 +1,4 @@
1
+ import{E as U,d as C,v as z,T,f as H,a as L,C as M,R as A,b as j,I as G,g as R,c as q,e as W,l as J,h as _,w as Z,i as V}from"./index.nS-neZH_.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.B9FcKggM.js";class $ extends U{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return C(z,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return C(z,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return C(z,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return C(z,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return C(z,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(t=!1){var e;this.emit("destroy",this),this.removeAllListeners();for(const i in this.chars)(e=this.chars[i].texture)==null||e.destroy();this.chars=null,t&&(this.pages.forEach(i=>i.texture.destroy(!0)),this.pages=null)}}const Y=class X extends ${constructor(t){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentMaxCharHeight=0,this._currentPageIndex=-1,this._skipKerning=!1;const e={...X.defaultOptions,...t};this._textureSize=e.textureSize,this._mipmap=e.mipmap;const i=e.style.clone();e.overrideFill&&(i._fill.color=16777215,i._fill.alpha=1,i._fill.texture=T.WHITE,i._fill.fill=null),this.applyFillAsTint=e.overrideFill;const s=i.fontSize;i.fontSize=this.baseMeasurementFontSize;const n=H(i);e.overrideSize?i._stroke&&(i._stroke.width*=this.baseRenderedFontSize/s):i.fontSize=this.baseRenderedFontSize=s,this._style=i,this._skipKerning=e.skipKerning??!1,this.resolution=e.resolution??1,this._padding=e.padding??4,e.textureStyle&&(this._textureStyle=e.textureStyle instanceof L?e.textureStyle:new L(e.textureStyle)),this.fontMetrics=M.measureFont(n),this.lineHeight=i.lineHeight||this.fontMetrics.fontSize||i.fontSize}ensureCharacters(t){var F,f;const e=M.graphemeSegmenter(t).filter(c=>!this._currentChars.includes(c)).filter((c,p,g)=>g.indexOf(c)===p);if(!e.length)return;this._currentChars=[...this._currentChars,...e];let i;this._currentPageIndex===-1?i=this._nextPage():i=this.pages[this._currentPageIndex];let{canvas:s,context:n}=i.canvasAndContext,a=i.texture.source;const r=this._style;let o=this._currentX,h=this._currentY,l=this._currentMaxCharHeight;const u=this.baseRenderedFontSize/this.baseMeasurementFontSize,m=this._padding*u;let S=!1;const y=s.width/this.resolution,w=s.height/this.resolution;for(let c=0;c<e.length;c++){const p=e[c],g=M.measureText(p,r,s,!1);g.lineHeight=g.height;const O=g.width*u,P=Math.ceil((r.fontStyle==="italic"?2:1)*O),b=g.height*u,x=P+m*2,B=b+m*2;if(S=!1,p!==`
2
+ `&&p!=="\r"&&p!==" "&&p!==" "&&(S=!0,l=Math.ceil(Math.max(B,l))),o+x>y&&(h+=l,l=B,o=0,h+l>w)){a.update();const v=this._nextPage();s=v.canvasAndContext.canvas,n=v.canvasAndContext.context,a=v.texture.source,o=0,h=0,l=0}const D=O/u-(((F=r.dropShadow)==null?void 0:F.distance)??0)-(((f=r._stroke)==null?void 0:f.width)??0);if(this.chars[p]={id:p.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:D,kerning:{}},S){this._drawGlyph(n,g,o+m,h+m,u,r);const v=a.width*u,I=a.height*u,N=new A(o/v*a.width,h/I*a.height,x/v*a.width,B/I*a.height);this.chars[p].texture=new T({source:a,frame:N}),o+=Math.ceil(x)}}a.update(),this._currentX=o,this._currentY=h,this._currentMaxCharHeight=l,this._skipKerning&&this._applyKerning(e,n)}get pageTextures(){return C(z,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(t,e){const i=this._measureCache;for(let s=0;s<t.length;s++){const n=t[s];for(let a=0;a<this._currentChars.length;a++){const r=this._currentChars[a];let o=i[n];o||(o=i[n]=e.measureText(n).width);let h=i[r];h||(h=i[r]=e.measureText(r).width);let l=e.measureText(n+r).width,u=l-(o+h);u&&(this.chars[n].kerning[r]=u),l=e.measureText(n+r).width,u=l-(o+h),u&&(this.chars[r].kerning[n]=u)}}}_nextPage(){this._currentPageIndex++;const t=this.resolution,e=j.getOptimalCanvasAndContext(this._textureSize,this._textureSize,t);this._setupContext(e.context,this._style,t);const i=t*(this.baseRenderedFontSize/this.baseMeasurementFontSize),s=new T({source:new G({resource:e.canvas,resolution:i,alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:this._mipmap})});this._textureStyle&&(s.source.style=this._textureStyle);const n={canvasAndContext:e,texture:s};return this.pages[this._currentPageIndex]=n,n}_setupContext(t,e,i){e.fontSize=this.baseRenderedFontSize,t.scale(i,i),t.font=H(e),e.fontSize=this.baseMeasurementFontSize,t.textBaseline=e.textBaseline;const s=e._stroke,n=(s==null?void 0:s.width)??0;if(s&&(t.lineWidth=n,t.lineJoin=s.join,t.miterLimit=s.miterLimit,t.strokeStyle=R(s,t)),e._fill&&(t.fillStyle=R(e._fill,t)),e.dropShadow){const a=e.dropShadow,r=q.shared.setValue(a.color).toArray(),o=a.blur*i,h=a.distance*i;t.shadowColor=`rgba(${r[0]*255},${r[1]*255},${r[2]*255},${a.alpha})`,t.shadowBlur=o,t.shadowOffsetX=Math.cos(a.angle)*h,t.shadowOffsetY=Math.sin(a.angle)*h}else t.shadowColor="black",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0}_drawGlyph(t,e,i,s,n,a){const r=e.text,o=e.fontProperties,h=a._stroke,l=((h==null?void 0:h.width)??0)*n,u=i+l/2,m=s-l/2,S=o.descent*n,y=e.lineHeight*n;let w=!1;a.stroke&&l&&(w=!0,t.strokeText(r,u,m+y-S));const{shadowBlur:F,shadowOffsetX:f,shadowOffsetY:c}=t;a._fill&&(w&&(t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0),t.fillText(r,u,m+y-S)),w&&(t.shadowBlur=F,t.shadowOffsetX=f,t.shadowOffsetY=c)}destroy(){super.destroy();for(let t=0;t<this.pages.length;t++){const{canvasAndContext:e,texture:i}=this.pages[t];j.returnCanvasAndContext(e),i.destroy(!0)}this.pages=null}};Y.defaultOptions={textureSize:512,style:new W,mipmap:!0};let E=Y;function Q(d,t,e,i){const s={width:0,height:0,offsetY:0,scale:t.fontSize/e.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};s.offsetY=e.baseLineOffset;let n=s.lines[0],a=null,r=!0;const o={width:0,start:0,index:0,positions:[],chars:[]},h=e.baseMeasurementFontSize/t.fontSize,l=t.letterSpacing*h,u=t.wordWrapWidth*h,m=t.lineHeight?t.lineHeight*h:e.lineHeight,S=t.wordWrap&&t.breakWords,y=f=>{const c=n.width;for(let p=0;p<o.index;p++){const g=f.positions[p];n.chars.push(f.chars[p]),n.charPositions.push(g+c)}n.width+=f.width,r=!1,o.width=0,o.index=0,o.chars.length=0},w=()=>{let f=n.chars.length-1;if(i){let c=n.chars[f];for(;c===" ";)n.width-=e.chars[c].xAdvance,c=n.chars[--f]}s.width=Math.max(s.width,n.width),n={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},r=!0,s.lines.push(n),s.height+=m},F=f=>f-l>u;for(let f=0;f<d.length+1;f++){let c;const p=f===d.length;p||(c=d[f]);const g=e.chars[c]||e.chars[" "];if(/(?:\s)/.test(c)||c==="\r"||c===`
3
+ `||p){if(!r&&t.wordWrap&&F(n.width+o.width)?(w(),y(o),p||n.charPositions.push(0)):(o.start=n.width,y(o),p||n.charPositions.push(0)),c==="\r"||c===`
4
+ `)w();else if(!p){const x=g.xAdvance+(g.kerning[a]||0)+l;n.width+=x,n.spaceWidth=x,n.spacesIndex.push(n.charPositions.length),n.chars.push(c)}}else{const b=g.kerning[a]||0,x=g.xAdvance+b+l;S&&F(n.width+o.width+x)&&(y(o),w()),o.positions[o.index++]=o.width+b,o.chars.push(c),o.width+=x}a=c}return w(),t.align==="center"?ee(s):t.align==="right"?te(s):t.align==="justify"&&se(s),s}function ee(d){for(let t=0;t<d.lines.length;t++){const e=d.lines[t],i=d.width/2-e.width/2;for(let s=0;s<e.charPositions.length;s++)e.charPositions[s]+=i}}function te(d){for(let t=0;t<d.lines.length;t++){const e=d.lines[t],i=d.width-e.width;for(let s=0;s<e.charPositions.length;s++)e.charPositions[s]+=i}}function se(d){const t=d.width;for(let e=0;e<d.lines.length;e++){const i=d.lines[e];let s=0,n=i.spacesIndex[s++],a=0;const r=i.spacesIndex.length,h=(t-i.width)/r;for(let l=0;l<i.charPositions.length;l++)l===n&&(n=i.spacesIndex[s++],a+=h),i.charPositions[l]+=a}}function ie(d){if(d==="")return[];typeof d=="string"&&(d=[d]);const t=[];for(let e=0,i=d.length;e<i;e++){const s=d[e];if(Array.isArray(s)){if(s.length!==2)throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${s.length}.`);if(s[0].length===0||s[1].length===0)throw new Error("[BitmapFont]: Invalid character delimiter.");const n=s[0].charCodeAt(0),a=s[1].charCodeAt(0);if(a<n)throw new Error("[BitmapFont]: Invalid character range.");for(let r=n,o=a;r<=o;r++)t.push(String.fromCharCode(r))}else t.push(...Array.from(s))}if(t.length===0)throw new Error("[BitmapFont]: Empty set when resolving characters.");return t}let k=0;class ne{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1,textureStyle:null},this.measureCache=J(1e3)}getFont(t,e){var a;let i=`${e.fontFamily}-bitmap`,s=!0;if(e._fill.fill&&!e._stroke?(i+=e._fill.fill.styleKey,s=!1):(e._stroke||e.dropShadow)&&(i=`${e.styleKey}-bitmap`,s=!1),!_.has(i)){const r=Object.create(e);r._lineHeight=0;const o=new E({style:r,overrideFill:s,overrideSize:!0,...this.defaultOptions});k++,k>50&&Z("BitmapText",`You have dynamically created ${k} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),o.once("destroy",()=>{k--,_.remove(i)}),_.set(i,o)}const n=_.get(i);return(a=n.ensureCharacters)==null||a.call(n,t),n}getLayout(t,e,i=!0){const s=this.getFont(t,e),n=`${t}-${e.styleKey}-${i}`;if(this.measureCache.has(n))return this.measureCache.get(n);const a=M.graphemeSegmenter(t),r=Q(a,e,s,i);return this.measureCache.set(n,r),r}measureText(t,e,i=!0){return this.getLayout(t,e,i)}install(...t){var h,l,u,m;let e=t[0];typeof e=="string"&&(e={name:e,style:t[1],chars:(h=t[2])==null?void 0:h.chars,resolution:(l=t[2])==null?void 0:l.resolution,padding:(u=t[2])==null?void 0:u.padding,skipKerning:(m=t[2])==null?void 0:m.skipKerning},C(z,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));const i=e==null?void 0:e.name;if(!i)throw new Error("[BitmapFontManager] Property `name` is required.");e={...this.defaultOptions,...e};const s=e.style,n=s instanceof W?s:new W(s),a=e.dynamicFill??this._canUseTintForStyle(n),r=new E({style:n,overrideFill:a,skipKerning:e.skipKerning,padding:e.padding,resolution:e.resolution,overrideSize:!1,textureStyle:e.textureStyle}),o=ie(e.chars);return r.ensureCharacters(o.join("")),_.set(`${i}-bitmap`,r),r.once("destroy",()=>_.remove(`${i}-bitmap`)),r}uninstall(t){const e=`${t}-bitmap`,i=_.get(e);i&&i.destroy()}_canUseTintForStyle(t){return!t._stroke&&(!t.dropShadow||t.dropShadow.color===0)&&!t._fill.fill&&t._fill.color===16777215}}const K=new ne;class le extends ${constructor(t,e){super();const{textures:i,data:s}=t;Object.keys(s.pages).forEach(n=>{const a=s.pages[parseInt(n,10)],r=i[a.id];this.pages.push({texture:r})}),Object.keys(s.chars).forEach(n=>{const a=s.chars[n],{frame:r,source:o,rotate:h}=i[a.page],l=V.transformRectCoords(a,r,h,new A),u=new T({frame:l,orig:new A(0,0,a.width,a.height),source:o,rotate:h});this.chars[n]={id:n.codePointAt(0),xOffset:a.xOffset,yOffset:a.yOffset,xAdvance:a.xAdvance,kerning:a.kerning??{},texture:u}}),this.baseRenderedFontSize=s.fontSize,this.baseMeasurementFontSize=s.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:s.fontSize},this.baseLineOffset=s.baseLineOffset,this.lineHeight=s.lineHeight,this.fontFamily=s.fontFamily,this.distanceField=s.distanceField??{type:"none",range:0},this.url=e}destroy(){super.destroy();for(let t=0;t<this.pages.length;t++){const{texture:e}=this.pages[t];e.destroy(!0)}this.pages=null}static install(t){K.install(t)}static uninstall(t){K.uninstall(t)}}export{le as BitmapFont};
@@ -0,0 +1,155 @@
1
+ import{w as _,j as y,S as c,u as S,B as g,k as m,E as I,m as p}from"./index.nS-neZH_.js";const D={name:"texture-bit",vertex:{header:`
2
+
3
+ struct TextureUniforms {
4
+ uTextureMatrix:mat3x3<f32>,
5
+ }
6
+
7
+ @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;
8
+ `,main:`
9
+ uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;
10
+ `},fragment:{header:`
11
+ @group(2) @binding(0) var uTexture: texture_2d<f32>;
12
+ @group(2) @binding(1) var uSampler: sampler;
13
+
14
+
15
+ `,main:`
16
+ outColor = textureSample(uTexture, uSampler, vUV);
17
+ `}},O={name:"texture-bit",vertex:{header:`
18
+ uniform mat3 uTextureMatrix;
19
+ `,main:`
20
+ uv = (uTextureMatrix * vec3(uv, 1.0)).xy;
21
+ `},fragment:{header:`
22
+ uniform sampler2D uTexture;
23
+
24
+
25
+ `,main:`
26
+ outColor = texture(uTexture, vUV);
27
+ `}};function T(e,t){for(const a in e.attributes){const s=e.attributes[a],f=t[a];f?(s.format??(s.format=f.format),s.offset??(s.offset=f.offset),s.instance??(s.instance=f.instance)):_(`Attribute ${a} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}U(e)}function U(e){const{buffers:t,attributes:a}=e,s={},f={};for(const n in t){const r=t[n];s[r.uid]=0,f[r.uid]=0}for(const n in a){const r=a[n];s[r.buffer.uid]+=y(r.format).stride}for(const n in a){const r=a[n];r.stride??(r.stride=s[r.buffer.uid]),r.start??(r.start=f[r.buffer.uid]),f[r.buffer.uid]+=y(r.format).stride}}const d=[];d[c.NONE]=void 0;d[c.DISABLED]={stencilWriteMask:0,stencilReadMask:0};d[c.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}};d[c.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}};d[c.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}};d[c.INVERSE_MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"not-equal",passOp:"keep"},stencilBack:{compare:"not-equal",passOp:"keep"}};class k{constructor(t){this._syncFunctionHash=Object.create(null),this._adaptor=t,this._systemCheck()}_systemCheck(){if(!S())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}ensureUniformGroup(t){const a=this.getUniformGroupData(t);t.buffer||(t.buffer=new g({data:new Float32Array(a.layout.size/4),usage:m.UNIFORM|m.COPY_DST}))}getUniformGroupData(t){return this._syncFunctionHash[t._signature]||this._initUniformGroup(t)}_initUniformGroup(t){const a=t._signature;let s=this._syncFunctionHash[a];if(!s){const f=Object.keys(t.uniformStructures).map(l=>t.uniformStructures[l]),n=this._adaptor.createUboElements(f),r=this._generateUboSync(n.uboElements);s=this._syncFunctionHash[a]={layout:n,syncFunction:r}}return this._syncFunctionHash[a]}_generateUboSync(t){return this._adaptor.generateUboSync(t)}syncUniformGroup(t,a,s){const f=this.getUniformGroupData(t);t.buffer||(t.buffer=new g({data:new Float32Array(f.layout.size/4),usage:m.UNIFORM|m.COPY_DST}));let n=null;return a||(a=t.buffer.data,n=t.buffer.dataInt32),s||(s=0),f.syncFunction(t.uniforms,a,n,s),!0}updateUniformGroup(t){if(t.isStatic&&!t._dirtyId)return!1;t._dirtyId=0;const a=this.syncUniformGroup(t);return t.buffer.update(),a}destroy(){this._syncFunctionHash=null}}const h=[{type:"mat3x3<f32>",test:e=>e.value.a!==void 0,ubo:`
28
+ var matrix = uv[name].toArray(true);
29
+ data[offset] = matrix[0];
30
+ data[offset + 1] = matrix[1];
31
+ data[offset + 2] = matrix[2];
32
+ data[offset + 4] = matrix[3];
33
+ data[offset + 5] = matrix[4];
34
+ data[offset + 6] = matrix[5];
35
+ data[offset + 8] = matrix[6];
36
+ data[offset + 9] = matrix[7];
37
+ data[offset + 10] = matrix[8];
38
+ `,uniform:`
39
+ gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));
40
+ `},{type:"vec4<f32>",test:e=>e.type==="vec4<f32>"&&e.size===1&&e.value.width!==void 0,ubo:`
41
+ v = uv[name];
42
+ data[offset] = v.x;
43
+ data[offset + 1] = v.y;
44
+ data[offset + 2] = v.width;
45
+ data[offset + 3] = v.height;
46
+ `,uniform:`
47
+ cv = ud[name].value;
48
+ v = uv[name];
49
+ if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {
50
+ cv[0] = v.x;
51
+ cv[1] = v.y;
52
+ cv[2] = v.width;
53
+ cv[3] = v.height;
54
+ gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);
55
+ }
56
+ `},{type:"vec2<f32>",test:e=>e.type==="vec2<f32>"&&e.size===1&&e.value.x!==void 0,ubo:`
57
+ v = uv[name];
58
+ data[offset] = v.x;
59
+ data[offset + 1] = v.y;
60
+ `,uniform:`
61
+ cv = ud[name].value;
62
+ v = uv[name];
63
+ if (cv[0] !== v.x || cv[1] !== v.y) {
64
+ cv[0] = v.x;
65
+ cv[1] = v.y;
66
+ gl.uniform2f(ud[name].location, v.x, v.y);
67
+ }
68
+ `},{type:"vec4<f32>",test:e=>e.type==="vec4<f32>"&&e.size===1&&e.value.red!==void 0,ubo:`
69
+ v = uv[name];
70
+ data[offset] = v.red;
71
+ data[offset + 1] = v.green;
72
+ data[offset + 2] = v.blue;
73
+ data[offset + 3] = v.alpha;
74
+ `,uniform:`
75
+ cv = ud[name].value;
76
+ v = uv[name];
77
+ if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {
78
+ cv[0] = v.red;
79
+ cv[1] = v.green;
80
+ cv[2] = v.blue;
81
+ cv[3] = v.alpha;
82
+ gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);
83
+ }
84
+ `},{type:"vec3<f32>",test:e=>e.type==="vec3<f32>"&&e.size===1&&e.value.red!==void 0,ubo:`
85
+ v = uv[name];
86
+ data[offset] = v.red;
87
+ data[offset + 1] = v.green;
88
+ data[offset + 2] = v.blue;
89
+ `,uniform:`
90
+ cv = ud[name].value;
91
+ v = uv[name];
92
+ if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {
93
+ cv[0] = v.red;
94
+ cv[1] = v.green;
95
+ cv[2] = v.blue;
96
+ gl.uniform3f(ud[name].location, v.red, v.green, v.blue);
97
+ }
98
+ `}];function A(e,t,a,s){const f=[`
99
+ var v = null;
100
+ var v2 = null;
101
+ var t = 0;
102
+ var index = 0;
103
+ var name = null;
104
+ var arrayOffset = null;
105
+ `];let n=0;for(let l=0;l<e.length;l++){const o=e[l],b=o.data.name;let x=!1,i=0;for(let u=0;u<h.length;u++)if(h[u].test(o.data)){i=o.offset/4,f.push(`name = "${b}";`,`offset += ${i-n};`,h[u][t]||h[u].ubo),x=!0;break}if(!x)if(o.data.size>1)i=o.offset/4,f.push(a(o,i-n));else{const u=s[o.data.type];i=o.offset/4,f.push(`
106
+ v = uv.${b};
107
+ offset += ${i-n};
108
+ ${u};
109
+ `)}n=i}const r=f.join(`
110
+ `);return new Function("uv","data","dataInt32","offset",r)}function v(e,t){return`
111
+ for (let i = 0; i < ${e*t}; i++) {
112
+ data[offset + (((i / ${e})|0) * 4) + (i % ${e})] = v[i];
113
+ }
114
+ `}const F={f32:`
115
+ data[offset] = v;`,i32:`
116
+ dataInt32[offset] = v;`,"vec2<f32>":`
117
+ data[offset] = v[0];
118
+ data[offset + 1] = v[1];`,"vec3<f32>":`
119
+ data[offset] = v[0];
120
+ data[offset + 1] = v[1];
121
+ data[offset + 2] = v[2];`,"vec4<f32>":`
122
+ data[offset] = v[0];
123
+ data[offset + 1] = v[1];
124
+ data[offset + 2] = v[2];
125
+ data[offset + 3] = v[3];`,"vec2<i32>":`
126
+ dataInt32[offset] = v[0];
127
+ dataInt32[offset + 1] = v[1];`,"vec3<i32>":`
128
+ dataInt32[offset] = v[0];
129
+ dataInt32[offset + 1] = v[1];
130
+ dataInt32[offset + 2] = v[2];`,"vec4<i32>":`
131
+ dataInt32[offset] = v[0];
132
+ dataInt32[offset + 1] = v[1];
133
+ dataInt32[offset + 2] = v[2];
134
+ dataInt32[offset + 3] = v[3];`,"mat2x2<f32>":`
135
+ data[offset] = v[0];
136
+ data[offset + 1] = v[1];
137
+ data[offset + 4] = v[2];
138
+ data[offset + 5] = v[3];`,"mat3x3<f32>":`
139
+ data[offset] = v[0];
140
+ data[offset + 1] = v[1];
141
+ data[offset + 2] = v[2];
142
+ data[offset + 4] = v[3];
143
+ data[offset + 5] = v[4];
144
+ data[offset + 6] = v[5];
145
+ data[offset + 8] = v[6];
146
+ data[offset + 9] = v[7];
147
+ data[offset + 10] = v[8];`,"mat4x4<f32>":`
148
+ for (let i = 0; i < 16; i++) {
149
+ data[offset + i] = v[i];
150
+ }`,"mat3x2<f32>":v(3,2),"mat4x2<f32>":v(4,2),"mat2x3<f32>":v(2,3),"mat4x3<f32>":v(4,3),"mat2x4<f32>":v(2,4),"mat3x4<f32>":v(3,4)},w={...F,"mat2x2<f32>":`
151
+ data[offset] = v[0];
152
+ data[offset + 1] = v[1];
153
+ data[offset + 2] = v[2];
154
+ data[offset + 3] = v[3];
155
+ `};class B extends I{constructor({buffer:t,offset:a,size:s}){super(),this.uid=p("buffer"),this._resourceType="bufferResource",this._touched=0,this._resourceId=p("resource"),this._bufferResource=!0,this.destroyed=!1,this.buffer=t,this.offset=a|0,this.size=s,this.buffer.on("change",this.onBufferChange,this)}onBufferChange(){this._resourceId=p("resource"),this.emit("change",this)}destroy(t=!1){this.destroyed=!0,t&&this.buffer.destroy(),this.emit("change",this),this.buffer=null,this.removeAllListeners()}}export{B,d as G,k as U,F as a,h as b,A as c,O as d,T as e,D as t,w as u};
@@ -0,0 +1 @@
1
+ import{z as T,i as Se,A as Me,D as ae,M as U,p as w,G as je,w as Ve,H as Ye,c as we,T as Ie,J as Xe,K as $e,L as Je,N as Ke,O as Qe,Q as ze,V as Re,W as Ze,X as et,x as oe}from"./index.nS-neZH_.js";import{R as tt,S as st,B as nt,a as at,b as rt,c as ot,A as it,C as ct}from"./RenderTargetSystem.CWKFKvEe.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.B9FcKggM.js";const ge=class X{static _getPatternRepeat(e,t){const s=e&&e!=="clamp-to-edge",a=t&&t!=="clamp-to-edge";return s&&a?"repeat":s?"repeat-x":a?"repeat-y":"no-repeat"}start(e,t,s){}execute(e,t){var i,h,f,g;const s=t.elements;if(!s||!s.length)return;const a=e.renderer,r=a.canvasContext,o=r.activeContext;for(let I=0;I<s.length;I++){const G=s[I];if(!G.packAsQuad)continue;const v=G,u=v.texture,R=u?T.getCanvasSource(u):null;if(!R)continue;const x=u.source.style,A=r.smoothProperty,q=x.scaleMode!=="nearest";o[A]!==q&&(o[A]=q),r.setBlendMode(t.blendMode);const E=((i=a.globalUniforms.globalUniformData)==null?void 0:i.worldColor)??4294967295,P=v.color,y=(E>>>24&255)/255,V=(P>>>24&255)/255,ee=((h=a.filter)==null?void 0:h.alphaMultiplier)??1,Q=y*V*ee;if(Q<=0)continue;o.globalAlpha=Q;const z=E&16777215,$=P&16777215,k=Me(ae($,z)),_=u.frame,S=x.addressModeU??x.addressMode,ie=x.addressModeV??x.addressMode,Z=X._getPatternRepeat(S,ie),D=u.source._resolution??u.source.resolution??1,Y=(g=(f=v.renderable)==null?void 0:f.renderGroup)==null?void 0:g.isCachedAsTexture,d=_.x*D,p=_.y*D,m=_.width*D,L=_.height*D,M=v.bounds,b=a.renderTarget.renderTarget.isRoot,W=M.minX,F=M.minY,B=M.maxX-M.minX,H=M.maxY-M.minY,O=u.rotate,c=u.uvs,N=Math.min(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),j=Math.max(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),C=Z!=="no-repeat"&&(N<0||j>1),ce=O&&!(!C&&(k!==16777215||O));ce?(X._tempPatternMatrix.copyFrom(v.transform),Se.matrixAppendRotationInv(X._tempPatternMatrix,O,W,F,B,H),r.setContextTransform(X._tempPatternMatrix,v.roundPixels===1,void 0,Y&&b)):r.setContextTransform(v.transform,v.roundPixels===1,void 0,Y&&b);const te=ce?0:W,se=ce?0:F,le=B,he=H;if(C){let de=R;const J=k!==16777215&&!O,K=_.width<=u.source.width&&_.height<=u.source.height;J&&K&&(de=T.getTintedCanvas({texture:u},k));const pe=o.createPattern(de,Z);if(!pe)continue;const xe=le,ye=he;if(xe===0||ye===0)continue;const Ce=1/xe,Te=1/ye,Pe=(c.x1-c.x0)*Ce,ke=(c.y1-c.y0)*Ce,be=(c.x3-c.x0)*Te,_e=(c.y3-c.y0)*Te,Oe=c.x0-Pe*te-be*se,Ne=c.y0-ke*te-_e*se,ue=u.source.pixelWidth,me=u.source.pixelHeight;X._tempPatternMatrix.set(Pe*ue,ke*me,be*ue,_e*me,Oe*ue,Ne*me),T.applyPatternTransform(pe,X._tempPatternMatrix),o.fillStyle=pe,o.fillRect(te,se,le,he)}else{const J=k!==16777215||O?T.getTintedCanvas({texture:u},k):R,K=J!==R;o.drawImage(J,K?0:d,K?0:p,K?J.width:m,K?J.height:L,te,se,le,he)}}}};ge._tempPatternMatrix=new U;ge.extension={type:[w.CanvasPipesAdaptor],name:"batch"};let lt=ge;class Ae{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,s){this._renderer.renderPipes.batch.break(s);const a=this._colorStack;a[this._colorStackIndex]=a[this._colorStackIndex-1]&e.mask;const r=this._colorStack[this._colorStackIndex];r!==this._currentColor&&(this._currentColor=r,s.add({renderPipeId:"colorMask",colorMask:r,canBundle:!1})),this._colorStackIndex++}pop(e,t,s){this._renderer.renderPipes.batch.break(s);const a=this._colorStack;this._colorStackIndex--;const r=a[this._colorStackIndex-1];r!==this._currentColor&&(this._currentColor=r,s.add({renderPipeId:"colorMask",colorMask:r,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}}Ae.extension={type:[w.CanvasPipes],name:"colorMask"};function ht(n,e,t,s,a,r){r=Math.max(0,Math.min(r,Math.min(s,a)/2)),n.moveTo(e+r,t),n.lineTo(e+s-r,t),n.quadraticCurveTo(e+s,t,e+s,t+r),n.lineTo(e+s,t+a-r),n.quadraticCurveTo(e+s,t+a,e+s-r,t+a),n.lineTo(e+r,t+a),n.quadraticCurveTo(e,t+a,e,t+a-r),n.lineTo(e,t+r),n.quadraticCurveTo(e,t,e+r,t)}function Be(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;ht(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}case"polygon":default:{const t=e,s=t.points;if(!(s!=null&&s.length))break;n.moveTo(s[0],s[1]);for(let a=2;a<s.length;a+=2)n.lineTo(s[a],s[a+1]);t.closePath&&n.closePath();break}}}function dt(n,e){if(!(e!=null&&e.length))return!1;for(let t=0;t<e.length;t++){const s=e[t];if(!(s!=null&&s.shape))continue;const a=s.transform,r=a&&!a.isIdentity();r&&(n.save(),n.transform(a.a,a.b,a.c,a.d,a.tx,a.ty)),Be(n,s.shape),r&&n.restore()}return!0}class He{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,s){this._renderer.renderPipes.batch.break(s),s.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,s){this._renderer.renderPipes.batch.break(s),s.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){var g,I,G;if(e.action!=="pushMaskBegin"&&e.action!=="popMaskEnd")return;const t=this._renderer,s=t.canvasContext,a=s==null?void 0:s.activeContext;if(!a)return;if(e.action==="popMaskEnd"){this._canvasMaskStack.pop()&&a.restore();return}e.inverse&&this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");const r=e.mask.mask;if(!(r instanceof je)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}const o=r,i=(g=o.context)==null?void 0:g.instructions;if(!(i!=null&&i.length)){this._canvasMaskStack.push(!1);return}a.save(),s.setContextTransform(o.groupTransform,(t._roundPixels|o._roundPixels)===1),a.beginPath();let h=!1,f=!1;for(let v=0;v<i.length;v++){const u=i[v],R=u.action;if(R!=="fill"&&R!=="stroke")continue;const x=u.data,A=(I=x==null?void 0:x.path)==null?void 0:I.shapePath;if(!((G=A==null?void 0:A.shapePrimitives)!=null&&G.length))continue;const q=A.shapePrimitives;for(let E=0;E<q.length;E++){const P=q[E];if(!(P!=null&&P.shape))continue;const y=P.transform,V=y&&!y.isIdentity();V&&(a.save(),a.transform(y.a,y.b,y.c,y.d,y.tx,y.ty)),Be(a,P.shape),f=dt(a,P.holes)||f,h=!0,V&&a.restore()}}if(!h){a.restore(),this._canvasMaskStack.push(!1);return}f?a.clip("evenodd"):a.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),Ve(t))}}He.extension={type:[w.CanvasPipes],name:"stencilMask"};const l="source-over";function pt(){const n=Ye(),e=Object.create(null);return e.inherit=l,e.none=l,e.normal="source-over",e.add="lighter",e.multiply=n?"multiply":l,e.screen=n?"screen":l,e.overlay=n?"overlay":l,e.darken=n?"darken":l,e.lighten=n?"lighten":l,e["color-dodge"]=n?"color-dodge":l,e["color-burn"]=n?"color-burn":l,e["hard-light"]=n?"hard-light":l,e["soft-light"]=n?"soft-light":l,e.difference=n?"difference":l,e.exclusion=n?"exclusion":l,e.saturation=n?"saturation":l,e.color=n?"color":l,e.luminosity=n?"luminosity":l,e["linear-burn"]=n?"color-burn":l,e["linear-dodge"]=n?"color-dodge":l,e["linear-light"]=n?"hard-light":l,e["pin-light"]=n?"hard-light":l,e["vivid-light"]=n?"hard-light":l,e["hard-mix"]=l,e.negation=n?"difference":l,e["normal-npm"]=e.normal,e["add-npm"]=e.add,e["screen-npm"]=e.screen,e.erase="destination-out",e.subtract=l,e.divide=l,e.min=l,e.max=l,e}const ut=new U;class Ge{constructor(e){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=pt(),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,s,a){var f;const r=a?U.IDENTITY:((f=this._renderer.globalUniforms.globalUniformData)==null?void 0:f.worldTransformMatrix)||U.IDENTITY;let o=ut;o.copyFrom(r),o.append(e);const i=this._projTransform,h=this.activeResolution;if(s=s||h,i){const g=U.shared;g.copyFrom(o),g.prepend(i),o=g}t?this.activeContext.setTransform(o.a*s,o.b*s,o.c*s,o.d*s,o.tx*h|0,o.ty*h|0):this.activeContext.setTransform(o.a*s,o.b*s,o.c*s,o.d*s,o.tx*h,o.ty*h)}clear(e,t){const s=this.activeContext,a=this._renderer;if(s.clearRect(0,0,a.width,a.height),e){const r=we.shared.setValue(e);s.globalAlpha=t??r.alpha,s.fillStyle=r.toHex(),s.fillRect(0,0,a.width,a.height),s.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()}}Ge.extension={type:[w.CanvasSystem],name:"canvasContext"};class Ee{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}Ee.extension={type:[w.CanvasSystem],name:"limits"};const mt="#808080",ne=new U,ft=new U,gt=new U,fe=new U;function vt(n,e,t){n.beginPath();for(let s=0;s<t.length;s+=3){const a=t[s]*2,r=t[s+1]*2,o=t[s+2]*2;n.moveTo(e[a],e[a+1]),n.lineTo(e[r],e[r+1]),n.lineTo(e[o],e[o+1]),n.closePath()}n.fill()}function xt(n){return`#${(n&16777215).toString(16).padStart(6,"0")}`}function yt(n,e,t,s,a,r){r=Math.max(0,Math.min(r,Math.min(s,a)/2)),n.moveTo(e+r,t),n.lineTo(e+s-r,t),n.quadraticCurveTo(e+s,t,e+s,t+r),n.lineTo(e+s,t+a-r),n.quadraticCurveTo(e+s,t+a,e+s-r,t+a),n.lineTo(e+r,t+a),n.quadraticCurveTo(e,t+a,e,t+a-r),n.lineTo(e,t+r),n.quadraticCurveTo(e,t,e+r,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;yt(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}case"polygon":default:{const t=e,s=t.points;if(!(s!=null&&s.length))break;n.moveTo(s[0],s[1]);for(let a=2;a<s.length;a+=2)n.lineTo(s[a],s[a+1]);t.closePath&&n.closePath();break}}}function Ct(n,e){if(!(e!=null&&e.length))return!1;for(let t=0;t<e.length;t++){const s=e[t];if(!(s!=null&&s.shape))continue;const a=s.transform,r=a&&!a.isIdentity();r&&(n.save(),n.transform(a.a,a.b,a.c,a.d,a.tx,a.ty)),re(n,s.shape),r&&n.restore()}return!0}function Tt(n,e,t,s){const a=n.fill;if(a instanceof Ke){a.buildGradient();const o=a.texture;if(o){const i=T.getTintedPattern(o,e),h=t?fe.copyFrom(t).scale(o.source.pixelWidth,o.source.pixelHeight):fe.copyFrom(a.transform);return s&&!n.textureSpace&&h.append(s),T.applyPatternTransform(i,h),i}}if(a instanceof Qe){const o=T.getTintedPattern(a.texture,e);return T.applyPatternTransform(o,a.transform),o}const r=n.texture;if(r&&r!==Ie.WHITE){if(!r.source.resource)return mt;const o=T.getTintedPattern(r,e),i=t?fe.copyFrom(t).scale(r.source.pixelWidth,r.source.pixelHeight):n.matrix;return T.applyPatternTransform(o,i),o}return xt(e)}class We{constructor(){this.shader=null}contextChange(e){}execute(e,t){var q,E,P,y,V,ee,Q;const s=e.renderer,a=s.canvasContext,r=a.activeContext,o=t.groupTransform,i=((q=s.globalUniforms.globalUniformData)==null?void 0:q.worldColor)??4294967295,h=t.groupColorAlpha,f=(i>>>24&255)/255,g=(h>>>24&255)/255,I=((E=s.filter)==null?void 0:E.alphaMultiplier)??1,G=f*g*I;if(G<=0)return;const v=i&16777215,u=h&16777215,R=Me(ae(u,v)),x=s._roundPixels|t._roundPixels;r.save(),a.setContextTransform(o,x===1),a.setBlendMode(t.groupBlendMode);const A=t.context.instructions;for(let z=0;z<A.length;z++){const $=A[z];if($.action==="texture"){const d=$.data,p=d.image,m=p?T.getCanvasSource(p):null;if(!m)continue;const L=d.alpha*G;if(L<=0)continue;const M=ae(d.style,R);r.globalAlpha=L;let b=m;M!==16777215&&(b=T.getTintedCanvas({texture:p},M));const W=p.frame,F=p.source._resolution??p.source.resolution??1;let B=W.x*F,H=W.y*F;const O=W.width*F,c=W.height*F;b!==m&&(B=0,H=0);const N=d.transform,j=N&&!N.isIdentity(),C=p.rotate;j||C?(ne.copyFrom(o),j&&ne.append(N),C&&Se.matrixAppendRotationInv(ne,C,d.dx,d.dy,d.dw,d.dh),a.setContextTransform(ne,x===1)):a.setContextTransform(o,x===1),r.drawImage(b,B,H,b===m?O:b.width,b===m?c:b.height,C?0:d.dx,C?0:d.dy,d.dw,d.dh),(j||C)&&a.setContextTransform(o,x===1);continue}const k=$.data,_=(P=k==null?void 0:k.path)==null?void 0:P.shapePath;if(!((y=_==null?void 0:_.shapePrimitives)!=null&&y.length))continue;const S=k.style,ie=ae(S.color,R),Z=S.alpha*G;if(Z<=0)continue;const D=$.action==="stroke";if(r.globalAlpha=Z,D){const d=S;r.lineWidth=d.width,r.lineCap=d.cap,r.lineJoin=d.join,r.miterLimit=d.miterLimit}const Y=_.shapePrimitives;if(!D&&((Q=(ee=(V=k.hole)==null?void 0:V.shapePath)==null?void 0:ee.shapePrimitives)!=null&&Q.length)){const d=Y[Y.length-1];d.holes=k.hole.shapePath.shapePrimitives}for(let d=0;d<Y.length;d++){const p=Y[d];if(!(p!=null&&p.shape))continue;const m=p.transform,L=m&&!m.isIdentity(),M=S.texture&&S.texture!==Ie.WHITE,b=S.textureSpace==="global"?m:null,W=M?Xe(ft,S,p.shape,b):null,F=L?gt.copyFrom(o).append(m):o,B=Tt(S,ie,W,F);if(L&&(r.save(),r.transform(m.a,m.b,m.c,m.d,m.tx,m.ty)),D){const H=S;if(H.alignment!==.5&&!H.pixelLine){const c=[],N=[],j=[],C=$e[p.shape.type];if(C!=null&&C.build(p.shape,c)){const ve=p.shape.closePath??!0;Je(c,H,!1,ve,N,j),r.fillStyle=B,vt(r,N,j)}else r.strokeStyle=B,r.beginPath(),re(r,p.shape),r.stroke()}else r.strokeStyle=B,r.beginPath(),re(r,p.shape),r.stroke()}else r.fillStyle=B,r.beginPath(),re(r,p.shape),Ct(r,p.holes)?r.fill("evenodd"):r.fill();L&&r.restore()}}r.restore()}destroy(){this.shader=null}}We.extension={type:[w.CanvasPipesAdaptor],name:"graphics"};class Pt{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){const t=e.colorTexture,{canvas:s,context:a}=this._ensureCanvas(t);return{canvas:s,context:a,width:s.width,height:s.height}}resizeGpuRenderTarget(e){const t=e.colorTexture,{canvas:s}=this._ensureCanvas(t);s.width=e.pixelWidth,s.height=e.pixelHeight}startRenderPass(e,t,s,a){const r=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=r.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,s,a)}clear(e,t,s,a){const o=this._renderTargetSystem.getGpuRenderTarget(e).context,i=a||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(o.setTransform(1,0,0,1,0,0),o.clearRect(i.x,i.y,i.width,i.height),s){const h=we.shared.setValue(s);h.alpha>0&&(o.globalAlpha=h.alpha,o.fillStyle=h.toHex(),o.fillRect(i.x,i.y,i.width,i.height),o.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,s,a,r){const i=this._renderTargetSystem.getGpuRenderTarget(e).canvas,h=t.source,{context:f}=this._ensureCanvas(h),g=(r==null?void 0:r.x)??0,I=(r==null?void 0:r.y)??0;return f.drawImage(i,s.x,s.y,a.width,a.height,g,I,a.width,a.height),h.update(),t}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!ze.test(t))&&(t=Re.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 s=t.getContext("2d");return{canvas:t,context:s}}}class Fe extends tt{constructor(e){super(e),this.adaptor=new Pt,this.adaptor.init(e,this)}}Fe.extension={type:[w.CanvasSystem],name:"renderTarget"};class Ue{constructor(e){}init(){}initSource(e){}generateCanvas(e){const t=Re.get().createCanvas(),s=t.getContext("2d"),a=T.getCanvasSource(e);if(!a)return t;const r=e.frame,o=e.source._resolution??e.source.resolution??1,i=r.x*o,h=r.y*o,f=r.width*o,g=r.height*o;return t.width=Math.ceil(f),t.height=Math.ceil(g),s.drawImage(a,i,h,f,g,0,0,f,g),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(){}}Ue.extension={type:[w.CanvasSystem],name:"texture"};const kt=[...st,Ge,Ee,Ue,Fe],bt=[nt,at,rt,ot,it,He,Ae,ct],_t=[lt,We],qe=[],De=[],Le=[];oe.handleByNamedList(w.CanvasSystem,qe);oe.handleByNamedList(w.CanvasPipes,De);oe.handleByNamedList(w.CanvasPipesAdaptor,Le);oe.add(...kt,...bt,..._t);class At extends Ze{constructor(){const e={name:"canvas",type:et.CANVAS,systems:qe,renderPipes:De,renderPipeAdaptors:Le};super(e)}}export{At as CanvasRenderer};
@@ -0,0 +1,172 @@
1
+ import{ac as ze,ad as Ve,a4 as ie,M as m,ae as Ne,af as je,Y as $e,ag as oe,p as l,x as W,ah as w,ai as qe,aj as z,ak as T,X as V,al as le,am as Ke,T as f,S as g,a2 as D,an as de,w as ue,ao as Z,ap as ce,aq as he,ar as pe,as as fe,y as P,a as Ye,c as E,V as N,R as B,at as Xe,au as Je,P as Qe,av as Ze,a0 as et,q as ee,aw as te,d as p,m as tt,a3 as R,Q as O,ax as rt,v as st,ay as nt,az as at}from"./index.nS-neZH_.js";var it=`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
+
11
+ out vec4 finalColor;
12
+
13
+ void main(void)
14
+ {
15
+ float clip = step(3.5,
16
+ step(uMaskClamp.x, vMaskCoord.x) +
17
+ step(uMaskClamp.y, vMaskCoord.y) +
18
+ step(vMaskCoord.x, uMaskClamp.z) +
19
+ step(vMaskCoord.y, uMaskClamp.w));
20
+
21
+ // TODO look into why this is needed
22
+ float npmAlpha = uAlpha;
23
+ vec4 original = texture(uTexture, vTextureCoord);
24
+ vec4 masky = texture(uMaskTexture, vMaskCoord);
25
+ float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);
26
+
27
+ float a = alphaMul * masky.r * npmAlpha * clip;
28
+
29
+ if (uInverse == 1.0) {
30
+ a = 1.0 - a;
31
+ }
32
+
33
+ finalColor = original * a;
34
+ }
35
+ `,ot=`in vec2 aPosition;
36
+
37
+ out vec2 vTextureCoord;
38
+ out vec2 vMaskCoord;
39
+
40
+
41
+ uniform vec4 uInputSize;
42
+ uniform vec4 uOutputFrame;
43
+ uniform vec4 uOutputTexture;
44
+ uniform mat3 uFilterMatrix;
45
+
46
+ vec4 filterVertexPosition( vec2 aPosition )
47
+ {
48
+ vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
49
+
50
+ position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
51
+ position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
52
+
53
+ return vec4(position, 0.0, 1.0);
54
+ }
55
+
56
+ vec2 filterTextureCoord( vec2 aPosition )
57
+ {
58
+ return aPosition * (uOutputFrame.zw * uInputSize.zw);
59
+ }
60
+
61
+ vec2 getFilterCoord( vec2 aPosition )
62
+ {
63
+ return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
64
+ }
65
+
66
+ void main(void)
67
+ {
68
+ gl_Position = filterVertexPosition(aPosition);
69
+ vTextureCoord = filterTextureCoord(aPosition);
70
+ vMaskCoord = getFilterCoord(aPosition);
71
+ }
72
+ `,re=`struct GlobalFilterUniforms {
73
+ uInputSize:vec4<f32>,
74
+ uInputPixel:vec4<f32>,
75
+ uInputClamp:vec4<f32>,
76
+ uOutputFrame:vec4<f32>,
77
+ uGlobalFrame:vec4<f32>,
78
+ uOutputTexture:vec4<f32>,
79
+ };
80
+
81
+ struct MaskUniforms {
82
+ uFilterMatrix:mat3x3<f32>,
83
+ uMaskClamp:vec4<f32>,
84
+ uAlpha:f32,
85
+ uInverse:f32,
86
+ };
87
+
88
+ @group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
89
+ @group(0) @binding(1) var uTexture: texture_2d<f32>;
90
+ @group(0) @binding(2) var uSampler : sampler;
91
+
92
+ @group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;
93
+ @group(1) @binding(1) var uMaskTexture: texture_2d<f32>;
94
+
95
+ struct VSOutput {
96
+ @builtin(position) position: vec4<f32>,
97
+ @location(0) uv : vec2<f32>,
98
+ @location(1) filterUv : vec2<f32>,
99
+ };
100
+
101
+ fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
102
+ {
103
+ var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
104
+
105
+ position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
106
+ position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
107
+
108
+ return vec4(position, 0.0, 1.0);
109
+ }
110
+
111
+ fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
112
+ {
113
+ return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
114
+ }
115
+
116
+ fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
117
+ {
118
+ return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
119
+ }
120
+
121
+ fn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>
122
+ {
123
+ return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
124
+ }
125
+
126
+ fn getSize() -> vec2<f32>
127
+ {
128
+ return gfu.uGlobalFrame.zw;
129
+ }
130
+
131
+ @vertex
132
+ fn mainVertex(
133
+ @location(0) aPosition : vec2<f32>,
134
+ ) -> VSOutput {
135
+ return VSOutput(
136
+ filterVertexPosition(aPosition),
137
+ filterTextureCoord(aPosition),
138
+ getFilterCoord(aPosition)
139
+ );
140
+ }
141
+
142
+ @fragment
143
+ fn mainFragment(
144
+ @location(0) uv: vec2<f32>,
145
+ @location(1) filterUv: vec2<f32>,
146
+ @builtin(position) position: vec4<f32>
147
+ ) -> @location(0) vec4<f32> {
148
+
149
+ var maskClamp = filterUniforms.uMaskClamp;
150
+ var uAlpha = filterUniforms.uAlpha;
151
+
152
+ var clip = step(3.5,
153
+ step(maskClamp.x, filterUv.x) +
154
+ step(maskClamp.y, filterUv.y) +
155
+ step(filterUv.x, maskClamp.z) +
156
+ step(filterUv.y, maskClamp.w));
157
+
158
+ var mask = textureSample(uMaskTexture, uSampler, filterUv);
159
+ var source = textureSample(uTexture, uSampler, uv);
160
+ var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);
161
+
162
+ var a: f32 = alphaMul * mask.r * uAlpha * clip;
163
+
164
+ if (filterUniforms.uInverse == 1.0) {
165
+ a = 1.0 - a;
166
+ }
167
+
168
+ return source * a;
169
+ }
170
+ `;class lt extends ze{constructor(e){const{sprite:t,...r}=e,s=new Ve(t.texture),n=new ie({uFilterMatrix:{value:new m,type:"mat3x3<f32>"},uMaskClamp:{value:s.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"},uInverse:{value:e.inverse?1:0,type:"f32"}}),i=Ne.from({vertex:{source:re,entryPoint:"mainVertex"},fragment:{source:re,entryPoint:"mainFragment"}}),o=je.from({vertex:ot,fragment:it,name:"mask-filter"});super({...r,gpuProgram:i,glProgram:o,clipToViewport:!1,resources:{filterUniforms:n,uMaskTexture:t.texture.source}}),this.sprite=t,this._textureMatrix=s}set inverse(e){this.resources.filterUniforms.uniforms.uInverse=e?1:0}get inverse(){return this.resources.filterUniforms.uniforms.uInverse===1}apply(e,t,r,s){this._textureMatrix.texture=this.sprite.texture,e.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,e.applyFilter(this,t,r,s)}}const j=class me{constructor(e,t){var r,s;this.state=$e.for2d(),this._batchersByInstructionSet=Object.create(null),this._activeBatches=Object.create(null),this.renderer=e,this._adaptor=t,(s=(r=this._adaptor).init)==null||s.call(r,this)}static getBatcher(e){return new this._availableBatchers[e]}buildStart(e){let t=this._batchersByInstructionSet[e.uid];t||(t=this._batchersByInstructionSet[e.uid]=Object.create(null),t.default||(t.default=new oe({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]=me.getBatcher(e.batcherName),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)}destroy(){this.state=null,this.renderer=null,this._adaptor=null;for(const e in this._activeBatches)this._activeBatches[e].destroy();this._activeBatches=null}};j.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"batch"};j._availableBatchers=Object.create(null);let ge=j;W.handleByMap(l.Batcher,ge._availableBatchers);W.add(oe);const dt=new z;class ut extends le{constructor(){super(),this.filters=[new lt({sprite:new Ke(f.EMPTY),inverse:!1,resolution:"inherit",antialias:"inherit"})]}get sprite(){return this.filters[0].sprite}set sprite(e){this.filters[0].sprite=e}get inverse(){return this.filters[0].inverse}set inverse(e){this.filters[0].inverse=e}}class _e{constructor(e){this._activeMaskStage=[],this._renderer=e}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.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=w.get(ut);if(s.inverse=e.inverse,r){e.mask.mask.measurable=!0;const n=qe(e.mask.mask,!0,dt);e.mask.mask.measurable=!1,n.ceil();const i=t.renderTarget.renderTarget.colorTexture.source,o=T.getOptimalTexture(n.width,n.height,i._resolution,i.antialias);t.renderTarget.push(o,!0),t.globalUniforms.push({offset:n,worldColor:4294967295});const d=s.sprite;d.texture=o,d.worldTransform.tx=n.minX,d.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:s,maskedContainer:e.maskedContainer,filterTexture:o})}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===V.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&&T.returnTexture(s.filterTexture),w.return(s.filterEffect)}}destroy(){this._renderer=null,this._activeMaskStage=null}}_e.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"alphaMask"};class xe{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}}xe.extension={type:[l.WebGLPipes,l.WebGPUPipes],name:"colorMask"};class be{constructor(e){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=e}push(e,t,r){var s;const n=e,i=this._renderer;i.renderPipes.batch.break(r),i.renderPipes.blendMode.setBlendMode(n.mask,"none",r),r.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const o=n.mask;o.includeInBuild=!0,this._maskHash.has(n)||this._maskHash.set(n,{instructionsStart:0,instructionsLength:0});const d=this._maskHash.get(n);d.instructionsStart=r.instructionSize,o.collectRenderables(r,i,null),o.includeInBuild=!1,i.renderPipes.batch.break(r),r.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const c=r.instructionSize-d.instructionsStart-1;d.instructionsLength=c;const h=i.renderTarget.renderTarget.uid;(s=this._maskStackHash)[h]??(s[h]=0)}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 o=0;o<i.instructionsLength;o++)r.instructions[r.instructionSize++]=r.instructions[i.instructionsStart++];r.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(e){var t;const r=this._renderer,s=r,n=r.renderTarget.renderTarget.uid;let i=(t=this._maskStackHash)[n]??(t[n]=0);e.action==="pushMaskBegin"?(s.renderTarget.ensureDepthStencil(),s.stencil.setStencilMode(g.RENDERING_MASK_ADD,i),i++,s.colorMask.setMask(0)):e.action==="pushMaskEnd"?(e.inverse?s.stencil.setStencilMode(g.INVERSE_MASK_ACTIVE,i):s.stencil.setStencilMode(g.MASK_ACTIVE,i),s.colorMask.setMask(15)):e.action==="popMaskBegin"?(s.colorMask.setMask(0),i!==0?s.stencil.setStencilMode(g.RENDERING_MASK_REMOVE,i):(s.renderTarget.clear(null,D.STENCIL),s.stencil.setStencilMode(g.DISABLED,i)),i--):e.action==="popMaskEnd"&&(e.inverse?s.stencil.setStencilMode(g.INVERSE_MASK_ACTIVE,i):s.stencil.setStencilMode(g.MASK_ACTIVE,i),s.colorMask.setMask(15)),this._maskStackHash[n]=i}destroy(){this._renderer=null,this._maskStackHash=null,this._maskHash=null}}be.extension={type:[l.WebGLPipes,l.WebGPUPipes],name:"stencilMask"};class Te{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}}Te.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"customRender"};function L(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 ve{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&&(w.return(e._batchableRenderGroup),e._batchableRenderGroup=null),t.add(e)}_addRenderableCacheAsTexture(e,t){const r=e._batchableRenderGroup??(e._batchableRenderGroup=w.get(de));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 m().translate(-e._textureBounds.x,-e._textureBounds.y);this._renderer.renderTarget.push(e.texture,!0,null,e.texture.frame),this._renderer.globalUniforms.push({worldTransformMatrix:t,worldColor:4294967295,offset:{x:0,y:0}}),L(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}),L(e,this._renderer.renderPipes),this._renderer.globalUniforms.pop()}}ve.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"renderGroup"};class ye{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 de;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}}ye.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"sprite"};const v={};W.handle(l.BlendMode,a=>{if(!a.name)throw new Error("BlendMode extension must have a name property");v[a.name]=a.ref},a=>{delete v[a.name]});class Ce{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){var n;const s=e instanceof Z;if(this._activeBlendMode===t){this._isAdvanced&&e&&!s&&((n=this._renderableList)==null||n.push(e));return}this._isAdvanced&&this._endAdvancedBlendMode(r),this._activeBlendMode=t,e&&(this._isAdvanced=!!v[t],this._isAdvanced&&this._beginAdvancedBlendMode(e,r))}_beginAdvancedBlendMode(e,t){this._renderer.renderPipes.batch.break(t);const r=this._activeBlendMode;if(!v[r]){ue(`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 Z,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 le,t.filters=[new v[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}}Ce.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"blendMode"};function H(a,e){e||(e=0);for(let t=e;t<a.length&&a[t];t++)a[t]=null}const ct=new P,se=he|pe|fe;function ke(a,e=!1){ht(a);const t=a.childrenToUpdate,r=a.updateTick++;for(const s in t){const n=Number(s),i=t[s],o=i.list,d=i.index;for(let c=0;c<d;c++){const h=o[c];h.parentRenderGroup===a&&h.relativeRenderGroupDepth===n&&Me(h,r,0)}H(o,d),i.index=0}if(e)for(let s=0;s<a.renderGroupChildren.length;s++)ke(a.renderGroupChildren[s],e)}function ht(a){const e=a.root;let t;if(a.renderGroupParent){const r=a.renderGroupParent;a.worldTransform.appendFrom(e.relativeGroupTransform,r.worldTransform),a.worldColor=ce(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 Me(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&se&&ne(a,s,t)):(t=a._updateFlags,a.relativeGroupTransform.copyFrom(r),t&se&&ne(a,ct,t)),!a.renderGroup){const n=a.children,i=n.length;for(let c=0;c<i;c++)Me(n[c],e,t);const o=a.parentRenderGroup,d=a;d.renderPipeId&&!o.structureDidChange&&o.updateRenderable(d)}}function ne(a,e,t){if(t&pe){a.groupColor=ce(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&fe&&(a.groupBlendMode=a.localBlendMode==="inherit"?e.groupBlendMode:a.localBlendMode),t&he&&(a.globalDisplayStatus=a.localDisplayStatus&e.globalDisplayStatus),a._updateFlags=0}function pt(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 ft=new m;class Re{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=ft;t&&(i.copyFrom(e.renderGroup.localTransform),e.renderGroup.localTransform.copyFrom(t));const o=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}),L(e.renderGroup,o),o.uniformBatch&&o.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,o=e.textureOptions.scaleMode??"linear",d=e.texture;r.ceil(),e.texture&&T.returnTexture(e.texture,!0);const c=T.getOptimalTexture(r.width,r.height,n,i);c._source.style=new Ye({scaleMode:o}),e.texture=c,e._textureBounds||(e._textureBounds=new z),e._textureBounds.copyFrom(r),d!==e.texture&&e.renderGroupParent&&(e.renderGroupParent.structureDidChange=!0)}}else e.texture&&(T.returnTexture(e.texture,!0),e.texture=null)}_updateRenderGroups(e){const t=this._renderer,r=t.renderPipes;if(e.runOnRender(t),e.instructionSet.renderPipes=r,e.structureDidChange?H(e.childrenRenderablesToUpdate.list,0):pt(e,r),ke(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)}H(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)}}Re.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"renderGroup"};const $=class Se{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new E(0),this.color=this._backgroundColor,this.alpha=1}init(e){e={...Se.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){E.shared.setValue(e).alpha<1&&this._backgroundColor.alpha===1&&ue("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(){}};$.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"background",priority:0};$.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};let mt=$;const I={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},q=class we{constructor(e){this._renderer=e}_normalizeOptions(e,t={}){return e instanceof P||e instanceof f?{target:e,...t}:{...t,...e}}async image(e){const t=N.get().createImage();return t.src=await this.base64(e),t}async base64(e){e=this._normalizeOptions(e,we.defaultImageOptions);const{format:t,quality:r}=e,s=this.canvas(e);if(s.toBlob!==void 0)return new Promise((n,i)=>{s.toBlob(o=>{if(!o){i(new Error("ICanvas.toBlob failed!"));return}const d=new FileReader;d.onload=()=>n(d.result),d.onerror=i,d.readAsDataURL(o)},I[t],r)});if(s.toDataURL!==void 0)return s.toDataURL(I[t],r);if(s.convertToBlob!==void 0){const n=await s.convertToBlob({type:I[t],quality:r});return new Promise((i,o)=>{const d=new FileReader;d.onload=()=>i(d.result),d.onerror=o,d.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 f)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 f?t:r.textureGenerator.generateTexture(e),n=r.texture.getPixels(s);return t instanceof P&&s.destroy(!0),n}texture(e){return e=this._normalizeOptions(e),e.target instanceof f?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}};q.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"extract"};q.defaultImageOptions={format:"png",quality:1};let gt=q;const _t=new B,xt=new z,bt=[0,0,0,0];class Pe{constructor(e){this._renderer=e}generateTexture(e){var c;e instanceof P&&(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:E.shared.setValue(n).toArray():n=bt;const i=((c=e.frame)==null?void 0:c.copyTo(_t))||Xe(s,xt).rectangle;i.width=Math.max(i.width,1/t)|0,i.height=Math.max(i.height,1/t)|0;const o=Je.create({...e.textureSourceOptions,width:i.width,height:i.height,resolution:t,antialias:r}),d=m.shared.translate(-i.x,-i.y);return this._renderer.render({container:s,transform:d,target:o,clearColor:n}),o.source.updateMipmaps(),o}destroy(){this._renderer=null}}Pe.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"textureGenerator"};function Tt(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 vt(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 K=class Be{constructor(e){this._managedResources=[],this._managedResourceHashes=[],this._managedCollections=[],this._ready=!1,this._renderer=e}init(e){e={...Be.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]=Tt(r[s]):r[s]=vt(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){var s,n;if(e._gcLastUsed!==-1){e._gcLastUsed=this.now,(s=e._onTouch)==null||s.call(e,this.now);return}const r=this._managedResources.length;e._gcData={index:r,type:t},e._gcLastUsed=this.now,(n=e._onTouch)==null||n.call(e,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(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(){const e=performance.now(),t=this._managedResourceHashes;for(const s of t)this.runOnHash(s,e);let r=0;for(let s=0;s<this._managedResources.length;s++){const n=this._managedResources[s];r=this.runOnResource(n,e,r)}this._managedResources.length=r}updateRenderableGCTick(e,t){var n,i;const r=e.renderGroup??e.parentRenderGroup,s=((n=r==null?void 0:r.instructionSet)==null?void 0:n.gcTick)??-1;((r==null?void 0:r.gcTick)??0)===s&&(e._gcLastUsed=t,(i=e._onTouch)==null||i.call(e,t))}runOnResource(e,t,r){const s=e._gcData;return s.type==="renderable"&&this.updateRenderableGCTick(e,t),t-e._gcLastUsed<this.maxUnusedTime||!e.autoGarbageCollect?(this._managedResources[r]=e,s.index=r,r++):(e.unload(),e._gcData=null,e._gcLastUsed=-1,e.off("unload",this.removeResource,this)),r}_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){var c;const{context:r,hash:s,type:n}=e,i=r[s];let o=null,d=0;for(const h in i){const u=i[h];if(u===null){d++,d===1e4&&!o&&(o=this._createHashClone(i,h));continue}if(u._gcLastUsed===-1){u._gcLastUsed=t,(c=u._onTouch)==null||c.call(u,t),o&&(o[h]=u);continue}if(n==="renderable"&&this.updateRenderableGCTick(u,t),!(t-u._gcLastUsed<this.maxUnusedTime)&&u.autoGarbageCollect){if(o||(d+1!==1e4?(i[h]=null,d++):o=this._createHashClone(i,h)),n==="renderable"){const _=u,x=_.renderGroup??_.parentRenderGroup;x&&(x.structureDidChange=!0)}u.unload(),u._gcData=null,u._gcLastUsed=-1}else o&&(o[h]=u)}o&&(r[s]=o)}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}};K.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"gc",priority:0};K.defaultOptions={gcActive:!0,gcMaxUnusedTime:6e4,gcFrequency:3e4};let yt=K;class Ge{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,o=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{worldTransformMatrix:new m,worldColor:4294967295,offset:new Qe},d={projectionMatrix:t||this._renderer.renderTarget.projectionMatrix,resolution:e||i.size,worldTransformMatrix:r||o.worldTransformMatrix,worldColor:s||o.worldColor,offset:n||o.offset,bindGroup:null},c=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(c);const h=c.uniforms;h.uProjectionMatrix=d.projectionMatrix,h.uResolution=d.resolution,h.uWorldTransformMatrix.copyFrom(d.worldTransformMatrix),h.uWorldTransformMatrix.tx-=d.offset.x,h.uWorldTransformMatrix.ty-=d.offset.y,Ze(d.worldColor,h.uWorldColorAlpha,0),c.update();let u;this._renderer.renderPipes.uniformBatch?u=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(c,!1):(u=this._bindGroupPool.pop()||new et,this._activeBindGroups.push(u),u.setResource(c,0)),d.bindGroup=u,this._currentGlobalUniformData=d}push(e){this.bind(e),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===V.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 ie({uProjectionMatrix:{value:new m,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new m,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}}Ge.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"globalUniforms"};let Ct=1;class Ue{constructor(){this._tasks=[],this._offset=0}init(){ee.system.add(this._update,this)}repeat(e,t,r=!0){const s=Ct++;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(){ee.system.remove(this._update,this),this._tasks.length=0}}Ue.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"scheduler",priority:0};let ae=!1;function kt(a){if(!ae){if(N.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){const e=[`%c %c %c %c %c PixiJS %c v${te} (${a}) http://www.pixijs.com/
171
+
172
+ `,"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 ${te} - ${a} - http://www.pixijs.com/`);ae=!0}}class Y{constructor(e){this._renderer=e}init(e){if(e.hello){let t=this._renderer.name;this._renderer.type===V.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),kt(t)}}}Y.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"hello",priority:-2};Y.defaultOptions={hello:!1};const X=class Ae{constructor(e){this._renderer=e}init(e){e={...Ae.defaultOptions,...e},this.maxUnusedTime=e.renderableGCMaxUnusedTime}get enabled(){return p("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled}set enabled(e){p("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled=e}addManagedHash(e,t){p("8.15.0","RenderableGCSystem.addManagedHash is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"hash")}addManagedArray(e,t){p("8.15.0","RenderableGCSystem.addManagedArray is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"array")}addRenderable(e){p("8.15.0","RenderableGCSystem.addRenderable is deprecated, please use the GCSystem instead."),this._renderer.gc.addResource(e,"renderable")}run(){p("8.15.0","RenderableGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};X.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"renderableGC",priority:0};X.defaultOptions={renderableGCActive:!0,renderableGCMaxUnusedTime:6e4,renderableGCFrequency:3e4};let Mt=X;const J=class S{get count(){return this._renderer.tick}get checkCount(){return this._checkCount}set checkCount(e){p("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){p("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){p("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead.")}get active(){return this._renderer.gc.enabled}set active(e){p("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!==S.defaultOptions.textureGCActive&&(this.active=e.textureGCActive),e.textureGCMaxIdle!==S.defaultOptions.textureGCMaxIdle&&(this.maxIdle=e.textureGCMaxIdle),e.textureGCCheckCountMax!==S.defaultOptions.textureGCCheckCountMax&&(this.checkCountMax=e.textureGCCheckCountMax)}run(){p("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};J.extension={type:[l.WebGLSystem,l.WebGPUSystem],name:"textureGC"};J.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:null,textureGCMaxIdle:60*60,textureGCCheckCountMax:600};let Rt=J;const Ie=class De{constructor(e={}){if(this.uid=tt("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,e={...De.defaultOptions,...e},this.stencil=e.stencil,this.depth=e.depth,this.isRoot=e.isRoot,typeof e.colorTextures=="number"){this._managedColorTextures=!0;for(let t=0;t<e.colorTextures;t++)this.colorTextures.push(new R({width:e.width,height:e.height,resolution:e.resolution,antialias:e.antialias}))}else{this.colorTextures=[...e.colorTextures.map(r=>r.source)];const t=this.colorTexture.source;this.resize(t.width,t.height,t._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(e.depthStencilTexture||this.stencil)&&(e.depthStencilTexture instanceof f||e.depthStencilTexture instanceof R?this.depthStencilTexture=e.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){const e=this._size;return e[0]=this.pixelWidth,e[1]=this.pixelHeight,e}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(e){this.resize(e.width,e.height,e._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new R({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(e,t,r=this.resolution,s=!1){this.dirtyId++,this.colorTextures.forEach((n,i)=>{s&&i===0||n.source.resize(e,t,r)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(e,t,r)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(e=>{e.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}};Ie.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let F=Ie;const b=new Map;rt.register(b);function Ee(a,e){if(!b.has(a)){const t=new f({source:new O({resource:a,...e})}),r=()=>{b.get(a)===t&&b.delete(a)};t.once("destroy",r),t.source.once("destroy",r),b.set(a,t)}return b.get(a)}const Q=class Oe{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)}init(e){e={...Oe.defaultOptions,...e},e.view&&(p(st,"ViewSystem.view has been renamed to ViewSystem.canvas"),e.canvas=e.view),this.screen=new B(0,0,e.width,e.height),this.canvas=e.canvas||N.get().createCanvas(),this.antialias=!!e.antialias,this.texture=Ee(this.canvas,e),this.renderTarget=new F({colorTextures:[this.texture],depth:!!e.depth,isRoot:!0}),this.texture.source.transparent=e.backgroundAlpha<1,this.resolution=e.resolution}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!=null&&e.removeView))&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.texture.destroy()}};Q.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"view",priority:0};Q.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};let St=Q;const Gt=[mt,Ge,Y,St,Re,yt,Rt,Pe,gt,nt,Mt,Ue],Ut=[Ce,ge,ye,ve,_e,be,xe,Te];function wt(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 Pt(a){const e=a.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement&&document.body.contains(e)}class At{constructor(e){this.rootViewPort=new B,this.viewport=new B,this.mipLevel=0,this.layer=0,this.onRenderTargetChange=new at("onRenderTargetChange"),this.projectionMatrix=new m,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=e,e.gc.addCollection(this,"_gpuRenderTargetHash","hash")}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:e,clear:t,clearColor:r,frame:s,mipLevel:n,layer:i}){var o,d;this._renderTargetStack.length=0,this.push(e,t,r,s,n??0,i??0),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=Pt(this.rootRenderTarget),(d=(o=this.adaptor).prerender)==null||d.call(o,this.rootRenderTarget)}postrender(){var e,t;(t=(e=this.adaptor).postrender)==null||t.call(e,this.rootRenderTarget)}bind(e,t=!0,r,s,n=0,i=0){const o=this.getRenderTarget(e),d=this.renderTarget!==o;this.renderTarget=o,this.renderSurface=e;const c=this.getGpuRenderTarget(o);(o.pixelWidth!==c.width||o.pixelHeight!==c.height)&&(this.adaptor.resizeGpuRenderTarget(o),c.width=o.pixelWidth,c.height=o.pixelHeight);const h=o.colorTexture,u=this.viewport,G=h.arrayLayerCount||1;if((i|0)!==i&&(i|=0),i<0||i>=G)throw new Error(`[RenderTargetSystem] layer ${i} is out of bounds (arrayLayerCount=${G}).`);this.mipLevel=n|0,this.layer=i|0;const _=Math.max(h.pixelWidth>>n,1),x=Math.max(h.pixelHeight>>n,1);if(!s&&e instanceof f&&(s=e.frame),s){const y=h._resolution,C=1<<Math.max(n|0,0),Le=s.x*y+.5|0,He=s.y*y+.5|0,Fe=s.width*y+.5|0,We=s.height*y+.5|0;let k=Math.floor(Le/C),M=Math.floor(He/C),U=Math.ceil(Fe/C),A=Math.ceil(We/C);k=Math.min(Math.max(k,0),_-1),M=Math.min(Math.max(M,0),x-1),U=Math.min(Math.max(U,1),_-k),A=Math.min(Math.max(A,1),x-M),u.x=k,u.y=M,u.width=U,u.height=A}else u.x=0,u.y=0,u.width=_,u.height=x;return wt(this.projectionMatrix,0,0,u.width/h.resolution,u.height/h.resolution,!o.isRoot),this.adaptor.startRenderPass(o,t,r,u,n,i),d&&this.onRenderTargetChange.emit(o),o}clear(e,t=D.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=D.ALL,r,s,n=0,i=0){const o=this.bind(e,t,r,s,n,i);return this._renderTargetStack.push({renderTarget:o,frame:s,mipLevel:n,layer:i}),o}pop(){this._renderTargetStack.pop();const e=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(e.renderTarget,!1,null,e.frame,e.mipLevel,e.layer)}getRenderTarget(e){return e.isTexture&&(e=e.source),this._renderSurfaceToRenderTargetHash.get(e)??this._initRenderTarget(e)}copyToTexture(e,t,r,s,n){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:i,pixelHeight:o}=e;return s.width=Math.min(s.width,i-r.x),s.height=Math.min(s.height,o-r.y),this.adaptor.copyToTexture(e,t,r,s,n)}ensureDepthStencil(){this.renderTarget.stencil||(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&&e.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(e){let t=null;return O.test(e)&&(e=Ee(e).source),e instanceof F?t=e:e instanceof R&&(t=new F({colorTextures:[e]}),e.source instanceof O&&(t.isRoot=!0),e.once("destroy",()=>{t.destroy(),this._renderSurfaceToRenderTargetHash.delete(e);const r=this._gpuRenderTargetHash[t.uid];r&&(this._gpuRenderTargetHash[t.uid]=null,this.adaptor.destroyGpuRenderTarget(r))})),this._renderSurfaceToRenderTargetHash.set(e,t),t}getGpuRenderTarget(e){return this._gpuRenderTargetHash[e.uid]||(this._gpuRenderTargetHash[e.uid]=this.adaptor.initGpuRenderTarget(e))}resetState(){this.renderTarget=null,this.renderSurface=null}}export{_e as A,Ce as B,Te as C,At as R,Gt as S,ge as a,ye as b,ve as c,Ut as d};