holostaff-widget 3.0.8 → 3.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CanvasRenderer-Bv-aQ5u9.js → CanvasRenderer-r6DnTuXG.js} +5 -5
- package/dist/{CanvasRenderer-Bv-aQ5u9.js.map → CanvasRenderer-r6DnTuXG.js.map} +1 -1
- package/dist/{Filter-USG-3OWx.js → Filter-JZtNvb9I.js} +2 -2
- package/dist/{Filter-USG-3OWx.js.map → Filter-JZtNvb9I.js.map} +1 -1
- package/dist/{GpuStencilModesToPixi-0Pv9HrNg.js → GpuStencilModesToPixi-DjmNYbcE.js} +3 -3
- package/dist/{GpuStencilModesToPixi-0Pv9HrNg.js.map → GpuStencilModesToPixi-DjmNYbcE.js.map} +1 -1
- package/dist/{RenderTargetSystem-BNInd2k4.js → RenderTargetSystem-CdivfMWb.js} +3 -3
- package/dist/{RenderTargetSystem-BNInd2k4.js.map → RenderTargetSystem-CdivfMWb.js.map} +1 -1
- package/dist/{WebGLRenderer-zb0jiqTg.js → WebGLRenderer--DDVKk8M.js} +5 -5
- package/dist/{WebGLRenderer-zb0jiqTg.js.map → WebGLRenderer--DDVKk8M.js.map} +1 -1
- package/dist/{WebGPURenderer-fm_uBJOT.js → WebGPURenderer-CxJ8_1oU.js} +6 -6
- package/dist/{WebGPURenderer-fm_uBJOT.js.map → WebGPURenderer-CxJ8_1oU.js.map} +1 -1
- package/dist/{browserAll-CcRDLEJc.js → browserAll-BvJ4_DAh.js} +3 -3
- package/dist/{browserAll-CcRDLEJc.js.map → browserAll-BvJ4_DAh.js.map} +1 -1
- package/dist/{getTextureBatchBindGroup-DBv7jVal.js → getTextureBatchBindGroup-Bri_aoL9.js} +3 -3
- package/dist/{getTextureBatchBindGroup-DBv7jVal.js.map → getTextureBatchBindGroup-Bri_aoL9.js.map} +1 -1
- package/dist/hs-widget.es.js +1 -1
- package/dist/hs-widget.umd.js +2 -2
- package/dist/hs-widget.umd.js.map +1 -1
- package/dist/{index-CHnN3M8o.js → index-BAY6lVL0.js} +269 -248
- package/dist/{index-CHnN3M8o.js.map → index-BAY6lVL0.js.map} +1 -1
- package/dist/{webworkerAll-CIC3WsZz.js → webworkerAll-CAsDses9.js} +3 -3
- package/dist/{webworkerAll-CIC3WsZz.js.map → webworkerAll-CAsDses9.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTargetSystem-BNInd2k4.js","sources":["../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/utils/fastCopy.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/getAdjustedBlendModeBlend.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/utils/maxRecommendedTextures.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatchTextureArray.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/Batcher.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatchGeometry.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/addBits.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileHooks.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileInputs.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileOutputs.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/injectBits.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.mjs","../node_modules/pixi.js/lib/rendering/high-shader/defaultProgramTemplate.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/globalUniformsBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compileHighShaderToProgram.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/colorBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/generateTextureBatchBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/roundPixelsBit.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultShader.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultBatcher.mjs","../node_modules/pixi.js/lib/utils/data/GCManagedHash.mjs","../node_modules/pixi.js/lib/filters/mask/mask.frag.mjs","../node_modules/pixi.js/lib/filters/mask/mask.vert.mjs","../node_modules/pixi.js/lib/filters/mask/mask.wgsl.mjs","../node_modules/pixi.js/lib/filters/mask/MaskFilter.mjs","../node_modules/pixi.js/lib/scene/graphics/gpu/colorToUniform.mjs","../node_modules/pixi.js/lib/scene/sprite/BatchableSprite.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.mjs","../node_modules/pixi.js/lib/scene/container/CustomRenderPipe.mjs","../node_modules/pixi.js/lib/scene/container/utils/executeInstructions.mjs","../node_modules/pixi.js/lib/scene/container/RenderGroupPipe.mjs","../node_modules/pixi.js/lib/scene/sprite/SpritePipe.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.mjs","../node_modules/pixi.js/lib/scene/container/utils/clearList.mjs","../node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs","../node_modules/pixi.js/lib/scene/container/utils/validateRenderables.mjs","../node_modules/pixi.js/lib/scene/container/RenderGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.mjs","../node_modules/pixi.js/lib/utils/data/clean.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/GCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/SchedulerSystem.mjs","../node_modules/pixi.js/lib/utils/sayHello.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderableGCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs"],"sourcesContent":["\"use strict\";\nfunction fastCopy(sourceBuffer, destinationBuffer, sourceOffset, byteLength) {\n sourceOffset ?? (sourceOffset = 0);\n byteLength ?? (byteLength = Math.min(sourceBuffer.byteLength - sourceOffset, destinationBuffer.byteLength));\n if (!(sourceOffset & 7) && !(byteLength & 7)) {\n const len = byteLength / 8;\n new Float64Array(destinationBuffer, 0, len).set(new Float64Array(sourceBuffer, sourceOffset, len));\n } else if (!(sourceOffset & 3) && !(byteLength & 3)) {\n const len = byteLength / 4;\n new Float32Array(destinationBuffer, 0, len).set(new Float32Array(sourceBuffer, sourceOffset, len));\n } else {\n new Uint8Array(destinationBuffer).set(new Uint8Array(sourceBuffer, sourceOffset, byteLength));\n }\n}\n\nexport { fastCopy };\n//# sourceMappingURL=fastCopy.mjs.map\n","\"use strict\";\nconst BLEND_TO_NPM = {\n normal: \"normal-npm\",\n add: \"add-npm\",\n screen: \"screen-npm\"\n};\nvar STENCIL_MODES = /* @__PURE__ */ ((STENCIL_MODES2) => {\n STENCIL_MODES2[STENCIL_MODES2[\"DISABLED\"] = 0] = \"DISABLED\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_ADD\"] = 1] = \"RENDERING_MASK_ADD\";\n STENCIL_MODES2[STENCIL_MODES2[\"MASK_ACTIVE\"] = 2] = \"MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"INVERSE_MASK_ACTIVE\"] = 3] = \"INVERSE_MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_REMOVE\"] = 4] = \"RENDERING_MASK_REMOVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"NONE\"] = 5] = \"NONE\";\n return STENCIL_MODES2;\n})(STENCIL_MODES || {});\n\nexport { BLEND_TO_NPM, STENCIL_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { BLEND_TO_NPM } from './const.mjs';\n\n\"use strict\";\nfunction getAdjustedBlendModeBlend(blendMode, textureSource) {\n if (textureSource.alphaMode === \"no-premultiply-alpha\") {\n return BLEND_TO_NPM[blendMode] || blendMode;\n }\n return blendMode;\n}\n\nexport { getAdjustedBlendModeBlend };\n//# sourceMappingURL=getAdjustedBlendModeBlend.mjs.map\n","\"use strict\";\nconst fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n try {\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n } finally {\n gl.deleteShader(shader);\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","import { getTestContext } from '../../../renderers/gl/shader/program/getTestContext.mjs';\nimport { checkMaxIfStatementsInShader } from './checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nlet maxTexturesPerBatchCache = null;\nfunction getMaxTexturesPerBatch() {\n if (maxTexturesPerBatchCache) return maxTexturesPerBatchCache;\n const gl = getTestContext();\n maxTexturesPerBatchCache = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n maxTexturesPerBatchCache = checkMaxIfStatementsInShader(\n maxTexturesPerBatchCache,\n gl\n );\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n return maxTexturesPerBatchCache;\n}\n\nexport { getMaxTexturesPerBatch };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","\"use strict\";\nclass BatchTextureArray {\n constructor() {\n /** Respective locations for textures. */\n this.ids = /* @__PURE__ */ Object.create(null);\n this.textures = [];\n this.count = 0;\n }\n /** Clear the textures and their locations. */\n clear() {\n for (let i = 0; i < this.count; i++) {\n const t = this.textures[i];\n this.textures[i] = null;\n this.ids[t.uid] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","import { uid } from '../../../utils/data/uid.mjs';\nimport { ViewableBuffer } from '../../../utils/data/ViewableBuffer.mjs';\nimport { deprecation } from '../../../utils/logging/deprecation.mjs';\nimport { GlobalResourceRegistry } from '../../../utils/pool/GlobalResourceRegistry.mjs';\nimport { fastCopy } from '../../renderers/shared/buffer/utils/fastCopy.mjs';\nimport { getAdjustedBlendModeBlend } from '../../renderers/shared/state/getAdjustedBlendModeBlend.mjs';\nimport { getMaxTexturesPerBatch } from '../gl/utils/maxRecommendedTextures.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\n\n\"use strict\";\nclass Batch {\n constructor() {\n this.renderPipeId = \"batch\";\n this.action = \"startBatch\";\n // TODO - eventually this could be useful for flagging batches as dirty and then only rebuilding those ones\n // public elementStart = 0;\n // public elementSize = 0;\n // for drawing..\n this.start = 0;\n this.size = 0;\n this.textures = new BatchTextureArray();\n this.blendMode = \"normal\";\n this.topology = \"triangle-strip\";\n this.canBundle = true;\n }\n destroy() {\n this.textures = null;\n this.gpuBindGroup = null;\n this.bindGroup = null;\n this.batcher = null;\n this.elements = null;\n }\n}\nconst batchPool = [];\nlet batchPoolIndex = 0;\nGlobalResourceRegistry.register({\n clear: () => {\n if (batchPool.length > 0) {\n for (const item of batchPool) {\n if (item) item.destroy();\n }\n }\n batchPool.length = 0;\n batchPoolIndex = 0;\n }\n});\nfunction getBatchFromPool() {\n return batchPoolIndex > 0 ? batchPool[--batchPoolIndex] : new Batch();\n}\nfunction returnBatchToPool(batch) {\n batch.elements = null;\n batchPool[batchPoolIndex++] = batch;\n}\nlet BATCH_TICK = 0;\nconst _Batcher = class _Batcher {\n constructor(options) {\n /** unique id for this batcher */\n this.uid = uid(\"batcher\");\n /** Indicates whether the batch data has been modified and needs updating. */\n this.dirty = true;\n /** The current index of the batch being processed. */\n this.batchIndex = 0;\n /** An array of all batches created during the current rendering process. */\n this.batches = [];\n this._elements = [];\n options = { ..._Batcher.defaultOptions, ...options };\n if (!options.maxTextures) {\n deprecation(\"v8.8.0\", \"maxTextures is a required option for Batcher now, please pass it in the options\");\n options.maxTextures = getMaxTexturesPerBatch();\n }\n const { maxTextures, attributesInitialSize, indicesInitialSize } = options;\n this.attributeBuffer = new ViewableBuffer(attributesInitialSize * 4);\n this.indexBuffer = new Uint16Array(indicesInitialSize);\n this.maxTextures = maxTextures;\n }\n begin() {\n this.elementSize = 0;\n this.elementStart = 0;\n this.indexSize = 0;\n this.attributeSize = 0;\n for (let i = 0; i < this.batchIndex; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batchIndex = 0;\n this._batchIndexStart = 0;\n this._batchIndexSize = 0;\n this.dirty = true;\n }\n add(batchableObject) {\n this._elements[this.elementSize++] = batchableObject;\n batchableObject._indexStart = this.indexSize;\n batchableObject._attributeStart = this.attributeSize;\n batchableObject._batcher = this;\n this.indexSize += batchableObject.indexSize;\n this.attributeSize += batchableObject.attributeSize * this.vertexSize;\n }\n checkAndUpdateTexture(batchableObject, texture) {\n const textureId = batchableObject._batch.textures.ids[texture._source.uid];\n if (!textureId && textureId !== 0) return false;\n batchableObject._textureId = textureId;\n batchableObject.texture = texture;\n return true;\n }\n updateElement(batchableObject) {\n this.dirty = true;\n const attributeBuffer = this.attributeBuffer;\n if (batchableObject.packAsQuad) {\n this.packQuadAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n } else {\n this.packAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n }\n }\n /**\n * breaks the batcher. This happens when a batch gets too big,\n * or we need to switch to a different type of rendering (a filter for example)\n * @param instructionSet\n */\n break(instructionSet) {\n const elements = this._elements;\n if (!elements[this.elementStart]) return;\n let batch = getBatchFromPool();\n let textureBatch = batch.textures;\n textureBatch.clear();\n const firstElement = elements[this.elementStart];\n let blendMode = getAdjustedBlendModeBlend(firstElement.blendMode, firstElement.texture._source);\n let topology = firstElement.topology;\n if (this.attributeSize * 4 > this.attributeBuffer.size) {\n this._resizeAttributeBuffer(this.attributeSize * 4);\n }\n if (this.indexSize > this.indexBuffer.length) {\n this._resizeIndexBuffer(this.indexSize);\n }\n const f32 = this.attributeBuffer.float32View;\n const u32 = this.attributeBuffer.uint32View;\n const indexBuffer = this.indexBuffer;\n let size = this._batchIndexSize;\n let start = this._batchIndexStart;\n let action = \"startBatch\";\n let batchElements = [];\n const maxTextures = this.maxTextures;\n for (let i = this.elementStart; i < this.elementSize; ++i) {\n const element = elements[i];\n elements[i] = null;\n const texture = element.texture;\n const source = texture._source;\n const adjustedBlendMode = getAdjustedBlendModeBlend(element.blendMode, source);\n const breakRequired = blendMode !== adjustedBlendMode || topology !== element.topology;\n if (source._batchTick === BATCH_TICK && !breakRequired) {\n element._textureId = source._textureBindLocation;\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n element._batch = batch;\n batchElements.push(element);\n continue;\n }\n source._batchTick = BATCH_TICK;\n if (textureBatch.count >= maxTextures || breakRequired) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action,\n batchElements\n );\n action = \"renderBatch\";\n start = size;\n blendMode = adjustedBlendMode;\n topology = element.topology;\n batch = getBatchFromPool();\n textureBatch = batch.textures;\n textureBatch.clear();\n batchElements = [];\n ++BATCH_TICK;\n }\n element._textureId = source._textureBindLocation = textureBatch.count;\n textureBatch.ids[source.uid] = textureBatch.count;\n textureBatch.textures[textureBatch.count++] = source;\n element._batch = batch;\n batchElements.push(element);\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n }\n if (textureBatch.count > 0) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action,\n batchElements\n );\n start = size;\n ++BATCH_TICK;\n }\n this.elementStart = this.elementSize;\n this._batchIndexStart = start;\n this._batchIndexSize = size;\n }\n _finishBatch(batch, indexStart, indexSize, textureBatch, blendMode, topology, instructionSet, action, elements) {\n batch.gpuBindGroup = null;\n batch.bindGroup = null;\n batch.action = action;\n batch.batcher = this;\n batch.textures = textureBatch;\n batch.blendMode = blendMode;\n batch.topology = topology;\n batch.start = indexStart;\n batch.size = indexSize;\n batch.elements = elements;\n ++BATCH_TICK;\n this.batches[this.batchIndex++] = batch;\n instructionSet.add(batch);\n }\n finish(instructionSet) {\n this.break(instructionSet);\n }\n /**\n * Resizes the attribute buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureAttributeBuffer(size) {\n if (size * 4 <= this.attributeBuffer.size) return;\n this._resizeAttributeBuffer(size * 4);\n }\n /**\n * Resizes the index buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureIndexBuffer(size) {\n if (size <= this.indexBuffer.length) return;\n this._resizeIndexBuffer(size);\n }\n _resizeAttributeBuffer(size) {\n const newSize = Math.max(size, this.attributeBuffer.size * 2);\n const newArrayBuffer = new ViewableBuffer(newSize);\n fastCopy(this.attributeBuffer.rawBinaryData, newArrayBuffer.rawBinaryData);\n this.attributeBuffer = newArrayBuffer;\n }\n _resizeIndexBuffer(size) {\n const indexBuffer = this.indexBuffer;\n let newSize = Math.max(size, indexBuffer.length * 1.5);\n newSize += newSize % 2;\n const newIndexBuffer = newSize > 65535 ? new Uint32Array(newSize) : new Uint16Array(newSize);\n if (newIndexBuffer.BYTES_PER_ELEMENT !== indexBuffer.BYTES_PER_ELEMENT) {\n for (let i = 0; i < indexBuffer.length; i++) {\n newIndexBuffer[i] = indexBuffer[i];\n }\n } else {\n fastCopy(indexBuffer.buffer, newIndexBuffer.buffer);\n }\n this.indexBuffer = newIndexBuffer;\n }\n packQuadIndex(indexBuffer, index, indicesOffset) {\n indexBuffer[index] = indicesOffset + 0;\n indexBuffer[index + 1] = indicesOffset + 1;\n indexBuffer[index + 2] = indicesOffset + 2;\n indexBuffer[index + 3] = indicesOffset + 0;\n indexBuffer[index + 4] = indicesOffset + 2;\n indexBuffer[index + 5] = indicesOffset + 3;\n }\n packIndex(element, indexBuffer, index, indicesOffset) {\n const indices = element.indices;\n const size = element.indexSize;\n const indexOffset = element.indexOffset;\n const attributeOffset = element.attributeOffset;\n for (let i = 0; i < size; i++) {\n indexBuffer[index++] = indicesOffset + indices[i + indexOffset] - attributeOffset;\n }\n }\n /**\n * Destroys the batch and its resources.\n * @param options - destruction options\n * @param options.shader - whether to destroy the associated shader\n */\n destroy(options = {}) {\n if (this.batches === null) return;\n for (let i = 0; i < this.batchIndex; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batches = null;\n this.geometry.destroy(true);\n this.geometry = null;\n if (options.shader) {\n this.shader?.destroy();\n this.shader = null;\n }\n for (let i = 0; i < this._elements.length; i++) {\n if (this._elements[i]) this._elements[i]._batch = null;\n }\n this._elements = null;\n this.indexBuffer = null;\n this.attributeBuffer.destroy();\n this.attributeBuffer = null;\n }\n};\n_Batcher.defaultOptions = {\n maxTextures: null,\n attributesInitialSize: 4,\n indicesInitialSize: 6\n};\nlet Batcher = _Batcher;\n\nexport { Batch, Batcher };\n//# sourceMappingURL=Batcher.mjs.map\n","import { Buffer } from '../../renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../renderers/shared/geometry/Geometry.mjs';\n\n\"use strict\";\nconst placeHolderBufferData = new Float32Array(1);\nconst placeHolderIndexData = new Uint32Array(1);\nclass BatchGeometry extends Geometry {\n constructor() {\n const vertexSize = 6;\n const attributeBuffer = new Buffer({\n data: placeHolderBufferData,\n label: \"attribute-batch-buffer\",\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n shrinkToFit: false\n });\n const indexBuffer = new Buffer({\n data: placeHolderIndexData,\n label: \"index-batch-buffer\",\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST,\n // | BufferUsage.STATIC,\n shrinkToFit: false\n });\n const stride = vertexSize * 4;\n super({\n attributes: {\n aPosition: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 0\n },\n aUV: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 2 * 4\n },\n aColor: {\n buffer: attributeBuffer,\n format: \"unorm8x4\",\n stride,\n offset: 4 * 4\n },\n aTextureIdAndRound: {\n buffer: attributeBuffer,\n format: \"uint16x2\",\n stride,\n offset: 5 * 4\n }\n },\n indexBuffer\n });\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","import { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction addBits(srcParts, parts, name) {\n if (srcParts) {\n for (const i in srcParts) {\n const id = i.toLocaleLowerCase();\n const part = parts[id];\n if (part) {\n let sanitisedPart = srcParts[i];\n if (i === \"header\") {\n sanitisedPart = sanitisedPart.replace(/@in\\s+[^;]+;\\s*/g, \"\").replace(/@out\\s+[^;]+;\\s*/g, \"\");\n }\n if (name) {\n part.push(`//----${name}----//`);\n }\n part.push(sanitisedPart);\n } else {\n warn(`${i} placement hook does not exist in shader`);\n }\n }\n }\n}\n\nexport { addBits };\n//# sourceMappingURL=addBits.mjs.map\n","\"use strict\";\nconst findHooksRx = /\\{\\{(.*?)\\}\\}/g;\nfunction compileHooks(programSrc) {\n const parts = {};\n const partMatches = programSrc.match(findHooksRx)?.map((hook) => hook.replace(/[{()}]/g, \"\")) ?? [];\n partMatches.forEach((hook) => {\n parts[hook] = [];\n });\n return parts;\n}\n\nexport { compileHooks };\n//# sourceMappingURL=compileHooks.mjs.map\n","\"use strict\";\nfunction extractInputs(fragmentSource, out) {\n let match;\n const regex = /@in\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction compileInputs(fragments, template, sort = false) {\n const results = [];\n extractInputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractInputs(fragment.header, results);\n }\n });\n const mainInput = results;\n if (sort) {\n mainInput.sort();\n }\n const finalString = mainInput.map((inValue, i) => ` @location(${i}) ${inValue},`).join(\"\\n\");\n let cleanedString = template.replace(/@in\\s+[^;]+;\\s*/g, \"\");\n cleanedString = cleanedString.replace(\"{{in}}\", `\n${finalString}\n`);\n return cleanedString;\n}\n\nexport { compileInputs };\n//# sourceMappingURL=compileInputs.mjs.map\n","\"use strict\";\nfunction extractOutputs(fragmentSource, out) {\n let match;\n const regex = /@out\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction extractVariableName(value) {\n const regex = /\\b(\\w+)\\s*:/g;\n const match = regex.exec(value);\n return match ? match[1] : \"\";\n}\nfunction stripVariable(value) {\n const regex = /@.*?\\s+/g;\n return value.replace(regex, \"\");\n}\nfunction compileOutputs(fragments, template) {\n const results = [];\n extractOutputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractOutputs(fragment.header, results);\n }\n });\n let index = 0;\n const mainStruct = results.sort().map((inValue) => {\n if (inValue.indexOf(\"builtin\") > -1) {\n return inValue;\n }\n return `@location(${index++}) ${inValue}`;\n }).join(\",\\n\");\n const mainStart = results.sort().map((inValue) => ` var ${stripVariable(inValue)};`).join(\"\\n\");\n const mainEnd = `return VSOutput(\n ${results.sort().map((inValue) => ` ${extractVariableName(inValue)}`).join(\",\\n\")});`;\n let compiledCode = template.replace(/@out\\s+[^;]+;\\s*/g, \"\");\n compiledCode = compiledCode.replace(\"{{struct}}\", `\n${mainStruct}\n`);\n compiledCode = compiledCode.replace(\"{{start}}\", `\n${mainStart}\n`);\n compiledCode = compiledCode.replace(\"{{return}}\", `\n${mainEnd}\n`);\n return compiledCode;\n}\n\nexport { compileOutputs };\n//# sourceMappingURL=compileOutputs.mjs.map\n","\"use strict\";\nfunction injectBits(templateSrc, fragmentParts) {\n let out = templateSrc;\n for (const i in fragmentParts) {\n const parts = fragmentParts[i];\n const toInject = parts.join(\"\\n\");\n if (toInject.length) {\n out = out.replace(`{{${i}}}`, `//-----${i} START-----//\n${parts.join(\"\\n\")}\n//----${i} FINISH----//`);\n } else {\n out = out.replace(`{{${i}}}`, \"\");\n }\n }\n return out;\n}\n\nexport { injectBits };\n//# sourceMappingURL=injectBits.mjs.map\n","import { addBits } from './utils/addBits.mjs';\nimport { compileHooks } from './utils/compileHooks.mjs';\nimport { compileInputs } from './utils/compileInputs.mjs';\nimport { compileOutputs } from './utils/compileOutputs.mjs';\nimport { injectBits } from './utils/injectBits.mjs';\n\n\"use strict\";\nconst cacheMap = /* @__PURE__ */ Object.create(null);\nconst bitCacheMap = /* @__PURE__ */ new Map();\nlet CACHE_UID = 0;\nfunction compileHighShader({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n const { vertex, fragment } = compileInputsAndOutputs(template, bits);\n cacheMap[cacheId] = compileBits(vertex, fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileHighShaderGl({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileInputsAndOutputs(template, bits) {\n const vertexFragments = bits.map((shaderBit) => shaderBit.vertex).filter((v) => !!v);\n const fragmentFragments = bits.map((shaderBit) => shaderBit.fragment).filter((v) => !!v);\n let compiledVertex = compileInputs(vertexFragments, template.vertex, true);\n compiledVertex = compileOutputs(vertexFragments, compiledVertex);\n const compiledFragment = compileInputs(fragmentFragments, template.fragment, true);\n return {\n vertex: compiledVertex,\n fragment: compiledFragment\n };\n}\nfunction generateCacheId(template, bits) {\n return bits.map((highFragment) => {\n if (!bitCacheMap.has(highFragment)) {\n bitCacheMap.set(highFragment, CACHE_UID++);\n }\n return bitCacheMap.get(highFragment);\n }).sort((a, b) => a - b).join(\"-\") + template.vertex + template.fragment;\n}\nfunction compileBits(vertex, fragment, bits) {\n const vertexParts = compileHooks(vertex);\n const fragmentParts = compileHooks(fragment);\n bits.forEach((shaderBit) => {\n addBits(shaderBit.vertex, vertexParts, shaderBit.name);\n addBits(shaderBit.fragment, fragmentParts, shaderBit.name);\n });\n return {\n vertex: injectBits(vertex, vertexParts),\n fragment: injectBits(fragment, fragmentParts)\n };\n}\n\nexport { compileHighShader, compileHighShaderGl };\n//# sourceMappingURL=compileHighShader.mjs.map\n","\"use strict\";\nconst vertexGPUTemplate = (\n /* wgsl */\n `\n @in aPosition: vec2<f32>;\n @in aUV: vec2<f32>;\n\n @out @builtin(position) vPosition: vec4<f32>;\n @out vUV : vec2<f32>;\n @out vColor : vec4<f32>;\n\n {{header}}\n\n struct VSOutput {\n {{struct}}\n };\n\n @vertex\n fn main( {{in}} ) -> VSOutput {\n\n var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;\n var modelMatrix = mat3x3<f32>(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n var position = aPosition;\n var uv = aUV;\n\n {{start}}\n\n vColor = vec4<f32>(1., 1., 1., 1.);\n\n {{main}}\n\n vUV = uv;\n\n var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= globalUniforms.uWorldColorAlpha;\n\n {{end}}\n\n {{return}}\n };\n`\n);\nconst fragmentGPUTemplate = (\n /* wgsl */\n `\n @in vUV : vec2<f32>;\n @in vColor : vec4<f32>;\n\n {{header}}\n\n @fragment\n fn main(\n {{in}}\n ) -> @location(0) vec4<f32> {\n\n {{start}}\n\n var outColor:vec4<f32>;\n\n {{main}}\n\n var finalColor:vec4<f32> = outColor * vColor;\n\n {{end}}\n\n return finalColor;\n };\n`\n);\nconst vertexGlTemplate = (\n /* glsl */\n `\n in vec2 aPosition;\n in vec2 aUV;\n\n out vec4 vColor;\n out vec2 vUV;\n\n {{header}}\n\n void main(void){\n\n mat3 worldTransformMatrix = uWorldTransformMatrix;\n mat3 modelMatrix = mat3(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n vec2 position = aPosition;\n vec2 uv = aUV;\n\n {{start}}\n\n vColor = vec4(1.);\n\n {{main}}\n\n vUV = uv;\n\n mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= uWorldColorAlpha;\n\n {{end}}\n }\n`\n);\nconst fragmentGlTemplate = (\n /* glsl */\n `\n\n in vec4 vColor;\n in vec2 vUV;\n\n out vec4 finalColor;\n\n {{header}}\n\n void main(void) {\n\n {{start}}\n\n vec4 outColor;\n\n {{main}}\n\n finalColor = outColor * vColor;\n\n {{end}}\n }\n`\n);\n\nexport { fragmentGPUTemplate, fragmentGlTemplate, vertexGPUTemplate, vertexGlTemplate };\n//# sourceMappingURL=defaultProgramTemplate.mjs.map\n","\"use strict\";\nconst globalUniformsBit = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uWorldTransformMatrix:mat3x3<f32>,\n uWorldColorAlpha: vec4<f32>,\n uResolution: vec2<f32>,\n }\n\n @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n `\n )\n }\n};\nconst globalUniformsUBOBitGl = {\n name: \"global-uniforms-ubo-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n )\n }\n};\nconst globalUniformsBitGl = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n )\n }\n};\n\nexport { globalUniformsBit, globalUniformsBitGl, globalUniformsUBOBitGl };\n//# sourceMappingURL=globalUniformsBit.mjs.map\n","import { GlProgram } from '../renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../renderers/gpu/shader/GpuProgram.mjs';\nimport { compileHighShader, compileHighShaderGl } from './compiler/compileHighShader.mjs';\nimport { vertexGPUTemplate, fragmentGPUTemplate, fragmentGlTemplate, vertexGlTemplate } from './defaultProgramTemplate.mjs';\nimport { globalUniformsBit, globalUniformsBitGl } from './shader-bits/globalUniformsBit.mjs';\n\n\"use strict\";\nfunction compileHighShaderGpuProgram({ bits, name }) {\n const source = compileHighShader({\n template: {\n fragment: fragmentGPUTemplate,\n vertex: vertexGPUTemplate\n },\n bits: [\n globalUniformsBit,\n ...bits\n ]\n });\n return GpuProgram.from({\n name,\n vertex: {\n source: source.vertex,\n entryPoint: \"main\"\n },\n fragment: {\n source: source.fragment,\n entryPoint: \"main\"\n }\n });\n}\nfunction compileHighShaderGlProgram({ bits, name }) {\n return new GlProgram({\n name,\n ...compileHighShaderGl({\n template: {\n vertex: vertexGlTemplate,\n fragment: fragmentGlTemplate\n },\n bits: [\n globalUniformsBitGl,\n ...bits\n ]\n })\n });\n}\n\nexport { compileHighShaderGlProgram, compileHighShaderGpuProgram };\n//# sourceMappingURL=compileHighShaderToProgram.mjs.map\n","\"use strict\";\nconst colorBit = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n @in aColor: vec4<f32>;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\nconst colorBitGl = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n in vec4 aColor;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\n\nexport { colorBit, colorBitGl };\n//# sourceMappingURL=colorBit.mjs.map\n","\"use strict\";\nconst textureBatchBitGpuCache = {};\nfunction generateBindingSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"@group(1) @binding(0) var textureSource1: texture_2d<f32>;\");\n src.push(\"@group(1) @binding(1) var textureSampler1: sampler;\");\n } else {\n let bindingIndex = 0;\n for (let i = 0; i < maxTextures; i++) {\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d<f32>;`);\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);\n }\n }\n return src.join(\"\\n\");\n}\nfunction generateSampleSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);\");\n } else {\n src.push(\"switch vTextureId {\");\n for (let i = 0; i < maxTextures; i++) {\n if (i === maxTextures - 1) {\n src.push(` default:{`);\n } else {\n src.push(` case ${i}:{`);\n }\n src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);\n src.push(` break;}`);\n }\n src.push(`}`);\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBit(maxTextures) {\n if (!textureBatchBitGpuCache[maxTextures]) {\n textureBatchBitGpuCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n @in aTextureIdAndRound: vec2<u32>;\n @out @interpolate(flat) vTextureId : u32;\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1)\n {\n vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n fragment: {\n header: `\n @in @interpolate(flat) vTextureId: u32;\n\n ${generateBindingSrc(maxTextures)}\n `,\n main: `\n var uvDx = dpdx(vUV);\n var uvDy = dpdy(vUV);\n\n ${generateSampleSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGpuCache[maxTextures];\n}\nconst textureBatchBitGlCache = {};\nfunction generateSampleGlSrc(maxTextures) {\n const src = [];\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src.push(\"else\");\n }\n if (i < maxTextures - 1) {\n src.push(`if(vTextureId < ${i}.5)`);\n }\n src.push(\"{\");\n src.push(`\toutColor = texture(uTextures[${i}], vUV);`);\n src.push(\"}\");\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBitGl(maxTextures) {\n if (!textureBatchBitGlCache[maxTextures]) {\n textureBatchBitGlCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n in vec2 aTextureIdAndRound;\n out float vTextureId;\n\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n fragment: {\n header: `\n in float vTextureId;\n\n uniform sampler2D uTextures[${maxTextures}];\n\n `,\n main: `\n\n ${generateSampleGlSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGlCache[maxTextures];\n}\n\nexport { generateTextureBatchBit, generateTextureBatchBitGl };\n//# sourceMappingURL=generateTextureBatchBit.mjs.map\n","\"use strict\";\nconst roundPixelsBit = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>\n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\nconst roundPixelsBitGl = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n vec2 roundPixels(vec2 position, vec2 targetSize)\n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\n\nexport { roundPixelsBit, roundPixelsBitGl };\n//# sourceMappingURL=roundPixelsBit.mjs.map\n","import { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst batchSamplersUniformGroupHash = {};\nfunction getBatchSamplersUniformGroup(maxTextures) {\n let batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures];\n if (batchSamplersUniformGroup) return batchSamplersUniformGroup;\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures] = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: maxTextures }\n }, { isStatic: true });\n return batchSamplersUniformGroup;\n}\n\nexport { getBatchSamplersUniformGroup };\n//# sourceMappingURL=getBatchSamplersUniformGroup.mjs.map\n","import { compileHighShaderGlProgram, compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl, colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl, generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBitGl, roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\n\n\"use strict\";\nclass DefaultShader extends Shader {\n constructor(maxTextures) {\n const glProgram = compileHighShaderGlProgram({\n name: \"batch\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n roundPixelsBitGl\n ]\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(maxTextures),\n roundPixelsBit\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n this.maxTextures = maxTextures;\n }\n}\n\nexport { DefaultShader };\n//# sourceMappingURL=DefaultShader.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Batcher } from './Batcher.mjs';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport { DefaultShader } from './DefaultShader.mjs';\n\n\"use strict\";\nlet defaultShader = null;\nconst _DefaultBatcher = class _DefaultBatcher extends Batcher {\n constructor(options) {\n super(options);\n this.geometry = new BatchGeometry();\n this.name = _DefaultBatcher.extension.name;\n /** The size of one attribute. 1 = 32 bit. x, y, u, v, color, textureIdAndRound -> total = 6 */\n this.vertexSize = 6;\n defaultShader ?? (defaultShader = new DefaultShader(options.maxTextures));\n this.shader = defaultShader;\n }\n /**\n * Packs the attributes of a DefaultBatchableMeshElement into the provided views.\n * @param element - The DefaultBatchableMeshElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packAttributes(element, float32View, uint32View, index, textureId) {\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n const wt = element.transform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const { positions, uvs } = element;\n const argb = element.color;\n const offset = element.attributeOffset;\n const end = offset + element.attributeSize;\n for (let i = offset; i < end; i++) {\n const i2 = i * 2;\n const x = positions[i2];\n const y = positions[i2 + 1];\n float32View[index++] = a * x + c * y + tx;\n float32View[index++] = d * y + b * x + ty;\n float32View[index++] = uvs[i2];\n float32View[index++] = uvs[i2 + 1];\n uint32View[index++] = argb;\n uint32View[index++] = textureIdAndRound;\n }\n }\n /**\n * Packs the attributes of a DefaultBatchableQuadElement into the provided views.\n * @param element - The DefaultBatchableQuadElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packQuadAttributes(element, float32View, uint32View, index, textureId) {\n const texture = element.texture;\n const wt = element.transform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const bounds = element.bounds;\n const w0 = bounds.maxX;\n const w1 = bounds.minX;\n const h0 = bounds.maxY;\n const h1 = bounds.minY;\n const uvs = texture.uvs;\n const argb = element.color;\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n float32View[index + 0] = a * w1 + c * h1 + tx;\n float32View[index + 1] = d * h1 + b * w1 + ty;\n float32View[index + 2] = uvs.x0;\n float32View[index + 3] = uvs.y0;\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n float32View[index + 6] = a * w0 + c * h1 + tx;\n float32View[index + 7] = d * h1 + b * w0 + ty;\n float32View[index + 8] = uvs.x1;\n float32View[index + 9] = uvs.y1;\n uint32View[index + 10] = argb;\n uint32View[index + 11] = textureIdAndRound;\n float32View[index + 12] = a * w0 + c * h0 + tx;\n float32View[index + 13] = d * h0 + b * w0 + ty;\n float32View[index + 14] = uvs.x2;\n float32View[index + 15] = uvs.y2;\n uint32View[index + 16] = argb;\n uint32View[index + 17] = textureIdAndRound;\n float32View[index + 18] = a * w1 + c * h0 + tx;\n float32View[index + 19] = d * h0 + b * w1 + ty;\n float32View[index + 20] = uvs.x3;\n float32View[index + 21] = uvs.y3;\n uint32View[index + 22] = argb;\n uint32View[index + 23] = textureIdAndRound;\n }\n /**\n * Updates the maximum number of textures that can be used in the shader.\n * @param maxTextures - The maximum number of textures that can be used in the shader.\n * @internal\n */\n _updateMaxTextures(maxTextures) {\n if (this.shader.maxTextures === maxTextures) return;\n defaultShader = new DefaultShader(maxTextures);\n this.shader = defaultShader;\n }\n destroy() {\n this.shader = null;\n super.destroy();\n }\n};\n/** @ignore */\n_DefaultBatcher.extension = {\n type: [\n ExtensionType.Batcher\n ],\n name: \"default\"\n};\nlet DefaultBatcher = _DefaultBatcher;\n\nexport { DefaultBatcher };\n//# sourceMappingURL=DefaultBatcher.mjs.map\n","\"use strict\";\nclass GCManagedHash {\n constructor(options) {\n // Exposed directly for GC system access\n this.items = /* @__PURE__ */ Object.create(null);\n const { renderer, type, onUnload, priority, name } = options;\n this._renderer = renderer;\n renderer.gc.addResourceHash(this, \"items\", type, priority ?? 0);\n this._onUnload = onUnload;\n this.name = name;\n }\n /**\n * Add an item to the hash. No-op if already added.\n * @param item\n * @returns true if the item was added, false if it was already in the hash\n */\n add(item) {\n if (this.items[item.uid]) return false;\n this.items[item.uid] = item;\n item.once(\"unload\", this.remove, this);\n item._gcLastUsed = this._renderer.gc.now;\n return true;\n }\n remove(item, ...args) {\n if (!this.items[item.uid]) return;\n const gpuData = item._gpuData[this._renderer.uid];\n if (!gpuData) return;\n this._onUnload?.(item, ...args);\n gpuData.destroy();\n item._gpuData[this._renderer.uid] = null;\n this.items[item.uid] = null;\n }\n removeAll(...args) {\n Object.values(this.items).forEach((item) => item && this.remove(item, ...args));\n }\n destroy(...args) {\n this.removeAll(...args);\n this.items = /* @__PURE__ */ Object.create(null);\n this._renderer = null;\n this._onUnload = null;\n }\n}\n\nexport { GCManagedHash };\n//# sourceMappingURL=GCManagedHash.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;\\nuniform float uInverse;\\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 float a = alphaMul * masky.r * npmAlpha * clip;\\n\\n if (uInverse == 1.0) {\\n a = 1.0 - a;\\n }\\n\\n finalColor = original * a;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mask.frag.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 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 uInverse:f32,\\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 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 var uAlpha = filterUniforms.uAlpha;\\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 var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);\\n\\n var a: f32 = alphaMul * mask.r * uAlpha * clip;\\n\\n if (filterUniforms.uInverse == 1.0) {\\n a = 1.0 - a;\\n }\\n\\n return source * a;\\n}\\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 uInverse: { value: options.inverse ? 1 : 0, 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 clipToViewport: false,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source\n }\n });\n this.sprite = sprite;\n this._textureMatrix = textureMatrix;\n }\n set inverse(value) {\n this.resources.filterUniforms.uniforms.uInverse = value ? 1 : 0;\n }\n get inverse() {\n return this.resources.filterUniforms.uniforms.uInverse === 1;\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","\"use strict\";\nfunction colorToUniform(rgb, alpha, out, offset) {\n out[offset++] = (rgb >> 16 & 255) / 255;\n out[offset++] = (rgb >> 8 & 255) / 255;\n out[offset++] = (rgb & 255) / 255;\n out[offset++] = alpha;\n}\nfunction color32BitToUniform(abgr, out, offset) {\n const alpha = (abgr >> 24 & 255) / 255;\n out[offset++] = (abgr & 255) / 255 * alpha;\n out[offset++] = (abgr >> 8 & 255) / 255 * alpha;\n out[offset++] = (abgr >> 16 & 255) / 255 * alpha;\n out[offset++] = alpha;\n}\n\nexport { color32BitToUniform, colorToUniform };\n//# sourceMappingURL=colorToUniform.mjs.map\n","\"use strict\";\nclass BatchableSprite {\n constructor() {\n this.batcherName = \"default\";\n this.topology = \"triangle-list\";\n // batch specific..\n this.attributeSize = 4;\n this.indexSize = 6;\n this.packAsQuad = true;\n this.roundPixels = 0;\n this._attributeStart = 0;\n // location in the buffer\n this._batcher = null;\n this._batch = null;\n }\n get blendMode() {\n return this.renderable.groupBlendMode;\n }\n get color() {\n return this.renderable.groupColorAlpha;\n }\n reset() {\n this.renderable = null;\n this.texture = null;\n this._batcher = null;\n this._batch = null;\n this.bounds = null;\n }\n destroy() {\n this.reset();\n }\n}\n\nexport { BatchableSprite };\n//# sourceMappingURL=BatchableSprite.mjs.map\n","import { ExtensionType, extensions } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { DefaultBatcher } from './DefaultBatcher.mjs';\n\n\"use strict\";\nconst _BatcherPipe = class _BatcherPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n this._batchersByInstructionSet = /* @__PURE__ */ Object.create(null);\n /** A record of all active batchers, keyed by their names */\n this._activeBatches = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init?.(this);\n }\n static getBatcher(name) {\n return new this._availableBatchers[name]();\n }\n buildStart(instructionSet) {\n let batchers = this._batchersByInstructionSet[instructionSet.uid];\n if (!batchers) {\n batchers = this._batchersByInstructionSet[instructionSet.uid] = /* @__PURE__ */ Object.create(null);\n batchers.default || (batchers.default = new DefaultBatcher({\n maxTextures: this.renderer.limits.maxBatchableTextures\n }));\n }\n this._activeBatches = batchers;\n this._activeBatch = this._activeBatches.default;\n for (const i in this._activeBatches) {\n this._activeBatches[i].begin();\n }\n }\n addToBatch(batchableObject, instructionSet) {\n if (this._activeBatch.name !== batchableObject.batcherName) {\n this._activeBatch.break(instructionSet);\n let batch = this._activeBatches[batchableObject.batcherName];\n if (!batch) {\n batch = this._activeBatches[batchableObject.batcherName] = _BatcherPipe.getBatcher(batchableObject.batcherName);\n batch.begin();\n }\n this._activeBatch = batch;\n }\n this._activeBatch.add(batchableObject);\n }\n break(instructionSet) {\n this._activeBatch.break(instructionSet);\n }\n buildEnd(instructionSet) {\n this._activeBatch.break(instructionSet);\n const batches = this._activeBatches;\n for (const i in batches) {\n const batch = batches[i];\n const geometry = batch.geometry;\n geometry.indexBuffer.setDataWithSize(batch.indexBuffer, batch.indexSize, true);\n geometry.buffers[0].setDataWithSize(batch.attributeBuffer.float32View, batch.attributeSize, false);\n }\n }\n upload(instructionSet) {\n const batchers = this._batchersByInstructionSet[instructionSet.uid];\n for (const i in batchers) {\n const batcher = batchers[i];\n const geometry = batcher.geometry;\n if (batcher.dirty) {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n }\n execute(batch) {\n if (batch.action === \"startBatch\") {\n const batcher = batch.batcher;\n const geometry = batcher.geometry;\n const shader = batcher.shader;\n this._adaptor.start(this, geometry, shader);\n }\n this._adaptor.execute(this, batch);\n }\n destroy() {\n this.state = null;\n this.renderer = null;\n this._adaptor = null;\n for (const i in this._activeBatches) {\n this._activeBatches[i].destroy();\n }\n this._activeBatches = null;\n }\n};\n/** @ignore */\n_BatcherPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"batch\"\n};\n_BatcherPipe._availableBatchers = /* @__PURE__ */ Object.create(null);\nlet BatcherPipe = _BatcherPipe;\nextensions.handleByMap(ExtensionType.Batcher, BatcherPipe._availableBatchers);\nextensions.add(DefaultBatcher);\n\nexport { BatcherPipe };\n//# sourceMappingURL=BatcherPipe.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 { 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';\nimport { RendererType } from '../../renderers/types.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nclass AlphaMaskEffect extends FilterEffect {\n constructor() {\n super();\n this.filters = [new MaskFilter({\n sprite: new Sprite(Texture.EMPTY),\n inverse: false,\n resolution: \"inherit\",\n antialias: \"inherit\"\n })];\n }\n get sprite() {\n return this.filters[0].sprite;\n }\n set sprite(value) {\n this.filters[0].sprite = value;\n }\n get inverse() {\n return this.filters[0].inverse;\n }\n set inverse(value) {\n this.filters[0].inverse = 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 inverse: maskedContainer._maskOptions.inverse,\n canBundle: false,\n maskedContainer\n });\n mask.inverse = maskedContainer._maskOptions.inverse;\n if (mask.renderMaskToTexture) {\n const maskContainer = mask.mask;\n maskContainer.includeInBuild = true;\n maskContainer.collectRenderables(\n instructionSet,\n renderer,\n null\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 inverse: maskedContainer._maskOptions.inverse,\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 inverse: _maskedContainer._maskOptions.inverse,\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 filterEffect.inverse = instruction.inverse;\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 colorTextureSource = renderer.renderTarget.renderTarget.colorTexture.source;\n const filterTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n colorTextureSource._resolution,\n colorTextureSource.antialias\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 if (renderer.type === RendererType.WEBGL) {\n renderer.renderTarget.finishRenderPass();\n }\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._renderer = null;\n this._colorStack = null;\n }\n}\n/** @ignore */\nColorMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes\n ],\n name: \"colorMask\"\n};\n\nexport { ColorMaskPipe };\n//# sourceMappingURL=ColorMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.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 inverse: _container._maskOptions.inverse,\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 maskContainer.collectRenderables(\n instructionSet,\n renderer,\n null\n );\n maskContainer.includeInBuild = false;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskEnd\",\n mask,\n inverse: _container._maskOptions.inverse,\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 inverse: _container._maskOptions.inverse,\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 gpuRenderer = renderer;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n let maskStackIndex = (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n if (instruction.action === \"pushMaskBegin\") {\n gpuRenderer.renderTarget.ensureDepthStencil();\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD, maskStackIndex);\n maskStackIndex++;\n gpuRenderer.colorMask.setMask(0);\n } else if (instruction.action === \"pushMaskEnd\") {\n if (instruction.inverse) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE, maskStackIndex);\n } else {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n }\n gpuRenderer.colorMask.setMask(15);\n } else if (instruction.action === \"popMaskBegin\") {\n gpuRenderer.colorMask.setMask(0);\n if (maskStackIndex !== 0) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE, maskStackIndex);\n } else {\n gpuRenderer.renderTarget.clear(null, CLEAR.STENCIL);\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.DISABLED, maskStackIndex);\n }\n maskStackIndex--;\n } else if (instruction.action === \"popMaskEnd\") {\n if (instruction.inverse) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE, maskStackIndex);\n } else {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n }\n gpuRenderer.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 ],\n name: \"stencilMask\"\n};\n\nexport { StencilMaskPipe };\n//# sourceMappingURL=StencilMaskPipe.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CustomRenderPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n updateRenderable() {\n }\n destroyRenderable() {\n }\n validateRenderable() {\n return false;\n }\n addRenderable(container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(container);\n }\n execute(container) {\n if (!container.isRenderable) 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 { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../sprite/BatchableSprite.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 if (renderGroup.isCachedAsTexture) {\n this._addRenderableCacheAsTexture(renderGroup, instructionSet);\n } else {\n this._addRenderableDirect(renderGroup, instructionSet);\n }\n }\n execute(renderGroup) {\n if (!renderGroup.isRenderable) return;\n if (renderGroup.isCachedAsTexture) {\n this._executeCacheAsTexture(renderGroup);\n } else {\n this._executeDirect(renderGroup);\n }\n }\n destroy() {\n this._renderer = null;\n }\n _addRenderableDirect(renderGroup, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n if (renderGroup._batchableRenderGroup) {\n BigPool.return(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup = null;\n }\n instructionSet.add(renderGroup);\n }\n _addRenderableCacheAsTexture(renderGroup, instructionSet) {\n const batchableRenderGroup = renderGroup._batchableRenderGroup ?? (renderGroup._batchableRenderGroup = BigPool.get(BatchableSprite));\n batchableRenderGroup.renderable = renderGroup.root;\n batchableRenderGroup.transform = renderGroup.root.relativeGroupTransform;\n batchableRenderGroup.texture = renderGroup.texture;\n batchableRenderGroup.bounds = renderGroup._textureBounds;\n instructionSet.add(renderGroup);\n this._renderer.renderPipes.blendMode.pushBlendMode(renderGroup, renderGroup.root.groupBlendMode, instructionSet);\n this._renderer.renderPipes.batch.addToBatch(batchableRenderGroup, instructionSet);\n this._renderer.renderPipes.blendMode.popBlendMode(instructionSet);\n }\n _executeCacheAsTexture(renderGroup) {\n if (renderGroup.textureNeedsUpdate) {\n renderGroup.textureNeedsUpdate = false;\n const worldTransformMatrix = new Matrix().translate(\n -renderGroup._textureBounds.x,\n -renderGroup._textureBounds.y\n );\n this._renderer.renderTarget.push(renderGroup.texture, true, null, renderGroup.texture.frame);\n this._renderer.globalUniforms.push({\n worldTransformMatrix,\n worldColor: 4294967295,\n offset: { x: 0, y: 0 }\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.renderTarget.finishRenderPass();\n this._renderer.renderTarget.pop();\n this._renderer.globalUniforms.pop();\n }\n renderGroup._batchableRenderGroup._batcher.updateElement(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup._batcher.geometry.buffers[0].update();\n }\n _executeDirect(renderGroup) {\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.inverseParentTextureTransform,\n worldColor: renderGroup.worldColorAlpha\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.globalUniforms.pop();\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","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BatchableSprite } from './BatchableSprite.mjs';\n\n\"use strict\";\nclass SpritePipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderable(sprite, instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite, instructionSet);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite._batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const gpuSprite = this._getGpuSprite(sprite);\n return !gpuSprite._batcher.checkAndUpdateTexture(\n gpuSprite,\n sprite._texture\n );\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n batchableSprite.bounds = sprite.visualBounds;\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return sprite._gpuData[this._renderer.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableSprite = new BatchableSprite();\n batchableSprite.renderable = sprite;\n batchableSprite.transform = sprite.groupTransform;\n batchableSprite.texture = sprite._texture;\n batchableSprite.bounds = sprite.visualBounds;\n batchableSprite.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n sprite._gpuData[this._renderer.uid] = batchableSprite;\n return batchableSprite;\n }\n destroy() {\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 { extensions, ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../../filters/FilterEffect.mjs';\nimport { RenderGroup } from '../../../../scene/container/RenderGroup.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._blendModeStack = [];\n this._isAdvanced = false;\n this._filterHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._renderer.runners.prerender.add(this);\n }\n prerender() {\n this._activeBlendMode = \"normal\";\n this._isAdvanced = false;\n }\n /**\n * Push a blend mode onto the internal stack and apply it to the instruction set if needed.\n * @param renderable - The renderable or {@link RenderGroup} associated with the change.\n * @param blendMode - The blend mode to activate.\n * @param instructionSet - The instruction set being built.\n */\n pushBlendMode(renderable, blendMode, instructionSet) {\n this._blendModeStack.push(blendMode);\n this.setBlendMode(renderable, blendMode, instructionSet);\n }\n /**\n * Pop the last blend mode from the stack and apply the new top-of-stack mode.\n * @param instructionSet - The instruction set being built.\n */\n popBlendMode(instructionSet) {\n this._blendModeStack.pop();\n const blendMode = this._blendModeStack[this._activeBlendMode.length - 1] ?? \"normal\";\n this.setBlendMode(null, blendMode, instructionSet);\n }\n /**\n * Ensure a blend mode switch is added to the instruction set when the mode changes.\n * If an advanced blend mode is active, subsequent renderables will be collected so they can be\n * rendered within a single filter pass.\n * @param renderable - The renderable or {@link RenderGroup} to associate with the change, or null when unwinding.\n * @param blendMode - The target blend mode.\n * @param instructionSet - The instruction set being built.\n */\n setBlendMode(renderable, blendMode, instructionSet) {\n const isRenderGroup = renderable instanceof RenderGroup;\n if (this._activeBlendMode === blendMode) {\n if (this._isAdvanced && renderable && !isRenderGroup) {\n this._renderableList?.push(renderable);\n }\n return;\n }\n if (this._isAdvanced) this._endAdvancedBlendMode(instructionSet);\n this._activeBlendMode = blendMode;\n if (!renderable) return;\n this._isAdvanced = !!BLEND_MODE_FILTERS[blendMode];\n if (this._isAdvanced) this._beginAdvancedBlendMode(renderable, instructionSet);\n }\n _beginAdvancedBlendMode(renderable, 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 const filterEffect = this._ensureFilterEffect(blendMode);\n const isRenderGroup = renderable instanceof RenderGroup;\n const instruction = {\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n filterEffect,\n renderables: isRenderGroup ? null : [renderable],\n container: isRenderGroup ? renderable.root : null,\n canBundle: false\n };\n this._renderableList = instruction.renderables;\n instructionSet.add(instruction);\n }\n _ensureFilterEffect(blendMode) {\n let filterEffect = this._filterHash[blendMode];\n if (!filterEffect) {\n filterEffect = this._filterHash[blendMode] = new FilterEffect();\n filterEffect.filters = [new BLEND_MODE_FILTERS[blendMode]()];\n }\n return filterEffect;\n }\n _endAdvancedBlendMode(instructionSet) {\n this._isAdvanced = false;\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 */\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 */\n buildEnd(instructionSet) {\n if (!this._isAdvanced) return;\n this._endAdvancedBlendMode(instructionSet);\n }\n /** @internal */\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","\"use strict\";\nfunction clearList(list, index) {\n index || (index = 0);\n for (let j = index; j < list.length; j++) {\n if (list[j]) {\n list[j] = null;\n } else {\n break;\n }\n }\n}\n\nexport { clearList };\n//# sourceMappingURL=clearList.mjs.map\n","import { Container, UPDATE_VISIBLE, UPDATE_COLOR, UPDATE_BLEND } from '../Container.mjs';\nimport { clearList } from './clearList.mjs';\nimport { multiplyColors } from './multiplyColors.mjs';\n\n\"use strict\";\nconst tempContainer = new Container();\nconst UPDATE_BLEND_COLOR_VISIBLE = UPDATE_VISIBLE | UPDATE_COLOR | UPDATE_BLEND;\nfunction updateRenderGroupTransforms(renderGroup, updateChildRenderGroups = false) {\n updateRenderGroupTransform(renderGroup);\n const childrenToUpdate = renderGroup.childrenToUpdate;\n const updateTick = renderGroup.updateTick++;\n for (const j in childrenToUpdate) {\n const renderGroupDepth = Number(j);\n const childrenAtDepth = childrenToUpdate[j];\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n for (let i = 0; i < index; i++) {\n const child = list[i];\n if (child.parentRenderGroup === renderGroup && child.relativeRenderGroupDepth === renderGroupDepth) {\n updateTransformAndChildren(child, updateTick, 0);\n }\n }\n clearList(list, index);\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 = multiplyColors(\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) 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.renderGroup) {\n updateFlags |= container._updateFlags;\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform\n );\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n } else {\n updateFlags = container._updateFlags;\n container.relativeGroupTransform.copyFrom(localTransform);\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n if (!container.renderGroup) {\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.parentRenderGroup;\n const renderable = container;\n if (renderable.renderPipeId && !renderGroup.structureDidChange) {\n renderGroup.updateRenderable(renderable);\n }\n }\n}\nfunction updateColorBlendVisibility(container, parent, updateFlags) {\n if (updateFlags & UPDATE_COLOR) {\n container.groupColor = multiplyColors(\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","\"use strict\";\nfunction validateRenderables(renderGroup, renderPipes) {\n const { list } = renderGroup.childrenRenderablesToUpdate;\n let rebuildRequired = false;\n for (let i = 0; i < renderGroup.childrenRenderablesToUpdate.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 { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { TextureStyle } from '../../rendering/renderers/shared/texture/TextureStyle.mjs';\nimport { Bounds } from './bounds/Bounds.mjs';\nimport { clearList } from './utils/clearList.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 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 originalLocalTransform = tempMatrix;\n if (transform) {\n originalLocalTransform.copyFrom(container.renderGroup.localTransform);\n container.renderGroup.localTransform.copyFrom(transform);\n }\n const renderPipes = renderer.renderPipes;\n this._updateCachedRenderGroups(container.renderGroup, null);\n this._updateRenderGroups(container.renderGroup);\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 _updateCachedRenderGroups(renderGroup, closestCacheAsTexture) {\n renderGroup._parentCacheAsTextureRenderGroup = closestCacheAsTexture;\n if (renderGroup.isCachedAsTexture) {\n if (!renderGroup.textureNeedsUpdate) return;\n closestCacheAsTexture = renderGroup;\n }\n for (let i = renderGroup.renderGroupChildren.length - 1; i >= 0; i--) {\n this._updateCachedRenderGroups(renderGroup.renderGroupChildren[i], closestCacheAsTexture);\n }\n renderGroup.invalidateMatrices();\n if (renderGroup.isCachedAsTexture) {\n if (renderGroup.textureNeedsUpdate) {\n const bounds = renderGroup.root.getLocalBounds();\n const renderer = this._renderer;\n const resolution = renderGroup.textureOptions.resolution || renderer.view.resolution;\n const antialias = renderGroup.textureOptions.antialias ?? renderer.view.antialias;\n const scaleMode = renderGroup.textureOptions.scaleMode ?? \"linear\";\n const lastTexture = renderGroup.texture;\n bounds.ceil();\n if (renderGroup.texture) {\n TexturePool.returnTexture(renderGroup.texture, true);\n }\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias\n );\n texture._source.style = new TextureStyle({ scaleMode });\n renderGroup.texture = texture;\n renderGroup._textureBounds || (renderGroup._textureBounds = new Bounds());\n renderGroup._textureBounds.copyFrom(bounds);\n if (lastTexture !== renderGroup.texture) {\n if (renderGroup.renderGroupParent) {\n renderGroup.renderGroupParent.structureDidChange = true;\n }\n }\n }\n } else if (renderGroup.texture) {\n TexturePool.returnTexture(renderGroup.texture, true);\n renderGroup.texture = null;\n }\n }\n _updateRenderGroups(renderGroup) {\n const renderer = this._renderer;\n const renderPipes = renderer.renderPipes;\n renderGroup.runOnRender(renderer);\n renderGroup.instructionSet.renderPipes = renderPipes;\n if (!renderGroup.structureDidChange) {\n validateRenderables(renderGroup, renderPipes);\n } else {\n clearList(renderGroup.childrenRenderablesToUpdate.list, 0);\n }\n updateRenderGroupTransforms(renderGroup);\n if (renderGroup.structureDidChange) {\n renderGroup.structureDidChange = false;\n this._buildInstructions(renderGroup, renderer);\n } else {\n this._updateRenderables(renderGroup);\n }\n renderGroup.childrenRenderablesToUpdate.index = 0;\n renderer.renderPipes.batch.upload(renderGroup.instructionSet);\n if (renderGroup.isCachedAsTexture && !renderGroup.textureNeedsUpdate) return;\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n this._updateRenderGroups(renderGroup.renderGroupChildren[i]);\n }\n }\n _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 clearList(list, index);\n }\n _buildInstructions(renderGroup, rendererOrPipes) {\n const root = renderGroup.root;\n const instructionSet = renderGroup.instructionSet;\n instructionSet.reset();\n const renderer = rendererOrPipes.renderPipes ? rendererOrPipes : rendererOrPipes.batch.renderer;\n const renderPipes = renderer.renderPipes;\n renderPipes.batch.buildStart(instructionSet);\n renderPipes.blendMode.buildStart();\n renderPipes.colorMask.buildStart();\n if (root.sortableChildren) {\n root.sortChildren();\n }\n root.collectRenderablesWithEffects(instructionSet, renderer, null);\n renderPipes.batch.buildEnd(instructionSet);\n renderPipes.blendMode.buildEnd(instructionSet);\n }\n}\n/** @ignore */\nRenderGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderGroup\"\n};\n\nexport { RenderGroupSystem };\n//# sourceMappingURL=RenderGroupSystem.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.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 const incoming = Color.shared.setValue(value);\n if (incoming.alpha < 1 && this._backgroundColor.alpha === 1) {\n warn(\n \"Cannot set a transparent background on an opaque canvas. To enable transparency, set backgroundAlpha < 1 when initializing your Application.\"\n );\n }\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 */\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 { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { 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 * Creates an IImage from a display object or texture.\n * @param options - Options for creating the image, or the target to extract\n * @returns Promise that resolves with the generated IImage\n * @example\n * ```ts\n * // Basic usage with a sprite\n * const sprite = new Sprite(texture);\n * const image = await renderer.extract.image(sprite);\n * document.body.appendChild(image);\n *\n * // Advanced usage with options\n * const image = await renderer.extract.image({\n * target: container,\n * format: 'webp',\n * quality: 0.8,\n * frame: new Rectangle(0, 0, 100, 100),\n * resolution: 2,\n * clearColor: '#ff0000',\n * antialias: true\n * });\n *\n * // Extract directly from a texture\n * const texture = Texture.from('myTexture.png');\n * const image = await renderer.extract.image(texture);\n * ```\n * @see {@link ExtractImageOptions} For detailed options\n * @see {@link ExtractSystem.base64} For base64 string output\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ImageLike} For the image interface\n * @category rendering\n */\n async image(options) {\n const image = DOMAdapter.get().createImage();\n image.src = await this.base64(options);\n return image;\n }\n /**\n * Converts the target into a base64 encoded string.\n *\n * This method works by first creating\n * a canvas using `Extract.canvas` and then converting it to a base64 string.\n * @param options - The options for creating the base64 string, or the target to extract\n * @returns Promise that resolves with the base64 encoded string\n * @example\n * ```ts\n * // Basic usage with a sprite\n * const sprite = new Sprite(texture);\n * const base64 = await renderer.extract.base64(sprite);\n * console.log(base64); // data:image/png;base64,...\n *\n * // Advanced usage with options\n * const base64 = await renderer.extract.base64({\n * target: container,\n * format: 'webp',\n * quality: 0.8,\n * frame: new Rectangle(0, 0, 100, 100),\n * resolution: 2\n * });\n * ```\n * @throws Will throw an error if the platform doesn't support any of:\n * - ICanvas.toDataURL\n * - ICanvas.toBlob\n * - ICanvas.convertToBlob\n * @see {@link ExtractImageOptions} For detailed options\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ExtractSystem.image} For HTMLImage output\n * @category rendering\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 the target to it and returns it.\n * This method is useful for creating static images or when you need direct canvas access.\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 * @example\n * ```ts\n * // Basic canvas extraction from a sprite\n * const sprite = new Sprite(texture);\n * const canvas = renderer.extract.canvas(sprite);\n * document.body.appendChild(canvas);\n *\n * // Extract with custom region\n * const canvas = renderer.extract.canvas({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const canvas = renderer.extract.canvas({\n * target: sprite,\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Extract directly from a texture\n * const texture = Texture.from('myTexture.png');\n * const canvas = renderer.extract.canvas(texture);\n *\n * // Extract with anti-aliasing\n * const canvas = renderer.extract.canvas({\n * target: graphics,\n * antialias: true\n * });\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link ExtractSystem.image} For HTMLImage output\n * @see {@link ExtractSystem.pixels} For raw pixel data\n * @category rendering\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(true);\n return canvas;\n }\n /**\n * Returns a one-dimensional array containing the pixel data of the entire texture in RGBA order,\n * with integer values between 0 and 255 (inclusive).\n * > [!NOE] The returned array is a flat Uint8Array where every 4 values represent RGBA\n * @param options - The options for extracting the image, or the target to extract\n * @returns One-dimensional Uint8Array containing the pixel data in RGBA format\n * @example\n * ```ts\n * // Basic pixel extraction\n * const sprite = new Sprite(texture);\n * const pixels = renderer.extract.pixels(sprite);\n * console.log(pixels[0], pixels[1], pixels[2], pixels[3]); // R,G,B,A values\n *\n * // Extract with custom region\n * const pixels = renderer.extract.pixels({\n * target: sprite,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const pixels = renderer.extract.pixels({\n * target: sprite,\n * resolution: 2\n * });\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ExtractSystem.image} For image output\n * @category rendering\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(true);\n }\n return pixelInfo;\n }\n /**\n * Creates a texture from a display object or existing texture.\n *\n * This is useful for creating\n * reusable textures from rendered content or making copies of existing textures.\n * > [!NOTE] The returned texture should be destroyed when no longer needed\n * @param options - The options for creating the texture, or the target to extract\n * @returns A new texture containing the extracted content\n * @example\n * ```ts\n * // Basic texture extraction from a sprite\n * const sprite = new Sprite(texture);\n * const extractedTexture = renderer.extract.texture(sprite);\n *\n * // Extract with custom region\n * const regionTexture = renderer.extract.texture({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const hiResTexture = renderer.extract.texture({\n * target: sprite,\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Create a new sprite from extracted texture\n * const newSprite = new Sprite(\n * renderer.extract.texture({\n * target: graphics,\n * antialias: true\n * })\n * );\n *\n * // Clean up when done\n * extractedTexture.destroy(true);\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link Texture} For texture management\n * @see {@link GenerateTextureSystem} For texture generation\n * @category rendering\n */\n texture(options) {\n options = this._normalizeOptions(options);\n if (options.target instanceof Texture) return options.target;\n return this._renderer.textureGenerator.generateTexture(options);\n }\n /**\n * Extracts and downloads content from the renderer as an image file.\n * This is a convenient way to save screenshots or export rendered content.\n * > [!NOTE] The download will use PNG format regardless of the filename extension\n * @param options - The options for downloading and extracting the image, or the target to extract\n * @example\n * ```ts\n * // Basic download with default filename\n * const sprite = new Sprite(texture);\n * renderer.extract.download(sprite); // Downloads as 'image.png'\n *\n * // Download with custom filename\n * renderer.extract.download({\n * target: sprite,\n * filename: 'screenshot.png'\n * });\n *\n * // Download with custom region\n * renderer.extract.download({\n * target: container,\n * filename: 'region.png',\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Download with high resolution and background\n * renderer.extract.download({\n * target: stage,\n * filename: 'hd-screenshot.png',\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Download with anti-aliasing\n * renderer.extract.download({\n * target: graphics,\n * filename: 'smooth.png',\n * antialias: true\n * });\n * ```\n * @see {@link ExtractDownloadOptions} For detailed options\n * @see {@link ExtractSystem.image} For creating images without download\n * @see {@link ExtractSystem.canvas} For canvas output\n * @category rendering\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 * The image will be displayed in the browser's console using CSS background images.\n * @param options - The options for logging the image, or the target to log\n * @param options.width - The width of the logged image preview in the console (in pixels)\n * @example\n * ```ts\n * // Basic usage\n * const sprite = new Sprite(texture);\n * renderer.extract.log(sprite);\n * ```\n * @see {@link ExtractSystem.canvas} For getting raw canvas output\n * @see {@link ExtractSystem.pixels} For raw pixel data\n * @category rendering\n * @advanced\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 ExtensionType.CanvasSystem\n ],\n name: \"extract\"\n};\n/**\n * Default options for image extraction.\n * @example\n * ```ts\n * // Customize default options\n * ExtractSystem.defaultImageOptions.format = 'webp';\n * ExtractSystem.defaultImageOptions.quality = 0.8;\n *\n * // Use defaults\n * const image = await renderer.extract.image(sprite);\n * ```\n */\n_ExtractSystem.defaultImageOptions = {\n format: \"png\",\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 /**\n * Creates a RenderTexture. Pass `dynamic: true` in options to allow resizing after creation.\n * @param options - Options for the RenderTexture, including width, height, and dynamic.\n * @returns A new RenderTexture instance.\n * @example\n * const rt = RenderTexture.create({ width: 100, height: 100, dynamic: true });\n * rt.resize(500, 500);\n */\n static create(options) {\n const { dynamic, ...rest } = options;\n return new RenderTexture({\n source: new TextureSource(rest),\n dynamic: dynamic ?? false\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 * Creates a texture from a display object that can be used for creating sprites and other textures.\n * This is particularly useful for optimizing performance when a complex container needs to be reused.\n * @param options - Generate texture options or a container to convert to texture\n * @returns A new RenderTexture containing the rendered display object\n * @example\n * ```ts\n * // Basic usage with a container\n * const container = new Container();\n * container.addChild(\n * new Graphics()\n * .circle(0, 0, 50)\n * .fill('red')\n * );\n *\n * const texture = renderer.textureGenerator.generateTexture(container);\n *\n * // Advanced usage with options\n * const texture = renderer.textureGenerator.generateTexture({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100), // Specific region\n * resolution: 2, // High DPI\n * clearColor: '#ff0000', // Red background\n * antialias: true // Smooth edges\n * });\n *\n * // Create a sprite from the generated texture\n * const sprite = new Sprite(texture);\n *\n * // Clean up when done\n * texture.destroy(true);\n * ```\n * @see {@link GenerateTextureOptions} For detailed texture generation options\n * @see {@link RenderTexture} For the type of texture created\n * @category rendering\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 target.source.updateMipmaps();\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 ExtensionType.CanvasSystem\n ],\n name: \"textureGenerator\"\n};\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","\"use strict\";\nfunction cleanHash(hash) {\n let clean = false;\n for (const i in hash) {\n if (hash[i] == void 0) {\n clean = true;\n break;\n }\n }\n if (!clean) return hash;\n const cleanHash2 = /* @__PURE__ */ Object.create(null);\n for (const i in hash) {\n const value = hash[i];\n if (value) {\n cleanHash2[i] = value;\n }\n }\n return cleanHash2;\n}\nfunction cleanArray(arr) {\n let offset = 0;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] == void 0) {\n offset++;\n } else {\n arr[i - offset] = arr[i];\n }\n }\n arr.length -= offset;\n return arr;\n}\n\nexport { cleanArray, cleanHash };\n//# sourceMappingURL=clean.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { cleanHash, cleanArray } from '../../../utils/data/clean.mjs';\n\n\"use strict\";\nconst _GCSystem = class _GCSystem {\n /**\n * Creates a new GCSystem instance.\n * @param renderer - The renderer this garbage collection system works for\n */\n constructor(renderer) {\n /** Array of resources being tracked for garbage collection */\n this._managedResources = [];\n this._managedResourceHashes = [];\n this._managedCollections = [];\n this._ready = false;\n this._renderer = renderer;\n }\n /**\n * Initializes the garbage collection system with the provided options.\n * @param options - Configuration options\n */\n init(options) {\n options = { ..._GCSystem.defaultOptions, ...options };\n this.maxUnusedTime = options.gcMaxUnusedTime;\n this._frequency = options.gcFrequency;\n this.enabled = options.gcActive;\n this.now = performance.now();\n }\n /**\n * Gets whether the garbage collection system is currently enabled.\n * @returns True if GC is enabled, false otherwise\n */\n get enabled() {\n return !!this._handler;\n }\n /**\n * Enables or disables the garbage collection system.\n * When enabled, schedules periodic cleanup of resources.\n * When disabled, cancels all scheduled cleanups.\n */\n set enabled(value) {\n if (this.enabled === value) return;\n if (value) {\n this._handler = this._renderer.scheduler.repeat(\n () => {\n this._ready = true;\n },\n this._frequency,\n false\n );\n this._collectionsHandler = this._renderer.scheduler.repeat(\n () => {\n for (const hash of this._managedCollections) {\n const { context, collection, type } = hash;\n if (type === \"hash\") {\n context[collection] = cleanHash(context[collection]);\n } else {\n context[collection] = cleanArray(context[collection]);\n }\n }\n },\n this._frequency\n );\n } else {\n this._renderer.scheduler.cancel(this._handler);\n this._renderer.scheduler.cancel(this._collectionsHandler);\n this._handler = 0;\n this._collectionsHandler = 0;\n }\n }\n /**\n * Called before rendering. Updates the current timestamp.\n * @param options - The render options\n * @param options.container - The container to render\n */\n prerender({ container }) {\n this.now = performance.now();\n container.renderGroup.gcTick = this._renderer.tick++;\n this._updateInstructionGCTick(container.renderGroup, container.renderGroup.gcTick);\n }\n /** Performs garbage collection after rendering. */\n postrender() {\n if (!this._ready || !this.enabled) return;\n this.run();\n this._ready = false;\n }\n /**\n * Updates the GC tick counter for a render group and its children.\n * @param renderGroup - The render group to update\n * @param gcTick - The new tick value\n */\n _updateInstructionGCTick(renderGroup, gcTick) {\n renderGroup.instructionSet.gcTick = gcTick;\n renderGroup.gcTick = gcTick;\n for (const child of renderGroup.renderGroupChildren) {\n this._updateInstructionGCTick(child, gcTick);\n }\n }\n /**\n * Registers a collection for garbage collection tracking.\n * @param context - The object containing the collection\n * @param collection - The property name on context that holds the collection\n * @param type - The type of collection to track ('hash' or 'array')\n */\n addCollection(context, collection, type) {\n this._managedCollections.push({\n context,\n collection,\n type\n });\n }\n /**\n * Registers a resource for garbage collection tracking.\n * @param resource - The resource to track\n * @param type - The type of resource to track\n */\n addResource(resource, type) {\n if (resource._gcLastUsed !== -1) {\n resource._gcLastUsed = this.now;\n resource._onTouch?.(this.now);\n return;\n }\n const index = this._managedResources.length;\n resource._gcData = {\n index,\n type\n };\n resource._gcLastUsed = this.now;\n resource._onTouch?.(this.now);\n resource.once(\"unload\", this.removeResource, this);\n this._managedResources.push(resource);\n }\n /**\n * Removes a resource from garbage collection tracking.\n * Call this when manually destroying a resource.\n * @param resource - The resource to stop tracking\n */\n removeResource(resource) {\n const gcData = resource._gcData;\n if (!gcData) return;\n const index = gcData.index;\n const last = this._managedResources.length - 1;\n if (index !== last) {\n const lastResource = this._managedResources[last];\n this._managedResources[index] = lastResource;\n lastResource._gcData.index = index;\n }\n this._managedResources.length--;\n resource._gcData = null;\n resource._gcLastUsed = -1;\n }\n /**\n * Registers a hash-based resource collection for garbage collection tracking.\n * Resources in the hash will be automatically tracked and cleaned up when unused.\n * @param context - The object containing the hash property\n * @param hash - The property name on context that holds the resource hash\n * @param type - The type of resources in the hash ('resource' or 'renderable')\n * @param priority - Processing priority (lower values are processed first)\n */\n addResourceHash(context, hash, type, priority = 0) {\n this._managedResourceHashes.push({\n context,\n hash,\n type,\n priority\n });\n this._managedResourceHashes.sort((a, b) => a.priority - b.priority);\n }\n /**\n * Performs garbage collection by cleaning up unused resources.\n * Removes resources that haven't been used for longer than maxUnusedTime.\n */\n run() {\n const now = performance.now();\n const managedResourceHashes = this._managedResourceHashes;\n for (const hashEntry of managedResourceHashes) {\n this.runOnHash(hashEntry, now);\n }\n let writeIndex = 0;\n for (let i = 0; i < this._managedResources.length; i++) {\n const resource = this._managedResources[i];\n writeIndex = this.runOnResource(resource, now, writeIndex);\n }\n this._managedResources.length = writeIndex;\n }\n updateRenderableGCTick(renderable, now) {\n const renderGroup = renderable.renderGroup ?? renderable.parentRenderGroup;\n const currentTick = renderGroup?.instructionSet?.gcTick ?? -1;\n if ((renderGroup?.gcTick ?? 0) === currentTick) {\n renderable._gcLastUsed = now;\n renderable._onTouch?.(now);\n }\n }\n runOnResource(resource, now, writeIndex) {\n const gcData = resource._gcData;\n if (gcData.type === \"renderable\") {\n this.updateRenderableGCTick(resource, now);\n }\n const isRecentlyUsed = now - resource._gcLastUsed < this.maxUnusedTime;\n if (isRecentlyUsed || !resource.autoGarbageCollect) {\n this._managedResources[writeIndex] = resource;\n gcData.index = writeIndex;\n writeIndex++;\n } else {\n resource.unload();\n resource._gcData = null;\n resource._gcLastUsed = -1;\n resource.off(\"unload\", this.removeResource, this);\n }\n return writeIndex;\n }\n /**\n * Creates a clone of the hash, copying all non-null entries up to (but not including) the stop key.\n * @param hashValue - The original hash to clone from\n * @param stopKey - The key to stop at (exclusive)\n * @returns A new hash object with copied entries\n */\n _createHashClone(hashValue, stopKey) {\n const hashClone = /* @__PURE__ */ Object.create(null);\n for (const k in hashValue) {\n if (k === stopKey) break;\n if (hashValue[k] !== null) hashClone[k] = hashValue[k];\n }\n return hashClone;\n }\n runOnHash(hashEntry, now) {\n const { context, hash, type } = hashEntry;\n const hashValue = context[hash];\n let hashClone = null;\n let nullCount = 0;\n for (const key in hashValue) {\n const resource = hashValue[key];\n if (resource === null) {\n nullCount++;\n if (nullCount === 1e4 && !hashClone) {\n hashClone = this._createHashClone(hashValue, key);\n }\n continue;\n }\n if (resource._gcLastUsed === -1) {\n resource._gcLastUsed = now;\n resource._onTouch?.(now);\n if (hashClone) hashClone[key] = resource;\n continue;\n }\n if (type === \"renderable\") {\n this.updateRenderableGCTick(resource, now);\n }\n const isRecentlyUsed = now - resource._gcLastUsed < this.maxUnusedTime;\n if (!isRecentlyUsed && resource.autoGarbageCollect) {\n if (!hashClone) {\n if (nullCount + 1 !== 1e4) {\n hashValue[key] = null;\n nullCount++;\n } else {\n hashClone = this._createHashClone(hashValue, key);\n }\n }\n if (type === \"renderable\") {\n const res = resource;\n const renderGroup = res.renderGroup ?? res.parentRenderGroup;\n if (renderGroup) renderGroup.structureDidChange = true;\n }\n resource.unload();\n resource._gcData = null;\n resource._gcLastUsed = -1;\n } else if (hashClone) {\n hashClone[key] = resource;\n }\n }\n if (hashClone) {\n context[hash] = hashClone;\n }\n }\n /** Cleans up the garbage collection system. Disables GC and removes all tracked resources. */\n destroy() {\n this.enabled = false;\n this._managedResources.forEach((resource) => {\n resource.off(\"unload\", this.removeResource, this);\n });\n this._managedResources.length = 0;\n this._managedResourceHashes.length = 0;\n this._managedCollections.length = 0;\n this._renderer = null;\n }\n};\n/** @ignore */\n_GCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"gc\",\n priority: 0\n};\n/** Default options for the GCSystem */\n_GCSystem.defaultOptions = {\n /** Enable/disable the garbage collector */\n gcActive: true,\n /** Time in ms before an unused resource is collected (default 1 minute) */\n gcMaxUnusedTime: 6e4,\n /** How often to run garbage collection in ms (default 30 seconds) */\n gcFrequency: 3e4\n};\nlet GCSystem = _GCSystem;\n\nexport { GCSystem };\n//# sourceMappingURL=GCSystem.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 globalUniformData() {\n return this._currentGlobalUniformData;\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 this._globalUniformDataStack.length = 0;\n this._uniformsPool.length = 0;\n this._activeUniforms.length = 0;\n this._bindGroupPool.length = 0;\n this._activeBindGroups.length = 0;\n this._currentGlobalUniformData = 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 { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Ticker } from '../../../ticker/Ticker.mjs';\n\n\"use strict\";\nlet uid = 1;\nclass SchedulerSystem {\n constructor() {\n this._tasks = [];\n /** a small off set to apply to the repeat schedules. This is just to make sure they run at slightly different times */\n this._offset = 0;\n }\n /** Initializes the scheduler system and starts the ticker. */\n init() {\n Ticker.system.add(this._update, this);\n }\n /**\n * Schedules a repeating task.\n * @param func - The function to execute.\n * @param duration - The interval duration in milliseconds.\n * @param useOffset - this will spread out tasks so that they do not all run at the same time\n * @returns The unique identifier for the scheduled task.\n */\n repeat(func, duration, useOffset = true) {\n const id = uid++;\n let offset = 0;\n if (useOffset) {\n this._offset += 1e3;\n offset = this._offset;\n }\n this._tasks.push({\n func,\n duration,\n start: performance.now(),\n offset,\n last: performance.now(),\n repeat: true,\n id\n });\n return id;\n }\n /**\n * Cancels a scheduled task.\n * @param id - The unique identifier of the task to cancel.\n */\n cancel(id) {\n for (let i = 0; i < this._tasks.length; i++) {\n if (this._tasks[i].id === id) {\n this._tasks.splice(i, 1);\n return;\n }\n }\n }\n /**\n * Updates and executes the scheduled tasks.\n * @private\n */\n _update() {\n const now = performance.now();\n for (let i = 0; i < this._tasks.length; i++) {\n const task = this._tasks[i];\n if (now - task.offset - task.last >= task.duration) {\n const elapsed = now - task.start;\n task.func(elapsed);\n task.last = now;\n }\n }\n }\n /**\n * Destroys the scheduler system and removes all tasks.\n * @internal\n */\n destroy() {\n Ticker.system.remove(this._update, this);\n this._tasks.length = 0;\n }\n}\n/** @ignore */\nSchedulerSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"scheduler\",\n priority: 0\n};\n\nexport { SchedulerSystem };\n//# sourceMappingURL=SchedulerSystem.mjs.map\n","import { DOMAdapter } from '../environment/adapter.mjs';\nimport { VERSION } from './const.mjs';\n\n\"use strict\";\nlet saidHello = false;\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 { 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 } from '../../../../extensions/Extensions.mjs';\nimport { deprecation } from '../../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _RenderableGCSystem = class _RenderableGCSystem {\n /**\n * Creates a new RenderableGCSystem instance.\n * @param renderer - The renderer this garbage collection system works for\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * Initializes the garbage collection system with the provided options.\n * @param options - Configuration options for the renderer\n */\n init(options) {\n options = { ..._RenderableGCSystem.defaultOptions, ...options };\n this.maxUnusedTime = options.renderableGCMaxUnusedTime;\n }\n /**\n * Gets whether the garbage collection system is currently enabled.\n * @returns True if GC is enabled, false otherwise\n */\n get enabled() {\n deprecation(\"8.15.0\", \"RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead.\");\n return this._renderer.gc.enabled;\n }\n /**\n * Enables or disables the garbage collection system.\n * When enabled, schedules periodic cleanup of resources.\n * When disabled, cancels all scheduled cleanups.\n */\n set enabled(value) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead.\");\n this._renderer.gc.enabled = value;\n }\n /**\n * Adds a hash table to be managed by the garbage collector.\n * @param context - The object containing the hash table\n * @param hash - The property name of the hash table\n */\n addManagedHash(context, hash) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addManagedHash is deprecated, please use the GCSystem.addCollection instead.\");\n this._renderer.gc.addCollection(context, hash, \"hash\");\n }\n /**\n * Adds an array to be managed by the garbage collector.\n * @param context - The object containing the array\n * @param hash - The property name of the array\n */\n addManagedArray(context, hash) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addManagedArray is deprecated, please use the GCSystem.addCollection instead.\");\n this._renderer.gc.addCollection(context, hash, \"array\");\n }\n /**\n * Starts tracking a renderable for garbage collection.\n * @param _renderable - The renderable to track\n * @deprecated since 8.15.0\n */\n addRenderable(_renderable) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addRenderable is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.addResource(_renderable, \"renderable\");\n }\n /**\n * Performs garbage collection by cleaning up unused renderables.\n * Removes renderables that haven't been used for longer than maxUnusedTime.\n */\n run() {\n deprecation(\"8.15.0\", \"RenderableGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.run();\n }\n /** Cleans up the garbage collection system. Disables GC and removes all tracked resources. */\n destroy() {\n this._renderer = null;\n }\n};\n/**\n * Extension metadata for registering this system with the renderer.\n * @ignore\n */\n_RenderableGCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderableGC\",\n priority: 0\n};\n/**\n * Default configuration options for the garbage collection system.\n * These can be overridden when initializing the renderer.\n * @deprecated since 8.15.0\n */\n_RenderableGCSystem.defaultOptions = {\n /** Enable/disable the garbage collector */\n renderableGCActive: true,\n /** Time in ms before an unused resource is collected (default 1 minute) */\n renderableGCMaxUnusedTime: 6e4,\n /** How often to run garbage collection in ms (default 30 seconds) */\n renderableGCFrequency: 3e4\n};\nlet RenderableGCSystem = _RenderableGCSystem;\n\nexport { RenderableGCSystem };\n//# sourceMappingURL=RenderableGCSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { deprecation } from '../../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _TextureGCSystem = class _TextureGCSystem {\n /**\n * Frame count since started.\n * @readonly\n * @deprecated since 8.15.0\n */\n get count() {\n return this._renderer.tick;\n }\n /**\n * Frame count since last garbage collection.\n * @readonly\n * @deprecated since 8.15.0\n */\n get checkCount() {\n return this._checkCount;\n }\n set checkCount(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._checkCount = value;\n }\n /**\n * Maximum idle frames before a texture is destroyed by garbage collection.\n * @see TextureGCSystem.defaultMaxIdle\n * @deprecated since 8.15.0\n */\n get maxIdle() {\n return this._renderer.gc.maxUnusedTime / 1e3 * 60;\n }\n set maxIdle(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.maxUnusedTime = value / 60 * 1e3;\n }\n /**\n * Frames between two garbage collections.\n * @see TextureGCSystem.defaultCheckCountMax\n * @deprecated since 8.15.0\n */\n // eslint-disable-next-line dot-notation\n get checkCountMax() {\n return Math.floor(this._renderer.gc[\"_frequency\"] / 1e3);\n }\n set checkCountMax(_value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n }\n /**\n * Current garbage collection mode.\n * @see TextureGCSystem.defaultMode\n * @deprecated since 8.15.0\n */\n get active() {\n return this._renderer.gc.enabled;\n }\n set active(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.enabled = value;\n }\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this._checkCount = 0;\n }\n init(options) {\n if (options.textureGCActive !== _TextureGCSystem.defaultOptions.textureGCActive) {\n this.active = options.textureGCActive;\n }\n if (options.textureGCMaxIdle !== _TextureGCSystem.defaultOptions.textureGCMaxIdle) {\n this.maxIdle = options.textureGCMaxIdle;\n }\n if (options.textureGCCheckCountMax !== _TextureGCSystem.defaultOptions.textureGCCheckCountMax) {\n this.checkCountMax = options.textureGCCheckCountMax;\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 * @deprecated since 8.15.0\n */\n run() {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.run();\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/**\n * Default options for the TextureGCSystem\n * @deprecated since 8.15.0\n */\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 * @deprecated since 8.3.0\n * @see {@link TextureGCSystemOptions.textureGCMaxIdle}\n */\n textureGCAMaxIdle: null,\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n */\n textureGCMaxIdle: 60 * 60,\n /**\n * Frames between two garbage collections.\n * @default 600\n */\n textureGCCheckCountMax: 600\n};\nlet TextureGCSystem = _TextureGCSystem;\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\nimport { TextureSource } from '../texture/sources/TextureSource.mjs';\nimport { Texture } from '../texture/Texture.mjs';\n\n\"use strict\";\nconst _RenderTarget = class _RenderTarget {\n /**\n * @param [descriptor] - Options for creating a render target.\n */\n constructor(descriptor = {}) {\n /** unique id for this render target */\n this.uid = uid(\"renderTarget\");\n /**\n * An array of textures that can be written to by the GPU - mostly this has one texture in Pixi, but you could\n * write to multiple if required! (eg deferred lighting)\n */\n this.colorTextures = [];\n this.dirtyId = 0;\n this.isRoot = false;\n this._size = new Float32Array(2);\n /** if true, then when the render target is destroyed, it will destroy all the textures that were created for it. */\n this._managedColorTextures = false;\n descriptor = { ..._RenderTarget.defaultOptions, ...descriptor };\n this.stencil = descriptor.stencil;\n this.depth = descriptor.depth;\n this.isRoot = descriptor.isRoot;\n if (typeof descriptor.colorTextures === \"number\") {\n this._managedColorTextures = true;\n for (let i = 0; i < descriptor.colorTextures; i++) {\n this.colorTextures.push(\n new TextureSource({\n width: descriptor.width,\n height: descriptor.height,\n resolution: descriptor.resolution,\n antialias: descriptor.antialias\n })\n );\n }\n } else {\n this.colorTextures = [...descriptor.colorTextures.map((texture) => texture.source)];\n const colorSource = this.colorTexture.source;\n this.resize(colorSource.width, colorSource.height, colorSource._resolution);\n }\n this.colorTexture.source.on(\"resize\", this.onSourceResize, this);\n if (descriptor.depthStencilTexture || this.stencil) {\n if (descriptor.depthStencilTexture instanceof Texture || descriptor.depthStencilTexture instanceof TextureSource) {\n this.depthStencilTexture = descriptor.depthStencilTexture.source;\n } else {\n this.ensureDepthStencilTexture();\n }\n }\n }\n get size() {\n const _size = this._size;\n _size[0] = this.pixelWidth;\n _size[1] = this.pixelHeight;\n return _size;\n }\n get width() {\n return this.colorTexture.source.width;\n }\n get height() {\n return this.colorTexture.source.height;\n }\n get pixelWidth() {\n return this.colorTexture.source.pixelWidth;\n }\n get pixelHeight() {\n return this.colorTexture.source.pixelHeight;\n }\n get resolution() {\n return this.colorTexture.source._resolution;\n }\n get colorTexture() {\n return this.colorTextures[0];\n }\n onSourceResize(source) {\n this.resize(source.width, source.height, source._resolution, true);\n }\n /**\n * This will ensure a depthStencil texture is created for this render target.\n * Most likely called by the mask system to make sure we have stencil buffer added.\n * @internal\n */\n ensureDepthStencilTexture() {\n if (!this.depthStencilTexture) {\n this.depthStencilTexture = new TextureSource({\n width: this.width,\n height: this.height,\n resolution: this.resolution,\n format: \"depth24plus-stencil8\",\n autoGenerateMipmaps: false,\n antialias: false,\n mipLevelCount: 1\n // sampleCount: handled by the render target system..\n });\n }\n }\n resize(width, height, resolution = this.resolution, skipColorTexture = false) {\n this.dirtyId++;\n this.colorTextures.forEach((colorTexture, i) => {\n if (skipColorTexture && i === 0) return;\n colorTexture.source.resize(width, height, resolution);\n });\n if (this.depthStencilTexture) {\n this.depthStencilTexture.source.resize(width, height, resolution);\n }\n }\n destroy() {\n this.colorTexture.source.off(\"resize\", this.onSourceResize, this);\n if (this._managedColorTextures) {\n this.colorTextures.forEach((texture) => {\n texture.destroy();\n });\n }\n if (this.depthStencilTexture) {\n this.depthStencilTexture.destroy();\n delete this.depthStencilTexture;\n }\n }\n};\n/** The default options for a render target */\n_RenderTarget.defaultOptions = {\n /** the width of the RenderTarget */\n width: 0,\n /** the height of the RenderTarget */\n height: 0,\n /** the resolution of the RenderTarget */\n resolution: 1,\n /** an array of textures, or a number indicating how many color textures there should be */\n colorTextures: 1,\n /** should this render target have a stencil buffer? */\n stencil: false,\n /** should this render target have a depth buffer? */\n depth: false,\n /** should this render target be antialiased? */\n antialias: false,\n // save on perf by default!\n /** is this a root element, true if this is gl context owners render target */\n isRoot: false\n};\nlet RenderTarget = _RenderTarget;\n\nexport { RenderTarget };\n//# sourceMappingURL=RenderTarget.mjs.map\n","import { GlobalResourceRegistry } from '../../../../../utils/pool/GlobalResourceRegistry.mjs';\nimport { CanvasSource } from '../sources/CanvasSource.mjs';\nimport { Texture } from '../Texture.mjs';\n\n\"use strict\";\nconst canvasCache = /* @__PURE__ */ new Map();\nGlobalResourceRegistry.register(canvasCache);\nfunction getCanvasTexture(canvas, options) {\n if (!canvasCache.has(canvas)) {\n const texture = new Texture({\n source: new CanvasSource({\n resource: canvas,\n ...options\n })\n });\n const onDestroy = () => {\n if (canvasCache.get(canvas) === texture) {\n canvasCache.delete(canvas);\n }\n };\n texture.once(\"destroy\", onDestroy);\n texture.source.once(\"destroy\", onDestroy);\n canvasCache.set(canvas, texture);\n }\n return canvasCache.get(canvas);\n}\nfunction hasCachedCanvasTexture(canvas) {\n return canvasCache.has(canvas);\n}\n\nexport { getCanvasTexture, hasCachedCanvasTexture };\n//# sourceMappingURL=getCanvasTexture.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\nimport { RenderTarget } from '../renderTarget/RenderTarget.mjs';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture.mjs';\n\n\"use strict\";\nconst _ViewSystem = class _ViewSystem {\n /**\n * Whether CSS dimensions of canvas view should be resized to screen dimensions automatically.\n * This is only supported for HTMLCanvasElement and will be ignored if the canvas is an OffscreenCanvas.\n * @type {boolean}\n */\n get autoDensity() {\n return this.texture.source.autoDensity;\n }\n set autoDensity(value) {\n this.texture.source.autoDensity = value;\n }\n /** The resolution / device pixel ratio of the renderer. */\n get resolution() {\n return this.texture.source._resolution;\n }\n set resolution(value) {\n this.texture.source.resize(\n this.texture.source.width,\n this.texture.source.height,\n value\n );\n }\n /**\n * initiates the view system\n * @param options - the options for the view\n */\n init(options) {\n options = {\n ..._ViewSystem.defaultOptions,\n ...options\n };\n if (options.view) {\n deprecation(v8_0_0, \"ViewSystem.view has been renamed to ViewSystem.canvas\");\n options.canvas = options.view;\n }\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.canvas = options.canvas || DOMAdapter.get().createCanvas();\n this.antialias = !!options.antialias;\n this.texture = getCanvasTexture(this.canvas, options);\n this.renderTarget = new RenderTarget({\n colorTextures: [this.texture],\n depth: !!options.depth,\n isRoot: true\n });\n this.texture.source.transparent = options.backgroundAlpha < 1;\n this.resolution = options.resolution;\n }\n /**\n * Resizes the screen and canvas to the specified dimensions.\n * @param desiredScreenWidth - The new width of the screen.\n * @param desiredScreenHeight - The new height of the screen.\n * @param resolution\n */\n resize(desiredScreenWidth, desiredScreenHeight, resolution) {\n this.texture.source.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n this.screen.width = this.texture.frame.width;\n this.screen.height = this.texture.frame.height;\n }\n /**\n * Destroys this System and optionally removes the canvas from the dom.\n * @param {options | false} options - The options for destroying the view, or \"false\".\n * @example\n * viewSystem.destroy();\n * viewSystem.destroy(true);\n * viewSystem.destroy({ removeView: true });\n */\n destroy(options = false) {\n const removeView = typeof options === \"boolean\" ? options : !!options?.removeView;\n if (removeView && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n this.texture.destroy();\n }\n};\n/** @ignore */\n_ViewSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"view\",\n priority: 0\n};\n/** The default options for the view system. */\n_ViewSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.width}\n * @default 800\n */\n width: 800,\n /**\n * {@link WebGLOptions.height}\n * @default 600\n */\n height: 600,\n /**\n * {@link WebGLOptions.autoDensity}\n * @default false\n */\n autoDensity: false,\n /**\n * {@link WebGLOptions.antialias}\n * @default false\n */\n antialias: false\n};\nlet ViewSystem = _ViewSystem;\n\nexport { ViewSystem };\n//# sourceMappingURL=ViewSystem.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 { RendererInitHook } from '../../../../utils/global/globalHooks.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 { GCSystem } from '../GCSystem.mjs';\nimport { GlobalUniformSystem } from '../renderTarget/GlobalUniformSystem.mjs';\nimport { SchedulerSystem } from '../SchedulerSystem.mjs';\nimport { HelloSystem } from '../startup/HelloSystem.mjs';\nimport { RenderableGCSystem } from '../texture/RenderableGCSystem.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 GCSystem,\n TextureGCSystem,\n GenerateTextureSystem,\n ExtractSystem,\n RendererInitHook,\n RenderableGCSystem,\n SchedulerSystem\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","\"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","\"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","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 /** the current mip level being rendered to (for texture subresources) */\n this.mipLevel = 0;\n /** the current array layer being rendered to (for array-backed targets) */\n this.layer = 0;\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 renderer.gc.addCollection(this, \"_gpuRenderTargetHash\", \"hash\");\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 * @param options.mipLevel - the mip level to render to\n * @param options.layer - The layer of the render target to render to. Used for array or 3D textures, or when rendering\n * to a specific layer of a layered render target. Optional.\n */\n renderStart({\n target,\n clear,\n clearColor,\n frame,\n mipLevel,\n layer\n }) {\n this._renderTargetStack.length = 0;\n this.push(\n target,\n clear,\n clearColor,\n frame,\n mipLevel ?? 0,\n layer ?? 0\n );\n this.rootViewPort.copyFrom(this.viewport);\n this.rootRenderTarget = this.renderTarget;\n this.renderingToScreen = isRenderingToScreen(this.rootRenderTarget);\n this.adaptor.prerender?.(this.rootRenderTarget);\n }\n postrender() {\n this.adaptor.postrender?.(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 provided and the render surface is a {@link Texture}, the frame of the texture will be used.\n *\n * IMPORTANT:\n * - `frame` is treated as **base mip (mip 0) pixel space**.\n * - When `mipLevel > 0`, the viewport derived from `frame` is scaled by \\(2^{mipLevel}\\) and clamped to the\n * mip dimensions. This keeps \"render the same region\" semantics consistent across mip levels.\n * - When `renderSurface` is a {@link Texture}, `renderer.render({ container, target: texture, mipLevel })` will\n * render into\n * the underlying {@link TextureSource} (Pixi will create/use a {@link RenderTarget} for the source) using the\n * texture's frame to define the region (in mip 0 space).\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 * @param mipLevel - the mip level to render to\n * @param layer - the layer (or slice) of the render surface to render to. For array textures,\n * 3D textures, or cubemaps, this specifies the target layer or face. Defaults to 0 (the first layer/face).\n * Ignored for surfaces that do not support layers.\n * @returns the render target that was bound\n */\n bind(renderSurface, clear = true, clearColor, frame, mipLevel = 0, layer = 0) {\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 arrayLayerCount = source.arrayLayerCount || 1;\n if ((layer | 0) !== layer) {\n layer |= 0;\n }\n if (layer < 0 || layer >= arrayLayerCount) {\n throw new Error(`[RenderTargetSystem] layer ${layer} is out of bounds (arrayLayerCount=${arrayLayerCount}).`);\n }\n this.mipLevel = mipLevel | 0;\n this.layer = layer | 0;\n const pixelWidth = Math.max(source.pixelWidth >> mipLevel, 1);\n const pixelHeight = Math.max(source.pixelHeight >> mipLevel, 1);\n if (!frame && renderSurface instanceof Texture) {\n frame = renderSurface.frame;\n }\n if (frame) {\n const resolution = source._resolution;\n const scale = 1 << Math.max(mipLevel | 0, 0);\n const baseX = frame.x * resolution + 0.5 | 0;\n const baseY = frame.y * resolution + 0.5 | 0;\n const baseW = frame.width * resolution + 0.5 | 0;\n const baseH = frame.height * resolution + 0.5 | 0;\n let x = Math.floor(baseX / scale);\n let y = Math.floor(baseY / scale);\n let w = Math.ceil(baseW / scale);\n let h = Math.ceil(baseH / scale);\n x = Math.min(Math.max(x, 0), pixelWidth - 1);\n y = Math.min(Math.max(y, 0), pixelHeight - 1);\n w = Math.min(Math.max(w, 1), pixelWidth - x);\n h = Math.min(Math.max(h, 1), pixelHeight - y);\n viewport.x = x;\n viewport.y = y;\n viewport.width = w;\n viewport.height = h;\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, mipLevel, layer);\n if (didChange) {\n this.onRenderTargetChange.emit(renderTarget);\n }\n return renderTarget;\n }\n clear(target, clear = CLEAR.ALL, clearColor, mipLevel = this.mipLevel, layer = this.layer) {\n if (!clear) 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 mipLevel,\n layer\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 * @param mipLevel - the mip level to render to\n * @param layer - The layer of the render surface to render to. For array textures or cube maps, this specifies\n * which layer or face to target. Defaults to 0 (the first layer).\n */\n push(renderSurface, clear = CLEAR.ALL, clearColor, frame, mipLevel = 0, layer = 0) {\n const renderTarget = this.bind(renderSurface, clear, clearColor, frame, mipLevel, layer);\n this._renderTargetStack.push({\n renderTarget,\n frame,\n mipLevel,\n layer\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(\n currentRenderTargetData.renderTarget,\n false,\n null,\n currentRenderTargetData.frame,\n currentRenderTargetData.mipLevel,\n currentRenderTargetData.layer\n );\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 *\n * NOTE:\n * for sourceRenderSurfaceTexture, The render target must be something that is written too by the renderer\n *\n * The following is not valid:\n * @example\n * const canvas = document.createElement('canvas')\n * canvas.width = 200;\n * canvas.height = 200;\n *\n * const ctx = canvas2.getContext('2d')!\n * ctx.fillStyle = 'red'\n * ctx.fillRect(0, 0, 200, 200);\n *\n * const texture = RenderTexture.create({\n * width: 200,\n * height: 200,\n * })\n * const renderTarget = renderer.renderTarget.getRenderTarget(canvas2);\n *\n * renderer.renderTarget.copyToTexture(renderTarget,texture, {x:0,y:0},{width:200,height:200},{x:0,y:0});\n *\n * The best way to copy a canvas is to create a texture from it. Then render with that.\n *\n * Parsing in a RenderTarget canvas context (with a 2d context)\n * @param sourceRenderSurfaceTexture - the render surface to copy from\n * @param {Texture} destinationTexture - the texture to copy to\n * @param {object} originSrc - the origin of the copy\n * @param {number} originSrc.x - the x origin of the copy\n * @param {number} originSrc.y - the y origin of the copy\n * @param {object} size - the size of the copy\n * @param {number} size.width - the width of the copy\n * @param {number} size.height - the height of the copy\n * @param {object} originDest - the destination origin (top left to paste from!)\n * @param {number} originDest.x - the x origin of the paste\n * @param {number} 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, 0, this.layer);\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).source;\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 (renderSurface.source instanceof CanvasSource) {\n renderTarget.isRoot = true;\n }\n renderSurface.once(\"destroy\", () => {\n renderTarget.destroy();\n this._renderSurfaceToRenderTargetHash.delete(renderSurface);\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 resetState() {\n this.renderTarget = null;\n this.renderSurface = null;\n }\n}\n\nexport { RenderTargetSystem };\n//# sourceMappingURL=RenderTargetSystem.mjs.map\n"],"names":["fastCopy","sourceBuffer","destinationBuffer","sourceOffset","byteLength","len","BLEND_TO_NPM","STENCIL_MODES","STENCIL_MODES2","getAdjustedBlendModeBlend","blendMode","textureSource","fragTemplate","generateIfTestSrc","maxIfs","src","i","checkMaxIfStatementsInShader","gl","shader","fragmentSrc","maxTexturesPerBatchCache","getMaxTexturesPerBatch","getTestContext","_a","BatchTextureArray","Batch","batchPool","batchPoolIndex","GlobalResourceRegistry","item","getBatchFromPool","returnBatchToPool","batch","BATCH_TICK","_Batcher","options","uid","deprecation","maxTextures","attributesInitialSize","indicesInitialSize","ViewableBuffer","batchableObject","texture","textureId","attributeBuffer","instructionSet","elements","textureBatch","firstElement","topology","f32","u32","indexBuffer","size","start","action","batchElements","element","source","adjustedBlendMode","breakRequired","indexStart","indexSize","newSize","newArrayBuffer","newIndexBuffer","index","indicesOffset","indices","indexOffset","attributeOffset","Batcher","placeHolderBufferData","placeHolderIndexData","BatchGeometry","Geometry","Buffer","BufferUsage","stride","addBits","srcParts","parts","name","id","part","sanitisedPart","warn","findHooksRx","compileHooks","programSrc","hook","extractInputs","fragmentSource","out","match","regex","compileInputs","fragments","template","sort","results","fragment","mainInput","finalString","inValue","cleanedString","extractOutputs","extractVariableName","value","stripVariable","compileOutputs","mainStruct","mainStart","mainEnd","compiledCode","injectBits","templateSrc","fragmentParts","cacheMap","bitCacheMap","CACHE_UID","compileHighShader","bits","cacheId","generateCacheId","vertex","compileInputsAndOutputs","compileBits","compileHighShaderGl","vertexFragments","shaderBit","v","fragmentFragments","compiledVertex","compiledFragment","highFragment","a","b","vertexParts","vertexGPUTemplate","fragmentGPUTemplate","vertexGlTemplate","fragmentGlTemplate","globalUniformsBit","globalUniformsBitGl","compileHighShaderGpuProgram","GpuProgram","compileHighShaderGlProgram","GlProgram","colorBit","colorBitGl","textureBatchBitGpuCache","generateBindingSrc","bindingIndex","generateSampleSrc","generateTextureBatchBit","textureBatchBitGlCache","generateSampleGlSrc","generateTextureBatchBitGl","roundPixelsBit","roundPixelsBitGl","batchSamplersUniformGroupHash","getBatchSamplersUniformGroup","batchSamplersUniformGroup","sampleValues","UniformGroup","DefaultShader","Shader","glProgram","gpuProgram","defaultShader","_DefaultBatcher","float32View","uint32View","textureIdAndRound","wt","c","d","tx","ty","positions","uvs","argb","offset","end","i2","x","y","bounds","w0","w1","h0","h1","ExtensionType","DefaultBatcher","GCManagedHash","renderer","type","onUnload","priority","args","gpuData","MaskFilter","Filter","sprite","rest","textureMatrix","TextureMatrix","filterUniforms","Matrix","filterManager","input","output","clearMode","color32BitToUniform","abgr","alpha","BatchableSprite","_BatcherPipe","adaptor","State","_b","batchers","batches","geometry","batcher","BatcherPipe","extensions","tempBounds","Bounds","AlphaMaskEffect","FilterEffect","Sprite","Texture","AlphaMaskPipe","mask","maskedContainer","maskContainer","_maskedContainer","instruction","renderMask","filterEffect","BigPool","getGlobalBounds","colorTextureSource","filterTexture","TexturePool","maskData","RendererType","ColorMaskPipe","_container","colorStack","currentColor","_mask","StencilMaskPipe","effect","instructionsLength","renderTargetUid","gpuRenderer","maskStackIndex","CLEAR","CustomRenderPipe","container","executeInstructions","renderGroup","instructions","RenderGroupPipe","batchableRenderGroup","worldTransformMatrix","SpritePipe","gpuSprite","batchableSprite","BLEND_MODE_FILTERS","BlendModePipe","renderable","isRenderGroup","RenderGroup","clearList","list","j","tempContainer","Container","UPDATE_BLEND_COLOR_VISIBLE","UPDATE_VISIBLE","UPDATE_COLOR","UPDATE_BLEND","updateRenderGroupTransforms","updateChildRenderGroups","updateRenderGroupTransform","childrenToUpdate","updateTick","renderGroupDepth","childrenAtDepth","child","updateTransformAndChildren","root","worldAlpha","renderGroupParent","multiplyColors","updateFlags","localTransform","parent","updateColorBlendVisibility","children","length","groupAlpha","validateRenderables","renderPipes","rebuildRequired","tempMatrix","RenderGroupSystem","transform","originalLocalTransform","closestCacheAsTexture","resolution","antialias","scaleMode","lastTexture","TextureStyle","rendererOrPipes","_BackgroundSystem","Color","BackgroundSystem","imageTypes","_ExtractSystem","defaults","image","DOMAdapter","format","quality","canvas","resolve","reject","blob","reader","target","pixelInfo","link","width","base64","style","ExtractSystem","RenderTexture","dynamic","TextureSource","height","tempRect","Rectangle","noColor","GenerateTextureSystem","clearColor","region","getLocalBounds","cleanHash","hash","clean","cleanHash2","cleanArray","arr","_GCSystem","context","collection","gcTick","resource","gcData","last","lastResource","now","managedResourceHashes","hashEntry","writeIndex","currentTick","hashValue","stopKey","hashClone","k","nullCount","key","res","GCSystem","GlobalUniformSystem","projectionMatrix","worldColor","renderTarget","currentGlobalUniformData","Point","globalUniformData","uniformGroup","uniforms","bindGroup","BindGroup","SchedulerSystem","Ticker","func","duration","useOffset","task","elapsed","saidHello","sayHello","VERSION","HelloSystem","_RenderableGCSystem","_renderable","RenderableGCSystem","_TextureGCSystem","_value","TextureGCSystem","_RenderTarget","descriptor","colorSource","_size","skipColorTexture","colorTexture","RenderTarget","canvasCache","getCanvasTexture","CanvasSource","onDestroy","_ViewSystem","v8_0_0","desiredScreenWidth","desiredScreenHeight","ViewSystem","SharedSystems","RendererInitHook","SharedRenderPipes","calculateProjection","pm","flipY","sign","isRenderingToScreen","RenderTargetSystem","SystemRunner","clear","frame","mipLevel","layer","renderSurface","didChange","gpuRenderTarget","viewport","arrayLayerCount","pixelWidth","pixelHeight","scale","baseX","baseY","baseW","baseH","w","h","currentRenderTargetData","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]}
|
|
1
|
+
{"version":3,"file":"RenderTargetSystem-CdivfMWb.js","sources":["../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/utils/fastCopy.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/getAdjustedBlendModeBlend.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/utils/maxRecommendedTextures.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatchTextureArray.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/Batcher.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatchGeometry.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/addBits.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileHooks.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileInputs.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileOutputs.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/injectBits.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.mjs","../node_modules/pixi.js/lib/rendering/high-shader/defaultProgramTemplate.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/globalUniformsBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/compileHighShaderToProgram.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/colorBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/generateTextureBatchBit.mjs","../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/roundPixelsBit.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultShader.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultBatcher.mjs","../node_modules/pixi.js/lib/utils/data/GCManagedHash.mjs","../node_modules/pixi.js/lib/filters/mask/mask.frag.mjs","../node_modules/pixi.js/lib/filters/mask/mask.vert.mjs","../node_modules/pixi.js/lib/filters/mask/mask.wgsl.mjs","../node_modules/pixi.js/lib/filters/mask/MaskFilter.mjs","../node_modules/pixi.js/lib/scene/graphics/gpu/colorToUniform.mjs","../node_modules/pixi.js/lib/scene/sprite/BatchableSprite.mjs","../node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.mjs","../node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.mjs","../node_modules/pixi.js/lib/scene/container/CustomRenderPipe.mjs","../node_modules/pixi.js/lib/scene/container/utils/executeInstructions.mjs","../node_modules/pixi.js/lib/scene/container/RenderGroupPipe.mjs","../node_modules/pixi.js/lib/scene/sprite/SpritePipe.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.mjs","../node_modules/pixi.js/lib/scene/container/utils/clearList.mjs","../node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs","../node_modules/pixi.js/lib/scene/container/utils/validateRenderables.mjs","../node_modules/pixi.js/lib/scene/container/RenderGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.mjs","../node_modules/pixi.js/lib/utils/data/clean.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/GCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/SchedulerSystem.mjs","../node_modules/pixi.js/lib/utils/sayHello.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderableGCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs"],"sourcesContent":["\"use strict\";\nfunction fastCopy(sourceBuffer, destinationBuffer, sourceOffset, byteLength) {\n sourceOffset ?? (sourceOffset = 0);\n byteLength ?? (byteLength = Math.min(sourceBuffer.byteLength - sourceOffset, destinationBuffer.byteLength));\n if (!(sourceOffset & 7) && !(byteLength & 7)) {\n const len = byteLength / 8;\n new Float64Array(destinationBuffer, 0, len).set(new Float64Array(sourceBuffer, sourceOffset, len));\n } else if (!(sourceOffset & 3) && !(byteLength & 3)) {\n const len = byteLength / 4;\n new Float32Array(destinationBuffer, 0, len).set(new Float32Array(sourceBuffer, sourceOffset, len));\n } else {\n new Uint8Array(destinationBuffer).set(new Uint8Array(sourceBuffer, sourceOffset, byteLength));\n }\n}\n\nexport { fastCopy };\n//# sourceMappingURL=fastCopy.mjs.map\n","\"use strict\";\nconst BLEND_TO_NPM = {\n normal: \"normal-npm\",\n add: \"add-npm\",\n screen: \"screen-npm\"\n};\nvar STENCIL_MODES = /* @__PURE__ */ ((STENCIL_MODES2) => {\n STENCIL_MODES2[STENCIL_MODES2[\"DISABLED\"] = 0] = \"DISABLED\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_ADD\"] = 1] = \"RENDERING_MASK_ADD\";\n STENCIL_MODES2[STENCIL_MODES2[\"MASK_ACTIVE\"] = 2] = \"MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"INVERSE_MASK_ACTIVE\"] = 3] = \"INVERSE_MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_REMOVE\"] = 4] = \"RENDERING_MASK_REMOVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"NONE\"] = 5] = \"NONE\";\n return STENCIL_MODES2;\n})(STENCIL_MODES || {});\n\nexport { BLEND_TO_NPM, STENCIL_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { BLEND_TO_NPM } from './const.mjs';\n\n\"use strict\";\nfunction getAdjustedBlendModeBlend(blendMode, textureSource) {\n if (textureSource.alphaMode === \"no-premultiply-alpha\") {\n return BLEND_TO_NPM[blendMode] || blendMode;\n }\n return blendMode;\n}\n\nexport { getAdjustedBlendModeBlend };\n//# sourceMappingURL=getAdjustedBlendModeBlend.mjs.map\n","\"use strict\";\nconst fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n try {\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n } finally {\n gl.deleteShader(shader);\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","import { getTestContext } from '../../../renderers/gl/shader/program/getTestContext.mjs';\nimport { checkMaxIfStatementsInShader } from './checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nlet maxTexturesPerBatchCache = null;\nfunction getMaxTexturesPerBatch() {\n if (maxTexturesPerBatchCache) return maxTexturesPerBatchCache;\n const gl = getTestContext();\n maxTexturesPerBatchCache = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n maxTexturesPerBatchCache = checkMaxIfStatementsInShader(\n maxTexturesPerBatchCache,\n gl\n );\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n return maxTexturesPerBatchCache;\n}\n\nexport { getMaxTexturesPerBatch };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","\"use strict\";\nclass BatchTextureArray {\n constructor() {\n /** Respective locations for textures. */\n this.ids = /* @__PURE__ */ Object.create(null);\n this.textures = [];\n this.count = 0;\n }\n /** Clear the textures and their locations. */\n clear() {\n for (let i = 0; i < this.count; i++) {\n const t = this.textures[i];\n this.textures[i] = null;\n this.ids[t.uid] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","import { uid } from '../../../utils/data/uid.mjs';\nimport { ViewableBuffer } from '../../../utils/data/ViewableBuffer.mjs';\nimport { deprecation } from '../../../utils/logging/deprecation.mjs';\nimport { GlobalResourceRegistry } from '../../../utils/pool/GlobalResourceRegistry.mjs';\nimport { fastCopy } from '../../renderers/shared/buffer/utils/fastCopy.mjs';\nimport { getAdjustedBlendModeBlend } from '../../renderers/shared/state/getAdjustedBlendModeBlend.mjs';\nimport { getMaxTexturesPerBatch } from '../gl/utils/maxRecommendedTextures.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\n\n\"use strict\";\nclass Batch {\n constructor() {\n this.renderPipeId = \"batch\";\n this.action = \"startBatch\";\n // TODO - eventually this could be useful for flagging batches as dirty and then only rebuilding those ones\n // public elementStart = 0;\n // public elementSize = 0;\n // for drawing..\n this.start = 0;\n this.size = 0;\n this.textures = new BatchTextureArray();\n this.blendMode = \"normal\";\n this.topology = \"triangle-strip\";\n this.canBundle = true;\n }\n destroy() {\n this.textures = null;\n this.gpuBindGroup = null;\n this.bindGroup = null;\n this.batcher = null;\n this.elements = null;\n }\n}\nconst batchPool = [];\nlet batchPoolIndex = 0;\nGlobalResourceRegistry.register({\n clear: () => {\n if (batchPool.length > 0) {\n for (const item of batchPool) {\n if (item) item.destroy();\n }\n }\n batchPool.length = 0;\n batchPoolIndex = 0;\n }\n});\nfunction getBatchFromPool() {\n return batchPoolIndex > 0 ? batchPool[--batchPoolIndex] : new Batch();\n}\nfunction returnBatchToPool(batch) {\n batch.elements = null;\n batchPool[batchPoolIndex++] = batch;\n}\nlet BATCH_TICK = 0;\nconst _Batcher = class _Batcher {\n constructor(options) {\n /** unique id for this batcher */\n this.uid = uid(\"batcher\");\n /** Indicates whether the batch data has been modified and needs updating. */\n this.dirty = true;\n /** The current index of the batch being processed. */\n this.batchIndex = 0;\n /** An array of all batches created during the current rendering process. */\n this.batches = [];\n this._elements = [];\n options = { ..._Batcher.defaultOptions, ...options };\n if (!options.maxTextures) {\n deprecation(\"v8.8.0\", \"maxTextures is a required option for Batcher now, please pass it in the options\");\n options.maxTextures = getMaxTexturesPerBatch();\n }\n const { maxTextures, attributesInitialSize, indicesInitialSize } = options;\n this.attributeBuffer = new ViewableBuffer(attributesInitialSize * 4);\n this.indexBuffer = new Uint16Array(indicesInitialSize);\n this.maxTextures = maxTextures;\n }\n begin() {\n this.elementSize = 0;\n this.elementStart = 0;\n this.indexSize = 0;\n this.attributeSize = 0;\n for (let i = 0; i < this.batchIndex; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batchIndex = 0;\n this._batchIndexStart = 0;\n this._batchIndexSize = 0;\n this.dirty = true;\n }\n add(batchableObject) {\n this._elements[this.elementSize++] = batchableObject;\n batchableObject._indexStart = this.indexSize;\n batchableObject._attributeStart = this.attributeSize;\n batchableObject._batcher = this;\n this.indexSize += batchableObject.indexSize;\n this.attributeSize += batchableObject.attributeSize * this.vertexSize;\n }\n checkAndUpdateTexture(batchableObject, texture) {\n const textureId = batchableObject._batch.textures.ids[texture._source.uid];\n if (!textureId && textureId !== 0) return false;\n batchableObject._textureId = textureId;\n batchableObject.texture = texture;\n return true;\n }\n updateElement(batchableObject) {\n this.dirty = true;\n const attributeBuffer = this.attributeBuffer;\n if (batchableObject.packAsQuad) {\n this.packQuadAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n } else {\n this.packAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n }\n }\n /**\n * breaks the batcher. This happens when a batch gets too big,\n * or we need to switch to a different type of rendering (a filter for example)\n * @param instructionSet\n */\n break(instructionSet) {\n const elements = this._elements;\n if (!elements[this.elementStart]) return;\n let batch = getBatchFromPool();\n let textureBatch = batch.textures;\n textureBatch.clear();\n const firstElement = elements[this.elementStart];\n let blendMode = getAdjustedBlendModeBlend(firstElement.blendMode, firstElement.texture._source);\n let topology = firstElement.topology;\n if (this.attributeSize * 4 > this.attributeBuffer.size) {\n this._resizeAttributeBuffer(this.attributeSize * 4);\n }\n if (this.indexSize > this.indexBuffer.length) {\n this._resizeIndexBuffer(this.indexSize);\n }\n const f32 = this.attributeBuffer.float32View;\n const u32 = this.attributeBuffer.uint32View;\n const indexBuffer = this.indexBuffer;\n let size = this._batchIndexSize;\n let start = this._batchIndexStart;\n let action = \"startBatch\";\n let batchElements = [];\n const maxTextures = this.maxTextures;\n for (let i = this.elementStart; i < this.elementSize; ++i) {\n const element = elements[i];\n elements[i] = null;\n const texture = element.texture;\n const source = texture._source;\n const adjustedBlendMode = getAdjustedBlendModeBlend(element.blendMode, source);\n const breakRequired = blendMode !== adjustedBlendMode || topology !== element.topology;\n if (source._batchTick === BATCH_TICK && !breakRequired) {\n element._textureId = source._textureBindLocation;\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n element._batch = batch;\n batchElements.push(element);\n continue;\n }\n source._batchTick = BATCH_TICK;\n if (textureBatch.count >= maxTextures || breakRequired) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action,\n batchElements\n );\n action = \"renderBatch\";\n start = size;\n blendMode = adjustedBlendMode;\n topology = element.topology;\n batch = getBatchFromPool();\n textureBatch = batch.textures;\n textureBatch.clear();\n batchElements = [];\n ++BATCH_TICK;\n }\n element._textureId = source._textureBindLocation = textureBatch.count;\n textureBatch.ids[source.uid] = textureBatch.count;\n textureBatch.textures[textureBatch.count++] = source;\n element._batch = batch;\n batchElements.push(element);\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n }\n if (textureBatch.count > 0) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action,\n batchElements\n );\n start = size;\n ++BATCH_TICK;\n }\n this.elementStart = this.elementSize;\n this._batchIndexStart = start;\n this._batchIndexSize = size;\n }\n _finishBatch(batch, indexStart, indexSize, textureBatch, blendMode, topology, instructionSet, action, elements) {\n batch.gpuBindGroup = null;\n batch.bindGroup = null;\n batch.action = action;\n batch.batcher = this;\n batch.textures = textureBatch;\n batch.blendMode = blendMode;\n batch.topology = topology;\n batch.start = indexStart;\n batch.size = indexSize;\n batch.elements = elements;\n ++BATCH_TICK;\n this.batches[this.batchIndex++] = batch;\n instructionSet.add(batch);\n }\n finish(instructionSet) {\n this.break(instructionSet);\n }\n /**\n * Resizes the attribute buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureAttributeBuffer(size) {\n if (size * 4 <= this.attributeBuffer.size) return;\n this._resizeAttributeBuffer(size * 4);\n }\n /**\n * Resizes the index buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureIndexBuffer(size) {\n if (size <= this.indexBuffer.length) return;\n this._resizeIndexBuffer(size);\n }\n _resizeAttributeBuffer(size) {\n const newSize = Math.max(size, this.attributeBuffer.size * 2);\n const newArrayBuffer = new ViewableBuffer(newSize);\n fastCopy(this.attributeBuffer.rawBinaryData, newArrayBuffer.rawBinaryData);\n this.attributeBuffer = newArrayBuffer;\n }\n _resizeIndexBuffer(size) {\n const indexBuffer = this.indexBuffer;\n let newSize = Math.max(size, indexBuffer.length * 1.5);\n newSize += newSize % 2;\n const newIndexBuffer = newSize > 65535 ? new Uint32Array(newSize) : new Uint16Array(newSize);\n if (newIndexBuffer.BYTES_PER_ELEMENT !== indexBuffer.BYTES_PER_ELEMENT) {\n for (let i = 0; i < indexBuffer.length; i++) {\n newIndexBuffer[i] = indexBuffer[i];\n }\n } else {\n fastCopy(indexBuffer.buffer, newIndexBuffer.buffer);\n }\n this.indexBuffer = newIndexBuffer;\n }\n packQuadIndex(indexBuffer, index, indicesOffset) {\n indexBuffer[index] = indicesOffset + 0;\n indexBuffer[index + 1] = indicesOffset + 1;\n indexBuffer[index + 2] = indicesOffset + 2;\n indexBuffer[index + 3] = indicesOffset + 0;\n indexBuffer[index + 4] = indicesOffset + 2;\n indexBuffer[index + 5] = indicesOffset + 3;\n }\n packIndex(element, indexBuffer, index, indicesOffset) {\n const indices = element.indices;\n const size = element.indexSize;\n const indexOffset = element.indexOffset;\n const attributeOffset = element.attributeOffset;\n for (let i = 0; i < size; i++) {\n indexBuffer[index++] = indicesOffset + indices[i + indexOffset] - attributeOffset;\n }\n }\n /**\n * Destroys the batch and its resources.\n * @param options - destruction options\n * @param options.shader - whether to destroy the associated shader\n */\n destroy(options = {}) {\n if (this.batches === null) return;\n for (let i = 0; i < this.batchIndex; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batches = null;\n this.geometry.destroy(true);\n this.geometry = null;\n if (options.shader) {\n this.shader?.destroy();\n this.shader = null;\n }\n for (let i = 0; i < this._elements.length; i++) {\n if (this._elements[i]) this._elements[i]._batch = null;\n }\n this._elements = null;\n this.indexBuffer = null;\n this.attributeBuffer.destroy();\n this.attributeBuffer = null;\n }\n};\n_Batcher.defaultOptions = {\n maxTextures: null,\n attributesInitialSize: 4,\n indicesInitialSize: 6\n};\nlet Batcher = _Batcher;\n\nexport { Batch, Batcher };\n//# sourceMappingURL=Batcher.mjs.map\n","import { Buffer } from '../../renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../renderers/shared/geometry/Geometry.mjs';\n\n\"use strict\";\nconst placeHolderBufferData = new Float32Array(1);\nconst placeHolderIndexData = new Uint32Array(1);\nclass BatchGeometry extends Geometry {\n constructor() {\n const vertexSize = 6;\n const attributeBuffer = new Buffer({\n data: placeHolderBufferData,\n label: \"attribute-batch-buffer\",\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n shrinkToFit: false\n });\n const indexBuffer = new Buffer({\n data: placeHolderIndexData,\n label: \"index-batch-buffer\",\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST,\n // | BufferUsage.STATIC,\n shrinkToFit: false\n });\n const stride = vertexSize * 4;\n super({\n attributes: {\n aPosition: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 0\n },\n aUV: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 2 * 4\n },\n aColor: {\n buffer: attributeBuffer,\n format: \"unorm8x4\",\n stride,\n offset: 4 * 4\n },\n aTextureIdAndRound: {\n buffer: attributeBuffer,\n format: \"uint16x2\",\n stride,\n offset: 5 * 4\n }\n },\n indexBuffer\n });\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","import { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction addBits(srcParts, parts, name) {\n if (srcParts) {\n for (const i in srcParts) {\n const id = i.toLocaleLowerCase();\n const part = parts[id];\n if (part) {\n let sanitisedPart = srcParts[i];\n if (i === \"header\") {\n sanitisedPart = sanitisedPart.replace(/@in\\s+[^;]+;\\s*/g, \"\").replace(/@out\\s+[^;]+;\\s*/g, \"\");\n }\n if (name) {\n part.push(`//----${name}----//`);\n }\n part.push(sanitisedPart);\n } else {\n warn(`${i} placement hook does not exist in shader`);\n }\n }\n }\n}\n\nexport { addBits };\n//# sourceMappingURL=addBits.mjs.map\n","\"use strict\";\nconst findHooksRx = /\\{\\{(.*?)\\}\\}/g;\nfunction compileHooks(programSrc) {\n const parts = {};\n const partMatches = programSrc.match(findHooksRx)?.map((hook) => hook.replace(/[{()}]/g, \"\")) ?? [];\n partMatches.forEach((hook) => {\n parts[hook] = [];\n });\n return parts;\n}\n\nexport { compileHooks };\n//# sourceMappingURL=compileHooks.mjs.map\n","\"use strict\";\nfunction extractInputs(fragmentSource, out) {\n let match;\n const regex = /@in\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction compileInputs(fragments, template, sort = false) {\n const results = [];\n extractInputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractInputs(fragment.header, results);\n }\n });\n const mainInput = results;\n if (sort) {\n mainInput.sort();\n }\n const finalString = mainInput.map((inValue, i) => ` @location(${i}) ${inValue},`).join(\"\\n\");\n let cleanedString = template.replace(/@in\\s+[^;]+;\\s*/g, \"\");\n cleanedString = cleanedString.replace(\"{{in}}\", `\n${finalString}\n`);\n return cleanedString;\n}\n\nexport { compileInputs };\n//# sourceMappingURL=compileInputs.mjs.map\n","\"use strict\";\nfunction extractOutputs(fragmentSource, out) {\n let match;\n const regex = /@out\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction extractVariableName(value) {\n const regex = /\\b(\\w+)\\s*:/g;\n const match = regex.exec(value);\n return match ? match[1] : \"\";\n}\nfunction stripVariable(value) {\n const regex = /@.*?\\s+/g;\n return value.replace(regex, \"\");\n}\nfunction compileOutputs(fragments, template) {\n const results = [];\n extractOutputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractOutputs(fragment.header, results);\n }\n });\n let index = 0;\n const mainStruct = results.sort().map((inValue) => {\n if (inValue.indexOf(\"builtin\") > -1) {\n return inValue;\n }\n return `@location(${index++}) ${inValue}`;\n }).join(\",\\n\");\n const mainStart = results.sort().map((inValue) => ` var ${stripVariable(inValue)};`).join(\"\\n\");\n const mainEnd = `return VSOutput(\n ${results.sort().map((inValue) => ` ${extractVariableName(inValue)}`).join(\",\\n\")});`;\n let compiledCode = template.replace(/@out\\s+[^;]+;\\s*/g, \"\");\n compiledCode = compiledCode.replace(\"{{struct}}\", `\n${mainStruct}\n`);\n compiledCode = compiledCode.replace(\"{{start}}\", `\n${mainStart}\n`);\n compiledCode = compiledCode.replace(\"{{return}}\", `\n${mainEnd}\n`);\n return compiledCode;\n}\n\nexport { compileOutputs };\n//# sourceMappingURL=compileOutputs.mjs.map\n","\"use strict\";\nfunction injectBits(templateSrc, fragmentParts) {\n let out = templateSrc;\n for (const i in fragmentParts) {\n const parts = fragmentParts[i];\n const toInject = parts.join(\"\\n\");\n if (toInject.length) {\n out = out.replace(`{{${i}}}`, `//-----${i} START-----//\n${parts.join(\"\\n\")}\n//----${i} FINISH----//`);\n } else {\n out = out.replace(`{{${i}}}`, \"\");\n }\n }\n return out;\n}\n\nexport { injectBits };\n//# sourceMappingURL=injectBits.mjs.map\n","import { addBits } from './utils/addBits.mjs';\nimport { compileHooks } from './utils/compileHooks.mjs';\nimport { compileInputs } from './utils/compileInputs.mjs';\nimport { compileOutputs } from './utils/compileOutputs.mjs';\nimport { injectBits } from './utils/injectBits.mjs';\n\n\"use strict\";\nconst cacheMap = /* @__PURE__ */ Object.create(null);\nconst bitCacheMap = /* @__PURE__ */ new Map();\nlet CACHE_UID = 0;\nfunction compileHighShader({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n const { vertex, fragment } = compileInputsAndOutputs(template, bits);\n cacheMap[cacheId] = compileBits(vertex, fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileHighShaderGl({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileInputsAndOutputs(template, bits) {\n const vertexFragments = bits.map((shaderBit) => shaderBit.vertex).filter((v) => !!v);\n const fragmentFragments = bits.map((shaderBit) => shaderBit.fragment).filter((v) => !!v);\n let compiledVertex = compileInputs(vertexFragments, template.vertex, true);\n compiledVertex = compileOutputs(vertexFragments, compiledVertex);\n const compiledFragment = compileInputs(fragmentFragments, template.fragment, true);\n return {\n vertex: compiledVertex,\n fragment: compiledFragment\n };\n}\nfunction generateCacheId(template, bits) {\n return bits.map((highFragment) => {\n if (!bitCacheMap.has(highFragment)) {\n bitCacheMap.set(highFragment, CACHE_UID++);\n }\n return bitCacheMap.get(highFragment);\n }).sort((a, b) => a - b).join(\"-\") + template.vertex + template.fragment;\n}\nfunction compileBits(vertex, fragment, bits) {\n const vertexParts = compileHooks(vertex);\n const fragmentParts = compileHooks(fragment);\n bits.forEach((shaderBit) => {\n addBits(shaderBit.vertex, vertexParts, shaderBit.name);\n addBits(shaderBit.fragment, fragmentParts, shaderBit.name);\n });\n return {\n vertex: injectBits(vertex, vertexParts),\n fragment: injectBits(fragment, fragmentParts)\n };\n}\n\nexport { compileHighShader, compileHighShaderGl };\n//# sourceMappingURL=compileHighShader.mjs.map\n","\"use strict\";\nconst vertexGPUTemplate = (\n /* wgsl */\n `\n @in aPosition: vec2<f32>;\n @in aUV: vec2<f32>;\n\n @out @builtin(position) vPosition: vec4<f32>;\n @out vUV : vec2<f32>;\n @out vColor : vec4<f32>;\n\n {{header}}\n\n struct VSOutput {\n {{struct}}\n };\n\n @vertex\n fn main( {{in}} ) -> VSOutput {\n\n var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;\n var modelMatrix = mat3x3<f32>(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n var position = aPosition;\n var uv = aUV;\n\n {{start}}\n\n vColor = vec4<f32>(1., 1., 1., 1.);\n\n {{main}}\n\n vUV = uv;\n\n var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= globalUniforms.uWorldColorAlpha;\n\n {{end}}\n\n {{return}}\n };\n`\n);\nconst fragmentGPUTemplate = (\n /* wgsl */\n `\n @in vUV : vec2<f32>;\n @in vColor : vec4<f32>;\n\n {{header}}\n\n @fragment\n fn main(\n {{in}}\n ) -> @location(0) vec4<f32> {\n\n {{start}}\n\n var outColor:vec4<f32>;\n\n {{main}}\n\n var finalColor:vec4<f32> = outColor * vColor;\n\n {{end}}\n\n return finalColor;\n };\n`\n);\nconst vertexGlTemplate = (\n /* glsl */\n `\n in vec2 aPosition;\n in vec2 aUV;\n\n out vec4 vColor;\n out vec2 vUV;\n\n {{header}}\n\n void main(void){\n\n mat3 worldTransformMatrix = uWorldTransformMatrix;\n mat3 modelMatrix = mat3(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n vec2 position = aPosition;\n vec2 uv = aUV;\n\n {{start}}\n\n vColor = vec4(1.);\n\n {{main}}\n\n vUV = uv;\n\n mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= uWorldColorAlpha;\n\n {{end}}\n }\n`\n);\nconst fragmentGlTemplate = (\n /* glsl */\n `\n\n in vec4 vColor;\n in vec2 vUV;\n\n out vec4 finalColor;\n\n {{header}}\n\n void main(void) {\n\n {{start}}\n\n vec4 outColor;\n\n {{main}}\n\n finalColor = outColor * vColor;\n\n {{end}}\n }\n`\n);\n\nexport { fragmentGPUTemplate, fragmentGlTemplate, vertexGPUTemplate, vertexGlTemplate };\n//# sourceMappingURL=defaultProgramTemplate.mjs.map\n","\"use strict\";\nconst globalUniformsBit = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uWorldTransformMatrix:mat3x3<f32>,\n uWorldColorAlpha: vec4<f32>,\n uResolution: vec2<f32>,\n }\n\n @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n `\n )\n }\n};\nconst globalUniformsUBOBitGl = {\n name: \"global-uniforms-ubo-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n )\n }\n};\nconst globalUniformsBitGl = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n )\n }\n};\n\nexport { globalUniformsBit, globalUniformsBitGl, globalUniformsUBOBitGl };\n//# sourceMappingURL=globalUniformsBit.mjs.map\n","import { GlProgram } from '../renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../renderers/gpu/shader/GpuProgram.mjs';\nimport { compileHighShader, compileHighShaderGl } from './compiler/compileHighShader.mjs';\nimport { vertexGPUTemplate, fragmentGPUTemplate, fragmentGlTemplate, vertexGlTemplate } from './defaultProgramTemplate.mjs';\nimport { globalUniformsBit, globalUniformsBitGl } from './shader-bits/globalUniformsBit.mjs';\n\n\"use strict\";\nfunction compileHighShaderGpuProgram({ bits, name }) {\n const source = compileHighShader({\n template: {\n fragment: fragmentGPUTemplate,\n vertex: vertexGPUTemplate\n },\n bits: [\n globalUniformsBit,\n ...bits\n ]\n });\n return GpuProgram.from({\n name,\n vertex: {\n source: source.vertex,\n entryPoint: \"main\"\n },\n fragment: {\n source: source.fragment,\n entryPoint: \"main\"\n }\n });\n}\nfunction compileHighShaderGlProgram({ bits, name }) {\n return new GlProgram({\n name,\n ...compileHighShaderGl({\n template: {\n vertex: vertexGlTemplate,\n fragment: fragmentGlTemplate\n },\n bits: [\n globalUniformsBitGl,\n ...bits\n ]\n })\n });\n}\n\nexport { compileHighShaderGlProgram, compileHighShaderGpuProgram };\n//# sourceMappingURL=compileHighShaderToProgram.mjs.map\n","\"use strict\";\nconst colorBit = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n @in aColor: vec4<f32>;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\nconst colorBitGl = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n in vec4 aColor;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\n\nexport { colorBit, colorBitGl };\n//# sourceMappingURL=colorBit.mjs.map\n","\"use strict\";\nconst textureBatchBitGpuCache = {};\nfunction generateBindingSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"@group(1) @binding(0) var textureSource1: texture_2d<f32>;\");\n src.push(\"@group(1) @binding(1) var textureSampler1: sampler;\");\n } else {\n let bindingIndex = 0;\n for (let i = 0; i < maxTextures; i++) {\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d<f32>;`);\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);\n }\n }\n return src.join(\"\\n\");\n}\nfunction generateSampleSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);\");\n } else {\n src.push(\"switch vTextureId {\");\n for (let i = 0; i < maxTextures; i++) {\n if (i === maxTextures - 1) {\n src.push(` default:{`);\n } else {\n src.push(` case ${i}:{`);\n }\n src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);\n src.push(` break;}`);\n }\n src.push(`}`);\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBit(maxTextures) {\n if (!textureBatchBitGpuCache[maxTextures]) {\n textureBatchBitGpuCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n @in aTextureIdAndRound: vec2<u32>;\n @out @interpolate(flat) vTextureId : u32;\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1)\n {\n vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n fragment: {\n header: `\n @in @interpolate(flat) vTextureId: u32;\n\n ${generateBindingSrc(maxTextures)}\n `,\n main: `\n var uvDx = dpdx(vUV);\n var uvDy = dpdy(vUV);\n\n ${generateSampleSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGpuCache[maxTextures];\n}\nconst textureBatchBitGlCache = {};\nfunction generateSampleGlSrc(maxTextures) {\n const src = [];\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src.push(\"else\");\n }\n if (i < maxTextures - 1) {\n src.push(`if(vTextureId < ${i}.5)`);\n }\n src.push(\"{\");\n src.push(`\toutColor = texture(uTextures[${i}], vUV);`);\n src.push(\"}\");\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBitGl(maxTextures) {\n if (!textureBatchBitGlCache[maxTextures]) {\n textureBatchBitGlCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n in vec2 aTextureIdAndRound;\n out float vTextureId;\n\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n fragment: {\n header: `\n in float vTextureId;\n\n uniform sampler2D uTextures[${maxTextures}];\n\n `,\n main: `\n\n ${generateSampleGlSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGlCache[maxTextures];\n}\n\nexport { generateTextureBatchBit, generateTextureBatchBitGl };\n//# sourceMappingURL=generateTextureBatchBit.mjs.map\n","\"use strict\";\nconst roundPixelsBit = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>\n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\nconst roundPixelsBitGl = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n vec2 roundPixels(vec2 position, vec2 targetSize)\n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\n\nexport { roundPixelsBit, roundPixelsBitGl };\n//# sourceMappingURL=roundPixelsBit.mjs.map\n","import { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst batchSamplersUniformGroupHash = {};\nfunction getBatchSamplersUniformGroup(maxTextures) {\n let batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures];\n if (batchSamplersUniformGroup) return batchSamplersUniformGroup;\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures] = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: maxTextures }\n }, { isStatic: true });\n return batchSamplersUniformGroup;\n}\n\nexport { getBatchSamplersUniformGroup };\n//# sourceMappingURL=getBatchSamplersUniformGroup.mjs.map\n","import { compileHighShaderGlProgram, compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl, colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl, generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBitGl, roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\n\n\"use strict\";\nclass DefaultShader extends Shader {\n constructor(maxTextures) {\n const glProgram = compileHighShaderGlProgram({\n name: \"batch\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n roundPixelsBitGl\n ]\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(maxTextures),\n roundPixelsBit\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n this.maxTextures = maxTextures;\n }\n}\n\nexport { DefaultShader };\n//# sourceMappingURL=DefaultShader.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Batcher } from './Batcher.mjs';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport { DefaultShader } from './DefaultShader.mjs';\n\n\"use strict\";\nlet defaultShader = null;\nconst _DefaultBatcher = class _DefaultBatcher extends Batcher {\n constructor(options) {\n super(options);\n this.geometry = new BatchGeometry();\n this.name = _DefaultBatcher.extension.name;\n /** The size of one attribute. 1 = 32 bit. x, y, u, v, color, textureIdAndRound -> total = 6 */\n this.vertexSize = 6;\n defaultShader ?? (defaultShader = new DefaultShader(options.maxTextures));\n this.shader = defaultShader;\n }\n /**\n * Packs the attributes of a DefaultBatchableMeshElement into the provided views.\n * @param element - The DefaultBatchableMeshElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packAttributes(element, float32View, uint32View, index, textureId) {\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n const wt = element.transform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const { positions, uvs } = element;\n const argb = element.color;\n const offset = element.attributeOffset;\n const end = offset + element.attributeSize;\n for (let i = offset; i < end; i++) {\n const i2 = i * 2;\n const x = positions[i2];\n const y = positions[i2 + 1];\n float32View[index++] = a * x + c * y + tx;\n float32View[index++] = d * y + b * x + ty;\n float32View[index++] = uvs[i2];\n float32View[index++] = uvs[i2 + 1];\n uint32View[index++] = argb;\n uint32View[index++] = textureIdAndRound;\n }\n }\n /**\n * Packs the attributes of a DefaultBatchableQuadElement into the provided views.\n * @param element - The DefaultBatchableQuadElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packQuadAttributes(element, float32View, uint32View, index, textureId) {\n const texture = element.texture;\n const wt = element.transform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const bounds = element.bounds;\n const w0 = bounds.maxX;\n const w1 = bounds.minX;\n const h0 = bounds.maxY;\n const h1 = bounds.minY;\n const uvs = texture.uvs;\n const argb = element.color;\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n float32View[index + 0] = a * w1 + c * h1 + tx;\n float32View[index + 1] = d * h1 + b * w1 + ty;\n float32View[index + 2] = uvs.x0;\n float32View[index + 3] = uvs.y0;\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n float32View[index + 6] = a * w0 + c * h1 + tx;\n float32View[index + 7] = d * h1 + b * w0 + ty;\n float32View[index + 8] = uvs.x1;\n float32View[index + 9] = uvs.y1;\n uint32View[index + 10] = argb;\n uint32View[index + 11] = textureIdAndRound;\n float32View[index + 12] = a * w0 + c * h0 + tx;\n float32View[index + 13] = d * h0 + b * w0 + ty;\n float32View[index + 14] = uvs.x2;\n float32View[index + 15] = uvs.y2;\n uint32View[index + 16] = argb;\n uint32View[index + 17] = textureIdAndRound;\n float32View[index + 18] = a * w1 + c * h0 + tx;\n float32View[index + 19] = d * h0 + b * w1 + ty;\n float32View[index + 20] = uvs.x3;\n float32View[index + 21] = uvs.y3;\n uint32View[index + 22] = argb;\n uint32View[index + 23] = textureIdAndRound;\n }\n /**\n * Updates the maximum number of textures that can be used in the shader.\n * @param maxTextures - The maximum number of textures that can be used in the shader.\n * @internal\n */\n _updateMaxTextures(maxTextures) {\n if (this.shader.maxTextures === maxTextures) return;\n defaultShader = new DefaultShader(maxTextures);\n this.shader = defaultShader;\n }\n destroy() {\n this.shader = null;\n super.destroy();\n }\n};\n/** @ignore */\n_DefaultBatcher.extension = {\n type: [\n ExtensionType.Batcher\n ],\n name: \"default\"\n};\nlet DefaultBatcher = _DefaultBatcher;\n\nexport { DefaultBatcher };\n//# sourceMappingURL=DefaultBatcher.mjs.map\n","\"use strict\";\nclass GCManagedHash {\n constructor(options) {\n // Exposed directly for GC system access\n this.items = /* @__PURE__ */ Object.create(null);\n const { renderer, type, onUnload, priority, name } = options;\n this._renderer = renderer;\n renderer.gc.addResourceHash(this, \"items\", type, priority ?? 0);\n this._onUnload = onUnload;\n this.name = name;\n }\n /**\n * Add an item to the hash. No-op if already added.\n * @param item\n * @returns true if the item was added, false if it was already in the hash\n */\n add(item) {\n if (this.items[item.uid]) return false;\n this.items[item.uid] = item;\n item.once(\"unload\", this.remove, this);\n item._gcLastUsed = this._renderer.gc.now;\n return true;\n }\n remove(item, ...args) {\n if (!this.items[item.uid]) return;\n const gpuData = item._gpuData[this._renderer.uid];\n if (!gpuData) return;\n this._onUnload?.(item, ...args);\n gpuData.destroy();\n item._gpuData[this._renderer.uid] = null;\n this.items[item.uid] = null;\n }\n removeAll(...args) {\n Object.values(this.items).forEach((item) => item && this.remove(item, ...args));\n }\n destroy(...args) {\n this.removeAll(...args);\n this.items = /* @__PURE__ */ Object.create(null);\n this._renderer = null;\n this._onUnload = null;\n }\n}\n\nexport { GCManagedHash };\n//# sourceMappingURL=GCManagedHash.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;\\nuniform float uInverse;\\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 float a = alphaMul * masky.r * npmAlpha * clip;\\n\\n if (uInverse == 1.0) {\\n a = 1.0 - a;\\n }\\n\\n finalColor = original * a;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mask.frag.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 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 uInverse:f32,\\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 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 var uAlpha = filterUniforms.uAlpha;\\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 var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);\\n\\n var a: f32 = alphaMul * mask.r * uAlpha * clip;\\n\\n if (filterUniforms.uInverse == 1.0) {\\n a = 1.0 - a;\\n }\\n\\n return source * a;\\n}\\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 uInverse: { value: options.inverse ? 1 : 0, 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 clipToViewport: false,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source\n }\n });\n this.sprite = sprite;\n this._textureMatrix = textureMatrix;\n }\n set inverse(value) {\n this.resources.filterUniforms.uniforms.uInverse = value ? 1 : 0;\n }\n get inverse() {\n return this.resources.filterUniforms.uniforms.uInverse === 1;\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","\"use strict\";\nfunction colorToUniform(rgb, alpha, out, offset) {\n out[offset++] = (rgb >> 16 & 255) / 255;\n out[offset++] = (rgb >> 8 & 255) / 255;\n out[offset++] = (rgb & 255) / 255;\n out[offset++] = alpha;\n}\nfunction color32BitToUniform(abgr, out, offset) {\n const alpha = (abgr >> 24 & 255) / 255;\n out[offset++] = (abgr & 255) / 255 * alpha;\n out[offset++] = (abgr >> 8 & 255) / 255 * alpha;\n out[offset++] = (abgr >> 16 & 255) / 255 * alpha;\n out[offset++] = alpha;\n}\n\nexport { color32BitToUniform, colorToUniform };\n//# sourceMappingURL=colorToUniform.mjs.map\n","\"use strict\";\nclass BatchableSprite {\n constructor() {\n this.batcherName = \"default\";\n this.topology = \"triangle-list\";\n // batch specific..\n this.attributeSize = 4;\n this.indexSize = 6;\n this.packAsQuad = true;\n this.roundPixels = 0;\n this._attributeStart = 0;\n // location in the buffer\n this._batcher = null;\n this._batch = null;\n }\n get blendMode() {\n return this.renderable.groupBlendMode;\n }\n get color() {\n return this.renderable.groupColorAlpha;\n }\n reset() {\n this.renderable = null;\n this.texture = null;\n this._batcher = null;\n this._batch = null;\n this.bounds = null;\n }\n destroy() {\n this.reset();\n }\n}\n\nexport { BatchableSprite };\n//# sourceMappingURL=BatchableSprite.mjs.map\n","import { ExtensionType, extensions } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { DefaultBatcher } from './DefaultBatcher.mjs';\n\n\"use strict\";\nconst _BatcherPipe = class _BatcherPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n this._batchersByInstructionSet = /* @__PURE__ */ Object.create(null);\n /** A record of all active batchers, keyed by their names */\n this._activeBatches = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init?.(this);\n }\n static getBatcher(name) {\n return new this._availableBatchers[name]();\n }\n buildStart(instructionSet) {\n let batchers = this._batchersByInstructionSet[instructionSet.uid];\n if (!batchers) {\n batchers = this._batchersByInstructionSet[instructionSet.uid] = /* @__PURE__ */ Object.create(null);\n batchers.default || (batchers.default = new DefaultBatcher({\n maxTextures: this.renderer.limits.maxBatchableTextures\n }));\n }\n this._activeBatches = batchers;\n this._activeBatch = this._activeBatches.default;\n for (const i in this._activeBatches) {\n this._activeBatches[i].begin();\n }\n }\n addToBatch(batchableObject, instructionSet) {\n if (this._activeBatch.name !== batchableObject.batcherName) {\n this._activeBatch.break(instructionSet);\n let batch = this._activeBatches[batchableObject.batcherName];\n if (!batch) {\n batch = this._activeBatches[batchableObject.batcherName] = _BatcherPipe.getBatcher(batchableObject.batcherName);\n batch.begin();\n }\n this._activeBatch = batch;\n }\n this._activeBatch.add(batchableObject);\n }\n break(instructionSet) {\n this._activeBatch.break(instructionSet);\n }\n buildEnd(instructionSet) {\n this._activeBatch.break(instructionSet);\n const batches = this._activeBatches;\n for (const i in batches) {\n const batch = batches[i];\n const geometry = batch.geometry;\n geometry.indexBuffer.setDataWithSize(batch.indexBuffer, batch.indexSize, true);\n geometry.buffers[0].setDataWithSize(batch.attributeBuffer.float32View, batch.attributeSize, false);\n }\n }\n upload(instructionSet) {\n const batchers = this._batchersByInstructionSet[instructionSet.uid];\n for (const i in batchers) {\n const batcher = batchers[i];\n const geometry = batcher.geometry;\n if (batcher.dirty) {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n }\n execute(batch) {\n if (batch.action === \"startBatch\") {\n const batcher = batch.batcher;\n const geometry = batcher.geometry;\n const shader = batcher.shader;\n this._adaptor.start(this, geometry, shader);\n }\n this._adaptor.execute(this, batch);\n }\n destroy() {\n this.state = null;\n this.renderer = null;\n this._adaptor = null;\n for (const i in this._activeBatches) {\n this._activeBatches[i].destroy();\n }\n this._activeBatches = null;\n }\n};\n/** @ignore */\n_BatcherPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"batch\"\n};\n_BatcherPipe._availableBatchers = /* @__PURE__ */ Object.create(null);\nlet BatcherPipe = _BatcherPipe;\nextensions.handleByMap(ExtensionType.Batcher, BatcherPipe._availableBatchers);\nextensions.add(DefaultBatcher);\n\nexport { BatcherPipe };\n//# sourceMappingURL=BatcherPipe.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 { 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';\nimport { RendererType } from '../../renderers/types.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nclass AlphaMaskEffect extends FilterEffect {\n constructor() {\n super();\n this.filters = [new MaskFilter({\n sprite: new Sprite(Texture.EMPTY),\n inverse: false,\n resolution: \"inherit\",\n antialias: \"inherit\"\n })];\n }\n get sprite() {\n return this.filters[0].sprite;\n }\n set sprite(value) {\n this.filters[0].sprite = value;\n }\n get inverse() {\n return this.filters[0].inverse;\n }\n set inverse(value) {\n this.filters[0].inverse = 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 inverse: maskedContainer._maskOptions.inverse,\n canBundle: false,\n maskedContainer\n });\n mask.inverse = maskedContainer._maskOptions.inverse;\n if (mask.renderMaskToTexture) {\n const maskContainer = mask.mask;\n maskContainer.includeInBuild = true;\n maskContainer.collectRenderables(\n instructionSet,\n renderer,\n null\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 inverse: maskedContainer._maskOptions.inverse,\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 inverse: _maskedContainer._maskOptions.inverse,\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 filterEffect.inverse = instruction.inverse;\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 colorTextureSource = renderer.renderTarget.renderTarget.colorTexture.source;\n const filterTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n colorTextureSource._resolution,\n colorTextureSource.antialias\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 if (renderer.type === RendererType.WEBGL) {\n renderer.renderTarget.finishRenderPass();\n }\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._renderer = null;\n this._colorStack = null;\n }\n}\n/** @ignore */\nColorMaskPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes\n ],\n name: \"colorMask\"\n};\n\nexport { ColorMaskPipe };\n//# sourceMappingURL=ColorMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.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 inverse: _container._maskOptions.inverse,\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 maskContainer.collectRenderables(\n instructionSet,\n renderer,\n null\n );\n maskContainer.includeInBuild = false;\n renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskEnd\",\n mask,\n inverse: _container._maskOptions.inverse,\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 inverse: _container._maskOptions.inverse,\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 gpuRenderer = renderer;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n let maskStackIndex = (_a = this._maskStackHash)[renderTargetUid] ?? (_a[renderTargetUid] = 0);\n if (instruction.action === \"pushMaskBegin\") {\n gpuRenderer.renderTarget.ensureDepthStencil();\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD, maskStackIndex);\n maskStackIndex++;\n gpuRenderer.colorMask.setMask(0);\n } else if (instruction.action === \"pushMaskEnd\") {\n if (instruction.inverse) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE, maskStackIndex);\n } else {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n }\n gpuRenderer.colorMask.setMask(15);\n } else if (instruction.action === \"popMaskBegin\") {\n gpuRenderer.colorMask.setMask(0);\n if (maskStackIndex !== 0) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE, maskStackIndex);\n } else {\n gpuRenderer.renderTarget.clear(null, CLEAR.STENCIL);\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.DISABLED, maskStackIndex);\n }\n maskStackIndex--;\n } else if (instruction.action === \"popMaskEnd\") {\n if (instruction.inverse) {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE, maskStackIndex);\n } else {\n gpuRenderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n }\n gpuRenderer.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 ],\n name: \"stencilMask\"\n};\n\nexport { StencilMaskPipe };\n//# sourceMappingURL=StencilMaskPipe.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CustomRenderPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n updateRenderable() {\n }\n destroyRenderable() {\n }\n validateRenderable() {\n return false;\n }\n addRenderable(container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(container);\n }\n execute(container) {\n if (!container.isRenderable) 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 { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../sprite/BatchableSprite.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 if (renderGroup.isCachedAsTexture) {\n this._addRenderableCacheAsTexture(renderGroup, instructionSet);\n } else {\n this._addRenderableDirect(renderGroup, instructionSet);\n }\n }\n execute(renderGroup) {\n if (!renderGroup.isRenderable) return;\n if (renderGroup.isCachedAsTexture) {\n this._executeCacheAsTexture(renderGroup);\n } else {\n this._executeDirect(renderGroup);\n }\n }\n destroy() {\n this._renderer = null;\n }\n _addRenderableDirect(renderGroup, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n if (renderGroup._batchableRenderGroup) {\n BigPool.return(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup = null;\n }\n instructionSet.add(renderGroup);\n }\n _addRenderableCacheAsTexture(renderGroup, instructionSet) {\n const batchableRenderGroup = renderGroup._batchableRenderGroup ?? (renderGroup._batchableRenderGroup = BigPool.get(BatchableSprite));\n batchableRenderGroup.renderable = renderGroup.root;\n batchableRenderGroup.transform = renderGroup.root.relativeGroupTransform;\n batchableRenderGroup.texture = renderGroup.texture;\n batchableRenderGroup.bounds = renderGroup._textureBounds;\n instructionSet.add(renderGroup);\n this._renderer.renderPipes.blendMode.pushBlendMode(renderGroup, renderGroup.root.groupBlendMode, instructionSet);\n this._renderer.renderPipes.batch.addToBatch(batchableRenderGroup, instructionSet);\n this._renderer.renderPipes.blendMode.popBlendMode(instructionSet);\n }\n _executeCacheAsTexture(renderGroup) {\n if (renderGroup.textureNeedsUpdate) {\n renderGroup.textureNeedsUpdate = false;\n const worldTransformMatrix = new Matrix().translate(\n -renderGroup._textureBounds.x,\n -renderGroup._textureBounds.y\n );\n this._renderer.renderTarget.push(renderGroup.texture, true, null, renderGroup.texture.frame);\n this._renderer.globalUniforms.push({\n worldTransformMatrix,\n worldColor: 4294967295,\n offset: { x: 0, y: 0 }\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.renderTarget.finishRenderPass();\n this._renderer.renderTarget.pop();\n this._renderer.globalUniforms.pop();\n }\n renderGroup._batchableRenderGroup._batcher.updateElement(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup._batcher.geometry.buffers[0].update();\n }\n _executeDirect(renderGroup) {\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.inverseParentTextureTransform,\n worldColor: renderGroup.worldColorAlpha\n });\n executeInstructions(renderGroup, this._renderer.renderPipes);\n this._renderer.globalUniforms.pop();\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","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BatchableSprite } from './BatchableSprite.mjs';\n\n\"use strict\";\nclass SpritePipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n addRenderable(sprite, instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite, instructionSet);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite._batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const gpuSprite = this._getGpuSprite(sprite);\n return !gpuSprite._batcher.checkAndUpdateTexture(\n gpuSprite,\n sprite._texture\n );\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n batchableSprite.bounds = sprite.visualBounds;\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return sprite._gpuData[this._renderer.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableSprite = new BatchableSprite();\n batchableSprite.renderable = sprite;\n batchableSprite.transform = sprite.groupTransform;\n batchableSprite.texture = sprite._texture;\n batchableSprite.bounds = sprite.visualBounds;\n batchableSprite.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n sprite._gpuData[this._renderer.uid] = batchableSprite;\n return batchableSprite;\n }\n destroy() {\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 { extensions, ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { FilterEffect } from '../../../../filters/FilterEffect.mjs';\nimport { RenderGroup } from '../../../../scene/container/RenderGroup.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._blendModeStack = [];\n this._isAdvanced = false;\n this._filterHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._renderer.runners.prerender.add(this);\n }\n prerender() {\n this._activeBlendMode = \"normal\";\n this._isAdvanced = false;\n }\n /**\n * Push a blend mode onto the internal stack and apply it to the instruction set if needed.\n * @param renderable - The renderable or {@link RenderGroup} associated with the change.\n * @param blendMode - The blend mode to activate.\n * @param instructionSet - The instruction set being built.\n */\n pushBlendMode(renderable, blendMode, instructionSet) {\n this._blendModeStack.push(blendMode);\n this.setBlendMode(renderable, blendMode, instructionSet);\n }\n /**\n * Pop the last blend mode from the stack and apply the new top-of-stack mode.\n * @param instructionSet - The instruction set being built.\n */\n popBlendMode(instructionSet) {\n this._blendModeStack.pop();\n const blendMode = this._blendModeStack[this._activeBlendMode.length - 1] ?? \"normal\";\n this.setBlendMode(null, blendMode, instructionSet);\n }\n /**\n * Ensure a blend mode switch is added to the instruction set when the mode changes.\n * If an advanced blend mode is active, subsequent renderables will be collected so they can be\n * rendered within a single filter pass.\n * @param renderable - The renderable or {@link RenderGroup} to associate with the change, or null when unwinding.\n * @param blendMode - The target blend mode.\n * @param instructionSet - The instruction set being built.\n */\n setBlendMode(renderable, blendMode, instructionSet) {\n const isRenderGroup = renderable instanceof RenderGroup;\n if (this._activeBlendMode === blendMode) {\n if (this._isAdvanced && renderable && !isRenderGroup) {\n this._renderableList?.push(renderable);\n }\n return;\n }\n if (this._isAdvanced) this._endAdvancedBlendMode(instructionSet);\n this._activeBlendMode = blendMode;\n if (!renderable) return;\n this._isAdvanced = !!BLEND_MODE_FILTERS[blendMode];\n if (this._isAdvanced) this._beginAdvancedBlendMode(renderable, instructionSet);\n }\n _beginAdvancedBlendMode(renderable, 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 const filterEffect = this._ensureFilterEffect(blendMode);\n const isRenderGroup = renderable instanceof RenderGroup;\n const instruction = {\n renderPipeId: \"filter\",\n action: \"pushFilter\",\n filterEffect,\n renderables: isRenderGroup ? null : [renderable],\n container: isRenderGroup ? renderable.root : null,\n canBundle: false\n };\n this._renderableList = instruction.renderables;\n instructionSet.add(instruction);\n }\n _ensureFilterEffect(blendMode) {\n let filterEffect = this._filterHash[blendMode];\n if (!filterEffect) {\n filterEffect = this._filterHash[blendMode] = new FilterEffect();\n filterEffect.filters = [new BLEND_MODE_FILTERS[blendMode]()];\n }\n return filterEffect;\n }\n _endAdvancedBlendMode(instructionSet) {\n this._isAdvanced = false;\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 */\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 */\n buildEnd(instructionSet) {\n if (!this._isAdvanced) return;\n this._endAdvancedBlendMode(instructionSet);\n }\n /** @internal */\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","\"use strict\";\nfunction clearList(list, index) {\n index || (index = 0);\n for (let j = index; j < list.length; j++) {\n if (list[j]) {\n list[j] = null;\n } else {\n break;\n }\n }\n}\n\nexport { clearList };\n//# sourceMappingURL=clearList.mjs.map\n","import { Container, UPDATE_VISIBLE, UPDATE_COLOR, UPDATE_BLEND } from '../Container.mjs';\nimport { clearList } from './clearList.mjs';\nimport { multiplyColors } from './multiplyColors.mjs';\n\n\"use strict\";\nconst tempContainer = new Container();\nconst UPDATE_BLEND_COLOR_VISIBLE = UPDATE_VISIBLE | UPDATE_COLOR | UPDATE_BLEND;\nfunction updateRenderGroupTransforms(renderGroup, updateChildRenderGroups = false) {\n updateRenderGroupTransform(renderGroup);\n const childrenToUpdate = renderGroup.childrenToUpdate;\n const updateTick = renderGroup.updateTick++;\n for (const j in childrenToUpdate) {\n const renderGroupDepth = Number(j);\n const childrenAtDepth = childrenToUpdate[j];\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n for (let i = 0; i < index; i++) {\n const child = list[i];\n if (child.parentRenderGroup === renderGroup && child.relativeRenderGroupDepth === renderGroupDepth) {\n updateTransformAndChildren(child, updateTick, 0);\n }\n }\n clearList(list, index);\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 = multiplyColors(\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) 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.renderGroup) {\n updateFlags |= container._updateFlags;\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform\n );\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n } else {\n updateFlags = container._updateFlags;\n container.relativeGroupTransform.copyFrom(localTransform);\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n if (!container.renderGroup) {\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.parentRenderGroup;\n const renderable = container;\n if (renderable.renderPipeId && !renderGroup.structureDidChange) {\n renderGroup.updateRenderable(renderable);\n }\n }\n}\nfunction updateColorBlendVisibility(container, parent, updateFlags) {\n if (updateFlags & UPDATE_COLOR) {\n container.groupColor = multiplyColors(\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","\"use strict\";\nfunction validateRenderables(renderGroup, renderPipes) {\n const { list } = renderGroup.childrenRenderablesToUpdate;\n let rebuildRequired = false;\n for (let i = 0; i < renderGroup.childrenRenderablesToUpdate.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 { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { TextureStyle } from '../../rendering/renderers/shared/texture/TextureStyle.mjs';\nimport { Bounds } from './bounds/Bounds.mjs';\nimport { clearList } from './utils/clearList.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 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 originalLocalTransform = tempMatrix;\n if (transform) {\n originalLocalTransform.copyFrom(container.renderGroup.localTransform);\n container.renderGroup.localTransform.copyFrom(transform);\n }\n const renderPipes = renderer.renderPipes;\n this._updateCachedRenderGroups(container.renderGroup, null);\n this._updateRenderGroups(container.renderGroup);\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 _updateCachedRenderGroups(renderGroup, closestCacheAsTexture) {\n renderGroup._parentCacheAsTextureRenderGroup = closestCacheAsTexture;\n if (renderGroup.isCachedAsTexture) {\n if (!renderGroup.textureNeedsUpdate) return;\n closestCacheAsTexture = renderGroup;\n }\n for (let i = renderGroup.renderGroupChildren.length - 1; i >= 0; i--) {\n this._updateCachedRenderGroups(renderGroup.renderGroupChildren[i], closestCacheAsTexture);\n }\n renderGroup.invalidateMatrices();\n if (renderGroup.isCachedAsTexture) {\n if (renderGroup.textureNeedsUpdate) {\n const bounds = renderGroup.root.getLocalBounds();\n const renderer = this._renderer;\n const resolution = renderGroup.textureOptions.resolution || renderer.view.resolution;\n const antialias = renderGroup.textureOptions.antialias ?? renderer.view.antialias;\n const scaleMode = renderGroup.textureOptions.scaleMode ?? \"linear\";\n const lastTexture = renderGroup.texture;\n bounds.ceil();\n if (renderGroup.texture) {\n TexturePool.returnTexture(renderGroup.texture, true);\n }\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias\n );\n texture._source.style = new TextureStyle({ scaleMode });\n renderGroup.texture = texture;\n renderGroup._textureBounds || (renderGroup._textureBounds = new Bounds());\n renderGroup._textureBounds.copyFrom(bounds);\n if (lastTexture !== renderGroup.texture) {\n if (renderGroup.renderGroupParent) {\n renderGroup.renderGroupParent.structureDidChange = true;\n }\n }\n }\n } else if (renderGroup.texture) {\n TexturePool.returnTexture(renderGroup.texture, true);\n renderGroup.texture = null;\n }\n }\n _updateRenderGroups(renderGroup) {\n const renderer = this._renderer;\n const renderPipes = renderer.renderPipes;\n renderGroup.runOnRender(renderer);\n renderGroup.instructionSet.renderPipes = renderPipes;\n if (!renderGroup.structureDidChange) {\n validateRenderables(renderGroup, renderPipes);\n } else {\n clearList(renderGroup.childrenRenderablesToUpdate.list, 0);\n }\n updateRenderGroupTransforms(renderGroup);\n if (renderGroup.structureDidChange) {\n renderGroup.structureDidChange = false;\n this._buildInstructions(renderGroup, renderer);\n } else {\n this._updateRenderables(renderGroup);\n }\n renderGroup.childrenRenderablesToUpdate.index = 0;\n renderer.renderPipes.batch.upload(renderGroup.instructionSet);\n if (renderGroup.isCachedAsTexture && !renderGroup.textureNeedsUpdate) return;\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {\n this._updateRenderGroups(renderGroup.renderGroupChildren[i]);\n }\n }\n _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 clearList(list, index);\n }\n _buildInstructions(renderGroup, rendererOrPipes) {\n const root = renderGroup.root;\n const instructionSet = renderGroup.instructionSet;\n instructionSet.reset();\n const renderer = rendererOrPipes.renderPipes ? rendererOrPipes : rendererOrPipes.batch.renderer;\n const renderPipes = renderer.renderPipes;\n renderPipes.batch.buildStart(instructionSet);\n renderPipes.blendMode.buildStart();\n renderPipes.colorMask.buildStart();\n if (root.sortableChildren) {\n root.sortChildren();\n }\n root.collectRenderablesWithEffects(instructionSet, renderer, null);\n renderPipes.batch.buildEnd(instructionSet);\n renderPipes.blendMode.buildEnd(instructionSet);\n }\n}\n/** @ignore */\nRenderGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderGroup\"\n};\n\nexport { RenderGroupSystem };\n//# sourceMappingURL=RenderGroupSystem.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.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 const incoming = Color.shared.setValue(value);\n if (incoming.alpha < 1 && this._backgroundColor.alpha === 1) {\n warn(\n \"Cannot set a transparent background on an opaque canvas. To enable transparency, set backgroundAlpha < 1 when initializing your Application.\"\n );\n }\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 */\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 { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { 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 * Creates an IImage from a display object or texture.\n * @param options - Options for creating the image, or the target to extract\n * @returns Promise that resolves with the generated IImage\n * @example\n * ```ts\n * // Basic usage with a sprite\n * const sprite = new Sprite(texture);\n * const image = await renderer.extract.image(sprite);\n * document.body.appendChild(image);\n *\n * // Advanced usage with options\n * const image = await renderer.extract.image({\n * target: container,\n * format: 'webp',\n * quality: 0.8,\n * frame: new Rectangle(0, 0, 100, 100),\n * resolution: 2,\n * clearColor: '#ff0000',\n * antialias: true\n * });\n *\n * // Extract directly from a texture\n * const texture = Texture.from('myTexture.png');\n * const image = await renderer.extract.image(texture);\n * ```\n * @see {@link ExtractImageOptions} For detailed options\n * @see {@link ExtractSystem.base64} For base64 string output\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ImageLike} For the image interface\n * @category rendering\n */\n async image(options) {\n const image = DOMAdapter.get().createImage();\n image.src = await this.base64(options);\n return image;\n }\n /**\n * Converts the target into a base64 encoded string.\n *\n * This method works by first creating\n * a canvas using `Extract.canvas` and then converting it to a base64 string.\n * @param options - The options for creating the base64 string, or the target to extract\n * @returns Promise that resolves with the base64 encoded string\n * @example\n * ```ts\n * // Basic usage with a sprite\n * const sprite = new Sprite(texture);\n * const base64 = await renderer.extract.base64(sprite);\n * console.log(base64); // data:image/png;base64,...\n *\n * // Advanced usage with options\n * const base64 = await renderer.extract.base64({\n * target: container,\n * format: 'webp',\n * quality: 0.8,\n * frame: new Rectangle(0, 0, 100, 100),\n * resolution: 2\n * });\n * ```\n * @throws Will throw an error if the platform doesn't support any of:\n * - ICanvas.toDataURL\n * - ICanvas.toBlob\n * - ICanvas.convertToBlob\n * @see {@link ExtractImageOptions} For detailed options\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ExtractSystem.image} For HTMLImage output\n * @category rendering\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 the target to it and returns it.\n * This method is useful for creating static images or when you need direct canvas access.\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 * @example\n * ```ts\n * // Basic canvas extraction from a sprite\n * const sprite = new Sprite(texture);\n * const canvas = renderer.extract.canvas(sprite);\n * document.body.appendChild(canvas);\n *\n * // Extract with custom region\n * const canvas = renderer.extract.canvas({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const canvas = renderer.extract.canvas({\n * target: sprite,\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Extract directly from a texture\n * const texture = Texture.from('myTexture.png');\n * const canvas = renderer.extract.canvas(texture);\n *\n * // Extract with anti-aliasing\n * const canvas = renderer.extract.canvas({\n * target: graphics,\n * antialias: true\n * });\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link ExtractSystem.image} For HTMLImage output\n * @see {@link ExtractSystem.pixels} For raw pixel data\n * @category rendering\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(true);\n return canvas;\n }\n /**\n * Returns a one-dimensional array containing the pixel data of the entire texture in RGBA order,\n * with integer values between 0 and 255 (inclusive).\n * > [!NOE] The returned array is a flat Uint8Array where every 4 values represent RGBA\n * @param options - The options for extracting the image, or the target to extract\n * @returns One-dimensional Uint8Array containing the pixel data in RGBA format\n * @example\n * ```ts\n * // Basic pixel extraction\n * const sprite = new Sprite(texture);\n * const pixels = renderer.extract.pixels(sprite);\n * console.log(pixels[0], pixels[1], pixels[2], pixels[3]); // R,G,B,A values\n *\n * // Extract with custom region\n * const pixels = renderer.extract.pixels({\n * target: sprite,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const pixels = renderer.extract.pixels({\n * target: sprite,\n * resolution: 2\n * });\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link ExtractSystem.canvas} For canvas output\n * @see {@link ExtractSystem.image} For image output\n * @category rendering\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(true);\n }\n return pixelInfo;\n }\n /**\n * Creates a texture from a display object or existing texture.\n *\n * This is useful for creating\n * reusable textures from rendered content or making copies of existing textures.\n * > [!NOTE] The returned texture should be destroyed when no longer needed\n * @param options - The options for creating the texture, or the target to extract\n * @returns A new texture containing the extracted content\n * @example\n * ```ts\n * // Basic texture extraction from a sprite\n * const sprite = new Sprite(texture);\n * const extractedTexture = renderer.extract.texture(sprite);\n *\n * // Extract with custom region\n * const regionTexture = renderer.extract.texture({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Extract with high resolution\n * const hiResTexture = renderer.extract.texture({\n * target: sprite,\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Create a new sprite from extracted texture\n * const newSprite = new Sprite(\n * renderer.extract.texture({\n * target: graphics,\n * antialias: true\n * })\n * );\n *\n * // Clean up when done\n * extractedTexture.destroy(true);\n * ```\n * @see {@link ExtractOptions} For detailed options\n * @see {@link Texture} For texture management\n * @see {@link GenerateTextureSystem} For texture generation\n * @category rendering\n */\n texture(options) {\n options = this._normalizeOptions(options);\n if (options.target instanceof Texture) return options.target;\n return this._renderer.textureGenerator.generateTexture(options);\n }\n /**\n * Extracts and downloads content from the renderer as an image file.\n * This is a convenient way to save screenshots or export rendered content.\n * > [!NOTE] The download will use PNG format regardless of the filename extension\n * @param options - The options for downloading and extracting the image, or the target to extract\n * @example\n * ```ts\n * // Basic download with default filename\n * const sprite = new Sprite(texture);\n * renderer.extract.download(sprite); // Downloads as 'image.png'\n *\n * // Download with custom filename\n * renderer.extract.download({\n * target: sprite,\n * filename: 'screenshot.png'\n * });\n *\n * // Download with custom region\n * renderer.extract.download({\n * target: container,\n * filename: 'region.png',\n * frame: new Rectangle(0, 0, 100, 100)\n * });\n *\n * // Download with high resolution and background\n * renderer.extract.download({\n * target: stage,\n * filename: 'hd-screenshot.png',\n * resolution: 2,\n * clearColor: '#ff0000'\n * });\n *\n * // Download with anti-aliasing\n * renderer.extract.download({\n * target: graphics,\n * filename: 'smooth.png',\n * antialias: true\n * });\n * ```\n * @see {@link ExtractDownloadOptions} For detailed options\n * @see {@link ExtractSystem.image} For creating images without download\n * @see {@link ExtractSystem.canvas} For canvas output\n * @category rendering\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 * The image will be displayed in the browser's console using CSS background images.\n * @param options - The options for logging the image, or the target to log\n * @param options.width - The width of the logged image preview in the console (in pixels)\n * @example\n * ```ts\n * // Basic usage\n * const sprite = new Sprite(texture);\n * renderer.extract.log(sprite);\n * ```\n * @see {@link ExtractSystem.canvas} For getting raw canvas output\n * @see {@link ExtractSystem.pixels} For raw pixel data\n * @category rendering\n * @advanced\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 ExtensionType.CanvasSystem\n ],\n name: \"extract\"\n};\n/**\n * Default options for image extraction.\n * @example\n * ```ts\n * // Customize default options\n * ExtractSystem.defaultImageOptions.format = 'webp';\n * ExtractSystem.defaultImageOptions.quality = 0.8;\n *\n * // Use defaults\n * const image = await renderer.extract.image(sprite);\n * ```\n */\n_ExtractSystem.defaultImageOptions = {\n format: \"png\",\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 /**\n * Creates a RenderTexture. Pass `dynamic: true` in options to allow resizing after creation.\n * @param options - Options for the RenderTexture, including width, height, and dynamic.\n * @returns A new RenderTexture instance.\n * @example\n * const rt = RenderTexture.create({ width: 100, height: 100, dynamic: true });\n * rt.resize(500, 500);\n */\n static create(options) {\n const { dynamic, ...rest } = options;\n return new RenderTexture({\n source: new TextureSource(rest),\n dynamic: dynamic ?? false\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 * Creates a texture from a display object that can be used for creating sprites and other textures.\n * This is particularly useful for optimizing performance when a complex container needs to be reused.\n * @param options - Generate texture options or a container to convert to texture\n * @returns A new RenderTexture containing the rendered display object\n * @example\n * ```ts\n * // Basic usage with a container\n * const container = new Container();\n * container.addChild(\n * new Graphics()\n * .circle(0, 0, 50)\n * .fill('red')\n * );\n *\n * const texture = renderer.textureGenerator.generateTexture(container);\n *\n * // Advanced usage with options\n * const texture = renderer.textureGenerator.generateTexture({\n * target: container,\n * frame: new Rectangle(0, 0, 100, 100), // Specific region\n * resolution: 2, // High DPI\n * clearColor: '#ff0000', // Red background\n * antialias: true // Smooth edges\n * });\n *\n * // Create a sprite from the generated texture\n * const sprite = new Sprite(texture);\n *\n * // Clean up when done\n * texture.destroy(true);\n * ```\n * @see {@link GenerateTextureOptions} For detailed texture generation options\n * @see {@link RenderTexture} For the type of texture created\n * @category rendering\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 target.source.updateMipmaps();\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 ExtensionType.CanvasSystem\n ],\n name: \"textureGenerator\"\n};\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","\"use strict\";\nfunction cleanHash(hash) {\n let clean = false;\n for (const i in hash) {\n if (hash[i] == void 0) {\n clean = true;\n break;\n }\n }\n if (!clean) return hash;\n const cleanHash2 = /* @__PURE__ */ Object.create(null);\n for (const i in hash) {\n const value = hash[i];\n if (value) {\n cleanHash2[i] = value;\n }\n }\n return cleanHash2;\n}\nfunction cleanArray(arr) {\n let offset = 0;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] == void 0) {\n offset++;\n } else {\n arr[i - offset] = arr[i];\n }\n }\n arr.length -= offset;\n return arr;\n}\n\nexport { cleanArray, cleanHash };\n//# sourceMappingURL=clean.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { cleanHash, cleanArray } from '../../../utils/data/clean.mjs';\n\n\"use strict\";\nconst _GCSystem = class _GCSystem {\n /**\n * Creates a new GCSystem instance.\n * @param renderer - The renderer this garbage collection system works for\n */\n constructor(renderer) {\n /** Array of resources being tracked for garbage collection */\n this._managedResources = [];\n this._managedResourceHashes = [];\n this._managedCollections = [];\n this._ready = false;\n this._renderer = renderer;\n }\n /**\n * Initializes the garbage collection system with the provided options.\n * @param options - Configuration options\n */\n init(options) {\n options = { ..._GCSystem.defaultOptions, ...options };\n this.maxUnusedTime = options.gcMaxUnusedTime;\n this._frequency = options.gcFrequency;\n this.enabled = options.gcActive;\n this.now = performance.now();\n }\n /**\n * Gets whether the garbage collection system is currently enabled.\n * @returns True if GC is enabled, false otherwise\n */\n get enabled() {\n return !!this._handler;\n }\n /**\n * Enables or disables the garbage collection system.\n * When enabled, schedules periodic cleanup of resources.\n * When disabled, cancels all scheduled cleanups.\n */\n set enabled(value) {\n if (this.enabled === value) return;\n if (value) {\n this._handler = this._renderer.scheduler.repeat(\n () => {\n this._ready = true;\n },\n this._frequency,\n false\n );\n this._collectionsHandler = this._renderer.scheduler.repeat(\n () => {\n for (const hash of this._managedCollections) {\n const { context, collection, type } = hash;\n if (type === \"hash\") {\n context[collection] = cleanHash(context[collection]);\n } else {\n context[collection] = cleanArray(context[collection]);\n }\n }\n },\n this._frequency\n );\n } else {\n this._renderer.scheduler.cancel(this._handler);\n this._renderer.scheduler.cancel(this._collectionsHandler);\n this._handler = 0;\n this._collectionsHandler = 0;\n }\n }\n /**\n * Called before rendering. Updates the current timestamp.\n * @param options - The render options\n * @param options.container - The container to render\n */\n prerender({ container }) {\n this.now = performance.now();\n container.renderGroup.gcTick = this._renderer.tick++;\n this._updateInstructionGCTick(container.renderGroup, container.renderGroup.gcTick);\n }\n /** Performs garbage collection after rendering. */\n postrender() {\n if (!this._ready || !this.enabled) return;\n this.run();\n this._ready = false;\n }\n /**\n * Updates the GC tick counter for a render group and its children.\n * @param renderGroup - The render group to update\n * @param gcTick - The new tick value\n */\n _updateInstructionGCTick(renderGroup, gcTick) {\n renderGroup.instructionSet.gcTick = gcTick;\n renderGroup.gcTick = gcTick;\n for (const child of renderGroup.renderGroupChildren) {\n this._updateInstructionGCTick(child, gcTick);\n }\n }\n /**\n * Registers a collection for garbage collection tracking.\n * @param context - The object containing the collection\n * @param collection - The property name on context that holds the collection\n * @param type - The type of collection to track ('hash' or 'array')\n */\n addCollection(context, collection, type) {\n this._managedCollections.push({\n context,\n collection,\n type\n });\n }\n /**\n * Registers a resource for garbage collection tracking.\n * @param resource - The resource to track\n * @param type - The type of resource to track\n */\n addResource(resource, type) {\n if (resource._gcLastUsed !== -1) {\n resource._gcLastUsed = this.now;\n resource._onTouch?.(this.now);\n return;\n }\n const index = this._managedResources.length;\n resource._gcData = {\n index,\n type\n };\n resource._gcLastUsed = this.now;\n resource._onTouch?.(this.now);\n resource.once(\"unload\", this.removeResource, this);\n this._managedResources.push(resource);\n }\n /**\n * Removes a resource from garbage collection tracking.\n * Call this when manually destroying a resource.\n * @param resource - The resource to stop tracking\n */\n removeResource(resource) {\n const gcData = resource._gcData;\n if (!gcData) return;\n const index = gcData.index;\n const last = this._managedResources.length - 1;\n if (index !== last) {\n const lastResource = this._managedResources[last];\n this._managedResources[index] = lastResource;\n lastResource._gcData.index = index;\n }\n this._managedResources.length--;\n resource._gcData = null;\n resource._gcLastUsed = -1;\n }\n /**\n * Registers a hash-based resource collection for garbage collection tracking.\n * Resources in the hash will be automatically tracked and cleaned up when unused.\n * @param context - The object containing the hash property\n * @param hash - The property name on context that holds the resource hash\n * @param type - The type of resources in the hash ('resource' or 'renderable')\n * @param priority - Processing priority (lower values are processed first)\n */\n addResourceHash(context, hash, type, priority = 0) {\n this._managedResourceHashes.push({\n context,\n hash,\n type,\n priority\n });\n this._managedResourceHashes.sort((a, b) => a.priority - b.priority);\n }\n /**\n * Performs garbage collection by cleaning up unused resources.\n * Removes resources that haven't been used for longer than maxUnusedTime.\n */\n run() {\n const now = performance.now();\n const managedResourceHashes = this._managedResourceHashes;\n for (const hashEntry of managedResourceHashes) {\n this.runOnHash(hashEntry, now);\n }\n let writeIndex = 0;\n for (let i = 0; i < this._managedResources.length; i++) {\n const resource = this._managedResources[i];\n writeIndex = this.runOnResource(resource, now, writeIndex);\n }\n this._managedResources.length = writeIndex;\n }\n updateRenderableGCTick(renderable, now) {\n const renderGroup = renderable.renderGroup ?? renderable.parentRenderGroup;\n const currentTick = renderGroup?.instructionSet?.gcTick ?? -1;\n if ((renderGroup?.gcTick ?? 0) === currentTick) {\n renderable._gcLastUsed = now;\n renderable._onTouch?.(now);\n }\n }\n runOnResource(resource, now, writeIndex) {\n const gcData = resource._gcData;\n if (gcData.type === \"renderable\") {\n this.updateRenderableGCTick(resource, now);\n }\n const isRecentlyUsed = now - resource._gcLastUsed < this.maxUnusedTime;\n if (isRecentlyUsed || !resource.autoGarbageCollect) {\n this._managedResources[writeIndex] = resource;\n gcData.index = writeIndex;\n writeIndex++;\n } else {\n resource.unload();\n resource._gcData = null;\n resource._gcLastUsed = -1;\n resource.off(\"unload\", this.removeResource, this);\n }\n return writeIndex;\n }\n /**\n * Creates a clone of the hash, copying all non-null entries up to (but not including) the stop key.\n * @param hashValue - The original hash to clone from\n * @param stopKey - The key to stop at (exclusive)\n * @returns A new hash object with copied entries\n */\n _createHashClone(hashValue, stopKey) {\n const hashClone = /* @__PURE__ */ Object.create(null);\n for (const k in hashValue) {\n if (k === stopKey) break;\n if (hashValue[k] !== null) hashClone[k] = hashValue[k];\n }\n return hashClone;\n }\n runOnHash(hashEntry, now) {\n const { context, hash, type } = hashEntry;\n const hashValue = context[hash];\n let hashClone = null;\n let nullCount = 0;\n for (const key in hashValue) {\n const resource = hashValue[key];\n if (resource === null) {\n nullCount++;\n if (nullCount === 1e4 && !hashClone) {\n hashClone = this._createHashClone(hashValue, key);\n }\n continue;\n }\n if (resource._gcLastUsed === -1) {\n resource._gcLastUsed = now;\n resource._onTouch?.(now);\n if (hashClone) hashClone[key] = resource;\n continue;\n }\n if (type === \"renderable\") {\n this.updateRenderableGCTick(resource, now);\n }\n const isRecentlyUsed = now - resource._gcLastUsed < this.maxUnusedTime;\n if (!isRecentlyUsed && resource.autoGarbageCollect) {\n if (!hashClone) {\n if (nullCount + 1 !== 1e4) {\n hashValue[key] = null;\n nullCount++;\n } else {\n hashClone = this._createHashClone(hashValue, key);\n }\n }\n if (type === \"renderable\") {\n const res = resource;\n const renderGroup = res.renderGroup ?? res.parentRenderGroup;\n if (renderGroup) renderGroup.structureDidChange = true;\n }\n resource.unload();\n resource._gcData = null;\n resource._gcLastUsed = -1;\n } else if (hashClone) {\n hashClone[key] = resource;\n }\n }\n if (hashClone) {\n context[hash] = hashClone;\n }\n }\n /** Cleans up the garbage collection system. Disables GC and removes all tracked resources. */\n destroy() {\n this.enabled = false;\n this._managedResources.forEach((resource) => {\n resource.off(\"unload\", this.removeResource, this);\n });\n this._managedResources.length = 0;\n this._managedResourceHashes.length = 0;\n this._managedCollections.length = 0;\n this._renderer = null;\n }\n};\n/** @ignore */\n_GCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"gc\",\n priority: 0\n};\n/** Default options for the GCSystem */\n_GCSystem.defaultOptions = {\n /** Enable/disable the garbage collector */\n gcActive: true,\n /** Time in ms before an unused resource is collected (default 1 minute) */\n gcMaxUnusedTime: 6e4,\n /** How often to run garbage collection in ms (default 30 seconds) */\n gcFrequency: 3e4\n};\nlet GCSystem = _GCSystem;\n\nexport { GCSystem };\n//# sourceMappingURL=GCSystem.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 globalUniformData() {\n return this._currentGlobalUniformData;\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 this._globalUniformDataStack.length = 0;\n this._uniformsPool.length = 0;\n this._activeUniforms.length = 0;\n this._bindGroupPool.length = 0;\n this._activeBindGroups.length = 0;\n this._currentGlobalUniformData = 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 { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Ticker } from '../../../ticker/Ticker.mjs';\n\n\"use strict\";\nlet uid = 1;\nclass SchedulerSystem {\n constructor() {\n this._tasks = [];\n /** a small off set to apply to the repeat schedules. This is just to make sure they run at slightly different times */\n this._offset = 0;\n }\n /** Initializes the scheduler system and starts the ticker. */\n init() {\n Ticker.system.add(this._update, this);\n }\n /**\n * Schedules a repeating task.\n * @param func - The function to execute.\n * @param duration - The interval duration in milliseconds.\n * @param useOffset - this will spread out tasks so that they do not all run at the same time\n * @returns The unique identifier for the scheduled task.\n */\n repeat(func, duration, useOffset = true) {\n const id = uid++;\n let offset = 0;\n if (useOffset) {\n this._offset += 1e3;\n offset = this._offset;\n }\n this._tasks.push({\n func,\n duration,\n start: performance.now(),\n offset,\n last: performance.now(),\n repeat: true,\n id\n });\n return id;\n }\n /**\n * Cancels a scheduled task.\n * @param id - The unique identifier of the task to cancel.\n */\n cancel(id) {\n for (let i = 0; i < this._tasks.length; i++) {\n if (this._tasks[i].id === id) {\n this._tasks.splice(i, 1);\n return;\n }\n }\n }\n /**\n * Updates and executes the scheduled tasks.\n * @private\n */\n _update() {\n const now = performance.now();\n for (let i = 0; i < this._tasks.length; i++) {\n const task = this._tasks[i];\n if (now - task.offset - task.last >= task.duration) {\n const elapsed = now - task.start;\n task.func(elapsed);\n task.last = now;\n }\n }\n }\n /**\n * Destroys the scheduler system and removes all tasks.\n * @internal\n */\n destroy() {\n Ticker.system.remove(this._update, this);\n this._tasks.length = 0;\n }\n}\n/** @ignore */\nSchedulerSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"scheduler\",\n priority: 0\n};\n\nexport { SchedulerSystem };\n//# sourceMappingURL=SchedulerSystem.mjs.map\n","import { DOMAdapter } from '../environment/adapter.mjs';\nimport { VERSION } from './const.mjs';\n\n\"use strict\";\nlet saidHello = false;\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 { 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 } from '../../../../extensions/Extensions.mjs';\nimport { deprecation } from '../../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _RenderableGCSystem = class _RenderableGCSystem {\n /**\n * Creates a new RenderableGCSystem instance.\n * @param renderer - The renderer this garbage collection system works for\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n /**\n * Initializes the garbage collection system with the provided options.\n * @param options - Configuration options for the renderer\n */\n init(options) {\n options = { ..._RenderableGCSystem.defaultOptions, ...options };\n this.maxUnusedTime = options.renderableGCMaxUnusedTime;\n }\n /**\n * Gets whether the garbage collection system is currently enabled.\n * @returns True if GC is enabled, false otherwise\n */\n get enabled() {\n deprecation(\"8.15.0\", \"RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead.\");\n return this._renderer.gc.enabled;\n }\n /**\n * Enables or disables the garbage collection system.\n * When enabled, schedules periodic cleanup of resources.\n * When disabled, cancels all scheduled cleanups.\n */\n set enabled(value) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead.\");\n this._renderer.gc.enabled = value;\n }\n /**\n * Adds a hash table to be managed by the garbage collector.\n * @param context - The object containing the hash table\n * @param hash - The property name of the hash table\n */\n addManagedHash(context, hash) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addManagedHash is deprecated, please use the GCSystem.addCollection instead.\");\n this._renderer.gc.addCollection(context, hash, \"hash\");\n }\n /**\n * Adds an array to be managed by the garbage collector.\n * @param context - The object containing the array\n * @param hash - The property name of the array\n */\n addManagedArray(context, hash) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addManagedArray is deprecated, please use the GCSystem.addCollection instead.\");\n this._renderer.gc.addCollection(context, hash, \"array\");\n }\n /**\n * Starts tracking a renderable for garbage collection.\n * @param _renderable - The renderable to track\n * @deprecated since 8.15.0\n */\n addRenderable(_renderable) {\n deprecation(\"8.15.0\", \"RenderableGCSystem.addRenderable is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.addResource(_renderable, \"renderable\");\n }\n /**\n * Performs garbage collection by cleaning up unused renderables.\n * Removes renderables that haven't been used for longer than maxUnusedTime.\n */\n run() {\n deprecation(\"8.15.0\", \"RenderableGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.run();\n }\n /** Cleans up the garbage collection system. Disables GC and removes all tracked resources. */\n destroy() {\n this._renderer = null;\n }\n};\n/**\n * Extension metadata for registering this system with the renderer.\n * @ignore\n */\n_RenderableGCSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"renderableGC\",\n priority: 0\n};\n/**\n * Default configuration options for the garbage collection system.\n * These can be overridden when initializing the renderer.\n * @deprecated since 8.15.0\n */\n_RenderableGCSystem.defaultOptions = {\n /** Enable/disable the garbage collector */\n renderableGCActive: true,\n /** Time in ms before an unused resource is collected (default 1 minute) */\n renderableGCMaxUnusedTime: 6e4,\n /** How often to run garbage collection in ms (default 30 seconds) */\n renderableGCFrequency: 3e4\n};\nlet RenderableGCSystem = _RenderableGCSystem;\n\nexport { RenderableGCSystem };\n//# sourceMappingURL=RenderableGCSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { deprecation } from '../../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _TextureGCSystem = class _TextureGCSystem {\n /**\n * Frame count since started.\n * @readonly\n * @deprecated since 8.15.0\n */\n get count() {\n return this._renderer.tick;\n }\n /**\n * Frame count since last garbage collection.\n * @readonly\n * @deprecated since 8.15.0\n */\n get checkCount() {\n return this._checkCount;\n }\n set checkCount(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._checkCount = value;\n }\n /**\n * Maximum idle frames before a texture is destroyed by garbage collection.\n * @see TextureGCSystem.defaultMaxIdle\n * @deprecated since 8.15.0\n */\n get maxIdle() {\n return this._renderer.gc.maxUnusedTime / 1e3 * 60;\n }\n set maxIdle(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.maxUnusedTime = value / 60 * 1e3;\n }\n /**\n * Frames between two garbage collections.\n * @see TextureGCSystem.defaultCheckCountMax\n * @deprecated since 8.15.0\n */\n // eslint-disable-next-line dot-notation\n get checkCountMax() {\n return Math.floor(this._renderer.gc[\"_frequency\"] / 1e3);\n }\n set checkCountMax(_value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n }\n /**\n * Current garbage collection mode.\n * @see TextureGCSystem.defaultMode\n * @deprecated since 8.15.0\n */\n get active() {\n return this._renderer.gc.enabled;\n }\n set active(value) {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.enabled = value;\n }\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this._checkCount = 0;\n }\n init(options) {\n if (options.textureGCActive !== _TextureGCSystem.defaultOptions.textureGCActive) {\n this.active = options.textureGCActive;\n }\n if (options.textureGCMaxIdle !== _TextureGCSystem.defaultOptions.textureGCMaxIdle) {\n this.maxIdle = options.textureGCMaxIdle;\n }\n if (options.textureGCCheckCountMax !== _TextureGCSystem.defaultOptions.textureGCCheckCountMax) {\n this.checkCountMax = options.textureGCCheckCountMax;\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 * @deprecated since 8.15.0\n */\n run() {\n deprecation(\"8.15.0\", \"TextureGCSystem.run is deprecated, please use the GCSystem instead.\");\n this._renderer.gc.run();\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/**\n * Default options for the TextureGCSystem\n * @deprecated since 8.15.0\n */\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 * @deprecated since 8.3.0\n * @see {@link TextureGCSystemOptions.textureGCMaxIdle}\n */\n textureGCAMaxIdle: null,\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n */\n textureGCMaxIdle: 60 * 60,\n /**\n * Frames between two garbage collections.\n * @default 600\n */\n textureGCCheckCountMax: 600\n};\nlet TextureGCSystem = _TextureGCSystem;\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\nimport { TextureSource } from '../texture/sources/TextureSource.mjs';\nimport { Texture } from '../texture/Texture.mjs';\n\n\"use strict\";\nconst _RenderTarget = class _RenderTarget {\n /**\n * @param [descriptor] - Options for creating a render target.\n */\n constructor(descriptor = {}) {\n /** unique id for this render target */\n this.uid = uid(\"renderTarget\");\n /**\n * An array of textures that can be written to by the GPU - mostly this has one texture in Pixi, but you could\n * write to multiple if required! (eg deferred lighting)\n */\n this.colorTextures = [];\n this.dirtyId = 0;\n this.isRoot = false;\n this._size = new Float32Array(2);\n /** if true, then when the render target is destroyed, it will destroy all the textures that were created for it. */\n this._managedColorTextures = false;\n descriptor = { ..._RenderTarget.defaultOptions, ...descriptor };\n this.stencil = descriptor.stencil;\n this.depth = descriptor.depth;\n this.isRoot = descriptor.isRoot;\n if (typeof descriptor.colorTextures === \"number\") {\n this._managedColorTextures = true;\n for (let i = 0; i < descriptor.colorTextures; i++) {\n this.colorTextures.push(\n new TextureSource({\n width: descriptor.width,\n height: descriptor.height,\n resolution: descriptor.resolution,\n antialias: descriptor.antialias\n })\n );\n }\n } else {\n this.colorTextures = [...descriptor.colorTextures.map((texture) => texture.source)];\n const colorSource = this.colorTexture.source;\n this.resize(colorSource.width, colorSource.height, colorSource._resolution);\n }\n this.colorTexture.source.on(\"resize\", this.onSourceResize, this);\n if (descriptor.depthStencilTexture || this.stencil) {\n if (descriptor.depthStencilTexture instanceof Texture || descriptor.depthStencilTexture instanceof TextureSource) {\n this.depthStencilTexture = descriptor.depthStencilTexture.source;\n } else {\n this.ensureDepthStencilTexture();\n }\n }\n }\n get size() {\n const _size = this._size;\n _size[0] = this.pixelWidth;\n _size[1] = this.pixelHeight;\n return _size;\n }\n get width() {\n return this.colorTexture.source.width;\n }\n get height() {\n return this.colorTexture.source.height;\n }\n get pixelWidth() {\n return this.colorTexture.source.pixelWidth;\n }\n get pixelHeight() {\n return this.colorTexture.source.pixelHeight;\n }\n get resolution() {\n return this.colorTexture.source._resolution;\n }\n get colorTexture() {\n return this.colorTextures[0];\n }\n onSourceResize(source) {\n this.resize(source.width, source.height, source._resolution, true);\n }\n /**\n * This will ensure a depthStencil texture is created for this render target.\n * Most likely called by the mask system to make sure we have stencil buffer added.\n * @internal\n */\n ensureDepthStencilTexture() {\n if (!this.depthStencilTexture) {\n this.depthStencilTexture = new TextureSource({\n width: this.width,\n height: this.height,\n resolution: this.resolution,\n format: \"depth24plus-stencil8\",\n autoGenerateMipmaps: false,\n antialias: false,\n mipLevelCount: 1\n // sampleCount: handled by the render target system..\n });\n }\n }\n resize(width, height, resolution = this.resolution, skipColorTexture = false) {\n this.dirtyId++;\n this.colorTextures.forEach((colorTexture, i) => {\n if (skipColorTexture && i === 0) return;\n colorTexture.source.resize(width, height, resolution);\n });\n if (this.depthStencilTexture) {\n this.depthStencilTexture.source.resize(width, height, resolution);\n }\n }\n destroy() {\n this.colorTexture.source.off(\"resize\", this.onSourceResize, this);\n if (this._managedColorTextures) {\n this.colorTextures.forEach((texture) => {\n texture.destroy();\n });\n }\n if (this.depthStencilTexture) {\n this.depthStencilTexture.destroy();\n delete this.depthStencilTexture;\n }\n }\n};\n/** The default options for a render target */\n_RenderTarget.defaultOptions = {\n /** the width of the RenderTarget */\n width: 0,\n /** the height of the RenderTarget */\n height: 0,\n /** the resolution of the RenderTarget */\n resolution: 1,\n /** an array of textures, or a number indicating how many color textures there should be */\n colorTextures: 1,\n /** should this render target have a stencil buffer? */\n stencil: false,\n /** should this render target have a depth buffer? */\n depth: false,\n /** should this render target be antialiased? */\n antialias: false,\n // save on perf by default!\n /** is this a root element, true if this is gl context owners render target */\n isRoot: false\n};\nlet RenderTarget = _RenderTarget;\n\nexport { RenderTarget };\n//# sourceMappingURL=RenderTarget.mjs.map\n","import { GlobalResourceRegistry } from '../../../../../utils/pool/GlobalResourceRegistry.mjs';\nimport { CanvasSource } from '../sources/CanvasSource.mjs';\nimport { Texture } from '../Texture.mjs';\n\n\"use strict\";\nconst canvasCache = /* @__PURE__ */ new Map();\nGlobalResourceRegistry.register(canvasCache);\nfunction getCanvasTexture(canvas, options) {\n if (!canvasCache.has(canvas)) {\n const texture = new Texture({\n source: new CanvasSource({\n resource: canvas,\n ...options\n })\n });\n const onDestroy = () => {\n if (canvasCache.get(canvas) === texture) {\n canvasCache.delete(canvas);\n }\n };\n texture.once(\"destroy\", onDestroy);\n texture.source.once(\"destroy\", onDestroy);\n canvasCache.set(canvas, texture);\n }\n return canvasCache.get(canvas);\n}\nfunction hasCachedCanvasTexture(canvas) {\n return canvasCache.has(canvas);\n}\n\nexport { getCanvasTexture, hasCachedCanvasTexture };\n//# sourceMappingURL=getCanvasTexture.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\nimport { RenderTarget } from '../renderTarget/RenderTarget.mjs';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture.mjs';\n\n\"use strict\";\nconst _ViewSystem = class _ViewSystem {\n /**\n * Whether CSS dimensions of canvas view should be resized to screen dimensions automatically.\n * This is only supported for HTMLCanvasElement and will be ignored if the canvas is an OffscreenCanvas.\n * @type {boolean}\n */\n get autoDensity() {\n return this.texture.source.autoDensity;\n }\n set autoDensity(value) {\n this.texture.source.autoDensity = value;\n }\n /** The resolution / device pixel ratio of the renderer. */\n get resolution() {\n return this.texture.source._resolution;\n }\n set resolution(value) {\n this.texture.source.resize(\n this.texture.source.width,\n this.texture.source.height,\n value\n );\n }\n /**\n * initiates the view system\n * @param options - the options for the view\n */\n init(options) {\n options = {\n ..._ViewSystem.defaultOptions,\n ...options\n };\n if (options.view) {\n deprecation(v8_0_0, \"ViewSystem.view has been renamed to ViewSystem.canvas\");\n options.canvas = options.view;\n }\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.canvas = options.canvas || DOMAdapter.get().createCanvas();\n this.antialias = !!options.antialias;\n this.texture = getCanvasTexture(this.canvas, options);\n this.renderTarget = new RenderTarget({\n colorTextures: [this.texture],\n depth: !!options.depth,\n isRoot: true\n });\n this.texture.source.transparent = options.backgroundAlpha < 1;\n this.resolution = options.resolution;\n }\n /**\n * Resizes the screen and canvas to the specified dimensions.\n * @param desiredScreenWidth - The new width of the screen.\n * @param desiredScreenHeight - The new height of the screen.\n * @param resolution\n */\n resize(desiredScreenWidth, desiredScreenHeight, resolution) {\n this.texture.source.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n this.screen.width = this.texture.frame.width;\n this.screen.height = this.texture.frame.height;\n }\n /**\n * Destroys this System and optionally removes the canvas from the dom.\n * @param {options | false} options - The options for destroying the view, or \"false\".\n * @example\n * viewSystem.destroy();\n * viewSystem.destroy(true);\n * viewSystem.destroy({ removeView: true });\n */\n destroy(options = false) {\n const removeView = typeof options === \"boolean\" ? options : !!options?.removeView;\n if (removeView && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n this.texture.destroy();\n }\n};\n/** @ignore */\n_ViewSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"view\",\n priority: 0\n};\n/** The default options for the view system. */\n_ViewSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.width}\n * @default 800\n */\n width: 800,\n /**\n * {@link WebGLOptions.height}\n * @default 600\n */\n height: 600,\n /**\n * {@link WebGLOptions.autoDensity}\n * @default false\n */\n autoDensity: false,\n /**\n * {@link WebGLOptions.antialias}\n * @default false\n */\n antialias: false\n};\nlet ViewSystem = _ViewSystem;\n\nexport { ViewSystem };\n//# sourceMappingURL=ViewSystem.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 { RendererInitHook } from '../../../../utils/global/globalHooks.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 { GCSystem } from '../GCSystem.mjs';\nimport { GlobalUniformSystem } from '../renderTarget/GlobalUniformSystem.mjs';\nimport { SchedulerSystem } from '../SchedulerSystem.mjs';\nimport { HelloSystem } from '../startup/HelloSystem.mjs';\nimport { RenderableGCSystem } from '../texture/RenderableGCSystem.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 GCSystem,\n TextureGCSystem,\n GenerateTextureSystem,\n ExtractSystem,\n RendererInitHook,\n RenderableGCSystem,\n SchedulerSystem\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","\"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","\"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","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 /** the current mip level being rendered to (for texture subresources) */\n this.mipLevel = 0;\n /** the current array layer being rendered to (for array-backed targets) */\n this.layer = 0;\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 renderer.gc.addCollection(this, \"_gpuRenderTargetHash\", \"hash\");\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 * @param options.mipLevel - the mip level to render to\n * @param options.layer - The layer of the render target to render to. Used for array or 3D textures, or when rendering\n * to a specific layer of a layered render target. Optional.\n */\n renderStart({\n target,\n clear,\n clearColor,\n frame,\n mipLevel,\n layer\n }) {\n this._renderTargetStack.length = 0;\n this.push(\n target,\n clear,\n clearColor,\n frame,\n mipLevel ?? 0,\n layer ?? 0\n );\n this.rootViewPort.copyFrom(this.viewport);\n this.rootRenderTarget = this.renderTarget;\n this.renderingToScreen = isRenderingToScreen(this.rootRenderTarget);\n this.adaptor.prerender?.(this.rootRenderTarget);\n }\n postrender() {\n this.adaptor.postrender?.(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 provided and the render surface is a {@link Texture}, the frame of the texture will be used.\n *\n * IMPORTANT:\n * - `frame` is treated as **base mip (mip 0) pixel space**.\n * - When `mipLevel > 0`, the viewport derived from `frame` is scaled by \\(2^{mipLevel}\\) and clamped to the\n * mip dimensions. This keeps \"render the same region\" semantics consistent across mip levels.\n * - When `renderSurface` is a {@link Texture}, `renderer.render({ container, target: texture, mipLevel })` will\n * render into\n * the underlying {@link TextureSource} (Pixi will create/use a {@link RenderTarget} for the source) using the\n * texture's frame to define the region (in mip 0 space).\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 * @param mipLevel - the mip level to render to\n * @param layer - the layer (or slice) of the render surface to render to. For array textures,\n * 3D textures, or cubemaps, this specifies the target layer or face. Defaults to 0 (the first layer/face).\n * Ignored for surfaces that do not support layers.\n * @returns the render target that was bound\n */\n bind(renderSurface, clear = true, clearColor, frame, mipLevel = 0, layer = 0) {\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 arrayLayerCount = source.arrayLayerCount || 1;\n if ((layer | 0) !== layer) {\n layer |= 0;\n }\n if (layer < 0 || layer >= arrayLayerCount) {\n throw new Error(`[RenderTargetSystem] layer ${layer} is out of bounds (arrayLayerCount=${arrayLayerCount}).`);\n }\n this.mipLevel = mipLevel | 0;\n this.layer = layer | 0;\n const pixelWidth = Math.max(source.pixelWidth >> mipLevel, 1);\n const pixelHeight = Math.max(source.pixelHeight >> mipLevel, 1);\n if (!frame && renderSurface instanceof Texture) {\n frame = renderSurface.frame;\n }\n if (frame) {\n const resolution = source._resolution;\n const scale = 1 << Math.max(mipLevel | 0, 0);\n const baseX = frame.x * resolution + 0.5 | 0;\n const baseY = frame.y * resolution + 0.5 | 0;\n const baseW = frame.width * resolution + 0.5 | 0;\n const baseH = frame.height * resolution + 0.5 | 0;\n let x = Math.floor(baseX / scale);\n let y = Math.floor(baseY / scale);\n let w = Math.ceil(baseW / scale);\n let h = Math.ceil(baseH / scale);\n x = Math.min(Math.max(x, 0), pixelWidth - 1);\n y = Math.min(Math.max(y, 0), pixelHeight - 1);\n w = Math.min(Math.max(w, 1), pixelWidth - x);\n h = Math.min(Math.max(h, 1), pixelHeight - y);\n viewport.x = x;\n viewport.y = y;\n viewport.width = w;\n viewport.height = h;\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, mipLevel, layer);\n if (didChange) {\n this.onRenderTargetChange.emit(renderTarget);\n }\n return renderTarget;\n }\n clear(target, clear = CLEAR.ALL, clearColor, mipLevel = this.mipLevel, layer = this.layer) {\n if (!clear) 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 mipLevel,\n layer\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 * @param mipLevel - the mip level to render to\n * @param layer - The layer of the render surface to render to. For array textures or cube maps, this specifies\n * which layer or face to target. Defaults to 0 (the first layer).\n */\n push(renderSurface, clear = CLEAR.ALL, clearColor, frame, mipLevel = 0, layer = 0) {\n const renderTarget = this.bind(renderSurface, clear, clearColor, frame, mipLevel, layer);\n this._renderTargetStack.push({\n renderTarget,\n frame,\n mipLevel,\n layer\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(\n currentRenderTargetData.renderTarget,\n false,\n null,\n currentRenderTargetData.frame,\n currentRenderTargetData.mipLevel,\n currentRenderTargetData.layer\n );\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 *\n * NOTE:\n * for sourceRenderSurfaceTexture, The render target must be something that is written too by the renderer\n *\n * The following is not valid:\n * @example\n * const canvas = document.createElement('canvas')\n * canvas.width = 200;\n * canvas.height = 200;\n *\n * const ctx = canvas2.getContext('2d')!\n * ctx.fillStyle = 'red'\n * ctx.fillRect(0, 0, 200, 200);\n *\n * const texture = RenderTexture.create({\n * width: 200,\n * height: 200,\n * })\n * const renderTarget = renderer.renderTarget.getRenderTarget(canvas2);\n *\n * renderer.renderTarget.copyToTexture(renderTarget,texture, {x:0,y:0},{width:200,height:200},{x:0,y:0});\n *\n * The best way to copy a canvas is to create a texture from it. Then render with that.\n *\n * Parsing in a RenderTarget canvas context (with a 2d context)\n * @param sourceRenderSurfaceTexture - the render surface to copy from\n * @param {Texture} destinationTexture - the texture to copy to\n * @param {object} originSrc - the origin of the copy\n * @param {number} originSrc.x - the x origin of the copy\n * @param {number} originSrc.y - the y origin of the copy\n * @param {object} size - the size of the copy\n * @param {number} size.width - the width of the copy\n * @param {number} size.height - the height of the copy\n * @param {object} originDest - the destination origin (top left to paste from!)\n * @param {number} originDest.x - the x origin of the paste\n * @param {number} 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, 0, this.layer);\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).source;\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 (renderSurface.source instanceof CanvasSource) {\n renderTarget.isRoot = true;\n }\n renderSurface.once(\"destroy\", () => {\n renderTarget.destroy();\n this._renderSurfaceToRenderTargetHash.delete(renderSurface);\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 resetState() {\n this.renderTarget = null;\n this.renderSurface = null;\n }\n}\n\nexport { RenderTargetSystem };\n//# sourceMappingURL=RenderTargetSystem.mjs.map\n"],"names":["fastCopy","sourceBuffer","destinationBuffer","sourceOffset","byteLength","len","BLEND_TO_NPM","STENCIL_MODES","STENCIL_MODES2","getAdjustedBlendModeBlend","blendMode","textureSource","fragTemplate","generateIfTestSrc","maxIfs","src","i","checkMaxIfStatementsInShader","gl","shader","fragmentSrc","maxTexturesPerBatchCache","getMaxTexturesPerBatch","getTestContext","_a","BatchTextureArray","Batch","batchPool","batchPoolIndex","GlobalResourceRegistry","item","getBatchFromPool","returnBatchToPool","batch","BATCH_TICK","_Batcher","options","uid","deprecation","maxTextures","attributesInitialSize","indicesInitialSize","ViewableBuffer","batchableObject","texture","textureId","attributeBuffer","instructionSet","elements","textureBatch","firstElement","topology","f32","u32","indexBuffer","size","start","action","batchElements","element","source","adjustedBlendMode","breakRequired","indexStart","indexSize","newSize","newArrayBuffer","newIndexBuffer","index","indicesOffset","indices","indexOffset","attributeOffset","Batcher","placeHolderBufferData","placeHolderIndexData","BatchGeometry","Geometry","Buffer","BufferUsage","stride","addBits","srcParts","parts","name","id","part","sanitisedPart","warn","findHooksRx","compileHooks","programSrc","hook","extractInputs","fragmentSource","out","match","regex","compileInputs","fragments","template","sort","results","fragment","mainInput","finalString","inValue","cleanedString","extractOutputs","extractVariableName","value","stripVariable","compileOutputs","mainStruct","mainStart","mainEnd","compiledCode","injectBits","templateSrc","fragmentParts","cacheMap","bitCacheMap","CACHE_UID","compileHighShader","bits","cacheId","generateCacheId","vertex","compileInputsAndOutputs","compileBits","compileHighShaderGl","vertexFragments","shaderBit","v","fragmentFragments","compiledVertex","compiledFragment","highFragment","a","b","vertexParts","vertexGPUTemplate","fragmentGPUTemplate","vertexGlTemplate","fragmentGlTemplate","globalUniformsBit","globalUniformsBitGl","compileHighShaderGpuProgram","GpuProgram","compileHighShaderGlProgram","GlProgram","colorBit","colorBitGl","textureBatchBitGpuCache","generateBindingSrc","bindingIndex","generateSampleSrc","generateTextureBatchBit","textureBatchBitGlCache","generateSampleGlSrc","generateTextureBatchBitGl","roundPixelsBit","roundPixelsBitGl","batchSamplersUniformGroupHash","getBatchSamplersUniformGroup","batchSamplersUniformGroup","sampleValues","UniformGroup","DefaultShader","Shader","glProgram","gpuProgram","defaultShader","_DefaultBatcher","float32View","uint32View","textureIdAndRound","wt","c","d","tx","ty","positions","uvs","argb","offset","end","i2","x","y","bounds","w0","w1","h0","h1","ExtensionType","DefaultBatcher","GCManagedHash","renderer","type","onUnload","priority","args","gpuData","MaskFilter","Filter","sprite","rest","textureMatrix","TextureMatrix","filterUniforms","Matrix","filterManager","input","output","clearMode","color32BitToUniform","abgr","alpha","BatchableSprite","_BatcherPipe","adaptor","State","_b","batchers","batches","geometry","batcher","BatcherPipe","extensions","tempBounds","Bounds","AlphaMaskEffect","FilterEffect","Sprite","Texture","AlphaMaskPipe","mask","maskedContainer","maskContainer","_maskedContainer","instruction","renderMask","filterEffect","BigPool","getGlobalBounds","colorTextureSource","filterTexture","TexturePool","maskData","RendererType","ColorMaskPipe","_container","colorStack","currentColor","_mask","StencilMaskPipe","effect","instructionsLength","renderTargetUid","gpuRenderer","maskStackIndex","CLEAR","CustomRenderPipe","container","executeInstructions","renderGroup","instructions","RenderGroupPipe","batchableRenderGroup","worldTransformMatrix","SpritePipe","gpuSprite","batchableSprite","BLEND_MODE_FILTERS","BlendModePipe","renderable","isRenderGroup","RenderGroup","clearList","list","j","tempContainer","Container","UPDATE_BLEND_COLOR_VISIBLE","UPDATE_VISIBLE","UPDATE_COLOR","UPDATE_BLEND","updateRenderGroupTransforms","updateChildRenderGroups","updateRenderGroupTransform","childrenToUpdate","updateTick","renderGroupDepth","childrenAtDepth","child","updateTransformAndChildren","root","worldAlpha","renderGroupParent","multiplyColors","updateFlags","localTransform","parent","updateColorBlendVisibility","children","length","groupAlpha","validateRenderables","renderPipes","rebuildRequired","tempMatrix","RenderGroupSystem","transform","originalLocalTransform","closestCacheAsTexture","resolution","antialias","scaleMode","lastTexture","TextureStyle","rendererOrPipes","_BackgroundSystem","Color","BackgroundSystem","imageTypes","_ExtractSystem","defaults","image","DOMAdapter","format","quality","canvas","resolve","reject","blob","reader","target","pixelInfo","link","width","base64","style","ExtractSystem","RenderTexture","dynamic","TextureSource","height","tempRect","Rectangle","noColor","GenerateTextureSystem","clearColor","region","getLocalBounds","cleanHash","hash","clean","cleanHash2","cleanArray","arr","_GCSystem","context","collection","gcTick","resource","gcData","last","lastResource","now","managedResourceHashes","hashEntry","writeIndex","currentTick","hashValue","stopKey","hashClone","k","nullCount","key","res","GCSystem","GlobalUniformSystem","projectionMatrix","worldColor","renderTarget","currentGlobalUniformData","Point","globalUniformData","uniformGroup","uniforms","bindGroup","BindGroup","SchedulerSystem","Ticker","func","duration","useOffset","task","elapsed","saidHello","sayHello","VERSION","HelloSystem","_RenderableGCSystem","_renderable","RenderableGCSystem","_TextureGCSystem","_value","TextureGCSystem","_RenderTarget","descriptor","colorSource","_size","skipColorTexture","colorTexture","RenderTarget","canvasCache","getCanvasTexture","CanvasSource","onDestroy","_ViewSystem","v8_0_0","desiredScreenWidth","desiredScreenHeight","ViewSystem","SharedSystems","RendererInitHook","SharedRenderPipes","calculateProjection","pm","flipY","sign","isRenderingToScreen","RenderTargetSystem","SystemRunner","clear","frame","mipLevel","layer","renderSurface","didChange","gpuRenderTarget","viewport","arrayLayerCount","pixelWidth","pixelHeight","scale","baseX","baseY","baseW","baseH","w","h","currentRenderTargetData","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]}
|