@midscene/android-playground 1.0.1-beta-20251021060907.0 → 1.0.1-beta-20251024063839.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/es/bin.mjs +5 -3
  2. package/dist/lib/bin.js +5 -3
  3. package/package.json +5 -5
  4. package/static/index.html +1 -1
  5. package/static/static/js/142.64c1e0d5.js +697 -0
  6. package/static/static/js/{825.c5ade4c6.js.map → 142.64c1e0d5.js.map} +1 -1
  7. package/static/static/js/async/150.d439b38c.js +158 -0
  8. package/static/static/js/async/{212.850ade70.js.map → 150.d439b38c.js.map} +1 -1
  9. package/static/static/js/async/{624.8a1fe2e8.js → 195.aa1e3152.js} +3 -3
  10. package/static/static/js/async/{624.8a1fe2e8.js.map → 195.aa1e3152.js.map} +1 -1
  11. package/static/static/js/async/260.d838b3b7.js +2 -0
  12. package/static/static/js/async/{544.18ac9afb.js.map → 260.d838b3b7.js.map} +1 -1
  13. package/static/static/js/async/271.71b3326b.js +3 -0
  14. package/static/static/js/async/{173.f2381e64.js.map → 271.71b3326b.js.map} +1 -1
  15. package/static/static/js/async/355.76c31308.js +1 -0
  16. package/static/static/js/async/{644.910ce3d0.js → 441.675c15a8.js} +1 -1
  17. package/static/static/js/async/45.ce50b37f.js +21 -0
  18. package/static/static/js/async/45.ce50b37f.js.map +1 -0
  19. package/static/static/js/async/586.ffc417d5.js +26 -0
  20. package/static/static/js/async/{329.261bc4a1.js.map → 586.ffc417d5.js.map} +1 -1
  21. package/static/static/js/async/631.9799e85f.js +30 -0
  22. package/static/static/js/async/{364.d88c3cff.js.map → 631.9799e85f.js.map} +1 -1
  23. package/static/static/js/async/{702.1f38a17e.js → 779.e7bfc2ed.js} +15 -15
  24. package/static/static/js/async/{702.1f38a17e.js.map → 779.e7bfc2ed.js.map} +1 -1
  25. package/static/static/js/async/782.f77f2205.js +2 -0
  26. package/static/static/js/async/782.f77f2205.js.map +1 -0
  27. package/static/static/js/index.dd3aa15e.js +30 -0
  28. package/static/static/js/index.dd3aa15e.js.map +1 -0
  29. package/static/static/js/lib-react.d7dec362.js +3 -0
  30. package/static/static/js/{lib-react.c74a0742.js.map → lib-react.d7dec362.js.map} +1 -1
  31. package/static/static/js/825.c5ade4c6.js +0 -697
  32. package/static/static/js/async/166.834644b5.js +0 -2
  33. package/static/static/js/async/166.834644b5.js.map +0 -1
  34. package/static/static/js/async/173.f2381e64.js +0 -3
  35. package/static/static/js/async/212.850ade70.js +0 -158
  36. package/static/static/js/async/329.261bc4a1.js +0 -26
  37. package/static/static/js/async/364.d88c3cff.js +0 -30
  38. package/static/static/js/async/544.18ac9afb.js +0 -2
  39. package/static/static/js/async/582.8f4b5264.js +0 -21
  40. package/static/static/js/async/582.8f4b5264.js.map +0 -1
  41. package/static/static/js/async/983.b98b40af.js +0 -1
  42. package/static/static/js/index.eb785992.js +0 -30
  43. package/static/static/js/index.eb785992.js.map +0 -1
  44. package/static/static/js/lib-react.c74a0742.js +0 -3
  45. /package/static/static/js/{825.c5ade4c6.js.LICENSE.txt → 142.64c1e0d5.js.LICENSE.txt} +0 -0
  46. /package/static/static/js/{index.eb785992.js.LICENSE.txt → index.dd3aa15e.js.LICENSE.txt} +0 -0
  47. /package/static/static/js/{lib-react.c74a0742.js.LICENSE.txt → lib-react.d7dec362.js.LICENSE.txt} +0 -0
  48. /package/static/static/wasm/{9e906fbf55e08f98.module.wasm → 9e906fbf.module.wasm} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/async/364.d88c3cff.js","sources":["webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/textureBit.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/CustomRenderPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/executeInstructions.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/buildInstructions.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixColors.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixHexColors.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/collectRenderGroups.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/validateRenderables.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite/SpritePipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.wgsl.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/MaskFilter.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.vert.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.frag.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/sayHello.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs"],"sourcesContent":["\"use strict\";\nconst textureBit = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n `\n ),\n main: (\n /* wgsl */\n `\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n )\n }\n};\nconst textureBitGl = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureMatrix;\n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n\n \n `\n ),\n main: (\n /* glsl */\n `\n outColor = texture(uTexture, vUV);\n `\n )\n }\n};\n\nexport { textureBit, textureBitGl };\n//# sourceMappingURL=textureBit.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nfunction ensureAttributes(geometry, extractedData) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n const attributeData = extractedData[i];\n if (attributeData) {\n attribute.location ?? (attribute.location = attributeData.location);\n attribute.format ?? (attribute.format = attributeData.format);\n attribute.offset ?? (attribute.offset = attributeData.offset);\n attribute.instance ?? (attribute.instance = attributeData.instance);\n } else {\n warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);\n }\n }\n ensureStartAndStride(geometry);\n}\nfunction ensureStartAndStride(geometry) {\n const { buffers, attributes } = geometry;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n const buffer = buffers[j];\n tempStride[buffer.uid] = 0;\n tempStart[buffer.uid] = 0;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n tempStride[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n attribute.stride ?? (attribute.stride = tempStride[attribute.buffer.uid]);\n attribute.start ?? (attribute.start = tempStart[attribute.buffer.uid]);\n tempStart[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n}\n\nexport { ensureAttributes };\n//# sourceMappingURL=ensureAttributes.mjs.map\n","import { STENCIL_MODES } from '../../shared/state/const.mjs';\n\n\"use strict\";\nconst GpuStencilModesToPixi = [];\nGpuStencilModesToPixi[STENCIL_MODES.NONE] = void 0;\nGpuStencilModesToPixi[STENCIL_MODES.DISABLED] = {\n stencilWriteMask: 0,\n stencilReadMask: 0\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE] = {\n stencilWriteMask: 0,\n stencilFront: {\n compare: \"equal\",\n passOp: \"keep\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"keep\"\n }\n};\n\nexport { GpuStencilModesToPixi };\n//# sourceMappingURL=GpuStencilModesToPixi.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { CLEAR } from '../../gl/const.mjs';\nimport { calculateProjection } from '../../gpu/renderTarget/calculateProjection.mjs';\nimport { SystemRunner } from '../system/SystemRunner.mjs';\nimport { CanvasSource } from '../texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../texture/sources/TextureSource.mjs';\nimport { Texture } from '../texture/Texture.mjs';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture.mjs';\nimport { isRenderingToScreen } from './isRenderingToScreen.mjs';\nimport { RenderTarget } from './RenderTarget.mjs';\n\n\"use strict\";\nclass RenderTargetSystem {\n constructor(renderer) {\n /** This is the root viewport for the render pass*/\n this.rootViewPort = new Rectangle();\n /** the current viewport that the gpu is using */\n this.viewport = new Rectangle();\n /**\n * a runner that lets systems know if the active render target has changed.\n * Eg the Stencil System needs to know so it can manage the stencil buffer\n */\n this.onRenderTargetChange = new SystemRunner(\"onRenderTargetChange\");\n /** the projection matrix that is used by the shaders based on the active render target and the viewport */\n this.projectionMatrix = new Matrix();\n /** the default clear color for render targets */\n this.defaultClearColor = [0, 0, 0, 0];\n /**\n * a hash that stores the render target for a given render surface. When you pass in a texture source,\n * a render target is created for it. This map stores and makes it easy to retrieve the render target\n */\n this._renderSurfaceToRenderTargetHash = /* @__PURE__ */ new Map();\n /** A hash that stores a gpu render target for a given render target. */\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n /**\n * A stack that stores the render target and frame that is currently being rendered to.\n * When push is called, the current render target is stored in this stack.\n * When pop is called, the previous render target is restored.\n */\n this._renderTargetStack = [];\n this._renderer = renderer;\n }\n /** called when dev wants to finish a render pass */\n finishRenderPass() {\n this.adaptor.finishRenderPass(this.renderTarget);\n }\n /**\n * called when the renderer starts to render a scene.\n * @param options\n * @param options.target - the render target to render to\n * @param options.clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param options.clearColor - the color to clear to\n * @param options.frame - the frame to render to\n */\n renderStart({\n target,\n clear,\n clearColor,\n frame\n }) {\n this._renderTargetStack.length = 0;\n this.push(\n target,\n clear,\n clearColor,\n frame\n );\n this.rootViewPort.copyFrom(this.viewport);\n this.rootRenderTarget = this.renderTarget;\n this.renderingToScreen = isRenderingToScreen(this.rootRenderTarget);\n }\n /**\n * Binding a render surface! This is the main function of the render target system.\n * It will take the RenderSurface (which can be a texture, canvas, or render target) and bind it to the renderer.\n * Once bound all draw calls will be rendered to the render surface.\n *\n * If a frame is not provide and the render surface is a texture, the frame of the texture will be used.\n * @param renderSurface - the render surface to bind\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to render to\n * @returns the render target that was bound\n */\n bind(renderSurface, clear = true, clearColor, frame) {\n const renderTarget = this.getRenderTarget(renderSurface);\n const didChange = this.renderTarget !== renderTarget;\n this.renderTarget = renderTarget;\n this.renderSurface = renderSurface;\n const gpuRenderTarget = this.getGpuRenderTarget(renderTarget);\n if (renderTarget.pixelWidth !== gpuRenderTarget.width || renderTarget.pixelHeight !== gpuRenderTarget.height) {\n this.adaptor.resizeGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.pixelWidth;\n gpuRenderTarget.height = renderTarget.pixelHeight;\n }\n const source = renderTarget.colorTexture;\n const viewport = this.viewport;\n const pixelWidth = source.pixelWidth;\n const pixelHeight = source.pixelHeight;\n if (!frame && renderSurface instanceof Texture) {\n frame = renderSurface.frame;\n }\n if (frame) {\n const resolution = source._resolution;\n viewport.x = frame.x * resolution + 0.5 | 0;\n viewport.y = frame.y * resolution + 0.5 | 0;\n viewport.width = frame.width * resolution + 0.5 | 0;\n viewport.height = frame.height * resolution + 0.5 | 0;\n } else {\n viewport.x = 0;\n viewport.y = 0;\n viewport.width = pixelWidth;\n viewport.height = pixelHeight;\n }\n calculateProjection(\n this.projectionMatrix,\n 0,\n 0,\n viewport.width / source.resolution,\n viewport.height / source.resolution,\n !renderTarget.isRoot\n );\n this.adaptor.startRenderPass(renderTarget, clear, clearColor, viewport);\n if (didChange) {\n this.onRenderTargetChange.emit(renderTarget);\n }\n return renderTarget;\n }\n clear(target, clear = CLEAR.ALL, clearColor) {\n if (!clear)\n return;\n if (target) {\n target = this.getRenderTarget(target);\n }\n this.adaptor.clear(\n target || this.renderTarget,\n clear,\n clearColor,\n this.viewport\n );\n }\n contextChange() {\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n }\n /**\n * Push a render surface to the renderer. This will bind the render surface to the renderer,\n * @param renderSurface - the render surface to push\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to use when rendering to the render surface\n */\n push(renderSurface, clear = CLEAR.ALL, clearColor, frame) {\n const renderTarget = this.bind(renderSurface, clear, clearColor, frame);\n this._renderTargetStack.push({\n renderTarget,\n frame\n });\n return renderTarget;\n }\n /** Pops the current render target from the renderer and restores the previous render target. */\n pop() {\n this._renderTargetStack.pop();\n const currentRenderTargetData = this._renderTargetStack[this._renderTargetStack.length - 1];\n this.bind(currentRenderTargetData.renderTarget, false, null, currentRenderTargetData.frame);\n }\n /**\n * Gets the render target from the provide render surface. Eg if its a texture,\n * it will return the render target for the texture.\n * If its a render target, it will return the same render target.\n * @param renderSurface - the render surface to get the render target for\n * @returns the render target for the render surface\n */\n getRenderTarget(renderSurface) {\n if (renderSurface.isTexture) {\n renderSurface = renderSurface.source;\n }\n return this._renderSurfaceToRenderTargetHash.get(renderSurface) ?? this._initRenderTarget(renderSurface);\n }\n /**\n * Copies a render surface to another texture\n * @param sourceRenderSurfaceTexture - the render surface to copy from\n * @param destinationTexture - the texture to copy to\n * @param originSrc - the origin of the copy\n * @param originSrc.x - the x origin of the copy\n * @param originSrc.y - the y origin of the copy\n * @param size - the size of the copy\n * @param size.width - the width of the copy\n * @param size.height - the height of the copy\n * @param originDest - the destination origin (top left to paste from!)\n * @param originDest.x - the x origin of the paste\n * @param originDest.y - the y origin of the paste\n */\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n if (originSrc.x < 0) {\n size.width += originSrc.x;\n originDest.x -= originSrc.x;\n originSrc.x = 0;\n }\n if (originSrc.y < 0) {\n size.height += originSrc.y;\n originDest.y -= originSrc.y;\n originSrc.y = 0;\n }\n const { pixelWidth, pixelHeight } = sourceRenderSurfaceTexture;\n size.width = Math.min(size.width, pixelWidth - originSrc.x);\n size.height = Math.min(size.height, pixelHeight - originSrc.y);\n return this.adaptor.copyToTexture(\n sourceRenderSurfaceTexture,\n destinationTexture,\n originSrc,\n size,\n originDest\n );\n }\n /**\n * ensures that we have a depth stencil buffer available to render to\n * This is used by the mask system to make sure we have a stencil buffer.\n */\n ensureDepthStencil() {\n if (!this.renderTarget.stencil) {\n this.renderTarget.stencil = true;\n this.adaptor.startRenderPass(this.renderTarget, false, null, this.viewport);\n }\n }\n /** nukes the render target system */\n destroy() {\n this._renderer = null;\n this._renderSurfaceToRenderTargetHash.forEach((renderTarget, key) => {\n if (renderTarget !== key) {\n renderTarget.destroy();\n }\n });\n this._renderSurfaceToRenderTargetHash.clear();\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n }\n _initRenderTarget(renderSurface) {\n let renderTarget = null;\n if (CanvasSource.test(renderSurface)) {\n renderSurface = getCanvasTexture(renderSurface);\n }\n if (renderSurface instanceof RenderTarget) {\n renderTarget = renderSurface;\n } else if (renderSurface instanceof TextureSource) {\n renderTarget = new RenderTarget({\n colorTextures: [renderSurface]\n });\n if (CanvasSource.test(renderSurface.source.resource)) {\n renderTarget.isRoot = true;\n }\n renderSurface.once(\"destroy\", () => {\n renderTarget.destroy();\n const gpuRenderTarget = this._gpuRenderTargetHash[renderTarget.uid];\n if (gpuRenderTarget) {\n this._gpuRenderTargetHash[renderTarget.uid] = null;\n this.adaptor.destroyGpuRenderTarget(gpuRenderTarget);\n }\n });\n }\n this._renderSurfaceToRenderTargetHash.set(renderSurface, renderTarget);\n return renderTarget;\n }\n getGpuRenderTarget(renderTarget) {\n return this._gpuRenderTargetHash[renderTarget.uid] || (this._gpuRenderTargetHash[renderTarget.uid] = this.adaptor.initGpuRenderTarget(renderTarget));\n }\n}\n\nexport { RenderTargetSystem };\n//# sourceMappingURL=RenderTargetSystem.mjs.map\n","\"use strict\";\nfunction isRenderingToScreen(renderTarget) {\n const resource = renderTarget.colorTexture.source.resource;\n return globalThis.HTMLCanvasElement && resource instanceof HTMLCanvasElement && document.body.contains(resource);\n}\n\nexport { isRenderingToScreen };\n//# sourceMappingURL=isRenderingToScreen.mjs.map\n","\"use strict\";\nfunction calculateProjection(pm, x, y, width, height, flipY) {\n const sign = flipY ? 1 : -1;\n pm.identity();\n pm.a = 1 / width * 2;\n pm.d = sign * (1 / height * 2);\n pm.tx = -1 - x * pm.a;\n pm.ty = -sign - y * pm.d;\n return pm;\n}\n\nexport { calculateProjection };\n//# sourceMappingURL=calculateProjection.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CustomRenderPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderable(container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(container);\n }\n execute(container) {\n if (!container.isRenderable)\n return;\n container.render(this._renderer);\n }\n destroy() {\n this._renderer = null;\n }\n}\nCustomRenderPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"customRender\"\n};\n\nexport { CustomRenderPipe };\n//# sourceMappingURL=CustomRenderPipe.mjs.map\n","\"use strict\";\nfunction executeInstructions(renderGroup, renderer) {\n const instructionSet = renderGroup.instructionSet;\n const instructions = instructionSet.instructions;\n for (let i = 0; i < instructionSet.instructionSize; i++) {\n const instruction = instructions[i];\n renderer[instruction.renderPipeId].execute(instruction);\n }\n}\n\nexport { executeInstructions };\n//# sourceMappingURL=executeInstructions.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { executeInstructions } from './utils/executeInstructions.mjs';\n\n\"use strict\";\nclass RenderGroupPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderGroup(renderGroup, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(renderGroup);\n }\n execute(renderGroup) {\n if (!renderGroup.isRenderable)\n return;\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.worldTransform,\n worldColor: renderGroup.worldColorAlpha\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.globalUniforms.pop();\n }\n destroy() {\n this._renderer = null;\n }\n}\nRenderGroupPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"renderGroup\"\n};\n\nexport { RenderGroupPipe };\n//# sourceMappingURL=RenderGroupPipe.mjs.map\n","\"use strict\";\nfunction buildInstructions(renderGroup, renderPipes) {\n const root = renderGroup.root;\n const instructionSet = renderGroup.instructionSet;\n instructionSet.reset();\n renderPipes.batch.buildStart(instructionSet);\n renderPipes.blendMode.buildStart();\n renderPipes.colorMask.buildStart();\n if (root.sortableChildren) {\n root.sortChildren();\n }\n collectAllRenderablesAdvanced(root, instructionSet, renderPipes, true);\n renderPipes.batch.buildEnd(instructionSet);\n renderPipes.blendMode.buildEnd(instructionSet);\n}\nfunction collectAllRenderables(container, instructionSet, rendererPipes) {\n if (container.globalDisplayStatus < 7 || !container.includeInBuild)\n return;\n if (container.sortableChildren) {\n container.sortChildren();\n }\n if (container.isSimple) {\n collectAllRenderablesSimple(container, instructionSet, rendererPipes);\n } else {\n collectAllRenderablesAdvanced(container, instructionSet, rendererPipes, false);\n }\n}\nfunction collectAllRenderablesSimple(container, instructionSet, renderPipes) {\n if (container.renderPipeId) {\n renderPipes.blendMode.setBlendMode(container, container.groupBlendMode, instructionSet);\n container.didViewUpdate = false;\n const rp = renderPipes;\n rp[container.renderPipeId].addRenderable(container, instructionSet);\n }\n if (!container.isRenderGroupRoot) {\n const children = container.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n}\nfunction collectAllRenderablesAdvanced(container, instructionSet, renderPipes, isRoot) {\n if (!isRoot && container.isRenderGroupRoot) {\n renderPipes.renderGroup.addRenderGroup(container.renderGroup, instructionSet);\n } else {\n for (let i = 0; i < container.effects.length; i++) {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.push(effect, container, instructionSet);\n }\n const renderPipeId = container.renderPipeId;\n if (renderPipeId) {\n renderPipes.blendMode.setBlendMode(container, container.groupBlendMode, instructionSet);\n container.didViewUpdate = false;\n const pipe = renderPipes[renderPipeId];\n pipe.addRenderable(container, instructionSet);\n }\n const children = container.children;\n if (children.length) {\n for (let i = 0; i < children.length; i++) {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n for (let i = container.effects.length - 1; i >= 0; i--) {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.pop(effect, container, instructionSet);\n }\n }\n}\n\nexport { buildInstructions, collectAllRenderables };\n//# sourceMappingURL=buildInstructions.mjs.map\n","import { mixHexColors } from './mixHexColors.mjs';\n\n\"use strict\";\nconst WHITE_BGR = 16777215;\nfunction mixColors(localBGRColor, parentBGRColor) {\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR) {\n return localBGRColor + parentBGRColor - WHITE_BGR;\n }\n return mixHexColors(localBGRColor, parentBGRColor, 0.5);\n}\nfunction mixStandardAnd32BitColors(localColorRGB, localAlpha, parentColor) {\n const parentAlpha = (parentColor >> 24 & 255) / 255;\n const globalAlpha = localAlpha * parentAlpha * 255;\n const localBGRColor = ((localColorRGB & 255) << 16) + (localColorRGB & 65280) + (localColorRGB >> 16 & 255);\n const parentBGRColor = parentColor & 16777215;\n let sharedBGRColor;\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR) {\n sharedBGRColor = localBGRColor + parentBGRColor - WHITE_BGR;\n } else {\n sharedBGRColor = mixHexColors(localBGRColor, parentBGRColor, 0.5);\n }\n return sharedBGRColor + (globalAlpha << 24);\n}\n\nexport { mixColors, mixStandardAnd32BitColors };\n//# sourceMappingURL=mixColors.mjs.map\n","\"use strict\";\nfunction mixHexColors(color1, color2, ratio) {\n const r1 = color1 >> 16 & 255;\n const g1 = color1 >> 8 & 255;\n const b1 = color1 & 255;\n const r2 = color2 >> 16 & 255;\n const g2 = color2 >> 8 & 255;\n const b2 = color2 & 255;\n const r = r1 + (r2 - r1) * ratio;\n const g = g1 + (g2 - g1) * ratio;\n const b = b1 + (b2 - b1) * ratio;\n return (r << 16) + (g << 8) + b;\n}\n\nexport { mixHexColors };\n//# sourceMappingURL=mixHexColors.mjs.map\n","import { Container, UPDATE_COLOR, UPDATE_BLEND, UPDATE_VISIBLE } from '../Container.mjs';\nimport { mixColors } from './mixColors.mjs';\n\n\"use strict\";\nconst tempContainer = new Container();\nfunction updateRenderGroupTransforms(renderGroup, updateChildRenderGroups = false) {\n updateRenderGroupTransform(renderGroup);\n const childrenToUpdate = renderGroup.childrenToUpdate;\n const updateTick = renderGroup.updateTick;\n renderGroup.updateTick++;\n for (const j in childrenToUpdate) {\n const childrenAtDepth = childrenToUpdate[j];\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n for (let i = 0; i < index; i++) {\n updateTransformAndChildren(list[i], updateTick, 0);\n }\n childrenAtDepth.index = 0;\n }\n if (updateChildRenderGroups) {\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n updateRenderGroupTransforms(renderGroup.renderGroupChildren[i], updateChildRenderGroups);\n }\n }\n}\nfunction updateRenderGroupTransform(renderGroup) {\n const root = renderGroup.root;\n let worldAlpha;\n if (renderGroup.renderGroupParent) {\n const renderGroupParent = renderGroup.renderGroupParent;\n renderGroup.worldTransform.appendFrom(\n root.relativeGroupTransform,\n renderGroupParent.worldTransform\n );\n renderGroup.worldColor = mixColors(\n root.groupColor,\n renderGroupParent.worldColor\n );\n worldAlpha = root.groupAlpha * renderGroupParent.worldAlpha;\n } else {\n renderGroup.worldTransform.copyFrom(root.localTransform);\n renderGroup.worldColor = root.localColor;\n worldAlpha = root.localAlpha;\n }\n worldAlpha = worldAlpha < 0 ? 0 : worldAlpha > 1 ? 1 : worldAlpha;\n renderGroup.worldAlpha = worldAlpha;\n renderGroup.worldColorAlpha = renderGroup.worldColor + ((worldAlpha * 255 | 0) << 24);\n}\nfunction updateTransformAndChildren(container, updateTick, updateFlags) {\n if (updateTick === container.updateTick)\n return;\n container.updateTick = updateTick;\n container.didChange = false;\n const localTransform = container.localTransform;\n container.updateLocalTransform();\n const parent = container.parent;\n if (parent && !parent.isRenderGroupRoot) {\n updateFlags = updateFlags | container._updateFlags;\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform\n );\n if (updateFlags) {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n } else {\n updateFlags = container._updateFlags;\n container.relativeGroupTransform.copyFrom(localTransform);\n if (updateFlags) {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n if (!container.isRenderGroupRoot) {\n const children = container.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n updateTransformAndChildren(children[i], updateTick, updateFlags);\n }\n const renderGroup = container.renderGroup;\n if (container.renderPipeId && !renderGroup.structureDidChange) {\n renderGroup.updateRenderable(container);\n }\n }\n}\nfunction updateColorBlendVisibility(container, parent, updateFlags) {\n if (updateFlags & UPDATE_COLOR) {\n container.groupColor = mixColors(\n container.localColor,\n parent.groupColor\n );\n let groupAlpha = container.localAlpha * parent.groupAlpha;\n groupAlpha = groupAlpha < 0 ? 0 : groupAlpha > 1 ? 1 : groupAlpha;\n container.groupAlpha = groupAlpha;\n container.groupColorAlpha = container.groupColor + ((groupAlpha * 255 | 0) << 24);\n }\n if (updateFlags & UPDATE_BLEND) {\n container.groupBlendMode = container.localBlendMode === \"inherit\" ? parent.groupBlendMode : container.localBlendMode;\n }\n if (updateFlags & UPDATE_VISIBLE) {\n container.globalDisplayStatus = container.localDisplayStatus & parent.globalDisplayStatus;\n }\n container._updateFlags = 0;\n}\n\nexport { updateRenderGroupTransform, updateRenderGroupTransforms, updateTransformAndChildren };\n//# sourceMappingURL=updateRenderGroupTransforms.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { buildInstructions } from './utils/buildInstructions.mjs';\nimport { collectRenderGroups } from './utils/collectRenderGroups.mjs';\nimport { executeInstructions } from './utils/executeInstructions.mjs';\nimport { updateRenderGroupTransforms } from './utils/updateRenderGroupTransforms.mjs';\nimport { validateRenderables } from './utils/validateRenderables.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nclass RenderGroupSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n render({ container, transform }) {\n container.isRenderGroup = true;\n const parent = container.parent;\n const renderGroupParent = container.renderGroup.renderGroupParent;\n container.parent = null;\n container.renderGroup.renderGroupParent = null;\n const renderer = this._renderer;\n const renderGroups = collectRenderGroups(container.renderGroup, []);\n let originalLocalTransform = tempMatrix;\n if (transform) {\n originalLocalTransform = originalLocalTransform.copyFrom(container.renderGroup.localTransform);\n container.renderGroup.localTransform.copyFrom(transform);\n }\n const renderPipes = renderer.renderPipes;\n for (let i = 0; i < renderGroups.length; i++) {\n const renderGroup = renderGroups[i];\n renderGroup.runOnRender();\n renderGroup.instructionSet.renderPipes = renderPipes;\n if (!renderGroup.structureDidChange) {\n validateRenderables(renderGroup, renderPipes);\n }\n updateRenderGroupTransforms(renderGroup);\n if (renderGroup.structureDidChange) {\n renderGroup.structureDidChange = false;\n buildInstructions(renderGroup, renderPipes);\n } else {\n updateRenderables(renderGroup);\n }\n renderGroup.childrenRenderablesToUpdate.index = 0;\n renderer.renderPipes.batch.upload(renderGroup.instructionSet);\n }\n renderer.globalUniforms.start({\n worldTransformMatrix: transform ? container.renderGroup.localTransform : container.renderGroup.worldTransform,\n worldColor: container.renderGroup.worldColorAlpha\n });\n executeInstructions(container.renderGroup, renderPipes);\n if (renderPipes.uniformBatch) {\n renderPipes.uniformBatch.renderEnd();\n }\n if (transform) {\n container.renderGroup.localTransform.copyFrom(originalLocalTransform);\n }\n container.parent = parent;\n container.renderGroup.renderGroupParent = renderGroupParent;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nRenderGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderGroup\"\n};\nfunction updateRenderables(renderGroup) {\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n for (let i = 0; i < index; i++) {\n const container = list[i];\n if (container.didViewUpdate) {\n renderGroup.updateRenderable(container);\n }\n }\n}\n\nexport { RenderGroupSystem };\n//# sourceMappingURL=RenderGroupSystem.mjs.map\n","\"use strict\";\nfunction collectRenderGroups(renderGroup, out = []) {\n out.push(renderGroup);\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n collectRenderGroups(renderGroup.renderGroupChildren[i], out);\n }\n return out;\n}\n\nexport { collectRenderGroups };\n//# sourceMappingURL=collectRenderGroups.mjs.map\n","\"use strict\";\nfunction validateRenderables(renderGroup, renderPipes) {\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n let rebuildRequired = false;\n for (let i = 0; i < index; i++) {\n const container = list[i];\n const renderable = container;\n const pipe = renderPipes[renderable.renderPipeId];\n rebuildRequired = pipe.validateRenderable(container);\n if (rebuildRequired) {\n break;\n }\n }\n renderGroup.structureDidChange = rebuildRequired;\n return rebuildRequired;\n}\n\nexport { validateRenderables };\n//# sourceMappingURL=validateRenderables.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from './BatchableSprite.mjs';\n\n\"use strict\";\nclass SpritePipe {\n constructor(renderer) {\n this._gpuSpriteHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n addRenderable(sprite, _instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n if (gpuSprite.texture._source !== texture._source) {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n return false;\n }\n destroyRenderable(sprite) {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n BigPool.return(batchableSprite);\n this._gpuSpriteHash[sprite.uid] = null;\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n sprite._didSpriteUpdate = false;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableSprite = BigPool.get(BatchableSprite);\n batchableSprite.renderable = sprite;\n batchableSprite.texture = sprite._texture;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n this._gpuSpriteHash[sprite.uid] = batchableSprite;\n sprite._didSpriteUpdate = false;\n sprite.on(\"destroyed\", () => {\n this.destroyRenderable(sprite);\n });\n return batchableSprite;\n }\n destroy() {\n for (const i in this._gpuSpriteHash) {\n BigPool.return(this._gpuSpriteHash[i]);\n }\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"sprite\"\n};\n\nexport { SpritePipe };\n//# sourceMappingURL=SpritePipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { BatchGeometry } from '../gpu/BatchGeometry.mjs';\nimport { Batcher } from './Batcher.mjs';\n\n\"use strict\";\nclass BatcherPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n this._batches = /* @__PURE__ */ Object.create(null);\n this._geometries = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init(this);\n }\n buildStart(instructionSet) {\n if (!this._batches[instructionSet.uid]) {\n const batcher = new Batcher();\n this._batches[instructionSet.uid] = batcher;\n this._geometries[batcher.uid] = new BatchGeometry();\n }\n this._activeBatch = this._batches[instructionSet.uid];\n this._activeGeometry = this._geometries[this._activeBatch.uid];\n this._activeBatch.begin();\n }\n addToBatch(batchableObject) {\n this._activeBatch.add(batchableObject);\n }\n break(instructionSet) {\n this._activeBatch.break(instructionSet);\n }\n buildEnd(instructionSet) {\n const activeBatch = this._activeBatch;\n const geometry = this._activeGeometry;\n activeBatch.finish(instructionSet);\n geometry.indexBuffer.setDataWithSize(activeBatch.indexBuffer, activeBatch.indexSize, true);\n geometry.buffers[0].setDataWithSize(activeBatch.attributeBuffer.float32View, activeBatch.attributeSize, false);\n }\n upload(instructionSet) {\n const batcher = this._batches[instructionSet.uid];\n const geometry = this._geometries[batcher.uid];\n if (batcher.dirty) {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n execute(batch) {\n if (batch.action === \"startBatch\") {\n const batcher = batch.batcher;\n const geometry = this._geometries[batcher.uid];\n this._adaptor.start(this, geometry);\n }\n this._adaptor.execute(this, batch);\n }\n destroy() {\n this.state = null;\n this.renderer = null;\n this._adaptor.destroy();\n this._adaptor = null;\n for (const i in this._batches) {\n this._batches[i].destroy();\n }\n this._batches = null;\n for (const i in this._geometries) {\n this._geometries[i].destroy();\n }\n this._geometries = null;\n }\n}\n/** @ignore */\nBatcherPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"batch\"\n};\n\nexport { BatcherPipe };\n//# sourceMappingURL=BatcherPipe.mjs.map\n","var source = \"struct GlobalFilterUniforms {\\n uInputSize:vec4<f32>,\\n uInputPixel:vec4<f32>,\\n uInputClamp:vec4<f32>,\\n uOutputFrame:vec4<f32>,\\n uGlobalFrame:vec4<f32>,\\n uOutputTexture:vec4<f32>, \\n};\\n\\nstruct MaskUniforms {\\n uFilterMatrix:mat3x3<f32>,\\n uMaskClamp:vec4<f32>,\\n uAlpha:f32,\\n};\\n\\n\\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\\n@group(0) @binding(2) var uSampler : sampler;\\n\\n@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;\\n@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;\\n\\nstruct VSOutput {\\n @builtin(position) position: vec4<f32>,\\n @location(0) uv : vec2<f32>,\\n @location(1) filterUv : vec2<f32>,\\n };\\n\\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\\n{\\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\\n\\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\\n\\n return vec4(position, 0.0, 1.0);\\n}\\n\\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\\n}\\n\\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \\n}\\n\\nfn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\\n}\\n\\nfn getSize() -> vec2<f32>\\n{\\n\\n \\n return gfu.uGlobalFrame.zw;\\n}\\n \\n@vertex\\nfn mainVertex(\\n @location(0) aPosition : vec2<f32>, \\n) -> VSOutput {\\n return VSOutput(\\n filterVertexPosition(aPosition),\\n filterTextureCoord(aPosition),\\n getFilterCoord(aPosition)\\n );\\n}\\n\\n@fragment\\nfn mainFragment(\\n @location(0) uv: vec2<f32>,\\n @location(1) filterUv: vec2<f32>,\\n @builtin(position) position: vec4<f32>\\n) -> @location(0) vec4<f32> {\\n\\n var maskClamp = filterUniforms.uMaskClamp;\\n\\n var clip = step(3.5,\\n step(maskClamp.x, filterUv.x) +\\n step(maskClamp.y, filterUv.y) +\\n step(filterUv.x, maskClamp.z) +\\n step(filterUv.y, maskClamp.w));\\n\\n var mask = textureSample(uMaskTexture, uSampler, filterUv);\\n var source = textureSample(uTexture, uSampler, uv);\\n \\n var npmAlpha = 0.0;\\n\\n var alphaMul = 1.0 - npmAlpha * (1.0 - mask.a);\\n\\n var a = (alphaMul * mask.r) * clip;\\n\\n return vec4(source.rgb, source.a) * a;\\n}\";\n\nexport { source as default };\n//# sourceMappingURL=mask.wgsl.mjs.map\n","import { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { GlProgram } from '../../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { TextureMatrix } from '../../rendering/renderers/shared/texture/TextureMatrix.mjs';\nimport { Filter } from '../Filter.mjs';\nimport fragment from './mask.frag.mjs';\nimport vertex from './mask.vert.mjs';\nimport source from './mask.wgsl.mjs';\n\n\"use strict\";\nclass MaskFilter extends Filter {\n constructor(options) {\n const { sprite, ...rest } = options;\n const textureMatrix = new TextureMatrix(sprite.texture);\n const filterUniforms = new UniformGroup({\n uFilterMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uMaskClamp: { value: textureMatrix.uClampFrame, type: \"vec4<f32>\" },\n uAlpha: { value: 1, type: \"f32\" }\n });\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: \"mainVertex\"\n },\n fragment: {\n source,\n entryPoint: \"mainFragment\"\n }\n });\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: \"mask-filter\"\n });\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source\n }\n });\n this.sprite = sprite;\n this._textureMatrix = textureMatrix;\n }\n apply(filterManager, input, output, clearMode) {\n this._textureMatrix.texture = this.sprite.texture;\n filterManager.calculateSpriteMatrix(\n this.resources.filterUniforms.uniforms.uFilterMatrix,\n this.sprite\n ).prepend(this._textureMatrix.mapCoord);\n this.resources.uMaskTexture = this.sprite.texture.source;\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n\nexport { MaskFilter };\n//# sourceMappingURL=MaskFilter.mjs.map\n","var vertex = \"in vec2 aPosition;\\n\\nout vec2 vTextureCoord;\\nout vec2 vMaskCoord;\\n\\n\\nuniform vec4 uInputSize;\\nuniform vec4 uOutputFrame;\\nuniform vec4 uOutputTexture;\\nuniform mat3 uFilterMatrix;\\n\\nvec4 filterVertexPosition( vec2 aPosition )\\n{\\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\\n \\n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\\n\\n return vec4(position, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( vec2 aPosition )\\n{\\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\\n}\\n\\nvec2 getFilterCoord( vec2 aPosition )\\n{\\n return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\\n} \\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition(aPosition);\\n vTextureCoord = filterTextureCoord(aPosition);\\n vMaskCoord = getFilterCoord(aPosition);\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=mask.vert.mjs.map\n","var fragment = \"in vec2 vMaskCoord;\\nin vec2 vTextureCoord;\\n\\nuniform sampler2D uTexture;\\nuniform sampler2D uMaskTexture;\\n\\nuniform float uAlpha;\\nuniform vec4 uMaskClamp;\\n\\nout vec4 finalColor;\\n\\nvoid main(void)\\n{\\n float clip = step(3.5,\\n step(uMaskClamp.x, vMaskCoord.x) +\\n step(uMaskClamp.y, vMaskCoord.y) +\\n step(vMaskCoord.x, uMaskClamp.z) +\\n step(vMaskCoord.y, uMaskClamp.w));\\n\\n // TODO look into why this is needed\\n float npmAlpha = uAlpha; \\n vec4 original = texture(uTexture, vTextureCoord);\\n vec4 masky = texture(uMaskTexture, vMaskCoord);\\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\\n\\n original *= (alphaMul * masky.r * uAlpha * clip);\\n\\n finalColor = original;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mask.frag.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../filters/FilterEffect.mjs';\nimport { MaskFilter } from '../../../filters/mask/MaskFilter.mjs';\nimport { Bounds } from '../../../scene/container/bounds/Bounds.mjs';\nimport { getGlobalBounds } from '../../../scene/container/bounds/getGlobalBounds.mjs';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions.mjs';\nimport { Sprite } from '../../../scene/sprite/Sprite.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { Texture } from '../../renderers/shared/texture/Texture.mjs';\nimport { TexturePool } from '../../renderers/shared/texture/TexturePool.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nclass AlphaMaskEffect extends FilterEffect {\n constructor() {\n super({\n filters: [new MaskFilter({\n sprite: new Sprite(Texture.EMPTY)\n })]\n });\n }\n get sprite() {\n return this.filters[0].sprite;\n }\n set sprite(value) {\n this.filters[0].sprite = value;\n }\n}\nclass AlphaMaskPipe {\n constructor(renderer) {\n this._activeMaskStage = [];\n this._renderer = renderer;\n }\n push(mask, maskedContainer, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"pushMaskBegin\",\n mask,\n canBundle: false,\n maskedContainer\n });\n if (mask.renderMaskToTexture) {\n const maskContainer = mask.mask;\n maskContainer.includeInBuild = true;\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes\n );\n maskContainer.includeInBuild = false;\n }\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"pushMaskEnd\",\n mask,\n maskedContainer,\n canBundle: false\n });\n }\n pop(mask, _maskedContainer, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"popMaskEnd\",\n mask,\n canBundle: false\n });\n }\n execute(instruction) {\n const renderer = this._renderer;\n const renderMask = instruction.mask.renderMaskToTexture;\n if (instruction.action === \"pushMaskBegin\") {\n const filterEffect = BigPool.get(AlphaMaskEffect);\n if (renderMask) {\n instruction.mask.mask.measurable = true;\n const bounds = getGlobalBounds(instruction.mask.mask, true, tempBounds);\n instruction.mask.mask.measurable = false;\n bounds.ceil();\n const filterTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n 1,\n false\n );\n renderer.renderTarget.push(filterTexture, true);\n renderer.globalUniforms.push({\n offset: bounds,\n worldColor: 4294967295\n });\n const sprite = filterEffect.sprite;\n sprite.texture = filterTexture;\n sprite.worldTransform.tx = bounds.minX;\n sprite.worldTransform.ty = bounds.minY;\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer,\n filterTexture\n });\n } else {\n filterEffect.sprite = instruction.mask.mask;\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer\n });\n }\n } else if (instruction.action === \"pushMaskEnd\") {\n const maskData = this._activeMaskStage[this._activeMaskStage.length - 1];\n if (renderMask) {\n renderer.renderTarget.pop();\n renderer.globalUniforms.pop();\n }\n renderer.filter.push({\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n container: maskData.maskedContainer,\n filterEffect: maskData.filterEffect,\n canBundle: false\n });\n } else if (instruction.action === \"popMaskEnd\") {\n renderer.filter.pop();\n const maskData = this._activeMaskStage.pop();\n if (renderMask) {\n TexturePool.returnTexture(maskData.filterTexture);\n }\n BigPool.return(maskData.filterEffect);\n }\n }\n destroy() {\n this._renderer = null;\n this._activeMaskStage = null;\n }\n}\n/** @ignore */\nAlphaMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"alphaMask\"\n};\n\nexport { AlphaMaskPipe };\n//# sourceMappingURL=AlphaMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ColorMaskPipe {\n constructor(renderer) {\n this._colorStack = [];\n this._colorStackIndex = 0;\n this._currentColor = 0;\n this._renderer = renderer;\n }\n buildStart() {\n this._colorStack[0] = 15;\n this._colorStackIndex = 1;\n this._currentColor = 15;\n }\n push(mask, _container, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n const colorStack = this._colorStack;\n colorStack[this._colorStackIndex] = colorStack[this._colorStackIndex - 1] & mask.mask;\n const currentColor = this._colorStack[this._colorStackIndex];\n if (currentColor !== this._currentColor) {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: \"colorMask\",\n colorMask: currentColor,\n canBundle: false\n });\n }\n this._colorStackIndex++;\n }\n pop(_mask, _container, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n const colorStack = this._colorStack;\n this._colorStackIndex--;\n const currentColor = colorStack[this._colorStackIndex - 1];\n if (currentColor !== this._currentColor) {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: \"colorMask\",\n colorMask: currentColor,\n canBundle: false\n });\n }\n }\n execute(instruction) {\n const renderer = this._renderer;\n renderer.colorMask.setMask(instruction.colorMask);\n }\n destroy() {\n this._colorStack = null;\n }\n}\n/** @ignore */\nColorMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"colorMask\"\n};\n\nexport { ColorMaskPipe };\n//# sourceMappingURL=ColorMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions.mjs';\nimport { CLEAR } from '../../renderers/gl/const.mjs';\nimport { STENCIL_MODES } from '../../renderers/shared/state/const.mjs';\n\n\"use strict\";\nclass StencilMaskPipe {\n constructor(renderer) {\n // used when building and also when executing..\n this._maskStackHash = {};\n this._maskHash = /* @__PURE__ */ new WeakMap();\n this._renderer = renderer;\n }\n push(mask, _container, instructionSet) {\n var _a;\n const effect = mask;\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n renderer.renderPipes.blendMode.setBlendMode(effect.mask, \"none\", instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskBegin\",\n mask,\n canBundle: false\n });\n const maskContainer = effect.mask;\n maskContainer.includeInBuild = true;\n if (!this._maskHash.has(effect)) {\n this._maskHash.set(effect, {\n instructionsStart: 0,\n instructionsLength: 0\n });\n }\n const maskData = this._maskHash.get(effect);\n maskData.instructionsStart = instructionSet.instructionSize;\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes\n );\n maskContainer.includeInBuild = false;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskEnd\",\n mask,\n canBundle: false\n });\n const instructionsLength = instructionSet.instructionSize - maskData.instructionsStart - 1;\n maskData.instructionsLength = instructionsLength;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n }\n pop(mask, _container, instructionSet) {\n const effect = mask;\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n renderer.renderPipes.blendMode.setBlendMode(effect.mask, \"none\", instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"popMaskBegin\",\n canBundle: false\n });\n const maskData = this._maskHash.get(mask);\n for (let i = 0; i < maskData.instructionsLength; i++) {\n instructionSet.instructions[instructionSet.instructionSize++] = instructionSet.instructions[maskData.instructionsStart++];\n }\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"popMaskEnd\",\n canBundle: false\n });\n }\n execute(instruction) {\n var _a;\n const renderer = this._renderer;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n let maskStackIndex = (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n if (instruction.action === \"pushMaskBegin\") {\n renderer.renderTarget.ensureDepthStencil();\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD, maskStackIndex);\n maskStackIndex++;\n renderer.colorMask.setMask(0);\n } else if (instruction.action === \"pushMaskEnd\") {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n renderer.colorMask.setMask(15);\n } else if (instruction.action === \"popMaskBegin\") {\n renderer.colorMask.setMask(0);\n if (maskStackIndex !== 0) {\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE, maskStackIndex);\n } else {\n renderer.renderTarget.clear(null, CLEAR.STENCIL);\n renderer.stencil.setStencilMode(STENCIL_MODES.DISABLED, maskStackIndex);\n }\n maskStackIndex--;\n } else if (instruction.action === \"popMaskEnd\") {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n renderer.colorMask.setMask(15);\n }\n this._maskStackHash[renderTargetUid] = maskStackIndex;\n }\n destroy() {\n this._renderer = null;\n this._maskStackHash = null;\n this._maskHash = null;\n }\n}\nStencilMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"stencilMask\"\n};\n\nexport { StencilMaskPipe };\n//# sourceMappingURL=StencilMaskPipe.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst _BackgroundSystem = class _BackgroundSystem {\n constructor() {\n this.clearBeforeRender = true;\n this._backgroundColor = new Color(0);\n this.color = this._backgroundColor;\n this.alpha = 1;\n }\n /**\n * initiates the background system\n * @param options - the options for the background colors\n */\n init(options) {\n options = { ..._BackgroundSystem.defaultOptions, ...options };\n this.clearBeforeRender = options.clearBeforeRender;\n this.color = options.background || options.backgroundColor || this._backgroundColor;\n this.alpha = options.backgroundAlpha;\n this._backgroundColor.setAlpha(options.backgroundAlpha);\n }\n /** The background color to fill if not transparent */\n get color() {\n return this._backgroundColor;\n }\n set color(value) {\n this._backgroundColor.setValue(value);\n }\n /** The background color alpha. Setting this to 0 will make the canvas transparent. */\n get alpha() {\n return this._backgroundColor.alpha;\n }\n set alpha(value) {\n this._backgroundColor.setAlpha(value);\n }\n /** The background color as an [R, G, B, A] array. */\n get colorRgba() {\n return this._backgroundColor.toArray();\n }\n /**\n * destroys the background system\n * @internal\n * @ignore\n */\n destroy() {\n }\n};\n/** @ignore */\n_BackgroundSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"background\",\n priority: 0\n};\n/** default options used by the system */\n_BackgroundSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.backgroundAlpha}\n * @default 1\n */\n backgroundAlpha: 1,\n /**\n * {@link WebGLOptions.backgroundColor}\n * @default 0x000000\n */\n backgroundColor: 0,\n /**\n * {@link WebGLOptions.clearBeforeRender}\n * @default true\n */\n clearBeforeRender: true\n};\nlet BackgroundSystem = _BackgroundSystem;\n\nexport { BackgroundSystem };\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { extensions, ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../../filters/FilterEffect.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst BLEND_MODE_FILTERS = {};\nextensions.handle(ExtensionType.BlendMode, (value) => {\n if (!value.name) {\n throw new Error(\"BlendMode extension must have a name property\");\n }\n BLEND_MODE_FILTERS[value.name] = value.ref;\n}, (value) => {\n delete BLEND_MODE_FILTERS[value.name];\n});\nclass BlendModePipe {\n constructor(renderer) {\n this._isAdvanced = false;\n this._filterHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n /**\n * This ensures that a blendMode switch is added to the instruction set if the blend mode has changed.\n * @param renderable - The renderable we are adding to the instruction set\n * @param blendMode - The blend mode of the renderable\n * @param instructionSet - The instruction set we are adding to\n */\n setBlendMode(renderable, blendMode, instructionSet) {\n if (this._activeBlendMode === blendMode) {\n if (this._isAdvanced)\n this._renderableList.push(renderable);\n return;\n }\n this._activeBlendMode = blendMode;\n if (this._isAdvanced) {\n this._endAdvancedBlendMode(instructionSet);\n }\n this._isAdvanced = !!BLEND_MODE_FILTERS[blendMode];\n if (this._isAdvanced) {\n this._beginAdvancedBlendMode(instructionSet);\n this._renderableList.push(renderable);\n }\n }\n _beginAdvancedBlendMode(instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n const blendMode = this._activeBlendMode;\n if (!BLEND_MODE_FILTERS[blendMode]) {\n warn(`Unable to assign BlendMode: '${blendMode}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);\n return;\n }\n if (!this._filterHash[blendMode]) {\n this._filterHash[blendMode] = new FilterEffect({\n filters: [new BLEND_MODE_FILTERS[blendMode]()]\n });\n }\n const instruction = {\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n renderables: [],\n filterEffect: this._filterHash[blendMode],\n canBundle: false\n };\n this._renderableList = instruction.renderables;\n instructionSet.add(instruction);\n }\n _endAdvancedBlendMode(instructionSet) {\n this._renderableList = null;\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n action: \"popFilter\",\n canBundle: false\n });\n }\n /**\n * called when the instruction build process is starting this will reset internally to the default blend mode\n * @internal\n * @ignore\n */\n buildStart() {\n this._isAdvanced = false;\n }\n /**\n * called when the instruction build process is finished, ensuring that if there is an advanced blend mode\n * active, we add the final render instructions added to the instruction set\n * @param instructionSet - The instruction set we are adding to\n * @internal\n * @ignore\n */\n buildEnd(instructionSet) {\n if (this._isAdvanced) {\n this._endAdvancedBlendMode(instructionSet);\n }\n }\n /**\n * @internal\n * @ignore\n */\n destroy() {\n this._renderer = null;\n this._renderableList = null;\n for (const i in this._filterHash) {\n this._filterHash[i].destroy();\n }\n this._filterHash = null;\n }\n}\n/** @ignore */\nBlendModePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"blendMode\"\n};\n\nexport { BlendModePipe };\n//# sourceMappingURL=BlendModePipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Container } from '../../../../scene/container/Container.mjs';\nimport { Texture } from '../texture/Texture.mjs';\n\n\"use strict\";\nconst imageTypes = {\n png: \"image/png\",\n jpg: \"image/jpeg\",\n webp: \"image/webp\"\n};\nconst _ExtractSystem = class _ExtractSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n }\n _normalizeOptions(options, defaults = {}) {\n if (options instanceof Container || options instanceof Texture) {\n return {\n target: options,\n ...defaults\n };\n }\n return {\n ...defaults,\n ...options\n };\n }\n /**\n * Will return a HTML Image of the target\n * @param options - The options for creating the image, or the target to extract\n * @returns - HTML Image of the target\n */\n async image(options) {\n const image = new Image();\n image.src = await this.base64(options);\n return image;\n }\n /**\n * Will return a base64 encoded string of this target. It works by calling\n * `Extract.canvas` and then running toDataURL on that.\n * @param options - The options for creating the image, or the target to extract\n */\n async base64(options) {\n options = this._normalizeOptions(\n options,\n _ExtractSystem.defaultImageOptions\n );\n const { format, quality } = options;\n const canvas = this.canvas(options);\n if (canvas.toBlob !== void 0) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error(\"ICanvas.toBlob failed!\"));\n return;\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }, imageTypes[format], quality);\n });\n }\n if (canvas.toDataURL !== void 0) {\n return canvas.toDataURL(imageTypes[format], quality);\n }\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: imageTypes[format], quality });\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented\");\n }\n /**\n * Creates a Canvas element, renders this target to it and then returns it.\n * @param options - The options for creating the canvas, or the target to extract\n * @returns - A Canvas element with the texture rendered on.\n */\n canvas(options) {\n options = this._normalizeOptions(options);\n const target = options.target;\n const renderer = this._renderer;\n if (target instanceof Texture) {\n return renderer.texture.generateCanvas(target);\n }\n const texture = renderer.textureGenerator.generateTexture(options);\n const canvas = renderer.texture.generateCanvas(texture);\n texture.destroy();\n return canvas;\n }\n /**\n * Will return a one-dimensional array containing the pixel data of the entire texture in RGBA\n * order, with integer values between 0 and 255 (included).\n * @param options - The options for extracting the image, or the target to extract\n * @returns - One-dimensional array containing the pixel data of the entire texture\n */\n pixels(options) {\n options = this._normalizeOptions(options);\n const target = options.target;\n const renderer = this._renderer;\n const texture = target instanceof Texture ? target : renderer.textureGenerator.generateTexture(options);\n const pixelInfo = renderer.texture.getPixels(texture);\n if (target instanceof Container) {\n texture.destroy();\n }\n return pixelInfo;\n }\n /**\n * Will return a texture of the target\n * @param options - The options for creating the texture, or the target to extract\n * @returns - A texture of the target\n */\n texture(options) {\n options = this._normalizeOptions(options);\n if (options.target instanceof Texture)\n return options.target;\n return this._renderer.textureGenerator.generateTexture(options);\n }\n /**\n * Will extract a HTMLImage of the target and download it\n * @param options - The options for downloading and extracting the image, or the target to extract\n */\n download(options) {\n options = this._normalizeOptions(options);\n const canvas = this.canvas(options);\n const link = document.createElement(\"a\");\n link.download = options.filename ?? \"image.png\";\n link.href = canvas.toDataURL(\"image/png\");\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n /**\n * Logs the target to the console as an image. This is a useful way to debug what's happening in the renderer.\n * @param options - The options for logging the image, or the target to log\n */\n log(options) {\n const width = options.width ?? 200;\n options = this._normalizeOptions(options);\n const canvas = this.canvas(options);\n const base64 = canvas.toDataURL();\n console.log(`[Pixi Texture] ${canvas.width}px ${canvas.height}px`);\n const style = [\n \"font-size: 1px;\",\n `padding: ${width}px ${300}px;`,\n `background: url(${base64}) no-repeat;`,\n \"background-size: contain;\"\n ].join(\" \");\n console.log(\"%c \", style);\n }\n destroy() {\n this._renderer = null;\n }\n};\n/** @ignore */\n_ExtractSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"extract\"\n};\n/** Default options for creating an image. */\n_ExtractSystem.defaultImageOptions = {\n /** The format of the image. */\n format: \"png\",\n /** The quality of the image. */\n quality: 1\n};\nlet ExtractSystem = _ExtractSystem;\n\nexport { ExtractSystem };\n//# sourceMappingURL=ExtractSystem.mjs.map\n","import { TextureSource } from './sources/TextureSource.mjs';\nimport { Texture } from './Texture.mjs';\n\n\"use strict\";\nclass RenderTexture extends Texture {\n static create(options) {\n return new Texture({\n source: new TextureSource(options)\n });\n }\n /**\n * Resizes the render texture.\n * @param width - The new width of the render texture.\n * @param height - The new height of the render texture.\n * @param resolution - The new resolution of the render texture.\n * @returns This texture.\n */\n resize(width, height, resolution) {\n this.source.resize(width, height, resolution);\n return this;\n }\n}\n\nexport { RenderTexture };\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds.mjs';\nimport { getLocalBounds } from '../../../../scene/container/bounds/getLocalBounds.mjs';\nimport { Container } from '../../../../scene/container/Container.mjs';\nimport { RenderTexture } from '../texture/RenderTexture.mjs';\n\n\"use strict\";\nconst tempRect = new Rectangle();\nconst tempBounds = new Bounds();\nconst noColor = [0, 0, 0, 0];\nclass GenerateTextureSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * A Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your container is complicated and needs to be reused multiple times.\n * @param {GenerateTextureOptions | Container} options - Generate texture options.\n * @param {Container} [options.container] - If not given, the renderer's resolution is used.\n * @param {Rectangle} options.region - The region of the container, that shall be rendered,\n * @param {number} [options.resolution] - The resolution of the texture being generated.\n * if no region is specified, defaults to the local bounds of the container.\n * @param {GenerateTextureSourceOptions} [options.textureSourceOptions] - Texture options for GPU.\n * @returns a shiny new texture of the container passed in\n */\n generateTexture(options) {\n if (options instanceof Container) {\n options = {\n target: options,\n frame: void 0,\n textureSourceOptions: {},\n resolution: void 0\n };\n }\n const resolution = options.resolution || this._renderer.resolution;\n const antialias = options.antialias || this._renderer.view.antialias;\n const container = options.target;\n let clearColor = options.clearColor;\n if (clearColor) {\n const isRGBAArray = Array.isArray(clearColor) && clearColor.length === 4;\n clearColor = isRGBAArray ? clearColor : Color.shared.setValue(clearColor).toArray();\n } else {\n clearColor = noColor;\n }\n const region = options.frame?.copyTo(tempRect) || getLocalBounds(container, tempBounds).rectangle;\n region.width = Math.max(region.width, 1 / resolution) | 0;\n region.height = Math.max(region.height, 1 / resolution) | 0;\n const target = RenderTexture.create({\n ...options.textureSourceOptions,\n width: region.width,\n height: region.height,\n resolution,\n antialias\n });\n const transform = Matrix.shared.translate(-region.x, -region.y);\n this._renderer.render({\n container,\n transform,\n target,\n clearColor\n });\n return target;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"textureGenerator\"\n};\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Point } from '../../../../maths/point/Point.mjs';\nimport { color32BitToUniform } from '../../../../scene/graphics/gpu/colorToUniform.mjs';\nimport { BindGroup } from '../../gpu/shader/BindGroup.mjs';\nimport { RendererType } from '../../types.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GlobalUniformSystem {\n constructor(renderer) {\n this._stackIndex = 0;\n this._globalUniformDataStack = [];\n this._uniformsPool = [];\n this._activeUniforms = [];\n this._bindGroupPool = [];\n this._activeBindGroups = [];\n this._renderer = renderer;\n }\n reset() {\n this._stackIndex = 0;\n for (let i = 0; i < this._activeUniforms.length; i++) {\n this._uniformsPool.push(this._activeUniforms[i]);\n }\n for (let i = 0; i < this._activeBindGroups.length; i++) {\n this._bindGroupPool.push(this._activeBindGroups[i]);\n }\n this._activeUniforms.length = 0;\n this._activeBindGroups.length = 0;\n }\n start(options) {\n this.reset();\n this.push(options);\n }\n bind({\n size,\n projectionMatrix,\n worldTransformMatrix,\n worldColor,\n offset\n }) {\n const renderTarget = this._renderer.renderTarget.renderTarget;\n const currentGlobalUniformData = this._stackIndex ? this._globalUniformDataStack[this._stackIndex - 1] : {\n projectionData: renderTarget,\n worldTransformMatrix: new Matrix(),\n worldColor: 4294967295,\n offset: new Point()\n };\n const globalUniformData = {\n projectionMatrix: projectionMatrix || this._renderer.renderTarget.projectionMatrix,\n resolution: size || renderTarget.size,\n worldTransformMatrix: worldTransformMatrix || currentGlobalUniformData.worldTransformMatrix,\n worldColor: worldColor || currentGlobalUniformData.worldColor,\n offset: offset || currentGlobalUniformData.offset,\n bindGroup: null\n };\n const uniformGroup = this._uniformsPool.pop() || this._createUniforms();\n this._activeUniforms.push(uniformGroup);\n const uniforms = uniformGroup.uniforms;\n uniforms.uProjectionMatrix = globalUniformData.projectionMatrix;\n uniforms.uResolution = globalUniformData.resolution;\n uniforms.uWorldTransformMatrix.copyFrom(globalUniformData.worldTransformMatrix);\n uniforms.uWorldTransformMatrix.tx -= globalUniformData.offset.x;\n uniforms.uWorldTransformMatrix.ty -= globalUniformData.offset.y;\n color32BitToUniform(\n globalUniformData.worldColor,\n uniforms.uWorldColorAlpha,\n 0\n );\n uniformGroup.update();\n let bindGroup;\n if (this._renderer.renderPipes.uniformBatch) {\n bindGroup = this._renderer.renderPipes.uniformBatch.getUniformBindGroup(uniformGroup, false);\n } else {\n bindGroup = this._bindGroupPool.pop() || new BindGroup();\n this._activeBindGroups.push(bindGroup);\n bindGroup.setResource(uniformGroup, 0);\n }\n globalUniformData.bindGroup = bindGroup;\n this._currentGlobalUniformData = globalUniformData;\n }\n push(options) {\n this.bind(options);\n this._globalUniformDataStack[this._stackIndex++] = this._currentGlobalUniformData;\n }\n pop() {\n this._currentGlobalUniformData = this._globalUniformDataStack[--this._stackIndex - 1];\n if (this._renderer.type === RendererType.WEBGL) {\n this._currentGlobalUniformData.bindGroup.resources[0].update();\n }\n }\n get bindGroup() {\n return this._currentGlobalUniformData.bindGroup;\n }\n get uniformGroup() {\n return this._currentGlobalUniformData.bindGroup.resources[0];\n }\n _createUniforms() {\n const globalUniforms = new UniformGroup({\n uProjectionMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uWorldTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n // TODO - someone smart - set this to be a unorm8x4 rather than a vec4<f32>\n uWorldColorAlpha: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uResolution: { value: [0, 0], type: \"vec2<f32>\" }\n }, {\n isStatic: true\n });\n return globalUniforms;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGlobalUniformSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"globalUniforms\"\n};\n\nexport { GlobalUniformSystem };\n//# sourceMappingURL=GlobalUniformSystem.mjs.map\n","import { DOMAdapter } from '../environment/adapter.mjs';\n\n\"use strict\";\nlet saidHello = false;\nconst VERSION = \"8.1.1\";\nfunction sayHello(type) {\n if (saidHello) {\n return;\n }\n if (DOMAdapter.get().getNavigator().userAgent.toLowerCase().indexOf(\"chrome\") > -1) {\n const args = [\n `%c %c %c %c %c PixiJS %c v${VERSION} (${type}) http://www.pixijs.com/\n\n`,\n \"background: #E72264; padding:5px 0;\",\n \"background: #6CA2EA; padding:5px 0;\",\n \"background: #B5D33D; padding:5px 0;\",\n \"background: #FED23F; padding:5px 0;\",\n \"color: #FFFFFF; background: #E72264; padding:5px 0;\",\n \"color: #E72264; background: #FFFFFF; padding:5px 0;\"\n ];\n globalThis.console.log(...args);\n } else if (globalThis.console) {\n globalThis.console.log(`PixiJS ${VERSION} - ${type} - http://www.pixijs.com/`);\n }\n saidHello = true;\n}\n\nexport { VERSION, sayHello };\n//# sourceMappingURL=sayHello.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { sayHello } from '../../../../utils/sayHello.mjs';\nimport { RendererType } from '../../types.mjs';\n\n\"use strict\";\nclass HelloSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * It all starts here! This initiates every system, passing in the options for any system by name.\n * @param options - the config for the renderer and all its systems\n */\n init(options) {\n if (options.hello) {\n let name = this._renderer.name;\n if (this._renderer.type === RendererType.WEBGL) {\n name += ` ${this._renderer.context.webGLVersion}`;\n }\n sayHello(name);\n }\n }\n}\n/** @ignore */\nHelloSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"hello\",\n priority: -2\n};\n/** The default options for the system. */\nHelloSystem.defaultOptions = {\n /** {@link WebGLOptions.hello} */\n hello: false\n};\n\nexport { HelloSystem };\n//# sourceMappingURL=HelloSystem.mjs.map\n","import { ExtensionType, extensions } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst _TextureGCSystem = class _TextureGCSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this.count = 0;\n this.checkCount = 0;\n }\n init(options) {\n options = { ..._TextureGCSystem.defaultOptions, ...options };\n this.checkCountMax = options.textureGCCheckCountMax;\n this.maxIdle = options.textureGCAMaxIdle;\n this.active = options.textureGCActive;\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n postrender() {\n if (!this._renderer.renderingToScreen) {\n return;\n }\n this.count++;\n if (!this.active)\n return;\n this.checkCount++;\n if (this.checkCount > this.checkCountMax) {\n this.checkCount = 0;\n this.run();\n }\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n run() {\n const managedTextures = this._renderer.texture.managedTextures;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n if (texture.autoGarbageCollect && texture.resource && texture._touched > -1 && this.count - texture._touched > this.maxIdle) {\n texture._touched = -1;\n texture.unload();\n }\n }\n }\n destroy() {\n this._renderer = null;\n }\n};\n/** @ignore */\n_TextureGCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"textureGC\"\n};\n/** default options for the TextureGCSystem */\n_TextureGCSystem.defaultOptions = {\n /**\n * If set to true, this will enable the garbage collector on the GPU.\n * @default true\n */\n textureGCActive: true,\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n */\n textureGCAMaxIdle: 60 * 60,\n /**\n * Frames between two garbage collections.\n * @default 600\n */\n textureGCCheckCountMax: 600\n};\nlet TextureGCSystem = _TextureGCSystem;\nextensions.add(TextureGCSystem);\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { CustomRenderPipe } from '../../../../scene/container/CustomRenderPipe.mjs';\nimport { RenderGroupPipe } from '../../../../scene/container/RenderGroupPipe.mjs';\nimport { RenderGroupSystem } from '../../../../scene/container/RenderGroupSystem.mjs';\nimport { SpritePipe } from '../../../../scene/sprite/SpritePipe.mjs';\nimport { BatcherPipe } from '../../../batcher/shared/BatcherPipe.mjs';\nimport { AlphaMaskPipe } from '../../../mask/alpha/AlphaMaskPipe.mjs';\nimport { ColorMaskPipe } from '../../../mask/color/ColorMaskPipe.mjs';\nimport { StencilMaskPipe } from '../../../mask/stencil/StencilMaskPipe.mjs';\nimport { BackgroundSystem } from '../background/BackgroundSystem.mjs';\nimport { BlendModePipe } from '../blendModes/BlendModePipe.mjs';\nimport { ExtractSystem } from '../extract/ExtractSystem.mjs';\nimport { GenerateTextureSystem } from '../extract/GenerateTextureSystem.mjs';\nimport { GlobalUniformSystem } from '../renderTarget/GlobalUniformSystem.mjs';\nimport { HelloSystem } from '../startup/HelloSystem.mjs';\nimport { TextureGCSystem } from '../texture/TextureGCSystem.mjs';\nimport { ViewSystem } from '../view/ViewSystem.mjs';\n\n\"use strict\";\nconst SharedSystems = [\n BackgroundSystem,\n GlobalUniformSystem,\n HelloSystem,\n ViewSystem,\n RenderGroupSystem,\n TextureGCSystem,\n GenerateTextureSystem,\n ExtractSystem\n];\nconst SharedRenderPipes = [\n BlendModePipe,\n BatcherPipe,\n SpritePipe,\n RenderGroupPipe,\n AlphaMaskPipe,\n StencilMaskPipe,\n ColorMaskPipe,\n CustomRenderPipe\n];\n\nexport { SharedRenderPipes, SharedSystems };\n//# sourceMappingURL=SharedSystems.mjs.map\n"],"names":["a","Map","Object","globalThis","HTMLCanvasElement","document","s","Math","r","t","B","WeakMap","Error","Image","Promise","FileReader","console","Array","u","Float32Array"],"mappings":"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"}
