brain0 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,42 @@
1
+ import{y as D,a as k,j as l,z,e as le,H as fe,D as T,c as C,d as B,B as ge,I as O,J as R,w as v,K as y,q as me,L as _e,N as F,O as E,r as G,M as I,Q as W,V as be,W as H,X as xe,S as N,T as A,A as ye,R as Ge}from"./index-QopGLZI_.js";import{c as Pe,u as Se,U as Te,B as Be,G as Ce,e as ve,l as Ue,a as Me,t as we}from"./BufferResource-VGpCfGWQ.js";import{R as Re,S as Ee,d as Ae}from"./RenderTargetSystem-DxpnxrEz.js";import"./Filter-DBNO82oR.js";const P=k.for2d();class V{start(e,t,r){const s=e.renderer,i=s.encoder,n=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,n),P.blendMode="normal",s.pipeline.getPipeline(t,n,P);const o=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,n)}execute(e,t){const r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){const u=t.textures;t.bindGroup=D(u.textures,u.count,s.limits.maxBatchableTextures)}P.blendMode=t.blendMode;const n=s.bindGroup.getBindGroup(t.bindGroup,r,1),o=s.pipeline.getPipeline(this._geometry,r,P,t.topology);t.bindGroup._touch(s.gc.now,s.tick),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,n),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}}V.extension={type:[l.WebGPUPipesAdaptor],name:"batch"};class j{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){const s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(const f in i){const h=e.resources[f]??e.resources[i[f]];let p;if(h._resourceType==="uniformGroup"){const d=h;o.ubo.updateUniformGroup(d);const m=d.buffer;p={buffer:o.buffer.getGPUBuffer(m),offset:0,size:m.descriptor.size}}else if(h._resourceType==="buffer"){const d=h;p={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(h._resourceType==="bufferResource"){const d=h;p={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(h._resourceType==="textureSampler"){const d=h;p=o.texture.getGpuSampler(d)}else if(h._resourceType==="textureSource"){const d=h;p=o.texture.getTextureView(d)}n.push({binding:i[f],resource:p})}const u=o.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:n});return this._hash[e._key]=c,c}destroy(){this._hash=null,this._renderer=null}}j.extension={type:[l.WebGPUSystem],name:"bindGroup"};class Le{constructor(e){this.gpuBuffer=e}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class K{constructor(e){this._renderer=e,this._managedBuffers=new z({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(e){this._gpu=e}getGPUBuffer(e){var t;return e._gcLastUsed=this._renderer.gc.now,((t=e._gpuData[this._renderer.uid])==null?void 0:t.gpuBuffer)||this.createGPUBuffer(e)}updateBuffer(e){const t=this.getGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(e){e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this)}createGPUBuffer(e){const t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e._resourceId=le("resource"),e.data&&(fe(e.data.buffer,t.getMappedRange(),e.data.byteOffset,e.data.byteLength),t.unmap()),e._gpuData[this._renderer.uid]=new Le(t),this._managedBuffers.add(e)&&(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this)),t}onBufferChange(e){this._managedBuffers.remove(e),e._updateID=0,this.createGPUBuffer(e)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}K.extension={type:[l.WebGPUSystem],name:"buffer"};class De{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${e*4}`);const t=this.byteIndex;let r=t+e*4;if(r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,r>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){const t=this.addEmptyGroup(e.length);for(let r=0;r<e.length;r++)this.data[t/4+r]=e[r];return t}destroy(){this.data=null}}class q{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}}q.extension={type:[l.WebGPUSystem],name:"colorMask"};class U{constructor(e){this._renderer=e}async init(e){return this._initPromise?this._initPromise:(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(t=>{this.gpu=t,this.extensions={transientAttachment:typeof GPUTextureUsage.TRANSIENT_ATTACHMENT=="number"},this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){const t=await T.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this.extensions=null,this._renderer=null}}U.extension={type:[l.WebGPUSystem],name:"device"};U.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class Y{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){const i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;const t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.gc.now,this._renderer.tick);const s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){const r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(const s in r)this._setVertexBuffer(parseInt(s,10),e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(const r in e.groups){const s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(const t in e.resources){const r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){const{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,u??t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),u??t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);const t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();const n=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t);for(const o in r)this._setVertexBuffer(o,r[o]);for(const o in i)this.setBindGroup(o,i[o],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}}Y.extension={type:[l.WebGPUSystem],name:"encoder",priority:1};class ${constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}$.extension={type:[l.WebGPUSystem],name:"limits"};class X{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:C.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){const r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;const s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}X.extension={type:[l.WebGPUSystem],name:"stencil"};const S={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function ke(a){const e=a.map(r=>({data:r,offset:0,size:0}));let t=0;for(let r=0;r<e.length;r++){const s=e[r];let i=S[s.data.type].size;const n=S[s.data.type].align;if(!S[s.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${s.data.type}`);s.data.size>1&&(i=Math.max(i,n)*s.data.size),t=Math.ceil(t/n)*n,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function ze(a,e){const{size:t,align:r}=S[a.data.type],s=(r-t)/4,i=a.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
2
+ v = uv.${a.data.name};
3
+ ${e!==0?`offset += ${e};`:""}
4
+
5
+ arrayOffset = offset;
6
+
7
+ t = 0;
8
+
9
+ for(var i=0; i < ${a.data.size*(t/4)}; i++)
10
+ {
11
+ for(var j = 0; j < ${t/4}; j++)
12
+ {
13
+ ${i}[arrayOffset++] = v[t++];
14
+ }
15
+ ${s!==0?`arrayOffset += ${s};`:""}
16
+ }
17
+ `}function Oe(a){return Pe(a,"uboWgsl",ze,Se)}class J extends Te{constructor(){super({createUboElements:ke,generateUboSync:Oe})}}J.extension={type:[l.WebGPUSystem],name:"ubo"};const b=128;class Q{constructor(e){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=e,this._batchBuffer=new De({minUniformOffsetAlignment:b});const t=256/b;for(let r=0;r<t;r++){let s=B.UNIFORM|B.COPY_DST;r===0&&(s|=B.COPY_SRC),this._buffers.push(new ge({data:this._batchBuffer.data,usage:s}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){this._bindGroupHash=Object.create(null),this._batchBuffer.clear()}getUniformBindGroup(e,t){if(!t&&this._bindGroupHash[e.uid])return this._bindGroupHash[e.uid];this._renderer.ubo.ensureUniformGroup(e);const r=e.buffer.data,s=this._batchBuffer.addEmptyGroup(r.length);return this._renderer.ubo.syncUniformGroup(e,this._batchBuffer.data,s/4),this._bindGroupHash[e.uid]=this._getBindGroup(s/b),this._bindGroupHash[e.uid]}getUboResource(e){this._renderer.ubo.updateUniformGroup(e);const t=e.buffer.data,r=this._batchBuffer.addGroup(t);return this._getBufferResource(r/b)}getArrayBindGroup(e){const t=this._batchBuffer.addGroup(e);return this._getBindGroup(t/b)}getArrayBufferResource(e){const r=this._batchBuffer.addGroup(e)/b;return this._getBufferResource(r)}_getBufferResource(e){if(!this._bufferResources[e]){const t=this._buffers[e%2];this._bufferResources[e]=new Be({buffer:t,offset:(e/2|0)*256,size:b})}return this._bufferResources[e]}_getBindGroup(e){if(!this._bindGroups[e]){const t=new O({0:this._getBufferResource(e)});this._bindGroups[e]=t}return this._bindGroups[e]}_uploadBindGroups(){const e=this._renderer.buffer,t=this._buffers[0];t.update(this._batchBuffer.byteIndex),e.updateBuffer(t);const r=this._renderer.gpu.device.createCommandEncoder();for(let s=1;s<this._buffers.length;s++){const i=this._buffers[s];r.copyBufferToBuffer(e.getGPUBuffer(t),b,e.getGPUBuffer(i),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([r.finish()])}destroy(){var e;for(let t=0;t<this._bindGroups.length;t++)(e=this._bindGroups[t])==null||e.destroy();this._bindGroups=null,this._bindGroupHash=null;for(let t=0;t<this._buffers.length;t++)this._buffers[t].destroy();this._buffers=null;for(let t=0;t<this._bufferResources.length;t++)this._bufferResources[t].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._renderer=null}}Q.extension={type:[l.WebGPUPipes],name:"uniformBatch"};const Fe={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};function Ie(a,e,t,r,s){return a<<24|e<<16|t<<10|r<<5|s}function We(a,e,t,r,s){return t<<8|a<<5|r<<3|s<<1|e}class Z{constructor(e){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._bindingNamesCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._colorTargetCount=1,this._renderer=e}contextChange(e){this._gpu=e,this.setStencilMode(C.DISABLED),this._updatePipeHash()}setMultisampleCount(e){this._multisampleCount!==e&&(this._multisampleCount=e,this._updatePipeHash())}setRenderTarget(e){this._multisampleCount=e.msaaSamples,this._depthStencilAttachment=e.descriptor.depthStencilAttachment?1:0,this._colorTargetCount=e.colorTargetCount,this._updatePipeHash()}setColorMask(e){this._colorMask!==e&&(this._colorMask=e,this._updatePipeHash())}setStencilMode(e){this._stencilMode!==e&&(this._stencilMode=e,this._stencilState=Ce[e],this._updatePipeHash())}setPipeline(e,t,r,s){const i=this.getPipeline(e,t,r);s.setPipeline(i)}getPipeline(e,t,r,s){e._layoutKey||(ve(e,t.attributeData),this._generateBufferKey(e)),s||(s=e.topology);const i=Ie(e._layoutKey,t._layoutKey,r.data,r._blendModeId,Fe[s]);return this._pipeCache[i]?this._pipeCache[i]:(this._pipeCache[i]=this._createPipeline(e,t,r,s),this._pipeCache[i])}_createPipeline(e,t,r,s){const i=this._gpu.device,n=this._createVertexBufferLayouts(e,t),o=this._renderer.state.getColorTargets(r,this._colorTargetCount),u=this._stencilMode===C.RENDERING_MASK_ADD?0:this._colorMask;for(let p=0;p<o.length;p++)o[p].writeMask=u;const c=this._renderer.shader.getProgramData(t).pipeline,f={vertex:{module:this._getModule(t.vertex.source),entryPoint:t.vertex.entryPoint,buffers:n},fragment:{module:this._getModule(t.fragment.source),entryPoint:t.fragment.entryPoint,targets:o},primitive:{topology:s,cullMode:r.cullMode},layout:c,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(f.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:r.depthTest,depthCompare:r.depthTest?"less":"always"}),i.createRenderPipeline(f)}_getModule(e){return this._moduleCache[e]||this._createModule(e)}_createModule(e){const t=this._gpu.device;return this._moduleCache[e]=t.createShaderModule({code:e}),this._moduleCache[e]}_generateBufferKey(e){const t=[];let r=0;const s=Object.keys(e.attributes).sort();for(let n=0;n<s.length;n++){const o=e.attributes[s[n]];t[r++]=o.offset,t[r++]=o.format,t[r++]=o.stride,t[r++]=o.instance}const i=t.join("|");return e._layoutKey=R(i,"geometry"),e._layoutKey}_generateAttributeLocationsKey(e){const t=[];let r=0;const s=Object.keys(e.attributeData).sort();for(let n=0;n<s.length;n++){const o=e.attributeData[s[n]];t[r++]=o.location}const i=t.join("|");return e._attributeLocationsKey=R(i,"programAttributes"),e._attributeLocationsKey}getBufferNamesToBind(e,t){const r=e._layoutKey<<16|t._attributeLocationsKey;if(this._bindingNamesCache[r])return this._bindingNamesCache[r];const s=this._createVertexBufferLayouts(e,t),i=Object.create(null),n=t.attributeData;for(let o=0;o<s.length;o++){const c=Object.values(s[o].attributes)[0].shaderLocation;for(const f in n)if(n[f].location===c){i[o]=f;break}}return this._bindingNamesCache[r]=i,i}_createVertexBufferLayouts(e,t){t._attributeLocationsKey||this._generateAttributeLocationsKey(t);const r=e._layoutKey<<16|t._attributeLocationsKey;if(this._bufferLayoutsCache[r])return this._bufferLayoutsCache[r];const s=[];return e.buffers.forEach(i=>{const n={arrayStride:0,stepMode:"vertex",attributes:[]},o=n.attributes;for(const u in t.attributeData){const c=e.attributes[u];(c.divisor??1)!==1&&v(`Attribute ${u} has an invalid divisor value of '${c.divisor}'. WebGPU only supports a divisor value of 1`),c.buffer===i&&(n.arrayStride=c.stride,n.stepMode=c.instance?"instance":"vertex",o.push({shaderLocation:t.attributeData[u].location,offset:c.offset,format:c.format}))}o.length&&s.push(n)}),this._bufferLayoutsCache[r]=s,s}_updatePipeHash(){const e=We(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment,this._colorTargetCount);this._pipeStateCaches[e]||(this._pipeStateCaches[e]=Object.create(null)),this._pipeCache=this._pipeStateCaches[e]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}Z.extension={type:[l.WebGPUSystem],name:"pipeline"};class He{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class Ne{init(e,t){this._renderer=e,this._renderTargetSystem=t}copyToTexture(e,t,r,s,i){const n=this._renderer,o=this._getGpuColorTexture(e),u=n.texture.getGpuSource(t.source);return n.encoder.commandEncoder.copyTextureToTexture({texture:o,origin:r},{texture:u,origin:i},s),t}startRenderPass(e,t=!0,r,s,i=0,n=0){var f,h;const u=this._renderTargetSystem.getGpuRenderTarget(e);if(n!==0&&((f=u.msaaTextures)!=null&&f.length))throw new Error("[RenderTargetSystem] Rendering to array layers is not supported with MSAA render targets.");if(i>0&&((h=u.msaaTextures)!=null&&h.length))throw new Error("[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.");const c=this.getDescriptor(e,t,r,i,n);u.descriptor=c,this._renderer.pipeline.setRenderTarget(u),this._renderer.encoder.beginRenderPass(u),this._renderer.encoder.setViewport(s)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(e){const t=this._renderTargetSystem.getGpuRenderTarget(e);return t.contexts[0]?t.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(e.colorTextures[0].source)}getDescriptor(e,t,r,s=0,i=0){var h;typeof t=="boolean"&&(t=t?y.ALL:y.NONE);const n=this._renderTargetSystem,o=n.getGpuRenderTarget(e),u=e.colorTextures.map((p,d)=>{const m=o.contexts[d];let g,x;if(m){if(i!==0)throw new Error("[RenderTargetSystem] Rendering to array layers is not supported for canvas targets.");g=m.getCurrentTexture().createView()}else g=this._renderer.texture.getGpuSource(p).createView({dimension:"2d",baseMipLevel:s,mipLevelCount:1,baseArrayLayer:i,arrayLayerCount:1});let w=!1;o.msaaTextures[d]&&(x=g,g=this._renderer.texture.getTextureView(o.msaaTextures[d]),w=o.msaaTextures[d].transient);const pe=t&y.COLOR?"clear":"load";return r??(r=n.defaultClearColor),{view:g,resolveTarget:x,clearValue:r,storeOp:w?"discard":"store",loadOp:pe}});let c;if((e.stencil||e.depth)&&!e.depthStencilTexture&&(e.ensureDepthStencilTexture(),e.depthStencilTexture.source.sampleCount=o.msaa?4:1,e.depthStencilTexture.source.transient=!!((h=o.msaaTextures[0])!=null&&h.transient)),e.depthStencilTexture){const p=t&y.STENCIL?"clear":"load",d=t&y.DEPTH?"clear":"load",m=e.depthStencilTexture.source.transient?"discard":"store";c={view:this._renderer.texture.getGpuSource(e.depthStencilTexture.source).createView({dimension:"2d",baseMipLevel:s,mipLevelCount:1,baseArrayLayer:i,arrayLayerCount:1}),stencilStoreOp:m,stencilLoadOp:p,depthClearValue:1,depthLoadOp:d,depthStoreOp:m}}return{colorAttachments:u,depthStencilAttachment:c}}clear(e,t=!0,r,s,i=0,n=0){if(!t)return;const{gpu:o,encoder:u}=this._renderer,c=o.device;if(u.commandEncoder===null){const h=c.createCommandEncoder(),p=this.getDescriptor(e,t,r,i,n),d=h.beginRenderPass(p);d.setViewport(s.x,s.y,s.width,s.height,0,1),d.end();const m=h.finish();c.queue.submit([m])}else this.startRenderPass(e,t,r,s,i,n)}initGpuRenderTarget(e){var r;e.isRoot=!0;const t=new He;return t.colorTargetCount=e.colorTextures.length,e.colorTextures.forEach((s,i)=>{if(s instanceof me){const n=s.resource.getContext("webgpu"),o=s.transparent?"premultiplied":"opaque";try{n.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:o})}catch(u){console.error(u)}t.contexts[i]=n}if(t.msaa=s.source.antialias,s.source.antialias){const n=new _e({width:0,height:0,sampleCount:4,transient:s.source.transient,arrayLayerCount:s.source.arrayLayerCount});t.msaaTextures[i]=n}}),t.msaa&&(t.msaaSamples=4,e.depthStencilTexture&&(e.depthStencilTexture.source.sampleCount=4,e.depthStencilTexture.source.transient=!!((r=t.msaaTextures[0])!=null&&r.transient))),t}destroyGpuRenderTarget(e){e.contexts.forEach(t=>{t.unconfigure()}),e.msaaTextures.forEach(t=>{t.destroy()}),e.msaaTextures.length=0,e.contexts.length=0}ensureDepthStencilTexture(e){const t=this._renderTargetSystem.getGpuRenderTarget(e);e.depthStencilTexture&&t.msaa&&(e.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(e){const t=this._renderTargetSystem.getGpuRenderTarget(e);t.width=e.width,t.height=e.height,t.msaa&&e.colorTextures.forEach((r,s)=>{const i=t.msaaTextures[s];i==null||i.resize(r.source.width,r.source.height,r.source._resolution)})}}class ee extends Re{constructor(e){super(e),this.adaptor=new Ne,this.adaptor.init(e,this)}}ee.extension={type:[l.WebGPUSystem],name:"renderTarget"};class te{constructor(){this._gpuProgramData=Object.create(null)}contextChange(e){this._gpu=e}getProgramData(e){return this._gpuProgramData[e._layoutKey]||this._createGPUProgramData(e)}_createGPUProgramData(e){const t=this._gpu.device,r=e.gpuLayout.map(i=>t.createBindGroupLayout({entries:i})),s={bindGroupLayouts:r};return this._gpuProgramData[e._layoutKey]={bindGroups:r,pipeline:t.createPipelineLayout(s)},this._gpuProgramData[e._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}te.extension={type:[l.WebGPUSystem],name:"shader"};const _={};_.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};_.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}};_.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}};_.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}};_.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}};_.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}};_["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}};_["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}};_["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}};_.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}};_.min={alpha:{srcFactor:"one",dstFactor:"one",operation:"min"},color:{srcFactor:"one",dstFactor:"one",operation:"min"}};_.max={alpha:{srcFactor:"one",dstFactor:"one",operation:"max"},color:{srcFactor:"one",dstFactor:"one",operation:"max"}};class re{constructor(){this.defaultState=new k,this.defaultState.blend=!0}contextChange(e){this.gpu=e}getColorTargets(e,t){const r=_[e.blendMode]||_.normal,s=[],i={format:"bgra8unorm",writeMask:0,blend:r};for(let n=0;n<t;n++)s[n]=i;return s}destroy(){this.gpu=null}}re.extension={type:[l.WebGPUSystem],name:"state"};const Ve={type:"image",upload(a,e,t,r=0){const s=a.resource,i=(a.pixelWidth|0)*(a.pixelHeight|0),n=s.byteLength/i;t.device.queue.writeTexture({texture:e,origin:{x:0,y:0,z:r}},s,{offset:0,rowsPerImage:a.pixelHeight,bytesPerRow:a.pixelWidth*n},{width:a.pixelWidth,height:a.pixelHeight,depthOrArrayLayers:1})}},se={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},je={blockBytes:4,blockWidth:1,blockHeight:1},Ke={type:"compressed",upload(a,e,t,r=0){let s=a.pixelWidth,i=a.pixelHeight;const n=se[a.format]||je;for(let o=0;o<a.resource.length;o++){const u=a.resource[o],c=Math.ceil(s/n.blockWidth)*n.blockBytes;t.device.queue.writeTexture({texture:e,mipLevel:o,origin:{x:0,y:0,z:r}},u,{offset:0,bytesPerRow:c},{width:Math.ceil(s/n.blockWidth)*n.blockWidth,height:Math.ceil(i/n.blockHeight)*n.blockHeight,depthOrArrayLayers:1}),s=Math.max(s>>1,1),i=Math.max(i>>1,1)}}},L=["right","left","top","bottom","front","back"];function qe(a){return{type:"cube",upload(e,t,r){const s=e.faces;for(let i=0;i<L.length;i++){const n=L[i],o=s[n];(a[o.uploadMethodId]||a.image).upload(o,t,r,i)}}}}const ie={type:"image",upload(a,e,t,r=0){const s=a.resource;if(!s)return;if(globalThis.HTMLImageElement&&s instanceof HTMLImageElement){const u=T.get().createCanvas(s.width,s.height);u.getContext("2d").drawImage(s,0,0,s.width,s.height),a.resource=u,v("ImageSource: Image element passed, converting to canvas and replacing resource.")}const i=Math.min(e.width,a.resourceWidth||a.pixelWidth),n=Math.min(e.height,a.resourceHeight||a.pixelHeight),o=a.alphaMode==="premultiply-alpha-on-upload";t.device.queue.copyExternalImageToTexture({source:s},{texture:e,origin:{x:0,y:0,z:r},premultipliedAlpha:o},{width:i,height:n})}},Ye={type:"video",upload(a,e,t,r){ie.upload(a,e,t,r)}};class $e{constructor(e){this.device=e,this.sampler=e.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(e){let t=this.pipelines[e];return t||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:`
18
+ var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(
19
+ vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));
20
+
21
+ struct VertexOutput {
22
+ @builtin(position) position : vec4<f32>,
23
+ @location(0) texCoord : vec2<f32>,
24
+ };
25
+
26
+ @vertex
27
+ fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
28
+ var output : VertexOutput;
29
+ output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);
30
+ output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
31
+ return output;
32
+ }
33
+
34
+ @group(0) @binding(0) var imgSampler : sampler;
35
+ @group(0) @binding(1) var img : texture_2d<f32>;
36
+
37
+ @fragment
38
+ fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
39
+ return textureSample(img, imgSampler, texCoord);
40
+ }
41
+ `})),t=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:e}]}}),this.pipelines[e]=t),t}generateMipmap(e){const t=this._getMipmapPipeline(e.format);if(e.dimension==="3d"||e.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e;const s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){const u={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};r=this.device.createTexture(u)}const n=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let u=0;u<s;++u){let c=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),f=i?1:0;for(let h=1;h<e.mipLevelCount;++h){const p=r.createView({baseMipLevel:f++,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),d=n.beginRenderPass({colorAttachments:[{view:p,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),m=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:c}]});d.setPipeline(t),d.setBindGroup(0,m),d.draw(3,1,0,0),d.end(),c=p}}if(!i){const u={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let c=1;c<e.mipLevelCount;++c)n.copyTextureToTexture({texture:r,mipLevel:c-1},{texture:e,mipLevel:c},u),u.width=Math.ceil(u.width/2),u.height=Math.ceil(u.height/2)}return this.device.queue.submit([n.finish()]),i||r.destroy(),e}}class Xe{constructor(e){this.textureView=null,this.gpuTexture=e}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}const M=class ne{constructor(e){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=e,e.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new z({renderer:e,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});const t={image:ie,buffer:Ve,video:Ye,compressed:Ke,...ne.uploadExtensions};this._uploads={...t,cube:qe(t)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gpu=e}initSource(e){var t;return((t=e._gpuData[this._renderer.uid])==null?void 0:t.gpuTexture)||this._initSource(e)}_initSource(e){if(e.autoGenerateMipmaps){const c=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(c))+1}let t;e.sampleCount>1?(t=GPUTextureUsage.RENDER_ATTACHMENT,e.transient&&this._renderer.device.extensions.transientAttachment&&(t|=GPUTextureUsage.TRANSIENT_ATTACHMENT)):(t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,e.uploadMethodId!=="compressed"&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC));const r=se[e.format]||{blockWidth:1,blockHeight:1},s=Math.ceil(e.pixelWidth/r.blockWidth)*r.blockWidth,i=Math.ceil(e.pixelHeight/r.blockHeight)*r.blockHeight,n={label:e.label,size:{width:s,height:i,depthOrArrayLayers:e.arrayLayerCount},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(n);return e._gpuData[this._renderer.uid]=new Xe(o),this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),o}onSourceUpdate(e){const t=this.getGpuSource(e);t&&(this._uploads[e.uploadMethodId]&&this._uploads[e.uploadMethodId].upload(e,t,this._gpu),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e))}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new $e(this._gpu.device));const t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceUnload(e){e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(e){e._gcLastUsed=this._renderer.gc.now;const t=e._gpuData[this._renderer.uid],r=t==null?void 0:t.gpuTexture;r?(r.width!==e.pixelWidth||r.height!==e.pixelHeight)&&(t.destroy(),this._bindGroupHash[e.uid]=null,e._gpuData[this._renderer.uid]=null,this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){var t;return e._gcLastUsed=this._renderer.gc.now,((t=e._gpuData[this._renderer.uid])==null?void 0:t.gpuTexture)||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]||this._createTextureBindGroup(e)}_createTextureBindGroup(e){const t=e.source;return this._bindGroupHash[e.uid]=new O({0:t,1:t.style,2:new F({uTextureMatrix:{type:"mat3x3<f32>",value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){const t=e.source;t._gcLastUsed=this._renderer.gc.now;let r=t._gpuData[this._renderer.uid];return r||(this.initSource(t),r=t._gpuData[this._renderer.uid]),r.textureView||(r.textureView=r.gpuTexture.createView({dimension:t.viewDimension})),r.textureView}generateCanvas(e){const t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=T.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;const i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:T.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),r.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:i.getCurrentTexture()},{width:s.width,height:s.height}),t.gpu.device.queue.submit([r.finish()]),s}getPixels(e){const t=this.generateCanvas(e),r=E.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);const{width:i,height:n}=t,o=s.getImageData(0,0,i,n),u=new Uint8ClampedArray(o.data.buffer);return E.returnCanvasAndContext(r),{pixels:u,width:i,height:n}}destroy(){this._managedTextures.destroy();for(const e of Object.keys(this._bindGroupHash)){const t=Number(e),r=this._bindGroupHash[t];r==null||r.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}};M.extension={type:[l.WebGPUSystem],name:"texture"};M.uploadExtensions=Object.create(null);let oe=M;G.handleByMap(l.TextureUploaderWebGPU,oe.uploadExtensions);class ae{constructor(){this._maxTextures=0}contextChange(e){const t=new F({uTransformMatrix:{value:new I,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;const r=W({name:"graphics",bits:[be,xe(this._maxTextures),Ue,H]});this.shader=new N({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){const r=t.context,s=r.customShader||this.shader,i=e.renderer,n=i.graphicsContext,{batcher:o,instructions:u}=n.getContextRenderData(r),c=i.encoder;c.setGeometry(o.geometry,s.gpuProgram);const f=i.globalUniforms.bindGroup;c.setBindGroup(0,f,s.gpuProgram);const h=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);c.setBindGroup(2,h,s.gpuProgram);const p=u.instructions;let d=null;for(let m=0;m<u.instructionSize;m++){const g=p[m];if(g.topology!==d&&(d=g.topology,c.setPipelineFromGeometryProgramAndState(o.geometry,s.gpuProgram,e.state,g.topology)),s.groups[1]=g.bindGroup,!g.gpuBindGroup){const x=g.textures;g.bindGroup=D(x.textures,x.count,this._maxTextures),g.gpuBindGroup=i.bindGroup.getBindGroup(g.bindGroup,s.gpuProgram,1)}c.setBindGroup(1,g.bindGroup,s.gpuProgram),c.renderPassEncoder.drawIndexed(g.size,1,g.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}ae.extension={type:[l.WebGPUPipesAdaptor],name:"graphics"};class ue{init(){const e=W({name:"mesh",bits:[Me,we,H]});this._shader=new N({gpuProgram:e,resources:{uTexture:A.EMPTY._source,uSampler:A.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new I}}}})}execute(e,t){const r=e.renderer;let s=t._shader;if(!s)s=this._shader,s.groups[2]=r.texture.getTextureBindGroup(t.texture);else if(!s.gpuProgram){v("Mesh shader has no gpuProgram",t.shader);return}const i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){const n=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(n,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}ue.extension={type:[l.WebGPUPipesAdaptor],name:"mesh"};const Je=[...Ee,J,Y,U,$,K,oe,ee,te,re,Z,q,X,j],Qe=[...Ae,Q],Ze=[V,ue,ae],ce=[],de=[],he=[];G.handleByNamedList(l.WebGPUSystem,ce);G.handleByNamedList(l.WebGPUPipes,de);G.handleByNamedList(l.WebGPUPipesAdaptor,he);G.add(...Je,...Qe,...Ze);class ot extends ye{constructor(){const e={name:"webgpu",type:Ge.WEBGPU,systems:ce,renderPipes:de,renderPipeAdaptors:he};super(e)}}export{ot as WebGPURenderer};
42
+ //# sourceMappingURL=WebGPURenderer-DkU0IC2y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGPURenderer-DkU0IC2y.js","sources":["../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuLimitsSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUboSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCubeTextureResource.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","../../../../node_modules/.pnpm/pixi.js@8.19.0/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.extensions = {\n transientAttachment: typeof GPUTextureUsage.TRANSIENT_ATTACHMENT === \"number\"\n };\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.extensions = 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 let attachmentIsTransient = false;\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n attachmentIsTransient = gpuRenderTarget.msaaTextures[i].transient;\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n // Only discard the MSAA buffer when it was created as transient — i.e. we know\n // no later pass will try to load it. Non-transient MSAA targets keep storeOp:'store'\n // so flows like filter pop-back (loadOp:'load' on the parent RT) keep working.\n storeOp: attachmentIsTransient ? \"discard\" : \"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 renderTarget.depthStencilTexture.source.transient = !!gpuRenderTarget.msaaTextures[0]?.transient;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n const dsStoreOp = renderTarget.depthStencilTexture.source.transient ? \"discard\" : \"store\";\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: dsStoreOp,\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: dsStoreOp\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 transient: colorTexture.source.transient,\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 renderTarget.depthStencilTexture.source.transient = !!gpuRenderTarget.msaaTextures[0]?.transient;\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, extensions } 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}\nconst _GpuTextureSystem = class _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 ..._GpuTextureSystem.uploadExtensions\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;\n if (source.sampleCount > 1) {\n usage = GPUTextureUsage.RENDER_ATTACHMENT;\n if (source.transient && this._renderer.device.extensions.transientAttachment) {\n usage |= GPUTextureUsage.TRANSIENT_ATTACHMENT;\n }\n } else {\n usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\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 */\n_GpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n/**\n * Optional uploaders registered via {@link ExtensionType.TextureUploaderWebGPU}. Each entry is\n * merged into {@link _uploads} at construction time, so import order matters: register the\n * extension before creating the renderer.\n * @internal\n */\n_GpuTextureSystem.uploadExtensions = /* @__PURE__ */ Object.create(null);\nlet GpuTextureSystem = _GpuTextureSystem;\nextensions.handleByMap(ExtensionType.TextureUploaderWebGPU, GpuTextureSystem.uploadExtensions);\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":["tempState","State","GpuBatchAdaptor","batchPipe","geometry","shader","renderer","encoder","program","globalUniformsBindGroup","batch","textureBatch","getTextureBatchBindGroup","gpuBindGroup","pipeline","ExtensionType","BindGroupSystem","gpu","bindGroup","groupIndex","group","device","groupLayout","entries","j","resource","gpuResource","uniformGroup","buffer","bufferResource","sampler","texture","layout","GpuBufferData","gpuBuffer","GpuBufferSystem","GCManagedHash","_a","data","uid","fastCopy","UboBatch","minUniformOffsetAlignment","size","start","newSize","array","offset","i","GpuColorMaskSystem","colorMask","GpuDeviceSystem","options","adapter","DOMAdapter","requiredFeatures","feature","GpuEncoderSystem","resolve","gpuRenderTarget","viewport","state","topology","index","indexFormat","buffersToBind","skipSync","instanceCount","descriptor","boundPipeline","boundVertexBuffer","boundIndexBuffer","boundBindGroup","GpuLimitsSystem","GpuStencilSystem","renderTarget","stencilState","STENCIL_MODES","stencilMode","stencilReference","WGSL_ALIGN_SIZE_DATA","createUboElementsWGSL","uniformData","uboElements","uboElement","align","generateArraySyncWGSL","offsetToAdd","remainder","createUboSyncFunctionWGSL","createUboSyncFunction","uboSyncFunctionsWGSL","GpuUboSystem","UboSystem","GpuUniformBatchPipe","totalBuffers","usage","BufferUsage","Buffer","duplicate","BufferResource","BindGroup","bufferSystem","firstBuffer","commandEncoder","topologyStringToId","getGraphicsStateKey","geometryLayout","shaderKey","blendMode","getGlobalStateKey","stencilStateId","multiSampleCount","colorTargetCount","PipelineSystem","multisampleCount","GpuStencilModesToPixi","passEncoder","ensureAttributes","key","buffers","blendModes","writeMask","code","keyGen","attributeKeys","attribute","stringKey","createIdFromString","bufferNamesToBind","attributeData","shaderLocation","vertexBuffersLayout","bufferEntry","bufferEntryAttributes","warn","GpuRenderTarget","GpuRenderTargetAdaptor","renderTargetSystem","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest","baseGpuTexture","backGpuTexture","clear","clearColor","mipLevel","layer","_b","clearValue","CLEAR","colorAttachments","context","view","resolveTarget","attachmentIsTransient","loadOp","depthStencilAttachment","stencilLoadOp","depthLoadOp","dsStoreOp","renderPassDescriptor","gpuCommands","colorTexture","CanvasSource","alphaMode","e","msaaTexture","TextureSource","GpuRenderTargetSystem","RenderTargetSystem","GpuShaderSystem","bindGroups","pipelineLayoutDesc","GpuBlendModesToPixi","GpuStateSystem","count","blend","targets","target","gpuUploadBufferImageResource","source","gpuTexture","originZOverride","total","bytesPerPixel","blockDataMap","defaultBlockData","gpuUploadCompressedTextureResource","mipWidth","mipHeight","blockData","levelBuffer","bytesPerRow","FACE_ORDER","createGpuUploadCubeTextureResource","uploaders","faces","face","gpuUploadImageResource","canvas","width","height","premultipliedAlpha","gpuUploadVideoResource","GpuMipmapGenerator","format","mipTexture","arrayLayerCount","renderToSource","mipTextureDescriptor","bindGroupLayout","arrayLayer","srcView","dstMipLevel","dstView","mipLevelSize","GPUTextureGpuData","_GpuTextureSystem","baseUploaders","biggestDimension","textureDescriptor","gpuData","UniformGroup","webGPUCanvas","canvasAndContext","CanvasPool","imageData","pixels","k","GpuTextureSystem","extensions","GpuGraphicsAdaptor","localUniforms","Matrix","gpuProgram","compileHighShaderGpuProgram","colorBit","generateTextureBatchBit","localUniformBitGroup2","roundPixelsBit","Shader","graphicsPipe","renderable","contextSystem","batcher","instructions","localBindGroup","batches","GpuMeshAdapter","localUniformBit","textureBit","Texture","meshPipe","mesh","DefaultWebGPUSystems","SharedSystems","DefaultWebGPUPipes","SharedRenderPipes","DefaultWebGPUAdapters","systems","renderPipes","renderPipeAdaptors","WebGPURenderer","AbstractRenderer","systemConfig","RendererType"],"mappings":"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MAAMgK,EAAsB,CAAA,EAC5BA,EAAoB,OAAS,CAC3B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,CACA,EACAA,EAAoB,IAAM,CACxB,MAAO,CACL,UAAW,YACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,CACA,EACAA,EAAoB,SAAW,CAC7B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,CACA,EACAA,EAAoB,OAAS,CAC3B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,gBACX,UAAW,KACf,CACA,EACAA,EAAoB,QAAU,CAC5B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,gBACX,UAAW,KACf,CACA,EACAA,EAAoB,KAAO,CACzB,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,OACX,UAAW,OACX,UAAW,KACf,CACA,EACAA,EAAoB,YAAY,EAAI,CAClC,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,YACX,UAAW,sBACX,UAAW,KACf,CACA,EACAA,EAAoB,SAAS,EAAI,CAC/B,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,YACX,UAAW,MACX,UAAW,KACf,CACA,EACAA,EAAoB,YAAY,EAAI,CAClC,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,YACX,UAAW,gBACX,UAAW,KACf,CACA,EACAA,EAAoB,MAAQ,CAC1B,MAAO,CACL,UAAW,OACX,UAAW,sBACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,OACX,UAAW,gBACX,UAAW,KACf,CACA,EACAA,EAAoB,IAAM,CACxB,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,CACA,EACAA,EAAoB,IAAM,CACxB,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,EACE,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACf,CACA,EC5IA,MAAMC,EAAe,CACnB,aAAc,CACZ,KAAK,aAAe,IAAI/K,EACxB,KAAK,aAAa,MAAQ,EAC5B,CACA,cAAcgB,EAAK,CACjB,KAAK,IAAMA,CACb,CAMA,gBAAgB4C,EAAOoH,EAAO,CAC5B,MAAMC,EAAQH,EAAoBlH,EAAM,SAAS,GAAKkH,EAAoB,OACpEI,EAAU,CAAA,EACVC,EAAS,CACb,OAAQ,aACR,UAAW,EACX,MAAAF,CACN,EACI,QAASlI,EAAI,EAAGA,EAAIiI,EAAOjI,IACzBmI,EAAQnI,CAAC,EAAIoI,EAEf,OAAOD,CACT,CACA,SAAU,CACR,KAAK,IAAM,IACb,CACF,CAEAH,GAAe,UAAY,CACzB,KAAM,CACJjK,EAAc,YAClB,EACE,KAAM,OACR,ECxCA,MAAMsK,GAA+B,CACnC,KAAM,QACN,OAAOC,EAAQC,EAAYtK,EAAKuK,EAAkB,EAAG,CACnD,MAAM/J,EAAW6J,EAAO,SAClBG,GAASH,EAAO,WAAa,IAAMA,EAAO,YAAc,GACxDI,EAAgBjK,EAAS,WAAagK,EAC5CxK,EAAI,OAAO,MAAM,aACf,CAAE,QAASsK,EAAY,OAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAiB,EACjE/J,EACA,CACE,OAAQ,EACR,aAAc6J,EAAO,YACrB,YAAaA,EAAO,WAAaI,CACzC,EACM,CACE,MAAOJ,EAAO,WACd,OAAQA,EAAO,YACf,mBAAoB,CAC5B,CACA,CACE,CACF,ECrBMK,GAAe,CACnB,iBAAkB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAC,EAChE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAC,EACjE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAC,EACjE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAC,EACjE,iBAAkB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAC,EAChE,kBAAmB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAC,EAClE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAC,CACnE,EACMC,GAAmB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAC,EACjEC,GAAqC,CACzC,KAAM,aACN,OAAOP,EAAQC,EAAYtK,EAAKuK,EAAkB,EAAG,CACnD,IAAIM,EAAWR,EAAO,WAClBS,EAAYT,EAAO,YACvB,MAAMU,EAAYL,GAAaL,EAAO,MAAM,GAAKM,GACjD,QAAS5I,EAAI,EAAGA,EAAIsI,EAAO,SAAS,OAAQtI,IAAK,CAC/C,MAAMiJ,EAAcX,EAAO,SAAStI,CAAC,EAC/BkJ,EAAc,KAAK,KAAKJ,EAAWE,EAAU,UAAU,EAAIA,EAAU,WAC3E/K,EAAI,OAAO,MAAM,aACf,CACE,QAASsK,EACT,SAAUvI,EACV,OAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGwI,CAAe,CAClD,EACQS,EACA,CACE,OAAQ,EACR,YAAAC,CACV,EACQ,CACE,MAAO,KAAK,KAAKJ,EAAWE,EAAU,UAAU,EAAIA,EAAU,WAC9D,OAAQ,KAAK,KAAKD,EAAYC,EAAU,WAAW,EAAIA,EAAU,YACjE,mBAAoB,CAC9B,CACA,EACMF,EAAW,KAAK,IAAIA,GAAY,EAAG,CAAC,EACpCC,EAAY,KAAK,IAAIA,GAAa,EAAG,CAAC,CACxC,CACF,CACF,ECxCMI,EAAa,CAAC,QAAS,OAAQ,MAAO,SAAU,QAAS,MAAM,EACrE,SAASC,GAAmCC,EAAW,CACrD,MAAO,CACL,KAAM,OACN,OAAOf,EAAQC,EAAYtK,EAAK,CAC9B,MAAMqL,EAAQhB,EAAO,MACrB,QAAS,EAAI,EAAG,EAAIa,EAAW,OAAQ,IAAK,CAC1C,MAAM5E,EAAM4E,EAAW,CAAC,EAClBI,EAAOD,EAAM/E,CAAG,GACL8E,EAAUE,EAAK,cAAc,GAAKF,EAAU,OACpD,OAAOE,EAAMhB,EAAYtK,EAAK,CAAC,CAC1C,CACF,CACJ,CACA,CCXA,MAAMuL,GAAyB,CAC7B,KAAM,QACN,OAAOlB,EAAQC,EAAYtK,EAAKuK,EAAkB,EAAG,CACnD,MAAM/J,EAAW6J,EAAO,SACxB,GAAI,CAAC7J,EAAU,OACf,GAAI,WAAW,kBAAoBA,aAAoB,iBAAkB,CACvE,MAAMgL,EAASnJ,EAAW,IAAG,EAAG,aAAa7B,EAAS,MAAOA,EAAS,MAAM,EAC5DgL,EAAO,WAAW,IAAI,EAC9B,UAAUhL,EAAU,EAAG,EAAGA,EAAS,MAAOA,EAAS,MAAM,EACjE6J,EAAO,SAAWmB,EAClBlE,EAAK,iFAAiF,CACxF,CACA,MAAMmE,EAAQ,KAAK,IAAInB,EAAW,MAAOD,EAAO,eAAiBA,EAAO,UAAU,EAC5EqB,EAAS,KAAK,IAAIpB,EAAW,OAAQD,EAAO,gBAAkBA,EAAO,WAAW,EAChFsB,EAAqBtB,EAAO,YAAc,8BAChDrK,EAAI,OAAO,MAAM,2BACf,CAAE,OAAQQ,CAAQ,EAClB,CAAE,QAAS8J,EAAY,OAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGC,CAAe,EAAI,mBAAAoB,CAAkB,EACrF,CACE,MAAAF,EACA,OAAAC,CACR,CACA,CACE,CACF,ECzBME,GAAyB,CAC7B,KAAM,QACN,OAAOvB,EAAQC,EAAYtK,EAAKuK,EAAiB,CAC/CgB,GAAuB,OAAOlB,EAAQC,EAAYtK,EAAKuK,CAAe,CACxE,CACF,ECPA,MAAMsB,EAAmB,CACvB,YAAYzL,EAAQ,CAClB,KAAK,OAASA,EACd,KAAK,QAAUA,EAAO,cAAc,CAAE,UAAW,SAAU,EAC3D,KAAK,UAAY,CAAA,CACnB,CACA,mBAAmB0L,EAAQ,CACzB,IAAIjM,EAAW,KAAK,UAAUiM,CAAM,EACpC,OAAKjM,IACE,KAAK,qBACR,KAAK,mBAAqB,KAAK,OAAO,mBAAmB,CACvD,KAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBA0BZ,CAAS,GAEHA,EAAW,KAAK,OAAO,qBAAqB,CAC1C,OAAQ,OACR,OAAQ,CACN,OAAQ,KAAK,mBACb,WAAY,YACtB,EACQ,SAAU,CACR,OAAQ,KAAK,mBACb,WAAY,eACZ,QAAS,CAAC,CAAE,OAAAiM,CAAM,CAAE,CAC9B,CACA,CAAO,EACD,KAAK,UAAUA,CAAM,EAAIjM,GAEpBA,CACT,CAMA,eAAeiB,EAAS,CACtB,MAAMjB,EAAW,KAAK,mBAAmBiB,EAAQ,MAAM,EACvD,GAAIA,EAAQ,YAAc,MAAQA,EAAQ,YAAc,KACtD,MAAM,IAAI,MAAM,kEAAkE,EAEpF,IAAIiL,EAAajL,EACjB,MAAMkL,EAAkBlL,EAAQ,oBAAsB,EAChDmL,EAAiBnL,EAAQ,MAAQ,gBAAgB,kBACvD,GAAI,CAACmL,EAAgB,CACnB,MAAMC,EAAuB,CAC3B,KAAM,CACJ,MAAO,KAAK,KAAKpL,EAAQ,MAAQ,CAAC,EAClC,OAAQ,KAAK,KAAKA,EAAQ,OAAS,CAAC,EACpC,mBAAoBkL,CAC9B,EACQ,OAAQlL,EAAQ,OAChB,MAAO,gBAAgB,gBAAkB,gBAAgB,SAAW,gBAAgB,kBACpF,cAAeA,EAAQ,cAAgB,CAC/C,EACMiL,EAAa,KAAK,OAAO,cAAcG,CAAoB,CAC7D,CACA,MAAM3G,EAAiB,KAAK,OAAO,qBAAqB,CAAA,CAAE,EACpD4G,EAAkBtM,EAAS,mBAAmB,CAAC,EACrD,QAASuM,EAAa,EAAGA,EAAaJ,EAAiB,EAAEI,EAAY,CACnE,IAAIC,EAAUvL,EAAQ,WAAW,CAC/B,aAAc,EACd,cAAe,EACf,UAAW,KACX,eAAgBsL,EAChB,gBAAiB,CACzB,CAAO,EACGE,EAAcL,EAAiB,EAAI,EACvC,QAASlK,EAAI,EAAGA,EAAIjB,EAAQ,cAAe,EAAEiB,EAAG,CAC9C,MAAMwK,EAAUR,EAAW,WAAW,CACpC,aAAcO,IACd,cAAe,EACf,UAAW,KACX,eAAgBF,EAChB,gBAAiB,CAC3B,CAAS,EACKhG,EAAcb,EAAe,gBAAgB,CACjD,iBAAkB,CAAC,CACjB,KAAMgH,EACN,QAAS,QACT,OAAQ,QACR,WAAY,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAChD,CAAW,CACX,CAAS,EACKtM,EAAY,KAAK,OAAO,gBAAgB,CAC5C,OAAQkM,EACR,QAAS,CAAC,CACR,QAAS,EACT,SAAU,KAAK,OAC3B,EAAa,CACD,QAAS,EACT,SAAUE,CACtB,CAAW,CACX,CAAS,EACDjG,EAAY,YAAYvG,CAAQ,EAChCuG,EAAY,aAAa,EAAGnG,CAAS,EACrCmG,EAAY,KAAK,EAAG,EAAG,EAAG,CAAC,EAC3BA,EAAY,IAAG,EACfiG,EAAUE,CACZ,CACF,CACA,GAAI,CAACN,EAAgB,CACnB,MAAMO,EAAe,CACnB,MAAO,KAAK,KAAK1L,EAAQ,MAAQ,CAAC,EAClC,OAAQ,KAAK,KAAKA,EAAQ,OAAS,CAAC,EACpC,mBAAoBkL,CAC5B,EACM,QAASjK,EAAI,EAAGA,EAAIjB,EAAQ,cAAe,EAAEiB,EAC3CwD,EAAe,qBAAqB,CAClC,QAASwG,EACT,SAAUhK,EAAI,CACxB,EAAW,CACD,QAAAjB,EACA,SAAUiB,CACpB,EAAWyK,CAAY,EACfA,EAAa,MAAQ,KAAK,KAAKA,EAAa,MAAQ,CAAC,EACrDA,EAAa,OAAS,KAAK,KAAKA,EAAa,OAAS,CAAC,CAE3D,CACA,YAAK,OAAO,MAAM,OAAO,CAACjH,EAAe,OAAM,CAAE,CAAC,EAC7C0G,GACHF,EAAW,QAAO,EAEbjL,CACT,CACF,CC1IA,MAAM2L,EAAkB,CACtB,YAAYnC,EAAY,CACtB,KAAK,YAAc,KACnB,KAAK,WAAaA,CACpB,CAEA,SAAU,CACR,KAAK,WAAW,QAAO,EACvB,KAAK,YAAc,KACnB,KAAK,WAAa,IACpB,CACF,CACA,MAAMoC,EAAoB,MAAMA,EAAkB,CAChD,YAAYrN,EAAU,CACpB,KAAK,aAA+B,OAAO,OAAO,IAAI,EACtD,KAAK,eAAiC,OAAO,OAAO,IAAI,EACxD,KAAK,UAAYA,EACjBA,EAAS,GAAG,cAAc,KAAM,iBAAkB,MAAM,EACxD,KAAK,iBAAmB,IAAI8B,EAAc,CACxC,SAAA9B,EACA,KAAM,WACN,SAAU,KAAK,eAAe,KAAK,IAAI,EACvC,KAAM,kBACZ,CAAK,EACD,MAAMsN,EAAgB,CACpB,MAAOpB,GACP,OAAQnB,GACR,MAAOwB,GACP,WAAYhB,GACZ,GAAG8B,GAAkB,gBAC3B,EACI,KAAK,SAAW,CACd,GAAGC,EACH,KAAMxB,GAAmCwB,CAAa,CAC5D,CACE,CAIA,IAAI,iBAAkB,CACpB,OAAO,OAAO,OAAO,KAAK,iBAAiB,KAAK,CAClD,CACA,cAAc3M,EAAK,CACjB,KAAK,KAAOA,CACd,CAMA,WAAWqK,EAAQ,OACjB,QAAOjJ,EAAAiJ,EAAO,SAAS,KAAK,UAAU,GAAG,IAAlC,YAAAjJ,EAAqC,aAAc,KAAK,YAAYiJ,CAAM,CACnF,CACA,YAAYA,EAAQ,CAClB,GAAIA,EAAO,oBAAqB,CAC9B,MAAMuC,EAAmB,KAAK,IAAIvC,EAAO,WAAYA,EAAO,WAAW,EACvEA,EAAO,cAAgB,KAAK,MAAM,KAAK,KAAKuC,CAAgB,CAAC,EAAI,CACnE,CACA,IAAI7H,EACAsF,EAAO,YAAc,GACvBtF,EAAQ,gBAAgB,kBACpBsF,EAAO,WAAa,KAAK,UAAU,OAAO,WAAW,sBACvDtF,GAAS,gBAAgB,wBAG3BA,EAAQ,gBAAgB,gBAAkB,gBAAgB,SACtDsF,EAAO,iBAAmB,eAC5BtF,GAAS,gBAAgB,kBACzBA,GAAS,gBAAgB,WAG7B,MAAMgG,EAAYL,GAAaL,EAAO,MAAM,GAAK,CAAiB,WAAY,EAAG,YAAa,CAAC,EACzFoB,EAAQ,KAAK,KAAKpB,EAAO,WAAaU,EAAU,UAAU,EAAIA,EAAU,WACxEW,EAAS,KAAK,KAAKrB,EAAO,YAAcU,EAAU,WAAW,EAAIA,EAAU,YAC3E8B,EAAoB,CACxB,MAAOxC,EAAO,MACd,KAAM,CAAE,MAAAoB,EAAO,OAAAC,EAAQ,mBAAoBrB,EAAO,eAAe,EACjE,OAAQA,EAAO,OACf,YAAaA,EAAO,YACpB,cAAeA,EAAO,cACtB,UAAWA,EAAO,UAClB,MAAAtF,CACN,EACUuF,EAAa,KAAK,KAAK,OAAO,cAAcuC,CAAiB,EACnE,OAAAxC,EAAO,SAAS,KAAK,UAAU,GAAG,EAAI,IAAIoC,GAAkBnC,CAAU,EACxD,KAAK,iBAAiB,IAAID,CAAM,IAE5CA,EAAO,GAAG,SAAU,KAAK,eAAgB,IAAI,EAC7CA,EAAO,GAAG,SAAU,KAAK,eAAgB,IAAI,EAC7CA,EAAO,GAAG,gBAAiB,KAAK,gBAAiB,IAAI,GAEvD,KAAK,eAAeA,CAAM,EACnBC,CACT,CACA,eAAeD,EAAQ,CACrB,MAAMC,EAAa,KAAK,aAAaD,CAAM,EACtCC,IACD,KAAK,SAASD,EAAO,cAAc,GACrC,KAAK,SAASA,EAAO,cAAc,EAAE,OAAOA,EAAQC,EAAY,KAAK,IAAI,EAEvED,EAAO,qBAAuBA,EAAO,cAAgB,GACvD,KAAK,gBAAgBA,CAAM,EAE/B,CACA,gBAAgBA,EAAQ,CACjB,KAAK,mBACR,KAAK,iBAAmB,IAAIwB,GAAmB,KAAK,KAAK,MAAM,GAEjE,MAAMvB,EAAa,KAAK,aAAaD,CAAM,EAC3C,KAAK,iBAAiB,eAAeC,CAAU,CACjD,CACA,eAAeD,EAAQ,CACrBA,EAAO,IAAI,SAAU,KAAK,eAAgB,IAAI,EAC9CA,EAAO,IAAI,SAAU,KAAK,eAAgB,IAAI,EAC9CA,EAAO,IAAI,gBAAiB,KAAK,gBAAiB,IAAI,CACxD,CACA,eAAeA,EAAQ,CACrBA,EAAO,YAAc,KAAK,UAAU,GAAG,IACvC,MAAMyC,EAAUzC,EAAO,SAAS,KAAK,UAAU,GAAG,EAC5CC,EAAawC,GAAA,YAAAA,EAAS,WACvBxC,GAEMA,EAAW,QAAUD,EAAO,YAAcC,EAAW,SAAWD,EAAO,eAChFyC,EAAQ,QAAO,EACf,KAAK,eAAezC,EAAO,GAAG,EAAI,KAClCA,EAAO,SAAS,KAAK,UAAU,GAAG,EAAI,KACtC,KAAK,WAAWA,CAAM,GALtB,KAAK,WAAWA,CAAM,CAO1B,CACA,aAAaxJ,EAAS,CACpB,YAAK,aAAaA,EAAQ,WAAW,EAAI,KAAK,KAAK,OAAO,cAAcA,CAAO,EACxE,KAAK,aAAaA,EAAQ,WAAW,CAC9C,CACA,cAAcA,EAAS,CACrB,OAAO,KAAK,aAAaA,EAAQ,WAAW,GAAK,KAAK,aAAaA,CAAO,CAC5E,CACA,aAAawJ,EAAQ,OACnB,OAAAA,EAAO,YAAc,KAAK,UAAU,GAAG,MAChCjJ,EAAAiJ,EAAO,SAAS,KAAK,UAAU,GAAG,IAAlC,YAAAjJ,EAAqC,aAAc,KAAK,WAAWiJ,CAAM,CAClF,CAUA,oBAAoBvJ,EAAS,CAC3B,OAAO,KAAK,eAAeA,EAAQ,GAAG,GAAK,KAAK,wBAAwBA,CAAO,CACjF,CACA,wBAAwBA,EAAS,CAC/B,MAAMuJ,EAASvJ,EAAQ,OACvB,YAAK,eAAeA,EAAQ,GAAG,EAAI,IAAIsE,EAAU,CAC/C,EAAGiF,EACH,EAAGA,EAAO,MACV,EAAG,IAAI0C,EAAa,CAClB,eAAgB,CAAE,KAAM,cAAe,MAAOjM,EAAQ,cAAc,QAAQ,CACpF,CAAO,CACP,CAAK,EACM,KAAK,eAAeA,EAAQ,GAAG,CACxC,CACA,eAAeA,EAAS,CACtB,MAAMuJ,EAASvJ,EAAQ,OACvBuJ,EAAO,YAAc,KAAK,UAAU,GAAG,IACvC,IAAIyC,EAAUzC,EAAO,SAAS,KAAK,UAAU,GAAG,EAChD,OAAKyC,IACH,KAAK,WAAWzC,CAAM,EACtByC,EAAUzC,EAAO,SAAS,KAAK,UAAU,GAAG,GAE9CyC,EAAQ,cAAgBA,EAAQ,YAAcA,EAAQ,WAAW,WAAW,CAAE,UAAWzC,EAAO,aAAa,CAAE,GACxGyC,EAAQ,WACjB,CACA,eAAehM,EAAS,CACtB,MAAMzB,EAAW,KAAK,UAChBkG,EAAiBlG,EAAS,IAAI,OAAO,qBAAoB,EACzDmM,EAASnJ,EAAW,IAAG,EAAG,aAAY,EAC5CmJ,EAAO,MAAQ1K,EAAQ,OAAO,WAC9B0K,EAAO,OAAS1K,EAAQ,OAAO,YAC/B,MAAM0H,EAAUgD,EAAO,WAAW,QAAQ,EAC1C,OAAAhD,EAAQ,UAAU,CAChB,OAAQnJ,EAAS,IAAI,OACrB,MAAO,gBAAgB,SAAW,gBAAgB,SAClD,OAAQgD,EAAW,IAAG,EAAG,aAAY,EAAG,IAAI,yBAAwB,EACpE,UAAW,eACjB,CAAK,EACDkD,EAAe,qBAAqB,CAClC,QAASlG,EAAS,QAAQ,aAAayB,EAAQ,MAAM,EACrD,OAAQ,CACN,EAAG,EACH,EAAG,CACX,CACA,EAAO,CACD,QAAS0H,EAAQ,kBAAiB,CACxC,EAAO,CACD,MAAOgD,EAAO,MACd,OAAQA,EAAO,MACrB,CAAK,EACDnM,EAAS,IAAI,OAAO,MAAM,OAAO,CAACkG,EAAe,OAAM,CAAE,CAAC,EACnDiG,CACT,CACA,UAAU1K,EAAS,CACjB,MAAMkM,EAAe,KAAK,eAAelM,CAAO,EAC1CmM,EAAmBC,EAAW,2BAA2BF,EAAa,MAAOA,EAAa,MAAM,EAChGxE,EAAUyE,EAAiB,QACjCzE,EAAQ,UAAUwE,EAAc,EAAG,CAAC,EACpC,KAAM,CAAE,MAAAvB,EAAO,OAAAC,CAAM,EAAKsB,EACpBG,EAAY3E,EAAQ,aAAa,EAAG,EAAGiD,EAAOC,CAAM,EACpD0B,EAAS,IAAI,kBAAkBD,EAAU,KAAK,MAAM,EAC1D,OAAAD,EAAW,uBAAuBD,CAAgB,EAC3C,CAAE,OAAAG,EAAQ,MAAA3B,EAAO,OAAAC,CAAM,CAChC,CACA,SAAU,CACR,KAAK,iBAAiB,QAAO,EAC7B,UAAW2B,KAAK,OAAO,KAAK,KAAK,cAAc,EAAG,CAChD,MAAM/G,EAAM,OAAO+G,CAAC,EACdpN,EAAY,KAAK,eAAeqG,CAAG,EACzCrG,GAAA,MAAAA,EAAW,SACb,CACA,KAAK,UAAY,KACjB,KAAK,KAAO,KACZ,KAAK,iBAAmB,KACxB,KAAK,aAAe,KACpB,KAAK,eAAiB,IACxB,CACF,EAEAyM,EAAkB,UAAY,CAC5B,KAAM,CACJ5M,EAAc,YAClB,EACE,KAAM,SACR,EAOA4M,EAAkB,iBAAmC,OAAO,OAAO,IAAI,EACvE,IAAIY,GAAmBZ,EACvBa,EAAW,YAAYzN,EAAc,sBAAuBwN,GAAiB,gBAAgB,ECpP7F,MAAME,EAAmB,CACvB,aAAc,CACZ,KAAK,aAAe,CACtB,CACA,cAAcnO,EAAU,CACtB,MAAMoO,EAAgB,IAAIV,EAAa,CACrC,iBAAkB,CAAE,MAAO,IAAIW,EAAU,KAAM,aAAa,EAC5D,OAAQ,CAAE,MAAO,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,KAAM,WAAW,EAClE,OAAQ,CAAE,MAAO,EAAG,KAAM,KAAK,CACrC,CAAK,EACD,KAAK,aAAerO,EAAS,OAAO,qBACpC,MAAMsO,EAAaC,EAA4B,CAC7C,KAAM,WACN,KAAM,CACJC,GACAC,GAAwB,KAAK,YAAY,EACzCC,GACAC,CACR,CACA,CAAK,EACD,KAAK,OAAS,IAAIC,EAAO,CACvB,WAAAN,EACA,UAAW,CAET,cAAAF,CACR,CACA,CAAK,CACH,CACA,QAAQS,EAAcC,EAAY,CAChC,MAAM3F,EAAU2F,EAAW,QACrB/O,EAASoJ,EAAQ,cAAgB,KAAK,OACtCnJ,EAAW6O,EAAa,SACxBE,EAAgB/O,EAAS,gBACzB,CACJ,QAAAgP,EACA,aAAAC,CACN,EAAQF,EAAc,qBAAqB5F,CAAO,EACxClJ,EAAUD,EAAS,QACzBC,EAAQ,YAAY+O,EAAQ,SAAUjP,EAAO,UAAU,EACvD,MAAMI,EAA0BH,EAAS,eAAe,UACxDC,EAAQ,aAAa,EAAGE,EAAyBJ,EAAO,UAAU,EAClE,MAAMmP,EAAiBlP,EAAS,YAAY,aAAa,oBAAoBD,EAAO,UAAU,cAAe,EAAI,EACjHE,EAAQ,aAAa,EAAGiP,EAAgBnP,EAAO,UAAU,EACzD,MAAMoP,EAAUF,EAAa,aAC7B,IAAIzL,EAAW,KACf,QAASd,EAAI,EAAGA,EAAIuM,EAAa,gBAAiBvM,IAAK,CACrD,MAAMtC,EAAQ+O,EAAQzM,CAAC,EAWvB,GAVItC,EAAM,WAAaoD,IACrBA,EAAWpD,EAAM,SACjBH,EAAQ,uCACN+O,EAAQ,SACRjP,EAAO,WACP8O,EAAa,MACbzO,EAAM,QAChB,GAEML,EAAO,OAAO,CAAC,EAAIK,EAAM,UACrB,CAACA,EAAM,aAAc,CACvB,MAAMC,EAAeD,EAAM,SAC3BA,EAAM,UAAYE,EAChBD,EAAa,SACbA,EAAa,MACb,KAAK,YACf,EACQD,EAAM,aAAeJ,EAAS,UAAU,aACtCI,EAAM,UACNL,EAAO,WACP,CACV,CACM,CACAE,EAAQ,aAAa,EAAGG,EAAM,UAAWL,EAAO,UAAU,EAC1DE,EAAQ,kBAAkB,YAAYG,EAAM,KAAM,EAAGA,EAAM,KAAK,CAClE,CACF,CACA,SAAU,CACR,KAAK,OAAO,QAAQ,EAAI,EACxB,KAAK,OAAS,IAChB,CACF,CAEA+N,GAAmB,UAAY,CAC7B,KAAM,CACJ1N,EAAc,kBAClB,EACE,KAAM,UACR,ECtFA,MAAM2O,EAAe,CACnB,MAAO,CACL,MAAMd,EAAaC,EAA4B,CAC7C,KAAM,OACN,KAAM,CACJc,GACAC,GACAX,CACR,CACA,CAAK,EACD,KAAK,QAAU,IAAIC,EAAO,CACxB,WAAAN,EACA,UAAW,CACT,SAAUiB,EAAQ,MAAM,QACxB,SAAUA,EAAQ,MAAM,QAAQ,MAChC,gBAAiB,CACf,eAAgB,CAAE,KAAM,cAAe,MAAO,IAAIlB,CAAQ,CACpE,CACA,CACA,CAAK,CACH,CACA,QAAQmB,EAAUC,EAAM,CACtB,MAAMzP,EAAWwP,EAAS,SAC1B,IAAIzP,EAAS0P,EAAK,QAClB,GAAI,CAAC1P,EACHA,EAAS,KAAK,QACdA,EAAO,OAAO,CAAC,EAAIC,EAAS,QAAQ,oBAAoByP,EAAK,OAAO,UAC3D,CAAC1P,EAAO,WAAY,CAC7BkI,EAAK,gCAAiCwH,EAAK,MAAM,EACjD,MACF,CACA,MAAMnB,EAAavO,EAAO,WAI1B,GAHIuO,EAAW,2BACbvO,EAAO,OAAO,CAAC,EAAIC,EAAS,eAAe,WAEzCsO,EAAW,wBAAyB,CACtC,MAAMF,EAAgBoB,EAAS,cAC/BzP,EAAO,OAAO,CAAC,EAAIC,EAAS,YAAY,aAAa,oBAAoBoO,EAAe,EAAI,CAC9F,CACApO,EAAS,QAAQ,KAAK,CACpB,SAAUyP,EAAK,UACf,OAAA1P,EACA,MAAO0P,EAAK,KAClB,CAAK,CACH,CACA,SAAU,CACR,KAAK,QAAQ,QAAQ,EAAI,EACzB,KAAK,QAAU,IACjB,CACF,CAEAL,GAAe,UAAY,CACzB,KAAM,CACJ3O,EAAc,kBAClB,EACE,KAAM,MACR,EC5CA,MAAMiP,GAAuB,CAC3B,GAAGC,GACHrK,EACAnC,EACAN,EACAsB,EACAtC,EACAoM,GACA7D,GACAE,GACAI,GACA9D,EACAjE,EACAyB,EACA1D,CACF,EACMkP,GAAqB,CAAC,GAAGC,GAAmBrK,CAAmB,EAC/DsK,GAAwB,CAAClQ,EAAiBwP,GAAgBjB,EAAkB,EAC5E4B,GAAU,CAAA,EACVC,GAAc,CAAA,EACdC,GAAqB,CAAA,EAC3B/B,EAAW,kBAAkBzN,EAAc,aAAcsP,EAAO,EAChE7B,EAAW,kBAAkBzN,EAAc,YAAauP,EAAW,EACnE9B,EAAW,kBAAkBzN,EAAc,mBAAoBwP,EAAkB,EACjF/B,EAAW,IAAI,GAAGwB,GAAsB,GAAGE,GAAoB,GAAGE,EAAqB,EACvF,MAAMI,WAAuBC,EAAiB,CAC5C,aAAc,CACZ,MAAMC,EAAe,CACnB,KAAM,SACN,KAAMC,GAAa,OACnB,QAAAN,GACA,YAAAC,GACA,mBAAAC,EACN,EACI,MAAMG,CAAY,CACpB,CACF","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]}
@@ -0,0 +1,15 @@
1
+ import{t as A,U as Z,P as g,v as te,j as b,E as ie,w as y,r as w,x as V}from"./index-QopGLZI_.js";import"./webworkerAll-DTnGa_dQ.js";import"./Filter-DBNO82oR.js";class q{constructor(e){this._lastTransform="",this._observer=null,this._tickerAttached=!1,this.updateTranslation=()=>{if(!this._canvas)return;const t=this._canvas.getBoundingClientRect(),i=this._canvas.width,s=this._canvas.height,n=t.width/i*this._renderer.resolution,o=t.height/s*this._renderer.resolution,r=t.left,h=t.top,d=`translate(${r}px, ${h}px) scale(${n}, ${o})`;d!==this._lastTransform&&(this._domElement.style.transform=d,this._lastTransform=d)},this._domElement=e.domElement,this._renderer=e.renderer,!(globalThis.OffscreenCanvas&&this._renderer.canvas instanceof OffscreenCanvas)&&(this._canvas=this._renderer.canvas,this._attachObserver())}get canvas(){return this._canvas}ensureAttached(){!this._domElement.parentNode&&this._canvas.parentNode&&(this._canvas.parentNode.appendChild(this._domElement),this.updateTranslation())}_attachObserver(){"ResizeObserver"in globalThis?(this._observer&&(this._observer.disconnect(),this._observer=null),this._observer=new ResizeObserver(e=>{for(const t of e){if(t.target!==this._canvas)continue;const i=this.canvas.width,s=this.canvas.height,n=t.contentRect.width/i*this._renderer.resolution,o=t.contentRect.height/s*this._renderer.resolution;(this._lastScaleX!==n||this._lastScaleY!==o)&&(this.updateTranslation(),this._lastScaleX=n,this._lastScaleY=o)}}),this._observer.observe(this._canvas)):this._tickerAttached||A.shared.add(this.updateTranslation,this,Z.HIGH)}destroy(){this._observer?(this._observer.disconnect(),this._observer=null):this._tickerAttached&&A.shared.remove(this.updateTranslation),this._domElement=null,this._renderer=null,this._canvas=null,this._tickerAttached=!1,this._lastTransform="",this._lastScaleX=null,this._lastScaleY=null}}class O{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=O.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new g,this.page=new g,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,s,n){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var I=/iPhone/i,B=/iPod/i,C=/iPad/i,U=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,R=/Android/i,E=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,M=/Silk/i,m=/Windows Phone/i,X=/\bWindows(?:.+)ARM\b/i,K=/BlackBerry/i,Y=/BB10/i,H=/Opera Mini/i,F=/\b(CriOS|Chrome)(?:.+)Mobile/i,N=/Mobile(?:.+)Firefox\b/i,$=function(a){return typeof a<"u"&&a.platform==="MacIntel"&&typeof a.maxTouchPoints=="number"&&a.maxTouchPoints>1&&typeof MSStream>"u"};function se(a){return function(e){return e.test(a)}}function j(a){var e={userAgent:"",platform:"",maxTouchPoints:0};!a&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof a=="string"?e.userAgent=a:a&&a.userAgent&&(e={userAgent:a.userAgent,platform:a.platform,maxTouchPoints:a.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var s=se(t),n={apple:{phone:s(I)&&!s(m),ipod:s(B),tablet:!s(I)&&(s(C)||$(e))&&!s(m),universal:s(U),device:(s(I)||s(B)||s(C)||s(U)||$(e))&&!s(m)},amazon:{phone:s(E),tablet:!s(E)&&s(M),device:s(E)||s(M)},android:{phone:!s(m)&&s(E)||!s(m)&&s(k),tablet:!s(m)&&!s(E)&&!s(k)&&(s(M)||s(R)),device:!s(m)&&(s(E)||s(M)||s(k)||s(R))||s(/\bokhttp\b/i)},windows:{phone:s(m),tablet:s(X),device:s(m)||s(X)},other:{blackberry:s(K),blackberry10:s(Y),opera:s(H),firefox:s(N),chrome:s(F),device:s(K)||s(Y)||s(H)||s(N)||s(F)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}const ne=j.default??j,oe=ne(globalThis.navigator),re=9,G=100,ae=0,le=0,W=2,z=1,he=-1e3,ce=-1e3,de=2,L=class J{constructor(e,t=oe){this._mobileInfo=t,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pools={},this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._isRunningTests=!1,this._boundOnKeyDown=this._onKeyDown.bind(this),this._boundOnMouseMove=this._onMouseMove.bind(this),this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook(),this._renderer=e}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}get div(){return this._div}_createTouchHook(){const e=document.createElement("button");e.style.width=`${z}px`,e.style.height=`${z}px`,e.style.position="absolute",e.style.top=`${he}px`,e.style.left=`${ce}px`,e.style.zIndex=de.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(this._isActive)return;this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.position="absolute",this._div.style.top=`${ae}px`,this._div.style.left=`${le}px`,this._div.style.pointerEvents="none",this._div.style.zIndex=W.toString(),this._canvasObserver=new q({domElement:this._div,renderer:this._renderer})),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._deactivateOnMouseMove&&globalThis.document.addEventListener("mousemove",this._boundOnMouseMove,!0);const e=this._renderer.view.canvas;if(e.parentNode)this._canvasObserver.ensureAttached(),this._initAccessibilitySetup();else{const t=new MutationObserver(()=>{e.parentNode&&(t.disconnect(),this._canvasObserver.ensureAttached(),this._initAccessibilitySetup())});t.observe(document.body,{childList:!0,subtree:!0})}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){var e,t;if(!(!this._isActive||this._isMobileAccessibility)){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._renderer.runners.postrender.remove(this);for(const i of this._children)(e=i._accessibleDiv)!=null&&e.parentNode&&(i._accessibleDiv.parentNode.removeChild(i._accessibleDiv),i._accessibleDiv=null),i._accessibleActive=!1;for(const i in this._pools)this._pools[i].forEach(n=>{n.parentNode&&n.parentNode.removeChild(n)}),delete this._pools[i];(t=this._div)!=null&&t.parentNode&&this._div.parentNode.removeChild(this._div),this._pools={},this._children=[]}}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i<t.length;i++)this._updateAccessibleObjects(t[i])}init(e){const i={accessibilityOptions:{...J.defaultOptions,...(e==null?void 0:e.accessibilityOptions)||{}}};this.debug=i.accessibilityOptions.debug,this._activateOnTab=i.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=i.accessibilityOptions.deactivateOnMouseMove,i.accessibilityOptions.enabledByDefault&&this._activate(),this._renderer.runners.postrender.remove(this)}postrender(){const e=performance.now();if(this._mobileInfo.android.device&&e<this._androidUpdateCount||(this._androidUpdateCount=e+this._androidUpdateFrequency,(!this._renderer.renderingToScreen||!this._renderer.view.canvas)&&!this._isRunningTests))return;const t=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(const i of this._children)i._renderId===this._renderId&&t.add(this._children.indexOf(i))}for(let i=this._children.length-1;i>=0;i--){const s=this._children[i];t.has(i)||(s._accessibleDiv&&s._accessibleDiv.parentNode&&(s._accessibleDiv.parentNode.removeChild(s._accessibleDiv),this._getPool(s.accessibleType).push(s._accessibleDiv),s._accessibleDiv=null),s._accessibleActive=!1,te(this._children,i,1))}this._renderer.renderingToScreen&&this._canvasObserver.ensureAttached();for(let i=0;i<this._children.length;i++){const s=this._children[i];if(!s._accessibleActive||!s._accessibleDiv)continue;const n=s._accessibleDiv,o=s.hitArea||s.getBounds().rectangle;if(s.hitArea){const r=s.worldTransform;n.style.left=`${r.tx+o.x*r.a}px`,n.style.top=`${r.ty+o.y*r.d}px`,n.style.width=`${o.width*r.a}px`,n.style.height=`${o.height*r.d}px`}else this._capHitArea(o),n.style.left=`${o.x}px`,n.style.top=`${o.y}px`,n.style.width=`${o.width}px`,n.style.height=`${o.height}px`}this._renderId++}_updateDebugHTML(e){e.innerHTML=`type: ${e.type}</br> title : ${e.title}</br> tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let i=this._getPool(e.accessibleType).pop();i?(i.innerHTML="",i.removeAttribute("title"),i.removeAttribute("aria-label"),i.tabIndex=0):(e.accessibleType==="button"?i=document.createElement("button"):(i=document.createElement(e.accessibleType),i.style.cssText=`
2
+ color: transparent;
3
+ pointer-events: none;
4
+ padding: 0;
5
+ margin: 0;
6
+ border: 0;
7
+ outline: 0;
8
+ background: transparent;
9
+ box-sizing: border-box;
10
+ user-select: none;
11
+ -webkit-user-select: none;
12
+ -moz-user-select: none;
13
+ -ms-user-select: none;
14
+ `,e.accessibleText&&(i.innerText=e.accessibleText)),i.style.width=`${G}px`,i.style.height=`${G}px`,i.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",i.style.position="absolute",i.style.zIndex=W.toString(),i.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?i.setAttribute("aria-live","off"):i.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?i.setAttribute("aria-relevant","additions"):i.setAttribute("aria-relevant","text"),i.addEventListener("click",this._onClick.bind(this)),i.addEventListener("focus",this._onFocus.bind(this)),i.addEventListener("focusout",this._onFocusOut.bind(this))),i.style.pointerEvents=e.accessiblePointerEvents,i.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?i.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(i.title=`container ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&i.setAttribute("aria-label",e.accessibleHint),e.interactive?i.tabIndex=e.tabIndex:i.tabIndex=0,this.debug&&this._updateDebugHTML(i),e._accessibleActive=!0,e._accessibleDiv=i,i.container=e,this._children.push(e),this._div.appendChild(e._accessibleDiv)}_dispatchEvent(e,t){const{container:i}=e.target,s=this._renderer.events.rootBoundary,n=Object.assign(new O(s),{target:i});s.rootTarget=this._renderer.lastObjectRendered,t.forEach(o=>s.dispatchEvent(n,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode!==re||!this._activateOnTab||this._activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this._deactivate()}destroy(){var e;this._deactivate(),this._destroyTouchHook(),(e=this._canvasObserver)==null||e.destroy(),this._canvasObserver=null,this._div=null,this._pools=null,this._children=null,this._renderer=null,this._hookDiv=null,globalThis.removeEventListener("keydown",this._boundOnKeyDown),this._boundOnKeyDown=null,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._boundOnMouseMove=null}setAccessibilityEnabled(e){e?this._activate():this._deactivate()}_getPool(e){return this._pools[e]||(this._pools[e]=[]),this._pools[e]}};L.extension={type:[b.WebGLSystem,b.WebGPUSystem],name:"accessibility"};L.defaultOptions={enabledByDefault:!1,debug:!1,activateOnTab:!0,deactivateOnMouseMove:!0};let ue=L;const pe={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,accessibleType:"button",accessibleText:null,accessiblePointerEvents:"auto",accessibleChildren:!0,_accessibleActive:!1,_accessibleDiv:null,_renderId:-1};class Q{constructor(e){this._attachedDomElements=[],this._renderer=e,this._renderer.runners.postrender.add(this),this._renderer.runners.init.add(this),this._domElement=document.createElement("div"),this._domElement.style.position="absolute",this._domElement.style.top="0",this._domElement.style.left="0",this._domElement.style.pointerEvents="none",this._domElement.style.zIndex="1000"}init(){this._canvasObserver=new q({domElement:this._domElement,renderer:this._renderer})}addRenderable(e,t){this._attachedDomElements.includes(e)||this._attachedDomElements.push(e)}updateRenderable(e){}validateRenderable(e){return!0}postrender(){const e=this._attachedDomElements;if(e.length===0){this._domElement.remove();return}this._canvasObserver.ensureAttached();for(let t=0;t<e.length;t++){const i=e[t],s=i.element;if(!i.parent||i.globalDisplayStatus<7)s==null||s.remove(),e.splice(t,1),t--;else{this._domElement.contains(s)||(s.style.position="absolute",s.style.pointerEvents="auto",this._domElement.appendChild(s));const n=i.worldTransform,o=i._anchor,r=i.width*o.x,h=i.height*o.y;s.style.transformOrigin=`${r}px ${h}px`,s.style.transform=`matrix(${n.a}, ${n.b}, ${n.c}, ${n.d}, ${n.tx-r}, ${n.ty-h})`,s.style.opacity=i.groupAlpha.toString()}}}destroy(){var e;this._renderer.runners.postrender.remove(this);for(let t=0;t<this._attachedDomElements.length;t++)(e=this._attachedDomElements[t].element)==null||e.remove();this._attachedDomElements.length=0,this._domElement.remove(),this._canvasObserver.destroy(),this._renderer=null}}Q.extension={type:[b.WebGLPipes,b.WebGPUPipes,b.CanvasPipes],name:"dom"};class ve{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this._tickerAdded||!this.domElement||(A.system.add(this._tickerUpdate,this,Z.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(A.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events._rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(this.events.supportsPointerEvents?new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,pointerId:e.pointerId}):new MouseEvent("mousemove",{clientX:e.clientX,clientY:e.clientY}))}_tickerUpdate(e){this._deltaTime+=e.deltaTime,!(this._deltaTime<this.interactionFrequency)&&(this._deltaTime=0,this._update())}destroy(){this.removeTickerListener(),this.events=null,this.domElement=null,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}}const _=new ve;class D extends O{constructor(){super(...arguments),this.client=new g,this.movement=new g,this.offset=new g,this.global=new g,this.screen=new g}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(e,t,i){return e.worldTransform.applyInverse(i||this.global,t)}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(e,t,i,s,n,o,r,h,d,p,u,l,v,c,Ee){throw new Error("Method not implemented.")}}class f extends D{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class T extends D{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}T.DOM_DELTA_PIXEL=0;T.DOM_DELTA_LINE=1;T.DOM_DELTA_PAGE=2;const fe=2048,me=new g,P=new g;class _e{constructor(e){this.dispatch=new ie,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=e,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(e,t){this.mappingTable[e]||(this.mappingTable[e]=[]),this.mappingTable[e].push({fn:t,priority:0}),this.mappingTable[e].sort((i,s)=>i.priority-s.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,s=t.length;i<s;i++)t[i].fn(e);else y(`[EventBoundary]: Event mapping not defined for ${e.type}`)}hitTest(e,t){_.pauseUpdate=!0;const s=this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive",n=this[s](this.rootTarget,this.rootTarget.eventMode,me.set(e,t),this.hitTestFn,this.hitPruneFn);return n&&n[0]}propagate(e,t){if(!e.target)return;const i=e.composedPath();e.eventPhase=e.CAPTURING_PHASE;for(let s=0,n=i.length-1;s<n;s++)if(e.currentTarget=i[s],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return;if(e.eventPhase=e.AT_TARGET,e.currentTarget=e.target,this.notifyTarget(e,t),!(e.propagationStopped||e.propagationImmediatelyStopped)){e.eventPhase=e.BUBBLING_PHASE;for(let s=i.length-2;s>=0;s--)if(e.currentTarget=i[s],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const s=Array.isArray(t)?t:[t];for(let n=i.length-1;n>=0;n--)s.forEach(o=>{e.currentTarget=i[n],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let i=0;i<fe&&e!==this.rootTarget&&e.parent;i++){if(!e.parent)throw new Error("Cannot find propagation path to disconnected target");t.push(e.parent),e=e.parent}return t.reverse(),t}hitTestMoveRecursive(e,t,i,s,n,o=!1){let r=!1;if(this._interactivePrune(e))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(_.pauseUpdate=!1),e.interactiveChildren&&e.children){const p=e.children;for(let u=p.length-1;u>=0;u--){const l=p[u],v=this.hitTestMoveRecursive(l,this._isInteractive(t)?t:l.eventMode,i,s,n,o||n(e,i));if(v){if(v.length>0&&!v[v.length-1].parent)continue;const c=e.isInteractive();(v.length>0||c)&&(c&&this._allInteractiveElements.push(e),v.push(e)),this._hitElements.length===0&&(this._hitElements=v),r=!0}}}const h=this._isInteractive(t),d=e.isInteractive();return d&&d&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:r?this._hitElements:h&&!n(e,i)&&s(e,i)?d?[e]:[]:null}hitTestRecursive(e,t,i,s,n){if(this._interactivePrune(e)||n(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(_.pauseUpdate=!1),e.interactiveChildren&&e.children){const h=e.children,d=i;for(let p=h.length-1;p>=0;p--){const u=h[p],l=this.hitTestRecursive(u,this._isInteractive(t)?t:u.eventMode,d,s,n);if(l){if(l.length>0&&!l[l.length-1].parent)continue;const v=e.isInteractive();return(l.length>0||v)&&l.push(e),l}}}const o=this._isInteractive(t),r=e.isInteractive();return o&&s(e,i)?r?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!e||!e.visible||!e.renderable||!e.measurable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,P),!e.hitArea.contains(P.x,P.y)))return!0;if(e.effects&&e.effects.length)for(let i=0;i<e.effects.length;i++){const s=e.effects[i];if(s.containsPoint&&!s.containsPoint(t,this.hitTestFn))return!0}return!1}hitTestFn(e,t){return e.hitArea?!0:e!=null&&e.containsPoint?(e.worldTransform.applyInverse(t,P),e.containsPoint(P)):!1}notifyTarget(e,t){var n,o;if(!e.currentTarget.isInteractive())return;t??(t=e.type);const i=`on${t}`;(o=(n=e.currentTarget)[i])==null||o.call(n,e);const s=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this._notifyListeners(e,s),e.eventPhase===e.AT_TARGET&&this._notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const s=t.button===2;this.dispatchEvent(t,s?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var h,d;if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",s=this.trackingData(e.pointerId),n=this.findMountedTarget(s.overTargets);if(((h=s.overTargets)==null?void 0:h.length)>0&&n!==t.target){const p=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,p,n);if(this.dispatchEvent(u,"pointerout"),i&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(n)){const l=this.createPointerEvent(e,"pointerleave",n);for(l.eventPhase=l.AT_TARGET;l.target&&!t.composedPath().includes(l.target);)l.currentTarget=l.target,this.notifyTarget(l),i&&this.notifyTarget(l,"mouseleave"),l.target=l.target.parent;this.freeEvent(l)}this.freeEvent(u)}if(n!==t.target){const p=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,p);this.dispatchEvent(u,"pointerover"),i&&this.dispatchEvent(u,"mouseover");let l=n==null?void 0:n.parent;for(;l&&l!==this.rootTarget.parent&&l!==t.target;)l=l.parent;if(!l||l===this.rootTarget.parent){const c=this.clonePointerEvent(t,"pointerenter");for(c.eventPhase=c.AT_TARGET;c.target&&c.target!==n&&c.target!==this.rootTarget.parent;)c.currentTarget=c.target,this.notifyTarget(c),i&&this.notifyTarget(c,"mouseenter"),c.target=c.target.parent;this.freeEvent(c)}this.freeEvent(u)}const o=[],r=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),r&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),r&&o.push("globaltouchmove")),i&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),r&&o.push("globalmousemove"),this.cursor=(d=t.target)==null?void 0:d.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,s.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),s=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),s&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(o=i.target)==null?void 0:o.cursor);const n=this.clonePointerEvent(i,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),s&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(n)}mapPointerOut(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",s=this.findMountedTarget(t.overTargets),n=this.createPointerEvent(e,"pointerout",s);this.dispatchEvent(n),i&&this.dispatchEvent(n,"mouseout");const o=this.createPointerEvent(e,"pointerleave",s);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(n),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const r=i.button===2;this.dispatchEvent(i,r?"rightup":"mouseup")}const s=this.trackingData(e.pointerId),n=this.findMountedTarget(s.pressTargetsByButton[e.button]);let o=n;if(n&&!i.composedPath().includes(n)){let r=n;for(;r&&!i.composedPath().includes(r);){if(i.currentTarget=r,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const h=i.button===2;this.notifyTarget(i,h?"rightupoutside":"mouseupoutside")}r=r.parent}delete s.pressTargetsByButton[e.button],o=r}if(o){const r=this.clonePointerEvent(i,"click");r.target=o,r.path=null,s.clicksByButton[e.button]||(s.clicksByButton[e.button]={clickCount:0,target:r.target,timeStamp:t});const h=s.clicksByButton[e.button];if(h.target===r.target&&t-h.timeStamp<200?++h.clickCount:h.clickCount=1,h.target=r.target,h.timeStamp=t,r.detail=h.clickCount,r.pointerType==="mouse"){const d=r.button===2;this.dispatchEvent(r,d?"rightclick":"click")}else r.pointerType==="touch"&&this.dispatchEvent(r,"tap");this.dispatchEvent(r,"pointertap"),this.freeEvent(r)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),s=this.createPointerEvent(e);if(i){let n=i;for(;n;)s.currentTarget=n,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch"?this.notifyTarget(s,"touchendoutside"):(s.pointerType==="mouse"||s.pointerType==="pen")&&this.notifyTarget(s,s.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(s)}mapWheel(e){if(!(e instanceof T)){y("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i<e.length&&e[i].parent===t;i++)t=e[i];return t}createPointerEvent(e,t,i){const s=this.allocateEvent(f);return this.copyPointerData(e,s),this.copyMouseData(e,s),this.copyData(e,s),s.nativeEvent=e.nativeEvent,s.originalEvent=e,s.target=i??this.hitTest(s.global.x,s.global.y)??this._hitElements[0],typeof t=="string"&&(s.type=t),s}createWheelEvent(e){const t=this.allocateEvent(T);return this.copyWheelData(e,t),this.copyMouseData(e,t),this.copyData(e,t),t.nativeEvent=e.nativeEvent,t.originalEvent=e,t.target=this.hitTest(t.global.x,t.global.y),t}clonePointerEvent(e,t){const i=this.allocateEvent(f);return i.nativeEvent=e.nativeEvent,i.originalEvent=e.originalEvent,this.copyPointerData(e,i),this.copyMouseData(e,i),this.copyData(e,i),i.target=e.target,i.path=e.composedPath().slice(),i.type=t??i.type,i}copyWheelData(e,t){t.deltaMode=e.deltaMode,t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ}copyPointerData(e,t){e instanceof f&&t instanceof f&&(t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist)}copyMouseData(e,t){e instanceof D&&t instanceof D&&(t.altKey=e.altKey,t.button=e.button,t.buttons=e.buttons,t.client.copyFrom(e.client),t.ctrlKey=e.ctrlKey,t.metaKey=e.metaKey,t.movement.copyFrom(e.movement),t.screen.copyFrom(e.screen),t.shiftKey=e.shiftKey,t.global.copyFrom(e.global))}copyData(e,t){t.isTrusted=e.isTrusted,t.srcElement=e.srcElement,t.timeStamp=performance.now(),t.type=e.type,t.detail=e.detail,t.view=e.view,t.which=e.which,t.layer.copyFrom(e.layer),t.page.copyFrom(e.page)}trackingData(e){return this.mappingState.trackingData[e]||(this.mappingState.trackingData[e]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[e]}allocateEvent(e){this.eventPool.has(e)||this.eventPool.set(e,[]);const t=this.eventPool.get(e).pop()||new e(this);return t.eventPhase=t.NONE,t.currentTarget=null,t.defaultPrevented=!1,t.path=null,t.target=null,t}freeEvent(e){if(e.manager!==this)throw new Error("It is illegal to free an event not managed by this EventBoundary!");const t=e.constructor;this.eventPool.has(t)||this.eventPool.set(t,[]),this.eventPool.get(t).push(e)}_notifyListeners(e,t){const i=e.currentTarget._events[t];if(i)if("fn"in i)i.once&&e.currentTarget.removeListener(t,i.fn,void 0,!0),i.fn.call(i.context,e);else for(let s=0,n=i.length;s<n&&!e.propagationImmediatelyStopped;s++)i[s].once&&e.currentTarget.removeListener(t,i[s].fn,void 0,!0),i[s].fn.call(i[s].context,e)}}const ge=1,ye={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},S=class x{constructor(e){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=e,this.rootBoundary=new _e(null),_.init(this),this.autoPreventDefault=!0,this._eventsAdded=!1,this._rootPointerEvent=new f(null),this._rootWheelEvent=new T(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy({...x.defaultEventFeatures},{set:(t,i,s)=>(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=s),t[i]=s,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{canvas:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,x._defaultEventMode=e.eventMode??"passive",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){_.destroy(),this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(e){e||(e="default");let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this._currentCursor===e)return;this._currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this._rootPointerEvent}_onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this._normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,s=t.length;i<s;i++){const n=t[i],o=this._bootstrapEvent(this._rootPointerEvent,n);this.rootBoundary.mapEvent(o)}this.setCursor(this.rootBoundary.cursor)}_onPointerMove(e){if(!this.features.move)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,_.pointerMoved();const t=this._normalizeToPointerData(e);for(let i=0,s=t.length;i<s;i++){const n=this._bootstrapEvent(this._rootPointerEvent,t[i]);this.rootBoundary.mapEvent(n)}this.setCursor(this.rootBoundary.cursor)}_onPointerUp(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",s=this._normalizeToPointerData(e);for(let n=0,o=s.length;n<o;n++){const r=this._bootstrapEvent(this._rootPointerEvent,s[n]);r.type+=i,this.rootBoundary.mapEvent(r)}this.setCursor(this.rootBoundary.cursor)}_onPointerOverOut(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this._normalizeToPointerData(e);for(let i=0,s=t.length;i<s;i++){const n=this._bootstrapEvent(this._rootPointerEvent,t[i]);this.rootBoundary.mapEvent(n)}this.setCursor(this.rootBoundary.cursor)}onWheel(e){if(!this.features.wheel)return;const t=this.normalizeWheelEvent(e);this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent(t)}setTargetElement(e){this._removeEvents(),this.domElement=e,_.domElement=e,this._addEvents()}_addEvents(){if(this._eventsAdded||!this.domElement)return;_.addTickerListener();const e=this.domElement.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):this.supportsPointerEvents&&(e.touchAction="none")),this.supportsPointerEvents?(globalThis.document.addEventListener("pointermove",this._onPointerMove,!0),this.domElement.addEventListener("pointerdown",this._onPointerDown,!0),this.domElement.addEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this._onPointerOverOut,!0),globalThis.addEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.addEventListener("mousemove",this._onPointerMove,!0),this.domElement.addEventListener("mousedown",this._onPointerDown,!0),this.domElement.addEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this._onPointerOverOut,!0),globalThis.addEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.addEventListener("touchstart",this._onPointerDown,!0),this.domElement.addEventListener("touchend",this._onPointerUp,!0),this.domElement.addEventListener("touchmove",this._onPointerMove,!0))),this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this._eventsAdded=!0}_removeEvents(){if(!this._eventsAdded||!this.domElement)return;_.removeTickerListener();const e=this.domElement.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):this.supportsPointerEvents&&(e.touchAction="")),this.supportsPointerEvents?(globalThis.document.removeEventListener("pointermove",this._onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this._onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this._onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.removeEventListener("mousemove",this._onPointerMove,!0),this.domElement.removeEventListener("mousedown",this._onPointerDown,!0),this.domElement.removeEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this._onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.removeEventListener("touchstart",this._onPointerDown,!0),this.domElement.removeEventListener("touchend",this._onPointerUp,!0),this.domElement.removeEventListener("touchmove",this._onPointerMove,!0))),this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this._eventsAdded=!1}mapPositionToPoint(e,t,i){const s=this.domElement.isConnected?this.domElement.getBoundingClientRect():{width:this.domElement.width,height:this.domElement.height,left:0,top:0},n=1/this.resolution;e.x=(t-s.left)*(this.domElement.width/s.width)*n,e.y=(i-s.top)*(this.domElement.height/s.height)*n}_normalizeToPointerData(e){const t=[];if(this.supportsTouchEvents&&e instanceof TouchEvent)for(let i=0,s=e.changedTouches.length;i<s;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.isNormalized=!0,n.type=e.type,n.altKey??(n.altKey=e.altKey),n.ctrlKey??(n.ctrlKey=e.ctrlKey),n.metaKey??(n.metaKey=e.metaKey),n.shiftKey??(n.shiftKey=e.shiftKey),t.push(n)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=ge),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this._rootWheelEvent;return this._transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}_bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this._transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=ye[e.type]||e.type),e}_transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};S.extension={name:"events",type:[b.WebGLSystem,b.CanvasSystem,b.WebGPUSystem],priority:-1};S.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let ee=S;const be={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,get interactive(){return this.eventMode==="dynamic"||this.eventMode==="static"},set interactive(a){this.eventMode=a?"static":"passive"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??ee.defaultEventMode},set eventMode(a){this._internalEventMode=a},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(a,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,s=typeof t=="object"?t.signal:void 0,n=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;a=i?`${a}capture`:a;const r=typeof e=="function"?e:e.handleEvent,h=this;s&&s.addEventListener("abort",()=>{h.off(a,r,o)}),n?h.once(a,r,o):h.on(a,r,o)},removeEventListener(a,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,s=typeof e=="function"?void 0:e;a=i?`${a}capture`:a,e=typeof e=="function"?e:e.handleEvent,this.off(a,e,s)},dispatchEvent(a){if(!(a instanceof O))throw new Error("Container cannot propagate events outside of the Federated Events API");return a.defaultPrevented=!1,a.path=null,a.target=this,a.manager.dispatchEvent(a),!a.defaultPrevented}};w.add(ue);w.mixin(V,pe);w.add(Q);w.add(ee);w.mixin(V,be);
15
+ //# sourceMappingURL=browserAll-Cx9RpU85.js.map