brain0 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BufferResource-VGpCfGWQ.js","sources":["../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/localUniformBit.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/textureBit.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/shared/shader/UboSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uniformParsers.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/createUboSyncFunction.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uboSyncFunctions.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/shared/buffer/BufferResource.mjs"],"sourcesContent":["\"use strict\";\nconst localUniformBit = {\n name: \"local-uniform-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uRound:f32,\n }\n\n @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `\n ),\n end: (\n /* wgsl */\n `\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n )\n }\n};\nconst localUniformBitGroup2 = {\n ...localUniformBit,\n vertex: {\n ...localUniformBit.vertex,\n // replace the group!\n header: localUniformBit.vertex.header.replace(\"group(1)\", \"group(2)\")\n }\n};\nconst localUniformBitGl = {\n name: \"local-uniform-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n `\n ),\n end: (\n /* glsl */\n `\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n )\n }\n};\n\nexport { localUniformBit, localUniformBitGl, localUniformBitGroup2 };\n//# sourceMappingURL=localUniformBit.mjs.map\n","\"use strict\";\nconst textureBit = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n\n `\n ),\n main: (\n /* wgsl */\n `\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n )\n }\n};\nconst textureBitGl = {\n name: \"texture-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureMatrix;\n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n\n\n `\n ),\n main: (\n /* glsl */\n `\n outColor = texture(uTexture, vUV);\n `\n )\n }\n};\n\nexport { textureBit, textureBitGl };\n//# sourceMappingURL=textureBit.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nfunction ensureAttributes(geometry, extractedData) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n const attributeData = extractedData[i];\n if (attributeData) {\n attribute.format ?? (attribute.format = attributeData.format);\n attribute.offset ?? (attribute.offset = attributeData.offset);\n attribute.instance ?? (attribute.instance = attributeData.instance);\n } else {\n warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);\n }\n }\n ensureStartAndStride(geometry);\n}\nfunction ensureStartAndStride(geometry) {\n const { buffers, attributes } = geometry;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n const buffer = buffers[j];\n tempStride[buffer.uid] = 0;\n tempStart[buffer.uid] = 0;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n tempStride[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n attribute.stride ?? (attribute.stride = tempStride[attribute.buffer.uid]);\n attribute.start ?? (attribute.start = tempStart[attribute.buffer.uid]);\n tempStart[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n}\n\nexport { ensureAttributes };\n//# sourceMappingURL=ensureAttributes.mjs.map\n","import { STENCIL_MODES } from '../../shared/state/const.mjs';\n\n\"use strict\";\nconst GpuStencilModesToPixi = [];\nGpuStencilModesToPixi[STENCIL_MODES.NONE] = void 0;\nGpuStencilModesToPixi[STENCIL_MODES.DISABLED] = {\n stencilWriteMask: 0,\n stencilReadMask: 0\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"increment-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE] = {\n stencilFront: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"decrement-clamp\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE] = {\n stencilWriteMask: 0,\n stencilFront: {\n compare: \"equal\",\n passOp: \"keep\"\n },\n stencilBack: {\n compare: \"equal\",\n passOp: \"keep\"\n }\n};\nGpuStencilModesToPixi[STENCIL_MODES.INVERSE_MASK_ACTIVE] = {\n stencilWriteMask: 0,\n stencilFront: {\n compare: \"not-equal\",\n passOp: \"keep\"\n },\n stencilBack: {\n compare: \"not-equal\",\n passOp: \"keep\"\n }\n};\n\nexport { GpuStencilModesToPixi };\n//# sourceMappingURL=GpuStencilModesToPixi.mjs.map\n","import { unsafeEvalSupported } from '../../../../utils/browser/unsafeEvalSupported.mjs';\nimport { Buffer } from '../buffer/Buffer.mjs';\nimport { BufferUsage } from '../buffer/const.mjs';\n\n\"use strict\";\nclass UboSystem {\n constructor(adaptor) {\n /** Cache of uniform buffer layouts and sync functions, so we don't have to re-create them */\n this._syncFunctionHash = /* @__PURE__ */ Object.create(null);\n this._adaptor = adaptor;\n this._systemCheck();\n }\n /**\n * Overridable function by `pixi.js/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n */\n _systemCheck() {\n if (!unsafeEvalSupported()) {\n throw new Error(\"Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.\");\n }\n }\n ensureUniformGroup(uniformGroup) {\n const uniformData = this.getUniformGroupData(uniformGroup);\n uniformGroup.buffer || (uniformGroup.buffer = new Buffer({\n data: new Float32Array(uniformData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST\n }));\n }\n getUniformGroupData(uniformGroup) {\n return this._syncFunctionHash[uniformGroup._signature] || this._initUniformGroup(uniformGroup);\n }\n _initUniformGroup(uniformGroup) {\n const uniformGroupSignature = uniformGroup._signature;\n let uniformData = this._syncFunctionHash[uniformGroupSignature];\n if (!uniformData) {\n const elements = Object.keys(uniformGroup.uniformStructures).map((i) => uniformGroup.uniformStructures[i]);\n const layout = this._adaptor.createUboElements(elements);\n const syncFunction = this._generateUboSync(layout.uboElements);\n uniformData = this._syncFunctionHash[uniformGroupSignature] = {\n layout,\n syncFunction\n };\n }\n return this._syncFunctionHash[uniformGroupSignature];\n }\n _generateUboSync(uboElements) {\n return this._adaptor.generateUboSync(uboElements);\n }\n syncUniformGroup(uniformGroup, data, offset) {\n const uniformGroupData = this.getUniformGroupData(uniformGroup);\n uniformGroup.buffer || (uniformGroup.buffer = new Buffer({\n data: new Float32Array(uniformGroupData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST\n }));\n let dataInt32 = null;\n if (!data) {\n data = uniformGroup.buffer.data;\n dataInt32 = uniformGroup.buffer.dataInt32;\n }\n offset || (offset = 0);\n uniformGroupData.syncFunction(uniformGroup.uniforms, data, dataInt32, offset);\n return true;\n }\n updateUniformGroup(uniformGroup) {\n if (uniformGroup.isStatic && !uniformGroup._dirtyId) return false;\n uniformGroup._dirtyId = 0;\n const synced = this.syncUniformGroup(uniformGroup);\n uniformGroup.buffer.update();\n return synced;\n }\n destroy() {\n this._syncFunctionHash = null;\n }\n}\n\nexport { UboSystem };\n//# sourceMappingURL=UboSystem.mjs.map\n","\"use strict\";\nconst uniformParsers = [\n // uploading pixi matrix object to mat3\n {\n type: \"mat3x3<f32>\",\n test: (data) => {\n const value = data.value;\n return value.a !== void 0;\n },\n ubo: `\n var matrix = uv[name].toArray(true);\n data[offset] = matrix[0];\n data[offset + 1] = matrix[1];\n data[offset + 2] = matrix[2];\n data[offset + 4] = matrix[3];\n data[offset + 5] = matrix[4];\n data[offset + 6] = matrix[5];\n data[offset + 8] = matrix[6];\n data[offset + 9] = matrix[7];\n data[offset + 10] = matrix[8];\n `,\n uniform: `\n gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));\n `\n },\n // uploading a pixi rectangle as a vec4\n {\n type: \"vec4<f32>\",\n test: (data) => data.type === \"vec4<f32>\" && data.size === 1 && data.value.width !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n data[offset + 2] = v.width;\n data[offset + 3] = v.height;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);\n }\n `\n },\n // uploading a pixi point as a vec2\n {\n type: \"vec2<f32>\",\n test: (data) => data.type === \"vec2<f32>\" && data.size === 1 && data.value.x !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y) {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[name].location, v.x, v.y);\n }\n `\n },\n // uploading a pixi color as a vec4\n {\n type: \"vec4<f32>\",\n test: (data) => data.type === \"vec4<f32>\" && data.size === 1 && data.value.red !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n data[offset + 3] = v.alpha;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);\n }\n `\n },\n // uploading a pixi color as a vec3\n {\n type: \"vec3<f32>\",\n test: (data) => data.type === \"vec3<f32>\" && data.size === 1 && data.value.red !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n gl.uniform3f(ud[name].location, v.red, v.green, v.blue);\n }\n `\n }\n];\n\nexport { uniformParsers };\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from './uniformParsers.mjs';\n\n\"use strict\";\nfunction createUboSyncFunction(uboElements, parserCode, arrayGenerationFunction, singleSettersMap) {\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n let prev = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n const name = uboElement.data.name;\n let parsed = false;\n let offset = 0;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.test(uboElement.data)) {\n offset = uboElement.offset / 4;\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo\n );\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uboElement.data.size > 1) {\n offset = uboElement.offset / 4;\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n } else {\n const template = singleSettersMap[uboElement.data.type];\n offset = uboElement.offset / 4;\n funcFragments.push(\n /* wgsl */\n `\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `\n );\n }\n }\n prev = offset;\n }\n const fragmentSrc = funcFragments.join(\"\\n\");\n return new Function(\n \"uv\",\n \"data\",\n \"dataInt32\",\n \"offset\",\n fragmentSrc\n );\n}\n\nexport { createUboSyncFunction };\n//# sourceMappingURL=createUboSyncFunction.mjs.map\n","\"use strict\";\nfunction loopMatrix(col, row) {\n const total = col * row;\n return `\n for (let i = 0; i < ${total}; i++) {\n data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];\n }\n `;\n}\nconst uboSyncFunctionsSTD40 = {\n f32: `\n data[offset] = v;`,\n i32: `\n dataInt32[offset] = v;`,\n \"vec2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];`,\n \"vec3<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];`,\n \"vec4<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];`,\n \"vec2<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];`,\n \"vec3<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];`,\n \"vec4<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];\n dataInt32[offset + 3] = v[3];`,\n \"mat2x2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];`,\n \"mat3x3<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];`,\n \"mat4x4<f32>\": `\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }`,\n \"mat3x2<f32>\": loopMatrix(3, 2),\n \"mat4x2<f32>\": loopMatrix(4, 2),\n \"mat2x3<f32>\": loopMatrix(2, 3),\n \"mat4x3<f32>\": loopMatrix(4, 3),\n \"mat2x4<f32>\": loopMatrix(2, 4),\n \"mat3x4<f32>\": loopMatrix(3, 4)\n};\nconst uboSyncFunctionsWGSL = {\n ...uboSyncFunctionsSTD40,\n \"mat2x2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n `\n};\n\nexport { uboSyncFunctionsSTD40, uboSyncFunctionsWGSL };\n//# sourceMappingURL=uboSyncFunctions.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\n\n\"use strict\";\nclass BufferResource extends EventEmitter {\n /**\n * Create a new Buffer Resource.\n * @param options - The options for the buffer resource\n * @param options.buffer - The underlying buffer that this resource is using\n * @param options.offset - The offset of the buffer this resource is using.\n * If not provided, then it will use the offset of the buffer.\n * @param options.size - The size of the buffer this resource is using.\n * If not provided, then it will use the size of the buffer.\n */\n constructor({ buffer, offset, size }) {\n super();\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"buffer\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"bufferResource\";\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /**\n * A cheeky hint to the GL renderer to let it know this is a BufferResource\n * @internal\n */\n this._bufferResource = true;\n /**\n * Has the Buffer resource been destroyed?\n * @readonly\n */\n this.destroyed = false;\n this.buffer = buffer;\n this.offset = offset | 0;\n this.size = size;\n this.buffer.on(\"change\", this.onBufferChange, this);\n }\n onBufferChange() {\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n }\n /**\n * Destroys this resource. Make sure the underlying buffer is not used anywhere else\n * if you want to destroy it as well, or code will explode\n * @param destroyBuffer - Should the underlying buffer be destroyed as well?\n */\n destroy(destroyBuffer = false) {\n this.destroyed = true;\n if (destroyBuffer) {\n this.buffer.destroy();\n }\n this.emit(\"change\", this);\n this.buffer = null;\n this.removeAllListeners();\n }\n}\n\nexport { BufferResource };\n//# sourceMappingURL=BufferResource.mjs.map\n"],"names":["localUniformBit","localUniformBitGroup2","localUniformBitGl","textureBit","textureBitGl","ensureAttributes","geometry","extractedData","i","attribute","attributeData","warn","ensureStartAndStride","buffers","attributes","tempStride","tempStart","j","buffer","getAttributeInfoFromFormat","GpuStencilModesToPixi","STENCIL_MODES","UboSystem","adaptor","unsafeEvalSupported","uniformGroup","uniformData","Buffer","BufferUsage","uniformGroupSignature","elements","layout","syncFunction","uboElements","data","offset","uniformGroupData","dataInt32","synced","uniformParsers","createUboSyncFunction","parserCode","arrayGenerationFunction","singleSettersMap","funcFragments","prev","uboElement","name","parsed","template","fragmentSrc","loopMatrix","col","row","uboSyncFunctionsSTD40","uboSyncFunctionsWGSL","BufferResource","EventEmitter","size","uid","destroyBuffer"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
@@ -0,0 +1,2 @@
1
+ import{f as P,h as Se,i as Me,m as oe,M as q,j as I,k as Ve,w as $e,s as we,l as Re,n as Xe,C as Ie,T as Ae,o as Je,F as Ke,p as Qe,q as ze,D as Be,A as Ze,R as et,r as ie}from"./index-QopGLZI_.js";import{R as tt,S as st,B as nt,a as at,b as ot,c as rt,A as it,C as ct}from"./RenderTargetSystem-DxpnxrEz.js";import"./Filter-DBNO82oR.js";const ge=class X{static _getPatternRepeat(e,t){const s=e&&e!=="clamp-to-edge",n=t&&t!=="clamp-to-edge";return s&&n?"repeat":s?"repeat-x":n?"repeat-y":"no-repeat"}start(e,t,s){}execute(e,t){var i,c,u,m;const s=t.elements;if(!s||!s.length)return;const n=e.renderer,o=n.canvasContext,r=o.activeContext;for(let x=0;x<s.length;x++){const G=s[x];if(!G.packAsQuad)continue;const v=G,f=v.texture,S=f?P.getCanvasSource(f):null;if(!S)continue;const y=f.source.style,A=o.smoothProperty,Y=y.scaleMode!=="nearest";r[A]!==Y&&(r[A]=Y),o.setBlendMode(t.blendMode);const U=((i=n.globalUniforms.globalUniformData)==null?void 0:i.worldColor)??4294967295,E=v.color,k=(U>>>24&255)/255,C=(E>>>24&255)/255,V=((c=n.filter)==null?void 0:c.alphaMultiplier)??1,z=k*C*V;if(z<=0)continue;r.globalAlpha=z;const Z=U&16777215,J=E&16777215,b=Me(oe(J,Z)),M=f.frame,w=y.addressModeU??y.addressMode,ce=y.addressModeV??y.addressMode,ee=X._getPatternRepeat(w,ce),D=f.source._resolution??f.source.resolution??1,$=(m=(u=v.renderable)==null?void 0:u.renderGroup)==null?void 0:m.isCachedAsTexture,d=M.x*D,p=M.y*D,g=M.width*D,L=M.height*D,R=v.bounds,_=n.renderTarget.renderTarget.isRoot,W=R.minX,F=R.minY,B=R.maxX-R.minX,H=R.maxY-R.minY,O=f.rotate,l=f.uvs,j=Math.min(l.x0,l.x1,l.x2,l.x3,l.y0,l.y1,l.y2,l.y3),N=Math.max(l.x0,l.x1,l.x2,l.x3,l.y0,l.y1,l.y2,l.y3),T=ee!=="no-repeat"&&(j<0||N>1),ne=O&&!(!T&&(b!==16777215||O));ne?(X._tempPatternMatrix.copyFrom(v.transform),Se.matrixAppendRotationInv(X._tempPatternMatrix,O,W,F,B,H),o.setContextTransform(X._tempPatternMatrix,v.roundPixels===1,void 0,$&&_)):o.setContextTransform(v.transform,v.roundPixels===1,void 0,$&&_);const le=B,he=H;let te=ne?0:W,se=ne?0:F;if(!ne&&v.roundPixels===1&&(te|=0,se|=0),T){let de=S;const K=b!==16777215&&!O,Q=M.width<=f.source.width&&M.height<=f.source.height;K&&Q&&(de=P.getTintedCanvas({texture:f},b));const pe=r.createPattern(de,ee);if(!pe)continue;const ye=le,xe=he;if(ye===0||xe===0)continue;const Ce=1/ye,Te=1/xe,Pe=(l.x1-l.x0)*Ce,ke=(l.y1-l.y0)*Ce,be=(l.x3-l.x0)*Te,_e=(l.y3-l.y0)*Te,Ne=l.x0-Pe*te-be*se,Ye=l.y0-ke*te-_e*se,ue=f.source.pixelWidth,me=f.source.pixelHeight;X._tempPatternMatrix.set(Pe*ue,ke*me,be*ue,_e*me,Ne*ue,Ye*me),P.applyPatternTransform(pe,X._tempPatternMatrix),r.fillStyle=pe,r.fillRect(te,se,le,he)}else{const K=b!==16777215||O?P.getTintedCanvas({texture:f},b):S,Q=K!==S;r.drawImage(K,Q?0:d,Q?0:p,Q?K.width:g,Q?K.height:L,te,se,le,he)}}}};ge._tempPatternMatrix=new q;ge.extension={type:[I.CanvasPipesAdaptor],name:"batch"};let lt=ge;class He{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,s){this._renderer.renderPipes.batch.break(s);const n=this._colorStack;n[this._colorStackIndex]=n[this._colorStackIndex-1]&e.mask;const o=this._colorStack[this._colorStackIndex];o!==this._currentColor&&(this._currentColor=o,s.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1})),this._colorStackIndex++}pop(e,t,s){this._renderer.renderPipes.batch.break(s);const n=this._colorStack;this._colorStackIndex--;const o=n[this._colorStackIndex-1];o!==this._currentColor&&(this._currentColor=o,s.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}}He.extension={type:[I.CanvasPipes],name:"colorMask"};function ht(a,e,t,s,n,o){o=Math.max(0,Math.min(o,Math.min(s,n)/2)),a.moveTo(e+o,t),a.lineTo(e+s-o,t),a.quadraticCurveTo(e+s,t,e+s,t+o),a.lineTo(e+s,t+n-o),a.quadraticCurveTo(e+s,t+n,e+s-o,t+n),a.lineTo(e+o,t+n),a.quadraticCurveTo(e,t+n,e,t+n-o),a.lineTo(e,t+o),a.quadraticCurveTo(e,t,e+o,t)}function Ge(a,e){switch(e.type){case"rectangle":{const t=e;a.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;ht(a,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;a.moveTo(t.x+t.radius,t.y),a.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;a.ellipse?(a.moveTo(t.x+t.halfWidth,t.y),a.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2)):(a.save(),a.translate(t.x,t.y),a.scale(t.halfWidth,t.halfHeight),a.moveTo(1,0),a.arc(0,0,1,0,Math.PI*2),a.restore());break}case"triangle":{const t=e;a.moveTo(t.x,t.y),a.lineTo(t.x2,t.y2),a.lineTo(t.x3,t.y3),a.closePath();break}case"polygon":default:{const t=e,s=t.points;if(!(s!=null&&s.length))break;a.moveTo(s[0],s[1]);for(let n=2;n<s.length;n+=2)a.lineTo(s[n],s[n+1]);t.closePath&&a.closePath();break}}}function dt(a,e,t){const s=[],n=[],o=[],r=we[e.type];if(!(r!=null&&r.build(e,s)))return!1;const i=e.closePath??!0;Re(s,t,!1,i,n,o);for(let c=0;c<o.length;c+=3){const u=o[c]*2,m=o[c+1]*2,x=o[c+2]*2;a.moveTo(n[u],n[u+1]),a.lineTo(n[m],n[m+1]),a.lineTo(n[x],n[x+1]),a.closePath()}return!0}function pt(a,e){if(!(e!=null&&e.length))return!1;for(let t=0;t<e.length;t++){const s=e[t];if(!(s!=null&&s.shape))continue;const n=s.transform,o=n&&!n.isIdentity();o&&(a.save(),a.transform(n.a,n.b,n.c,n.d,n.tx,n.ty)),Ge(a,s.shape),o&&a.restore()}return!0}class Ee{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,s){this._renderer.renderPipes.batch.break(s),s.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,s){this._renderer.renderPipes.batch.break(s),s.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){var m,x,G;if(e.action!=="pushMaskBegin"&&e.action!=="popMaskEnd")return;const t=this._renderer,s=t.canvasContext,n=s==null?void 0:s.activeContext;if(!n)return;if(e.action==="popMaskEnd"){this._canvasMaskStack.pop()&&n.restore();return}e.inverse&&this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");const o=e.mask.mask;if(!(o instanceof Ve)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}const r=o,i=(m=r.context)==null?void 0:m.instructions;if(!(i!=null&&i.length)){this._canvasMaskStack.push(!1);return}n.save(),s.setContextTransform(r.groupTransform,(t._roundPixels|r._roundPixels)===1),n.beginPath();let c=!1,u=!1;for(let v=0;v<i.length;v++){const f=i[v],S=f.action;if(S!=="fill"&&S!=="stroke")continue;const y=f.data,A=(x=y==null?void 0:y.path)==null?void 0:x.shapePath;if(!((G=A==null?void 0:A.shapePrimitives)!=null&&G.length))continue;const Y=S==="stroke",U=A.shapePrimitives;for(let E=0;E<U.length;E++){const k=U[E];if(!(k!=null&&k.shape))continue;const C=k.transform,V=C&&!C.isIdentity();V&&(n.save(),n.transform(C.a,C.b,C.c,C.d,C.tx,C.ty)),Y&&y.style?c=dt(n,k.shape,y.style)||c:(Ge(n,k.shape),u=pt(n,k.holes)||u,c=!0),V&&n.restore()}}if(!c){n.restore(),this._canvasMaskStack.push(!1);return}u?n.clip("evenodd"):n.clip(),this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(e,t){this._warnedMaskTypes.has(e)||(this._warnedMaskTypes.add(e),$e(t))}}Ee.extension={type:[I.CanvasPipes],name:"stencilMask"};const h="source-over";function ut(){const a=Xe(),e=Object.create(null);return e.inherit=h,e.none=h,e.normal="source-over",e.add="lighter",e.multiply=a?"multiply":h,e.screen=a?"screen":h,e.overlay=a?"overlay":h,e.darken=a?"darken":h,e.lighten=a?"lighten":h,e["color-dodge"]=a?"color-dodge":h,e["color-burn"]=a?"color-burn":h,e["hard-light"]=a?"hard-light":h,e["soft-light"]=a?"soft-light":h,e.difference=a?"difference":h,e.exclusion=a?"exclusion":h,e.saturation=a?"saturation":h,e.color=a?"color":h,e.luminosity=a?"luminosity":h,e["linear-burn"]=a?"color-burn":h,e["linear-dodge"]=a?"color-dodge":h,e["linear-light"]=a?"hard-light":h,e["pin-light"]=a?"hard-light":h,e["vivid-light"]=a?"hard-light":h,e["hard-mix"]=h,e.negation=a?"difference":h,e["normal-npm"]=e.normal,e["add-npm"]=e.add,e["screen-npm"]=e.screen,e.erase="destination-out",e.subtract=h,e.divide=h,e.min=h,e.max=h,e}const mt=new q;class We{constructor(e){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=ut(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=e}resolutionChange(e){this.activeResolution=e}init(){const e=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:e}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){const t=this.rootContext;t.webkitImageSmoothingEnabled?this.smoothProperty="webkitImageSmoothingEnabled":t.mozImageSmoothingEnabled?this.smoothProperty="mozImageSmoothingEnabled":t.oImageSmoothingEnabled?this.smoothProperty="oImageSmoothingEnabled":t.msImageSmoothingEnabled&&(this.smoothProperty="msImageSmoothingEnabled")}}setContextTransform(e,t,s,n){var u;const o=n?q.IDENTITY:((u=this._renderer.globalUniforms.globalUniformData)==null?void 0:u.worldTransformMatrix)||q.IDENTITY;let r=mt;r.copyFrom(o),r.append(e);const i=this._projTransform,c=this.activeResolution;if(s=s||c,i){const m=q.shared;m.copyFrom(r),m.prepend(i),r=m}t?this.activeContext.setTransform(r.a*s,r.b*s,r.c*s,r.d*s,r.tx*c|0,r.ty*c|0):this.activeContext.setTransform(r.a*s,r.b*s,r.c*s,r.d*s,r.tx*c,r.ty*c)}clear(e,t){const s=this.activeContext,n=this._renderer;if(s.clearRect(0,0,n.width,n.height),e){const o=Ie.shared.setValue(e);s.globalAlpha=t??o.alpha,s.fillStyle=o.toHex(),s.fillRect(0,0,n.width,n.height),s.globalAlpha=1}}setBlendMode(e){if(this._activeBlendMode===e)return;this._activeBlendMode=e,this._outerBlend=!1;const t=this.blendModes[e];if(!t){this._warnedBlendModes.has(e)||(console.warn(`CanvasRenderer: blend mode "${e}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(e)),this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=t}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}We.extension={type:[I.CanvasSystem],name:"canvasContext"};class Fe{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}Fe.extension={type:[I.CanvasSystem],name:"limits"};const ft="#808080",ae=new q,gt=new q,vt=new q,fe=new q;function yt(a,e,t){a.beginPath();for(let s=0;s<t.length;s+=3){const n=t[s]*2,o=t[s+1]*2,r=t[s+2]*2;a.moveTo(e[n],e[n+1]),a.lineTo(e[o],e[o+1]),a.lineTo(e[r],e[r+1]),a.closePath()}a.fill()}function xt(a){return`#${(a&16777215).toString(16).padStart(6,"0")}`}function Ct(a,e,t,s,n,o){o=Math.max(0,Math.min(o,Math.min(s,n)/2)),a.moveTo(e+o,t),a.lineTo(e+s-o,t),a.quadraticCurveTo(e+s,t,e+s,t+o),a.lineTo(e+s,t+n-o),a.quadraticCurveTo(e+s,t+n,e+s-o,t+n),a.lineTo(e+o,t+n),a.quadraticCurveTo(e,t+n,e,t+n-o),a.lineTo(e,t+o),a.quadraticCurveTo(e,t,e+o,t)}function re(a,e){switch(e.type){case"rectangle":{const t=e;a.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;Ct(a,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;a.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;a.ellipse?a.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2):(a.save(),a.translate(t.x,t.y),a.scale(t.halfWidth,t.halfHeight),a.arc(0,0,1,0,Math.PI*2),a.restore());break}case"triangle":{const t=e;a.moveTo(t.x,t.y),a.lineTo(t.x2,t.y2),a.lineTo(t.x3,t.y3),a.closePath();break}case"polygon":default:{const t=e,s=t.points;if(!(s!=null&&s.length))break;a.moveTo(s[0],s[1]);for(let n=2;n<s.length;n+=2)a.lineTo(s[n],s[n+1]);t.closePath&&a.closePath();break}}}function Tt(a,e){if(!(e!=null&&e.length))return!1;for(let t=0;t<e.length;t++){const s=e[t];if(!(s!=null&&s.shape))continue;const n=s.transform,o=n&&!n.isIdentity();o&&(a.save(),a.transform(n.a,n.b,n.c,n.d,n.tx,n.ty)),re(a,s.shape),o&&a.restore()}return!0}function Pt(a,e,t,s){const n=a.fill;if(n instanceof Ke){n.buildGradient();const r=n.texture;if(r){const i=P.getTintedPattern(r,e),c=t?fe.copyFrom(t).scale(r.source.pixelWidth,r.source.pixelHeight):fe.copyFrom(n.transform);return s&&!a.textureSpace&&c.append(s),P.applyPatternTransform(i,c),i}}if(n instanceof Qe){const r=P.getTintedPattern(n.texture,e);return P.applyPatternTransform(r,n.transform,!1),r}const o=a.texture;if(o&&o!==Ae.WHITE){if(!o.source.resource)return ft;const r=P.getTintedPattern(o,e),i=t?fe.copyFrom(t).scale(o.source.pixelWidth,o.source.pixelHeight):a.matrix;return P.applyPatternTransform(r,i),r}return xt(e)}class qe{constructor(){this.shader=null}contextChange(e){}execute(e,t){var Y,U,E,k,C,V,z;const s=e.renderer,n=s.canvasContext,o=n.activeContext,r=t.groupTransform,i=((Y=s.globalUniforms.globalUniformData)==null?void 0:Y.worldColor)??4294967295,c=t.groupColorAlpha,u=(i>>>24&255)/255,m=(c>>>24&255)/255,x=((U=s.filter)==null?void 0:U.alphaMultiplier)??1,G=u*m*x;if(G<=0)return;const v=i&16777215,f=c&16777215,S=Me(oe(f,v)),y=s._roundPixels|t._roundPixels;o.save(),n.setContextTransform(r,y===1),n.setBlendMode(t.groupBlendMode);const A=t.context.instructions;for(let Z=0;Z<A.length;Z++){const J=A[Z];if(J.action==="texture"){const d=J.data,p=d.image,g=p?P.getCanvasSource(p):null;if(!g)continue;const L=d.alpha*G;if(L<=0)continue;const R=oe(d.style,S);o.globalAlpha=L;let _=g;R!==16777215&&(_=P.getTintedCanvas({texture:p},R));const W=p.frame,F=p.source._resolution??p.source.resolution??1;let B=W.x*F,H=W.y*F;const O=W.width*F,l=W.height*F;_!==g&&(B=0,H=0);const j=d.transform,N=j&&!j.isIdentity(),T=p.rotate;N||T?(ae.copyFrom(r),N&&ae.append(j),T&&Se.matrixAppendRotationInv(ae,T,d.dx,d.dy,d.dw,d.dh),n.setContextTransform(ae,y===1)):n.setContextTransform(r,y===1),o.drawImage(_,B,H,_===g?O:_.width,_===g?l:_.height,T?0:d.dx,T?0:d.dy,d.dw,d.dh),(N||T)&&n.setContextTransform(r,y===1);continue}const b=J.data,M=(E=b==null?void 0:b.path)==null?void 0:E.shapePath;if(!((k=M==null?void 0:M.shapePrimitives)!=null&&k.length))continue;const w=b.style,ce=oe(w.color,S),ee=w.alpha*G;if(ee<=0)continue;const D=J.action==="stroke";if(o.globalAlpha=ee,D){const d=w;o.lineWidth=d.width,o.lineCap=d.cap,o.lineJoin=d.join,o.miterLimit=d.miterLimit}const $=M.shapePrimitives;if(!D&&((z=(V=(C=b.hole)==null?void 0:C.shapePath)==null?void 0:V.shapePrimitives)!=null&&z.length)){const d=$[$.length-1];d.holes=b.hole.shapePath.shapePrimitives}for(let d=0;d<$.length;d++){const p=$[d];if(!(p!=null&&p.shape))continue;const g=p.transform,L=g&&!g.isIdentity(),R=w.texture&&w.texture!==Ae.WHITE,_=w.textureSpace==="global"?g:null,W=R?Je(gt,w,p.shape,_):null,F=L?vt.copyFrom(r).append(g):r,B=Pt(w,ce,W,F);if(L&&(o.save(),o.transform(g.a,g.b,g.c,g.d,g.tx,g.ty)),D){const H=w;if(H.alignment!==.5&&!H.pixelLine){const l=[],j=[],N=[],T=we[p.shape.type];if(T!=null&&T.build(p.shape,l)){const ve=p.shape.closePath??!0;Re(l,H,!1,ve,j,N),o.fillStyle=B,yt(o,j,N)}else o.strokeStyle=B,o.beginPath(),re(o,p.shape),o.stroke()}else o.strokeStyle=B,o.beginPath(),re(o,p.shape),o.stroke()}else o.fillStyle=B,o.beginPath(),re(o,p.shape),Tt(o,p.holes)?o.fill("evenodd"):o.fill();L&&o.restore()}}o.restore()}destroy(){this.shader=null}}qe.extension={type:[I.CanvasPipesAdaptor],name:"graphics"};class kt{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){const t=e.colorTexture,{canvas:s,context:n}=this._ensureCanvas(t);return{canvas:s,context:n,width:s.width,height:s.height}}resizeGpuRenderTarget(e){const t=e.colorTexture,{canvas:s}=this._ensureCanvas(t);s.width=e.pixelWidth,s.height=e.pixelHeight}startRenderPass(e,t,s,n){const o=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=o.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,s,n)}clear(e,t,s,n){const r=this._renderTargetSystem.getGpuRenderTarget(e).context,i=n||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(r.setTransform(1,0,0,1,0,0),r.clearRect(i.x,i.y,i.width,i.height),s){const c=Ie.shared.setValue(s);c.alpha>0&&(r.globalAlpha=c.alpha,r.fillStyle=c.toHex(),r.fillRect(i.x,i.y,i.width,i.height),r.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,s,n,o){const i=this._renderTargetSystem.getGpuRenderTarget(e).canvas,c=t.source,{context:u}=this._ensureCanvas(c),m=(o==null?void 0:o.x)??0,x=(o==null?void 0:o.y)??0;return u.drawImage(i,s.x,s.y,n.width,n.height,m,x,n.width,n.height),c.update(),t}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!ze.test(t))&&(t=Be.get().createCanvas(e.pixelWidth,e.pixelHeight),e.resource=t),(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(t.width=e.pixelWidth,t.height=e.pixelHeight);const s=t.getContext("2d");return{canvas:t,context:s}}}class Ue extends tt{constructor(e){super(e),this.adaptor=new kt,this.adaptor.init(e,this)}}Ue.extension={type:[I.CanvasSystem],name:"renderTarget"};class De{constructor(e){}init(){}initSource(e){}generateCanvas(e){const t=Be.get().createCanvas(),s=t.getContext("2d"),n=P.getCanvasSource(e);if(!n)return t;const o=e.frame,r=e.source._resolution??e.source.resolution??1,i=o.x*r,c=o.y*r,u=o.width*r,m=o.height*r;return t.width=Math.ceil(u),t.height=Math.ceil(m),s.drawImage(n,i,c,u,m,0,0,u,m),t}getPixels(e){const t=this.generateCanvas(e);return{pixels:t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}}destroy(){}}De.extension={type:[I.CanvasSystem],name:"texture"};const bt=[...st,We,Fe,De,Ue],_t=[nt,at,ot,rt,it,Ee,He,ct],St=[lt,qe],Le=[],Oe=[],je=[];ie.handleByNamedList(I.CanvasSystem,Le);ie.handleByNamedList(I.CanvasPipes,Oe);ie.handleByNamedList(I.CanvasPipesAdaptor,je);ie.add(...bt,..._t,...St);class It extends Ze{constructor(){const e={name:"canvas",type:et.CANVAS,systems:Le,renderPipes:Oe,renderPipeAdaptors:je};super(e)}}export{It as CanvasRenderer};
2
+ //# sourceMappingURL=CanvasRenderer-fCJxZSuL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasRenderer-fCJxZSuL.js","sources":["../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/batcher/canvas/CanvasBatchAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/mask/color/CanvasColorMaskPipe.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/mask/stencil/CanvasStencilMaskPipe.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/utils/mapCanvasBlendModesToPixi.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/CanvasContextSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/CanvasLimitsSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/scene/graphics/canvas/CanvasGraphicsAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/renderTarget/CanvasRenderTargetAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/renderTarget/CanvasRenderTargetSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/texture/CanvasTextureSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/canvas/CanvasRenderer.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { groupD8 } from '../../../maths/matrix/groupD8.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { bgr2rgb } from '../../../scene/container/container-mixins/getGlobalMixin.mjs';\nimport { multiplyHexColors } from '../../../scene/container/utils/multiplyHexColors.mjs';\nimport { canvasUtils } from '../../renderers/canvas/utils/canvasUtils.mjs';\n\n\"use strict\";\nconst _CanvasBatchAdaptor = class _CanvasBatchAdaptor {\n static _getPatternRepeat(addressModeU, addressModeV) {\n const repeatU = addressModeU && addressModeU !== \"clamp-to-edge\";\n const repeatV = addressModeV && addressModeV !== \"clamp-to-edge\";\n if (repeatU && repeatV) return \"repeat\";\n if (repeatU) return \"repeat-x\";\n if (repeatV) return \"repeat-y\";\n return \"no-repeat\";\n }\n start(batchPipe, geometry, shader) {\n void batchPipe;\n void geometry;\n void shader;\n }\n execute(batchPipe, batch) {\n const elements = batch.elements;\n if (!elements || !elements.length) return;\n const renderer = batchPipe.renderer;\n const contextSystem = renderer.canvasContext;\n const context = contextSystem.activeContext;\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (!element.packAsQuad) continue;\n const quad = element;\n const texture = quad.texture;\n const source = texture ? canvasUtils.getCanvasSource(texture) : null;\n if (!source) continue;\n const textureStyle = texture.source.style;\n const smoothProperty = contextSystem.smoothProperty;\n const shouldSmooth = textureStyle.scaleMode !== \"nearest\";\n if (context[smoothProperty] !== shouldSmooth) {\n context[smoothProperty] = shouldSmooth;\n }\n contextSystem.setBlendMode(batch.blendMode);\n const globalColor = renderer.globalUniforms.globalUniformData?.worldColor ?? 4294967295;\n const argb = quad.color;\n const globalAlpha = (globalColor >>> 24 & 255) / 255;\n const quadAlpha = (argb >>> 24 & 255) / 255;\n const filterAlpha = renderer.filter?.alphaMultiplier ?? 1;\n const alpha = globalAlpha * quadAlpha * filterAlpha;\n if (alpha <= 0) continue;\n context.globalAlpha = alpha;\n const globalTint = globalColor & 16777215;\n const quadTint = argb & 16777215;\n const tint = bgr2rgb(multiplyHexColors(quadTint, globalTint));\n const frame = texture.frame;\n const repeatU = textureStyle.addressModeU ?? textureStyle.addressMode;\n const repeatV = textureStyle.addressModeV ?? textureStyle.addressMode;\n const repeat = _CanvasBatchAdaptor._getPatternRepeat(repeatU, repeatV);\n const resolution = texture.source._resolution ?? texture.source.resolution ?? 1;\n const isFromCachedRenderGroup = quad.renderable?.renderGroup?.isCachedAsTexture;\n const sx = frame.x * resolution;\n const sy = frame.y * resolution;\n const sw = frame.width * resolution;\n const sh = frame.height * resolution;\n const bounds = quad.bounds;\n const isRootTarget = renderer.renderTarget.renderTarget.isRoot;\n const dx = bounds.minX;\n const dy = bounds.minY;\n const dw = bounds.maxX - bounds.minX;\n const dh = bounds.maxY - bounds.minY;\n const rotate = texture.rotate;\n const uvs = texture.uvs;\n const uvMin = Math.min(uvs.x0, uvs.x1, uvs.x2, uvs.x3, uvs.y0, uvs.y1, uvs.y2, uvs.y3);\n const uvMax = Math.max(uvs.x0, uvs.x1, uvs.x2, uvs.x3, uvs.y0, uvs.y1, uvs.y2, uvs.y3);\n const needsRepeat = repeat !== \"no-repeat\" && (uvMin < 0 || uvMax > 1);\n const willUseProcessedCanvas = !needsRepeat && (tint !== 16777215 || rotate);\n const applyRotateTransform = rotate && !willUseProcessedCanvas;\n if (applyRotateTransform) {\n _CanvasBatchAdaptor._tempPatternMatrix.copyFrom(quad.transform);\n groupD8.matrixAppendRotationInv(\n _CanvasBatchAdaptor._tempPatternMatrix,\n rotate,\n dx,\n dy,\n dw,\n dh\n );\n contextSystem.setContextTransform(\n _CanvasBatchAdaptor._tempPatternMatrix,\n quad.roundPixels === 1,\n void 0,\n isFromCachedRenderGroup && isRootTarget\n );\n } else {\n contextSystem.setContextTransform(\n quad.transform,\n quad.roundPixels === 1,\n void 0,\n isFromCachedRenderGroup && isRootTarget\n );\n }\n const drawW = dw;\n const drawH = dh;\n let drawX = applyRotateTransform ? 0 : dx;\n let drawY = applyRotateTransform ? 0 : dy;\n if (!applyRotateTransform && quad.roundPixels === 1) {\n drawX |= 0;\n drawY |= 0;\n }\n if (needsRepeat) {\n let patternSource = source;\n const canTint = tint !== 16777215 && !rotate;\n const fitsFrame = frame.width <= texture.source.width && frame.height <= texture.source.height;\n if (canTint && fitsFrame) {\n patternSource = canvasUtils.getTintedCanvas({ texture }, tint);\n }\n const pattern = context.createPattern(patternSource, repeat);\n if (!pattern) continue;\n const denomX = drawW;\n const denomY = drawH;\n if (denomX === 0 || denomY === 0) continue;\n const invDx = 1 / denomX;\n const invDy = 1 / denomY;\n const a = (uvs.x1 - uvs.x0) * invDx;\n const b = (uvs.y1 - uvs.y0) * invDx;\n const c = (uvs.x3 - uvs.x0) * invDy;\n const d = (uvs.y3 - uvs.y0) * invDy;\n const tx = uvs.x0 - a * drawX - c * drawY;\n const ty = uvs.y0 - b * drawX - d * drawY;\n const pixelWidth = texture.source.pixelWidth;\n const pixelHeight = texture.source.pixelHeight;\n _CanvasBatchAdaptor._tempPatternMatrix.set(\n a * pixelWidth,\n b * pixelHeight,\n c * pixelWidth,\n d * pixelHeight,\n tx * pixelWidth,\n ty * pixelHeight\n );\n canvasUtils.applyPatternTransform(pattern, _CanvasBatchAdaptor._tempPatternMatrix);\n context.fillStyle = pattern;\n context.fillRect(drawX, drawY, drawW, drawH);\n } else {\n const needsProcessing = tint !== 16777215 || rotate;\n const processedSource = needsProcessing ? canvasUtils.getTintedCanvas({ texture }, tint) : source;\n const isProcessed = processedSource !== source;\n context.drawImage(\n processedSource,\n isProcessed ? 0 : sx,\n isProcessed ? 0 : sy,\n isProcessed ? processedSource.width : sw,\n isProcessed ? processedSource.height : sh,\n drawX,\n drawY,\n drawW,\n drawH\n );\n }\n }\n }\n};\n_CanvasBatchAdaptor._tempPatternMatrix = new Matrix();\n/** @ignore */\n_CanvasBatchAdaptor.extension = {\n type: [\n ExtensionType.CanvasPipesAdaptor\n ],\n name: \"batch\"\n};\nlet CanvasBatchAdaptor = _CanvasBatchAdaptor;\n\nexport { CanvasBatchAdaptor };\n//# sourceMappingURL=CanvasBatchAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CanvasColorMaskPipe {\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 this._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 this._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 }\n destroy() {\n this._renderer = null;\n this._colorStack = null;\n }\n}\n/** @ignore */\nCanvasColorMaskPipe.extension = {\n type: [\n ExtensionType.CanvasPipes\n ],\n name: \"colorMask\"\n};\n\nexport { CanvasColorMaskPipe };\n//# sourceMappingURL=CanvasColorMaskPipe.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { buildLine } from '../../../scene/graphics/shared/buildCommands/buildLine.mjs';\nimport { Graphics } from '../../../scene/graphics/shared/Graphics.mjs';\nimport { shapeBuilders } from '../../../scene/graphics/shared/utils/buildContextBatches.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction buildRoundedRectPath(context, x, y, width, height, radius) {\n radius = Math.max(0, Math.min(radius, Math.min(width, height) / 2));\n context.moveTo(x + radius, y);\n context.lineTo(x + width - radius, y);\n context.quadraticCurveTo(x + width, y, x + width, y + radius);\n context.lineTo(x + width, y + height - radius);\n context.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n context.lineTo(x + radius, y + height);\n context.quadraticCurveTo(x, y + height, x, y + height - radius);\n context.lineTo(x, y + radius);\n context.quadraticCurveTo(x, y, x + radius, y);\n}\nfunction buildShapePath(context, shape) {\n switch (shape.type) {\n case \"rectangle\": {\n const rect = shape;\n context.rect(rect.x, rect.y, rect.width, rect.height);\n break;\n }\n case \"roundedRectangle\": {\n const rect = shape;\n buildRoundedRectPath(context, rect.x, rect.y, rect.width, rect.height, rect.radius);\n break;\n }\n case \"circle\": {\n const circle = shape;\n context.moveTo(circle.x + circle.radius, circle.y);\n context.arc(circle.x, circle.y, circle.radius, 0, Math.PI * 2);\n break;\n }\n case \"ellipse\": {\n const ellipse = shape;\n if (context.ellipse) {\n context.moveTo(ellipse.x + ellipse.halfWidth, ellipse.y);\n context.ellipse(ellipse.x, ellipse.y, ellipse.halfWidth, ellipse.halfHeight, 0, 0, Math.PI * 2);\n } else {\n context.save();\n context.translate(ellipse.x, ellipse.y);\n context.scale(ellipse.halfWidth, ellipse.halfHeight);\n context.moveTo(1, 0);\n context.arc(0, 0, 1, 0, Math.PI * 2);\n context.restore();\n }\n break;\n }\n case \"triangle\": {\n const tri = shape;\n context.moveTo(tri.x, tri.y);\n context.lineTo(tri.x2, tri.y2);\n context.lineTo(tri.x3, tri.y3);\n context.closePath();\n break;\n }\n case \"polygon\":\n default: {\n const poly = shape;\n const points = poly.points;\n if (!points?.length) break;\n context.moveTo(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2) {\n context.lineTo(points[i], points[i + 1]);\n }\n if (poly.closePath) {\n context.closePath();\n }\n break;\n }\n }\n}\nfunction buildStrokeMaskPath(context, shape, strokeStyle) {\n const points = [];\n const vertices = [];\n const indices = [];\n const shapeBuilder = shapeBuilders[shape.type];\n if (!shapeBuilder?.build(shape, points)) return false;\n const close = shape.closePath ?? true;\n buildLine(points, strokeStyle, false, close, vertices, indices);\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 2;\n const i1 = indices[i + 1] * 2;\n const i2 = indices[i + 2] * 2;\n context.moveTo(vertices[i0], vertices[i0 + 1]);\n context.lineTo(vertices[i1], vertices[i1 + 1]);\n context.lineTo(vertices[i2], vertices[i2 + 1]);\n context.closePath();\n }\n return true;\n}\nfunction addHolePaths(context, holes) {\n if (!holes?.length) return false;\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n if (!hole?.shape) continue;\n const transform = hole.transform;\n const hasTransform = transform && !transform.isIdentity();\n if (hasTransform) {\n context.save();\n context.transform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);\n }\n buildShapePath(context, hole.shape);\n if (hasTransform) {\n context.restore();\n }\n }\n return true;\n}\nclass CanvasStencilMaskPipe {\n constructor(renderer) {\n this._warnedMaskTypes = /* @__PURE__ */ new Set();\n this._canvasMaskStack = [];\n this._renderer = renderer;\n }\n push(mask, _container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"pushMaskBegin\",\n mask,\n inverse: _container._maskOptions.inverse,\n canBundle: false\n });\n }\n pop(_mask, _container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"stencilMask\",\n action: \"popMaskEnd\",\n mask: _mask,\n inverse: _container._maskOptions.inverse,\n canBundle: false\n });\n }\n execute(instruction) {\n if (instruction.action !== \"pushMaskBegin\" && instruction.action !== \"popMaskEnd\") {\n return;\n }\n const canvasRenderer = this._renderer;\n const contextSystem = canvasRenderer.canvasContext;\n const context = contextSystem?.activeContext;\n if (!context) return;\n if (instruction.action === \"popMaskEnd\") {\n const didClip = this._canvasMaskStack.pop();\n if (didClip) {\n context.restore();\n }\n return;\n }\n if (instruction.inverse) {\n this._warnOnce(\n \"inverse\",\n \"CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.\"\n );\n }\n const maskContainer = instruction.mask.mask;\n if (!(maskContainer instanceof Graphics)) {\n this._warnOnce(\n \"nonGraphics\",\n \"CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask.\"\n );\n this._canvasMaskStack.push(false);\n return;\n }\n const graphics = maskContainer;\n const instructions = graphics.context?.instructions;\n if (!instructions?.length) {\n this._canvasMaskStack.push(false);\n return;\n }\n context.save();\n contextSystem.setContextTransform(\n graphics.groupTransform,\n (canvasRenderer._roundPixels | graphics._roundPixels) === 1\n );\n context.beginPath();\n let drewPath = false;\n let hasHoles = false;\n for (let i = 0; i < instructions.length; i++) {\n const instructionData = instructions[i];\n const action = instructionData.action;\n if (action !== \"fill\" && action !== \"stroke\") continue;\n const data = instructionData.data;\n const shapePath = data?.path?.shapePath;\n if (!shapePath?.shapePrimitives?.length) continue;\n const isStroke = action === \"stroke\";\n const shapePrimitives = shapePath.shapePrimitives;\n for (let j = 0; j < shapePrimitives.length; j++) {\n const primitive = shapePrimitives[j];\n if (!primitive?.shape) continue;\n const transform = primitive.transform;\n const hasTransform = transform && !transform.isIdentity();\n if (hasTransform) {\n context.save();\n context.transform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);\n }\n if (isStroke && data.style) {\n drewPath = buildStrokeMaskPath(\n context,\n primitive.shape,\n data.style\n ) || drewPath;\n } else {\n buildShapePath(context, primitive.shape);\n hasHoles = addHolePaths(context, primitive.holes) || hasHoles;\n drewPath = true;\n }\n if (hasTransform) {\n context.restore();\n }\n }\n }\n if (!drewPath) {\n context.restore();\n this._canvasMaskStack.push(false);\n return;\n }\n if (hasHoles) {\n context.clip(\"evenodd\");\n } else {\n context.clip();\n }\n this._canvasMaskStack.push(true);\n }\n destroy() {\n this._renderer = null;\n this._warnedMaskTypes = null;\n this._canvasMaskStack = null;\n }\n _warnOnce(key, message) {\n if (this._warnedMaskTypes.has(key)) return;\n this._warnedMaskTypes.add(key);\n warn(message);\n }\n}\nCanvasStencilMaskPipe.extension = {\n type: [\n ExtensionType.CanvasPipes\n ],\n name: \"stencilMask\"\n};\n\nexport { CanvasStencilMaskPipe };\n//# sourceMappingURL=CanvasStencilMaskPipe.mjs.map\n","import { canUseNewCanvasBlendModes } from './canUseNewCanvasBlendModes.mjs';\n\n\"use strict\";\nconst FALLBACK_BLEND = \"source-over\";\nfunction mapCanvasBlendModesToPixi() {\n const supportsAdvanced = canUseNewCanvasBlendModes();\n const map = /* @__PURE__ */ Object.create(null);\n map.inherit = FALLBACK_BLEND;\n map.none = FALLBACK_BLEND;\n map.normal = \"source-over\";\n map.add = \"lighter\";\n map.multiply = supportsAdvanced ? \"multiply\" : FALLBACK_BLEND;\n map.screen = supportsAdvanced ? \"screen\" : FALLBACK_BLEND;\n map.overlay = supportsAdvanced ? \"overlay\" : FALLBACK_BLEND;\n map.darken = supportsAdvanced ? \"darken\" : FALLBACK_BLEND;\n map.lighten = supportsAdvanced ? \"lighten\" : FALLBACK_BLEND;\n map[\"color-dodge\"] = supportsAdvanced ? \"color-dodge\" : FALLBACK_BLEND;\n map[\"color-burn\"] = supportsAdvanced ? \"color-burn\" : FALLBACK_BLEND;\n map[\"hard-light\"] = supportsAdvanced ? \"hard-light\" : FALLBACK_BLEND;\n map[\"soft-light\"] = supportsAdvanced ? \"soft-light\" : FALLBACK_BLEND;\n map.difference = supportsAdvanced ? \"difference\" : FALLBACK_BLEND;\n map.exclusion = supportsAdvanced ? \"exclusion\" : FALLBACK_BLEND;\n map.saturation = supportsAdvanced ? \"saturation\" : FALLBACK_BLEND;\n map.color = supportsAdvanced ? \"color\" : FALLBACK_BLEND;\n map.luminosity = supportsAdvanced ? \"luminosity\" : FALLBACK_BLEND;\n map[\"linear-burn\"] = supportsAdvanced ? \"color-burn\" : FALLBACK_BLEND;\n map[\"linear-dodge\"] = supportsAdvanced ? \"color-dodge\" : FALLBACK_BLEND;\n map[\"linear-light\"] = supportsAdvanced ? \"hard-light\" : FALLBACK_BLEND;\n map[\"pin-light\"] = supportsAdvanced ? \"hard-light\" : FALLBACK_BLEND;\n map[\"vivid-light\"] = supportsAdvanced ? \"hard-light\" : FALLBACK_BLEND;\n map[\"hard-mix\"] = FALLBACK_BLEND;\n map.negation = supportsAdvanced ? \"difference\" : FALLBACK_BLEND;\n map[\"normal-npm\"] = map.normal;\n map[\"add-npm\"] = map.add;\n map[\"screen-npm\"] = map.screen;\n map.erase = \"destination-out\";\n map.subtract = FALLBACK_BLEND;\n map.divide = FALLBACK_BLEND;\n map.min = FALLBACK_BLEND;\n map.max = FALLBACK_BLEND;\n return map;\n}\n\nexport { mapCanvasBlendModesToPixi };\n//# sourceMappingURL=mapCanvasBlendModesToPixi.mjs.map\n","import { Color } from '../../../color/Color.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { mapCanvasBlendModesToPixi } from './utils/mapCanvasBlendModesToPixi.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nclass CanvasContextSystem {\n /**\n * @param renderer - The owning CanvasRenderer.\n */\n constructor(renderer) {\n /** Resolution of the active context. */\n this.activeResolution = 1;\n /** The image smoothing property to toggle for this browser. */\n this.smoothProperty = \"imageSmoothingEnabled\";\n /** Map of Pixi blend modes to canvas composite operations. */\n this.blendModes = mapCanvasBlendModesToPixi();\n /** Current canvas blend mode. */\n this._activeBlendMode = \"normal\";\n /** Optional projection transform for render targets. */\n this._projTransform = null;\n /** True when external blend mode control is in use. */\n this._outerBlend = false;\n /** Tracks unsupported blend mode warnings to avoid spam. */\n this._warnedBlendModes = /* @__PURE__ */ new Set();\n this._renderer = renderer;\n }\n resolutionChange(resolution) {\n this.activeResolution = resolution;\n }\n /** Initializes the root context and smoothing flag selection. */\n init() {\n const alpha = this._renderer.background.alpha < 1;\n this.rootContext = this._renderer.canvas.getContext(\n \"2d\",\n { alpha }\n );\n this.activeContext = this.rootContext;\n this.activeResolution = this._renderer.resolution;\n if (!this.rootContext.imageSmoothingEnabled) {\n const rc = this.rootContext;\n if (rc.webkitImageSmoothingEnabled) {\n this.smoothProperty = \"webkitImageSmoothingEnabled\";\n } else if (rc.mozImageSmoothingEnabled) {\n this.smoothProperty = \"mozImageSmoothingEnabled\";\n } else if (rc.oImageSmoothingEnabled) {\n this.smoothProperty = \"oImageSmoothingEnabled\";\n } else if (rc.msImageSmoothingEnabled) {\n this.smoothProperty = \"msImageSmoothingEnabled\";\n }\n }\n }\n /**\n * Sets the current transform on the active context.\n * @param transform - Transform to apply.\n * @param roundPixels - Whether to round translation to integers.\n * @param localResolution - Optional local resolution multiplier.\n * @param skipGlobalTransform - If true, skip applying the global world transform matrix.\n */\n setContextTransform(transform, roundPixels, localResolution, skipGlobalTransform) {\n const globalTransform = skipGlobalTransform ? Matrix.IDENTITY : this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix || Matrix.IDENTITY;\n let mat = tempMatrix;\n mat.copyFrom(globalTransform);\n mat.append(transform);\n const proj = this._projTransform;\n const contextResolution = this.activeResolution;\n localResolution = localResolution || contextResolution;\n if (proj) {\n const finalMat = Matrix.shared;\n finalMat.copyFrom(mat);\n finalMat.prepend(proj);\n mat = finalMat;\n }\n if (roundPixels) {\n this.activeContext.setTransform(\n mat.a * localResolution,\n mat.b * localResolution,\n mat.c * localResolution,\n mat.d * localResolution,\n mat.tx * contextResolution | 0,\n mat.ty * contextResolution | 0\n );\n } else {\n this.activeContext.setTransform(\n mat.a * localResolution,\n mat.b * localResolution,\n mat.c * localResolution,\n mat.d * localResolution,\n mat.tx * contextResolution,\n mat.ty * contextResolution\n );\n }\n }\n /**\n * Clears the current render target, optionally filling with a color.\n * @param clearColor - Color to fill after clearing.\n * @param alpha - Alpha override for the clear color.\n */\n clear(clearColor, alpha) {\n const context = this.activeContext;\n const renderer = this._renderer;\n context.clearRect(0, 0, renderer.width, renderer.height);\n if (clearColor) {\n const color = Color.shared.setValue(clearColor);\n context.globalAlpha = alpha ?? color.alpha;\n context.fillStyle = color.toHex();\n context.fillRect(0, 0, renderer.width, renderer.height);\n context.globalAlpha = 1;\n }\n }\n /**\n * Sets the active blend mode.\n * @param blendMode - Pixi blend mode.\n */\n setBlendMode(blendMode) {\n if (this._activeBlendMode === blendMode) return;\n this._activeBlendMode = blendMode;\n this._outerBlend = false;\n const mappedBlend = this.blendModes[blendMode];\n if (!mappedBlend) {\n if (!this._warnedBlendModes.has(blendMode)) {\n console.warn(\n `CanvasRenderer: blend mode \"${blendMode}\" is not supported in Canvas2D; falling back to \"source-over\".`\n );\n this._warnedBlendModes.add(blendMode);\n }\n this.activeContext.globalCompositeOperation = \"source-over\";\n return;\n }\n this.activeContext.globalCompositeOperation = mappedBlend;\n }\n /** Releases context references. */\n destroy() {\n this.rootContext = null;\n this.activeContext = null;\n this._warnedBlendModes.clear();\n }\n}\n/** @ignore */\nCanvasContextSystem.extension = {\n type: [\n ExtensionType.CanvasSystem\n ],\n name: \"canvasContext\"\n};\n\nexport { CanvasContextSystem };\n//# sourceMappingURL=CanvasContextSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass CanvasLimitsSystem {\n constructor() {\n this.maxTextures = 16;\n this.maxBatchableTextures = 16;\n this.maxUniformBindings = 0;\n }\n init() {\n }\n}\n/** @ignore */\nCanvasLimitsSystem.extension = {\n type: [\n ExtensionType.CanvasSystem\n ],\n name: \"limits\"\n};\n\nexport { CanvasLimitsSystem };\n//# sourceMappingURL=CanvasLimitsSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { groupD8 } from '../../../maths/matrix/groupD8.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { canvasUtils } from '../../../rendering/renderers/canvas/utils/canvasUtils.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { bgr2rgb } from '../../container/container-mixins/getGlobalMixin.mjs';\nimport { multiplyHexColors } from '../../container/utils/multiplyHexColors.mjs';\nimport { buildLine } from '../shared/buildCommands/buildLine.mjs';\nimport { FillGradient } from '../shared/fill/FillGradient.mjs';\nimport { FillPattern } from '../shared/fill/FillPattern.mjs';\nimport { shapeBuilders } from '../shared/utils/buildContextBatches.mjs';\nimport { generateTextureMatrix } from '../shared/utils/generateTextureFillMatrix.mjs';\n\n\"use strict\";\nconst emptyCanvasStyle = \"#808080\";\nconst tempMatrix = new Matrix();\nconst tempTextureMatrix = new Matrix();\nconst tempGradientMatrix = new Matrix();\nconst tempPatternMatrix = new Matrix();\nfunction fillTriangles(context, vertices, indices) {\n context.beginPath();\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 2;\n const i1 = indices[i + 1] * 2;\n const i2 = indices[i + 2] * 2;\n context.moveTo(vertices[i0], vertices[i0 + 1]);\n context.lineTo(vertices[i1], vertices[i1 + 1]);\n context.lineTo(vertices[i2], vertices[i2 + 1]);\n context.closePath();\n }\n context.fill();\n}\nfunction colorToHex(color) {\n const clamped = color & 16777215;\n return `#${clamped.toString(16).padStart(6, \"0\")}`;\n}\nfunction buildRoundedRectPath(context, x, y, width, height, radius) {\n radius = Math.max(0, Math.min(radius, Math.min(width, height) / 2));\n context.moveTo(x + radius, y);\n context.lineTo(x + width - radius, y);\n context.quadraticCurveTo(x + width, y, x + width, y + radius);\n context.lineTo(x + width, y + height - radius);\n context.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n context.lineTo(x + radius, y + height);\n context.quadraticCurveTo(x, y + height, x, y + height - radius);\n context.lineTo(x, y + radius);\n context.quadraticCurveTo(x, y, x + radius, y);\n}\nfunction buildShapePath(context, shape) {\n switch (shape.type) {\n case \"rectangle\": {\n const rect = shape;\n context.rect(rect.x, rect.y, rect.width, rect.height);\n break;\n }\n case \"roundedRectangle\": {\n const rect = shape;\n buildRoundedRectPath(context, rect.x, rect.y, rect.width, rect.height, rect.radius);\n break;\n }\n case \"circle\": {\n const circle = shape;\n context.arc(circle.x, circle.y, circle.radius, 0, Math.PI * 2);\n break;\n }\n case \"ellipse\": {\n const ellipse = shape;\n if (context.ellipse) {\n context.ellipse(ellipse.x, ellipse.y, ellipse.halfWidth, ellipse.halfHeight, 0, 0, Math.PI * 2);\n } else {\n context.save();\n context.translate(ellipse.x, ellipse.y);\n context.scale(ellipse.halfWidth, ellipse.halfHeight);\n context.arc(0, 0, 1, 0, Math.PI * 2);\n context.restore();\n }\n break;\n }\n case \"triangle\": {\n const tri = shape;\n context.moveTo(tri.x, tri.y);\n context.lineTo(tri.x2, tri.y2);\n context.lineTo(tri.x3, tri.y3);\n context.closePath();\n break;\n }\n case \"polygon\":\n default: {\n const poly = shape;\n const points = poly.points;\n if (!points?.length) break;\n context.moveTo(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2) {\n context.lineTo(points[i], points[i + 1]);\n }\n if (poly.closePath) {\n context.closePath();\n }\n break;\n }\n }\n}\nfunction addHolePaths(context, holes) {\n if (!holes?.length) return false;\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n if (!hole?.shape) continue;\n const transform = hole.transform;\n const hasTransform = transform && !transform.isIdentity();\n if (hasTransform) {\n context.save();\n context.transform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);\n }\n buildShapePath(context, hole.shape);\n if (hasTransform) {\n context.restore();\n }\n }\n return true;\n}\nfunction getCanvasStyle(style, tint, textureMatrix, currentTransform) {\n const fill = style.fill;\n if (fill instanceof FillGradient) {\n fill.buildGradient();\n const gradientTexture = fill.texture;\n if (gradientTexture) {\n const pattern = canvasUtils.getTintedPattern(gradientTexture, tint);\n const patternMatrix = textureMatrix ? tempPatternMatrix.copyFrom(textureMatrix).scale(gradientTexture.source.pixelWidth, gradientTexture.source.pixelHeight) : tempPatternMatrix.copyFrom(fill.transform);\n if (currentTransform && !style.textureSpace) {\n patternMatrix.append(currentTransform);\n }\n canvasUtils.applyPatternTransform(pattern, patternMatrix);\n return pattern;\n }\n }\n if (fill instanceof FillPattern) {\n const pattern = canvasUtils.getTintedPattern(fill.texture, tint);\n canvasUtils.applyPatternTransform(pattern, fill.transform, false);\n return pattern;\n }\n const texture = style.texture;\n if (texture && texture !== Texture.WHITE) {\n if (!texture.source.resource) {\n return emptyCanvasStyle;\n }\n const pattern = canvasUtils.getTintedPattern(texture, tint);\n const patternMatrix = textureMatrix ? tempPatternMatrix.copyFrom(textureMatrix).scale(texture.source.pixelWidth, texture.source.pixelHeight) : style.matrix;\n canvasUtils.applyPatternTransform(pattern, patternMatrix);\n return pattern;\n }\n return colorToHex(tint);\n}\nclass CanvasGraphicsAdaptor {\n constructor() {\n this.shader = null;\n }\n contextChange(renderer) {\n void renderer;\n }\n execute(graphicsPipe, renderable) {\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.canvasContext;\n const context = contextSystem.activeContext;\n const baseTransform = renderable.groupTransform;\n const globalColor = renderer.globalUniforms.globalUniformData?.worldColor ?? 4294967295;\n const groupColorAlpha = renderable.groupColorAlpha;\n const globalAlpha = (globalColor >>> 24 & 255) / 255;\n const groupAlphaValue = (groupColorAlpha >>> 24 & 255) / 255;\n const filterAlpha = renderer.filter?.alphaMultiplier ?? 1;\n const groupAlpha = globalAlpha * groupAlphaValue * filterAlpha;\n if (groupAlpha <= 0) return;\n const globalTint = globalColor & 16777215;\n const groupTintBGR = groupColorAlpha & 16777215;\n const groupTint = bgr2rgb(multiplyHexColors(groupTintBGR, globalTint));\n const roundPixels = renderer._roundPixels | renderable._roundPixels;\n context.save();\n contextSystem.setContextTransform(baseTransform, roundPixels === 1);\n contextSystem.setBlendMode(renderable.groupBlendMode);\n const instructions = renderable.context.instructions;\n for (let i = 0; i < instructions.length; i++) {\n const instruction = instructions[i];\n if (instruction.action === \"texture\") {\n const data2 = instruction.data;\n const texture = data2.image;\n const source = texture ? canvasUtils.getCanvasSource(texture) : null;\n if (!source) continue;\n const alpha2 = data2.alpha * groupAlpha;\n if (alpha2 <= 0) continue;\n const tint2 = multiplyHexColors(data2.style, groupTint);\n context.globalAlpha = alpha2;\n let drawSource = source;\n if (tint2 !== 16777215) {\n drawSource = canvasUtils.getTintedCanvas({ texture }, tint2);\n }\n const frame = texture.frame;\n const resolution = texture.source._resolution ?? texture.source.resolution ?? 1;\n let sx = frame.x * resolution;\n let sy = frame.y * resolution;\n const sw = frame.width * resolution;\n const sh = frame.height * resolution;\n if (drawSource !== source) {\n sx = 0;\n sy = 0;\n }\n const transform = data2.transform;\n const hasTransform = transform && !transform.isIdentity();\n const rotate = texture.rotate;\n if (hasTransform || rotate) {\n tempMatrix.copyFrom(baseTransform);\n if (hasTransform) {\n tempMatrix.append(transform);\n }\n if (rotate) {\n groupD8.matrixAppendRotationInv(tempMatrix, rotate, data2.dx, data2.dy, data2.dw, data2.dh);\n }\n contextSystem.setContextTransform(tempMatrix, roundPixels === 1);\n } else {\n contextSystem.setContextTransform(baseTransform, roundPixels === 1);\n }\n context.drawImage(\n drawSource,\n sx,\n sy,\n drawSource === source ? sw : drawSource.width,\n drawSource === source ? sh : drawSource.height,\n rotate ? 0 : data2.dx,\n rotate ? 0 : data2.dy,\n data2.dw,\n data2.dh\n );\n if (hasTransform || rotate) {\n contextSystem.setContextTransform(baseTransform, roundPixels === 1);\n }\n continue;\n }\n const data = instruction.data;\n const shapePath = data?.path?.shapePath;\n if (!shapePath?.shapePrimitives?.length) continue;\n const style = data.style;\n const tint = multiplyHexColors(style.color, groupTint);\n const alpha = style.alpha * groupAlpha;\n if (alpha <= 0) continue;\n const isStroke = instruction.action === \"stroke\";\n context.globalAlpha = alpha;\n if (isStroke) {\n const strokeStyle = style;\n context.lineWidth = strokeStyle.width;\n context.lineCap = strokeStyle.cap;\n context.lineJoin = strokeStyle.join;\n context.miterLimit = strokeStyle.miterLimit;\n }\n const shapePrimitives = shapePath.shapePrimitives;\n if (!isStroke && data.hole?.shapePath?.shapePrimitives?.length) {\n const lastShape = shapePrimitives[shapePrimitives.length - 1];\n lastShape.holes = data.hole.shapePath.shapePrimitives;\n }\n for (let j = 0; j < shapePrimitives.length; j++) {\n const primitive = shapePrimitives[j];\n if (!primitive?.shape) continue;\n const transform = primitive.transform;\n const hasTransform = transform && !transform.isIdentity();\n const hasTexture = style.texture && style.texture !== Texture.WHITE;\n const textureTransform = style.textureSpace === \"global\" ? transform : null;\n const textureMatrix = hasTexture ? generateTextureMatrix(tempTextureMatrix, style, primitive.shape, textureTransform) : null;\n const currentTransform = hasTransform ? tempGradientMatrix.copyFrom(baseTransform).append(transform) : baseTransform;\n const canvasStyle = getCanvasStyle(\n style,\n tint,\n textureMatrix,\n currentTransform\n );\n if (hasTransform) {\n context.save();\n context.transform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);\n }\n if (isStroke) {\n const strokeStyle = style;\n const useStrokeGeometry = strokeStyle.alignment !== 0.5 && !strokeStyle.pixelLine;\n if (useStrokeGeometry) {\n const points = [];\n const vertices = [];\n const indices = [];\n const shapeBuilder = shapeBuilders[primitive.shape.type];\n if (shapeBuilder?.build(primitive.shape, points)) {\n const close = primitive.shape.closePath ?? true;\n buildLine(points, strokeStyle, false, close, vertices, indices);\n context.fillStyle = canvasStyle;\n fillTriangles(context, vertices, indices);\n } else {\n context.strokeStyle = canvasStyle;\n context.beginPath();\n buildShapePath(context, primitive.shape);\n context.stroke();\n }\n } else {\n context.strokeStyle = canvasStyle;\n context.beginPath();\n buildShapePath(context, primitive.shape);\n context.stroke();\n }\n } else {\n context.fillStyle = canvasStyle;\n context.beginPath();\n buildShapePath(context, primitive.shape);\n const hasHoles = addHolePaths(context, primitive.holes);\n if (hasHoles) {\n context.fill(\"evenodd\");\n } else {\n context.fill();\n }\n }\n if (hasTransform) {\n context.restore();\n }\n }\n }\n context.restore();\n }\n destroy() {\n this.shader = null;\n }\n}\n/** @ignore */\nCanvasGraphicsAdaptor.extension = {\n type: [\n ExtensionType.CanvasPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { CanvasGraphicsAdaptor };\n//# sourceMappingURL=CanvasGraphicsAdaptor.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\n\n\"use strict\";\nclass CanvasRenderTargetAdaptor {\n /**\n * Initializes the adaptor.\n * @param renderer - Canvas renderer instance.\n * @param renderTargetSystem - The render target system.\n * @advanced\n */\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n /**\n * Creates a GPU render target for canvas.\n * @param renderTarget - Render target to initialize.\n * @advanced\n */\n initGpuRenderTarget(renderTarget) {\n const colorTexture = renderTarget.colorTexture;\n const { canvas, context } = this._ensureCanvas(colorTexture);\n return {\n canvas,\n context,\n width: canvas.width,\n height: canvas.height\n };\n }\n /**\n * Resizes the backing canvas for a render target.\n * @param renderTarget - Render target to resize.\n * @advanced\n */\n resizeGpuRenderTarget(renderTarget) {\n const colorTexture = renderTarget.colorTexture;\n const { canvas } = this._ensureCanvas(colorTexture);\n canvas.width = renderTarget.pixelWidth;\n canvas.height = renderTarget.pixelHeight;\n }\n /**\n * Starts a render pass on the canvas target.\n * @param renderTarget - Target to render to.\n * @param clear - Clear mode.\n * @param clearColor - Optional clear color.\n * @param viewport - Optional viewport.\n * @advanced\n */\n startRenderPass(renderTarget, clear, clearColor, viewport) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n this._renderer.canvasContext.activeContext = gpuRenderTarget.context;\n this._renderer.canvasContext.activeResolution = renderTarget.resolution;\n if (clear) {\n this.clear(renderTarget, clear, clearColor, viewport);\n }\n }\n /**\n * Clears the render target.\n * @param renderTarget - Target to clear.\n * @param _clear - Clear mode (unused).\n * @param clearColor - Optional clear color.\n * @param viewport - Optional viewport rectangle.\n * @advanced\n */\n clear(renderTarget, _clear, clearColor, viewport) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n const context = gpuRenderTarget.context;\n const bounds = viewport || { x: 0, y: 0, width: renderTarget.pixelWidth, height: renderTarget.pixelHeight };\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.clearRect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (clearColor) {\n const color = Color.shared.setValue(clearColor);\n if (color.alpha > 0) {\n context.globalAlpha = color.alpha;\n context.fillStyle = color.toHex();\n context.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);\n context.globalAlpha = 1;\n }\n }\n }\n /**\n * Finishes the render pass (no-op for canvas).\n * @advanced\n */\n finishRenderPass() {\n }\n /**\n * Copies a render target into a texture source.\n * @param {RenderTarget} sourceRenderSurfaceTexture - Source render target.\n * @param {Texture} destinationTexture - Destination texture.\n * @param {object} originSrc - Source origin.\n * @param {number} originSrc.x - Source x origin.\n * @param {number} originSrc.y - Source y origin.\n * @param {object} size - Copy size.\n * @param {number} size.width - Copy width.\n * @param {number} size.height - Copy height.\n * @param {object} [originDest] - Destination origin.\n * @param {number} originDest.x - Destination x origin.\n * @param {number} originDest.y - Destination y origin.\n * @advanced\n */\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const sourceGpuTarget = this._renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const sourceCanvas = sourceGpuTarget.canvas;\n const destSource = destinationTexture.source;\n const { context } = this._ensureCanvas(destSource);\n const dx = originDest?.x ?? 0;\n const dy = originDest?.y ?? 0;\n context.drawImage(\n sourceCanvas,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height,\n dx,\n dy,\n size.width,\n size.height\n );\n destSource.update();\n return destinationTexture;\n }\n /**\n * Destroys a GPU render target (no-op for canvas).\n * @param _gpuRenderTarget - Target to destroy.\n * @advanced\n */\n destroyGpuRenderTarget(_gpuRenderTarget) {\n }\n _ensureCanvas(source) {\n let canvas = source.resource;\n if (!canvas || !CanvasSource.test(canvas)) {\n canvas = DOMAdapter.get().createCanvas(source.pixelWidth, source.pixelHeight);\n source.resource = canvas;\n }\n if (canvas.width !== source.pixelWidth || canvas.height !== source.pixelHeight) {\n canvas.width = source.pixelWidth;\n canvas.height = source.pixelHeight;\n }\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n}\n\nexport { CanvasRenderTargetAdaptor };\n//# sourceMappingURL=CanvasRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { CanvasRenderTargetAdaptor } from './CanvasRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass CanvasRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new CanvasRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nCanvasRenderTargetSystem.extension = {\n type: [ExtensionType.CanvasSystem],\n name: \"renderTarget\"\n};\n\nexport { CanvasRenderTargetSystem };\n//# sourceMappingURL=CanvasRenderTargetSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { canvasUtils } from '../utils/canvasUtils.mjs';\n\n\"use strict\";\nclass CanvasTextureSystem {\n /**\n * @param renderer - The owning CanvasRenderer.\n */\n constructor(renderer) {\n void renderer;\n }\n /** Initializes the system (no-op for canvas). */\n init() {\n }\n /**\n * Initializes a texture source (no-op for canvas).\n * @param _source - Texture source.\n */\n initSource(_source) {\n }\n /**\n * Creates a canvas containing the texture's frame.\n * @param texture - Texture to render.\n */\n generateCanvas(texture) {\n const canvas = DOMAdapter.get().createCanvas();\n const context = canvas.getContext(\"2d\");\n const source = canvasUtils.getCanvasSource(texture);\n if (!source) {\n return canvas;\n }\n const frame = texture.frame;\n const resolution = texture.source._resolution ?? texture.source.resolution ?? 1;\n const sx = frame.x * resolution;\n const sy = frame.y * resolution;\n const sw = frame.width * resolution;\n const sh = frame.height * resolution;\n canvas.width = Math.ceil(sw);\n canvas.height = Math.ceil(sh);\n context.drawImage(\n source,\n sx,\n sy,\n sw,\n sh,\n 0,\n 0,\n sw,\n sh\n );\n return canvas;\n }\n /**\n * Reads pixel data from a texture.\n * @param texture - Texture to read.\n */\n getPixels(texture) {\n const canvas = this.generateCanvas(texture);\n const context = canvas.getContext(\"2d\", { willReadFrequently: true });\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n return {\n pixels: imageData.data,\n width: canvas.width,\n height: canvas.height\n };\n }\n /** Destroys the system (no-op for canvas). */\n destroy() {\n }\n}\n/** @ignore */\nCanvasTextureSystem.extension = {\n type: [\n ExtensionType.CanvasSystem\n ],\n name: \"texture\"\n};\n\nexport { CanvasTextureSystem };\n//# sourceMappingURL=CanvasTextureSystem.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { CustomRenderPipe } from '../../../scene/container/CustomRenderPipe.mjs';\nimport { RenderGroupPipe } from '../../../scene/container/RenderGroupPipe.mjs';\nimport { CanvasGraphicsAdaptor } from '../../../scene/graphics/canvas/CanvasGraphicsAdaptor.mjs';\nimport { SpritePipe } from '../../../scene/sprite/SpritePipe.mjs';\nimport { CanvasBatchAdaptor } from '../../batcher/canvas/CanvasBatchAdaptor.mjs';\nimport { BatcherPipe } from '../../batcher/shared/BatcherPipe.mjs';\nimport { AlphaMaskPipe } from '../../mask/alpha/AlphaMaskPipe.mjs';\nimport { CanvasColorMaskPipe } from '../../mask/color/CanvasColorMaskPipe.mjs';\nimport { CanvasStencilMaskPipe } from '../../mask/stencil/CanvasStencilMaskPipe.mjs';\nimport { BlendModePipe } from '../shared/blendModes/BlendModePipe.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { CanvasContextSystem } from './CanvasContextSystem.mjs';\nimport { CanvasLimitsSystem } from './CanvasLimitsSystem.mjs';\nimport { CanvasRenderTargetSystem } from './renderTarget/CanvasRenderTargetSystem.mjs';\nimport { CanvasTextureSystem } from './texture/CanvasTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultCanvasSystems = [\n ...SharedSystems,\n CanvasContextSystem,\n CanvasLimitsSystem,\n CanvasTextureSystem,\n CanvasRenderTargetSystem\n];\nconst DefaultCanvasPipes = [\n BlendModePipe,\n BatcherPipe,\n SpritePipe,\n RenderGroupPipe,\n AlphaMaskPipe,\n CanvasStencilMaskPipe,\n CanvasColorMaskPipe,\n CustomRenderPipe\n];\nconst DefaultCanvasAdapters = [\n CanvasBatchAdaptor,\n CanvasGraphicsAdaptor\n];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.CanvasSystem, systems);\nextensions.handleByNamedList(ExtensionType.CanvasPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.CanvasPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultCanvasSystems, ...DefaultCanvasPipes, ...DefaultCanvasAdapters);\nclass CanvasRenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"canvas\",\n type: RendererType.CANVAS,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { CanvasRenderer };\n//# sourceMappingURL=CanvasRenderer.mjs.map\n"],"names":["_CanvasBatchAdaptor","addressModeU","addressModeV","repeatU","repeatV","batchPipe","geometry","shader","batch","elements","renderer","contextSystem","context","i","element","quad","texture","source","canvasUtils","textureStyle","smoothProperty","shouldSmooth","globalColor","_a","argb","globalAlpha","quadAlpha","filterAlpha","_b","alpha","globalTint","quadTint","tint","bgr2rgb","multiplyHexColors","frame","repeat","resolution","isFromCachedRenderGroup","_d","_c","sx","sy","sw","sh","bounds","isRootTarget","dx","dy","dw","dh","rotate","uvs","uvMin","uvMax","needsRepeat","applyRotateTransform","groupD8","drawW","drawH","drawX","drawY","patternSource","canTint","fitsFrame","pattern","denomX","denomY","invDx","invDy","a","b","c","d","tx","ty","pixelWidth","pixelHeight","processedSource","isProcessed","Matrix","ExtensionType","CanvasBatchAdaptor","CanvasColorMaskPipe","mask","_container","instructionSet","colorStack","currentColor","_mask","_instruction","buildRoundedRectPath","x","y","width","height","radius","buildShapePath","shape","rect","circle","ellipse","tri","poly","points","buildStrokeMaskPath","strokeStyle","vertices","indices","shapeBuilder","shapeBuilders","close","buildLine","i0","i1","i2","addHolePaths","holes","hole","transform","hasTransform","CanvasStencilMaskPipe","instruction","canvasRenderer","maskContainer","Graphics","graphics","instructions","drewPath","hasHoles","instructionData","action","data","shapePath","isStroke","shapePrimitives","j","primitive","key","message","warn","FALLBACK_BLEND","mapCanvasBlendModesToPixi","supportsAdvanced","canUseNewCanvasBlendModes","map","tempMatrix","CanvasContextSystem","rc","roundPixels","localResolution","skipGlobalTransform","globalTransform","mat","proj","contextResolution","finalMat","clearColor","color","Color","blendMode","mappedBlend","CanvasLimitsSystem","emptyCanvasStyle","tempTextureMatrix","tempGradientMatrix","tempPatternMatrix","fillTriangles","colorToHex","getCanvasStyle","style","textureMatrix","currentTransform","fill","FillGradient","gradientTexture","patternMatrix","FillPattern","Texture","CanvasGraphicsAdaptor","graphicsPipe","renderable","baseTransform","groupColorAlpha","groupAlphaValue","groupAlpha","groupTintBGR","groupTint","data2","alpha2","tint2","drawSource","_g","_f","_e","lastShape","hasTexture","textureTransform","generateTextureMatrix","canvasStyle","CanvasRenderTargetAdaptor","renderTargetSystem","renderTarget","colorTexture","canvas","clear","viewport","gpuRenderTarget","_clear","sourceRenderSurfaceTexture","destinationTexture","originSrc","size","originDest","sourceCanvas","destSource","_gpuRenderTarget","CanvasSource","DOMAdapter","CanvasRenderTargetSystem","RenderTargetSystem","CanvasTextureSystem","_source","DefaultCanvasSystems","SharedSystems","DefaultCanvasPipes","BlendModePipe","BatcherPipe","SpritePipe","RenderGroupPipe","AlphaMaskPipe","CustomRenderPipe","DefaultCanvasAdapters","systems","renderPipes","renderPipeAdaptors","extensions","CanvasRenderer","AbstractRenderer","systemConfig","RendererType"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}
@@ -0,0 +1,2 @@
1
+ import{S as n,a as u,G as o,b as f}from"./index-QopGLZI_.js";const s=class i extends n{constructor(e){e={...i.defaultOptions,...e},super(e),this.enabled=!0,this._state=u.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.clipToViewport=e.clipToViewport,this.addResource("uTexture",0,1),e.blendRequired&&this.addResource("uBackTexture",0,3)}apply(e,t,a,r){e.applyFilter(this,t,a,r)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:a,...r}=e;let l,d;return t&&(l=o.from(t)),a&&(d=f.from(a)),new i({gpuProgram:l,glProgram:d,...r})}};s.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let b=s;export{b as F};
2
+ //# sourceMappingURL=Filter-DBNO82oR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter-DBNO82oR.js","sources":["../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/filters/Filter.mjs"],"sourcesContent":["import { GlProgram } from '../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { Shader } from '../rendering/renderers/shared/shader/Shader.mjs';\nimport { State } from '../rendering/renderers/shared/state/State.mjs';\n\n\"use strict\";\nconst _Filter = class _Filter extends Shader {\n /**\n * @param options - The optional parameters of this filter.\n */\n constructor(options) {\n options = { ..._Filter.defaultOptions, ...options };\n super(options);\n /** If enabled is true the filter is applied, if false it will not. */\n this.enabled = true;\n /**\n * The gpu state the filter requires to render.\n * @internal\n */\n this._state = State.for2d();\n this.blendMode = options.blendMode;\n this.padding = options.padding;\n if (typeof options.antialias === \"boolean\") {\n this.antialias = options.antialias ? \"on\" : \"off\";\n } else {\n this.antialias = options.antialias;\n }\n this.resolution = options.resolution;\n this.blendRequired = options.blendRequired;\n this.clipToViewport = options.clipToViewport;\n this.addResource(\"uTexture\", 0, 1);\n if (options.blendRequired) {\n this.addResource(\"uBackTexture\", 0, 3);\n }\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n apply(filterManager, input, output, clearMode) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Get the blend mode of the filter.\n * @default \"normal\"\n */\n get blendMode() {\n return this._state.blendMode;\n }\n /** Sets the blend mode of the filter. */\n set blendMode(value) {\n this._state.blendMode = value;\n }\n /**\n * A short hand function to create a filter based of a vertex and fragment shader src.\n * @param options\n * @returns A shiny new PixiJS filter!\n */\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new _Filter({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n};\n/** The default filter settings */\n_Filter.defaultOptions = {\n blendMode: \"normal\",\n resolution: 1,\n padding: 0,\n antialias: \"off\",\n blendRequired: false,\n clipToViewport: true\n};\nlet Filter = _Filter;\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n"],"names":["_Filter","Shader","options","State","filterManager","input","output","clearMode","value","gpu","gl","rest","gpuProgram","glProgram","GpuProgram","GlProgram","Filter"],"mappings":"6DAMA,MAAMA,EAAU,MAAMA,UAAgBC,CAAO,CAI3C,YAAYC,EAAS,CACnBA,EAAU,CAAE,GAAGF,EAAQ,eAAgB,GAAGE,CAAO,EACjD,MAAMA,CAAO,EAEb,KAAK,QAAU,GAKf,KAAK,OAASC,EAAM,MAAK,EACzB,KAAK,UAAYD,EAAQ,UACzB,KAAK,QAAUA,EAAQ,QACnB,OAAOA,EAAQ,WAAc,UAC/B,KAAK,UAAYA,EAAQ,UAAY,KAAO,MAE5C,KAAK,UAAYA,EAAQ,UAE3B,KAAK,WAAaA,EAAQ,WAC1B,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,eAAiBA,EAAQ,eAC9B,KAAK,YAAY,WAAY,EAAG,CAAC,EAC7BA,EAAQ,eACV,KAAK,YAAY,eAAgB,EAAG,CAAC,CAEzC,CAQA,MAAME,EAAeC,EAAOC,EAAQC,EAAW,CAC7CH,EAAc,YAAY,KAAMC,EAAOC,EAAQC,CAAS,CAC1D,CAKA,IAAI,WAAY,CACd,OAAO,KAAK,OAAO,SACrB,CAEA,IAAI,UAAUC,EAAO,CACnB,KAAK,OAAO,UAAYA,CAC1B,CAMA,OAAO,KAAKN,EAAS,CACnB,KAAM,CAAE,IAAAO,EAAK,GAAAC,EAAI,GAAGC,CAAI,EAAKT,EAC7B,IAAIU,EACAC,EACJ,OAAIJ,IACFG,EAAaE,EAAW,KAAKL,CAAG,GAE9BC,IACFG,EAAYE,EAAU,KAAKL,CAAE,GAExB,IAAIV,EAAQ,CACjB,WAAAY,EACA,UAAAC,EACA,GAAGF,CACT,CAAK,CACH,CACF,EAEAX,EAAQ,eAAiB,CACvB,UAAW,SACX,WAAY,EACZ,QAAS,EACT,UAAW,MACX,cAAe,GACf,eAAgB,EAClB,EACG,IAACgB,EAAShB","x_google_ignoreList":[0]}
@@ -0,0 +1,185 @@
1
+ import{Y as Ve,N as oe,M as m,G as Ne,b as je,a as $e,Z as le,j as l,r as W,_ as w,$ as qe,a0 as z,a1 as T,R as V,a2 as de,a3 as Ke,T as p,c as g,K as D,a4 as ue,w as ce,a5 as ee,a6 as he,a7 as fe,a8 as pe,a9 as me,x as P,aa as Ye,C as E,D as N,L as y,ab as B,ac as Je,P as Xe,ad as Ze,I as Qe,t as te,ae as re,af as f,e as et,q as O,ag as tt,ah as rt,ai as st,aj as nt}from"./index-QopGLZI_.js";import{F as at}from"./Filter-DBNO82oR.js";var it=`in vec2 vMaskCoord;
2
+ in vec2 vTextureCoord;
3
+
4
+ uniform sampler2D uTexture;
5
+ uniform sampler2D uMaskTexture;
6
+
7
+ uniform float uAlpha;
8
+ uniform vec4 uMaskClamp;
9
+ uniform float uInverse;
10
+ uniform float uChannel;
11
+
12
+ out vec4 finalColor;
13
+
14
+ void main(void)
15
+ {
16
+ float clip = step(3.5,
17
+ step(uMaskClamp.x, vMaskCoord.x) +
18
+ step(uMaskClamp.y, vMaskCoord.y) +
19
+ step(vMaskCoord.x, uMaskClamp.z) +
20
+ step(vMaskCoord.y, uMaskClamp.w));
21
+
22
+ // TODO look into why this is needed
23
+ float npmAlpha = uAlpha;
24
+ vec4 original = texture(uTexture, vTextureCoord);
25
+ vec4 masky = texture(uMaskTexture, vMaskCoord);
26
+
27
+ float a;
28
+ if (uChannel == 1.0) {
29
+ a = masky.a * npmAlpha * clip;
30
+ } else {
31
+ float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);
32
+ a = alphaMul * masky.r * npmAlpha * clip;
33
+ }
34
+
35
+ if (uInverse == 1.0) {
36
+ a = 1.0 - a;
37
+ }
38
+
39
+ finalColor = original * a;
40
+ }
41
+ `,ot=`in vec2 aPosition;
42
+
43
+ out vec2 vTextureCoord;
44
+ out vec2 vMaskCoord;
45
+
46
+
47
+ uniform vec4 uInputSize;
48
+ uniform vec4 uOutputFrame;
49
+ uniform vec4 uOutputTexture;
50
+ uniform mat3 uFilterMatrix;
51
+
52
+ vec4 filterVertexPosition( vec2 aPosition )
53
+ {
54
+ vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
55
+
56
+ position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
57
+ position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
58
+
59
+ return vec4(position, 0.0, 1.0);
60
+ }
61
+
62
+ vec2 filterTextureCoord( vec2 aPosition )
63
+ {
64
+ return aPosition * (uOutputFrame.zw * uInputSize.zw);
65
+ }
66
+
67
+ vec2 getFilterCoord( vec2 aPosition )
68
+ {
69
+ return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
70
+ }
71
+
72
+ void main(void)
73
+ {
74
+ gl_Position = filterVertexPosition(aPosition);
75
+ vTextureCoord = filterTextureCoord(aPosition);
76
+ vMaskCoord = getFilterCoord(aPosition);
77
+ }
78
+ `,se=`struct GlobalFilterUniforms {
79
+ uInputSize:vec4<f32>,
80
+ uInputPixel:vec4<f32>,
81
+ uInputClamp:vec4<f32>,
82
+ uOutputFrame:vec4<f32>,
83
+ uGlobalFrame:vec4<f32>,
84
+ uOutputTexture:vec4<f32>,
85
+ };
86
+
87
+ struct MaskUniforms {
88
+ uFilterMatrix:mat3x3<f32>,
89
+ uMaskClamp:vec4<f32>,
90
+ uAlpha:f32,
91
+ uInverse:f32,
92
+ uChannel:f32,
93
+ };
94
+
95
+ @group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
96
+ @group(0) @binding(1) var uTexture: texture_2d<f32>;
97
+ @group(0) @binding(2) var uSampler : sampler;
98
+
99
+ @group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;
100
+ @group(1) @binding(1) var uMaskTexture: texture_2d<f32>;
101
+
102
+ struct VSOutput {
103
+ @builtin(position) position: vec4<f32>,
104
+ @location(0) uv : vec2<f32>,
105
+ @location(1) filterUv : vec2<f32>,
106
+ };
107
+
108
+ fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
109
+ {
110
+ var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
111
+
112
+ position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
113
+ position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
114
+
115
+ return vec4(position, 0.0, 1.0);
116
+ }
117
+
118
+ fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
119
+ {
120
+ return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
121
+ }
122
+
123
+ fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
124
+ {
125
+ return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
126
+ }
127
+
128
+ fn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>
129
+ {
130
+ return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
131
+ }
132
+
133
+ fn getSize() -> vec2<f32>
134
+ {
135
+ return gfu.uGlobalFrame.zw;
136
+ }
137
+
138
+ @vertex
139
+ fn mainVertex(
140
+ @location(0) aPosition : vec2<f32>,
141
+ ) -> VSOutput {
142
+ return VSOutput(
143
+ filterVertexPosition(aPosition),
144
+ filterTextureCoord(aPosition),
145
+ getFilterCoord(aPosition)
146
+ );
147
+ }
148
+
149
+ @fragment
150
+ fn mainFragment(
151
+ @location(0) uv: vec2<f32>,
152
+ @location(1) filterUv: vec2<f32>,
153
+ @builtin(position) position: vec4<f32>
154
+ ) -> @location(0) vec4<f32> {
155
+
156
+ var maskClamp = filterUniforms.uMaskClamp;
157
+ var uAlpha = filterUniforms.uAlpha;
158
+
159
+ var clip = step(3.5,
160
+ step(maskClamp.x, filterUv.x) +
161
+ step(maskClamp.y, filterUv.y) +
162
+ step(filterUv.x, maskClamp.z) +
163
+ step(filterUv.y, maskClamp.w));
164
+
165
+ var mask = textureSample(uMaskTexture, uSampler, filterUv);
166
+ var source = textureSample(uTexture, uSampler, uv);
167
+
168
+ var a: f32;
169
+ if (filterUniforms.uChannel == 1.0) {
170
+ a = mask.a * uAlpha * clip;
171
+ } else {
172
+ var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);
173
+ a = alphaMul * mask.r * uAlpha * clip;
174
+ }
175
+
176
+ if (filterUniforms.uInverse == 1.0) {
177
+ a = 1.0 - a;
178
+ }
179
+
180
+ return source * a;
181
+ }
182
+ `;class lt extends at{constructor(e){const{sprite:t,...r}=e,s=new Ve(t.texture),n=new oe({uFilterMatrix:{value:new m,type:"mat3x3<f32>"},uMaskClamp:{value:s.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"},uInverse:{value:e.inverse?1:0,type:"f32"},uChannel:{value:e.channel==="alpha"?1:0,type:"f32"}}),i=Ne.from({vertex:{source:se,entryPoint:"mainVertex"},fragment:{source:se,entryPoint:"mainFragment"}}),o=je.from({vertex:ot,fragment:it,name:"mask-filter"});super({...r,gpuProgram:i,glProgram:o,clipToViewport:!1,resources:{filterUniforms:n,uMaskTexture:t.texture.source}}),this.sprite=t,this._textureMatrix=s}set inverse(e){this.resources.filterUniforms.uniforms.uInverse=e?1:0}get inverse(){return this.resources.filterUniforms.uniforms.uInverse===1}set channel(e){this.resources.filterUniforms.uniforms.uChannel=e==="alpha"?1:0}get channel(){return this.resources.filterUniforms.uniforms.uChannel===1?"alpha":"red"}apply(e,t,r,s){this._textureMatrix.texture=this.sprite.texture,e.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,e.applyFilter(this,t,r,s)}}const j=class ge{constructor(e,t){var r,s;this.state=$e.for2d(),this._batchersByInstructionSet=Object.create(null),this._activeBatches=Object.create(null),this.renderer=e,this._adaptor=t,(s=(r=this._adaptor).init)==null||s.call(r,this)}static getBatcher(e,t){return new this._availableBatchers[e]({maxTextures:t})}buildStart(e){let t=this._batchersByInstructionSet[e.uid];t||(t=this._batchersByInstructionSet[e.uid]=Object.create(null),t.default||(t.default=new le({maxTextures:this.renderer.limits.maxBatchableTextures}))),this._activeBatches=t,this._activeBatch=this._activeBatches.default;for(const r in this._activeBatches)this._activeBatches[r].begin()}addToBatch(e,t){if(this._activeBatch.name!==e.batcherName){this._activeBatch.break(t);let r=this._activeBatches[e.batcherName];r||(r=this._activeBatches[e.batcherName]=ge.getBatcher(e.batcherName,this.renderer.limits.maxBatchableTextures),r.begin()),this._activeBatch=r}this._activeBatch.add(e)}break(e){this._activeBatch.break(e)}buildEnd(e){this._activeBatch.break(e);const t=this._activeBatches;for(const r in t){const s=t[r],n=s.geometry;n.indexBuffer.setDataWithSize(s.indexBuffer,s.indexSize,!0),n.buffers[0].setDataWithSize(s.attributeBuffer.float32View,s.attributeSize,!1)}}upload(e){const t=this._batchersByInstructionSet[e.uid];for(const r in t){const s=t[r],n=s.geometry;s.dirty&&(s.dirty=!1,n.buffers[0].update(s.attributeSize*4))}}execute(e){if(e.action==="startBatch"){const t=e.batcher,r=t.geometry,s=t.shader;this._adaptor.start(this,r,s)}this._adaptor.execute(this,e)}destroy(){this.state=null,this.renderer=null,this._adaptor=null;for(const e in this._activeBatches)this._activeBatches[e].destroy();this._activeBatches=null}};j.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"batch"};j._availableBatchers=Object.create(null);let _e=j;W.handleByMap(l.Batcher,_e._availableBatchers);W.add(le);const dt=new z;class ut extends de{constructor(){super(),this.filters=[new lt({sprite:new Ke(p.EMPTY),inverse:!1,resolution:"inherit",antialias:"inherit"})]}get sprite(){return this.filters[0].sprite}set sprite(e){this.filters[0].sprite=e}get inverse(){return this.filters[0].inverse}set inverse(e){this.filters[0].inverse=e}get channel(){return this.filters[0].channel}set channel(e){this.filters[0].channel=e}}class xe{constructor(e){this._activeMaskStage=[],this._renderer=e}push(e,t,r){const s=this._renderer;if(s.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1,maskedContainer:t}),e.inverse=t._maskOptions.inverse,e.channel=t._maskOptions.channel??"red",e.renderMaskToTexture){const n=e.mask;n.includeInBuild=!0,n.collectRenderables(r,s,null),n.includeInBuild=!1}s.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:e,maskedContainer:t,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){const t=this._renderer,r=e.mask.renderMaskToTexture;if(e.action==="pushMaskBegin"){const s=w.get(ut);if(s.inverse=e.inverse,s.channel=e.mask.channel,r){e.mask.mask.measurable=!0;const n=qe(e.mask.mask,!0,dt);e.mask.mask.measurable=!1,n.ceil();const i=t.renderTarget.renderTarget.colorTexture.source,o=T.getOptimalTexture(n.width,n.height,i._resolution,i.antialias);t.renderTarget.push(o,!0),t.globalUniforms.push({offset:n,worldColor:4294967295});const d=s.sprite;d.texture=o,d.worldTransform.tx=n.minX,d.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:s,maskedContainer:e.maskedContainer,filterTexture:o})}else s.sprite=e.mask.mask,this._activeMaskStage.push({filterEffect:s,maskedContainer:e.maskedContainer})}else if(e.action==="pushMaskEnd"){const s=this._activeMaskStage[this._activeMaskStage.length-1];r&&(t.type===V.WEBGL&&t.renderTarget.finishRenderPass(),t.renderTarget.pop(),t.globalUniforms.pop()),t.filter.push({renderPipeId:"filter",action:"pushFilter",container:s.maskedContainer,filterEffect:s.filterEffect,canBundle:!1})}else if(e.action==="popMaskEnd"){t.filter.pop();const s=this._activeMaskStage.pop();r&&T.returnTexture(s.filterTexture),w.return(s.filterEffect)}}destroy(){this._renderer=null,this._activeMaskStage=null}}xe.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"alphaMask"};class be{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,r){this._renderer.renderPipes.batch.break(r);const n=this._colorStack;n[this._colorStackIndex]=n[this._colorStackIndex-1]&e.mask;const i=this._colorStack[this._colorStackIndex];i!==this._currentColor&&(this._currentColor=i,r.add({renderPipeId:"colorMask",colorMask:i,canBundle:!1})),this._colorStackIndex++}pop(e,t,r){this._renderer.renderPipes.batch.break(r);const n=this._colorStack;this._colorStackIndex--;const i=n[this._colorStackIndex-1];i!==this._currentColor&&(this._currentColor=i,r.add({renderPipeId:"colorMask",colorMask:i,canBundle:!1}))}execute(e){this._renderer.colorMask.setMask(e.colorMask)}destroy(){this._renderer=null,this._colorStack=null}}be.extension={type:[l.WebGLPipes,l.WebGPUPipes],name:"colorMask"};class Te{constructor(e){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=e}push(e,t,r){var s;const n=e,i=this._renderer;i.renderPipes.batch.break(r),i.renderPipes.blendMode.setBlendMode(n.mask,"none",r),r.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const o=n.mask;o.includeInBuild=!0,this._maskHash.has(n)||this._maskHash.set(n,{instructionsStart:0,instructionsLength:0});const d=this._maskHash.get(n);d.instructionsStart=r.instructionSize,o.collectRenderables(r,i,null),o.includeInBuild=!1,i.renderPipes.batch.break(r),r.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1});const h=r.instructionSize-d.instructionsStart-1;d.instructionsLength=h;const c=i.renderTarget.renderTarget.uid;(s=this._maskStackHash)[c]??(s[c]=0)}pop(e,t,r){const s=e,n=this._renderer;n.renderPipes.batch.break(r),n.renderPipes.blendMode.setBlendMode(s.mask,"none",r),r.add({renderPipeId:"stencilMask",action:"popMaskBegin",inverse:t._maskOptions.inverse,canBundle:!1});const i=this._maskHash.get(e);for(let o=0;o<i.instructionsLength;o++)r.instructions[r.instructionSize++]=r.instructions[i.instructionsStart++];r.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(e){var t;const r=this._renderer,s=r,n=r.renderTarget.renderTarget.uid;let i=(t=this._maskStackHash)[n]??(t[n]=0);e.action==="pushMaskBegin"?(s.renderTarget.ensureDepthStencil(),s.stencil.setStencilMode(g.RENDERING_MASK_ADD,i),i++,s.colorMask.setMask(0)):e.action==="pushMaskEnd"?(e.inverse?s.stencil.setStencilMode(g.INVERSE_MASK_ACTIVE,i):s.stencil.setStencilMode(g.MASK_ACTIVE,i),s.colorMask.setMask(15)):e.action==="popMaskBegin"?(s.colorMask.setMask(0),i!==0?s.stencil.setStencilMode(g.RENDERING_MASK_REMOVE,i):(s.renderTarget.clear(null,D.STENCIL),s.stencil.setStencilMode(g.DISABLED,i)),i--):e.action==="popMaskEnd"&&(e.inverse?s.stencil.setStencilMode(g.INVERSE_MASK_ACTIVE,i):s.stencil.setStencilMode(g.MASK_ACTIVE,i),s.colorMask.setMask(15)),this._maskStackHash[n]=i}destroy(){this._renderer=null,this._maskStackHash=null,this._maskHash=null}}Te.extension={type:[l.WebGLPipes,l.WebGPUPipes],name:"stencilMask"};class ye{constructor(e){this._renderer=e}updateRenderable(){}destroyRenderable(){}validateRenderable(){return!1}addRenderable(e,t){this._renderer.renderPipes.batch.break(t),t.add(e)}execute(e){e.isRenderable&&e.render(this._renderer)}destroy(){this._renderer=null}}ye.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"customRender"};function L(a,e){const t=a.instructionSet,r=t.instructions;for(let s=0;s<t.instructionSize;s++){const n=r[s];e[n.renderPipeId].execute(n)}}class ve{constructor(e){this._renderer=e}addRenderGroup(e,t){e.isCachedAsTexture?this._addRenderableCacheAsTexture(e,t):this._addRenderableDirect(e,t)}execute(e){e.isRenderable&&(e.isCachedAsTexture?this._executeCacheAsTexture(e):this._executeDirect(e))}destroy(){this._renderer=null}_addRenderableDirect(e,t){this._renderer.renderPipes.batch.break(t),e._batchableRenderGroup&&(w.return(e._batchableRenderGroup),e._batchableRenderGroup=null),t.add(e)}_addRenderableCacheAsTexture(e,t){const r=e._batchableRenderGroup??(e._batchableRenderGroup=w.get(ue));r.renderable=e.root,r.transform=e.root.relativeGroupTransform,r.texture=e.texture,r.bounds=e._textureBounds,t.add(e),this._renderer.renderPipes.blendMode.pushBlendMode(e,e.root.groupBlendMode,t),this._renderer.renderPipes.batch.addToBatch(r,t),this._renderer.renderPipes.blendMode.popBlendMode(t)}_executeCacheAsTexture(e){if(e.textureNeedsUpdate){e.textureNeedsUpdate=!1;const t=new m().translate(-e._textureBounds.x,-e._textureBounds.y);this._renderer.renderTarget.push(e.texture,!0,null,e.texture.frame),this._renderer.globalUniforms.push({worldTransformMatrix:t,worldColor:4294967295,offset:{x:0,y:0}}),L(e,this._renderer.renderPipes),this._renderer.renderTarget.finishRenderPass(),this._renderer.renderTarget.pop(),this._renderer.globalUniforms.pop()}e._batchableRenderGroup._batcher.updateElement(e._batchableRenderGroup),e._batchableRenderGroup._batcher.geometry.buffers[0].update()}_executeDirect(e){this._renderer.globalUniforms.push({worldTransformMatrix:e.inverseParentTextureTransform,worldColor:e.worldColorAlpha}),L(e,this._renderer.renderPipes),this._renderer.globalUniforms.pop()}}ve.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"renderGroup"};class Ce{constructor(e){this._renderer=e}addRenderable(e,t){const r=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){const t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){const t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.bounds=e.visualBounds,t.texture=e._texture}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){const t=new ue;return t.renderable=e,t.transform=e.groupTransform,t.texture=e._texture,t.bounds=e.visualBounds,t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}}Ce.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"sprite"};const v={};W.handle(l.BlendMode,a=>{if(!a.name)throw new Error("BlendMode extension must have a name property");v[a.name]=a.ref},a=>{delete v[a.name]});class ke{constructor(e){this._blendModeStack=[],this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=e,this._renderer.runners.prerender.add(this)}prerender(){this._activeBlendMode="normal",this._isAdvanced=!1}pushBlendMode(e,t,r){this._blendModeStack.push(t),this.setBlendMode(e,t,r)}popBlendMode(e){this._blendModeStack.pop();const t=this._blendModeStack[this._activeBlendMode.length-1]??"normal";this.setBlendMode(null,t,e)}setBlendMode(e,t,r){var n;const s=e instanceof ee;if(this._activeBlendMode===t){this._isAdvanced&&e&&!s&&((n=this._renderableList)==null||n.push(e));return}this._isAdvanced&&this._endAdvancedBlendMode(r),this._activeBlendMode=t,e&&(this._isAdvanced=!!v[t],this._isAdvanced&&this._beginAdvancedBlendMode(e,r))}_beginAdvancedBlendMode(e,t){this._renderer.renderPipes.batch.break(t);const r=this._activeBlendMode;if(!v[r]){ce(`Unable to assign BlendMode: '${r}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);return}const s=this._ensureFilterEffect(r),n=e instanceof ee,i={renderPipeId:"filter",action:"pushFilter",filterEffect:s,renderables:n?null:[e],container:n?e.root:null,canBundle:!1};this._renderableList=i.renderables,t.add(i)}_ensureFilterEffect(e){let t=this._filterHash[e];return t||(t=this._filterHash[e]=new de,t.filters=[new v[e]]),t}_endAdvancedBlendMode(e){this._isAdvanced=!1,this._renderableList=null,this._renderer.renderPipes.batch.break(e),e.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(e){this._isAdvanced&&this._endAdvancedBlendMode(e)}destroy(){this._renderer=null,this._renderableList=null;for(const e in this._filterHash)this._filterHash[e].destroy();this._filterHash=null}}ke.extension={type:[l.WebGLPipes,l.WebGPUPipes,l.CanvasPipes],name:"blendMode"};function F(a,e){e||(e=0);for(let t=e;t<a.length&&a[t];t++)a[t]=null}const ct=new P,ne=fe|pe|me;function Me(a,e=!1){ht(a);const t=a.childrenToUpdate,r=a.updateTick++;for(const s in t){const n=Number(s),i=t[s],o=i.list,d=i.index;for(let h=0;h<d;h++){const c=o[h];c.parentRenderGroup===a&&c.relativeRenderGroupDepth===n&&Re(c,r,0)}F(o,d),i.index=0}if(e)for(let s=0;s<a.renderGroupChildren.length;s++)Me(a.renderGroupChildren[s],e)}function ht(a){const e=a.root;let t;if(a.renderGroupParent){const r=a.renderGroupParent;a.worldTransform.appendFrom(e.relativeGroupTransform,r.worldTransform),a.worldColor=he(e.groupColor,r.worldColor),t=e.groupAlpha*r.worldAlpha}else a.worldTransform.copyFrom(e.localTransform),a.worldColor=e.localColor,t=e.localAlpha;t=t<0?0:t>1?1:t,a.worldAlpha=t,a.worldColorAlpha=a.worldColor+((t*255|0)<<24)}function Re(a,e,t){if(e===a.updateTick)return;a.updateTick=e,a.didChange=!1;const r=a.localTransform;a.updateLocalTransform();const s=a.parent;if(s&&!s.renderGroup?(t|=a._updateFlags,a.relativeGroupTransform.appendFrom(r,s.relativeGroupTransform),t&ne&&ae(a,s,t)):(t=a._updateFlags,a.relativeGroupTransform.copyFrom(r),t&ne&&ae(a,ct,t)),!a.renderGroup){const n=a.children,i=n.length;for(let h=0;h<i;h++)Re(n[h],e,t);const o=a.parentRenderGroup,d=a;d.renderPipeId&&!o.structureDidChange&&o.updateRenderable(d)}}function ae(a,e,t){if(t&pe){a.groupColor=he(a.localColor,e.groupColor);let r=a.localAlpha*e.groupAlpha;r=r<0?0:r>1?1:r,a.groupAlpha=r,a.groupColorAlpha=a.groupColor+((r*255|0)<<24)}t&me&&(a.groupBlendMode=a.localBlendMode==="inherit"?e.groupBlendMode:a.localBlendMode),t&fe&&(a.globalDisplayStatus=a.localDisplayStatus&e.globalDisplayStatus),a._updateFlags=0}function ft(a,e){const{list:t}=a.childrenRenderablesToUpdate;let r=!1;for(let s=0;s<a.childrenRenderablesToUpdate.index;s++){const n=t[s];if(r=e[n.renderPipeId].validateRenderable(n),r)break}return a.structureDidChange=r,r}const pt=new m;class Se{constructor(e){this._renderer=e}render({container:e,transform:t}){const r=e.parent,s=e.renderGroup.renderGroupParent;e.parent=null,e.renderGroup.renderGroupParent=null;const n=this._renderer,i=pt;t&&(i.copyFrom(e.renderGroup.localTransform),e.renderGroup.localTransform.copyFrom(t));const o=n.renderPipes;this._updateCachedRenderGroups(e.renderGroup,null),this._updateRenderGroups(e.renderGroup),n.globalUniforms.start({worldTransformMatrix:t?e.renderGroup.localTransform:e.renderGroup.worldTransform,worldColor:e.renderGroup.worldColorAlpha}),L(e.renderGroup,o),o.uniformBatch&&o.uniformBatch.renderEnd(),t&&e.renderGroup.localTransform.copyFrom(i),e.parent=r,e.renderGroup.renderGroupParent=s}destroy(){this._renderer=null}_updateCachedRenderGroups(e,t){if(e._parentCacheAsTextureRenderGroup=t,e.isCachedAsTexture){if(!e.textureNeedsUpdate)return;t=e}for(let r=e.renderGroupChildren.length-1;r>=0;r--)this._updateCachedRenderGroups(e.renderGroupChildren[r],t);if(e.invalidateMatrices(),e.isCachedAsTexture){if(e.textureNeedsUpdate){const r=e.root.getLocalBounds(),s=this._renderer,n=e.textureOptions.resolution||s.view.resolution,i=e.textureOptions.antialias??s.view.antialias,o=e.textureOptions.scaleMode??"linear",d=e.texture;r.ceil(),e.texture&&T.returnTexture(e.texture,!0);const h=T.getOptimalTexture(r.width,r.height,n,i);h._source.style=new Ye({scaleMode:o}),e.texture=h,e._textureBounds||(e._textureBounds=new z),e._textureBounds.copyFrom(r),d!==e.texture&&e.renderGroupParent&&(e.renderGroupParent.structureDidChange=!0)}}else e.texture&&(T.returnTexture(e.texture,!0),e.texture=null)}_updateRenderGroups(e){const t=this._renderer,r=t.renderPipes;if(e.runOnRender(t),e.instructionSet.renderPipes=r,e.structureDidChange?F(e.childrenRenderablesToUpdate.list,0):ft(e,r),Me(e),e.structureDidChange?(e.structureDidChange=!1,this._buildInstructions(e,t)):this._updateRenderables(e),e.childrenRenderablesToUpdate.index=0,t.renderPipes.batch.upload(e.instructionSet),!(e.isCachedAsTexture&&!e.textureNeedsUpdate))for(let s=0;s<e.renderGroupChildren.length;s++)this._updateRenderGroups(e.renderGroupChildren[s])}_updateRenderables(e){const{list:t,index:r}=e.childrenRenderablesToUpdate;for(let s=0;s<r;s++){const n=t[s];n.didViewUpdate&&e.updateRenderable(n)}F(t,r)}_buildInstructions(e,t){const r=e.root,s=e.instructionSet;s.reset();const n=t.renderPipes?t:t.batch.renderer,i=n.renderPipes;i.batch.buildStart(s),i.blendMode.buildStart(),i.colorMask.buildStart(),r.sortableChildren&&r.sortChildren(),r.collectRenderablesWithEffects(s,n,null),i.batch.buildEnd(s),i.blendMode.buildEnd(s)}}Se.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"renderGroup"};const $=class we{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new E(0),this.color=this._backgroundColor,this.alpha=1}init(e){e={...we.defaultOptions,...e},this.clearBeforeRender=e.clearBeforeRender,this.color=e.background||e.backgroundColor||this._backgroundColor,this.alpha=e.backgroundAlpha,this._backgroundColor.setAlpha(e.backgroundAlpha)}get color(){return this._backgroundColor}set color(e){E.shared.setValue(e).alpha<1&&this._backgroundColor.alpha===1&&ce("Cannot set a transparent background on an opaque canvas. To enable transparency, set backgroundAlpha < 1 when initializing your Application."),this._backgroundColor.setValue(e)}get alpha(){return this._backgroundColor.alpha}set alpha(e){this._backgroundColor.setAlpha(e)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}};$.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"background",priority:0};$.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};let mt=$;const I={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},q=class Pe{constructor(e){this._renderer=e}_normalizeOptions(e,t={}){return e instanceof P||e instanceof p?{target:e,...t}:{...t,...e}}async image(e){const t=N.get().createImage();return t.src=await this.base64(e),t}async base64(e){e=this._normalizeOptions(e,Pe.defaultImageOptions);const{format:t,quality:r}=e,s=this.canvas(e);if(s.toBlob!==void 0)return new Promise((n,i)=>{s.toBlob(o=>{if(!o){i(new Error("ICanvas.toBlob failed!"));return}const d=new FileReader;d.onload=()=>n(d.result),d.onerror=i,d.readAsDataURL(o)},I[t],r)});if(s.toDataURL!==void 0)return s.toDataURL(I[t],r);if(s.convertToBlob!==void 0){const n=await s.convertToBlob({type:I[t],quality:r});return new Promise((i,o)=>{const d=new FileReader;d.onload=()=>i(d.result),d.onerror=o,d.readAsDataURL(n)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e){e=this._normalizeOptions(e);const t=e.target,r=this._renderer;if(t instanceof p)return r.texture.generateCanvas(t);const s=r.textureGenerator.generateTexture(e),n=r.texture.generateCanvas(s);return s.destroy(!0),n}pixels(e){e=this._normalizeOptions(e);const t=e.target,r=this._renderer,s=t instanceof p?t:r.textureGenerator.generateTexture(e),n=r.texture.getPixels(s);return t instanceof P&&s.destroy(!0),n}texture(e){return e=this._normalizeOptions(e),e.target instanceof p?e.target:this._renderer.textureGenerator.generateTexture(e)}download(e){e=this._normalizeOptions(e);const t=this.canvas(e),r=document.createElement("a");r.download=e.filename??"image.png",r.href=t.toDataURL("image/png"),document.body.appendChild(r),r.click(),document.body.removeChild(r)}log(e){const t=e.width??200;e=this._normalizeOptions(e);const r=this.canvas(e),s=r.toDataURL();console.log(`[Pixi Texture] ${r.width}px ${r.height}px`);const n=["font-size: 1px;",`padding: ${t}px 300px;`,`background: url(${s}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",n)}destroy(){this._renderer=null}};q.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"extract"};q.defaultImageOptions={format:"png",quality:1};let gt=q;class K extends p{static create(e){const{dynamic:t,textureOptions:r,...s}=e;return new K({...r,source:new y(s),dynamic:t??!1})}resize(e,t,r){return this.source.resize(e,t,r),this}}const _t=new B,xt=new z,bt=[0,0,0,0];class Be{constructor(e){this._renderer=e}generateTexture(e){var c;e instanceof P&&(e={target:e,frame:void 0,textureSourceOptions:{},resolution:void 0});const t=e.resolution||this._renderer.resolution,r=e.antialias||this._renderer.view.antialias,s=e.target;let n=e.clearColor;n?n=Array.isArray(n)&&n.length===4?n:E.shared.setValue(n).toArray():n=bt;const i=((c=e.frame)==null?void 0:c.copyTo(_t))||Je(s,xt).rectangle,o=e.defaultAnchor&&{defaultAnchor:e.defaultAnchor};i.width=Math.max(i.width,1/t)|0,i.height=Math.max(i.height,1/t)|0;const d=K.create({...e.textureSourceOptions,width:i.width,height:i.height,resolution:t,antialias:r,textureOptions:o}),h=m.shared.translate(-i.x,-i.y);return this._renderer.render({container:s,transform:h,target:d,clearColor:n}),d.source.updateMipmaps(),d}destroy(){this._renderer=null}}Be.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"textureGenerator"};function Tt(a){let e=!1;for(const r in a)if(a[r]==null){e=!0;break}if(!e)return a;const t=Object.create(null);for(const r in a){const s=a[r];s&&(t[r]=s)}return t}function yt(a){let e=0;for(let t=0;t<a.length;t++)a[t]==null?e++:a[t-e]=a[t];return a.length-=e,a}const Y=class Ge{constructor(e){this._managedResources=[],this._managedResourceHashes=[],this._managedCollections=[],this._ready=!1,this._renderer=e}init(e){e={...Ge.defaultOptions,...e},this.maxUnusedTime=e.gcMaxUnusedTime,this._frequency=e.gcFrequency,this.enabled=e.gcActive,this.now=performance.now()}get enabled(){return!!this._handler}set enabled(e){this.enabled!==e&&(e?(this._handler=this._renderer.scheduler.repeat(()=>{this._ready=!0},this._frequency,!1),this._collectionsHandler=this._renderer.scheduler.repeat(()=>{for(const t of this._managedCollections){const{context:r,collection:s,type:n}=t;n==="hash"?r[s]=Tt(r[s]):r[s]=yt(r[s])}},this._frequency)):(this._renderer.scheduler.cancel(this._handler),this._renderer.scheduler.cancel(this._collectionsHandler),this._handler=0,this._collectionsHandler=0))}prerender({container:e}){this.now=performance.now(),e.renderGroup.gcTick=this._renderer.tick++,this._updateInstructionGCTick(e.renderGroup,e.renderGroup.gcTick)}postrender(){!this._ready||!this.enabled||(this.run(),this._ready=!1)}_updateInstructionGCTick(e,t){e.instructionSet.gcTick=t,e.gcTick=t;for(const r of e.renderGroupChildren)this._updateInstructionGCTick(r,t)}addCollection(e,t,r){this._managedCollections.push({context:e,collection:t,type:r})}addResource(e,t){var s,n;if(e._gcLastUsed!==-1){e._gcLastUsed=this.now,(s=e._onTouch)==null||s.call(e,this.now);return}const r=this._managedResources.length;e._gcData={index:r,type:t},e._gcLastUsed=this.now,(n=e._onTouch)==null||n.call(e,this.now),e.once("unload",this.removeResource,this),this._managedResources.push(e)}removeResource(e){const t=e._gcData;if(!t)return;const r=t.index,s=this._managedResources.length-1;if(r!==s){const n=this._managedResources[s];this._managedResources[r]=n,n._gcData.index=r}this._managedResources.length--,e._gcData=null,e._gcLastUsed=-1}addResourceHash(e,t,r,s=0){this._managedResourceHashes.push({context:e,hash:t,type:r,priority:s}),this._managedResourceHashes.sort((n,i)=>n.priority-i.priority)}run(){const e=performance.now(),t=this._managedResourceHashes;for(const s of t)this.runOnHash(s,e);let r=0;for(let s=0;s<this._managedResources.length;s++){const n=this._managedResources[s];r=this.runOnResource(n,e,r)}this._managedResources.length=r}updateRenderableGCTick(e,t){var n,i;const r=e.renderGroup??e.parentRenderGroup,s=((n=r==null?void 0:r.instructionSet)==null?void 0:n.gcTick)??-1;((r==null?void 0:r.gcTick)??0)===s&&(e._gcLastUsed=t,(i=e._onTouch)==null||i.call(e,t))}runOnResource(e,t,r){const s=e._gcData;return s.type==="renderable"&&this.updateRenderableGCTick(e,t),t-e._gcLastUsed<this.maxUnusedTime||!e.autoGarbageCollect?(this._managedResources[r]=e,s.index=r,r++):(e.unload(),e._gcData=null,e._gcLastUsed=-1,e.off("unload",this.removeResource,this)),r}_createHashClone(e,t){const r=Object.create(null);for(const s in e){if(s===t)break;e[s]!==null&&(r[s]=e[s])}return r}runOnHash(e,t){var h;const{context:r,hash:s,type:n}=e,i=r[s];let o=null,d=0;for(const c in i){const u=i[c];if(u===null){d++,d===1e4&&!o&&(o=this._createHashClone(i,c));continue}if(u._gcLastUsed===-1){u._gcLastUsed=t,(h=u._onTouch)==null||h.call(u,t),o&&(o[c]=u);continue}if(n==="renderable"&&this.updateRenderableGCTick(u,t),!(t-u._gcLastUsed<this.maxUnusedTime)&&u.autoGarbageCollect){if(n==="renderable"){const _=u,x=_.renderGroup??_.parentRenderGroup;x&&(x.structureDidChange=!0)}u.unload(),u._gcData=null,u._gcLastUsed=-1,o||(d+1!==1e4?(i[c]=null,d++):o=this._createHashClone(i,c))}else o&&(o[c]=u)}o&&(r[s]=o)}destroy(){this.enabled=!1,this._managedResources.forEach(e=>{e.off("unload",this.removeResource,this)}),this._managedResources.length=0,this._managedResourceHashes.length=0,this._managedCollections.length=0,this._renderer=null}};Y.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"gc",priority:0};Y.defaultOptions={gcActive:!0,gcMaxUnusedTime:6e4,gcFrequency:3e4};let vt=Y;class Ue{constructor(e){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=e}reset(){this._stackIndex=0;for(let e=0;e<this._activeUniforms.length;e++)this._uniformsPool.push(this._activeUniforms[e]);for(let e=0;e<this._activeBindGroups.length;e++)this._bindGroupPool.push(this._activeBindGroups[e]);this._activeUniforms.length=0,this._activeBindGroups.length=0}start(e){this.reset(),this.push(e)}bind({size:e,projectionMatrix:t,worldTransformMatrix:r,worldColor:s,offset:n}){const i=this._renderer.renderTarget.renderTarget,o=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{worldTransformMatrix:new m,worldColor:4294967295,offset:new Xe},d={projectionMatrix:t||this._renderer.renderTarget.projectionMatrix,resolution:e||i.size,worldTransformMatrix:r||o.worldTransformMatrix,worldColor:s||o.worldColor,offset:n||o.offset,bindGroup:null},h=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(h);const c=h.uniforms;c.uProjectionMatrix=d.projectionMatrix,c.uResolution=d.resolution,c.uWorldTransformMatrix.copyFrom(d.worldTransformMatrix),c.uWorldTransformMatrix.tx-=d.offset.x,c.uWorldTransformMatrix.ty-=d.offset.y,Ze(d.worldColor,c.uWorldColorAlpha,0),h.update();let u;this._renderer.renderPipes.uniformBatch?u=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(h,!1):(u=this._bindGroupPool.pop()||new Qe,this._activeBindGroups.push(u),u.setResource(h,0)),d.bindGroup=u,this._currentGlobalUniformData=d}push(e){this.bind(e),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===V.WEBGL&&this._currentGlobalUniformData.bindGroup.resources[0].update()}get bindGroup(){return this._currentGlobalUniformData.bindGroup}get globalUniformData(){return this._currentGlobalUniformData}get uniformGroup(){return this._currentGlobalUniformData.bindGroup.resources[0]}_createUniforms(){return new oe({uProjectionMatrix:{value:new m,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new m,type:"mat3x3<f32>"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4<f32>"},uResolution:{value:[0,0],type:"vec2<f32>"}},{isStatic:!0})}destroy(){this._renderer=null,this._globalUniformDataStack.length=0,this._uniformsPool.length=0,this._activeUniforms.length=0,this._bindGroupPool.length=0,this._activeBindGroups.length=0,this._currentGlobalUniformData=null}}Ue.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"globalUniforms"};let Ct=1;class Ae{constructor(){this._tasks=[],this._offset=0}init(){te.system.add(this._update,this)}repeat(e,t,r=!0){const s=Ct++;let n=0;return r&&(this._offset+=1e3,n=this._offset),this._tasks.push({func:e,duration:t,start:performance.now(),offset:n,last:performance.now(),repeat:!0,id:s}),s}cancel(e){for(let t=0;t<this._tasks.length;t++)if(this._tasks[t].id===e){this._tasks.splice(t,1);return}}_update(){const e=performance.now();for(let t=0;t<this._tasks.length;t++){const r=this._tasks[t];if(e-r.offset-r.last>=r.duration){const s=e-r.start;r.func(s),r.last=e}}}destroy(){te.system.remove(this._update,this),this._tasks.length=0}}Ae.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"scheduler",priority:0};let ie=!1;function kt(a){if(!ie){if(N.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){const e=[`%c %c %c %c %c PixiJS %c v${re} (${a}) http://www.pixijs.com/
183
+
184
+ `,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...e)}else globalThis.console&&globalThis.console.log(`PixiJS ${re} - ${a} - http://www.pixijs.com/`);ie=!0}}class J{constructor(e){this._renderer=e}init(e){if(e.hello){let t=this._renderer.name;this._renderer.type===V.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),kt(t)}}}J.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"hello",priority:-2};J.defaultOptions={hello:!1};const X=class Ie{constructor(e){this._renderer=e}init(e){e={...Ie.defaultOptions,...e},this.maxUnusedTime=e.renderableGCMaxUnusedTime}get enabled(){return f("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled}set enabled(e){f("8.15.0","RenderableGCSystem.enabled is deprecated, please use the GCSystem.enabled instead."),this._renderer.gc.enabled=e}addManagedHash(e,t){f("8.15.0","RenderableGCSystem.addManagedHash is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"hash")}addManagedArray(e,t){f("8.15.0","RenderableGCSystem.addManagedArray is deprecated, please use the GCSystem.addCollection instead."),this._renderer.gc.addCollection(e,t,"array")}addRenderable(e){f("8.15.0","RenderableGCSystem.addRenderable is deprecated, please use the GCSystem instead."),this._renderer.gc.addResource(e,"renderable")}run(){f("8.15.0","RenderableGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};X.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"renderableGC",priority:0};X.defaultOptions={renderableGCActive:!0,renderableGCMaxUnusedTime:6e4,renderableGCFrequency:3e4};let Mt=X;const Z=class S{get count(){return this._renderer.tick}get checkCount(){return this._checkCount}set checkCount(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._checkCount=e}get maxIdle(){return this._renderer.gc.maxUnusedTime/1e3*60}set maxIdle(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.maxUnusedTime=e/60*1e3}get checkCountMax(){return Math.floor(this._renderer.gc._frequency/1e3)}set checkCountMax(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead.")}get active(){return this._renderer.gc.enabled}set active(e){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.enabled=e}constructor(e){this._renderer=e,this._checkCount=0}init(e){e.textureGCActive!==S.defaultOptions.textureGCActive&&(this.active=e.textureGCActive),e.textureGCMaxIdle!==S.defaultOptions.textureGCMaxIdle&&(this.maxIdle=e.textureGCMaxIdle),e.textureGCCheckCountMax!==S.defaultOptions.textureGCCheckCountMax&&(this.checkCountMax=e.textureGCCheckCountMax)}run(){f("8.15.0","TextureGCSystem.run is deprecated, please use the GCSystem instead."),this._renderer.gc.run()}destroy(){this._renderer=null}};Z.extension={type:[l.WebGLSystem,l.WebGPUSystem],name:"textureGC"};Z.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:null,textureGCMaxIdle:3600,textureGCCheckCountMax:600};let Rt=Z;const De=class Ee{constructor(e={}){if(this.uid=et("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,e={...Ee.defaultOptions,...e},this.stencil=e.stencil,this.depth=e.depth,this.isRoot=e.isRoot,typeof e.colorTextures=="number"){this._managedColorTextures=!0;for(let t=0;t<e.colorTextures;t++)this.colorTextures.push(new y({width:e.width,height:e.height,resolution:e.resolution,antialias:e.antialias}))}else{this.colorTextures=[...e.colorTextures.map(r=>r.source)];const t=this.colorTexture.source;this.resize(t.width,t.height,t._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(e.depthStencilTexture||this.stencil)&&(e.depthStencilTexture instanceof p||e.depthStencilTexture instanceof y?this.depthStencilTexture=e.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){const e=this._size;return e[0]=this.pixelWidth,e[1]=this.pixelHeight,e}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(e){this.resize(e.width,e.height,e._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new y({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(e,t,r=this.resolution,s=!1){this.dirtyId++,this.colorTextures.forEach((n,i)=>{s&&i===0||n.source.resize(e,t,r)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(e,t,r)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(e=>{e.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}};De.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let H=De;const b=new Map;tt.register(b);function Oe(a,e){if(!b.has(a)){const t=new p({source:new O({resource:a,...e})}),r=()=>{b.get(a)===t&&b.delete(a)};t.once("destroy",r),t.source.once("destroy",r),b.set(a,t)}return b.get(a)}const Q=class Le{get autoDensity(){return this.texture.source.autoDensity}set autoDensity(e){this.texture.source.autoDensity=e}get resolution(){return this.texture.source._resolution}set resolution(e){this.texture.source.resize(this.texture.source.width,this.texture.source.height,e)}init(e){e={...Le.defaultOptions,...e},e.view&&(f(rt,"ViewSystem.view has been renamed to ViewSystem.canvas"),e.canvas=e.view),this.screen=new B(0,0,e.width,e.height),this.canvas=e.canvas||N.get().createCanvas(),this.antialias=!!e.antialias,this.texture=Oe(this.canvas,e),this.renderTarget=new H({colorTextures:[this.texture],depth:!!e.depth,isRoot:!0}),this.texture.source.transparent=e.backgroundAlpha<1,this.resolution=e.resolution}resize(e,t,r){this.texture.source.resize(e,t,r),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height}destroy(e=!1){(typeof e=="boolean"?e:!!(e!=null&&e.removeView))&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.texture.destroy()}};Q.extension={type:[l.WebGLSystem,l.WebGPUSystem,l.CanvasSystem],name:"view",priority:0};Q.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};let St=Q;const Ut=[mt,Ue,J,St,Se,vt,Rt,Be,gt,st,Mt,Ae],At=[ke,_e,Ce,ve,xe,Te,be,ye];function wt(a,e,t,r,s,n){const i=n?1:-1;return a.identity(),a.a=1/r*2,a.d=i*(1/s*2),a.tx=-1-e*a.a,a.ty=-i-t*a.d,a}function Pt(a){const e=a.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement&&document.body.contains(e)}class It{constructor(e){this.rootViewPort=new B,this.viewport=new B,this.mipLevel=0,this.layer=0,this.onRenderTargetChange=new nt("onRenderTargetChange"),this.projectionMatrix=new m,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=e,e.gc.addCollection(this,"_gpuRenderTargetHash","hash")}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:e,clear:t,clearColor:r,frame:s,mipLevel:n,layer:i}){var o,d;this._renderTargetStack.length=0,this.push(e,t,r,s,n??0,i??0),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=Pt(this.rootRenderTarget),(d=(o=this.adaptor).prerender)==null||d.call(o,this.rootRenderTarget)}postrender(){var e,t;(t=(e=this.adaptor).postrender)==null||t.call(e,this.rootRenderTarget)}bind(e,t=!0,r,s,n=0,i=0){const o=this.getRenderTarget(e),d=this.renderTarget!==o;this.renderTarget=o,this.renderSurface=e;const h=this.getGpuRenderTarget(o);(o.pixelWidth!==h.width||o.pixelHeight!==h.height)&&(this.adaptor.resizeGpuRenderTarget(o),h.width=o.pixelWidth,h.height=o.pixelHeight);const c=o.colorTexture,u=this.viewport,G=c.arrayLayerCount||1;if((i|0)!==i&&(i|=0),i<0||i>=G)throw new Error(`[RenderTargetSystem] layer ${i} is out of bounds (arrayLayerCount=${G}).`);this.mipLevel=n|0,this.layer=i|0;const _=Math.max(c.pixelWidth>>n,1),x=Math.max(c.pixelHeight>>n,1);if(!s&&e instanceof p&&(s=e.frame),s){const C=c._resolution,k=1<<Math.max(n|0,0),Fe=s.x*C+.5|0,He=s.y*C+.5|0,We=s.width*C+.5|0,ze=s.height*C+.5|0;let M=Math.floor(Fe/k),R=Math.floor(He/k),U=Math.ceil(We/k),A=Math.ceil(ze/k);M=Math.min(Math.max(M,0),_-1),R=Math.min(Math.max(R,0),x-1),U=Math.min(Math.max(U,1),_-M),A=Math.min(Math.max(A,1),x-R),u.x=M,u.y=R,u.width=U,u.height=A}else u.x=0,u.y=0,u.width=_,u.height=x;return wt(this.projectionMatrix,0,0,u.width/c.resolution,u.height/c.resolution,!o.isRoot),this.adaptor.startRenderPass(o,t,r,u,n,i),d&&this.onRenderTargetChange.emit(o),o}clear(e,t=D.ALL,r,s=this.mipLevel,n=this.layer){t&&(e&&(e=this.getRenderTarget(e)),this.adaptor.clear(e||this.renderTarget,t,r,this.viewport,s,n))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(e,t=D.ALL,r,s,n=0,i=0){const o=this.bind(e,t,r,s,n,i);return this._renderTargetStack.push({renderTarget:o,frame:s,mipLevel:n,layer:i}),o}pop(){this._renderTargetStack.pop();const e=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(e.renderTarget,!1,null,e.frame,e.mipLevel,e.layer)}getRenderTarget(e){return e.isTexture&&(e=e.source),this._renderSurfaceToRenderTargetHash.get(e)??this._initRenderTarget(e)}copyToTexture(e,t,r,s,n){r.x<0&&(s.width+=r.x,n.x-=r.x,r.x=0),r.y<0&&(s.height+=r.y,n.y-=r.y,r.y=0);const{pixelWidth:i,pixelHeight:o}=e;return s.width=Math.min(s.width,i-r.x),s.height=Math.min(s.height,o-r.y),this.adaptor.copyToTexture(e,t,r,s,n)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport,0,this.layer))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((e,t)=>{e!==t&&e.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(e){let t=null;return O.test(e)&&(e=Oe(e).source),e instanceof H?t=e:e instanceof y&&(t=new H({colorTextures:[e]}),e.source instanceof O&&(t.isRoot=!0),e.once("destroy",()=>{t.destroy(),this._renderSurfaceToRenderTargetHash.delete(e);const r=this._gpuRenderTargetHash[t.uid];r&&(this._gpuRenderTargetHash[t.uid]=null,this.adaptor.destroyGpuRenderTarget(r))})),this._renderSurfaceToRenderTargetHash.set(e,t),t}getGpuRenderTarget(e){return this._gpuRenderTargetHash[e.uid]||(this._gpuRenderTargetHash[e.uid]=this.adaptor.initGpuRenderTarget(e))}resetState(){this.renderTarget=null,this.renderSurface=null}}export{xe as A,ke as B,ye as C,It as R,Ut as S,_e as a,Ce as b,ve as c,At as d};
185
+ //# sourceMappingURL=RenderTargetSystem-DxpnxrEz.js.map