@industry-theme/repository-composition-panels 0.6.21 → 0.6.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BufferResource-AGMDtvQu.js → BufferResource-CEOmm-bn.js} +2 -2
- package/dist/{BufferResource-AGMDtvQu.js.map → BufferResource-CEOmm-bn.js.map} +1 -1
- package/dist/{CanvasRenderer-EN1EU93u.js → CanvasRenderer-uLmsLKVm.js} +3 -3
- package/dist/{CanvasRenderer-EN1EU93u.js.map → CanvasRenderer-uLmsLKVm.js.map} +1 -1
- package/dist/{Filter-UO5g1u-H.js → Filter-DaJ1lK09.js} +2 -2
- package/dist/{Filter-UO5g1u-H.js.map → Filter-DaJ1lK09.js.map} +1 -1
- package/dist/{RenderTargetSystem-DKolurnu.js → RenderTargetSystem-L205smmq.js} +3 -3
- package/dist/{RenderTargetSystem-DKolurnu.js.map → RenderTargetSystem-L205smmq.js.map} +1 -1
- package/dist/{WebGLRenderer-xGaER6aG.js → WebGLRenderer-Di8FBHm2.js} +4 -4
- package/dist/{WebGLRenderer-xGaER6aG.js.map → WebGLRenderer-Di8FBHm2.js.map} +1 -1
- package/dist/{WebGPURenderer-B41RbCbk.js → WebGPURenderer-shOBFSVw.js} +4 -4
- package/dist/{WebGPURenderer-B41RbCbk.js.map → WebGPURenderer-shOBFSVw.js.map} +1 -1
- package/dist/{browserAll-BI6zPI5f.js → browserAll-BDQdYbg7.js} +3 -3
- package/dist/{browserAll-BI6zPI5f.js.map → browserAll-BDQdYbg7.js.map} +1 -1
- package/dist/{index-Cf_i-MpU.js → index-Dz9kyNPE.js} +21 -39
- package/dist/{index-Cf_i-MpU.js.map → index-Dz9kyNPE.js.map} +1 -1
- package/dist/{init-B8QjDcQG.js → init-CYQ-TSDD.js} +3 -3
- package/dist/{init-B8QjDcQG.js.map → init-CYQ-TSDD.js.map} +1 -1
- package/dist/panels/CollectionMapPanel.d.ts +3 -5
- package/dist/panels/CollectionMapPanel.d.ts.map +1 -1
- package/dist/panels.bundle.js +1 -1
- package/dist/webworkerAll-c9JuRq0R.js +3 -0
- package/dist/webworkerAll-c9JuRq0R.js.map +1 -0
- package/package.json +1 -1
- package/dist/webworkerAll-BbsP1NXo.js +0 -3
- package/dist/webworkerAll-BbsP1NXo.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGPURenderer-B41RbCbk.js","sources":["../node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuLimitsSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUboSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCubeTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","../node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","../node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup.mjs';\n\n\"use strict\";\nconst tempState = State.for2d();\nclass GpuBatchAdaptor {\n start(batchPipe, geometry, shader) {\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n const program = shader.gpuProgram;\n this._shader = shader;\n this._geometry = geometry;\n encoder.setGeometry(geometry, program);\n tempState.blendMode = \"normal\";\n renderer.pipeline.getPipeline(\n geometry,\n program,\n tempState\n );\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.resetBindGroup(1);\n encoder.setBindGroup(0, globalUniformsBindGroup, program);\n }\n execute(batchPipe, batch) {\n const program = this._shader.gpuProgram;\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n if (!batch.bindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(\n textureBatch.textures,\n textureBatch.count,\n renderer.limits.maxBatchableTextures\n );\n }\n tempState.blendMode = batch.blendMode;\n const gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n program,\n 1\n );\n const pipeline = renderer.pipeline.getPipeline(\n this._geometry,\n program,\n tempState,\n batch.topology\n );\n batch.bindGroup._touch(renderer.gc.now, renderer.tick);\n encoder.setPipeline(pipeline);\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n}\n/** @ignore */\nGpuBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GpuBatchAdaptor };\n//# sourceMappingURL=GpuBatchAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass BindGroupSystem {\n constructor(renderer) {\n this._hash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getBindGroup(bindGroup, program, groupIndex) {\n bindGroup._updateKey();\n const gpuBindGroup = this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);\n return gpuBindGroup;\n }\n _createBindGroup(group, program, groupIndex) {\n const device = this._gpu.device;\n const groupLayout = program.layout[groupIndex];\n const entries = [];\n const renderer = this._renderer;\n for (const j in groupLayout) {\n const resource = group.resources[j] ?? group.resources[groupLayout[j]];\n let gpuResource;\n if (resource._resourceType === \"uniformGroup\") {\n const uniformGroup = resource;\n renderer.ubo.updateUniformGroup(uniformGroup);\n const buffer = uniformGroup.buffer;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"buffer\") {\n const buffer = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"bufferResource\") {\n const bufferResource = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(bufferResource.buffer),\n offset: bufferResource.offset,\n size: bufferResource.size\n };\n } else if (resource._resourceType === \"textureSampler\") {\n const sampler = resource;\n gpuResource = renderer.texture.getGpuSampler(sampler);\n } else if (resource._resourceType === \"textureSource\") {\n const texture = resource;\n gpuResource = renderer.texture.getTextureView(texture);\n }\n entries.push({\n binding: groupLayout[j],\n resource: gpuResource\n });\n }\n const layout = renderer.shader.getProgramData(program).bindGroups[groupIndex];\n const gpuBindGroup = device.createBindGroup({\n layout,\n entries\n });\n this._hash[group._key] = gpuBindGroup;\n return gpuBindGroup;\n }\n destroy() {\n this._hash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBindGroupSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"bindGroup\"\n};\n\nexport { BindGroupSystem };\n//# sourceMappingURL=BindGroupSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { fastCopy } from '../../shared/buffer/utils/fastCopy.mjs';\n\n\"use strict\";\nclass GpuBufferData {\n constructor(gpuBuffer) {\n this.gpuBuffer = gpuBuffer;\n }\n destroy() {\n this.gpuBuffer.destroy();\n this.gpuBuffer = null;\n }\n}\nclass GpuBufferSystem {\n constructor(renderer) {\n this._renderer = renderer;\n this._managedBuffers = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onBufferUnload.bind(this),\n name: \"gpuBuffer\"\n });\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getGPUBuffer(buffer) {\n buffer._gcLastUsed = this._renderer.gc.now;\n return buffer._gpuData[this._renderer.uid]?.gpuBuffer || this.createGPUBuffer(buffer);\n }\n updateBuffer(buffer) {\n const gpuBuffer = this.getGPUBuffer(buffer);\n const data = buffer.data;\n if (buffer._updateID && data) {\n buffer._updateID = 0;\n this._gpu.device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n 0,\n // round to the nearest 4 bytes\n (buffer._updateSize || data.byteLength) + 3 & ~3\n );\n }\n return gpuBuffer;\n }\n /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n this._managedBuffers.removeAll();\n }\n onBufferUnload(buffer) {\n buffer.off(\"update\", this.updateBuffer, this);\n buffer.off(\"change\", this.onBufferChange, this);\n }\n createGPUBuffer(buffer) {\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n buffer._updateID = 0;\n buffer._resourceId = uid(\"resource\");\n if (buffer.data) {\n fastCopy(\n buffer.data.buffer,\n gpuBuffer.getMappedRange(),\n buffer.data.byteOffset,\n buffer.data.byteLength\n );\n gpuBuffer.unmap();\n }\n buffer._gpuData[this._renderer.uid] = new GpuBufferData(gpuBuffer);\n if (this._managedBuffers.add(buffer)) {\n buffer.on(\"update\", this.updateBuffer, this);\n buffer.on(\"change\", this.onBufferChange, this);\n }\n return gpuBuffer;\n }\n onBufferChange(buffer) {\n this._managedBuffers.remove(buffer);\n buffer._updateID = 0;\n this.createGPUBuffer(buffer);\n }\n destroy() {\n this._managedBuffers.destroy();\n this._renderer = null;\n this._gpu = null;\n }\n}\n/** @ignore */\nGpuBufferSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"buffer\"\n};\n\nexport { GpuBufferData, GpuBufferSystem };\n//# sourceMappingURL=GpuBufferSystem.mjs.map\n","\"use strict\";\nclass UboBatch {\n constructor({ minUniformOffsetAlignment }) {\n this._minUniformOffsetAlignment = 256;\n this.byteIndex = 0;\n this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n this.data = new Float32Array(65535);\n }\n clear() {\n this.byteIndex = 0;\n }\n addEmptyGroup(size) {\n if (size > this._minUniformOffsetAlignment / 4) {\n throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n }\n const start = this.byteIndex;\n let newSize = start + size * 4;\n newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n if (newSize > this.data.length * 4) {\n throw new Error(\"UniformBufferBatch: ubo batch got too big\");\n }\n this.byteIndex = newSize;\n return start;\n }\n addGroup(array) {\n const offset = this.addEmptyGroup(array.length);\n for (let i = 0; i < array.length; i++) {\n this.data[offset / 4 + i] = array[i];\n }\n return offset;\n }\n destroy() {\n this.data = null;\n }\n}\n\nexport { UboBatch };\n//# sourceMappingURL=UboBatch.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n this._renderer.pipeline.setColorMask(colorMask);\n }\n destroy() {\n this._renderer = null;\n this._colorMaskCache = null;\n }\n}\n/** @ignore */\nGpuColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GpuColorMaskSystem };\n//# sourceMappingURL=GpuColorMaskSystem.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuDeviceSystem {\n /**\n * @param {WebGPURenderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n async init(options) {\n if (this._initPromise) return this._initPromise;\n this._initPromise = (options.gpu ? Promise.resolve(options.gpu) : this._createDeviceAndAdaptor(options)).then((gpu) => {\n this.gpu = gpu;\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n return this._initPromise;\n }\n /**\n * Handle the context change event\n * @param gpu\n */\n contextChange(gpu) {\n this._renderer.gpu = gpu;\n }\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n async _createDeviceAndAdaptor(options) {\n const adapter = await DOMAdapter.get().getNavigator().gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter\n });\n const requiredFeatures = [\n \"texture-compression-bc\",\n \"texture-compression-astc\",\n \"texture-compression-etc2\"\n ].filter((feature) => adapter.features.has(feature));\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n return { adapter, device };\n }\n destroy() {\n this.gpu = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuDeviceSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"device\"\n};\n/** The default options for the GpuDeviceSystem. */\nGpuDeviceSystem.defaultOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false\n};\n\nexport { GpuDeviceSystem };\n//# sourceMappingURL=GpuDeviceSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuEncoderSystem {\n constructor(renderer) {\n this._boundBindGroup = /* @__PURE__ */ Object.create(null);\n this._boundVertexBuffer = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n renderStart() {\n this.commandFinished = new Promise((resolve) => {\n this._resolveCommandFinished = resolve;\n });\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n beginRenderPass(gpuRenderTarget) {\n this.endRenderPass();\n this._clearCache();\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n endRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n }\n this.renderPassEncoder = null;\n }\n setViewport(viewport) {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n setPipelineFromGeometryProgramAndState(geometry, program, state, topology) {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n this.setPipeline(pipeline);\n }\n setPipeline(pipeline) {\n if (this._boundPipeline === pipeline) return;\n this._boundPipeline = pipeline;\n this.renderPassEncoder.setPipeline(pipeline);\n }\n _setVertexBuffer(index, buffer) {\n if (this._boundVertexBuffer[index] === buffer) return;\n this._boundVertexBuffer[index] = buffer;\n this.renderPassEncoder.setVertexBuffer(index, this._renderer.buffer.updateBuffer(buffer));\n }\n _setIndexBuffer(buffer) {\n if (this._boundIndexBuffer === buffer) return;\n this._boundIndexBuffer = buffer;\n const indexFormat = buffer.data.BYTES_PER_ELEMENT === 2 ? \"uint16\" : \"uint32\";\n this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer), indexFormat);\n }\n resetBindGroup(index) {\n this._boundBindGroup[index] = null;\n }\n setBindGroup(index, bindGroup, program) {\n if (this._boundBindGroup[index] === bindGroup) return;\n this._boundBindGroup[index] = bindGroup;\n bindGroup._touch(this._renderer.gc.now, this._renderer.tick);\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n setGeometry(geometry, program) {\n const buffersToBind = this._renderer.pipeline.getBufferNamesToBind(geometry, program);\n for (const i in buffersToBind) {\n this._setVertexBuffer(parseInt(i, 10), geometry.attributes[buffersToBind[i]].buffer);\n }\n if (geometry.indexBuffer) {\n this._setIndexBuffer(geometry.indexBuffer);\n }\n }\n _setShaderBindGroups(shader, skipSync) {\n for (const i in shader.groups) {\n const bindGroup = shader.groups[i];\n if (!skipSync) {\n this._syncBindGroup(bindGroup);\n }\n this.setBindGroup(i, bindGroup, shader.gpuProgram);\n }\n }\n _syncBindGroup(bindGroup) {\n for (const j in bindGroup.resources) {\n const resource = bindGroup.resources[j];\n if (resource.isUniformGroup) {\n this._renderer.ubo.updateUniformGroup(resource);\n }\n }\n }\n draw(options) {\n const { geometry, shader, state, topology, size, start, instanceCount, skipSync } = options;\n this.setPipelineFromGeometryProgramAndState(geometry, shader.gpuProgram, state, topology);\n this.setGeometry(geometry, shader.gpuProgram);\n this._setShaderBindGroups(shader, skipSync);\n if (geometry.indexBuffer) {\n this.renderPassEncoder.drawIndexed(\n size || geometry.indexBuffer.data.length,\n instanceCount ?? geometry.instanceCount,\n start || 0\n );\n } else {\n this.renderPassEncoder.draw(size || geometry.getSize(), instanceCount ?? geometry.instanceCount, start || 0);\n }\n }\n finishRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n this.renderPassEncoder = null;\n }\n }\n postrender() {\n this.finishRenderPass();\n this._gpu.device.queue.submit([this.commandEncoder.finish()]);\n this._resolveCommandFinished();\n this.commandEncoder = null;\n }\n // restores a render pass if finishRenderPass was called\n // not optimised as really used for debugging!\n // used when we want to stop drawing and log a texture..\n restoreRenderPass() {\n const descriptor = this._renderer.renderTarget.adaptor.getDescriptor(\n this._renderer.renderTarget.renderTarget,\n false,\n [0, 0, 0, 1],\n this._renderer.renderTarget.mipLevel,\n this._renderer.renderTarget.layer\n );\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(descriptor);\n const boundPipeline = this._boundPipeline;\n const boundVertexBuffer = { ...this._boundVertexBuffer };\n const boundIndexBuffer = this._boundIndexBuffer;\n const boundBindGroup = { ...this._boundBindGroup };\n this._clearCache();\n const viewport = this._renderer.renderTarget.viewport;\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n this.setPipeline(boundPipeline);\n for (const i in boundVertexBuffer) {\n this._setVertexBuffer(i, boundVertexBuffer[i]);\n }\n for (const i in boundBindGroup) {\n this.setBindGroup(i, boundBindGroup[i], null);\n }\n this._setIndexBuffer(boundIndexBuffer);\n }\n _clearCache() {\n for (let i = 0; i < 16; i++) {\n this._boundBindGroup[i] = null;\n this._boundVertexBuffer[i] = null;\n }\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n destroy() {\n this._renderer = null;\n this._gpu = null;\n this._boundBindGroup = null;\n this._boundVertexBuffer = null;\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n}\n/** @ignore */\nGpuEncoderSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"encoder\",\n priority: 1\n};\n\nexport { GpuEncoderSystem };\n//# sourceMappingURL=GpuEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuLimitsSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n contextChange() {\n this.maxTextures = this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage;\n this.maxBatchableTextures = this.maxTextures;\n }\n destroy() {\n }\n}\n/** @ignore */\nGpuLimitsSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"limits\"\n};\n\nexport { GpuLimitsSystem };\n//# sourceMappingURL=GpuLimitsSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GpuStencilSystem {\n constructor(renderer) {\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this._activeRenderTarget = renderTarget;\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n const renderer = this._renderer;\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n destroy() {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n this._renderer = null;\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n/** @ignore */\nGpuStencilSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"stencil\"\n};\n\nexport { GpuStencilSystem };\n//# sourceMappingURL=GpuStencilSystem.mjs.map\n","\"use strict\";\nconst WGSL_ALIGN_SIZE_DATA = {\n i32: { align: 4, size: 4 },\n u32: { align: 4, size: 4 },\n f32: { align: 4, size: 4 },\n f16: { align: 2, size: 2 },\n \"vec2<i32>\": { align: 8, size: 8 },\n \"vec2<u32>\": { align: 8, size: 8 },\n \"vec2<f32>\": { align: 8, size: 8 },\n \"vec2<f16>\": { align: 4, size: 4 },\n \"vec3<i32>\": { align: 16, size: 12 },\n \"vec3<u32>\": { align: 16, size: 12 },\n \"vec3<f32>\": { align: 16, size: 12 },\n \"vec3<f16>\": { align: 8, size: 6 },\n \"vec4<i32>\": { align: 16, size: 16 },\n \"vec4<u32>\": { align: 16, size: 16 },\n \"vec4<f32>\": { align: 16, size: 16 },\n \"vec4<f16>\": { align: 8, size: 8 },\n \"mat2x2<f32>\": { align: 8, size: 16 },\n \"mat2x2<f16>\": { align: 4, size: 8 },\n \"mat3x2<f32>\": { align: 8, size: 24 },\n \"mat3x2<f16>\": { align: 4, size: 12 },\n \"mat4x2<f32>\": { align: 8, size: 32 },\n \"mat4x2<f16>\": { align: 4, size: 16 },\n \"mat2x3<f32>\": { align: 16, size: 32 },\n \"mat2x3<f16>\": { align: 8, size: 16 },\n \"mat3x3<f32>\": { align: 16, size: 48 },\n \"mat3x3<f16>\": { align: 8, size: 24 },\n \"mat4x3<f32>\": { align: 16, size: 64 },\n \"mat4x3<f16>\": { align: 8, size: 32 },\n \"mat2x4<f32>\": { align: 16, size: 32 },\n \"mat2x4<f16>\": { align: 8, size: 16 },\n \"mat3x4<f32>\": { align: 16, size: 48 },\n \"mat3x4<f16>\": { align: 8, size: 24 },\n \"mat4x4<f32>\": { align: 16, size: 64 },\n \"mat4x4<f16>\": { align: 8, size: 32 }\n};\nfunction createUboElementsWGSL(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n let size = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;\n const align = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;\n if (!WGSL_ALIGN_SIZE_DATA[uboElement.data.type]) {\n throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, align) * uboElement.data.size;\n }\n offset = Math.ceil(offset / align) * align;\n uboElement.size = size;\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_ALIGN_SIZE_DATA, createUboElementsWGSL };\n//# sourceMappingURL=createUboElementsWGSL.mjs.map\n","import { WGSL_ALIGN_SIZE_DATA } from './createUboElementsWGSL.mjs';\n\n\"use strict\";\nfunction generateArraySyncWGSL(uboElement, offsetToAdd) {\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n const remainder = (align - size) / 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n ${offsetToAdd !== 0 ? `offset += ${offsetToAdd};` : \"\"}\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * (size / 4)}; i++)\n {\n for(var j = 0; j < ${size / 4}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncWGSL };\n//# sourceMappingURL=generateArraySyncWGSL.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsWGSL } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncWGSL } from './generateArraySyncWGSL.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionWGSL(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboWgsl\",\n generateArraySyncWGSL,\n uboSyncFunctionsWGSL\n );\n}\n\nexport { createUboSyncFunctionWGSL };\n//# sourceMappingURL=createUboSyncFunctionWGSL.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsWGSL } from './shader/utils/createUboElementsWGSL.mjs';\nimport { createUboSyncFunctionWGSL } from './shader/utils/createUboSyncFunctionWGSL.mjs';\n\n\"use strict\";\nclass GpuUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsWGSL,\n generateUboSync: createUboSyncFunctionWGSL\n });\n }\n}\n/** @ignore */\nGpuUboSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"ubo\"\n};\n\nexport { GpuUboSystem };\n//# sourceMappingURL=GpuUboSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Buffer } from '../shared/buffer/Buffer.mjs';\nimport { BufferResource } from '../shared/buffer/BufferResource.mjs';\nimport { BufferUsage } from '../shared/buffer/const.mjs';\nimport { UboBatch } from './buffer/UboBatch.mjs';\nimport { BindGroup } from './shader/BindGroup.mjs';\n\n\"use strict\";\nconst minUniformOffsetAlignment = 128;\nclass GpuUniformBatchPipe {\n constructor(renderer) {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n // number of buffers..\n this._buffers = [];\n this._bindGroups = [];\n this._bufferResources = [];\n this._renderer = renderer;\n this._batchBuffer = new UboBatch({ minUniformOffsetAlignment });\n const totalBuffers = 256 / minUniformOffsetAlignment;\n for (let i = 0; i < totalBuffers; i++) {\n let usage = BufferUsage.UNIFORM | BufferUsage.COPY_DST;\n if (i === 0) usage |= BufferUsage.COPY_SRC;\n this._buffers.push(new Buffer({\n data: this._batchBuffer.data,\n usage\n }));\n }\n }\n renderEnd() {\n this._uploadBindGroups();\n this._resetBindGroups();\n }\n _resetBindGroups() {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._batchBuffer.clear();\n }\n // just works for single bind groups for now\n getUniformBindGroup(group, duplicate) {\n if (!duplicate && this._bindGroupHash[group.uid]) {\n return this._bindGroupHash[group.uid];\n }\n this._renderer.ubo.ensureUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addEmptyGroup(data.length);\n this._renderer.ubo.syncUniformGroup(group, this._batchBuffer.data, offset / 4);\n this._bindGroupHash[group.uid] = this._getBindGroup(offset / minUniformOffsetAlignment);\n return this._bindGroupHash[group.uid];\n }\n getUboResource(group) {\n this._renderer.ubo.updateUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addGroup(data);\n return this._getBufferResource(offset / minUniformOffsetAlignment);\n }\n getArrayBindGroup(data) {\n const offset = this._batchBuffer.addGroup(data);\n return this._getBindGroup(offset / minUniformOffsetAlignment);\n }\n getArrayBufferResource(data) {\n const offset = this._batchBuffer.addGroup(data);\n const index = offset / minUniformOffsetAlignment;\n return this._getBufferResource(index);\n }\n _getBufferResource(index) {\n if (!this._bufferResources[index]) {\n const buffer = this._buffers[index % 2];\n this._bufferResources[index] = new BufferResource({\n buffer,\n offset: (index / 2 | 0) * 256,\n size: minUniformOffsetAlignment\n });\n }\n return this._bufferResources[index];\n }\n _getBindGroup(index) {\n if (!this._bindGroups[index]) {\n const bindGroup = new BindGroup({\n 0: this._getBufferResource(index)\n });\n this._bindGroups[index] = bindGroup;\n }\n return this._bindGroups[index];\n }\n _uploadBindGroups() {\n const bufferSystem = this._renderer.buffer;\n const firstBuffer = this._buffers[0];\n firstBuffer.update(this._batchBuffer.byteIndex);\n bufferSystem.updateBuffer(firstBuffer);\n const commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n for (let i = 1; i < this._buffers.length; i++) {\n const buffer = this._buffers[i];\n commandEncoder.copyBufferToBuffer(\n bufferSystem.getGPUBuffer(firstBuffer),\n minUniformOffsetAlignment,\n bufferSystem.getGPUBuffer(buffer),\n 0,\n this._batchBuffer.byteIndex\n );\n }\n this._renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n }\n destroy() {\n for (let i = 0; i < this._bindGroups.length; i++) {\n this._bindGroups[i]?.destroy();\n }\n this._bindGroups = null;\n this._bindGroupHash = null;\n for (let i = 0; i < this._buffers.length; i++) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n for (let i = 0; i < this._bufferResources.length; i++) {\n this._bufferResources[i].destroy();\n }\n this._bufferResources = null;\n this._batchBuffer.destroy();\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuUniformBatchPipe.extension = {\n type: [\n ExtensionType.WebGPUPipes\n ],\n name: \"uniformBatch\"\n};\n\nexport { GpuUniformBatchPipe };\n//# sourceMappingURL=GpuUniformBatchPipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { ensureAttributes } from '../../gl/shader/program/ensureAttributes.mjs';\nimport { STENCIL_MODES } from '../../shared/state/const.mjs';\nimport { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { GpuStencilModesToPixi } from '../state/GpuStencilModesToPixi.mjs';\n\n\"use strict\";\nconst topologyStringToId = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 2,\n \"triangle-list\": 3,\n \"triangle-strip\": 4\n};\nfunction getGraphicsStateKey(geometryLayout, shaderKey, state, blendMode, topology) {\n return geometryLayout << 24 | shaderKey << 16 | state << 10 | blendMode << 5 | topology;\n}\nfunction getGlobalStateKey(stencilStateId, multiSampleCount, colorMask, renderTarget, colorTargetCount) {\n return colorMask << 8 | stencilStateId << 5 | renderTarget << 3 | colorTargetCount << 1 | multiSampleCount;\n}\nclass PipelineSystem {\n constructor(renderer) {\n this._moduleCache = /* @__PURE__ */ Object.create(null);\n this._bufferLayoutsCache = /* @__PURE__ */ Object.create(null);\n this._bindingNamesCache = /* @__PURE__ */ Object.create(null);\n this._pipeCache = /* @__PURE__ */ Object.create(null);\n this._pipeStateCaches = /* @__PURE__ */ Object.create(null);\n this._colorMask = 15;\n this._multisampleCount = 1;\n this._colorTargetCount = 1;\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n this.setStencilMode(STENCIL_MODES.DISABLED);\n this._updatePipeHash();\n }\n setMultisampleCount(multisampleCount) {\n if (this._multisampleCount === multisampleCount) return;\n this._multisampleCount = multisampleCount;\n this._updatePipeHash();\n }\n setRenderTarget(renderTarget) {\n this._multisampleCount = renderTarget.msaaSamples;\n this._depthStencilAttachment = renderTarget.descriptor.depthStencilAttachment ? 1 : 0;\n this._colorTargetCount = renderTarget.colorTargetCount;\n this._updatePipeHash();\n }\n setColorMask(colorMask) {\n if (this._colorMask === colorMask) return;\n this._colorMask = colorMask;\n this._updatePipeHash();\n }\n setStencilMode(stencilMode) {\n if (this._stencilMode === stencilMode) return;\n this._stencilMode = stencilMode;\n this._stencilState = GpuStencilModesToPixi[stencilMode];\n this._updatePipeHash();\n }\n setPipeline(geometry, program, state, passEncoder) {\n const pipeline = this.getPipeline(geometry, program, state);\n passEncoder.setPipeline(pipeline);\n }\n getPipeline(geometry, program, state, topology) {\n if (!geometry._layoutKey) {\n ensureAttributes(geometry, program.attributeData);\n this._generateBufferKey(geometry);\n }\n topology || (topology = geometry.topology);\n const key = getGraphicsStateKey(\n geometry._layoutKey,\n program._layoutKey,\n state.data,\n state._blendModeId,\n topologyStringToId[topology]\n );\n if (this._pipeCache[key]) return this._pipeCache[key];\n this._pipeCache[key] = this._createPipeline(geometry, program, state, topology);\n return this._pipeCache[key];\n }\n _createPipeline(geometry, program, state, topology) {\n const device = this._gpu.device;\n const buffers = this._createVertexBufferLayouts(geometry, program);\n const blendModes = this._renderer.state.getColorTargets(state, this._colorTargetCount);\n const writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\n for (let i = 0; i < blendModes.length; i++) {\n blendModes[i].writeMask = writeMask;\n }\n const layout = this._renderer.shader.getProgramData(program).pipeline;\n const descriptor = {\n // TODO later check if its helpful to create..\n // layout,\n vertex: {\n module: this._getModule(program.vertex.source),\n entryPoint: program.vertex.entryPoint,\n // geometry..\n buffers\n },\n fragment: {\n module: this._getModule(program.fragment.source),\n entryPoint: program.fragment.entryPoint,\n targets: blendModes\n },\n primitive: {\n topology,\n cullMode: state.cullMode\n },\n layout,\n multisample: {\n count: this._multisampleCount\n },\n // depthStencil,\n label: `PIXI Pipeline`\n };\n if (this._depthStencilAttachment) {\n descriptor.depthStencil = {\n ...this._stencilState,\n format: \"depth24plus-stencil8\",\n depthWriteEnabled: state.depthTest,\n depthCompare: state.depthTest ? \"less\" : \"always\"\n };\n }\n const pipeline = device.createRenderPipeline(descriptor);\n return pipeline;\n }\n _getModule(code) {\n return this._moduleCache[code] || this._createModule(code);\n }\n _createModule(code) {\n const device = this._gpu.device;\n this._moduleCache[code] = device.createShaderModule({\n code\n });\n return this._moduleCache[code];\n }\n _generateBufferKey(geometry) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(geometry.attributes).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = geometry.attributes[attributeKeys[i]];\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n keyGen[index++] = attribute.instance;\n }\n const stringKey = keyGen.join(\"|\");\n geometry._layoutKey = createIdFromString(stringKey, \"geometry\");\n return geometry._layoutKey;\n }\n _generateAttributeLocationsKey(program) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(program.attributeData).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = program.attributeData[attributeKeys[i]];\n keyGen[index++] = attribute.location;\n }\n const stringKey = keyGen.join(\"|\");\n program._attributeLocationsKey = createIdFromString(stringKey, \"programAttributes\");\n return program._attributeLocationsKey;\n }\n /**\n * Returns a hash of buffer names mapped to bind locations.\n * This is used to bind the correct buffer to the correct location in the shader.\n * @param geometry - The geometry where to get the buffer names\n * @param program - The program where to get the buffer names\n * @returns An object of buffer names mapped to the bind location.\n */\n getBufferNamesToBind(geometry, program) {\n const key = geometry._layoutKey << 16 | program._attributeLocationsKey;\n if (this._bindingNamesCache[key]) return this._bindingNamesCache[key];\n const data = this._createVertexBufferLayouts(geometry, program);\n const bufferNamesToBind = /* @__PURE__ */ Object.create(null);\n const attributeData = program.attributeData;\n for (let i = 0; i < data.length; i++) {\n const attributes = Object.values(data[i].attributes);\n const shaderLocation = attributes[0].shaderLocation;\n for (const j in attributeData) {\n if (attributeData[j].location === shaderLocation) {\n bufferNamesToBind[i] = j;\n break;\n }\n }\n }\n this._bindingNamesCache[key] = bufferNamesToBind;\n return bufferNamesToBind;\n }\n _createVertexBufferLayouts(geometry, program) {\n if (!program._attributeLocationsKey) this._generateAttributeLocationsKey(program);\n const key = geometry._layoutKey << 16 | program._attributeLocationsKey;\n if (this._bufferLayoutsCache[key]) {\n return this._bufferLayoutsCache[key];\n }\n const vertexBuffersLayout = [];\n geometry.buffers.forEach((buffer) => {\n const bufferEntry = {\n arrayStride: 0,\n stepMode: \"vertex\",\n attributes: []\n };\n const bufferEntryAttributes = bufferEntry.attributes;\n for (const i in program.attributeData) {\n const attribute = geometry.attributes[i];\n if ((attribute.divisor ?? 1) !== 1) {\n warn(`Attribute ${i} has an invalid divisor value of '${attribute.divisor}'. WebGPU only supports a divisor value of 1`);\n }\n if (attribute.buffer === buffer) {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? \"instance\" : \"vertex\";\n bufferEntryAttributes.push({\n shaderLocation: program.attributeData[i].location,\n offset: attribute.offset,\n format: attribute.format\n });\n }\n }\n if (bufferEntryAttributes.length) {\n vertexBuffersLayout.push(bufferEntry);\n }\n });\n this._bufferLayoutsCache[key] = vertexBuffersLayout;\n return vertexBuffersLayout;\n }\n _updatePipeHash() {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment,\n this._colorTargetCount\n );\n if (!this._pipeStateCaches[key]) {\n this._pipeStateCaches[key] = /* @__PURE__ */ Object.create(null);\n }\n this._pipeCache = this._pipeStateCaches[key];\n }\n destroy() {\n this._renderer = null;\n this._bufferLayoutsCache = null;\n }\n}\n/** @ignore */\nPipelineSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"pipeline\"\n};\n\nexport { PipelineSystem };\n//# sourceMappingURL=PipelineSystem.mjs.map\n","\"use strict\";\nclass GpuRenderTarget {\n constructor() {\n this.contexts = [];\n this.msaaTextures = [];\n this.msaaSamples = 1;\n }\n}\n\nexport { GpuRenderTarget };\n//# sourceMappingURL=GpuRenderTarget.mjs.map\n","import { CLEAR } from '../../gl/const.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\nimport { GpuRenderTarget } from './GpuRenderTarget.mjs';\n\n\"use strict\";\nclass GpuRenderTargetAdaptor {\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderer = this._renderer;\n const baseGpuTexture = this._getGpuColorTexture(\n sourceRenderSurfaceTexture\n );\n const backGpuTexture = renderer.texture.getGpuSource(\n destinationTexture.source\n );\n renderer.encoder.commandEncoder.copyTextureToTexture(\n {\n texture: baseGpuTexture,\n origin: originSrc\n },\n {\n texture: backGpuTexture,\n origin: originDest\n },\n size\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (layer !== 0 && gpuRenderTarget.msaaTextures?.length) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers is not supported with MSAA render targets.\");\n }\n if (mipLevel > 0 && gpuRenderTarget.msaaTextures?.length) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.\");\n }\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor, mipLevel, layer);\n gpuRenderTarget.descriptor = descriptor;\n this._renderer.pipeline.setRenderTarget(gpuRenderTarget);\n this._renderer.encoder.beginRenderPass(gpuRenderTarget);\n this._renderer.encoder.setViewport(viewport);\n }\n finishRenderPass() {\n this._renderer.encoder.endRenderPass();\n }\n /**\n * returns the gpu texture for the first color texture in the render target\n * mainly used by the filter manager to get copy the texture for blending\n * @param renderTarget\n * @returns a gpu texture\n */\n _getGpuColorTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (gpuRenderTarget.contexts[0]) {\n return gpuRenderTarget.contexts[0].getCurrentTexture();\n }\n return this._renderer.texture.getGpuSource(\n renderTarget.colorTextures[0].source\n );\n }\n getDescriptor(renderTarget, clear, clearValue, mipLevel = 0, layer = 0) {\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const colorAttachments = renderTarget.colorTextures.map(\n (texture, i) => {\n const context = gpuRenderTarget.contexts[i];\n let view;\n let resolveTarget;\n if (context) {\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers is not supported for canvas targets.\");\n }\n const currentTexture = context.getCurrentTexture();\n const canvasTextureView = currentTexture.createView();\n view = canvasTextureView;\n } else {\n view = this._renderer.texture.getGpuSource(texture).createView({\n // Render attachments must be 2d views; for array/cube textures we select a single layer.\n dimension: \"2d\",\n baseMipLevel: mipLevel,\n mipLevelCount: 1,\n baseArrayLayer: layer,\n arrayLayerCount: 1\n });\n }\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: \"store\",\n loadOp\n };\n }\n );\n let depthStencilAttachment;\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture) {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n depthStencilAttachment = {\n view: this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView({\n dimension: \"2d\",\n baseMipLevel: mipLevel,\n mipLevelCount: 1,\n baseArrayLayer: layer,\n arrayLayerCount: 1\n }),\n stencilStoreOp: \"store\",\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: \"store\"\n };\n }\n const descriptor = {\n colorAttachments,\n depthStencilAttachment\n };\n return descriptor;\n }\n clear(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n if (!clear) return;\n const { gpu, encoder } = this._renderer;\n const device = gpu.device;\n const standAlone = encoder.commandEncoder === null;\n if (standAlone) {\n const commandEncoder = device.createCommandEncoder();\n const renderPassDescriptor = this.getDescriptor(renderTarget, clear, clearColor, mipLevel, layer);\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n passEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n passEncoder.end();\n const gpuCommands = commandEncoder.finish();\n device.queue.submit([gpuCommands]);\n } else {\n this.startRenderPass(renderTarget, clear, clearColor, viewport, mipLevel, layer);\n }\n }\n initGpuRenderTarget(renderTarget) {\n renderTarget.isRoot = true;\n const gpuRenderTarget = new GpuRenderTarget();\n gpuRenderTarget.colorTargetCount = renderTarget.colorTextures.length;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (colorTexture instanceof CanvasSource) {\n const context = colorTexture.resource.getContext(\n \"webgpu\"\n );\n const alphaMode = colorTexture.transparent ? \"premultiplied\" : \"opaque\";\n try {\n context.configure({\n device: this._renderer.gpu.device,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,\n format: \"bgra8unorm\",\n alphaMode\n });\n } catch (e) {\n console.error(e);\n }\n gpuRenderTarget.contexts[i] = context;\n }\n gpuRenderTarget.msaa = colorTexture.source.antialias;\n if (colorTexture.source.antialias) {\n const msaaTexture = new TextureSource({\n width: 0,\n height: 0,\n sampleCount: 4,\n arrayLayerCount: colorTexture.source.arrayLayerCount\n });\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n if (gpuRenderTarget.msaa) {\n gpuRenderTarget.msaaSamples = 4;\n if (renderTarget.depthStencilTexture) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n return gpuRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n gpuRenderTarget.contexts.forEach((context) => {\n context.unconfigure();\n });\n gpuRenderTarget.msaaTextures.forEach((texture) => {\n texture.destroy();\n });\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n ensureDepthStencilTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n resizeGpuRenderTarget(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n if (gpuRenderTarget.msaa) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n\nexport { GpuRenderTargetAdaptor };\n//# sourceMappingURL=GpuRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GpuRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GpuRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGpuRenderTargetSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"renderTarget\"\n};\n\nexport { GpuRenderTargetSystem };\n//# sourceMappingURL=GpuRenderTargetSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuShaderSystem {\n constructor() {\n this._gpuProgramData = /* @__PURE__ */ Object.create(null);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getProgramData(program) {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n _createGPUProgramData(program) {\n const device = this._gpu.device;\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc)\n };\n return this._gpuProgramData[program._layoutKey];\n }\n destroy() {\n this._gpu = null;\n this._gpuProgramData = null;\n }\n}\n/** @ignore */\nGpuShaderSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"shader\"\n};\n\nexport { GpuShaderSystem };\n//# sourceMappingURL=GpuShaderSystem.mjs.map\n","\"use strict\";\nconst GpuBlendModesToPixi = {};\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"dst\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"zero\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"normal-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"add-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"screen-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.min = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"min\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"min\"\n }\n};\nGpuBlendModesToPixi.max = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"max\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"max\"\n }\n};\n\nexport { GpuBlendModesToPixi };\n//# sourceMappingURL=GpuBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { GpuBlendModesToPixi } from './GpuBlendModesToPixi.mjs';\n\n\"use strict\";\nclass GpuStateSystem {\n constructor() {\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gpu) {\n this.gpu = gpu;\n }\n /**\n * Gets the blend mode data for the current state\n * @param state - The state to get the blend mode from\n * @param count - The number of color targets to create\n */\n getColorTargets(state, count) {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n const targets = [];\n const target = {\n format: \"bgra8unorm\",\n writeMask: 0,\n blend\n };\n for (let i = 0; i < count; i++) {\n targets[i] = target;\n }\n return targets;\n }\n destroy() {\n this.gpu = null;\n }\n}\n/** @ignore */\nGpuStateSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"state\"\n};\n\nexport { GpuStateSystem };\n//# sourceMappingURL=GpuStateSystem.mjs.map\n","\"use strict\";\nconst gpuUploadBufferImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n const resource = source.resource;\n const total = (source.pixelWidth | 0) * (source.pixelHeight | 0);\n const bytesPerPixel = resource.byteLength / total;\n gpu.device.queue.writeTexture(\n { texture: gpuTexture, origin: { x: 0, y: 0, z: originZOverride } },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelWidth * bytesPerPixel\n },\n {\n width: source.pixelWidth,\n height: source.pixelHeight,\n depthOrArrayLayers: 1\n }\n );\n }\n};\n\nexport { gpuUploadBufferImageResource };\n//# sourceMappingURL=gpuUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst blockDataMap = {\n \"bc1-rgba-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"bc2-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc3-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc7-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"etc1-rgb-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"etc2-rgba8unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"astc-4x4-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 }\n};\nconst defaultBlockData = { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\nconst gpuUploadCompressedTextureResource = {\n type: \"compressed\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const blockData = blockDataMap[source.format] || defaultBlockData;\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n const bytesPerRow = Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockBytes;\n gpu.device.queue.writeTexture(\n {\n texture: gpuTexture,\n mipLevel: i,\n origin: { x: 0, y: 0, z: originZOverride }\n },\n levelBuffer,\n {\n offset: 0,\n bytesPerRow\n },\n {\n width: Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockWidth,\n height: Math.ceil(mipHeight / blockData.blockHeight) * blockData.blockHeight,\n depthOrArrayLayers: 1\n }\n );\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { blockDataMap, gpuUploadCompressedTextureResource };\n//# sourceMappingURL=gpuUploadCompressedTextureResource.mjs.map\n","\"use strict\";\nconst FACE_ORDER = [\"right\", \"left\", \"top\", \"bottom\", \"front\", \"back\"];\nfunction createGpuUploadCubeTextureResource(uploaders) {\n return {\n type: \"cube\",\n upload(source, gpuTexture, gpu) {\n const faces = source.faces;\n for (let i = 0; i < FACE_ORDER.length; i++) {\n const key = FACE_ORDER[i];\n const face = faces[key];\n const uploader = uploaders[face.uploadMethodId] || uploaders.image;\n uploader.upload(face, gpuTexture, gpu, i);\n }\n }\n };\n}\n\nexport { createGpuUploadCubeTextureResource };\n//# sourceMappingURL=gpuUploadCubeTextureResource.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\nimport { warn } from '../../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst gpuUploadImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n const resource = source.resource;\n if (!resource) return;\n if (globalThis.HTMLImageElement && resource instanceof HTMLImageElement) {\n const canvas = DOMAdapter.get().createCanvas(resource.width, resource.height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(resource, 0, 0, resource.width, resource.height);\n source.resource = canvas;\n warn(\"ImageSource: Image element passed, converting to canvas and replacing resource.\");\n }\n const width = Math.min(gpuTexture.width, source.resourceWidth || source.pixelWidth);\n const height = Math.min(gpuTexture.height, source.resourceHeight || source.pixelHeight);\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n gpu.device.queue.copyExternalImageToTexture(\n { source: resource },\n { texture: gpuTexture, origin: { x: 0, y: 0, z: originZOverride }, premultipliedAlpha },\n {\n width,\n height\n }\n );\n }\n};\n\nexport { gpuUploadImageResource };\n//# sourceMappingURL=gpuUploadImageSource.mjs.map\n","import { gpuUploadImageResource } from './gpuUploadImageSource.mjs';\n\n\"use strict\";\nconst gpuUploadVideoResource = {\n type: \"video\",\n upload(source, gpuTexture, gpu, originZOverride) {\n gpuUploadImageResource.upload(source, gpuTexture, gpu, originZOverride);\n }\n};\n\nexport { gpuUploadVideoResource };\n//# sourceMappingURL=gpuUploadVideoSource.mjs.map\n","\"use strict\";\nclass GpuMipmapGenerator {\n constructor(device) {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: \"linear\" });\n this.pipelines = {};\n }\n _getMipmapPipeline(format) {\n let pipeline = this.pipelines[format];\n if (!pipeline) {\n if (!this.mipmapShaderModule) {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: (\n /* wgsl */\n `\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n `\n )\n });\n }\n pipeline = this.device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: \"vertexMain\"\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: \"fragmentMain\",\n targets: [{ format }]\n }\n });\n this.pipelines[format] = pipeline;\n }\n return pipeline;\n }\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n generateMipmap(texture) {\n const pipeline = this._getMipmapPipeline(texture.format);\n if (texture.dimension === \"3d\" || texture.dimension === \"1d\") {\n throw new Error(\"Generating mipmaps for non-2d textures is currently unsupported!\");\n }\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1;\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n if (!renderToSource) {\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1\n };\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n const commandEncoder = this.device.createCommandEncoder({});\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer) {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n let dstMipLevel = renderToSource ? 1 : 0;\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: \"store\",\n loadOp: \"clear\",\n clearValue: { r: 0, g: 0, b: 0, a: 0 }\n }]\n });\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler\n }, {\n binding: 1,\n resource: srcView\n }]\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n passEncoder.end();\n srcView = dstView;\n }\n }\n if (!renderToSource) {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n };\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1\n }, {\n texture,\n mipLevel: i\n }, mipLevelSize);\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n this.device.queue.submit([commandEncoder.finish()]);\n if (!renderToSource) {\n mipTexture.destroy();\n }\n return texture;\n }\n}\n\nexport { GpuMipmapGenerator };\n//# sourceMappingURL=GpuMipmapGenerator.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { CanvasPool } from '../../shared/texture/CanvasPool.mjs';\nimport { BindGroup } from '../shader/BindGroup.mjs';\nimport { gpuUploadBufferImageResource } from './uploaders/gpuUploadBufferImageResource.mjs';\nimport { gpuUploadCompressedTextureResource, blockDataMap } from './uploaders/gpuUploadCompressedTextureResource.mjs';\nimport { createGpuUploadCubeTextureResource } from './uploaders/gpuUploadCubeTextureResource.mjs';\nimport { gpuUploadImageResource } from './uploaders/gpuUploadImageSource.mjs';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource.mjs';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator.mjs';\n\n\"use strict\";\nclass GPUTextureGpuData {\n constructor(gpuTexture) {\n this.textureView = null;\n this.gpuTexture = gpuTexture;\n }\n /** Destroys this GPU data instance. */\n destroy() {\n this.gpuTexture.destroy();\n this.textureView = null;\n this.gpuTexture = null;\n }\n}\nclass GpuTextureSystem {\n constructor(renderer) {\n this._gpuSamplers = /* @__PURE__ */ Object.create(null);\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.gc.addCollection(this, \"_bindGroupHash\", \"hash\");\n this._managedTextures = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onSourceUnload.bind(this),\n name: \"gpuTextureSource\"\n });\n const baseUploaders = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n this._uploads = {\n ...baseUploaders,\n cube: createGpuUploadCubeTextureResource(baseUploaders)\n };\n }\n /**\n * @deprecated since 8.15.0\n */\n get managedTextures() {\n return Object.values(this._managedTextures.items);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n /**\n * Initializes a texture source, if it has already been initialized nothing will happen.\n * @param source - The texture source to initialize.\n * @returns The initialized texture source.\n */\n initSource(source) {\n return source._gpuData[this._renderer.uid]?.gpuTexture || this._initSource(source);\n }\n _initSource(source) {\n if (source.autoGenerateMipmaps) {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n const textureDescriptor = {\n label: source.label,\n size: { width, height, depthOrArrayLayers: source.arrayLayerCount },\n format: source.format,\n sampleCount: source.sampleCount,\n mipLevelCount: source.mipLevelCount,\n dimension: source.dimension,\n usage\n };\n const gpuTexture = this._gpu.device.createTexture(textureDescriptor);\n source._gpuData[this._renderer.uid] = new GPUTextureGpuData(gpuTexture);\n const added = this._managedTextures.add(source);\n if (added) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceResize, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n this.onSourceUpdate(source);\n return gpuTexture;\n }\n onSourceUpdate(source) {\n const gpuTexture = this.getGpuSource(source);\n if (!gpuTexture) return;\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, gpuTexture, this._gpu);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source);\n }\n }\n onUpdateMipmaps(source) {\n if (!this._mipmapGenerator) {\n this._mipmapGenerator = new GpuMipmapGenerator(this._gpu.device);\n }\n const gpuTexture = this.getGpuSource(source);\n this._mipmapGenerator.generateMipmap(gpuTexture);\n }\n onSourceUnload(source) {\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceResize, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n onSourceResize(source) {\n source._gcLastUsed = this._renderer.gc.now;\n const gpuData = source._gpuData[this._renderer.uid];\n const gpuTexture = gpuData?.gpuTexture;\n if (!gpuTexture) {\n this.initSource(source);\n } else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight) {\n gpuData.destroy();\n this._bindGroupHash[source.uid] = null;\n source._gpuData[this._renderer.uid] = null;\n this.initSource(source);\n }\n }\n _initSampler(sampler) {\n this._gpuSamplers[sampler._resourceId] = this._gpu.device.createSampler(sampler);\n return this._gpuSamplers[sampler._resourceId];\n }\n getGpuSampler(sampler) {\n return this._gpuSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGpuSource(source) {\n source._gcLastUsed = this._renderer.gc.now;\n return source._gpuData[this._renderer.uid]?.gpuTexture || this.initSource(source);\n }\n /**\n * this returns s bind group for a specific texture, the bind group contains\n * - the texture source\n * - the texture style\n * - the texture matrix\n * This is cached so the bind group should only be created once per texture\n * @param texture - the texture you want the bindgroup for\n * @returns the bind group for the texture\n */\n getTextureBindGroup(texture) {\n return this._bindGroupHash[texture.uid] || this._createTextureBindGroup(texture);\n }\n _createTextureBindGroup(texture) {\n const source = texture.source;\n this._bindGroupHash[texture.uid] = new BindGroup({\n 0: source,\n 1: source.style,\n 2: new UniformGroup({\n uTextureMatrix: { type: \"mat3x3<f32>\", value: texture.textureMatrix.mapCoord }\n })\n });\n return this._bindGroupHash[texture.uid];\n }\n getTextureView(texture) {\n const source = texture.source;\n source._gcLastUsed = this._renderer.gc.now;\n let gpuData = source._gpuData[this._renderer.uid];\n if (!gpuData) {\n this.initSource(source);\n gpuData = source._gpuData[this._renderer.uid];\n }\n gpuData.textureView || (gpuData.textureView = gpuData.gpuTexture.createView({ dimension: source.viewDimension }));\n return gpuData.textureView;\n }\n generateCanvas(texture) {\n const renderer = this._renderer;\n const commandEncoder = renderer.gpu.device.createCommandEncoder();\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = texture.source.pixelWidth;\n canvas.height = texture.source.pixelHeight;\n const context = canvas.getContext(\"webgpu\");\n context.configure({\n device: renderer.gpu.device,\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: DOMAdapter.get().getNavigator().gpu.getPreferredCanvasFormat(),\n alphaMode: \"premultiplied\"\n });\n commandEncoder.copyTextureToTexture({\n texture: renderer.texture.getGpuSource(texture.source),\n origin: {\n x: 0,\n y: 0\n }\n }, {\n texture: context.getCurrentTexture()\n }, {\n width: canvas.width,\n height: canvas.height\n });\n renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n return canvas;\n }\n getPixels(texture) {\n const webGPUCanvas = this.generateCanvas(texture);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(webGPUCanvas.width, webGPUCanvas.height);\n const context = canvasAndContext.context;\n context.drawImage(webGPUCanvas, 0, 0);\n const { width, height } = webGPUCanvas;\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = new Uint8ClampedArray(imageData.data.buffer);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return { pixels, width, height };\n }\n destroy() {\n this._managedTextures.destroy();\n for (const k of Object.keys(this._bindGroupHash)) {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n bindGroup?.destroy();\n }\n this._renderer = null;\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSamplers = null;\n this._bindGroupHash = null;\n }\n}\n/** @ignore */\nGpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n\nexport { GPUTextureGpuData, GpuTextureSystem };\n//# sourceMappingURL=GpuTextureSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GpuGraphicsAdaptor {\n constructor() {\n this._maxTextures = 0;\n }\n contextChange(renderer) {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this._maxTextures = renderer.limits.maxBatchableTextures;\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"graphics\",\n bits: [\n colorBit,\n generateTextureBatchBit(this._maxTextures),\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n batcher,\n instructions\n } = contextSystem.getContextRenderData(context);\n const encoder = renderer.encoder;\n encoder.setGeometry(batcher.geometry, shader.gpuProgram);\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n const localBindGroup = renderer.renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n const batches = instructions.instructions;\n let topology = null;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n if (batch.topology !== topology) {\n topology = batch.topology;\n encoder.setPipelineFromGeometryProgramAndState(\n batcher.geometry,\n shader.gpuProgram,\n graphicsPipe.state,\n batch.topology\n );\n }\n shader.groups[1] = batch.bindGroup;\n if (!batch.gpuBindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(\n textureBatch.textures,\n textureBatch.count,\n this._maxTextures\n );\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n shader.gpuProgram,\n 1\n );\n }\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGpuGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GpuGraphicsAdaptor };\n//# sourceMappingURL=GpuGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GpuMeshAdapter {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"mesh\",\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n shader.groups[2] = renderer.texture.getTextureBindGroup(mesh.texture);\n } else if (!shader.gpuProgram) {\n warn(\"Mesh shader has no gpuProgram\", mesh.shader);\n return;\n }\n const gpuProgram = shader.gpuProgram;\n if (gpuProgram.autoAssignGlobalUniforms) {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n if (gpuProgram.autoAssignLocalUniforms) {\n const localUniforms = meshPipe.localUniforms;\n shader.groups[1] = renderer.renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuMeshAdapter.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GpuMeshAdapter };\n//# sourceMappingURL=GpuMeshAdapter.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuGraphicsAdaptor } from '../../../scene/graphics/gpu/GpuGraphicsAdaptor.mjs';\nimport { GpuMeshAdapter } from '../../../scene/mesh/gpu/GpuMeshAdapter.mjs';\nimport { GpuBatchAdaptor } from '../../batcher/gpu/GpuBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { BindGroupSystem } from './BindGroupSystem.mjs';\nimport { GpuBufferSystem } from './buffer/GpuBufferSystem.mjs';\nimport { GpuColorMaskSystem } from './GpuColorMaskSystem.mjs';\nimport { GpuDeviceSystem } from './GpuDeviceSystem.mjs';\nimport { GpuEncoderSystem } from './GpuEncoderSystem.mjs';\nimport { GpuLimitsSystem } from './GpuLimitsSystem.mjs';\nimport { GpuStencilSystem } from './GpuStencilSystem.mjs';\nimport { GpuUboSystem } from './GpuUboSystem.mjs';\nimport { GpuUniformBatchPipe } from './GpuUniformBatchPipe.mjs';\nimport { PipelineSystem } from './pipeline/PipelineSystem.mjs';\nimport { GpuRenderTargetSystem } from './renderTarget/GpuRenderTargetSystem.mjs';\nimport { GpuShaderSystem } from './shader/GpuShaderSystem.mjs';\nimport { GpuStateSystem } from './state/GpuStateSystem.mjs';\nimport { GpuTextureSystem } from './texture/GpuTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGPUSystems = [\n ...SharedSystems,\n GpuUboSystem,\n GpuEncoderSystem,\n GpuDeviceSystem,\n GpuLimitsSystem,\n GpuBufferSystem,\n GpuTextureSystem,\n GpuRenderTargetSystem,\n GpuShaderSystem,\n GpuStateSystem,\n PipelineSystem,\n GpuColorMaskSystem,\n GpuStencilSystem,\n BindGroupSystem\n];\nconst DefaultWebGPUPipes = [...SharedRenderPipes, GpuUniformBatchPipe];\nconst DefaultWebGPUAdapters = [GpuBatchAdaptor, GpuMeshAdapter, GpuGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGPUSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGPUPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGPUSystems, ...DefaultWebGPUPipes, ...DefaultWebGPUAdapters);\nclass WebGPURenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgpu\",\n type: RendererType.WEBGPU,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGPURenderer };\n//# sourceMappingURL=WebGPURenderer.mjs.map\n"],"names":["minUniformOffsetAlignment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]}
|
|
1
|
+
{"version":3,"file":"WebGPURenderer-shOBFSVw.js","sources":["../node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuLimitsSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUboSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCubeTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","../node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","../node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup.mjs';\n\n\"use strict\";\nconst tempState = State.for2d();\nclass GpuBatchAdaptor {\n start(batchPipe, geometry, shader) {\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n const program = shader.gpuProgram;\n this._shader = shader;\n this._geometry = geometry;\n encoder.setGeometry(geometry, program);\n tempState.blendMode = \"normal\";\n renderer.pipeline.getPipeline(\n geometry,\n program,\n tempState\n );\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.resetBindGroup(1);\n encoder.setBindGroup(0, globalUniformsBindGroup, program);\n }\n execute(batchPipe, batch) {\n const program = this._shader.gpuProgram;\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n if (!batch.bindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(\n textureBatch.textures,\n textureBatch.count,\n renderer.limits.maxBatchableTextures\n );\n }\n tempState.blendMode = batch.blendMode;\n const gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n program,\n 1\n );\n const pipeline = renderer.pipeline.getPipeline(\n this._geometry,\n program,\n tempState,\n batch.topology\n );\n batch.bindGroup._touch(renderer.gc.now, renderer.tick);\n encoder.setPipeline(pipeline);\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n}\n/** @ignore */\nGpuBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GpuBatchAdaptor };\n//# sourceMappingURL=GpuBatchAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass BindGroupSystem {\n constructor(renderer) {\n this._hash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getBindGroup(bindGroup, program, groupIndex) {\n bindGroup._updateKey();\n const gpuBindGroup = this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);\n return gpuBindGroup;\n }\n _createBindGroup(group, program, groupIndex) {\n const device = this._gpu.device;\n const groupLayout = program.layout[groupIndex];\n const entries = [];\n const renderer = this._renderer;\n for (const j in groupLayout) {\n const resource = group.resources[j] ?? group.resources[groupLayout[j]];\n let gpuResource;\n if (resource._resourceType === \"uniformGroup\") {\n const uniformGroup = resource;\n renderer.ubo.updateUniformGroup(uniformGroup);\n const buffer = uniformGroup.buffer;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"buffer\") {\n const buffer = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"bufferResource\") {\n const bufferResource = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(bufferResource.buffer),\n offset: bufferResource.offset,\n size: bufferResource.size\n };\n } else if (resource._resourceType === \"textureSampler\") {\n const sampler = resource;\n gpuResource = renderer.texture.getGpuSampler(sampler);\n } else if (resource._resourceType === \"textureSource\") {\n const texture = resource;\n gpuResource = renderer.texture.getTextureView(texture);\n }\n entries.push({\n binding: groupLayout[j],\n resource: gpuResource\n });\n }\n const layout = renderer.shader.getProgramData(program).bindGroups[groupIndex];\n const gpuBindGroup = device.createBindGroup({\n layout,\n entries\n });\n this._hash[group._key] = gpuBindGroup;\n return gpuBindGroup;\n }\n destroy() {\n this._hash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBindGroupSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"bindGroup\"\n};\n\nexport { BindGroupSystem };\n//# sourceMappingURL=BindGroupSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { fastCopy } from '../../shared/buffer/utils/fastCopy.mjs';\n\n\"use strict\";\nclass GpuBufferData {\n constructor(gpuBuffer) {\n this.gpuBuffer = gpuBuffer;\n }\n destroy() {\n this.gpuBuffer.destroy();\n this.gpuBuffer = null;\n }\n}\nclass GpuBufferSystem {\n constructor(renderer) {\n this._renderer = renderer;\n this._managedBuffers = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onBufferUnload.bind(this),\n name: \"gpuBuffer\"\n });\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getGPUBuffer(buffer) {\n buffer._gcLastUsed = this._renderer.gc.now;\n return buffer._gpuData[this._renderer.uid]?.gpuBuffer || this.createGPUBuffer(buffer);\n }\n updateBuffer(buffer) {\n const gpuBuffer = this.getGPUBuffer(buffer);\n const data = buffer.data;\n if (buffer._updateID && data) {\n buffer._updateID = 0;\n this._gpu.device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n 0,\n // round to the nearest 4 bytes\n (buffer._updateSize || data.byteLength) + 3 & ~3\n );\n }\n return gpuBuffer;\n }\n /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n this._managedBuffers.removeAll();\n }\n onBufferUnload(buffer) {\n buffer.off(\"update\", this.updateBuffer, this);\n buffer.off(\"change\", this.onBufferChange, this);\n }\n createGPUBuffer(buffer) {\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n buffer._updateID = 0;\n buffer._resourceId = uid(\"resource\");\n if (buffer.data) {\n fastCopy(\n buffer.data.buffer,\n gpuBuffer.getMappedRange(),\n buffer.data.byteOffset,\n buffer.data.byteLength\n );\n gpuBuffer.unmap();\n }\n buffer._gpuData[this._renderer.uid] = new GpuBufferData(gpuBuffer);\n if (this._managedBuffers.add(buffer)) {\n buffer.on(\"update\", this.updateBuffer, this);\n buffer.on(\"change\", this.onBufferChange, this);\n }\n return gpuBuffer;\n }\n onBufferChange(buffer) {\n this._managedBuffers.remove(buffer);\n buffer._updateID = 0;\n this.createGPUBuffer(buffer);\n }\n destroy() {\n this._managedBuffers.destroy();\n this._renderer = null;\n this._gpu = null;\n }\n}\n/** @ignore */\nGpuBufferSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"buffer\"\n};\n\nexport { GpuBufferData, GpuBufferSystem };\n//# sourceMappingURL=GpuBufferSystem.mjs.map\n","\"use strict\";\nclass UboBatch {\n constructor({ minUniformOffsetAlignment }) {\n this._minUniformOffsetAlignment = 256;\n this.byteIndex = 0;\n this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n this.data = new Float32Array(65535);\n }\n clear() {\n this.byteIndex = 0;\n }\n addEmptyGroup(size) {\n if (size > this._minUniformOffsetAlignment / 4) {\n throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n }\n const start = this.byteIndex;\n let newSize = start + size * 4;\n newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n if (newSize > this.data.length * 4) {\n throw new Error(\"UniformBufferBatch: ubo batch got too big\");\n }\n this.byteIndex = newSize;\n return start;\n }\n addGroup(array) {\n const offset = this.addEmptyGroup(array.length);\n for (let i = 0; i < array.length; i++) {\n this.data[offset / 4 + i] = array[i];\n }\n return offset;\n }\n destroy() {\n this.data = null;\n }\n}\n\nexport { UboBatch };\n//# sourceMappingURL=UboBatch.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n this._renderer.pipeline.setColorMask(colorMask);\n }\n destroy() {\n this._renderer = null;\n this._colorMaskCache = null;\n }\n}\n/** @ignore */\nGpuColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GpuColorMaskSystem };\n//# sourceMappingURL=GpuColorMaskSystem.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuDeviceSystem {\n /**\n * @param {WebGPURenderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n async init(options) {\n if (this._initPromise) return this._initPromise;\n this._initPromise = (options.gpu ? Promise.resolve(options.gpu) : this._createDeviceAndAdaptor(options)).then((gpu) => {\n this.gpu = gpu;\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n return this._initPromise;\n }\n /**\n * Handle the context change event\n * @param gpu\n */\n contextChange(gpu) {\n this._renderer.gpu = gpu;\n }\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n async _createDeviceAndAdaptor(options) {\n const adapter = await DOMAdapter.get().getNavigator().gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter\n });\n const requiredFeatures = [\n \"texture-compression-bc\",\n \"texture-compression-astc\",\n \"texture-compression-etc2\"\n ].filter((feature) => adapter.features.has(feature));\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n return { adapter, device };\n }\n destroy() {\n this.gpu = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuDeviceSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"device\"\n};\n/** The default options for the GpuDeviceSystem. */\nGpuDeviceSystem.defaultOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false\n};\n\nexport { GpuDeviceSystem };\n//# sourceMappingURL=GpuDeviceSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuEncoderSystem {\n constructor(renderer) {\n this._boundBindGroup = /* @__PURE__ */ Object.create(null);\n this._boundVertexBuffer = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n renderStart() {\n this.commandFinished = new Promise((resolve) => {\n this._resolveCommandFinished = resolve;\n });\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n beginRenderPass(gpuRenderTarget) {\n this.endRenderPass();\n this._clearCache();\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n endRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n }\n this.renderPassEncoder = null;\n }\n setViewport(viewport) {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n setPipelineFromGeometryProgramAndState(geometry, program, state, topology) {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n this.setPipeline(pipeline);\n }\n setPipeline(pipeline) {\n if (this._boundPipeline === pipeline) return;\n this._boundPipeline = pipeline;\n this.renderPassEncoder.setPipeline(pipeline);\n }\n _setVertexBuffer(index, buffer) {\n if (this._boundVertexBuffer[index] === buffer) return;\n this._boundVertexBuffer[index] = buffer;\n this.renderPassEncoder.setVertexBuffer(index, this._renderer.buffer.updateBuffer(buffer));\n }\n _setIndexBuffer(buffer) {\n if (this._boundIndexBuffer === buffer) return;\n this._boundIndexBuffer = buffer;\n const indexFormat = buffer.data.BYTES_PER_ELEMENT === 2 ? \"uint16\" : \"uint32\";\n this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer), indexFormat);\n }\n resetBindGroup(index) {\n this._boundBindGroup[index] = null;\n }\n setBindGroup(index, bindGroup, program) {\n if (this._boundBindGroup[index] === bindGroup) return;\n this._boundBindGroup[index] = bindGroup;\n bindGroup._touch(this._renderer.gc.now, this._renderer.tick);\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n setGeometry(geometry, program) {\n const buffersToBind = this._renderer.pipeline.getBufferNamesToBind(geometry, program);\n for (const i in buffersToBind) {\n this._setVertexBuffer(parseInt(i, 10), geometry.attributes[buffersToBind[i]].buffer);\n }\n if (geometry.indexBuffer) {\n this._setIndexBuffer(geometry.indexBuffer);\n }\n }\n _setShaderBindGroups(shader, skipSync) {\n for (const i in shader.groups) {\n const bindGroup = shader.groups[i];\n if (!skipSync) {\n this._syncBindGroup(bindGroup);\n }\n this.setBindGroup(i, bindGroup, shader.gpuProgram);\n }\n }\n _syncBindGroup(bindGroup) {\n for (const j in bindGroup.resources) {\n const resource = bindGroup.resources[j];\n if (resource.isUniformGroup) {\n this._renderer.ubo.updateUniformGroup(resource);\n }\n }\n }\n draw(options) {\n const { geometry, shader, state, topology, size, start, instanceCount, skipSync } = options;\n this.setPipelineFromGeometryProgramAndState(geometry, shader.gpuProgram, state, topology);\n this.setGeometry(geometry, shader.gpuProgram);\n this._setShaderBindGroups(shader, skipSync);\n if (geometry.indexBuffer) {\n this.renderPassEncoder.drawIndexed(\n size || geometry.indexBuffer.data.length,\n instanceCount ?? geometry.instanceCount,\n start || 0\n );\n } else {\n this.renderPassEncoder.draw(size || geometry.getSize(), instanceCount ?? geometry.instanceCount, start || 0);\n }\n }\n finishRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n this.renderPassEncoder = null;\n }\n }\n postrender() {\n this.finishRenderPass();\n this._gpu.device.queue.submit([this.commandEncoder.finish()]);\n this._resolveCommandFinished();\n this.commandEncoder = null;\n }\n // restores a render pass if finishRenderPass was called\n // not optimised as really used for debugging!\n // used when we want to stop drawing and log a texture..\n restoreRenderPass() {\n const descriptor = this._renderer.renderTarget.adaptor.getDescriptor(\n this._renderer.renderTarget.renderTarget,\n false,\n [0, 0, 0, 1],\n this._renderer.renderTarget.mipLevel,\n this._renderer.renderTarget.layer\n );\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(descriptor);\n const boundPipeline = this._boundPipeline;\n const boundVertexBuffer = { ...this._boundVertexBuffer };\n const boundIndexBuffer = this._boundIndexBuffer;\n const boundBindGroup = { ...this._boundBindGroup };\n this._clearCache();\n const viewport = this._renderer.renderTarget.viewport;\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n this.setPipeline(boundPipeline);\n for (const i in boundVertexBuffer) {\n this._setVertexBuffer(i, boundVertexBuffer[i]);\n }\n for (const i in boundBindGroup) {\n this.setBindGroup(i, boundBindGroup[i], null);\n }\n this._setIndexBuffer(boundIndexBuffer);\n }\n _clearCache() {\n for (let i = 0; i < 16; i++) {\n this._boundBindGroup[i] = null;\n this._boundVertexBuffer[i] = null;\n }\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n destroy() {\n this._renderer = null;\n this._gpu = null;\n this._boundBindGroup = null;\n this._boundVertexBuffer = null;\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n}\n/** @ignore */\nGpuEncoderSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"encoder\",\n priority: 1\n};\n\nexport { GpuEncoderSystem };\n//# sourceMappingURL=GpuEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuLimitsSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n contextChange() {\n this.maxTextures = this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage;\n this.maxBatchableTextures = this.maxTextures;\n }\n destroy() {\n }\n}\n/** @ignore */\nGpuLimitsSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"limits\"\n};\n\nexport { GpuLimitsSystem };\n//# sourceMappingURL=GpuLimitsSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GpuStencilSystem {\n constructor(renderer) {\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this._activeRenderTarget = renderTarget;\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n const renderer = this._renderer;\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n destroy() {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n this._renderer = null;\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n/** @ignore */\nGpuStencilSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"stencil\"\n};\n\nexport { GpuStencilSystem };\n//# sourceMappingURL=GpuStencilSystem.mjs.map\n","\"use strict\";\nconst WGSL_ALIGN_SIZE_DATA = {\n i32: { align: 4, size: 4 },\n u32: { align: 4, size: 4 },\n f32: { align: 4, size: 4 },\n f16: { align: 2, size: 2 },\n \"vec2<i32>\": { align: 8, size: 8 },\n \"vec2<u32>\": { align: 8, size: 8 },\n \"vec2<f32>\": { align: 8, size: 8 },\n \"vec2<f16>\": { align: 4, size: 4 },\n \"vec3<i32>\": { align: 16, size: 12 },\n \"vec3<u32>\": { align: 16, size: 12 },\n \"vec3<f32>\": { align: 16, size: 12 },\n \"vec3<f16>\": { align: 8, size: 6 },\n \"vec4<i32>\": { align: 16, size: 16 },\n \"vec4<u32>\": { align: 16, size: 16 },\n \"vec4<f32>\": { align: 16, size: 16 },\n \"vec4<f16>\": { align: 8, size: 8 },\n \"mat2x2<f32>\": { align: 8, size: 16 },\n \"mat2x2<f16>\": { align: 4, size: 8 },\n \"mat3x2<f32>\": { align: 8, size: 24 },\n \"mat3x2<f16>\": { align: 4, size: 12 },\n \"mat4x2<f32>\": { align: 8, size: 32 },\n \"mat4x2<f16>\": { align: 4, size: 16 },\n \"mat2x3<f32>\": { align: 16, size: 32 },\n \"mat2x3<f16>\": { align: 8, size: 16 },\n \"mat3x3<f32>\": { align: 16, size: 48 },\n \"mat3x3<f16>\": { align: 8, size: 24 },\n \"mat4x3<f32>\": { align: 16, size: 64 },\n \"mat4x3<f16>\": { align: 8, size: 32 },\n \"mat2x4<f32>\": { align: 16, size: 32 },\n \"mat2x4<f16>\": { align: 8, size: 16 },\n \"mat3x4<f32>\": { align: 16, size: 48 },\n \"mat3x4<f16>\": { align: 8, size: 24 },\n \"mat4x4<f32>\": { align: 16, size: 64 },\n \"mat4x4<f16>\": { align: 8, size: 32 }\n};\nfunction createUboElementsWGSL(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n let size = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;\n const align = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;\n if (!WGSL_ALIGN_SIZE_DATA[uboElement.data.type]) {\n throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, align) * uboElement.data.size;\n }\n offset = Math.ceil(offset / align) * align;\n uboElement.size = size;\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_ALIGN_SIZE_DATA, createUboElementsWGSL };\n//# sourceMappingURL=createUboElementsWGSL.mjs.map\n","import { WGSL_ALIGN_SIZE_DATA } from './createUboElementsWGSL.mjs';\n\n\"use strict\";\nfunction generateArraySyncWGSL(uboElement, offsetToAdd) {\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n const remainder = (align - size) / 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n ${offsetToAdd !== 0 ? `offset += ${offsetToAdd};` : \"\"}\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * (size / 4)}; i++)\n {\n for(var j = 0; j < ${size / 4}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncWGSL };\n//# sourceMappingURL=generateArraySyncWGSL.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsWGSL } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncWGSL } from './generateArraySyncWGSL.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionWGSL(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboWgsl\",\n generateArraySyncWGSL,\n uboSyncFunctionsWGSL\n );\n}\n\nexport { createUboSyncFunctionWGSL };\n//# sourceMappingURL=createUboSyncFunctionWGSL.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsWGSL } from './shader/utils/createUboElementsWGSL.mjs';\nimport { createUboSyncFunctionWGSL } from './shader/utils/createUboSyncFunctionWGSL.mjs';\n\n\"use strict\";\nclass GpuUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsWGSL,\n generateUboSync: createUboSyncFunctionWGSL\n });\n }\n}\n/** @ignore */\nGpuUboSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"ubo\"\n};\n\nexport { GpuUboSystem };\n//# sourceMappingURL=GpuUboSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Buffer } from '../shared/buffer/Buffer.mjs';\nimport { BufferResource } from '../shared/buffer/BufferResource.mjs';\nimport { BufferUsage } from '../shared/buffer/const.mjs';\nimport { UboBatch } from './buffer/UboBatch.mjs';\nimport { BindGroup } from './shader/BindGroup.mjs';\n\n\"use strict\";\nconst minUniformOffsetAlignment = 128;\nclass GpuUniformBatchPipe {\n constructor(renderer) {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n // number of buffers..\n this._buffers = [];\n this._bindGroups = [];\n this._bufferResources = [];\n this._renderer = renderer;\n this._batchBuffer = new UboBatch({ minUniformOffsetAlignment });\n const totalBuffers = 256 / minUniformOffsetAlignment;\n for (let i = 0; i < totalBuffers; i++) {\n let usage = BufferUsage.UNIFORM | BufferUsage.COPY_DST;\n if (i === 0) usage |= BufferUsage.COPY_SRC;\n this._buffers.push(new Buffer({\n data: this._batchBuffer.data,\n usage\n }));\n }\n }\n renderEnd() {\n this._uploadBindGroups();\n this._resetBindGroups();\n }\n _resetBindGroups() {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._batchBuffer.clear();\n }\n // just works for single bind groups for now\n getUniformBindGroup(group, duplicate) {\n if (!duplicate && this._bindGroupHash[group.uid]) {\n return this._bindGroupHash[group.uid];\n }\n this._renderer.ubo.ensureUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addEmptyGroup(data.length);\n this._renderer.ubo.syncUniformGroup(group, this._batchBuffer.data, offset / 4);\n this._bindGroupHash[group.uid] = this._getBindGroup(offset / minUniformOffsetAlignment);\n return this._bindGroupHash[group.uid];\n }\n getUboResource(group) {\n this._renderer.ubo.updateUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addGroup(data);\n return this._getBufferResource(offset / minUniformOffsetAlignment);\n }\n getArrayBindGroup(data) {\n const offset = this._batchBuffer.addGroup(data);\n return this._getBindGroup(offset / minUniformOffsetAlignment);\n }\n getArrayBufferResource(data) {\n const offset = this._batchBuffer.addGroup(data);\n const index = offset / minUniformOffsetAlignment;\n return this._getBufferResource(index);\n }\n _getBufferResource(index) {\n if (!this._bufferResources[index]) {\n const buffer = this._buffers[index % 2];\n this._bufferResources[index] = new BufferResource({\n buffer,\n offset: (index / 2 | 0) * 256,\n size: minUniformOffsetAlignment\n });\n }\n return this._bufferResources[index];\n }\n _getBindGroup(index) {\n if (!this._bindGroups[index]) {\n const bindGroup = new BindGroup({\n 0: this._getBufferResource(index)\n });\n this._bindGroups[index] = bindGroup;\n }\n return this._bindGroups[index];\n }\n _uploadBindGroups() {\n const bufferSystem = this._renderer.buffer;\n const firstBuffer = this._buffers[0];\n firstBuffer.update(this._batchBuffer.byteIndex);\n bufferSystem.updateBuffer(firstBuffer);\n const commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n for (let i = 1; i < this._buffers.length; i++) {\n const buffer = this._buffers[i];\n commandEncoder.copyBufferToBuffer(\n bufferSystem.getGPUBuffer(firstBuffer),\n minUniformOffsetAlignment,\n bufferSystem.getGPUBuffer(buffer),\n 0,\n this._batchBuffer.byteIndex\n );\n }\n this._renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n }\n destroy() {\n for (let i = 0; i < this._bindGroups.length; i++) {\n this._bindGroups[i]?.destroy();\n }\n this._bindGroups = null;\n this._bindGroupHash = null;\n for (let i = 0; i < this._buffers.length; i++) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n for (let i = 0; i < this._bufferResources.length; i++) {\n this._bufferResources[i].destroy();\n }\n this._bufferResources = null;\n this._batchBuffer.destroy();\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuUniformBatchPipe.extension = {\n type: [\n ExtensionType.WebGPUPipes\n ],\n name: \"uniformBatch\"\n};\n\nexport { GpuUniformBatchPipe };\n//# sourceMappingURL=GpuUniformBatchPipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { ensureAttributes } from '../../gl/shader/program/ensureAttributes.mjs';\nimport { STENCIL_MODES } from '../../shared/state/const.mjs';\nimport { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { GpuStencilModesToPixi } from '../state/GpuStencilModesToPixi.mjs';\n\n\"use strict\";\nconst topologyStringToId = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 2,\n \"triangle-list\": 3,\n \"triangle-strip\": 4\n};\nfunction getGraphicsStateKey(geometryLayout, shaderKey, state, blendMode, topology) {\n return geometryLayout << 24 | shaderKey << 16 | state << 10 | blendMode << 5 | topology;\n}\nfunction getGlobalStateKey(stencilStateId, multiSampleCount, colorMask, renderTarget, colorTargetCount) {\n return colorMask << 8 | stencilStateId << 5 | renderTarget << 3 | colorTargetCount << 1 | multiSampleCount;\n}\nclass PipelineSystem {\n constructor(renderer) {\n this._moduleCache = /* @__PURE__ */ Object.create(null);\n this._bufferLayoutsCache = /* @__PURE__ */ Object.create(null);\n this._bindingNamesCache = /* @__PURE__ */ Object.create(null);\n this._pipeCache = /* @__PURE__ */ Object.create(null);\n this._pipeStateCaches = /* @__PURE__ */ Object.create(null);\n this._colorMask = 15;\n this._multisampleCount = 1;\n this._colorTargetCount = 1;\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n this.setStencilMode(STENCIL_MODES.DISABLED);\n this._updatePipeHash();\n }\n setMultisampleCount(multisampleCount) {\n if (this._multisampleCount === multisampleCount) return;\n this._multisampleCount = multisampleCount;\n this._updatePipeHash();\n }\n setRenderTarget(renderTarget) {\n this._multisampleCount = renderTarget.msaaSamples;\n this._depthStencilAttachment = renderTarget.descriptor.depthStencilAttachment ? 1 : 0;\n this._colorTargetCount = renderTarget.colorTargetCount;\n this._updatePipeHash();\n }\n setColorMask(colorMask) {\n if (this._colorMask === colorMask) return;\n this._colorMask = colorMask;\n this._updatePipeHash();\n }\n setStencilMode(stencilMode) {\n if (this._stencilMode === stencilMode) return;\n this._stencilMode = stencilMode;\n this._stencilState = GpuStencilModesToPixi[stencilMode];\n this._updatePipeHash();\n }\n setPipeline(geometry, program, state, passEncoder) {\n const pipeline = this.getPipeline(geometry, program, state);\n passEncoder.setPipeline(pipeline);\n }\n getPipeline(geometry, program, state, topology) {\n if (!geometry._layoutKey) {\n ensureAttributes(geometry, program.attributeData);\n this._generateBufferKey(geometry);\n }\n topology || (topology = geometry.topology);\n const key = getGraphicsStateKey(\n geometry._layoutKey,\n program._layoutKey,\n state.data,\n state._blendModeId,\n topologyStringToId[topology]\n );\n if (this._pipeCache[key]) return this._pipeCache[key];\n this._pipeCache[key] = this._createPipeline(geometry, program, state, topology);\n return this._pipeCache[key];\n }\n _createPipeline(geometry, program, state, topology) {\n const device = this._gpu.device;\n const buffers = this._createVertexBufferLayouts(geometry, program);\n const blendModes = this._renderer.state.getColorTargets(state, this._colorTargetCount);\n const writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\n for (let i = 0; i < blendModes.length; i++) {\n blendModes[i].writeMask = writeMask;\n }\n const layout = this._renderer.shader.getProgramData(program).pipeline;\n const descriptor = {\n // TODO later check if its helpful to create..\n // layout,\n vertex: {\n module: this._getModule(program.vertex.source),\n entryPoint: program.vertex.entryPoint,\n // geometry..\n buffers\n },\n fragment: {\n module: this._getModule(program.fragment.source),\n entryPoint: program.fragment.entryPoint,\n targets: blendModes\n },\n primitive: {\n topology,\n cullMode: state.cullMode\n },\n layout,\n multisample: {\n count: this._multisampleCount\n },\n // depthStencil,\n label: `PIXI Pipeline`\n };\n if (this._depthStencilAttachment) {\n descriptor.depthStencil = {\n ...this._stencilState,\n format: \"depth24plus-stencil8\",\n depthWriteEnabled: state.depthTest,\n depthCompare: state.depthTest ? \"less\" : \"always\"\n };\n }\n const pipeline = device.createRenderPipeline(descriptor);\n return pipeline;\n }\n _getModule(code) {\n return this._moduleCache[code] || this._createModule(code);\n }\n _createModule(code) {\n const device = this._gpu.device;\n this._moduleCache[code] = device.createShaderModule({\n code\n });\n return this._moduleCache[code];\n }\n _generateBufferKey(geometry) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(geometry.attributes).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = geometry.attributes[attributeKeys[i]];\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n keyGen[index++] = attribute.instance;\n }\n const stringKey = keyGen.join(\"|\");\n geometry._layoutKey = createIdFromString(stringKey, \"geometry\");\n return geometry._layoutKey;\n }\n _generateAttributeLocationsKey(program) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(program.attributeData).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = program.attributeData[attributeKeys[i]];\n keyGen[index++] = attribute.location;\n }\n const stringKey = keyGen.join(\"|\");\n program._attributeLocationsKey = createIdFromString(stringKey, \"programAttributes\");\n return program._attributeLocationsKey;\n }\n /**\n * Returns a hash of buffer names mapped to bind locations.\n * This is used to bind the correct buffer to the correct location in the shader.\n * @param geometry - The geometry where to get the buffer names\n * @param program - The program where to get the buffer names\n * @returns An object of buffer names mapped to the bind location.\n */\n getBufferNamesToBind(geometry, program) {\n const key = geometry._layoutKey << 16 | program._attributeLocationsKey;\n if (this._bindingNamesCache[key]) return this._bindingNamesCache[key];\n const data = this._createVertexBufferLayouts(geometry, program);\n const bufferNamesToBind = /* @__PURE__ */ Object.create(null);\n const attributeData = program.attributeData;\n for (let i = 0; i < data.length; i++) {\n const attributes = Object.values(data[i].attributes);\n const shaderLocation = attributes[0].shaderLocation;\n for (const j in attributeData) {\n if (attributeData[j].location === shaderLocation) {\n bufferNamesToBind[i] = j;\n break;\n }\n }\n }\n this._bindingNamesCache[key] = bufferNamesToBind;\n return bufferNamesToBind;\n }\n _createVertexBufferLayouts(geometry, program) {\n if (!program._attributeLocationsKey) this._generateAttributeLocationsKey(program);\n const key = geometry._layoutKey << 16 | program._attributeLocationsKey;\n if (this._bufferLayoutsCache[key]) {\n return this._bufferLayoutsCache[key];\n }\n const vertexBuffersLayout = [];\n geometry.buffers.forEach((buffer) => {\n const bufferEntry = {\n arrayStride: 0,\n stepMode: \"vertex\",\n attributes: []\n };\n const bufferEntryAttributes = bufferEntry.attributes;\n for (const i in program.attributeData) {\n const attribute = geometry.attributes[i];\n if ((attribute.divisor ?? 1) !== 1) {\n warn(`Attribute ${i} has an invalid divisor value of '${attribute.divisor}'. WebGPU only supports a divisor value of 1`);\n }\n if (attribute.buffer === buffer) {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? \"instance\" : \"vertex\";\n bufferEntryAttributes.push({\n shaderLocation: program.attributeData[i].location,\n offset: attribute.offset,\n format: attribute.format\n });\n }\n }\n if (bufferEntryAttributes.length) {\n vertexBuffersLayout.push(bufferEntry);\n }\n });\n this._bufferLayoutsCache[key] = vertexBuffersLayout;\n return vertexBuffersLayout;\n }\n _updatePipeHash() {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment,\n this._colorTargetCount\n );\n if (!this._pipeStateCaches[key]) {\n this._pipeStateCaches[key] = /* @__PURE__ */ Object.create(null);\n }\n this._pipeCache = this._pipeStateCaches[key];\n }\n destroy() {\n this._renderer = null;\n this._bufferLayoutsCache = null;\n }\n}\n/** @ignore */\nPipelineSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"pipeline\"\n};\n\nexport { PipelineSystem };\n//# sourceMappingURL=PipelineSystem.mjs.map\n","\"use strict\";\nclass GpuRenderTarget {\n constructor() {\n this.contexts = [];\n this.msaaTextures = [];\n this.msaaSamples = 1;\n }\n}\n\nexport { GpuRenderTarget };\n//# sourceMappingURL=GpuRenderTarget.mjs.map\n","import { CLEAR } from '../../gl/const.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\nimport { GpuRenderTarget } from './GpuRenderTarget.mjs';\n\n\"use strict\";\nclass GpuRenderTargetAdaptor {\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderer = this._renderer;\n const baseGpuTexture = this._getGpuColorTexture(\n sourceRenderSurfaceTexture\n );\n const backGpuTexture = renderer.texture.getGpuSource(\n destinationTexture.source\n );\n renderer.encoder.commandEncoder.copyTextureToTexture(\n {\n texture: baseGpuTexture,\n origin: originSrc\n },\n {\n texture: backGpuTexture,\n origin: originDest\n },\n size\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (layer !== 0 && gpuRenderTarget.msaaTextures?.length) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers is not supported with MSAA render targets.\");\n }\n if (mipLevel > 0 && gpuRenderTarget.msaaTextures?.length) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.\");\n }\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor, mipLevel, layer);\n gpuRenderTarget.descriptor = descriptor;\n this._renderer.pipeline.setRenderTarget(gpuRenderTarget);\n this._renderer.encoder.beginRenderPass(gpuRenderTarget);\n this._renderer.encoder.setViewport(viewport);\n }\n finishRenderPass() {\n this._renderer.encoder.endRenderPass();\n }\n /**\n * returns the gpu texture for the first color texture in the render target\n * mainly used by the filter manager to get copy the texture for blending\n * @param renderTarget\n * @returns a gpu texture\n */\n _getGpuColorTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (gpuRenderTarget.contexts[0]) {\n return gpuRenderTarget.contexts[0].getCurrentTexture();\n }\n return this._renderer.texture.getGpuSource(\n renderTarget.colorTextures[0].source\n );\n }\n getDescriptor(renderTarget, clear, clearValue, mipLevel = 0, layer = 0) {\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const colorAttachments = renderTarget.colorTextures.map(\n (texture, i) => {\n const context = gpuRenderTarget.contexts[i];\n let view;\n let resolveTarget;\n if (context) {\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers is not supported for canvas targets.\");\n }\n const currentTexture = context.getCurrentTexture();\n const canvasTextureView = currentTexture.createView();\n view = canvasTextureView;\n } else {\n view = this._renderer.texture.getGpuSource(texture).createView({\n // Render attachments must be 2d views; for array/cube textures we select a single layer.\n dimension: \"2d\",\n baseMipLevel: mipLevel,\n mipLevelCount: 1,\n baseArrayLayer: layer,\n arrayLayerCount: 1\n });\n }\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: \"store\",\n loadOp\n };\n }\n );\n let depthStencilAttachment;\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture) {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n depthStencilAttachment = {\n view: this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView({\n dimension: \"2d\",\n baseMipLevel: mipLevel,\n mipLevelCount: 1,\n baseArrayLayer: layer,\n arrayLayerCount: 1\n }),\n stencilStoreOp: \"store\",\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: \"store\"\n };\n }\n const descriptor = {\n colorAttachments,\n depthStencilAttachment\n };\n return descriptor;\n }\n clear(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n if (!clear) return;\n const { gpu, encoder } = this._renderer;\n const device = gpu.device;\n const standAlone = encoder.commandEncoder === null;\n if (standAlone) {\n const commandEncoder = device.createCommandEncoder();\n const renderPassDescriptor = this.getDescriptor(renderTarget, clear, clearColor, mipLevel, layer);\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n passEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n passEncoder.end();\n const gpuCommands = commandEncoder.finish();\n device.queue.submit([gpuCommands]);\n } else {\n this.startRenderPass(renderTarget, clear, clearColor, viewport, mipLevel, layer);\n }\n }\n initGpuRenderTarget(renderTarget) {\n renderTarget.isRoot = true;\n const gpuRenderTarget = new GpuRenderTarget();\n gpuRenderTarget.colorTargetCount = renderTarget.colorTextures.length;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (colorTexture instanceof CanvasSource) {\n const context = colorTexture.resource.getContext(\n \"webgpu\"\n );\n const alphaMode = colorTexture.transparent ? \"premultiplied\" : \"opaque\";\n try {\n context.configure({\n device: this._renderer.gpu.device,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,\n format: \"bgra8unorm\",\n alphaMode\n });\n } catch (e) {\n console.error(e);\n }\n gpuRenderTarget.contexts[i] = context;\n }\n gpuRenderTarget.msaa = colorTexture.source.antialias;\n if (colorTexture.source.antialias) {\n const msaaTexture = new TextureSource({\n width: 0,\n height: 0,\n sampleCount: 4,\n arrayLayerCount: colorTexture.source.arrayLayerCount\n });\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n if (gpuRenderTarget.msaa) {\n gpuRenderTarget.msaaSamples = 4;\n if (renderTarget.depthStencilTexture) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n return gpuRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n gpuRenderTarget.contexts.forEach((context) => {\n context.unconfigure();\n });\n gpuRenderTarget.msaaTextures.forEach((texture) => {\n texture.destroy();\n });\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n ensureDepthStencilTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n resizeGpuRenderTarget(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n if (gpuRenderTarget.msaa) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n\nexport { GpuRenderTargetAdaptor };\n//# sourceMappingURL=GpuRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GpuRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GpuRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGpuRenderTargetSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"renderTarget\"\n};\n\nexport { GpuRenderTargetSystem };\n//# sourceMappingURL=GpuRenderTargetSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuShaderSystem {\n constructor() {\n this._gpuProgramData = /* @__PURE__ */ Object.create(null);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getProgramData(program) {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n _createGPUProgramData(program) {\n const device = this._gpu.device;\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc)\n };\n return this._gpuProgramData[program._layoutKey];\n }\n destroy() {\n this._gpu = null;\n this._gpuProgramData = null;\n }\n}\n/** @ignore */\nGpuShaderSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"shader\"\n};\n\nexport { GpuShaderSystem };\n//# sourceMappingURL=GpuShaderSystem.mjs.map\n","\"use strict\";\nconst GpuBlendModesToPixi = {};\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"dst\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"zero\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"normal-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"add-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"screen-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.min = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"min\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"min\"\n }\n};\nGpuBlendModesToPixi.max = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"max\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"max\"\n }\n};\n\nexport { GpuBlendModesToPixi };\n//# sourceMappingURL=GpuBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { GpuBlendModesToPixi } from './GpuBlendModesToPixi.mjs';\n\n\"use strict\";\nclass GpuStateSystem {\n constructor() {\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gpu) {\n this.gpu = gpu;\n }\n /**\n * Gets the blend mode data for the current state\n * @param state - The state to get the blend mode from\n * @param count - The number of color targets to create\n */\n getColorTargets(state, count) {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n const targets = [];\n const target = {\n format: \"bgra8unorm\",\n writeMask: 0,\n blend\n };\n for (let i = 0; i < count; i++) {\n targets[i] = target;\n }\n return targets;\n }\n destroy() {\n this.gpu = null;\n }\n}\n/** @ignore */\nGpuStateSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"state\"\n};\n\nexport { GpuStateSystem };\n//# sourceMappingURL=GpuStateSystem.mjs.map\n","\"use strict\";\nconst gpuUploadBufferImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n const resource = source.resource;\n const total = (source.pixelWidth | 0) * (source.pixelHeight | 0);\n const bytesPerPixel = resource.byteLength / total;\n gpu.device.queue.writeTexture(\n { texture: gpuTexture, origin: { x: 0, y: 0, z: originZOverride } },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelWidth * bytesPerPixel\n },\n {\n width: source.pixelWidth,\n height: source.pixelHeight,\n depthOrArrayLayers: 1\n }\n );\n }\n};\n\nexport { gpuUploadBufferImageResource };\n//# sourceMappingURL=gpuUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst blockDataMap = {\n \"bc1-rgba-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"bc2-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc3-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc7-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"etc1-rgb-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"etc2-rgba8unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"astc-4x4-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 }\n};\nconst defaultBlockData = { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\nconst gpuUploadCompressedTextureResource = {\n type: \"compressed\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const blockData = blockDataMap[source.format] || defaultBlockData;\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n const bytesPerRow = Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockBytes;\n gpu.device.queue.writeTexture(\n {\n texture: gpuTexture,\n mipLevel: i,\n origin: { x: 0, y: 0, z: originZOverride }\n },\n levelBuffer,\n {\n offset: 0,\n bytesPerRow\n },\n {\n width: Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockWidth,\n height: Math.ceil(mipHeight / blockData.blockHeight) * blockData.blockHeight,\n depthOrArrayLayers: 1\n }\n );\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { blockDataMap, gpuUploadCompressedTextureResource };\n//# sourceMappingURL=gpuUploadCompressedTextureResource.mjs.map\n","\"use strict\";\nconst FACE_ORDER = [\"right\", \"left\", \"top\", \"bottom\", \"front\", \"back\"];\nfunction createGpuUploadCubeTextureResource(uploaders) {\n return {\n type: \"cube\",\n upload(source, gpuTexture, gpu) {\n const faces = source.faces;\n for (let i = 0; i < FACE_ORDER.length; i++) {\n const key = FACE_ORDER[i];\n const face = faces[key];\n const uploader = uploaders[face.uploadMethodId] || uploaders.image;\n uploader.upload(face, gpuTexture, gpu, i);\n }\n }\n };\n}\n\nexport { createGpuUploadCubeTextureResource };\n//# sourceMappingURL=gpuUploadCubeTextureResource.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\nimport { warn } from '../../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst gpuUploadImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu, originZOverride = 0) {\n const resource = source.resource;\n if (!resource) return;\n if (globalThis.HTMLImageElement && resource instanceof HTMLImageElement) {\n const canvas = DOMAdapter.get().createCanvas(resource.width, resource.height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(resource, 0, 0, resource.width, resource.height);\n source.resource = canvas;\n warn(\"ImageSource: Image element passed, converting to canvas and replacing resource.\");\n }\n const width = Math.min(gpuTexture.width, source.resourceWidth || source.pixelWidth);\n const height = Math.min(gpuTexture.height, source.resourceHeight || source.pixelHeight);\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n gpu.device.queue.copyExternalImageToTexture(\n { source: resource },\n { texture: gpuTexture, origin: { x: 0, y: 0, z: originZOverride }, premultipliedAlpha },\n {\n width,\n height\n }\n );\n }\n};\n\nexport { gpuUploadImageResource };\n//# sourceMappingURL=gpuUploadImageSource.mjs.map\n","import { gpuUploadImageResource } from './gpuUploadImageSource.mjs';\n\n\"use strict\";\nconst gpuUploadVideoResource = {\n type: \"video\",\n upload(source, gpuTexture, gpu, originZOverride) {\n gpuUploadImageResource.upload(source, gpuTexture, gpu, originZOverride);\n }\n};\n\nexport { gpuUploadVideoResource };\n//# sourceMappingURL=gpuUploadVideoSource.mjs.map\n","\"use strict\";\nclass GpuMipmapGenerator {\n constructor(device) {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: \"linear\" });\n this.pipelines = {};\n }\n _getMipmapPipeline(format) {\n let pipeline = this.pipelines[format];\n if (!pipeline) {\n if (!this.mipmapShaderModule) {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: (\n /* wgsl */\n `\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n `\n )\n });\n }\n pipeline = this.device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: \"vertexMain\"\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: \"fragmentMain\",\n targets: [{ format }]\n }\n });\n this.pipelines[format] = pipeline;\n }\n return pipeline;\n }\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n generateMipmap(texture) {\n const pipeline = this._getMipmapPipeline(texture.format);\n if (texture.dimension === \"3d\" || texture.dimension === \"1d\") {\n throw new Error(\"Generating mipmaps for non-2d textures is currently unsupported!\");\n }\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1;\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n if (!renderToSource) {\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1\n };\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n const commandEncoder = this.device.createCommandEncoder({});\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer) {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n let dstMipLevel = renderToSource ? 1 : 0;\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: \"store\",\n loadOp: \"clear\",\n clearValue: { r: 0, g: 0, b: 0, a: 0 }\n }]\n });\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler\n }, {\n binding: 1,\n resource: srcView\n }]\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n passEncoder.end();\n srcView = dstView;\n }\n }\n if (!renderToSource) {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n };\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1\n }, {\n texture,\n mipLevel: i\n }, mipLevelSize);\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n this.device.queue.submit([commandEncoder.finish()]);\n if (!renderToSource) {\n mipTexture.destroy();\n }\n return texture;\n }\n}\n\nexport { GpuMipmapGenerator };\n//# sourceMappingURL=GpuMipmapGenerator.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { CanvasPool } from '../../shared/texture/CanvasPool.mjs';\nimport { BindGroup } from '../shader/BindGroup.mjs';\nimport { gpuUploadBufferImageResource } from './uploaders/gpuUploadBufferImageResource.mjs';\nimport { gpuUploadCompressedTextureResource, blockDataMap } from './uploaders/gpuUploadCompressedTextureResource.mjs';\nimport { createGpuUploadCubeTextureResource } from './uploaders/gpuUploadCubeTextureResource.mjs';\nimport { gpuUploadImageResource } from './uploaders/gpuUploadImageSource.mjs';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource.mjs';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator.mjs';\n\n\"use strict\";\nclass GPUTextureGpuData {\n constructor(gpuTexture) {\n this.textureView = null;\n this.gpuTexture = gpuTexture;\n }\n /** Destroys this GPU data instance. */\n destroy() {\n this.gpuTexture.destroy();\n this.textureView = null;\n this.gpuTexture = null;\n }\n}\nclass GpuTextureSystem {\n constructor(renderer) {\n this._gpuSamplers = /* @__PURE__ */ Object.create(null);\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.gc.addCollection(this, \"_bindGroupHash\", \"hash\");\n this._managedTextures = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onSourceUnload.bind(this),\n name: \"gpuTextureSource\"\n });\n const baseUploaders = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n this._uploads = {\n ...baseUploaders,\n cube: createGpuUploadCubeTextureResource(baseUploaders)\n };\n }\n /**\n * @deprecated since 8.15.0\n */\n get managedTextures() {\n return Object.values(this._managedTextures.items);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n /**\n * Initializes a texture source, if it has already been initialized nothing will happen.\n * @param source - The texture source to initialize.\n * @returns The initialized texture source.\n */\n initSource(source) {\n return source._gpuData[this._renderer.uid]?.gpuTexture || this._initSource(source);\n }\n _initSource(source) {\n if (source.autoGenerateMipmaps) {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n const textureDescriptor = {\n label: source.label,\n size: { width, height, depthOrArrayLayers: source.arrayLayerCount },\n format: source.format,\n sampleCount: source.sampleCount,\n mipLevelCount: source.mipLevelCount,\n dimension: source.dimension,\n usage\n };\n const gpuTexture = this._gpu.device.createTexture(textureDescriptor);\n source._gpuData[this._renderer.uid] = new GPUTextureGpuData(gpuTexture);\n const added = this._managedTextures.add(source);\n if (added) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceResize, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n this.onSourceUpdate(source);\n return gpuTexture;\n }\n onSourceUpdate(source) {\n const gpuTexture = this.getGpuSource(source);\n if (!gpuTexture) return;\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, gpuTexture, this._gpu);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source);\n }\n }\n onUpdateMipmaps(source) {\n if (!this._mipmapGenerator) {\n this._mipmapGenerator = new GpuMipmapGenerator(this._gpu.device);\n }\n const gpuTexture = this.getGpuSource(source);\n this._mipmapGenerator.generateMipmap(gpuTexture);\n }\n onSourceUnload(source) {\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceResize, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n onSourceResize(source) {\n source._gcLastUsed = this._renderer.gc.now;\n const gpuData = source._gpuData[this._renderer.uid];\n const gpuTexture = gpuData?.gpuTexture;\n if (!gpuTexture) {\n this.initSource(source);\n } else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight) {\n gpuData.destroy();\n this._bindGroupHash[source.uid] = null;\n source._gpuData[this._renderer.uid] = null;\n this.initSource(source);\n }\n }\n _initSampler(sampler) {\n this._gpuSamplers[sampler._resourceId] = this._gpu.device.createSampler(sampler);\n return this._gpuSamplers[sampler._resourceId];\n }\n getGpuSampler(sampler) {\n return this._gpuSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGpuSource(source) {\n source._gcLastUsed = this._renderer.gc.now;\n return source._gpuData[this._renderer.uid]?.gpuTexture || this.initSource(source);\n }\n /**\n * this returns s bind group for a specific texture, the bind group contains\n * - the texture source\n * - the texture style\n * - the texture matrix\n * This is cached so the bind group should only be created once per texture\n * @param texture - the texture you want the bindgroup for\n * @returns the bind group for the texture\n */\n getTextureBindGroup(texture) {\n return this._bindGroupHash[texture.uid] || this._createTextureBindGroup(texture);\n }\n _createTextureBindGroup(texture) {\n const source = texture.source;\n this._bindGroupHash[texture.uid] = new BindGroup({\n 0: source,\n 1: source.style,\n 2: new UniformGroup({\n uTextureMatrix: { type: \"mat3x3<f32>\", value: texture.textureMatrix.mapCoord }\n })\n });\n return this._bindGroupHash[texture.uid];\n }\n getTextureView(texture) {\n const source = texture.source;\n source._gcLastUsed = this._renderer.gc.now;\n let gpuData = source._gpuData[this._renderer.uid];\n if (!gpuData) {\n this.initSource(source);\n gpuData = source._gpuData[this._renderer.uid];\n }\n gpuData.textureView || (gpuData.textureView = gpuData.gpuTexture.createView({ dimension: source.viewDimension }));\n return gpuData.textureView;\n }\n generateCanvas(texture) {\n const renderer = this._renderer;\n const commandEncoder = renderer.gpu.device.createCommandEncoder();\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = texture.source.pixelWidth;\n canvas.height = texture.source.pixelHeight;\n const context = canvas.getContext(\"webgpu\");\n context.configure({\n device: renderer.gpu.device,\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: DOMAdapter.get().getNavigator().gpu.getPreferredCanvasFormat(),\n alphaMode: \"premultiplied\"\n });\n commandEncoder.copyTextureToTexture({\n texture: renderer.texture.getGpuSource(texture.source),\n origin: {\n x: 0,\n y: 0\n }\n }, {\n texture: context.getCurrentTexture()\n }, {\n width: canvas.width,\n height: canvas.height\n });\n renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n return canvas;\n }\n getPixels(texture) {\n const webGPUCanvas = this.generateCanvas(texture);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(webGPUCanvas.width, webGPUCanvas.height);\n const context = canvasAndContext.context;\n context.drawImage(webGPUCanvas, 0, 0);\n const { width, height } = webGPUCanvas;\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = new Uint8ClampedArray(imageData.data.buffer);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return { pixels, width, height };\n }\n destroy() {\n this._managedTextures.destroy();\n for (const k of Object.keys(this._bindGroupHash)) {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n bindGroup?.destroy();\n }\n this._renderer = null;\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSamplers = null;\n this._bindGroupHash = null;\n }\n}\n/** @ignore */\nGpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n\nexport { GPUTextureGpuData, GpuTextureSystem };\n//# sourceMappingURL=GpuTextureSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GpuGraphicsAdaptor {\n constructor() {\n this._maxTextures = 0;\n }\n contextChange(renderer) {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this._maxTextures = renderer.limits.maxBatchableTextures;\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"graphics\",\n bits: [\n colorBit,\n generateTextureBatchBit(this._maxTextures),\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n batcher,\n instructions\n } = contextSystem.getContextRenderData(context);\n const encoder = renderer.encoder;\n encoder.setGeometry(batcher.geometry, shader.gpuProgram);\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n const localBindGroup = renderer.renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n const batches = instructions.instructions;\n let topology = null;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n if (batch.topology !== topology) {\n topology = batch.topology;\n encoder.setPipelineFromGeometryProgramAndState(\n batcher.geometry,\n shader.gpuProgram,\n graphicsPipe.state,\n batch.topology\n );\n }\n shader.groups[1] = batch.bindGroup;\n if (!batch.gpuBindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(\n textureBatch.textures,\n textureBatch.count,\n this._maxTextures\n );\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n shader.gpuProgram,\n 1\n );\n }\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGpuGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GpuGraphicsAdaptor };\n//# sourceMappingURL=GpuGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GpuMeshAdapter {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"mesh\",\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n shader.groups[2] = renderer.texture.getTextureBindGroup(mesh.texture);\n } else if (!shader.gpuProgram) {\n warn(\"Mesh shader has no gpuProgram\", mesh.shader);\n return;\n }\n const gpuProgram = shader.gpuProgram;\n if (gpuProgram.autoAssignGlobalUniforms) {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n if (gpuProgram.autoAssignLocalUniforms) {\n const localUniforms = meshPipe.localUniforms;\n shader.groups[1] = renderer.renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuMeshAdapter.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GpuMeshAdapter };\n//# sourceMappingURL=GpuMeshAdapter.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuGraphicsAdaptor } from '../../../scene/graphics/gpu/GpuGraphicsAdaptor.mjs';\nimport { GpuMeshAdapter } from '../../../scene/mesh/gpu/GpuMeshAdapter.mjs';\nimport { GpuBatchAdaptor } from '../../batcher/gpu/GpuBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { BindGroupSystem } from './BindGroupSystem.mjs';\nimport { GpuBufferSystem } from './buffer/GpuBufferSystem.mjs';\nimport { GpuColorMaskSystem } from './GpuColorMaskSystem.mjs';\nimport { GpuDeviceSystem } from './GpuDeviceSystem.mjs';\nimport { GpuEncoderSystem } from './GpuEncoderSystem.mjs';\nimport { GpuLimitsSystem } from './GpuLimitsSystem.mjs';\nimport { GpuStencilSystem } from './GpuStencilSystem.mjs';\nimport { GpuUboSystem } from './GpuUboSystem.mjs';\nimport { GpuUniformBatchPipe } from './GpuUniformBatchPipe.mjs';\nimport { PipelineSystem } from './pipeline/PipelineSystem.mjs';\nimport { GpuRenderTargetSystem } from './renderTarget/GpuRenderTargetSystem.mjs';\nimport { GpuShaderSystem } from './shader/GpuShaderSystem.mjs';\nimport { GpuStateSystem } from './state/GpuStateSystem.mjs';\nimport { GpuTextureSystem } from './texture/GpuTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGPUSystems = [\n ...SharedSystems,\n GpuUboSystem,\n GpuEncoderSystem,\n GpuDeviceSystem,\n GpuLimitsSystem,\n GpuBufferSystem,\n GpuTextureSystem,\n GpuRenderTargetSystem,\n GpuShaderSystem,\n GpuStateSystem,\n PipelineSystem,\n GpuColorMaskSystem,\n GpuStencilSystem,\n BindGroupSystem\n];\nconst DefaultWebGPUPipes = [...SharedRenderPipes, GpuUniformBatchPipe];\nconst DefaultWebGPUAdapters = [GpuBatchAdaptor, GpuMeshAdapter, GpuGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGPUSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGPUPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGPUSystems, ...DefaultWebGPUPipes, ...DefaultWebGPUAdapters);\nclass WebGPURenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgpu\",\n type: RendererType.WEBGPU,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGPURenderer };\n//# sourceMappingURL=WebGPURenderer.mjs.map\n"],"names":["minUniformOffsetAlignment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]}
|