@midscene/android-playground 1.0.1-beta-20251125082516.0 → 1.0.1-beta-20251125123731.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/package.json +5 -5
  2. package/static/index.html +1 -1
  3. package/static/static/css/index.b63b4d27.css.map +1 -1
  4. package/static/static/js/9.1bed77ad.js +644 -0
  5. package/static/static/js/{70.e64c22f8.js.LICENSE.txt → 9.1bed77ad.js.LICENSE.txt} +0 -17
  6. package/static/static/js/{70.e64c22f8.js.map → 9.1bed77ad.js.map} +1 -1
  7. package/static/static/js/async/{195.aa1e3152.js → 195.35f1e68e.js} +3 -3
  8. package/static/static/js/async/195.35f1e68e.js.map +1 -0
  9. package/static/static/js/async/{779.e7bfc2ed.js → 199.ea3634f6.js} +7 -7
  10. package/static/static/js/async/199.ea3634f6.js.map +1 -0
  11. package/static/static/js/async/221.3f81253d.js +21 -0
  12. package/static/static/js/async/221.3f81253d.js.map +1 -0
  13. package/static/static/js/async/{631.9799e85f.js → 271.aad1ebb5.js} +4 -4
  14. package/static/static/js/async/271.aad1ebb5.js.map +1 -0
  15. package/static/static/js/async/35.c1ca8ab2.js +1 -0
  16. package/static/static/js/async/{782.f77f2205.js → 376.b7913581.js} +1 -1
  17. package/static/static/js/async/376.b7913581.js.map +1 -0
  18. package/static/static/js/async/{441.675c15a8.js → 467.887e5efa.js} +1 -1
  19. package/static/static/js/async/{271.71b3326b.js → 652.26c99dbf.js} +3 -3
  20. package/static/static/js/async/652.26c99dbf.js.map +1 -0
  21. package/static/static/js/async/856.20036e0a.js +158 -0
  22. package/static/static/js/async/{150.d439b38c.js.map → 856.20036e0a.js.map} +1 -1
  23. package/static/static/js/async/860.9fc10f4b.js +2 -0
  24. package/static/static/js/async/860.9fc10f4b.js.map +1 -0
  25. package/static/static/js/async/{586.ffc417d5.js → 990.65e3a3ab.js} +3 -3
  26. package/static/static/js/async/990.65e3a3ab.js.map +1 -0
  27. package/static/static/js/{index.b28abd77.js → index.3b68506d.js} +5 -5
  28. package/static/static/js/index.3b68506d.js.map +1 -0
  29. package/static/static/js/lib-react.d7dec362.js.map +1 -1
  30. package/static/static/js/70.e64c22f8.js +0 -697
  31. package/static/static/js/async/150.d439b38c.js +0 -158
  32. package/static/static/js/async/195.aa1e3152.js.map +0 -1
  33. package/static/static/js/async/260.d838b3b7.js +0 -2
  34. package/static/static/js/async/260.d838b3b7.js.map +0 -1
  35. package/static/static/js/async/271.71b3326b.js.map +0 -1
  36. package/static/static/js/async/355.76c31308.js +0 -1
  37. package/static/static/js/async/45.ce50b37f.js +0 -21
  38. package/static/static/js/async/45.ce50b37f.js.map +0 -1
  39. package/static/static/js/async/586.ffc417d5.js.map +0 -1
  40. package/static/static/js/async/631.9799e85f.js.map +0 -1
  41. package/static/static/js/async/779.e7bfc2ed.js.map +0 -1
  42. package/static/static/js/async/782.f77f2205.js.map +0 -1
  43. package/static/static/js/index.b28abd77.js.map +0 -1
  44. /package/static/static/js/{index.b28abd77.js.LICENSE.txt → index.3b68506d.js.LICENSE.txt} +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";(self.webpackChunkandroid_playground=self.webpackChunkandroid_playground||[]).push([["586"],{42665:function(e,t,r){r.d(t,{WebGPURenderer:()=>e_});var s=r(82295),i=r(16325),n=r(94777),o=r(81199),a=r(64367),u=r(31988),d=r(32791),h=r(88101),l=r(56959),c=r(88675);class p{init(){let e=new c.k({uTransformMatrix:{value:new i.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),t=(0,o.v)({name:"graphics",bits:[a.F,(0,u._)(16),d._Q,h.b]});this.shader=new l.M({gpuProgram:t,resources:{localUniforms:e}})}execute(e,t){let r=t.context,s=r.customShader||this.shader,i=e.renderer,{geometry:o,instructions:a}=i.graphicsContext.getContextRenderData(r),u=i.encoder;u.setPipelineFromGeometryProgramAndState(o,s.gpuProgram,e.state),u.setGeometry(o);let d=i.globalUniforms.bindGroup;u.setBindGroup(0,d,s.gpuProgram);let h=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);u.setBindGroup(2,h,s.gpuProgram);let l=a.instructions;for(let e=0;e<a.instructionSize;e++){let t=l[e];if(s.groups[1]=t.bindGroup,!t.gpuBindGroup){let e=t.textures;t.bindGroup=(0,n.w)(e.textures,e.count),t.gpuBindGroup=i.bindGroup.getBindGroup(t.bindGroup,s.gpuProgram,1)}u.setBindGroup(1,t.bindGroup,s.gpuProgram),u.renderPassEncoder.drawIndexed(t.size,1,t.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}p.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"graphics"};var f=r(15875),g=r(55003),_=r(42912);class m{init(){let e=(0,o.v)({name:"mesh",bits:[d.Ls,f.R,h.b]});this._shader=new l.M({gpuProgram:e,resources:{uTexture:g.g.EMPTY._source,uSampler:g.g.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new i.u}}}})}execute(e,t){let r=e.renderer,s=t._shader;if(s){if(!s.gpuProgram)return void(0,_.R)("Mesh shader has no gpuProgram",t.shader)}else(s=this._shader).resources.uTexture=t.texture.source,s.resources.uSampler=t.texture.source.style,s.resources.textureUniforms.uniforms.uTextureMatrix=t.texture.textureMatrix.mapCoord;let i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){let t=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(t,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}m.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"mesh"};var b=r(69071);let x=b.U.for2d();class y{init(){let e=(0,o.v)({name:"batch",bits:[a.F,(0,u._)(16),h.b]});this._shader=new l.M({gpuProgram:e,groups:{}})}start(e,t){let r=e.renderer,s=r.encoder,i=this._shader.gpuProgram;this._geometry=t,s.setGeometry(t),x.blendMode="normal",r.pipeline.getPipeline(t,i,x);let n=r.globalUniforms.bindGroup;s.resetBindGroup(1),s.setBindGroup(0,n,i)}execute(e,t){let r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){let e=t.textures;t.bindGroup=(0,n.w)(e.textures,e.count)}x.blendMode=t.blendMode;let o=s.bindGroup.getBindGroup(t.bindGroup,r,1),a=s.pipeline.getPipeline(this._geometry,r,x);t.bindGroup._touch(s.textureGC.count),i.setPipeline(a),i.renderPassEncoder.setBindGroup(1,o),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}destroy(){this._shader.destroy(!0),this._shader=null}}y.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"batch"};var G=r(71771),P=r(60019),B=r(74711);class S{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){let s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(let t in i){let r,s=e.resources[t]??e.resources[i[t]];if("uniformGroup"===s._resourceType){o.ubo.updateUniformGroup(s);let e=s.buffer;r={buffer:o.buffer.getGPUBuffer(e),offset:0,size:e.descriptor.size}}else"buffer"===s._resourceType?r={buffer:o.buffer.getGPUBuffer(s),offset:0,size:s.descriptor.size}:"bufferResource"===s._resourceType?r={buffer:o.buffer.getGPUBuffer(s.buffer),offset:s.offset,size:s.size}:"textureSampler"===s._resourceType?r=o.texture.getGpuSampler(s):"textureSource"===s._resourceType&&(r=o.texture.getGpuSource(s).createView({}));n.push({binding:i[t],resource:r})}let a=o.shader.getProgramData(t).bindGroups[r],u=s.createBindGroup({layout:a,entries:n});return this._hash[e._key]=u,u}destroy(){for(let e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}}S.extension={type:[s.Ag.WebGPUSystem],name:"bindGroup"};var T=r(8508);class C{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){let t=this._gpuBuffers[e.uid]||this.createGPUBuffer(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(){for(let e in this._gpuBuffers)this._gpuBuffers[e].destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this));let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&((0,T.W)(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,this._managedBuffers.push(e),t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._managedBuffers.splice(this._managedBuffers.indexOf(e),1),this._destroyBuffer(e)}destroy(){this._managedBuffers.forEach(e=>this._destroyBuffer(e)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(e){this._gpuBuffers[e.uid].destroy(),e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[e.uid]=null}}C.extension={type:[s.Ag.WebGPUSystem],name:"buffer"};class v{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}}v.extension={type:[s.Ag.WebGPUSystem],name:"colorMask"};class M{constructor(e){this._renderer=e}async init(e){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(e).then(e=>{this.gpu=e,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await navigator.gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(e=>t.features.has(e)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}}M.extension={type:[s.Ag.WebGPUSystem],name:"device"},M.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class U{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){let 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;let t=2===e.data.BYTES_PER_ELEMENT?"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.textureGC.count);let s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e){for(let t in e.attributes){let r=e.attributes[t];this._setVertexBuffer(r.location,r.buffer)}e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let r in e.groups){let s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(let t in e.resources){let r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){let{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:a,skipSync:u}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t),this._setShaderBindGroups(r,u),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,a||t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),a||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(){let e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();let n=this._renderer.renderTarget.viewport;for(let e in this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t),r)this._setVertexBuffer(e,r[e]);for(let e in i)this.setBindGroup(e,i[e],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}}U.extension={type:[s.Ag.WebGPUSystem],name:"encoder",priority:1};var w=r(40729);class R{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:w.K.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){let r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;let 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}}R.extension={type:[s.Ag.WebGPUSystem],name:"stencil"};var E=r(39258),A=r(65657),k=r(35097),O=r(37824);class H{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 Error(`UniformBufferBatch: array is too large: ${4*e}`);let t=this.byteIndex,r=t+4*e;if((r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){let t=this.addEmptyGroup(e.length);for(let r=0;r<e.length;r++)this.data[t/4+r]=e[r];return t}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}var F=r(48997);class D{constructor(e){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=e,this._batchBuffer=new H({minUniformOffsetAlignment:128});for(let e=0;e<2;e++){let t=O.S.UNIFORM|O.S.COPY_DST;0===e&&(t|=O.S.COPY_SRC),this._buffers.push(new A.h({data:this._batchBuffer.data,usage:t}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(let e in this._bindGroupHash)this._bindGroupHash[e]=null;this._batchBuffer.clear()}getUniformBindGroup(e,t){if(!t&&this._bindGroupHash[e.uid])return this._bindGroupHash[e.uid];this._renderer.ubo.ensureUniformGroup(e);let 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/128),this._bindGroupHash[e.uid]}getUboResource(e){this._renderer.ubo.updateUniformGroup(e);let t=e.buffer.data,r=this._batchBuffer.addGroup(t);return this._getBufferResource(r/128)}getArrayBindGroup(e){let t=this._batchBuffer.addGroup(e);return this._getBindGroup(t/128)}getArrayBufferResource(e){let t=this._batchBuffer.addGroup(e);return this._getBufferResource(t/128)}_getBufferResource(e){if(!this._bufferResources[e]){let t=this._buffers[e%2];this._bufferResources[e]=new k.d({buffer:t,offset:(e/2|0)*256,size:128})}return this._bufferResources[e]}_getBindGroup(e){if(!this._bindGroups[e]){let t=new F.T({0:this._getBufferResource(e)});this._bindGroups[e]=t}return this._bindGroups[e]}_uploadBindGroups(){let e=this._renderer.buffer,t=this._buffers[0];t.update(this._batchBuffer.byteIndex),e.updateBuffer(t);let r=this._renderer.gpu.device.createCommandEncoder();for(let s=1;s<this._buffers.length;s++){let i=this._buffers[s];r.copyBufferToBuffer(e.getGPUBuffer(t),128,e.getGPUBuffer(i),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([r.finish()])}destroy(){for(let e=0;e<this._bindGroups.length;e++)this._bindGroups[e].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let e=0;e<this._buffers.length;e++)this._buffers[e].destroy();this._buffers=null;for(let e=0;e<this._bufferResources.length;e++)this._bufferResources[e].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}D.extension={type:[s.Ag.WebGPUPipes],name:"uniformBatch"};var L=r(27992),I=r(45732),W=r(19016);let V={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};class N{constructor(e){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=e}contextChange(e){this._gpu=e,this.setStencilMode(w.K.DISABLED),this._updatePipeHash()}setMultisampleCount(e){this._multisampleCount!==e&&(this._multisampleCount=e,this._updatePipeHash())}setRenderTarget(e){this._multisampleCount=e.msaaSamples,this._depthStencilAttachment=+!!e.descriptor.depthStencilAttachment,this._updatePipeHash()}setColorMask(e){this._colorMask!==e&&(this._colorMask=e,this._updatePipeHash())}setStencilMode(e){this._stencilMode!==e&&(this._stencilMode=e,this._stencilState=W.g[e],this._updatePipeHash())}setPipeline(e,t,r,s){let i=this.getPipeline(e,t,r);s.setPipeline(i)}getPipeline(e,t,r,s){var i,n,o;e._layoutKey||((0,L.q)(e,t.attributeData),this._generateBufferKey(e)),s=s||e.topology;let a=(i=e._layoutKey,n=t._layoutKey,o=r.data,i<<24|n<<16|o<<10|r._blendModeId<<5|V[s]);return this._pipeCache[a]||(this._pipeCache[a]=this._createPipeline(e,t,r,s)),this._pipeCache[a]}_createPipeline(e,t,r,s){let i=this._gpu.device,n=this._createVertexBufferLayouts(e),o=this._renderer.state.getColorTargets(r);o[0].writeMask=this._stencilMode===w.K.RENDERING_MASK_ADD?0:this._colorMask;let a=this._renderer.shader.getProgramData(t).pipeline,u={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:a,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(u.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:r.depthTest,depthCompare:r.depthTest?"less":"always"}),i.createRenderPipeline(u)}_getModule(e){return this._moduleCache[e]||this._createModule(e)}_createModule(e){let t=this._gpu.device;return this._moduleCache[e]=t.createShaderModule({code:e}),this._moduleCache[e]}_generateBufferKey(e){let t=[],r=0,s=Object.keys(e.attributes).sort();for(let i=0;i<s.length;i++){let n=e.attributes[s[i]];t[r++]=n.location,t[r++]=n.offset,t[r++]=n.format,t[r++]=n.stride}let i=t.join("");return e._layoutKey=(0,I.X)(i,"geometry"),e._layoutKey}_createVertexBufferLayouts(e){if(this._bufferLayoutsCache[e._layoutKey])return this._bufferLayoutsCache[e._layoutKey];let t=[];return e.buffers.forEach(r=>{let s={arrayStride:0,stepMode:"vertex",attributes:[]},i=s.attributes;for(let t in e.attributes){let n=e.attributes[t];n.buffer===r&&(s.arrayStride=n.stride,s.stepMode=n.instance?"instance":"vertex",i.push({shaderLocation:n.location,offset:n.offset,format:n.format}))}i.length&&t.push(s)}),this._bufferLayoutsCache[e._layoutKey]=t,t}_updatePipeHash(){var e,t;let r=(e=this._stencilMode,t=this._multisampleCount,this._colorMask<<6|e<<3|this._depthStencilAttachment<<1|t);this._pipeStateCaches[r]||(this._pipeStateCaches[r]=Object.create(null)),this._pipeCache=this._pipeStateCaches[r]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}N.extension={type:[s.Ag.WebGPUSystem],name:"pipeline"};var z=r(88138),j=r(72653),K=r(3616),q=r(66747);class Y{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class X{init(e,t){this._renderer=e,this._renderTargetSystem=t}copyToTexture(e,t,r,s,i){let n=this._renderer,o=this._getGpuColorTexture(e),a=n.texture.getGpuSource(t.source);return n.encoder.commandEncoder.copyTextureToTexture({texture:o,origin:r},{texture:a,origin:i},s),t}startRenderPass(e,t=!0,r,s){let i=this._renderTargetSystem.getGpuRenderTarget(e);i.descriptor=this.getDescriptor(e,t,r),this._renderer.pipeline.setRenderTarget(i),this._renderer.encoder.beginRenderPass(i),this._renderer.encoder.setViewport(s)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(e){let 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){let s;"boolean"==typeof t&&(t=t?j.u.ALL:j.u.NONE);let i=this._renderTargetSystem,n=i.getGpuRenderTarget(e),o=e.colorTextures.map((e,s)=>{let o,a,u=n.contexts[s];o=u?u.getCurrentTexture().createView():this._renderer.texture.getGpuSource(e).createView({mipLevelCount:1}),n.msaaTextures[s]&&(a=o,o=this._renderer.texture.getTextureView(n.msaaTextures[s]));let d=t&j.u.COLOR?"clear":"load";return r??(r=i.defaultClearColor),{view:o,resolveTarget:a,clearValue:r,storeOp:"store",loadOp:d}});if((e.stencil||e.depth)&&!e.depthStencilTexture&&(e.ensureDepthStencilTexture(),e.depthStencilTexture.source.sampleCount=n.msaa?4:1),e.depthStencilTexture){let r=t&j.u.STENCIL?"clear":"load",i=t&j.u.DEPTH?"clear":"load";s={view:this._renderer.texture.getGpuSource(e.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:r,depthClearValue:1,depthLoadOp:i,depthStoreOp:"store"}}return{colorAttachments:o,depthStencilAttachment:s}}clear(e,t=!0,r,s){if(!t)return;let{gpu:i,encoder:n}=this._renderer,o=i.device;if(null===n.commandEncoder){let i=o.createCommandEncoder(),n=this.getDescriptor(e,t,r),a=i.beginRenderPass(n);a.setViewport(s.x,s.y,s.width,s.height,0,1),a.end();let u=i.finish();o.queue.submit([u])}else this.startRenderPass(e,t,r,s)}initGpuRenderTarget(e){e.isRoot=!0;let t=new Y;return e.colorTextures.forEach((e,r)=>{if(K.q.test(e.resource)){let s=e.resource.getContext("webgpu"),i=e.transparent?"premultiplied":"opaque";try{s.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:i})}catch(e){console.error(e)}t.contexts[r]=s}if(t.msaa=e.source.antialias,e.source.antialias){let e=new q.v({width:0,height:0,sampleCount:4});t.msaaTextures[r]=e}}),t.msaa&&(t.msaaSamples=4,e.depthStencilTexture&&(e.depthStencilTexture.source.sampleCount=4)),t}destroyGpuRenderTarget(e){e.contexts.forEach(e=>{e.unconfigure()}),e.msaaTextures.forEach(e=>{e.destroy()}),e.msaaTextures.length=0,e.contexts.length=0}ensureDepthStencilTexture(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);e.depthStencilTexture&&t.msaa&&(e.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);t.width=e.width,t.height=e.height,t.msaa&&e.colorTextures.forEach((e,r)=>{let s=t.msaaTextures[r];s?.resize(e.source.width,e.source.height,e.source._resolution)})}}class Q extends z.l{constructor(e){super(e),this.adaptor=new X,this.adaptor.init(e,this)}}Q.extension={type:[s.Ag.WebGPUSystem],name:"renderTarget"};class ${constructor(){this._gpuProgramData=Object.create(null)}contextChange(e){this._gpu=e}getProgramData(e){return this._gpuProgramData[e._layoutKey]||this._createGPUProgramData(e)}_createGPUProgramData(e){let t=this._gpu.device,r=e.gpuLayout.map(e=>t.createBindGroupLayout({entries:e}));return this._gpuProgramData[e._layoutKey]={bindGroups:r,pipeline:t.createPipelineLayout({bindGroupLayouts:r})},this._gpuProgramData[e._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}$.extension={type:[s.Ag.WebGPUSystem],name:"shader"};let J={};J.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},J.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},J.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},J.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},J.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},J.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},J["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},J["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},J["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},J.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}};class Z{constructor(){this.defaultState=new b.U,this.defaultState.blend=!0}contextChange(e){this.gpu=e}getColorTargets(e){return[{format:"bgra8unorm",writeMask:0,blend:J[e.blendMode]||J.normal}]}destroy(){this.gpu=null}}Z.extension={type:[s.Ag.WebGPUSystem],name:"state"};var ee=r(50160),et=r(82164);let er={type:"image",upload(e,t,r){let s=e.resource,i=(0|e.pixelWidth)*(0|e.pixelHeight),n=s.byteLength/i;r.device.queue.writeTexture({texture:t},s,{offset:0,rowsPerImage:e.pixelHeight,bytesPerRow:e.pixelHeight*n},{width:e.pixelWidth,height:e.pixelHeight,depthOrArrayLayers:1})}},es={"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}},ei={blockBytes:4,blockWidth:1,blockHeight:1},en={type:"compressed",upload(e,t,r){let s=e.pixelWidth,i=e.pixelHeight,n=es[e.format]||ei;for(let o=0;o<e.resource.length;o++){let a=e.resource[o],u=Math.ceil(s/n.blockWidth)*n.blockBytes;r.device.queue.writeTexture({texture:t,mipLevel:o},a,{offset:0,bytesPerRow:u},{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)}}},eo={type:"image",upload(e,t,r){let s=e.resource;if(!s)return;let i=Math.min(t.width,e.resourceWidth||e.pixelWidth),n=Math.min(t.height,e.resourceHeight||e.pixelHeight),o="premultiply-alpha-on-upload"===e.alphaMode;r.device.queue.copyExternalImageToTexture({source:s},{texture:t,premultipliedAlpha:o},{width:i,height:n})}},ea={type:"video",upload(e,t,r){eo.upload(e,t,r)}};class eu{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:`
1
+ "use strict";(self.webpackChunkandroid_playground=self.webpackChunkandroid_playground||[]).push([["990"],{88461:function(e,t,r){r.d(t,{WebGPURenderer:()=>e_});var s=r(43071),i=r(96253),n=r(37313),o=r(96653),a=r(89911),u=r(52844),d=r(54447),h=r(57261),l=r(68023),c=r(98625);class p{init(){let e=new c.k({uTransformMatrix:{value:new i.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),t=(0,o.v)({name:"graphics",bits:[a.F,(0,u._)(16),d._Q,h.b]});this.shader=new l.M({gpuProgram:t,resources:{localUniforms:e}})}execute(e,t){let r=t.context,s=r.customShader||this.shader,i=e.renderer,{geometry:o,instructions:a}=i.graphicsContext.getContextRenderData(r),u=i.encoder;u.setPipelineFromGeometryProgramAndState(o,s.gpuProgram,e.state),u.setGeometry(o);let d=i.globalUniforms.bindGroup;u.setBindGroup(0,d,s.gpuProgram);let h=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);u.setBindGroup(2,h,s.gpuProgram);let l=a.instructions;for(let e=0;e<a.instructionSize;e++){let t=l[e];if(s.groups[1]=t.bindGroup,!t.gpuBindGroup){let e=t.textures;t.bindGroup=(0,n.w)(e.textures,e.count),t.gpuBindGroup=i.bindGroup.getBindGroup(t.bindGroup,s.gpuProgram,1)}u.setBindGroup(1,t.bindGroup,s.gpuProgram),u.renderPassEncoder.drawIndexed(t.size,1,t.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}p.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"graphics"};var f=r(31787),g=r(27633),_=r(86840);class m{init(){let e=(0,o.v)({name:"mesh",bits:[d.Ls,f.R,h.b]});this._shader=new l.M({gpuProgram:e,resources:{uTexture:g.g.EMPTY._source,uSampler:g.g.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new i.u}}}})}execute(e,t){let r=e.renderer,s=t._shader;if(s){if(!s.gpuProgram)return void(0,_.R)("Mesh shader has no gpuProgram",t.shader)}else(s=this._shader).resources.uTexture=t.texture.source,s.resources.uSampler=t.texture.source.style,s.resources.textureUniforms.uniforms.uTextureMatrix=t.texture.textureMatrix.mapCoord;let i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){let t=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(t,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}m.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"mesh"};var b=r(21447);let x=b.U.for2d();class y{init(){let e=(0,o.v)({name:"batch",bits:[a.F,(0,u._)(16),h.b]});this._shader=new l.M({gpuProgram:e,groups:{}})}start(e,t){let r=e.renderer,s=r.encoder,i=this._shader.gpuProgram;this._geometry=t,s.setGeometry(t),x.blendMode="normal",r.pipeline.getPipeline(t,i,x);let n=r.globalUniforms.bindGroup;s.resetBindGroup(1),s.setBindGroup(0,n,i)}execute(e,t){let r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){let e=t.textures;t.bindGroup=(0,n.w)(e.textures,e.count)}x.blendMode=t.blendMode;let o=s.bindGroup.getBindGroup(t.bindGroup,r,1),a=s.pipeline.getPipeline(this._geometry,r,x);t.bindGroup._touch(s.textureGC.count),i.setPipeline(a),i.renderPassEncoder.setBindGroup(1,o),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}destroy(){this._shader.destroy(!0),this._shader=null}}y.extension={type:[s.Ag.WebGPUPipesAdaptor],name:"batch"};var G=r(11075),P=r(71217),B=r(52031);class S{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){let s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(let t in i){let r,s=e.resources[t]??e.resources[i[t]];if("uniformGroup"===s._resourceType){o.ubo.updateUniformGroup(s);let e=s.buffer;r={buffer:o.buffer.getGPUBuffer(e),offset:0,size:e.descriptor.size}}else"buffer"===s._resourceType?r={buffer:o.buffer.getGPUBuffer(s),offset:0,size:s.descriptor.size}:"bufferResource"===s._resourceType?r={buffer:o.buffer.getGPUBuffer(s.buffer),offset:s.offset,size:s.size}:"textureSampler"===s._resourceType?r=o.texture.getGpuSampler(s):"textureSource"===s._resourceType&&(r=o.texture.getGpuSource(s).createView({}));n.push({binding:i[t],resource:r})}let a=o.shader.getProgramData(t).bindGroups[r],u=s.createBindGroup({layout:a,entries:n});return this._hash[e._key]=u,u}destroy(){for(let e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}}S.extension={type:[s.Ag.WebGPUSystem],name:"bindGroup"};var T=r(51364);class C{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){let t=this._gpuBuffers[e.uid]||this.createGPUBuffer(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(){for(let e in this._gpuBuffers)this._gpuBuffers[e].destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this));let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&((0,T.W)(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,this._managedBuffers.push(e),t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._managedBuffers.splice(this._managedBuffers.indexOf(e),1),this._destroyBuffer(e)}destroy(){this._managedBuffers.forEach(e=>this._destroyBuffer(e)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(e){this._gpuBuffers[e.uid].destroy(),e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[e.uid]=null}}C.extension={type:[s.Ag.WebGPUSystem],name:"buffer"};class v{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}}v.extension={type:[s.Ag.WebGPUSystem],name:"colorMask"};class M{constructor(e){this._renderer=e}async init(e){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(e).then(e=>{this.gpu=e,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await navigator.gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(e=>t.features.has(e)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}}M.extension={type:[s.Ag.WebGPUSystem],name:"device"},M.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class U{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){let 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;let t=2===e.data.BYTES_PER_ELEMENT?"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.textureGC.count);let s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e){for(let t in e.attributes){let r=e.attributes[t];this._setVertexBuffer(r.location,r.buffer)}e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let r in e.groups){let s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(let t in e.resources){let r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){let{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:a,skipSync:u}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t),this._setShaderBindGroups(r,u),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,a||t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),a||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(){let e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();let n=this._renderer.renderTarget.viewport;for(let e in this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t),r)this._setVertexBuffer(e,r[e]);for(let e in i)this.setBindGroup(e,i[e],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}}U.extension={type:[s.Ag.WebGPUSystem],name:"encoder",priority:1};var w=r(70673);class R{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:w.K.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){let r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;let 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}}R.extension={type:[s.Ag.WebGPUSystem],name:"stencil"};var E=r(67654),A=r(8113),k=r(96801),O=r(71720);class H{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 Error(`UniformBufferBatch: array is too large: ${4*e}`);let t=this.byteIndex,r=t+4*e;if((r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){let t=this.addEmptyGroup(e.length);for(let r=0;r<e.length;r++)this.data[t/4+r]=e[r];return t}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}var F=r(52781);class D{constructor(e){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=e,this._batchBuffer=new H({minUniformOffsetAlignment:128});for(let e=0;e<2;e++){let t=O.S.UNIFORM|O.S.COPY_DST;0===e&&(t|=O.S.COPY_SRC),this._buffers.push(new A.h({data:this._batchBuffer.data,usage:t}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(let e in this._bindGroupHash)this._bindGroupHash[e]=null;this._batchBuffer.clear()}getUniformBindGroup(e,t){if(!t&&this._bindGroupHash[e.uid])return this._bindGroupHash[e.uid];this._renderer.ubo.ensureUniformGroup(e);let 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/128),this._bindGroupHash[e.uid]}getUboResource(e){this._renderer.ubo.updateUniformGroup(e);let t=e.buffer.data,r=this._batchBuffer.addGroup(t);return this._getBufferResource(r/128)}getArrayBindGroup(e){let t=this._batchBuffer.addGroup(e);return this._getBindGroup(t/128)}getArrayBufferResource(e){let t=this._batchBuffer.addGroup(e);return this._getBufferResource(t/128)}_getBufferResource(e){if(!this._bufferResources[e]){let t=this._buffers[e%2];this._bufferResources[e]=new k.d({buffer:t,offset:(e/2|0)*256,size:128})}return this._bufferResources[e]}_getBindGroup(e){if(!this._bindGroups[e]){let t=new F.T({0:this._getBufferResource(e)});this._bindGroups[e]=t}return this._bindGroups[e]}_uploadBindGroups(){let e=this._renderer.buffer,t=this._buffers[0];t.update(this._batchBuffer.byteIndex),e.updateBuffer(t);let r=this._renderer.gpu.device.createCommandEncoder();for(let s=1;s<this._buffers.length;s++){let i=this._buffers[s];r.copyBufferToBuffer(e.getGPUBuffer(t),128,e.getGPUBuffer(i),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([r.finish()])}destroy(){for(let e=0;e<this._bindGroups.length;e++)this._bindGroups[e].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let e=0;e<this._buffers.length;e++)this._buffers[e].destroy();this._buffers=null;for(let e=0;e<this._bufferResources.length;e++)this._bufferResources[e].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}D.extension={type:[s.Ag.WebGPUPipes],name:"uniformBatch"};var L=r(22896),I=r(60924),W=r(9392);let V={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};class N{constructor(e){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=e}contextChange(e){this._gpu=e,this.setStencilMode(w.K.DISABLED),this._updatePipeHash()}setMultisampleCount(e){this._multisampleCount!==e&&(this._multisampleCount=e,this._updatePipeHash())}setRenderTarget(e){this._multisampleCount=e.msaaSamples,this._depthStencilAttachment=+!!e.descriptor.depthStencilAttachment,this._updatePipeHash()}setColorMask(e){this._colorMask!==e&&(this._colorMask=e,this._updatePipeHash())}setStencilMode(e){this._stencilMode!==e&&(this._stencilMode=e,this._stencilState=W.g[e],this._updatePipeHash())}setPipeline(e,t,r,s){let i=this.getPipeline(e,t,r);s.setPipeline(i)}getPipeline(e,t,r,s){var i,n,o;e._layoutKey||((0,L.q)(e,t.attributeData),this._generateBufferKey(e)),s=s||e.topology;let a=(i=e._layoutKey,n=t._layoutKey,o=r.data,i<<24|n<<16|o<<10|r._blendModeId<<5|V[s]);return this._pipeCache[a]||(this._pipeCache[a]=this._createPipeline(e,t,r,s)),this._pipeCache[a]}_createPipeline(e,t,r,s){let i=this._gpu.device,n=this._createVertexBufferLayouts(e),o=this._renderer.state.getColorTargets(r);o[0].writeMask=this._stencilMode===w.K.RENDERING_MASK_ADD?0:this._colorMask;let a=this._renderer.shader.getProgramData(t).pipeline,u={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:a,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(u.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:r.depthTest,depthCompare:r.depthTest?"less":"always"}),i.createRenderPipeline(u)}_getModule(e){return this._moduleCache[e]||this._createModule(e)}_createModule(e){let t=this._gpu.device;return this._moduleCache[e]=t.createShaderModule({code:e}),this._moduleCache[e]}_generateBufferKey(e){let t=[],r=0,s=Object.keys(e.attributes).sort();for(let i=0;i<s.length;i++){let n=e.attributes[s[i]];t[r++]=n.location,t[r++]=n.offset,t[r++]=n.format,t[r++]=n.stride}let i=t.join("");return e._layoutKey=(0,I.X)(i,"geometry"),e._layoutKey}_createVertexBufferLayouts(e){if(this._bufferLayoutsCache[e._layoutKey])return this._bufferLayoutsCache[e._layoutKey];let t=[];return e.buffers.forEach(r=>{let s={arrayStride:0,stepMode:"vertex",attributes:[]},i=s.attributes;for(let t in e.attributes){let n=e.attributes[t];n.buffer===r&&(s.arrayStride=n.stride,s.stepMode=n.instance?"instance":"vertex",i.push({shaderLocation:n.location,offset:n.offset,format:n.format}))}i.length&&t.push(s)}),this._bufferLayoutsCache[e._layoutKey]=t,t}_updatePipeHash(){var e,t;let r=(e=this._stencilMode,t=this._multisampleCount,this._colorMask<<6|e<<3|this._depthStencilAttachment<<1|t);this._pipeStateCaches[r]||(this._pipeStateCaches[r]=Object.create(null)),this._pipeCache=this._pipeStateCaches[r]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}N.extension={type:[s.Ag.WebGPUSystem],name:"pipeline"};var z=r(36094),j=r(68181),K=r(30040),q=r(83257);class Y{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class X{init(e,t){this._renderer=e,this._renderTargetSystem=t}copyToTexture(e,t,r,s,i){let n=this._renderer,o=this._getGpuColorTexture(e),a=n.texture.getGpuSource(t.source);return n.encoder.commandEncoder.copyTextureToTexture({texture:o,origin:r},{texture:a,origin:i},s),t}startRenderPass(e,t=!0,r,s){let i=this._renderTargetSystem.getGpuRenderTarget(e);i.descriptor=this.getDescriptor(e,t,r),this._renderer.pipeline.setRenderTarget(i),this._renderer.encoder.beginRenderPass(i),this._renderer.encoder.setViewport(s)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(e){let 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){let s;"boolean"==typeof t&&(t=t?j.u.ALL:j.u.NONE);let i=this._renderTargetSystem,n=i.getGpuRenderTarget(e),o=e.colorTextures.map((e,s)=>{let o,a,u=n.contexts[s];o=u?u.getCurrentTexture().createView():this._renderer.texture.getGpuSource(e).createView({mipLevelCount:1}),n.msaaTextures[s]&&(a=o,o=this._renderer.texture.getTextureView(n.msaaTextures[s]));let d=t&j.u.COLOR?"clear":"load";return r??(r=i.defaultClearColor),{view:o,resolveTarget:a,clearValue:r,storeOp:"store",loadOp:d}});if((e.stencil||e.depth)&&!e.depthStencilTexture&&(e.ensureDepthStencilTexture(),e.depthStencilTexture.source.sampleCount=n.msaa?4:1),e.depthStencilTexture){let r=t&j.u.STENCIL?"clear":"load",i=t&j.u.DEPTH?"clear":"load";s={view:this._renderer.texture.getGpuSource(e.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:r,depthClearValue:1,depthLoadOp:i,depthStoreOp:"store"}}return{colorAttachments:o,depthStencilAttachment:s}}clear(e,t=!0,r,s){if(!t)return;let{gpu:i,encoder:n}=this._renderer,o=i.device;if(null===n.commandEncoder){let i=o.createCommandEncoder(),n=this.getDescriptor(e,t,r),a=i.beginRenderPass(n);a.setViewport(s.x,s.y,s.width,s.height,0,1),a.end();let u=i.finish();o.queue.submit([u])}else this.startRenderPass(e,t,r,s)}initGpuRenderTarget(e){e.isRoot=!0;let t=new Y;return e.colorTextures.forEach((e,r)=>{if(K.q.test(e.resource)){let s=e.resource.getContext("webgpu"),i=e.transparent?"premultiplied":"opaque";try{s.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:i})}catch(e){console.error(e)}t.contexts[r]=s}if(t.msaa=e.source.antialias,e.source.antialias){let e=new q.v({width:0,height:0,sampleCount:4});t.msaaTextures[r]=e}}),t.msaa&&(t.msaaSamples=4,e.depthStencilTexture&&(e.depthStencilTexture.source.sampleCount=4)),t}destroyGpuRenderTarget(e){e.contexts.forEach(e=>{e.unconfigure()}),e.msaaTextures.forEach(e=>{e.destroy()}),e.msaaTextures.length=0,e.contexts.length=0}ensureDepthStencilTexture(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);e.depthStencilTexture&&t.msaa&&(e.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);t.width=e.width,t.height=e.height,t.msaa&&e.colorTextures.forEach((e,r)=>{let s=t.msaaTextures[r];s?.resize(e.source.width,e.source.height,e.source._resolution)})}}class Q extends z.l{constructor(e){super(e),this.adaptor=new X,this.adaptor.init(e,this)}}Q.extension={type:[s.Ag.WebGPUSystem],name:"renderTarget"};class ${constructor(){this._gpuProgramData=Object.create(null)}contextChange(e){this._gpu=e}getProgramData(e){return this._gpuProgramData[e._layoutKey]||this._createGPUProgramData(e)}_createGPUProgramData(e){let t=this._gpu.device,r=e.gpuLayout.map(e=>t.createBindGroupLayout({entries:e}));return this._gpuProgramData[e._layoutKey]={bindGroups:r,pipeline:t.createPipelineLayout({bindGroupLayouts:r})},this._gpuProgramData[e._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}$.extension={type:[s.Ag.WebGPUSystem],name:"shader"};let J={};J.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},J.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},J.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},J.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},J.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},J.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},J["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},J["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},J["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},J.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}};class Z{constructor(){this.defaultState=new b.U,this.defaultState.blend=!0}contextChange(e){this.gpu=e}getColorTargets(e){return[{format:"bgra8unorm",writeMask:0,blend:J[e.blendMode]||J.normal}]}destroy(){this.gpu=null}}Z.extension={type:[s.Ag.WebGPUSystem],name:"state"};var ee=r(98370),et=r(24652);let er={type:"image",upload(e,t,r){let s=e.resource,i=(0|e.pixelWidth)*(0|e.pixelHeight),n=s.byteLength/i;r.device.queue.writeTexture({texture:t},s,{offset:0,rowsPerImage:e.pixelHeight,bytesPerRow:e.pixelHeight*n},{width:e.pixelWidth,height:e.pixelHeight,depthOrArrayLayers:1})}},es={"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}},ei={blockBytes:4,blockWidth:1,blockHeight:1},en={type:"compressed",upload(e,t,r){let s=e.pixelWidth,i=e.pixelHeight,n=es[e.format]||ei;for(let o=0;o<e.resource.length;o++){let a=e.resource[o],u=Math.ceil(s/n.blockWidth)*n.blockBytes;r.device.queue.writeTexture({texture:t,mipLevel:o},a,{offset:0,bytesPerRow:u},{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)}}},eo={type:"image",upload(e,t,r){let s=e.resource;if(!s)return;let i=Math.min(t.width,e.resourceWidth||e.pixelWidth),n=Math.min(t.height,e.resourceHeight||e.pixelHeight),o="premultiply-alpha-on-upload"===e.alphaMode;r.device.queue.copyExternalImageToTexture({source:s},{texture:t,premultipliedAlpha:o},{width:i,height:n})}},ea={type:"video",upload(e,t,r){eo.upload(e,t,r)}};class eu{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:`
2
2
  var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(
3
3
  vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));
4
4
 
@@ -22,5 +22,5 @@
22
22
  fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
23
23
  return textureSample(img, imgSampler, texCoord);
24
24
  }
25
- `})),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){let t=this._getMipmapPipeline(e.format);if("3d"===e.dimension||"1d"===e.dimension)throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e,s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){let t={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(t)}let n=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let a=0;a<s;++a){let s=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:a,arrayLayerCount:1}),u=+!!i;for(let i=1;i<e.mipLevelCount;++i){let e=r.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:a,arrayLayerCount:1}),i=n.beginRenderPass({colorAttachments:[{view:e,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:s}]});i.setPipeline(t),i.setBindGroup(0,d),i.draw(3,1,0,0),i.end(),s=e}}if(!i){let t={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let s=1;s<e.mipLevelCount;++s)n.copyTextureToTexture({texture:r,mipLevel:s-1},{texture:e,mipLevel:s},t),t.width=Math.ceil(t.width/2),t.height=Math.ceil(t.height/2)}return this.device.queue.submit([n.finish()]),i||r.destroy(),e}}class ed{constructor(e){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:eo,buffer:er,video:ea,compressed:en},this._renderer=e}contextChange(e){this._gpu=e}initSource(e){if(e.autoGenerateMipmaps){let t=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(t))+1}let t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==e.uploadMethodId&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC);let r=es[e.format]||{blockBytes:4,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},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(n);return this._gpuSources[e.uid]=o,this.managedTextures.includes(e)||(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("destroy",this.onSourceDestroy,this),e.on("unload",this.onSourceUnload,this),e.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(e)),this.onSourceUpdate(e),o}onSourceUpdate(e){let 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))}onSourceUnload(e){let t=this._gpuSources[e.uid];t&&(this._gpuSources[e.uid]=null,t.destroy())}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new eu(this._gpu.device));let t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceDestroy(e){e.off("update",this.onSourceUpdate,this),e.off("unload",this.onSourceUnload,this),e.off("destroy",this.onSourceDestroy,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(e),1),this.onSourceUnload(e)}onSourceResize(e){let t=this._gpuSources[e.uid];t?(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(this._textureViewHash[e.uid]=null,this._bindGroupHash[e.uid]=null,this.onSourceUnload(e),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){return this._gpuSources[e.uid]||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]??this._createTextureBindGroup(e)}_createTextureBindGroup(e){let t=e.source,r=t.uid;return this._bindGroupHash[r]=new F.T({0:t,1:t.style}),this._bindGroupHash[r]}getTextureView(e){let t=e.source;return this._textureViewHash[t.uid]??this._createTextureView(t)}_createTextureView(e){return this._textureViewHash[e.uid]=this.getGpuSource(e).createView(),this._textureViewHash[e.uid]}generateCanvas(e){let t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=ee.e.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;let i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.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){let t=this.generateCanvas(e),r=et.N.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);let{width:i,height:n}=t,o=new Uint8ClampedArray(s.getImageData(0,0,i,n).data.buffer);return et.N.returnCanvasAndContext(r),{pixels:o,width:i,height:n}}destroy(){for(let e of(this.managedTextures.slice().forEach(e=>this.onSourceDestroy(e)),this.managedTextures=null,Object.keys(this._bindGroupHash))){let t=Number(e),r=this._bindGroupHash[t];r?.destroy(),this._bindGroupHash[t]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}ed.extension={type:[s.Ag.WebGPUSystem],name:"texture"};let eh=[...P.i,E.u,U,M,C,ed,Q,$,Z,N,v,R,S],el=[...P.f,D],ec=[y,m,p],ep=[],ef=[],eg=[];s.XO.handleByNamedList(s.Ag.WebGPUSystem,ep),s.XO.handleByNamedList(s.Ag.WebGPUPipes,ef),s.XO.handleByNamedList(s.Ag.WebGPUPipesAdaptor,eg),s.XO.add(...eh,...el,...ec);class e_ extends G.k{constructor(){super({name:"webgpu",type:B.W.WEBGPU,systems:ep,renderPipes:ef,renderPipeAdaptors:eg})}}},82164:function(e,t,r){r.d(t,{N:()=>n});var s=r(50160),i=r(92111);let n=new class{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){let r=s.e.get().createCanvas();r.width=e,r.height=t;let i=r.getContext("2d");return{canvas:r,context:i}}getOptimalCanvasAndContext(e,t,r=1){e=Math.ceil(e*r-1e-6),t=Math.ceil(t*r-1e-6),e=(0,i.U5)(e),t=(0,i.U5)(t);let s=(e<<17)+(t<<1);this._canvasPool[s]||(this._canvasPool[s]=[]);let n=this._canvasPool[s].pop();return n||(n=this._createCanvasAndContext(e,t)),n}returnCanvasAndContext(e){let{width:t,height:r}=e.canvas;this._canvasPool[(t<<17)+(r<<1)].push(e)}clear(){this._canvasPool={}}}}}]);
26
- //# sourceMappingURL=586.ffc417d5.js.map
25
+ `})),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){let t=this._getMipmapPipeline(e.format);if("3d"===e.dimension||"1d"===e.dimension)throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e,s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){let t={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(t)}let n=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let a=0;a<s;++a){let s=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:a,arrayLayerCount:1}),u=+!!i;for(let i=1;i<e.mipLevelCount;++i){let e=r.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:a,arrayLayerCount:1}),i=n.beginRenderPass({colorAttachments:[{view:e,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:s}]});i.setPipeline(t),i.setBindGroup(0,d),i.draw(3,1,0,0),i.end(),s=e}}if(!i){let t={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let s=1;s<e.mipLevelCount;++s)n.copyTextureToTexture({texture:r,mipLevel:s-1},{texture:e,mipLevel:s},t),t.width=Math.ceil(t.width/2),t.height=Math.ceil(t.height/2)}return this.device.queue.submit([n.finish()]),i||r.destroy(),e}}class ed{constructor(e){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:eo,buffer:er,video:ea,compressed:en},this._renderer=e}contextChange(e){this._gpu=e}initSource(e){if(e.autoGenerateMipmaps){let t=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(t))+1}let t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==e.uploadMethodId&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC);let r=es[e.format]||{blockBytes:4,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},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(n);return this._gpuSources[e.uid]=o,this.managedTextures.includes(e)||(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("destroy",this.onSourceDestroy,this),e.on("unload",this.onSourceUnload,this),e.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(e)),this.onSourceUpdate(e),o}onSourceUpdate(e){let 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))}onSourceUnload(e){let t=this._gpuSources[e.uid];t&&(this._gpuSources[e.uid]=null,t.destroy())}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new eu(this._gpu.device));let t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceDestroy(e){e.off("update",this.onSourceUpdate,this),e.off("unload",this.onSourceUnload,this),e.off("destroy",this.onSourceDestroy,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(e),1),this.onSourceUnload(e)}onSourceResize(e){let t=this._gpuSources[e.uid];t?(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(this._textureViewHash[e.uid]=null,this._bindGroupHash[e.uid]=null,this.onSourceUnload(e),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){return this._gpuSources[e.uid]||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]??this._createTextureBindGroup(e)}_createTextureBindGroup(e){let t=e.source,r=t.uid;return this._bindGroupHash[r]=new F.T({0:t,1:t.style}),this._bindGroupHash[r]}getTextureView(e){let t=e.source;return this._textureViewHash[t.uid]??this._createTextureView(t)}_createTextureView(e){return this._textureViewHash[e.uid]=this.getGpuSource(e).createView(),this._textureViewHash[e.uid]}generateCanvas(e){let t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=ee.e.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;let i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.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){let t=this.generateCanvas(e),r=et.N.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);let{width:i,height:n}=t,o=new Uint8ClampedArray(s.getImageData(0,0,i,n).data.buffer);return et.N.returnCanvasAndContext(r),{pixels:o,width:i,height:n}}destroy(){for(let e of(this.managedTextures.slice().forEach(e=>this.onSourceDestroy(e)),this.managedTextures=null,Object.keys(this._bindGroupHash))){let t=Number(e),r=this._bindGroupHash[t];r?.destroy(),this._bindGroupHash[t]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}ed.extension={type:[s.Ag.WebGPUSystem],name:"texture"};let eh=[...P.i,E.u,U,M,C,ed,Q,$,Z,N,v,R,S],el=[...P.f,D],ec=[y,m,p],ep=[],ef=[],eg=[];s.XO.handleByNamedList(s.Ag.WebGPUSystem,ep),s.XO.handleByNamedList(s.Ag.WebGPUPipes,ef),s.XO.handleByNamedList(s.Ag.WebGPUPipesAdaptor,eg),s.XO.add(...eh,...el,...ec);class e_ extends G.k{constructor(){super({name:"webgpu",type:B.W.WEBGPU,systems:ep,renderPipes:ef,renderPipeAdaptors:eg})}}},24652:function(e,t,r){r.d(t,{N:()=>n});var s=r(98370),i=r(10551);let n=new class{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){let r=s.e.get().createCanvas();r.width=e,r.height=t;let i=r.getContext("2d");return{canvas:r,context:i}}getOptimalCanvasAndContext(e,t,r=1){e=Math.ceil(e*r-1e-6),t=Math.ceil(t*r-1e-6),e=(0,i.U5)(e),t=(0,i.U5)(t);let s=(e<<17)+(t<<1);this._canvasPool[s]||(this._canvasPool[s]=[]);let n=this._canvasPool[s].pop();return n||(n=this._createCanvasAndContext(e,t)),n}returnCanvasAndContext(e){let{width:t,height:r}=e.canvas;this._canvasPool[(t<<17)+(r<<1)].push(e)}clear(){this._canvasPool={}}}}}]);
26
+ //# sourceMappingURL=990.65e3a3ab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/async/990.65e3a3ab.js","sources":["../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.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 init() {\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 const gpuProgram = compileHighShaderGpuProgram({\n name: \"graphics\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\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 geometry,\n instructions\n } = contextSystem.getContextRenderData(context);\n const encoder = renderer.encoder;\n encoder.setPipelineFromGeometryProgramAndState(\n geometry,\n shader.gpuProgram,\n graphicsPipe.state\n );\n encoder.setGeometry(geometry);\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 for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n shader.groups[1] = batch.bindGroup;\n if (!batch.gpuBindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\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.resources.uTexture = mesh.texture.source;\n shader.resources.uSampler = mesh.texture.source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = mesh.texture.textureMatrix.mapCoord;\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 { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { MAX_TEXTURES } from '../shared/const.mjs';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup.mjs';\n\n\"use strict\";\nconst tempState = State.for2d();\nclass GpuBatchAdaptor {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n groups: {\n // these will be dynamically allocated\n }\n });\n }\n start(batchPipe, geometry) {\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n const program = this._shader.gpuProgram;\n this._geometry = geometry;\n encoder.setGeometry(geometry);\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(textureBatch.textures, textureBatch.count);\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 );\n batch.bindGroup._touch(renderer.textureGC.count);\n encoder.setPipeline(pipeline);\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\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.getGpuSource(texture).createView({});\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 for (const key of Object.keys(this._hash)) {\n this._hash[key] = null;\n }\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 { fastCopy } from '../../shared/buffer/utils/fastCopy.mjs';\n\n\"use strict\";\nclass GpuBufferSystem {\n constructor() {\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n this._managedBuffers = [];\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getGPUBuffer(buffer) {\n return this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n }\n updateBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid] || this.createGPUBuffer(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 for (const id in this._gpuBuffers) {\n this._gpuBuffers[id].destroy();\n }\n this._gpuBuffers = {};\n }\n createGPUBuffer(buffer) {\n if (!this._gpuBuffers[buffer.uid]) {\n buffer.on(\"update\", this.updateBuffer, this);\n buffer.on(\"change\", this.onBufferChange, this);\n buffer.on(\"destroy\", this.onBufferDestroy, this);\n }\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n buffer._updateID = 0;\n if (buffer.data) {\n fastCopy(buffer.data.buffer, gpuBuffer.getMappedRange());\n gpuBuffer.unmap();\n }\n this._gpuBuffers[buffer.uid] = gpuBuffer;\n this._managedBuffers.push(buffer);\n return gpuBuffer;\n }\n onBufferChange(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer._updateID = 0;\n this._gpuBuffers[buffer.uid] = this.createGPUBuffer(buffer);\n }\n /**\n * Disposes buffer\n * @param buffer - buffer with data\n */\n onBufferDestroy(buffer) {\n this._managedBuffers.splice(this._managedBuffers.indexOf(buffer), 1);\n this._destroyBuffer(buffer);\n }\n destroy() {\n this._managedBuffers.forEach((buffer) => this._destroyBuffer(buffer));\n this._managedBuffers = null;\n this._gpuBuffers = null;\n }\n _destroyBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer.off(\"update\", this.updateBuffer, this);\n buffer.off(\"change\", this.onBufferChange, this);\n buffer.off(\"destroy\", this.onBufferDestroy, this);\n this._gpuBuffers[buffer.uid] = null;\n }\n}\n/** @ignore */\nGpuBufferSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"buffer\"\n};\n\nexport { GpuBufferSystem };\n//# sourceMappingURL=GpuBufferSystem.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)\n 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 { 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)\n return this._initPromise;\n this._initPromise = this._createDeviceAndAdaptor(options).then((gpu) => {\n this.gpu = gpu;\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n return this._initPromise;\n }\n /**\n * Handle the context change event\n * @param gpu\n */\n contextChange(gpu) {\n this._renderer.gpu = gpu;\n }\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n async _createDeviceAndAdaptor(options) {\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter\n });\n const requiredFeatures = [\n \"texture-compression-bc\",\n \"texture-compression-astc\",\n \"texture-compression-etc2\"\n ].filter((feature) => adapter.features.has(feature));\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n return { adapter, device };\n }\n destroy() {\n this.gpu = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuDeviceSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"device\"\n};\n/** The default options for the GpuDeviceSystem. */\nGpuDeviceSystem.defaultOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false\n};\n\nexport { GpuDeviceSystem };\n//# sourceMappingURL=GpuDeviceSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuEncoderSystem {\n constructor(renderer) {\n this._boundBindGroup = /* @__PURE__ */ Object.create(null);\n this._boundVertexBuffer = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n renderStart() {\n this.commandFinished = new Promise((resolve) => {\n this._resolveCommandFinished = resolve;\n });\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n beginRenderPass(gpuRenderTarget) {\n this.endRenderPass();\n this._clearCache();\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n endRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n }\n this.renderPassEncoder = null;\n }\n setViewport(viewport) {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n setPipelineFromGeometryProgramAndState(geometry, program, state, topology) {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n this.setPipeline(pipeline);\n }\n setPipeline(pipeline) {\n if (this._boundPipeline === pipeline)\n return;\n this._boundPipeline = pipeline;\n this.renderPassEncoder.setPipeline(pipeline);\n }\n _setVertexBuffer(index, buffer) {\n if (this._boundVertexBuffer[index] === buffer)\n 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)\n 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)\n return;\n this._boundBindGroup[index] = bindGroup;\n bindGroup._touch(this._renderer.textureGC.count);\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n setGeometry(geometry) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n this._setVertexBuffer(attribute.location, attribute.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);\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 );\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';\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\";\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._buffer.destroy();\n this._buffer = null;\n this.data = null;\n }\n}\n\nexport { UboBatch };\n//# sourceMappingURL=UboBatch.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)\n 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 for (const i in this._bindGroupHash) {\n this._bindGroupHash[i] = null;\n }\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._bindGroupHash = null;\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 { 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) {\n return colorMask << 6 | stencilStateId << 3 | renderTarget << 1 | multiSampleCount;\n}\nclass PipelineSystem {\n constructor(renderer) {\n this._moduleCache = /* @__PURE__ */ Object.create(null);\n this._bufferLayoutsCache = /* @__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._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)\n 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._updatePipeHash();\n }\n setColorMask(colorMask) {\n if (this._colorMask === colorMask)\n return;\n this._colorMask = colorMask;\n this._updatePipeHash();\n }\n setStencilMode(stencilMode) {\n if (this._stencilMode === stencilMode)\n 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])\n 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);\n const blendModes = this._renderer.state.getColorTargets(state);\n blendModes[0].writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\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.location;\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n }\n const stringKey = keyGen.join(\"\");\n geometry._layoutKey = createIdFromString(stringKey, \"geometry\");\n return geometry._layoutKey;\n }\n _createVertexBufferLayouts(geometry) {\n if (this._bufferLayoutsCache[geometry._layoutKey]) {\n return this._bufferLayoutsCache[geometry._layoutKey];\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 geometry.attributes) {\n const attribute = geometry.attributes[i];\n if (attribute.buffer === buffer) {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? \"instance\" : \"vertex\";\n bufferEntryAttributes.push({\n shaderLocation: attribute.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[geometry._layoutKey] = vertexBuffersLayout;\n return vertexBuffersLayout;\n }\n _updatePipeHash() {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment\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) {\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor);\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) {\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 const currentTexture = context.getCurrentTexture();\n const canvasTextureView = currentTexture.createView();\n view = canvasTextureView;\n } else {\n view = this._renderer.texture.getGpuSource(texture).createView({\n mipLevelCount: 1\n });\n }\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: \"store\",\n loadOp\n };\n }\n );\n let depthStencilAttachment;\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture) {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n depthStencilAttachment = {\n view: this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView(),\n stencilStoreOp: \"store\",\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: \"store\"\n };\n }\n const descriptor = {\n colorAttachments,\n depthStencilAttachment\n };\n return descriptor;\n }\n clear(renderTarget, clear = true, clearColor, viewport) {\n if (!clear)\n 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);\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);\n }\n }\n initGpuRenderTarget(renderTarget) {\n renderTarget.isRoot = true;\n const gpuRenderTarget = new GpuRenderTarget();\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (CanvasSource.test(colorTexture.resource)) {\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 // eslint-disable-next-line max-len\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 });\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n if (gpuRenderTarget.msaa) {\n gpuRenderTarget.msaaSamples = 4;\n if (renderTarget.depthStencilTexture) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n return gpuRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n gpuRenderTarget.contexts.forEach((context) => {\n context.unconfigure();\n });\n gpuRenderTarget.msaaTextures.forEach((texture) => {\n texture.destroy();\n });\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n ensureDepthStencilTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n resizeGpuRenderTarget(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n if (gpuRenderTarget.msaa) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n\nexport { GpuRenderTargetAdaptor };\n//# sourceMappingURL=GpuRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GpuRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GpuRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGpuRenderTargetSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"renderTarget\"\n};\n\nexport { GpuRenderTargetSystem };\n//# sourceMappingURL=GpuRenderTargetSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuShaderSystem {\n constructor() {\n this._gpuProgramData = /* @__PURE__ */ Object.create(null);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getProgramData(program) {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n _createGPUProgramData(program) {\n const device = this._gpu.device;\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc)\n };\n return this._gpuProgramData[program._layoutKey];\n }\n destroy() {\n this._gpu = null;\n this._gpuProgramData = null;\n }\n}\n/** @ignore */\nGpuShaderSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"shader\"\n};\n\nexport { GpuShaderSystem };\n//# sourceMappingURL=GpuShaderSystem.mjs.map\n","\"use strict\";\nconst GpuBlendModesToPixi = {};\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"dst\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"zero\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"normal-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"add-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"screen-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\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 */\n getColorTargets(state) {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n return [\n {\n format: \"bgra8unorm\",\n writeMask: 0,\n blend\n }\n ];\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) {\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 },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelHeight * 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) {\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 },\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 gpuUploadImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu) {\n const resource = source.resource;\n if (!resource)\n return;\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, 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) {\n gpuUploadImageResource.upload(source, gpuTexture, gpu);\n }\n};\n\nexport { gpuUploadVideoResource };\n//# sourceMappingURL=gpuUploadVideoSource.mjs.map\n","\"use strict\";\nclass GpuMipmapGenerator {\n constructor(device) {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: \"linear\" });\n this.pipelines = {};\n }\n _getMipmapPipeline(format) {\n let pipeline = this.pipelines[format];\n if (!pipeline) {\n if (!this.mipmapShaderModule) {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: (\n /* wgsl */\n `\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n `\n )\n });\n }\n pipeline = this.device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: \"vertexMain\"\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: \"fragmentMain\",\n targets: [{ format }]\n }\n });\n this.pipelines[format] = pipeline;\n }\n return pipeline;\n }\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n generateMipmap(texture) {\n const pipeline = this._getMipmapPipeline(texture.format);\n if (texture.dimension === \"3d\" || texture.dimension === \"1d\") {\n throw new Error(\"Generating mipmaps for non-2d textures is currently unsupported!\");\n }\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1;\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n if (!renderToSource) {\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1\n };\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n const commandEncoder = this.device.createCommandEncoder({});\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer) {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n let dstMipLevel = renderToSource ? 1 : 0;\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: \"store\",\n loadOp: \"clear\",\n clearValue: { r: 0, g: 0, b: 0, a: 0 }\n }]\n });\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler\n }, {\n binding: 1,\n resource: srcView\n }]\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n passEncoder.end();\n srcView = dstView;\n }\n }\n if (!renderToSource) {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n };\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1\n }, {\n texture,\n mipLevel: i\n }, mipLevelSize);\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n this.device.queue.submit([commandEncoder.finish()]);\n if (!renderToSource) {\n mipTexture.destroy();\n }\n return texture;\n }\n}\n\nexport { GpuMipmapGenerator };\n//# sourceMappingURL=GpuMipmapGenerator.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { 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 { gpuUploadImageResource } from './uploaders/gpuUploadImageSource.mjs';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource.mjs';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator.mjs';\n\n\"use strict\";\nclass GpuTextureSystem {\n constructor(renderer) {\n this.managedTextures = [];\n this._gpuSources = /* @__PURE__ */ Object.create(null);\n this._gpuSamplers = /* @__PURE__ */ Object.create(null);\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._textureViewHash = /* @__PURE__ */ Object.create(null);\n this._uploads = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n initSource(source) {\n if (source.autoGenerateMipmaps) {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n const textureDescriptor = {\n label: source.label,\n size: { width, height },\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 this._gpuSources[source.uid] = gpuTexture;\n if (!this.managedTextures.includes(source)) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceResize, this);\n source.on(\"destroy\", this.onSourceDestroy, this);\n source.on(\"unload\", this.onSourceUnload, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.push(source);\n }\n this.onSourceUpdate(source);\n return gpuTexture;\n }\n onSourceUpdate(source) {\n const gpuTexture = this.getGpuSource(source);\n if (!gpuTexture)\n 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 onSourceUnload(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (gpuTexture) {\n this._gpuSources[source.uid] = null;\n gpuTexture.destroy();\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 onSourceDestroy(source) {\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"unload\", this.onSourceUnload, this);\n source.off(\"destroy\", this.onSourceDestroy, this);\n source.off(\"resize\", this.onSourceResize, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n this.onSourceUnload(source);\n }\n onSourceResize(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (!gpuTexture) {\n this.initSource(source);\n } else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight) {\n this._textureViewHash[source.uid] = null;\n this._bindGroupHash[source.uid] = null;\n this.onSourceUnload(source);\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 return this._gpuSources[source.uid] || this.initSource(source);\n }\n getTextureBindGroup(texture) {\n return this._bindGroupHash[texture.uid] ?? this._createTextureBindGroup(texture);\n }\n _createTextureBindGroup(texture) {\n const source = texture.source;\n const bindGroupId = source.uid;\n this._bindGroupHash[bindGroupId] = new BindGroup({\n 0: source,\n 1: source.style\n });\n return this._bindGroupHash[bindGroupId];\n }\n getTextureView(texture) {\n const source = texture.source;\n return this._textureViewHash[source.uid] ?? this._createTextureView(source);\n }\n _createTextureView(texture) {\n this._textureViewHash[texture.uid] = this.getGpuSource(texture).createView();\n return this._textureViewHash[texture.uid];\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 // eslint-disable-next-line max-len\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: navigator.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.slice().forEach((source) => this.onSourceDestroy(source));\n this.managedTextures = null;\n for (const k of Object.keys(this._bindGroupHash)) {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n bindGroup?.destroy();\n this._bindGroupHash[key] = null;\n }\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSources = null;\n this._bindGroupHash = null;\n this._textureViewHash = null;\n this._gpuSamplers = null;\n }\n}\n/** @ignore */\nGpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n\nexport { GpuTextureSystem };\n//# sourceMappingURL=GpuTextureSystem.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 { 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 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","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n"],"names":["Float32Array","s","r","Object","navigator","Promise","Error","Math","i","GPUTextureUsage","e","console","a","Uint8ClampedArray","Number"],"mappings":"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"}