1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1200],{1145:(e,t,r)=>{r.d(t,{R:()=>a,m:()=>s});let a={name:"texture-bit",vertex:{header:` 2 3 struct TextureUniforms { 4 uTextureMatrix:mat3x3<f32>, 5 } 6 7 @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms; 8 `,main:` 9 uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy; 10 `},fragment:{header:` 11 @group(2) @binding(0) var uTexture: texture_2d<f32>; 12 @group(2) @binding(1) var uSampler: sampler; 13 14 15 `,main:` 16 outColor = textureSample(uTexture, uSampler, vUV); 17 `}},s={name:"texture-bit",vertex:{header:` 18 uniform mat3 uTextureMatrix; 19 `,main:` 20 uv = (uTextureMatrix * vec3(uv, 1.0)).xy; 21 `},fragment:{header:` 22 uniform sampler2D uTexture; 23 24 25 `,main:` 26 outColor = texture(uTexture, vUV); 27 `}}},4402:(e,t,r)=>{r.d(t,{q:()=>i});var a=r(86938),s=r(94452);function i(e,t){for(let r in e.attributes){let s=e.attributes[r],i=t[r];i?(s.format??(s.format=i.format),s.offset??(s.offset=i.offset),s.instance??(s.instance=i.instance)):(0,a.R)(`Attribute ${r} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}!function(e){let{buffers:t,attributes:r}=e,a={},i={};for(let e in t){let r=t[e];a[r.uid]=0,i[r.uid]=0}for(let e in r){let t=r[e];a[t.buffer.uid]+=(0,s.m)(t.format).stride}for(let e in r){let t=r[e];t.stride??(t.stride=a[t.buffer.uid]),t.start??(t.start=i[t.buffer.uid]),i[t.buffer.uid]+=(0,s.m)(t.format).stride}}(e)}},8056:(e,t,r)=>{r.d(t,{$:()=>a});let a=[{type:"mat3x3<f32>",test:e=>void 0!==e.value.a,ubo:` 28 var matrix = uv[name].toArray(true); 29 data[offset] = matrix[0]; 30 data[offset + 1] = matrix[1]; 31 data[offset + 2] = matrix[2]; 32 data[offset + 4] = matrix[3]; 33 data[offset + 5] = matrix[4]; 34 data[offset + 6] = matrix[5]; 35 data[offset + 8] = matrix[6]; 36 data[offset + 9] = matrix[7]; 37 data[offset + 10] = matrix[8]; 38 `,uniform:` 39 gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true)); 40 `},{type:"vec4<f32>",test:e=>"vec4<f32>"===e.type&&1===e.size&&void 0!==e.value.width,ubo:` 41 v = uv[name]; 42 data[offset] = v.x; 43 data[offset + 1] = v.y; 44 data[offset + 2] = v.width; 45 data[offset + 3] = v.height; 46 `,uniform:` 47 cv = ud[name].value; 48 v = uv[name]; 49 if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) { 50 cv[0] = v.x; 51 cv[1] = v.y; 52 cv[2] = v.width; 53 cv[3] = v.height; 54 gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height); 55 } 56 `},{type:"vec2<f32>",test:e=>"vec2<f32>"===e.type&&1===e.size&&void 0!==e.value.x,ubo:` 57 v = uv[name]; 58 data[offset] = v.x; 59 data[offset + 1] = v.y; 60 `,uniform:` 61 cv = ud[name].value; 62 v = uv[name]; 63 if (cv[0] !== v.x || cv[1] !== v.y) { 64 cv[0] = v.x; 65 cv[1] = v.y; 66 gl.uniform2f(ud[name].location, v.x, v.y); 67 } 68 `},{type:"vec4<f32>",test:e=>"vec4<f32>"===e.type&&1===e.size&&void 0!==e.value.red,ubo:` 69 v = uv[name]; 70 data[offset] = v.red; 71 data[offset + 1] = v.green; 72 data[offset + 2] = v.blue; 73 data[offset + 3] = v.alpha; 74 `,uniform:` 75 cv = ud[name].value; 76 v = uv[name]; 77 if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) { 78 cv[0] = v.red; 79 cv[1] = v.green; 80 cv[2] = v.blue; 81 cv[3] = v.alpha; 82 gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha); 83 } 84 `},{type:"vec3<f32>",test:e=>"vec3<f32>"===e.type&&1===e.size&&void 0!==e.value.red,ubo:` 85 v = uv[name]; 86 data[offset] = v.red; 87 data[offset + 1] = v.green; 88 data[offset + 2] = v.blue; 89 `,uniform:` 90 cv = ud[name].value; 91 v = uv[name]; 92 if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) { 93 cv[0] = v.red; 94 cv[1] = v.green; 95 cv[2] = v.blue; 96 gl.uniform3f(ud[name].location, v.red, v.green, v.blue); 97 } 98 `}]},18456:(e,t,r)=>{function a(e,t){return` 99 for (let i = 0; i < ${e*t}; i++) { 100 data[offset + (((i / ${e})|0) * 4) + (i % ${e})] = v[i]; 101 } 102 `}r.d(t,{_:()=>i,g:()=>s});let s={f32:` 103 data[offset] = v;`,i32:` 104 dataInt32[offset] = v;`,"vec2<f32>":` 105 data[offset] = v[0]; 106 data[offset + 1] = v[1];`,"vec3<f32>":` 107 data[offset] = v[0]; 108 data[offset + 1] = v[1]; 109 data[offset + 2] = v[2];`,"vec4<f32>":` 110 data[offset] = v[0]; 111 data[offset + 1] = v[1]; 112 data[offset + 2] = v[2]; 113 data[offset + 3] = v[3];`,"vec2<i32>":` 114 dataInt32[offset] = v[0]; 115 dataInt32[offset + 1] = v[1];`,"vec3<i32>":` 116 dataInt32[offset] = v[0]; 117 dataInt32[offset + 1] = v[1]; 118 dataInt32[offset + 2] = v[2];`,"vec4<i32>":` 119 dataInt32[offset] = v[0]; 120 dataInt32[offset + 1] = v[1]; 121 dataInt32[offset + 2] = v[2]; 122 dataInt32[offset + 3] = v[3];`,"mat2x2<f32>":` 123 data[offset] = v[0]; 124 data[offset + 1] = v[1]; 125 data[offset + 4] = v[2]; 126 data[offset + 5] = v[3];`,"mat3x3<f32>":` 127 data[offset] = v[0]; 128 data[offset + 1] = v[1]; 129 data[offset + 2] = v[2]; 130 data[offset + 4] = v[3]; 131 data[offset + 5] = v[4]; 132 data[offset + 6] = v[5]; 133 data[offset + 8] = v[6]; 134 data[offset + 9] = v[7]; 135 data[offset + 10] = v[8];`,"mat4x4<f32>":` 136 for (let i = 0; i < 16; i++) { 137 data[offset + i] = v[i]; 138 }`,"mat3x2<f32>":a(3,2),"mat4x2<f32>":a(4,2),"mat2x3<f32>":a(2,3),"mat4x3<f32>":a(4,3),"mat2x4<f32>":a(2,4),"mat3x4<f32>":a(3,4)},i={...s,"mat2x2<f32>":` 139 data[offset] = v[0]; 140 data[offset + 1] = v[1]; 141 data[offset + 2] = v[2]; 142 data[offset + 3] = v[3]; 143 `}},21200:(e,t,r)=>{r.d(t,{WebGPURenderer:()=>eM});var a=r(85131),s=r(4721),i=r(22591),n=r(52153),o=r(12541),u=r(12124),d=r(33803),l=r(42551),c=r(68025),h=r(84903);class p{constructor(){this._maxTextures=0}contextChange(e){let t=new h.k({uTransformMatrix:{value:new s.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;let r=(0,n.v)({name:"graphics",bits:[o.F,(0,u._)(this._maxTextures),d._Q,l.b]});this.shader=new c.M({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){let r=t.context,a=r.customShader||this.shader,s=e.renderer,{batcher:n,instructions:o}=s.graphicsContext.getContextRenderData(r),u=s.encoder;u.setGeometry(n.geometry,a.gpuProgram);let d=s.globalUniforms.bindGroup;u.setBindGroup(0,d,a.gpuProgram);let l=s.renderPipes.uniformBatch.getUniformBindGroup(a.resources.localUniforms,!0);u.setBindGroup(2,l,a.gpuProgram);let c=o.instructions,h=null;for(let t=0;t<o.instructionSize;t++){let r=c[t];if(r.topology!==h&&(h=r.topology,u.setPipelineFromGeometryProgramAndState(n.geometry,a.gpuProgram,e.state,r.topology)),a.groups[1]=r.bindGroup,!r.gpuBindGroup){let e=r.textures;r.bindGroup=(0,i.w)(e.textures,e.count,this._maxTextures),r.gpuBindGroup=s.bindGroup.getBindGroup(r.bindGroup,a.gpuProgram,1)}u.setBindGroup(1,r.bindGroup,a.gpuProgram),u.renderPassEncoder.drawIndexed(r.size,1,r.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}p.extension={type:[a.Ag.WebGPUPipesAdaptor],name:"graphics"};var f=r(1145),g=r(86259),m=r(86938);class _{init(){let e=(0,n.v)({name:"mesh",bits:[d.Ls,f.R,l.b]});this._shader=new c.M({gpuProgram:e,resources:{uTexture:g.g.EMPTY._source,uSampler:g.g.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new s.u}}}})}execute(e,t){let r=e.renderer,a=t._shader;if(a){if(!a.gpuProgram)return void(0,m.R)("Mesh shader has no gpuProgram",t.shader)}else(a=this._shader).groups[2]=r.texture.getTextureBindGroup(t.texture);let s=a.gpuProgram;if(s.autoAssignGlobalUniforms&&(a.groups[0]=r.globalUniforms.bindGroup),s.autoAssignLocalUniforms){let t=e.localUniforms;a.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(t,!0)}r.encoder.draw({geometry:t._geometry,shader:a,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}_.extension={type:[a.Ag.WebGPUPipesAdaptor],name:"mesh"};var x=r(71205);let v=x.U.for2d();class b{start(e,t,r){let a=e.renderer,s=a.encoder,i=r.gpuProgram;this._shader=r,this._geometry=t,s.setGeometry(t,i),v.blendMode="normal",a.pi
143peline.getPipeline(t,i,v);let n=a.globalUniforms.bindGroup;s.resetBindGroup(1),s.setBindGroup(0,n,i)}execute(e,t){let r=this._shader.gpuProgram,a=e.renderer,s=a.encoder;if(!t.bindGroup){let e=t.textures;t.bindGroup=(0,i.w)(e.textures,e.count,a.limits.maxBatchableTextures)}v.blendMode=t.blendMode;let n=a.bindGroup.getBindGroup(t.bindGroup,r,1),o=a.pipeline.getPipeline(this._geometry,r,v,t.topology);t.bindGroup._touch(a.gc.now,a.tick),s.setPipeline(o),s.renderPassEncoder.setBindGroup(1,n),s.renderPassEncoder.drawIndexed(t.size,1,t.start)}}b.extension={type:[a.Ag.WebGPUPipesAdaptor],name:"batch"};var y=r(91841),T=r(93375),G=r(35263);class P{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 a=this._gpu.device,s=t.layout[r],i=[],n=this._renderer;for(let t in s){let r,a=e.resources[t]??e.resources[s[t]];if("uniformGroup"===a._resourceType){n.ubo.updateUniformGroup(a);let e=a.buffer;r={buffer:n.buffer.getGPUBuffer(e),offset:0,size:e.descriptor.size}}else"buffer"===a._resourceType?r={buffer:n.buffer.getGPUBuffer(a),offset:0,size:a.descriptor.size}:"bufferResource"===a._resourceType?r={buffer:n.buffer.getGPUBuffer(a.buffer),offset:a.offset,size:a.size}:"textureSampler"===a._resourceType?r=n.texture.getGpuSampler(a):"textureSource"===a._resourceType&&(r=n.texture.getTextureView(a));i.push({binding:s[t],resource:r})}let o=n.shader.getProgramData(t).bindGroups[r],u=a.createBindGroup({layout:o,entries:i});return this._hash[e._key]=u,u}destroy(){this._hash=null,this._renderer=null}}P.extension={type:[a.Ag.WebGPUSystem],name:"bindGroup"};var S=r(6780),C=r(85087),B=r(48858);class U{constructor(e){this.gpuBuffer=e}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class M{constructor(e){this._renderer=e,this._managedBuffers=new S.s({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(e){this._gpu=e}getGPUBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(e)}updateBuffer(e){let t=this.getGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(e){e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this)}createGPUBuffer(e){let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e._resourceId=(0,C.L)("resource"),e.data&&((0,B.W)(e.data.buffer,t.getMappedRange(),e.data.byteOffset,e.data.byteLength),t.unmap()),e._gpuData[this._renderer.uid]=new U(t),this._managedBuffers.add(e)&&(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this)),t}onBufferChange(e){this._managedBuffers.remove(e),e._updateID=0,this.createGPUBuffer(e)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}M.extension={type:[a.Ag.WebGPUSystem],name:"buffer"};class w{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}}w.extension={type:[a.Ag.WebGPUSystem],name:"colorMask"};var A=r(8205);class E{constructor(e){this._renderer=e}async init(e){return this._initPromise||(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(e=>{this.gpu=e,this.extensions={transientAttachment:"number"==typeof GPUTextureUsage.TRANSIENT_ATTACHMENT},this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await A.e.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(e=>t.features.has(e)),a=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:a}}destroy(){this.gpu=null,this.extensions=null,this._renderer=null}}E.extension={type:[a.Ag.WebGPUSystem],name:"device"},E.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class R{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,a){let s=this._renderer.pipeline.getPipeline(e,t,r,a);this.setPipeline(s)}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.gc.now,this._renderer.tick);let a=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,a)}setGeometry(e,t){let r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(let t in r)this._setVertexBuffer(parseInt(t,10),e.attributes[r[t]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let r in e.groups){let a=e.groups[r];t||this._syncBindGroup(a),this.setBindGroup(r,a,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:a,topology:s,size:i,start:n,instanceCount:o,skipSync:u}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,a,s),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,u),t.indexBuffer?this.renderPassEncoder.drawIndexed(i||t.indexBuffer.data.length,o??t.instanceCount,n||0):this.renderPassEncoder.draw(i||t.getSize(),o??t.instanceCount,n||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._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,r={...this._boundVertexBuffer},a=this._boundIndexBuffer,s={...this._boundBindGroup};this._clearCache();let i=this._renderer.renderTarget.viewport;for(let e in this.renderPassEncoder.setViewport(i.x,i.y,i.width,i.height,0,1),this.setPipeline(t),r)this._setVertexBuffer(e,r[e]);for(let e in s)this.setBindGroup(e,s[e],null);this._setIndexBuffer(a)}_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}}R.extension={type:[a.Ag.WebGPUSystem],name:"encoder",priority:1};class k{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}k.extension={type:[a.Ag.WebGPUSystem],name:"limits"};var L=r(70467);class O{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:L.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 a=this._renderer;a.pipeline.setStencilMode(e),a.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}O.extension={type:[a.Ag.WebGPUSystem],name:"stencil"};var I=r(80303);let F={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>
143":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function z(e){let t=e.map(e=>({data:e,offset:0,size:0})),r=0;for(let e=0;e<t.length;e++){let a=t[e],s=F[a.data.type].size,i=F[a.data.type].align;if(!F[a.data.type])throw Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${a.data.type}`);a.data.size>1&&(s=Math.max(s,i)*a.data.size),r=Math.ceil(r/i)*i,a.size=s,a.offset=r,r+=s}return{uboElements:t,size:r=16*Math.ceil(r/16)}}var D=r(48523),H=r(18456);function W(e,t){let{size:r,align:a}=F[e.data.type],s=(a-r)/4,i=e.data.type.indexOf("i32")>=0?"dataInt32":"data";return` 144 v = uv.${e.data.name}; 145 ${0!==t?`offset += ${t};`:""} 146 147 arrayOffset = offset; 148 149 t = 0; 150 151 for(var i=0; i < ${e.data.size*(r/4)}; i++) 152 { 153 for(var j = 0; j < ${r/4}; j++) 154 { 155 ${i}[arrayOffset++] = v[t++]; 156 } 157 ${0!==s?`arrayOffset += ${s};`:""} 158 } 159 `}function N(e){return(0,D.E)(e,"uboWgsl",W,H._)}class V extends I.W{constructor(){super({createUboElements:z,generateUboSync:N})}}V.extension={type:[a.Ag.WebGPUSystem],name:"ubo"};var K=r(67319),j=r(97859),$=r(38080);class q{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.data=null}}var Y=r(26867);class X{constructor(e){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=e,this._batchBuffer=new q({minUniformOffsetAlignment:128});for(let e=0;e<2;e++){let t=$.S.UNIFORM|$.S.COPY_DST;0===e&&(t|=$.S.COPY_SRC),this._buffers.push(new K.h({data:this._batchBuffer.data,usage:t}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){this._bindGroupHash=Object.create(null),this._batchBuffer.clear()}getUniformBindGroup(e,t){if(!t&&this._bindGroupHash[e.uid])return this._bindGroupHash[e.uid];this._renderer.ubo.ensureUniformGroup(e);let r=e.buffer.data,a=this._batchBuffer.addEmptyGroup(r.length);return this._renderer.ubo.syncUniformGroup(e,this._batchBuffer.data,a/4),this._bindGroupHash[e.uid]=this._getBindGroup(a/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 j.d({buffer:t,offset:(e/2|0)*256,size:128})}return this._bufferResources[e]}_getBindGroup(e){if(!this._bindGroups[e]){let t=new Y.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 a=1;a<this._buffers.length;a++){let s=this._buffers[a];r.copyBufferToBuffer(e.getGPUBuffer(t),128,e.getGPUBuffer(s),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._renderer=null}}X.extension={type:[a.Ag.WebGPUPipes],name:"uniformBatch"};var Q=r(4402),J=r(22404),Z=r(74592);let ee={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};
159class et{constructor(e){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._bindingNamesCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._colorTargetCount=1,this._renderer=e}contextChange(e){this._gpu=e,this.setStencilMode(L.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._colorTargetCount=e.colorTargetCount,this._updatePipeHash()}setColorMask(e){this._colorMask!==e&&(this._colorMask=e,this._updatePipeHash())}setStencilMode(e){this._stencilMode!==e&&(this._stencilMode=e,this._stencilState=Z.g[e],this._updatePipeHash())}setPipeline(e,t,r,a){let s=this.getPipeline(e,t,r);a.setPipeline(s)}getPipeline(e,t,r,a){var s,i,n;e._layoutKey||((0,Q.q)(e,t.attributeData),this._generateBufferKey(e)),a||(a=e.topology);let o=(s=e._layoutKey,i=t._layoutKey,n=r.data,s<<24|i<<16|n<<10|r._blendModeId<<5|ee[a]);return this._pipeCache[o]||(this._pipeCache[o]=this._createPipeline(e,t,r,a)),this._pipeCache[o]}_createPipeline(e,t,r,a){let s=this._gpu.device,i=this._createVertexBufferLayouts(e,t),n=this._renderer.state.getColorTargets(r,this._colorTargetCount),o=this._stencilMode===L.K.RENDERING_MASK_ADD?0:this._colorMask;for(let e=0;e<n.length;e++)n[e].writeMask=o;let u=this._renderer.shader.getProgramData(t).pipeline,d={vertex:{module:this._getModule(t.vertex.source),entryPoint:t.vertex.entryPoint,buffers:i},fragment:{module:this._getModule(t.fragment.source),entryPoint:t.fragment.entryPoint,targets:n},primitive:{topology:a,cullMode:r.cullMode},layout:u,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(d.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:r.depthTest,depthCompare:r.depthTest?"less":"always"}),s.createRenderPipeline(d)}_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,a=Object.keys(e.attributes).sort();for(let s=0;s<a.length;s++){let i=e.attributes[a[s]];t[r++]=i.offset,t[r++]=i.format,t[r++]=i.stride,t[r++]=i.instance}let s=t.join("|");return e._layoutKey=(0,J.X)(s,"geometry"),e._layoutKey}_generateAttributeLocationsKey(e){let t=[],r=0,a=Object.keys(e.attributeData).sort();for(let s=0;s<a.length;s++){let i=e.attributeData[a[s]];t[r++]=i.location}let s=t.join("|");return e._attributeLocationsKey=(0,J.X)(s,"programAttributes"),e._attributeLocationsKey}getBufferNamesToBind(e,t){let r=e._layoutKey<<16|t._attributeLocationsKey;if(this._bindingNamesCache[r])return this._bindingNamesCache[r];let a=this._createVertexBufferLayouts(e,t),s=Object.create(null),i=t.attributeData;for(let e=0;e<a.length;e++){let t=Object.values(a[e].attributes)[0].shaderLocation;for(let r in i)if(i[r].location===t){s[e]=r;break}}return this._bindingNamesCache[r]=s,s}_createVertexBufferLayouts(e,t){t._attributeLocationsKey||this._generateAttributeLocationsKey(t);let r=e._layoutKey<<16|t._attributeLocationsKey;if(this._bufferLayoutsCache[r])return this._bufferLayoutsCache[r];let a=[];return e.buffers.forEach(r=>{let s={arrayStride:0,stepMode:"vertex",attributes:[]},i=s.attributes;for(let a in t.attributeData){let n=e.attributes[a];(n.divisor??1)!==1&&(0,m.R)(`Attribute ${a} has an invalid divisor value of '${n.divisor}'. WebGPU only supports a divisor value of 1`),n.buffer===r&&(s.arrayStride=n.stride,s.stepMode=n.instance?"instance":"vertex",i.push({shaderLocation:t.attributeData[a].location,offset:n.offset,format:n.format}))}i.length&&a.push(s)}),this._bufferLayoutsCache[r]=a,a}_updatePipeHash(){var e,t,r;let a=(e=this._stencilMode,t=this._multisampleCount,r=this._colorMask,r<<8|e<<5|this._depthStencilAttachment<<3|this._colorTargetCount<<1|t);
159this._pipeStateCaches[a]||(this._pipeStateCaches[a]=Object.create(null)),this._pipeCache=this._pipeStateCaches[a]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}et.extension={type:[a.Ag.WebGPUSystem],name:"pipeline"};var er=r(31669),ea=r(18019),es=r(44132),ei=r(48189);class en{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class eo{init(e,t){this._renderer=e,this._renderTargetSystem=t}copyToTexture(e,t,r,a,s){let i=this._renderer,n=this._getGpuColorTexture(e),o=i.texture.getGpuSource(t.source);return i.encoder.commandEncoder.copyTextureToTexture({texture:n,origin:r},{texture:o,origin:s},a),t}startRenderPass(e,t=!0,r,a,s=0,i=0){let n=this._renderTargetSystem.getGpuRenderTarget(e);if(0!==i&&n.msaaTextures?.length)throw Error("[RenderTargetSystem] Rendering to array layers is not supported with MSAA render targets.");if(s>0&&n.msaaTextures?.length)throw Error("[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.");n.descriptor=this.getDescriptor(e,t,r,s,i),this._renderer.pipeline.setRenderTarget(n),this._renderer.encoder.beginRenderPass(n),this._renderer.encoder.setViewport(a)}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,a=0,s=0){let i;"boolean"==typeof t&&(t=t?ea.u.ALL:ea.u.NONE);let n=this._renderTargetSystem,o=n.getGpuRenderTarget(e),u=e.colorTextures.map((e,i)=>{let u,d,l=o.contexts[i];if(l){if(0!==s)throw Error("[RenderTargetSystem] Rendering to array layers is not supported for canvas targets.");u=l.getCurrentTexture().createView()}else u=this._renderer.texture.getGpuSource(e).createView({dimension:"2d",baseMipLevel:a,mipLevelCount:1,baseArrayLayer:s,arrayLayerCount:1});let c=!1;o.msaaTextures[i]&&(d=u,u=this._renderer.texture.getTextureView(o.msaaTextures[i]),c=o.msaaTextures[i].transient);let h=t&ea.u.COLOR?"clear":"load";return r??(r=n.defaultClearColor),{view:u,resolveTarget:d,clearValue:r,storeOp:c?"discard":"store",loadOp:h}});if((e.stencil||e.depth)&&!e.depthStencilTexture&&(e.ensureDepthStencilTexture(),e.depthStencilTexture.source.sampleCount=o.msaa?4:1,e.depthStencilTexture.source.transient=!!o.msaaTextures[0]?.transient),e.depthStencilTexture){let r=t&ea.u.STENCIL?"clear":"load",n=t&ea.u.DEPTH?"clear":"load",o=e.depthStencilTexture.source.transient?"discard":"store";i={view:this._renderer.texture.getGpuSource(e.depthStencilTexture.source).createView({dimension:"2d",baseMipLevel:a,mipLevelCount:1,baseArrayLayer:s,arrayLayerCount:1}),stencilStoreOp:o,stencilLoadOp:r,depthClearValue:1,depthLoadOp:n,depthStoreOp:o}}return{colorAttachments:u,depthStencilAttachment:i}}clear(e,t=!0,r,a,s=0,i=0){if(!t)return;let{gpu:n,encoder:o}=this._renderer,u=n.device;if(null===o.commandEncoder){let n=u.createCommandEncoder(),o=this.getDescriptor(e,t,r,s,i),d=n.beginRenderPass(o);d.setViewport(a.x,a.y,a.width,a.height,0,1),d.end();let l=n.finish();u.queue.submit([l])}else this.startRenderPass(e,t,r,a,s,i)}initGpuRenderTarget(e){e.isRoot=!0;let t=new en;return t.colorTargetCount=e.colorTextures.length,e.colorTextures.forEach((e,r)=>{if(e instanceof es.q){let a=e.resource.getContext("webgpu"),s=e.transparent?"premultiplied":"opaque";try{a.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:s})}catch(e){console.error(e)}t.contexts[r]=a}if(t.msaa=e.source.antialias,e.source.antialias){let a=new ei.v({width:0,height:0,sampleCount:4,transient:e.source.transient,arrayLayerCount:e.source.arrayLayerCount});t.msaaTextures[r]=a}}),t.msaa&&(t.msaaSamples=4,e.depthStencilTexture&&(e.depthStencilTexture.source.sampleCount=4,e.depthStencilTexture.source.transient=!!t.msaaTextures[0]?.transient)),t}
159destroyGpuRenderTarget(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 a=t.msaaTextures[r];a?.resize(e.source.width,e.source.height,e.source._resolution)})}}class eu extends er.l{constructor(e){super(e),this.adaptor=new eo,this.adaptor.init(e,this)}}eu.extension={type:[a.Ag.WebGPUSystem],name:"renderTarget"};class ed{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}}ed.extension={type:[a.Ag.WebGPUSystem],name:"shader"};let el={};el.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},el.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},el.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},el.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},el.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},el.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},el["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},el["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},el["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},el.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}},el.min={alpha:{srcFactor:"one",dstFactor:"one",operation:"min"},color:{srcFactor:"one",dstFactor:"one",operation:"min"}},el.max={alpha:{srcFactor:"one",dstFactor:"one",operation:"max"},color:{srcFactor:"one",dstFactor:"one",operation:"max"}};class ec{constructor(){this.defaultState=new x.U,this.defaultState.blend=!0}contextChange(e){this.gpu=e}getColorTargets(e,t){let r=el[e.blendMode]||el.normal,a=[],s={format:"bgra8unorm",writeMask:0,blend:r};for(let e=0;e<t;e++)a[e]=s;return a}destroy(){this.gpu=null}}ec.extension={type:[a.Ag.WebGPUSystem],name:"state"};var eh=r(76712);let ep={type:"image",upload(e,t,r,a=0){let s=e.resource,i=(0|e.pixelWidth)*(0|e.pixelHeight),n=s.byteLength/i;r.device.queue.writeTexture({texture:t,origin:{x:0,y:0,z:a}},s,{offset:0,rowsPerImage:e.pixelHeight,bytesPerRow:e.pixelWidth*n},{width:e.pixelWidth,height:e.pixelHeight,depthOrArrayLayers:1})}},ef={"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}},eg={blockBytes:4,blockWidth:1,blockHeight:1},em={type:"compressed",upload(e,t,r,a=0){let s=e.pixelWidth,i=e.pixelHeight,n=ef[e.format]||eg;for(let o=0;o<e.resource.length;o++){let u=e.resource[o],d=Math.ceil(s/n.blockWidth)*n.blockBytes;r.device.queue.writeTexture({texture:t,mipLevel:o,origin:{x:0,y:0,z:a}},u,{offset:0,bytesPerRow:d},{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)}}},e_=["right","left","top","bottom","front","back"],ex={type:"image",upload(e,t,r,a=0){let s=e.resource;if(!s)return;if(globalThis.HTMLImageElement&&s instanceof HTMLImageElement){let t=A.e.get().createCanvas(s.width,s.height);t.getContext("2d").drawImage(s,0,0,s.width,s.height),e.resource=t,(0,m.R)("ImageSource: Image element passed, converting to canvas and replacing resource.")}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,origin:{x:0,y:0,z:a},premultipliedAlpha:o},{width:i,height:n})}},ev={type:"video",upload(e,t,r,a){ex.upload(e,t,r,a)}};class eb{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:` 160 var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>( 161 vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0)); 162 163 struct VertexOutput { 164 @builtin(position) position : vec4<f32>, 165 @location(0) texCoord : vec2<f32>, 166 }; 167 168 @vertex 169 fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput { 170 var output : VertexOutput; 171 output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5); 172 output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0); 173 return output; 174 } 175 176 @group(0) @binding(0) var imgSampler : sampler; 177 @group(0) @binding(1) var img : texture_2d<f32>; 178 179 @fragment 180 fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> { 181 return textureSample(img, imgSampler, texCoord); 182 } 183 `})),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,a=e.depthOrArrayLayers||1,s=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!s){let t={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:a},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};r=this.device.createTexture(t)}let i=this.device.createCommandEncoder({}),n=t.getBindGroupLayout(0);for(let o=0;o<a;++o){let a=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:o,arrayLayerCount:1}),u=+!!s;for(let s=1;s<e.mipLevelCount;++s){let e=r.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:o,arrayLayerCount:1}),s=i.beginRenderPass({colorAttachments:[{view:e,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:n,entries:[{binding:0,resource:this.sampler},{binding:1,resource:a}]});s.setPipeline(t),s.setBindGroup(0,d),s.draw(3,1,0,0),s.end(),a=e}}if(!s){let t={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:a};for(let a=1;a<e.mipLevelCount;++a)i.copyTextureToTexture({texture:r,mipLevel:a-1},{texture:e,mipLevel:a},t),t.width=Math.ceil(t.width/2),t.height=Math.ceil(t.height/2)}return this.device.queue.submit([i.finish()]),s||r.destroy(),e}}class ey{constructor(e){this.textureView=null,this.gpuTexture=e}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}let eT=class e{constructor(t){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=t,t.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new S.s({renderer:t,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});let r={image:ex,buffer:ep,video:ev,compressed:em,...e.uploadExtensions};this._uploads={...r,cube:function(e){return{type:"cube",upload(t,r,a){let s=t.faces;for(let t=0;t<e_.length;t++){let i=s[e_[t]];(e[i.uploadMethodId]||e.image).upload(i,r,a,t)}}}}(r)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gpu=e}initSource(e){return e._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(e)}_initSource(e){let t;if(e.autoGenerateMipmaps){let t=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(t))+1}
183e.sampleCount>1?(t=GPUTextureUsage.RENDER_ATTACHMENT,e.transient&&this._renderer.device.extensions.transientAttachment&&(t|=GPUTextureUsage.TRANSIENT_ATTACHMENT)):(t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,"compressed"!==e.uploadMethodId&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC));let r=ef[e.format]||{blockBytes:4,blockWidth:1,blockHeight:1},a=Math.ceil(e.pixelWidth/r.blockWidth)*r.blockWidth,s=Math.ceil(e.pixelHeight/r.blockHeight)*r.blockHeight,i={label:e.label,size:{width:a,height:s,depthOrArrayLayers:e.arrayLayerCount},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},n=this._gpu.device.createTexture(i);return e._gpuData[this._renderer.uid]=new ey(n),this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),n}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))}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new eb(this._gpu.device));let t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceUnload(e){e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(e){e._gcLastUsed=this._renderer.gc.now;let t=e._gpuData[this._renderer.uid],r=t?.gpuTexture;r?(r.width!==e.pixelWidth||r.height!==e.pixelHeight)&&(t.destroy(),this._bindGroupHash[e.uid]=null,e._gpuData[this._renderer.uid]=null,this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]||this._createTextureBindGroup(e)}_createTextureBindGroup(e){let t=e.source;return this._bindGroupHash[e.uid]=new Y.T({0:t,1:t.style,2:new h.k({uTextureMatrix:{type:"mat3x3<f32>",value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){let t=e.source;t._gcLastUsed=this._renderer.gc.now;let r=t._gpuData[this._renderer.uid];return r||(this.initSource(t),r=t._gpuData[this._renderer.uid]),r.textureView||(r.textureView=r.gpuTexture.createView({dimension:t.viewDimension})),r.textureView}generateCanvas(e){let t=this._renderer,r=t.gpu.device.createCommandEncoder(),a=A.e.get().createCanvas();a.width=e.source.pixelWidth,a.height=e.source.pixelHeight;let s=a.getContext("webgpu");return s.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:A.e.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),r.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:s.getCurrentTexture()},{width:a.width,height:a.height}),t.gpu.device.queue.submit([r.finish()]),a}getPixels(e){let t=this.generateCanvas(e),r=eh.N.getOptimalCanvasAndContext(t.width,t.height),a=r.context;a.drawImage(t,0,0);let{width:s,height:i}=t,n=new Uint8ClampedArray(a.getImageData(0,0,s,i).data.buffer);return eh.N.returnCanvasAndContext(r),{pixels:n,width:s,height:i}}destroy(){for(let e of(this._managedTextures.destroy(),Object.keys(this._bindGroupHash))){let t=Number(e),r=this._bindGroupHash[t];r?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}};eT.extension={type:[a.Ag.WebGPUSystem],name:"texture"},eT.uploadExtensions=Object.create(null),a.XO.handleByMap(a.Ag.TextureUploaderWebGPU,eT.uploadExtensions);let eG=[...T.i,V,R,E,k,M,eT,eu,ed,ec,et,w,O,P],eP=[...T.f,X],eS=[b,_,p],eC=[],eB=[],eU=[];a.XO.handleByNamedList(a.Ag.WebGPUSystem,eC),a.XO.handleByNamedList(a.Ag.WebGPUPipes,eB),a.XO.handleByNamedList(a.Ag.WebGPUPipesAdaptor,eU),a.XO.add(...eG,...eP,...eS);class eM extends y.k{constructor(){super({name:"webgpu",type:G.W.WEBGPU,systems:eC,renderPipes:eB,renderPipeAdaptors:eU})}}},22591:(e,t,r)=>{r.d(t,{w:()=>n});var a=r(26867),s=r(86259);let i={};function n(e,t,r){let n=0x811c9dc5;for(let r=0;r<t;r++)n^=e[r].uid,n=Math.imul(n,0x1000193)>>>0;return i[n]||function(e,t,r,n){let o={},u=0;for(let r=0;r<n;r++){let a=r<t?e[r]:s.g.EMPTY.source;o[u++]=a.source,o[u++]=a.style}let d=new a.T(o);return i[r]=d,d}(e,t,n,r)}},48523:(e,t,r)=>{r.d(t,{E:()=>s});var a=r(8056);function s(e,t,r,s){let i=[` 184 var v = null; 185 var v2 = null; 186 var t = 0; 187 var index = 0; 188 var name = null; 189 var arrayOffset = null; 190 `],n=0;for(let o=0;o<e.length;o++){let u=e[o],d=u.data.name,l=!1,c=0;for(let e=0;e<a.$.length;e++)if(a.$[e].test(u.data)){c=u.offset/4,i.push(`name = "${d}";`,`offset += ${c-n};`,a.$[e][t]||a.$[e].ubo),l=!0;break}if(!l)if(u.data.size>
1901)c=u.offset/4,i.push(r(u,c-n));else{let e=s[u.data.type];c=u.offset/4,i.push(` 191 v = uv.${d}; 192 offset += ${c-n}; 193 ${e}; 194 `)}n=c}return Function("uv","data","dataInt32","offset",i.join("\n"))}},74592:(e,t,r)=>{r.d(t,{g:()=>s});var a=r(70467);let s=[];s[a.K.NONE]=void 0,s[a.K.DISABLED]={stencilWriteMask:0,stencilReadMask:0},s[a.K.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},s[a.K.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},s[a.K.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}},s[a.K.INVERSE_MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"not-equal",passOp:"keep"},stencilBack:{compare:"not-equal",passOp:"keep"}}},76712:(e,t,r)=>{r.d(t,{N:()=>o});var a=r(8205),s=r(45327),i=r(38960);class n{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){let r=a.e.get().createCanvas();r.width=e,r.height=t;let s=r.getContext("2d");return{canvas:r,context:s}}getOptimalCanvasAndContext(e,t,r=1){e=Math.ceil(e*r-1e-6),t=Math.ceil(t*r-1e-6),e=(0,s.U5)(e),t=(0,s.U5)(t);let a=(e<<17)+(t<<1);this._canvasPool[a]||(this._canvasPool[a]=[]);let i=this._canvasPool[a].pop();return i||(i=this._createCanvasAndContext(e,t)),i}returnCanvasAndContext(e){let{width:t,height:r}=e.canvas,a=(t<<17)+(r<<1);e.context.resetTransform(),e.context.clearRect(0,0,t,r),this._canvasPool[a].push(e)}clear(){this._canvasPool={}}}let o=new n;i.L.register(o)},80303:(e,t,r)=>{r.d(t,{W:()=>n});var a=r(61281),s=r(67319),i=r(38080);class n{constructor(e){this._syncFunctionHash=Object.create(null),this._adaptor=e,this._systemCheck()}_systemCheck(){if(!(0,a.f)())throw Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}ensureUniformGroup(e){let t=this.getUniformGroupData(e);e.buffer||(e.buffer=new s.h({data:new Float32Array(t.layout.size/4),usage:i.S.UNIFORM|i.S.COPY_DST}))}getUniformGroupData(e){return this._syncFunctionHash[e._signature]||this._initUniformGroup(e)}_initUniformGroup(e){let t=e._signature,r=this._syncFunctionHash[t];if(!r){let a=Object.keys(e.uniformStructures).map(t=>e.uniformStructures[t]),s=this._adaptor.createUboElements(a),i=this._generateUboSync(s.uboElements);r=this._syncFunctionHash[t]={layout:s,syncFunction:i}}return this._syncFunctionHash[t]}_generateUboSync(e){return this._adaptor.generateUboSync(e)}syncUniformGroup(e,t,r){let a=this.getUniformGroupData(e);e.buffer||(e.buffer=new s.h({data:new Float32Array(a.layout.size/4),usage:i.S.UNIFORM|i.S.COPY_DST}));let n=null;return t||(t=e.buffer.data,n=e.buffer.dataInt32),r||(r=0),a.syncFunction(e.uniforms,t,n,r),!0}updateUniformGroup(e){if(e.isStatic&&!e._dirtyId)return!1;e._dirtyId=0;let t=this.syncUniformGroup(e);return e.buffer.update(),t}destroy(){this._syncFunctionHash=null}}},97859:(e,t,r)=>{r.d(t,{d:()=>i});var a=r(29419),s=r(85087);class i extends a.A{constructor({buffer:e,offset:t,size:r}){super(),this.uid=(0,s.L)("buffer"),this._resourceType="bufferResource",this._touched=0,this._resourceId=(0,s.L)("resource"),this._bufferResource=!0,this.destroyed=!1,this.buffer=e,this.offset=0|t,this.size=r,this.buffer.on("change",this.onBufferChange,this)}onBufferChange(){this._resourceId=(0,s.L)("resource"),this.emit("change",this)}destroy(e=!1){this.destroyed=!0,e&&this.buffer.destroy(),this.emit("change",this),this.buffer=null,this.removeAllListeners()}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.