1
+ {"version":3,"file":"static/js/async/631.9799e85f.js","sources":["webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/textureBit.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/CustomRenderPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/executeInstructions.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/buildInstructions.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixColors.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixHexColors.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/collectRenderGroups.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/validateRenderables.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite/SpritePipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.wgsl.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/MaskFilter.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.vert.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.frag.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/sayHello.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs"],"sourcesContent":["\"use strict\";\nconst textureBit = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n `\n ),\n main: (\n /* wgsl */\n `\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n )\n }\n};\nconst textureBitGl = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureMatrix;\n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n\n \n `\n ),\n main: (\n /* glsl */\n `\n outColor = texture(uTexture, vUV);\n `\n )\n }\n};\n\nexport { textureBit, textureBitGl };\n//# sourceMappingURL=textureBit.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nfunction ensureAttributes(geometry, extractedData) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n const attributeData = extractedData[i];\n if (attributeData) {\n attribute.location ?? (attribute.location = attributeData.location);\n attribute.format ?? (attribute.format = attributeData.format);\n attribute.offset ?? (attribute.offset = attributeData.offset);\n attribute.instance ?? (attribute.instance = attributeData.instance);\n } else {\n warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);\n }\n }\n ensureStartAndStride(geometry);\n}\nfunction ensureStartAndStride(geometry) {\n const { buffers, attributes } = geometry;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n const buffer = buffers[j];\n tempStride[buffer.uid] = 0;\n tempStart[buffer.uid] = 0;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n tempStride[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n attribute.stride ?? (attribute.stride = tempStride[attribute.buffer.uid]);\n attribute.start ?? (attribute.start = tempStart[attribute.buffer.uid]);\n tempStart[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n}\n\nexport { ensureAttributes };\n//# sourceMappingURL=ensureAttributes.mjs.map\n","import { STENCIL_MODES } from '../../shared/state/const.mjs';\n\n\"use strict\";\nconst GpuStencilModesToPixi = [];\nGpuStencilModesToPixi[STENCIL_MODES.NONE] = void 0;\nGpuStencilModesToPixi[STENCIL_MODES.DISABLED] = {\n stencilWriteMask: 0,\n stencilReadMask: 0\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE] = {\n stencilWriteMask: 0,\n stencilFront: {\n compare: \"equal\",\n passOp: \"keep\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"keep\"\n }\n};\n\nexport { GpuStencilModesToPixi };\n//# sourceMappingURL=GpuStencilModesToPixi.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { CLEAR } from '../../gl/const.mjs';\nimport { calculateProjection } from '../../gpu/renderTarget/calculateProjection.mjs';\nimport { SystemRunner } from '../system/SystemRunner.mjs';\nimport { CanvasSource } from '../texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../texture/sources/TextureSource.mjs';\nimport { Texture } from '../texture/Texture.mjs';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture.mjs';\nimport { isRenderingToScreen } from './isRenderingToScreen.mjs';\nimport { RenderTarget } from './RenderTarget.mjs';\n\n\"use strict\";\nclass RenderTargetSystem {\n constructor(renderer) {\n /** This is the root viewport for the render pass*/\n this.rootViewPort = new Rectangle();\n /** the current viewport that the gpu is using */\n this.viewport = new Rectangle();\n /**\n * a runner that lets systems know if the active render target has changed.\n * Eg the Stencil System needs to know so it can manage the stencil buffer\n */\n this.onRenderTargetChange = new SystemRunner(\"onRenderTargetChange\");\n /** the projection matrix that is used by the shaders based on the active render target and the viewport */\n this.projectionMatrix = new Matrix();\n /** the default clear color for render targets */\n this.defaultClearColor = [0, 0, 0, 0];\n /**\n * a hash that stores the render target for a given render surface. When you pass in a texture source,\n * a render target is created for it. This map stores and makes it easy to retrieve the render target\n */\n this._renderSurfaceToRenderTargetHash = /* @__PURE__ */ new Map();\n /** A hash that stores a gpu render target for a given render target. */\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n /**\n * A stack that stores the render target and frame that is currently being rendered to.\n * When push is called, the current render target is stored in this stack.\n * When pop is called, the previous render target is restored.\n */\n this._renderTargetStack = [];\n this._renderer = renderer;\n }\n /** called when dev wants to finish a render pass */\n finishRenderPass() {\n this.adaptor.finishRenderPass(this.renderTarget);\n }\n /**\n * called when the renderer starts to render a scene.\n * @param options\n * @param options.target - the render target to render to\n * @param options.clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param options.clearColor - the color to clear to\n * @param options.frame - the frame to render to\n */\n renderStart({\n target,\n clear,\n clearColor,\n frame\n }) {\n this._renderTargetStack.length = 0;\n this.push(\n target,\n clear,\n clearColor,\n frame\n );\n this.rootViewPort.copyFrom(this.viewport);\n this.rootRenderTarget = this.renderTarget;\n this.renderingToScreen = isRenderingToScreen(this.rootRenderTarget);\n }\n /**\n * Binding a render surface! This is the main function of the render target system.\n * It will take the RenderSurface (which can be a texture, canvas, or render target) and bind it to the renderer.\n * Once bound all draw calls will be rendered to the render surface.\n *\n * If a frame is not provide and the render surface is a texture, the frame of the texture will be used.\n * @param renderSurface - the render surface to bind\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to render to\n * @returns the render target that was bound\n */\n bind(renderSurface, clear = true, clearColor, frame) {\n const renderTarget = this.getRenderTarget(renderSurface);\n const didChange = this.renderTarget !== renderTarget;\n this.renderTarget = renderTarget;\n this.renderSurface = renderSurface;\n const gpuRenderTarget = this.getGpuRenderTarget(renderTarget);\n if (renderTarget.pixelWidth !== gpuRenderTarget.width || renderTarget.pixelHeight !== gpuRenderTarget.height) {\n this.adaptor.resizeGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.pixelWidth;\n gpuRenderTarget.height = renderTarget.pixelHeight;\n }\n const source = renderTarget.colorTexture;\n const viewport = this.viewport;\n const pixelWidth = source.pixelWidth;\n const pixelHeight = source.pixelHeight;\n if (!frame && renderSurface instanceof Texture) {\n frame = renderSurface.frame;\n }\n if (frame) {\n const resolution = source._resolution;\n viewport.x = frame.x * resolution + 0.5 | 0;\n viewport.y = frame.y * resolution + 0.5 | 0;\n viewport.width = frame.width * resolution + 0.5 | 0;\n viewport.height = frame.height * resolution + 0.5 | 0;\n } else {\n viewport.x = 0;\n viewport.y = 0;\n viewport.width = pixelWidth;\n viewport.height = pixelHeight;\n }\n calculateProjection(\n this.projectionMatrix,\n 0,\n 0,\n viewport.width / source.resolution,\n viewport.height / source.resolution,\n !renderTarget.isRoot\n );\n this.adaptor.startRenderPass(renderTarget, clear, clearColor, viewport);\n if (didChange) {\n this.onRenderTargetChange.emit(renderTarget);\n }\n return renderTarget;\n }\n clear(target, clear = CLEAR.ALL, clearColor) {\n if (!clear)\n return;\n if (target) {\n target = this.getRenderTarget(target);\n }\n this.adaptor.clear(\n target || this.renderTarget,\n clear,\n clearColor,\n this.viewport\n );\n }\n contextChange() {\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n }\n /**\n * Push a render surface to the renderer. This will bind the render surface to the renderer,\n * @param renderSurface - the render surface to push\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to use when rendering to the render surface\n */\n push(renderSurface, clear = CLEAR.ALL, clearColor, frame) {\n const renderTarget = this.bind(renderSurface, clear, clearColor, frame);\n this._renderTargetStack.push({\n renderTarget,\n frame\n });\n return renderTarget;\n }\n /** Pops the current render target from the renderer and restores the previous render target. */\n pop() {\n this._renderTargetStack.pop();\n const currentRenderTargetData = this._renderTargetStack[this._renderTargetStack.length - 1];\n this.bind(currentRenderTargetData.renderTarget, false, null, currentRenderTargetData.frame);\n }\n /**\n * Gets the render target from the provide render surface. Eg if its a texture,\n * it will return the render target for the texture.\n * If its a render target, it will return the same render target.\n * @param renderSurface - the render surface to get the render target for\n * @returns the render target for the render surface\n */\n getRenderTarget(renderSurface) {\n if (renderSurface.isTexture) {\n renderSurface = renderSurface.source;\n }\n return this._renderSurfaceToRenderTargetHash.get(renderSurface) ?? this._initRenderTarget(renderSurface);\n }\n /**\n * Copies a render surface to another texture\n * @param sourceRenderSurfaceTexture - the render surface to copy from\n * @param destinationTexture - the texture to copy to\n * @param originSrc - the origin of the copy\n * @param originSrc.x - the x origin of the copy\n * @param originSrc.y - the y origin of the copy\n * @param size - the size of the copy\n * @param size.width - the width of the copy\n * @param size.height - the height of the copy\n * @param originDest - the destination origin (top left to paste from!)\n * @param originDest.x - the x origin of the paste\n * @param originDest.y - the y origin of the paste\n */\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n if (originSrc.x < 0) {\n size.width += originSrc.x;\n originDest.x -= originSrc.x;\n originSrc.x = 0;\n }\n if (originSrc.y < 0) {\n size.height += originSrc.y;\n originDest.y -= originSrc.y;\n originSrc.y = 0;\n }\n const { pixelWidth, pixelHeight } = sourceRenderSurfaceTexture;\n size.width = Math.min(size.width, pixelWidth - originSrc.x);\n size.height = Math.min(size.height, pixelHeight - originSrc.y);\n return this.adaptor.copyToTexture(\n sourceRenderSurfaceTexture,\n destinationTexture,\n originSrc,\n size,\n originDest\n );\n }\n /**\n * ensures that we have a depth stencil buffer available to render to\n * This is used by the mask system to make sure we have a stencil buffer.\n */\n ensureDepthStencil() {\n if (!this.renderTarget.stencil) {\n this.renderTarget.stencil = true;\n this.adaptor.startRenderPass(this.renderTarget, false, null, this.viewport);\n }\n }\n /** nukes the render target system */\n destroy() {\n this._renderer = null;\n this._renderSurfaceToRenderTargetHash.forEach((renderTarget, key) => {\n if (renderTarget !== key) {\n renderTarget.destroy();\n }\n });\n this._renderSurfaceToRenderTargetHash.clear();\n this._gpuRenderTargetHash = /* @__PURE__ */ Object.create(null);\n }\n _initRenderTarget(renderSurface) {\n let renderTarget = null;\n if (CanvasSource.test(renderSurface)) {\n renderSurface = getCanvasTexture(renderSurface);\n }\n if (renderSurface instanceof RenderTarget) {\n renderTarget = renderSurface;\n } else if (renderSurface instanceof TextureSource) {\n renderTarget = new RenderTarget({\n colorTextures: [renderSurface]\n });\n if (CanvasSource.test(renderSurface.source.resource)) {\n renderTarget.isRoot = true;\n }\n renderSurface.once(\"destroy\", () => {\n renderTarget.destroy();\n const gpuRenderTarget = this._gpuRenderTargetHash[renderTarget.uid];\n if (gpuRenderTarget) {\n this._gpuRenderTargetHash[renderTarget.uid] = null;\n this.adaptor.destroyGpuRenderTarget(gpuRenderTarget);\n }\n });\n }\n this._renderSurfaceToRenderTargetHash.set(renderSurface, renderTarget);\n return renderTarget;\n }\n getGpuRenderTarget(renderTarget) {\n return this._gpuRenderTargetHash[renderTarget.uid] || (this._gpuRenderTargetHash[renderTarget.uid] = this.adaptor.initGpuRenderTarget(renderTarget));\n }\n}\n\nexport { RenderTargetSystem };\n//# sourceMappingURL=RenderTargetSystem.mjs.map\n","\"use strict\";\nfunction isRenderingToScreen(renderTarget) {\n const resource = renderTarget.colorTexture.source.resource;\n return globalThis.HTMLCanvasElement && resource instanceof HTMLCanvasElement && document.body.contains(resource);\n}\n\nexport { isRenderingToScreen };\n//# sourceMappingURL=isRenderingToScreen.mjs.map\n","\"use strict\";\nfunction calculateProjection(pm, x, y, width, height, flipY) {\n const sign = flipY ? 1 : -1;\n pm.identity();\n pm.a = 1 / width * 2;\n pm.d = sign * (1 / height * 2);\n pm.tx = -1 - x * pm.a;\n pm.ty = -sign - y * pm.d;\n return pm;\n}\n\nexport { calculateProjection };\n//# sourceMappingURL=calculateProjection.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CustomRenderPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderable(container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(container);\n }\n execute(container) {\n if (!container.isRenderable)\n return;\n container.render(this._renderer);\n }\n destroy() {\n this._renderer = null;\n }\n}\nCustomRenderPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"customRender\"\n};\n\nexport { CustomRenderPipe };\n//# sourceMappingURL=CustomRenderPipe.mjs.map\n","\"use strict\";\nfunction executeInstructions(renderGroup, renderer) {\n const instructionSet = renderGroup.instructionSet;\n const instructions = instructionSet.instructions;\n for (let i = 0; i < instructionSet.instructionSize; i++) {\n const instruction = instructions[i];\n renderer[instruction.renderPipeId].execute(instruction);\n }\n}\n\nexport { executeInstructions };\n//# sourceMappingURL=executeInstructions.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { executeInstructions } from './utils/executeInstructions.mjs';\n\n\"use strict\";\nclass RenderGroupPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderGroup(renderGroup, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(renderGroup);\n }\n execute(renderGroup) {\n if (!renderGroup.isRenderable)\n return;\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.worldTransform,\n worldColor: renderGroup.worldColorAlpha\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.globalUniforms.pop();\n }\n destroy() {\n this._renderer = null;\n }\n}\nRenderGroupPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"renderGroup\"\n};\n\nexport { RenderGroupPipe };\n//# sourceMappingURL=RenderGroupPipe.mjs.map\n","\"use strict\";\nfunction buildInstructions(renderGroup, renderPipes) {\n const root = renderGroup.root;\n const instructionSet = renderGroup.instructionSet;\n instructionSet.reset();\n renderPipes.batch.buildStart(instructionSet);\n renderPipes.blendMode.buildStart();\n renderPipes.colorMask.buildStart();\n if (root.sortableChildren) {\n root.sortChildren();\n }\n collectAllRenderablesAdvanced(root, instructionSet, renderPipes, true);\n renderPipes.batch.buildEnd(instructionSet);\n renderPipes.blendMode.buildEnd(instructionSet);\n}\nfunction collectAllRenderables(container, instructionSet, rendererPipes) {\n if (container.globalDisplayStatus < 7 || !container.includeInBuild)\n return;\n if (container.sortableChildren) {\n container.sortChildren();\n }\n if (container.isSimple) {\n collectAllRenderablesSimple(container, instructionSet, rendererPipes);\n } else {\n collectAllRenderablesAdvanced(container, instructionSet, rendererPipes, false);\n }\n}\nfunction collectAllRenderablesSimple(container, instructionSet, renderPipes) {\n if (container.renderPipeId) {\n renderPipes.blendMode.setBlendMode(container, container.groupBlendMode, instructionSet);\n container.didViewUpdate = false;\n const rp = renderPipes;\n rp[container.renderPipeId].addRenderable(container, instructionSet);\n }\n if (!container.isRenderGroupRoot) {\n const children = container.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n}\nfunction collectAllRenderablesAdvanced(container, instructionSet, renderPipes, isRoot) {\n if (!isRoot && container.isRenderGroupRoot) {\n renderPipes.renderGroup.addRenderGroup(container.renderGroup, instructionSet);\n } else {\n for (let i = 0; i < container.effects.length; i++) {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.push(effect, container, instructionSet);\n }\n const renderPipeId = container.renderPipeId;\n if (renderPipeId) {\n renderPipes.blendMode.setBlendMode(container, container.groupBlendMode, instructionSet);\n container.didViewUpdate = false;\n const pipe = renderPipes[renderPipeId];\n pipe.addRenderable(container, instructionSet);\n }\n const children = container.children;\n if (children.length) {\n for (let i = 0; i < children.length; i++) {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n for (let i = container.effects.length - 1; i >= 0; i--) {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.pop(effect, container, instructionSet);\n }\n }\n}\n\nexport { buildInstructions, collectAllRenderables };\n//# sourceMappingURL=buildInstructions.mjs.map\n","import { mixHexColors } from './mixHexColors.mjs';\n\n\"use strict\";\nconst WHITE_BGR = 16777215;\nfunction mixColors(localBGRColor, parentBGRColor) {\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR) {\n return localBGRColor + parentBGRColor - WHITE_BGR;\n }\n return mixHexColors(localBGRColor, parentBGRColor, 0.5);\n}\nfunction mixStandardAnd32BitColors(localColorRGB, localAlpha, parentColor) {\n const parentAlpha = (parentColor >> 24 & 255) / 255;\n const globalAlpha = localAlpha * parentAlpha * 255;\n const localBGRColor = ((localColorRGB & 255) << 16) + (localColorRGB & 65280) + (localColorRGB >> 16 & 255);\n const parentBGRColor = parentColor & 16777215;\n let sharedBGRColor;\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR) {\n sharedBGRColor = localBGRColor + parentBGRColor - WHITE_BGR;\n } else {\n sharedBGRColor = mixHexColors(localBGRColor, parentBGRColor, 0.5);\n }\n return sharedBGRColor + (globalAlpha << 24);\n}\n\nexport { mixColors, mixStandardAnd32BitColors };\n//# sourceMappingURL=mixColors.mjs.map\n","\"use strict\";\nfunction mixHexColors(color1, color2, ratio) {\n const r1 = color1 >> 16 & 255;\n const g1 = color1 >> 8 & 255;\n const b1 = color1 & 255;\n const r2 = color2 >> 16 & 255;\n const g2 = color2 >> 8 & 255;\n const b2 = color2 & 255;\n const r = r1 + (r2 - r1) * ratio;\n const g = g1 + (g2 - g1) * ratio;\n const b = b1 + (b2 - b1) * ratio;\n return (r << 16) + (g << 8) + b;\n}\n\nexport { mixHexColors };\n//# sourceMappingURL=mixHexColors.mjs.map\n","import { Container, UPDATE_COLOR, UPDATE_BLEND, UPDATE_VISIBLE } from '../Container.mjs';\nimport { mixColors } from './mixColors.mjs';\n\n\"use strict\";\nconst tempContainer = new Container();\nfunction updateRenderGroupTransforms(renderGroup, updateChildRenderGroups = false) {\n updateRenderGroupTransform(renderGroup);\n const childrenToUpdate = renderGroup.childrenToUpdate;\n const updateTick = renderGroup.updateTick;\n renderGroup.updateTick++;\n for (const j in childrenToUpdate) {\n const childrenAtDepth = childrenToUpdate[j];\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n for (let i = 0; i < index; i++) {\n updateTransformAndChildren(list[i], updateTick, 0);\n }\n childrenAtDepth.index = 0;\n }\n if (updateChildRenderGroups) {\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n updateRenderGroupTransforms(renderGroup.renderGroupChildren[i], updateChildRenderGroups);\n }\n }\n}\nfunction updateRenderGroupTransform(renderGroup) {\n const root = renderGroup.root;\n let worldAlpha;\n if (renderGroup.renderGroupParent) {\n const renderGroupParent = renderGroup.renderGroupParent;\n renderGroup.worldTransform.appendFrom(\n root.relativeGroupTransform,\n renderGroupParent.worldTransform\n );\n renderGroup.worldColor = mixColors(\n root.groupColor,\n renderGroupParent.worldColor\n );\n worldAlpha = root.groupAlpha * renderGroupParent.worldAlpha;\n } else {\n renderGroup.worldTransform.copyFrom(root.localTransform);\n renderGroup.worldColor = root.localColor;\n worldAlpha = root.localAlpha;\n }\n worldAlpha = worldAlpha < 0 ? 0 : worldAlpha > 1 ? 1 : worldAlpha;\n renderGroup.worldAlpha = worldAlpha;\n renderGroup.worldColorAlpha = renderGroup.worldColor + ((worldAlpha * 255 | 0) << 24);\n}\nfunction updateTransformAndChildren(container, updateTick, updateFlags) {\n if (updateTick === container.updateTick)\n return;\n container.updateTick = updateTick;\n container.didChange = false;\n const localTransform = container.localTransform;\n container.updateLocalTransform();\n const parent = container.parent;\n if (parent && !parent.isRenderGroupRoot) {\n updateFlags = updateFlags | container._updateFlags;\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform\n );\n if (updateFlags) {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n } else {\n updateFlags = container._updateFlags;\n container.relativeGroupTransform.copyFrom(localTransform);\n if (updateFlags) {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n if (!container.isRenderGroupRoot) {\n const children = container.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n updateTransformAndChildren(children[i], updateTick, updateFlags);\n }\n const renderGroup = container.renderGroup;\n if (container.renderPipeId && !renderGroup.structureDidChange) {\n renderGroup.updateRenderable(container);\n }\n }\n}\nfunction updateColorBlendVisibility(container, parent, updateFlags) {\n if (updateFlags & UPDATE_COLOR) {\n container.groupColor = mixColors(\n container.localColor,\n parent.groupColor\n );\n let groupAlpha = container.localAlpha * parent.groupAlpha;\n groupAlpha = groupAlpha < 0 ? 0 : groupAlpha > 1 ? 1 : groupAlpha;\n container.groupAlpha = groupAlpha;\n container.groupColorAlpha = container.groupColor + ((groupAlpha * 255 | 0) << 24);\n }\n if (updateFlags & UPDATE_BLEND) {\n container.groupBlendMode = container.localBlendMode === \"inherit\" ? parent.groupBlendMode : container.localBlendMode;\n }\n if (updateFlags & UPDATE_VISIBLE) {\n container.globalDisplayStatus = container.localDisplayStatus & parent.globalDisplayStatus;\n }\n container._updateFlags = 0;\n}\n\nexport { updateRenderGroupTransform, updateRenderGroupTransforms, updateTransformAndChildren };\n//# sourceMappingURL=updateRenderGroupTransforms.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { buildInstructions } from './utils/buildInstructions.mjs';\nimport { collectRenderGroups } from './utils/collectRenderGroups.mjs';\nimport { executeInstructions } from './utils/executeInstructions.mjs';\nimport { updateRenderGroupTransforms } from './utils/updateRenderGroupTransforms.mjs';\nimport { validateRenderables } from './utils/validateRenderables.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nclass RenderGroupSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n render({ container, transform }) {\n container.isRenderGroup = true;\n const parent = container.parent;\n const renderGroupParent = container.renderGroup.renderGroupParent;\n container.parent = null;\n container.renderGroup.renderGroupParent = null;\n const renderer = this._renderer;\n const renderGroups = collectRenderGroups(container.renderGroup, []);\n let originalLocalTransform = tempMatrix;\n if (transform) {\n originalLocalTransform = originalLocalTransform.copyFrom(container.renderGroup.localTransform);\n container.renderGroup.localTransform.copyFrom(transform);\n }\n const renderPipes = renderer.renderPipes;\n for (let i = 0; i < renderGroups.length; i++) {\n const renderGroup = renderGroups[i];\n renderGroup.runOnRender();\n renderGroup.instructionSet.renderPipes = renderPipes;\n if (!renderGroup.structureDidChange) {\n validateRenderables(renderGroup, renderPipes);\n }\n updateRenderGroupTransforms(renderGroup);\n if (renderGroup.structureDidChange) {\n renderGroup.structureDidChange = false;\n buildInstructions(renderGroup, renderPipes);\n } else {\n updateRenderables(renderGroup);\n }\n renderGroup.childrenRenderablesToUpdate.index = 0;\n renderer.renderPipes.batch.upload(renderGroup.instructionSet);\n }\n renderer.globalUniforms.start({\n worldTransformMatrix: transform ? container.renderGroup.localTransform : container.renderGroup.worldTransform,\n worldColor: container.renderGroup.worldColorAlpha\n });\n executeInstructions(container.renderGroup, renderPipes);\n if (renderPipes.uniformBatch) {\n renderPipes.uniformBatch.renderEnd();\n }\n if (transform) {\n container.renderGroup.localTransform.copyFrom(originalLocalTransform);\n }\n container.parent = parent;\n container.renderGroup.renderGroupParent = renderGroupParent;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nRenderGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderGroup\"\n};\nfunction updateRenderables(renderGroup) {\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n for (let i = 0; i < index; i++) {\n const container = list[i];\n if (container.didViewUpdate) {\n renderGroup.updateRenderable(container);\n }\n }\n}\n\nexport { RenderGroupSystem };\n//# sourceMappingURL=RenderGroupSystem.mjs.map\n","\"use strict\";\nfunction collectRenderGroups(renderGroup, out = []) {\n out.push(renderGroup);\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n collectRenderGroups(renderGroup.renderGroupChildren[i], out);\n }\n return out;\n}\n\nexport { collectRenderGroups };\n//# sourceMappingURL=collectRenderGroups.mjs.map\n","\"use strict\";\nfunction validateRenderables(renderGroup, renderPipes) {\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n let rebuildRequired = false;\n for (let i = 0; i < index; i++) {\n const container = list[i];\n const renderable = container;\n const pipe = renderPipes[renderable.renderPipeId];\n rebuildRequired = pipe.validateRenderable(container);\n if (rebuildRequired) {\n break;\n }\n }\n renderGroup.structureDidChange = rebuildRequired;\n return rebuildRequired;\n}\n\nexport { validateRenderables };\n//# sourceMappingURL=validateRenderables.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from './BatchableSprite.mjs';\n\n\"use strict\";\nclass SpritePipe {\n constructor(renderer) {\n this._gpuSpriteHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n addRenderable(sprite, _instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n if (gpuSprite.texture._source !== texture._source) {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n return false;\n }\n destroyRenderable(sprite) {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n BigPool.return(batchableSprite);\n this._gpuSpriteHash[sprite.uid] = null;\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n sprite._didSpriteUpdate = false;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableSprite = BigPool.get(BatchableSprite);\n batchableSprite.renderable = sprite;\n batchableSprite.texture = sprite._texture;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n this._gpuSpriteHash[sprite.uid] = batchableSprite;\n sprite._didSpriteUpdate = false;\n sprite.on(\"destroyed\", () => {\n this.destroyRenderable(sprite);\n });\n return batchableSprite;\n }\n destroy() {\n for (const i in this._gpuSpriteHash) {\n BigPool.return(this._gpuSpriteHash[i]);\n }\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"sprite\"\n};\n\nexport { SpritePipe };\n//# sourceMappingURL=SpritePipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { BatchGeometry } from '../gpu/BatchGeometry.mjs';\nimport { Batcher } from './Batcher.mjs';\n\n\"use strict\";\nclass BatcherPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n this._batches = /* @__PURE__ */ Object.create(null);\n this._geometries = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init(this);\n }\n buildStart(instructionSet) {\n if (!this._batches[instructionSet.uid]) {\n const batcher = new Batcher();\n this._batches[instructionSet.uid] = batcher;\n this._geometries[batcher.uid] = new BatchGeometry();\n }\n this._activeBatch = this._batches[instructionSet.uid];\n this._activeGeometry = this._geometries[this._activeBatch.uid];\n this._activeBatch.begin();\n }\n addToBatch(batchableObject) {\n this._activeBatch.add(batchableObject);\n }\n break(instructionSet) {\n this._activeBatch.break(instructionSet);\n }\n buildEnd(instructionSet) {\n const activeBatch = this._activeBatch;\n const geometry = this._activeGeometry;\n activeBatch.finish(instructionSet);\n geometry.indexBuffer.setDataWithSize(activeBatch.indexBuffer, activeBatch.indexSize, true);\n geometry.buffers[0].setDataWithSize(activeBatch.attributeBuffer.float32View, activeBatch.attributeSize, false);\n }\n upload(instructionSet) {\n const batcher = this._batches[instructionSet.uid];\n const geometry = this._geometries[batcher.uid];\n if (batcher.dirty) {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n execute(batch) {\n if (batch.action === \"startBatch\") {\n const batcher = batch.batcher;\n const geometry = this._geometries[batcher.uid];\n this._adaptor.start(this, geometry);\n }\n this._adaptor.execute(this, batch);\n }\n destroy() {\n this.state = null;\n this.renderer = null;\n this._adaptor.destroy();\n this._adaptor = null;\n for (const i in this._batches) {\n this._batches[i].destroy();\n }\n this._batches = null;\n for (const i in this._geometries) {\n this._geometries[i].destroy();\n }\n this._geometries = null;\n }\n}\n/** @ignore */\nBatcherPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"batch\"\n};\n\nexport { BatcherPipe };\n//# sourceMappingURL=BatcherPipe.mjs.map\n","var source = \"struct GlobalFilterUniforms {\\n uInputSize:vec4<f32>,\\n uInputPixel:vec4<f32>,\\n uInputClamp:vec4<f32>,\\n uOutputFrame:vec4<f32>,\\n uGlobalFrame:vec4<f32>,\\n uOutputTexture:vec4<f32>, \\n};\\n\\nstruct MaskUniforms {\\n uFilterMatrix:mat3x3<f32>,\\n uMaskClamp:vec4<f32>,\\n uAlpha:f32,\\n};\\n\\n\\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\\n@group(0) @binding(2) var uSampler : sampler;\\n\\n@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;\\n@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;\\n\\nstruct VSOutput {\\n @builtin(position) position: vec4<f32>,\\n @location(0) uv : vec2<f32>,\\n @location(1) filterUv : vec2<f32>,\\n };\\n\\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\\n{\\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\\n\\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\\n\\n return vec4(position, 0.0, 1.0);\\n}\\n\\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\\n}\\n\\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \\n}\\n\\nfn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>\\n{\\n return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\\n}\\n\\nfn getSize() -> vec2<f32>\\n{\\n\\n \\n return gfu.uGlobalFrame.zw;\\n}\\n \\n@vertex\\nfn mainVertex(\\n @location(0) aPosition : vec2<f32>, \\n) -> VSOutput {\\n return VSOutput(\\n filterVertexPosition(aPosition),\\n filterTextureCoord(aPosition),\\n getFilterCoord(aPosition)\\n );\\n}\\n\\n@fragment\\nfn mainFragment(\\n @location(0) uv: vec2<f32>,\\n @location(1) filterUv: vec2<f32>,\\n @builtin(position) position: vec4<f32>\\n) -> @location(0) vec4<f32> {\\n\\n var maskClamp = filterUniforms.uMaskClamp;\\n\\n var clip = step(3.5,\\n step(maskClamp.x, filterUv.x) +\\n step(maskClamp.y, filterUv.y) +\\n step(filterUv.x, maskClamp.z) +\\n step(filterUv.y, maskClamp.w));\\n\\n var mask = textureSample(uMaskTexture, uSampler, filterUv);\\n var source = textureSample(uTexture, uSampler, uv);\\n \\n var npmAlpha = 0.0;\\n\\n var alphaMul = 1.0 - npmAlpha * (1.0 - mask.a);\\n\\n var a = (alphaMul * mask.r) * clip;\\n\\n return vec4(source.rgb, source.a) * a;\\n}\";\n\nexport { source as default };\n//# sourceMappingURL=mask.wgsl.mjs.map\n","import { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { GlProgram } from '../../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { TextureMatrix } from '../../rendering/renderers/shared/texture/TextureMatrix.mjs';\nimport { Filter } from '../Filter.mjs';\nimport fragment from './mask.frag.mjs';\nimport vertex from './mask.vert.mjs';\nimport source from './mask.wgsl.mjs';\n\n\"use strict\";\nclass MaskFilter extends Filter {\n constructor(options) {\n const { sprite, ...rest } = options;\n const textureMatrix = new TextureMatrix(sprite.texture);\n const filterUniforms = new UniformGroup({\n uFilterMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uMaskClamp: { value: textureMatrix.uClampFrame, type: \"vec4<f32>\" },\n uAlpha: { value: 1, type: \"f32\" }\n });\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: \"mainVertex\"\n },\n fragment: {\n source,\n entryPoint: \"mainFragment\"\n }\n });\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: \"mask-filter\"\n });\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source\n }\n });\n this.sprite = sprite;\n this._textureMatrix = textureMatrix;\n }\n apply(filterManager, input, output, clearMode) {\n this._textureMatrix.texture = this.sprite.texture;\n filterManager.calculateSpriteMatrix(\n this.resources.filterUniforms.uniforms.uFilterMatrix,\n this.sprite\n ).prepend(this._textureMatrix.mapCoord);\n this.resources.uMaskTexture = this.sprite.texture.source;\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n\nexport { MaskFilter };\n//# sourceMappingURL=MaskFilter.mjs.map\n","var vertex = \"in vec2 aPosition;\\n\\nout vec2 vTextureCoord;\\nout vec2 vMaskCoord;\\n\\n\\nuniform vec4 uInputSize;\\nuniform vec4 uOutputFrame;\\nuniform vec4 uOutputTexture;\\nuniform mat3 uFilterMatrix;\\n\\nvec4 filterVertexPosition( vec2 aPosition )\\n{\\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\\n \\n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\\n\\n return vec4(position, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( vec2 aPosition )\\n{\\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\\n}\\n\\nvec2 getFilterCoord( vec2 aPosition )\\n{\\n return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\\n} \\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition(aPosition);\\n vTextureCoord = filterTextureCoord(aPosition);\\n vMaskCoord = getFilterCoord(aPosition);\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=mask.vert.mjs.map\n","var fragment = \"in vec2 vMaskCoord;\\nin vec2 vTextureCoord;\\n\\nuniform sampler2D uTexture;\\nuniform sampler2D uMaskTexture;\\n\\nuniform float uAlpha;\\nuniform vec4 uMaskClamp;\\n\\nout vec4 finalColor;\\n\\nvoid main(void)\\n{\\n float clip = step(3.5,\\n step(uMaskClamp.x, vMaskCoord.x) +\\n step(uMaskClamp.y, vMaskCoord.y) +\\n step(vMaskCoord.x, uMaskClamp.z) +\\n step(vMaskCoord.y, uMaskClamp.w));\\n\\n // TODO look into why this is needed\\n float npmAlpha = uAlpha; \\n vec4 original = texture(uTexture, vTextureCoord);\\n vec4 masky = texture(uMaskTexture, vMaskCoord);\\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\\n\\n original *= (alphaMul * masky.r * uAlpha * clip);\\n\\n finalColor = original;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mask.frag.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../filters/FilterEffect.mjs';\nimport { MaskFilter } from '../../../filters/mask/MaskFilter.mjs';\nimport { Bounds } from '../../../scene/container/bounds/Bounds.mjs';\nimport { getGlobalBounds } from '../../../scene/container/bounds/getGlobalBounds.mjs';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions.mjs';\nimport { Sprite } from '../../../scene/sprite/Sprite.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { Texture } from '../../renderers/shared/texture/Texture.mjs';\nimport { TexturePool } from '../../renderers/shared/texture/TexturePool.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nclass AlphaMaskEffect extends FilterEffect {\n constructor() {\n super({\n filters: [new MaskFilter({\n sprite: new Sprite(Texture.EMPTY)\n })]\n });\n }\n get sprite() {\n return this.filters[0].sprite;\n }\n set sprite(value) {\n this.filters[0].sprite = value;\n }\n}\nclass AlphaMaskPipe {\n constructor(renderer) {\n this._activeMaskStage = [];\n this._renderer = renderer;\n }\n push(mask, maskedContainer, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"pushMaskBegin\",\n mask,\n canBundle: false,\n maskedContainer\n });\n if (mask.renderMaskToTexture) {\n const maskContainer = mask.mask;\n maskContainer.includeInBuild = true;\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes\n );\n maskContainer.includeInBuild = false;\n }\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"pushMaskEnd\",\n mask,\n maskedContainer,\n canBundle: false\n });\n }\n pop(mask, _maskedContainer, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"alphaMask\",\n action: \"popMaskEnd\",\n mask,\n canBundle: false\n });\n }\n execute(instruction) {\n const renderer = this._renderer;\n const renderMask = instruction.mask.renderMaskToTexture;\n if (instruction.action === \"pushMaskBegin\") {\n const filterEffect = BigPool.get(AlphaMaskEffect);\n if (renderMask) {\n instruction.mask.mask.measurable = true;\n const bounds = getGlobalBounds(instruction.mask.mask, true, tempBounds);\n instruction.mask.mask.measurable = false;\n bounds.ceil();\n const filterTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n 1,\n false\n );\n renderer.renderTarget.push(filterTexture, true);\n renderer.globalUniforms.push({\n offset: bounds,\n worldColor: 4294967295\n });\n const sprite = filterEffect.sprite;\n sprite.texture = filterTexture;\n sprite.worldTransform.tx = bounds.minX;\n sprite.worldTransform.ty = bounds.minY;\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer,\n filterTexture\n });\n } else {\n filterEffect.sprite = instruction.mask.mask;\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer\n });\n }\n } else if (instruction.action === \"pushMaskEnd\") {\n const maskData = this._activeMaskStage[this._activeMaskStage.length - 1];\n if (renderMask) {\n renderer.renderTarget.pop();\n renderer.globalUniforms.pop();\n }\n renderer.filter.push({\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n container: maskData.maskedContainer,\n filterEffect: maskData.filterEffect,\n canBundle: false\n });\n } else if (instruction.action === \"popMaskEnd\") {\n renderer.filter.pop();\n const maskData = this._activeMaskStage.pop();\n if (renderMask) {\n TexturePool.returnTexture(maskData.filterTexture);\n }\n BigPool.return(maskData.filterEffect);\n }\n }\n destroy() {\n this._renderer = null;\n this._activeMaskStage = null;\n }\n}\n/** @ignore */\nAlphaMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"alphaMask\"\n};\n\nexport { AlphaMaskPipe };\n//# sourceMappingURL=AlphaMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ColorMaskPipe {\n constructor(renderer) {\n this._colorStack = [];\n this._colorStackIndex = 0;\n this._currentColor = 0;\n this._renderer = renderer;\n }\n buildStart() {\n this._colorStack[0] = 15;\n this._colorStackIndex = 1;\n this._currentColor = 15;\n }\n push(mask, _container, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n const colorStack = this._colorStack;\n colorStack[this._colorStackIndex] = colorStack[this._colorStackIndex - 1] & mask.mask;\n const currentColor = this._colorStack[this._colorStackIndex];\n if (currentColor !== this._currentColor) {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: \"colorMask\",\n colorMask: currentColor,\n canBundle: false\n });\n }\n this._colorStackIndex++;\n }\n pop(_mask, _container, instructionSet) {\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n const colorStack = this._colorStack;\n this._colorStackIndex--;\n const currentColor = colorStack[this._colorStackIndex - 1];\n if (currentColor !== this._currentColor) {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: \"colorMask\",\n colorMask: currentColor,\n canBundle: false\n });\n }\n }\n execute(instruction) {\n const renderer = this._renderer;\n renderer.colorMask.setMask(instruction.colorMask);\n }\n destroy() {\n this._colorStack = null;\n }\n}\n/** @ignore */\nColorMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"colorMask\"\n};\n\nexport { ColorMaskPipe };\n//# sourceMappingURL=ColorMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions.mjs';\nimport { CLEAR } from '../../renderers/gl/const.mjs';\nimport { STENCIL_MODES } from '../../renderers/shared/state/const.mjs';\n\n\"use strict\";\nclass StencilMaskPipe {\n constructor(renderer) {\n // used when building and also when executing..\n this._maskStackHash = {};\n this._maskHash = /* @__PURE__ */ new WeakMap();\n this._renderer = renderer;\n }\n push(mask, _container, instructionSet) {\n var _a;\n const effect = mask;\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n renderer.renderPipes.blendMode.setBlendMode(effect.mask, \"none\", instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskBegin\",\n mask,\n canBundle: false\n });\n const maskContainer = effect.mask;\n maskContainer.includeInBuild = true;\n if (!this._maskHash.has(effect)) {\n this._maskHash.set(effect, {\n instructionsStart: 0,\n instructionsLength: 0\n });\n }\n const maskData = this._maskHash.get(effect);\n maskData.instructionsStart = instructionSet.instructionSize;\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes\n );\n maskContainer.includeInBuild = false;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskEnd\",\n mask,\n canBundle: false\n });\n const instructionsLength = instructionSet.instructionSize - maskData.instructionsStart - 1;\n maskData.instructionsLength = instructionsLength;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n }\n pop(mask, _container, instructionSet) {\n const effect = mask;\n const renderer = this._renderer;\n renderer.renderPipes.batch.break(instructionSet);\n renderer.renderPipes.blendMode.setBlendMode(effect.mask, \"none\", instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"popMaskBegin\",\n canBundle: false\n });\n const maskData = this._maskHash.get(mask);\n for (let i = 0; i < maskData.instructionsLength; i++) {\n instructionSet.instructions[instructionSet.instructionSize++] = instructionSet.instructions[maskData.instructionsStart++];\n }\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"popMaskEnd\",\n canBundle: false\n });\n }\n execute(instruction) {\n var _a;\n const renderer = this._renderer;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n let maskStackIndex = (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n if (instruction.action === \"pushMaskBegin\") {\n renderer.renderTarget.ensureDepthStencil();\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD, maskStackIndex);\n maskStackIndex++;\n renderer.colorMask.setMask(0);\n } else if (instruction.action === \"pushMaskEnd\") {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n renderer.colorMask.setMask(15);\n } else if (instruction.action === \"popMaskBegin\") {\n renderer.colorMask.setMask(0);\n if (maskStackIndex !== 0) {\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE, maskStackIndex);\n } else {\n renderer.renderTarget.clear(null, CLEAR.STENCIL);\n renderer.stencil.setStencilMode(STENCIL_MODES.DISABLED, maskStackIndex);\n }\n maskStackIndex--;\n } else if (instruction.action === \"popMaskEnd\") {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n renderer.colorMask.setMask(15);\n }\n this._maskStackHash[renderTargetUid] = maskStackIndex;\n }\n destroy() {\n this._renderer = null;\n this._maskStackHash = null;\n this._maskHash = null;\n }\n}\nStencilMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"stencilMask\"\n};\n\nexport { StencilMaskPipe };\n//# sourceMappingURL=StencilMaskPipe.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst _BackgroundSystem = class _BackgroundSystem {\n constructor() {\n this.clearBeforeRender = true;\n this._backgroundColor = new Color(0);\n this.color = this._backgroundColor;\n this.alpha = 1;\n }\n /**\n * initiates the background system\n * @param options - the options for the background colors\n */\n init(options) {\n options = { ..._BackgroundSystem.defaultOptions, ...options };\n this.clearBeforeRender = options.clearBeforeRender;\n this.color = options.background || options.backgroundColor || this._backgroundColor;\n this.alpha = options.backgroundAlpha;\n this._backgroundColor.setAlpha(options.backgroundAlpha);\n }\n /** The background color to fill if not transparent */\n get color() {\n return this._backgroundColor;\n }\n set color(value) {\n this._backgroundColor.setValue(value);\n }\n /** The background color alpha. Setting this to 0 will make the canvas transparent. */\n get alpha() {\n return this._backgroundColor.alpha;\n }\n set alpha(value) {\n this._backgroundColor.setAlpha(value);\n }\n /** The background color as an [R, G, B, A] array. */\n get colorRgba() {\n return this._backgroundColor.toArray();\n }\n /**\n * destroys the background system\n * @internal\n * @ignore\n */\n destroy() {\n }\n};\n/** @ignore */\n_BackgroundSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"background\",\n priority: 0\n};\n/** default options used by the system */\n_BackgroundSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.backgroundAlpha}\n * @default 1\n */\n backgroundAlpha: 1,\n /**\n * {@link WebGLOptions.backgroundColor}\n * @default 0x000000\n */\n backgroundColor: 0,\n /**\n * {@link WebGLOptions.clearBeforeRender}\n * @default true\n */\n clearBeforeRender: true\n};\nlet BackgroundSystem = _BackgroundSystem;\n\nexport { BackgroundSystem };\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { extensions, ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../../filters/FilterEffect.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst BLEND_MODE_FILTERS = {};\nextensions.handle(ExtensionType.BlendMode, (value) => {\n if (!value.name) {\n throw new Error(\"BlendMode extension must have a name property\");\n }\n BLEND_MODE_FILTERS[value.name] = value.ref;\n}, (value) => {\n delete BLEND_MODE_FILTERS[value.name];\n});\nclass BlendModePipe {\n constructor(renderer) {\n this._isAdvanced = false;\n this._filterHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n /**\n * This ensures that a blendMode switch is added to the instruction set if the blend mode has changed.\n * @param renderable - The renderable we are adding to the instruction set\n * @param blendMode - The blend mode of the renderable\n * @param instructionSet - The instruction set we are adding to\n */\n setBlendMode(renderable, blendMode, instructionSet) {\n if (this._activeBlendMode === blendMode) {\n if (this._isAdvanced)\n this._renderableList.push(renderable);\n return;\n }\n this._activeBlendMode = blendMode;\n if (this._isAdvanced) {\n this._endAdvancedBlendMode(instructionSet);\n }\n this._isAdvanced = !!BLEND_MODE_FILTERS[blendMode];\n if (this._isAdvanced) {\n this._beginAdvancedBlendMode(instructionSet);\n this._renderableList.push(renderable);\n }\n }\n _beginAdvancedBlendMode(instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n const blendMode = this._activeBlendMode;\n if (!BLEND_MODE_FILTERS[blendMode]) {\n warn(`Unable to assign BlendMode: '${blendMode}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);\n return;\n }\n if (!this._filterHash[blendMode]) {\n this._filterHash[blendMode] = new FilterEffect({\n filters: [new BLEND_MODE_FILTERS[blendMode]()]\n });\n }\n const instruction = {\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n renderables: [],\n filterEffect: this._filterHash[blendMode],\n canBundle: false\n };\n this._renderableList = instruction.renderables;\n instructionSet.add(instruction);\n }\n _endAdvancedBlendMode(instructionSet) {\n this._renderableList = null;\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n action: \"popFilter\",\n canBundle: false\n });\n }\n /**\n * called when the instruction build process is starting this will reset internally to the default blend mode\n * @internal\n * @ignore\n */\n buildStart() {\n this._isAdvanced = false;\n }\n /**\n * called when the instruction build process is finished, ensuring that if there is an advanced blend mode\n * active, we add the final render instructions added to the instruction set\n * @param instructionSet - The instruction set we are adding to\n * @internal\n * @ignore\n */\n buildEnd(instructionSet) {\n if (this._isAdvanced) {\n this._endAdvancedBlendMode(instructionSet);\n }\n }\n /**\n * @internal\n * @ignore\n */\n destroy() {\n this._renderer = null;\n this._renderableList = null;\n for (const i in this._filterHash) {\n this._filterHash[i].destroy();\n }\n this._filterHash = null;\n }\n}\n/** @ignore */\nBlendModePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"blendMode\"\n};\n\nexport { BlendModePipe };\n//# sourceMappingURL=BlendModePipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Container } from '../../../../scene/container/Container.mjs';\nimport { Texture } from '../texture/Texture.mjs';\n\n\"use strict\";\nconst imageTypes = {\n png: \"image/png\",\n jpg: \"image/jpeg\",\n webp: \"image/webp\"\n};\nconst _ExtractSystem = class _ExtractSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n }\n _normalizeOptions(options, defaults = {}) {\n if (options instanceof Container || options instanceof Texture) {\n return {\n target: options,\n ...defaults\n };\n }\n return {\n ...defaults,\n ...options\n };\n }\n /**\n * Will return a HTML Image of the target\n * @param options - The options for creating the image, or the target to extract\n * @returns - HTML Image of the target\n */\n async image(options) {\n const image = new Image();\n image.src = await this.base64(options);\n return image;\n }\n /**\n * Will return a base64 encoded string of this target. It works by calling\n * `Extract.canvas` and then running toDataURL on that.\n * @param options - The options for creating the image, or the target to extract\n */\n async base64(options) {\n options = this._normalizeOptions(\n options,\n _ExtractSystem.defaultImageOptions\n );\n const { format, quality } = options;\n const canvas = this.canvas(options);\n if (canvas.toBlob !== void 0) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error(\"ICanvas.toBlob failed!\"));\n return;\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }, imageTypes[format], quality);\n });\n }\n if (canvas.toDataURL !== void 0) {\n return canvas.toDataURL(imageTypes[format], quality);\n }\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: imageTypes[format], quality });\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented\");\n }\n /**\n * Creates a Canvas element, renders this target to it and then returns it.\n * @param options - The options for creating the canvas, or the target to extract\n * @returns - A Canvas element with the texture rendered on.\n */\n canvas(options) {\n options = this._normalizeOptions(options);\n const target = options.target;\n const renderer = this._renderer;\n if (target instanceof Texture) {\n return renderer.texture.generateCanvas(target);\n }\n const texture = renderer.textureGenerator.generateTexture(options);\n const canvas = renderer.texture.generateCanvas(texture);\n texture.destroy();\n return canvas;\n }\n /**\n * Will return a one-dimensional array containing the pixel data of the entire texture in RGBA\n * order, with integer values between 0 and 255 (included).\n * @param options - The options for extracting the image, or the target to extract\n * @returns - One-dimensional array containing the pixel data of the entire texture\n */\n pixels(options) {\n options = this._normalizeOptions(options);\n const target = options.target;\n const renderer = this._renderer;\n const texture = target instanceof Texture ? target : renderer.textureGenerator.generateTexture(options);\n const pixelInfo = renderer.texture.getPixels(texture);\n if (target instanceof Container) {\n texture.destroy();\n }\n return pixelInfo;\n }\n /**\n * Will return a texture of the target\n * @param options - The options for creating the texture, or the target to extract\n * @returns - A texture of the target\n */\n texture(options) {\n options = this._normalizeOptions(options);\n if (options.target instanceof Texture)\n return options.target;\n return this._renderer.textureGenerator.generateTexture(options);\n }\n /**\n * Will extract a HTMLImage of the target and download it\n * @param options - The options for downloading and extracting the image, or the target to extract\n */\n download(options) {\n options = this._normalizeOptions(options);\n const canvas = this.canvas(options);\n const link = document.createElement(\"a\");\n link.download = options.filename ?? \"image.png\";\n link.href = canvas.toDataURL(\"image/png\");\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n /**\n * Logs the target to the console as an image. This is a useful way to debug what's happening in the renderer.\n * @param options - The options for logging the image, or the target to log\n */\n log(options) {\n const width = options.width ?? 200;\n options = this._normalizeOptions(options);\n const canvas = this.canvas(options);\n const base64 = canvas.toDataURL();\n console.log(`[Pixi Texture] ${canvas.width}px ${canvas.height}px`);\n const style = [\n \"font-size: 1px;\",\n `padding: ${width}px ${300}px;`,\n `background: url(${base64}) no-repeat;`,\n \"background-size: contain;\"\n ].join(\" \");\n console.log(\"%c \", style);\n }\n destroy() {\n this._renderer = null;\n }\n};\n/** @ignore */\n_ExtractSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"extract\"\n};\n/** Default options for creating an image. */\n_ExtractSystem.defaultImageOptions = {\n /** The format of the image. */\n format: \"png\",\n /** The quality of the image. */\n quality: 1\n};\nlet ExtractSystem = _ExtractSystem;\n\nexport { ExtractSystem };\n//# sourceMappingURL=ExtractSystem.mjs.map\n","import { TextureSource } from './sources/TextureSource.mjs';\nimport { Texture } from './Texture.mjs';\n\n\"use strict\";\nclass RenderTexture extends Texture {\n static create(options) {\n return new Texture({\n source: new TextureSource(options)\n });\n }\n /**\n * Resizes the render texture.\n * @param width - The new width of the render texture.\n * @param height - The new height of the render texture.\n * @param resolution - The new resolution of the render texture.\n * @returns This texture.\n */\n resize(width, height, resolution) {\n this.source.resize(width, height, resolution);\n return this;\n }\n}\n\nexport { RenderTexture };\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds.mjs';\nimport { getLocalBounds } from '../../../../scene/container/bounds/getLocalBounds.mjs';\nimport { Container } from '../../../../scene/container/Container.mjs';\nimport { RenderTexture } from '../texture/RenderTexture.mjs';\n\n\"use strict\";\nconst tempRect = new Rectangle();\nconst tempBounds = new Bounds();\nconst noColor = [0, 0, 0, 0];\nclass GenerateTextureSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * A Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your container is complicated and needs to be reused multiple times.\n * @param {GenerateTextureOptions | Container} options - Generate texture options.\n * @param {Container} [options.container] - If not given, the renderer's resolution is used.\n * @param {Rectangle} options.region - The region of the container, that shall be rendered,\n * @param {number} [options.resolution] - The resolution of the texture being generated.\n * if no region is specified, defaults to the local bounds of the container.\n * @param {GenerateTextureSourceOptions} [options.textureSourceOptions] - Texture options for GPU.\n * @returns a shiny new texture of the container passed in\n */\n generateTexture(options) {\n if (options instanceof Container) {\n options = {\n target: options,\n frame: void 0,\n textureSourceOptions: {},\n resolution: void 0\n };\n }\n const resolution = options.resolution || this._renderer.resolution;\n const antialias = options.antialias || this._renderer.view.antialias;\n const container = options.target;\n let clearColor = options.clearColor;\n if (clearColor) {\n const isRGBAArray = Array.isArray(clearColor) && clearColor.length === 4;\n clearColor = isRGBAArray ? clearColor : Color.shared.setValue(clearColor).toArray();\n } else {\n clearColor = noColor;\n }\n const region = options.frame?.copyTo(tempRect) || getLocalBounds(container, tempBounds).rectangle;\n region.width = Math.max(region.width, 1 / resolution) | 0;\n region.height = Math.max(region.height, 1 / resolution) | 0;\n const target = RenderTexture.create({\n ...options.textureSourceOptions,\n width: region.width,\n height: region.height,\n resolution,\n antialias\n });\n const transform = Matrix.shared.translate(-region.x, -region.y);\n this._renderer.render({\n container,\n transform,\n target,\n clearColor\n });\n return target;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"textureGenerator\"\n};\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Point } from '../../../../maths/point/Point.mjs';\nimport { color32BitToUniform } from '../../../../scene/graphics/gpu/colorToUniform.mjs';\nimport { BindGroup } from '../../gpu/shader/BindGroup.mjs';\nimport { RendererType } from '../../types.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GlobalUniformSystem {\n constructor(renderer) {\n this._stackIndex = 0;\n this._globalUniformDataStack = [];\n this._uniformsPool = [];\n this._activeUniforms = [];\n this._bindGroupPool = [];\n this._activeBindGroups = [];\n this._renderer = renderer;\n }\n reset() {\n this._stackIndex = 0;\n for (let i = 0; i < this._activeUniforms.length; i++) {\n this._uniformsPool.push(this._activeUniforms[i]);\n }\n for (let i = 0; i < this._activeBindGroups.length; i++) {\n this._bindGroupPool.push(this._activeBindGroups[i]);\n }\n this._activeUniforms.length = 0;\n this._activeBindGroups.length = 0;\n }\n start(options) {\n this.reset();\n this.push(options);\n }\n bind({\n size,\n projectionMatrix,\n worldTransformMatrix,\n worldColor,\n offset\n }) {\n const renderTarget = this._renderer.renderTarget.renderTarget;\n const currentGlobalUniformData = this._stackIndex ? this._globalUniformDataStack[this._stackIndex - 1] : {\n projectionData: renderTarget,\n worldTransformMatrix: new Matrix(),\n worldColor: 4294967295,\n offset: new Point()\n };\n const globalUniformData = {\n projectionMatrix: projectionMatrix || this._renderer.renderTarget.projectionMatrix,\n resolution: size || renderTarget.size,\n worldTransformMatrix: worldTransformMatrix || currentGlobalUniformData.worldTransformMatrix,\n worldColor: worldColor || currentGlobalUniformData.worldColor,\n offset: offset || currentGlobalUniformData.offset,\n bindGroup: null\n };\n const uniformGroup = this._uniformsPool.pop() || this._createUniforms();\n this._activeUniforms.push(uniformGroup);\n const uniforms = uniformGroup.uniforms;\n uniforms.uProjectionMatrix = globalUniformData.projectionMatrix;\n uniforms.uResolution = globalUniformData.resolution;\n uniforms.uWorldTransformMatrix.copyFrom(globalUniformData.worldTransformMatrix);\n uniforms.uWorldTransformMatrix.tx -= globalUniformData.offset.x;\n uniforms.uWorldTransformMatrix.ty -= globalUniformData.offset.y;\n color32BitToUniform(\n globalUniformData.worldColor,\n uniforms.uWorldColorAlpha,\n 0\n );\n uniformGroup.update();\n let bindGroup;\n if (this._renderer.renderPipes.uniformBatch) {\n bindGroup = this._renderer.renderPipes.uniformBatch.getUniformBindGroup(uniformGroup, false);\n } else {\n bindGroup = this._bindGroupPool.pop() || new BindGroup();\n this._activeBindGroups.push(bindGroup);\n bindGroup.setResource(uniformGroup, 0);\n }\n globalUniformData.bindGroup = bindGroup;\n this._currentGlobalUniformData = globalUniformData;\n }\n push(options) {\n this.bind(options);\n this._globalUniformDataStack[this._stackIndex++] = this._currentGlobalUniformData;\n }\n pop() {\n this._currentGlobalUniformData = this._globalUniformDataStack[--this._stackIndex - 1];\n if (this._renderer.type === RendererType.WEBGL) {\n this._currentGlobalUniformData.bindGroup.resources[0].update();\n }\n }\n get bindGroup() {\n return this._currentGlobalUniformData.bindGroup;\n }\n get uniformGroup() {\n return this._currentGlobalUniformData.bindGroup.resources[0];\n }\n _createUniforms() {\n const globalUniforms = new UniformGroup({\n uProjectionMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uWorldTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n // TODO - someone smart - set this to be a unorm8x4 rather than a vec4<f32>\n uWorldColorAlpha: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uResolution: { value: [0, 0], type: \"vec2<f32>\" }\n }, {\n isStatic: true\n });\n return globalUniforms;\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGlobalUniformSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"globalUniforms\"\n};\n\nexport { GlobalUniformSystem };\n//# sourceMappingURL=GlobalUniformSystem.mjs.map\n","import { DOMAdapter } from '../environment/adapter.mjs';\n\n\"use strict\";\nlet saidHello = false;\nconst VERSION = \"8.1.1\";\nfunction sayHello(type) {\n if (saidHello) {\n return;\n }\n if (DOMAdapter.get().getNavigator().userAgent.toLowerCase().indexOf(\"chrome\") > -1) {\n const args = [\n `%c %c %c %c %c PixiJS %c v${VERSION} (${type}) http://www.pixijs.com/\n\n`,\n \"background: #E72264; padding:5px 0;\",\n \"background: #6CA2EA; padding:5px 0;\",\n \"background: #B5D33D; padding:5px 0;\",\n \"background: #FED23F; padding:5px 0;\",\n \"color: #FFFFFF; background: #E72264; padding:5px 0;\",\n \"color: #E72264; background: #FFFFFF; padding:5px 0;\"\n ];\n globalThis.console.log(...args);\n } else if (globalThis.console) {\n globalThis.console.log(`PixiJS ${VERSION} - ${type} - http://www.pixijs.com/`);\n }\n saidHello = true;\n}\n\nexport { VERSION, sayHello };\n//# sourceMappingURL=sayHello.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { sayHello } from '../../../../utils/sayHello.mjs';\nimport { RendererType } from '../../types.mjs';\n\n\"use strict\";\nclass HelloSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * It all starts here! This initiates every system, passing in the options for any system by name.\n * @param options - the config for the renderer and all its systems\n */\n init(options) {\n if (options.hello) {\n let name = this._renderer.name;\n if (this._renderer.type === RendererType.WEBGL) {\n name += ` ${this._renderer.context.webGLVersion}`;\n }\n sayHello(name);\n }\n }\n}\n/** @ignore */\nHelloSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"hello\",\n priority: -2\n};\n/** The default options for the system. */\nHelloSystem.defaultOptions = {\n /** {@link WebGLOptions.hello} */\n hello: false\n};\n\nexport { HelloSystem };\n//# sourceMappingURL=HelloSystem.mjs.map\n","import { ExtensionType, extensions } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst _TextureGCSystem = class _TextureGCSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this.count = 0;\n this.checkCount = 0;\n }\n init(options) {\n options = { ..._TextureGCSystem.defaultOptions, ...options };\n this.checkCountMax = options.textureGCCheckCountMax;\n this.maxIdle = options.textureGCAMaxIdle;\n this.active = options.textureGCActive;\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n postrender() {\n if (!this._renderer.renderingToScreen) {\n return;\n }\n this.count++;\n if (!this.active)\n return;\n this.checkCount++;\n if (this.checkCount > this.checkCountMax) {\n this.checkCount = 0;\n this.run();\n }\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n run() {\n const managedTextures = this._renderer.texture.managedTextures;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n if (texture.autoGarbageCollect && texture.resource && texture._touched > -1 && this.count - texture._touched > this.maxIdle) {\n texture._touched = -1;\n texture.unload();\n }\n }\n }\n destroy() {\n this._renderer = null;\n }\n};\n/** @ignore */\n_TextureGCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"textureGC\"\n};\n/** default options for the TextureGCSystem */\n_TextureGCSystem.defaultOptions = {\n /**\n * If set to true, this will enable the garbage collector on the GPU.\n * @default true\n */\n textureGCActive: true,\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n */\n textureGCAMaxIdle: 60 * 60,\n /**\n * Frames between two garbage collections.\n * @default 600\n */\n textureGCCheckCountMax: 600\n};\nlet TextureGCSystem = _TextureGCSystem;\nextensions.add(TextureGCSystem);\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { CustomRenderPipe } from '../../../../scene/container/CustomRenderPipe.mjs';\nimport { RenderGroupPipe } from '../../../../scene/container/RenderGroupPipe.mjs';\nimport { RenderGroupSystem } from '../../../../scene/container/RenderGroupSystem.mjs';\nimport { SpritePipe } from '../../../../scene/sprite/SpritePipe.mjs';\nimport { BatcherPipe } from '../../../batcher/shared/BatcherPipe.mjs';\nimport { AlphaMaskPipe } from '../../../mask/alpha/AlphaMaskPipe.mjs';\nimport { ColorMaskPipe } from '../../../mask/color/ColorMaskPipe.mjs';\nimport { StencilMaskPipe } from '../../../mask/stencil/StencilMaskPipe.mjs';\nimport { BackgroundSystem } from '../background/BackgroundSystem.mjs';\nimport { BlendModePipe } from '../blendModes/BlendModePipe.mjs';\nimport { ExtractSystem } from '../extract/ExtractSystem.mjs';\nimport { GenerateTextureSystem } from '../extract/GenerateTextureSystem.mjs';\nimport { GlobalUniformSystem } from '../renderTarget/GlobalUniformSystem.mjs';\nimport { HelloSystem } from '../startup/HelloSystem.mjs';\nimport { TextureGCSystem } from '../texture/TextureGCSystem.mjs';\nimport { ViewSystem } from '../view/ViewSystem.mjs';\n\n\"use strict\";\nconst SharedSystems = [\n BackgroundSystem,\n GlobalUniformSystem,\n HelloSystem,\n ViewSystem,\n RenderGroupSystem,\n TextureGCSystem,\n GenerateTextureSystem,\n ExtractSystem\n];\nconst SharedRenderPipes = [\n BlendModePipe,\n BatcherPipe,\n SpritePipe,\n RenderGroupPipe,\n AlphaMaskPipe,\n StencilMaskPipe,\n ColorMaskPipe,\n CustomRenderPipe\n];\n\nexport { SharedRenderPipes, SharedSystems };\n//# sourceMappingURL=SharedSystems.mjs.map\n"],"names":["a","Map","Object","globalThis","HTMLCanvasElement","document","s","Math","r","t","WeakMap","Error","Image","Promise","FileReader","console","Array","u","Float32Array"],"mappings":"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"}