@rel-packages/osu-beatmap-preview 0.11.3 → 0.11.5

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 (39) hide show
  1. package/dist/assets/default_skin_archive.d.ts +2 -0
  2. package/dist/assets/default_skin_archive.d.ts.map +1 -0
  3. package/dist/assets/default_skin_embedded.d.ts.map +1 -1
  4. package/dist/chunk-0e4ebmdy.js +2 -0
  5. package/dist/chunk-1sw3e1ar.js +23 -0
  6. package/dist/chunk-21p7cseg.js +1 -0
  7. package/dist/chunk-525kvqgh.js +1 -0
  8. package/dist/chunk-5evxnj3k.js +9 -0
  9. package/dist/chunk-5v6x1wpn.js +84 -0
  10. package/dist/chunk-7qazncxz.js +15 -0
  11. package/dist/chunk-a7wf9wxx.js +173 -0
  12. package/dist/chunk-ay0z741j.js +1 -0
  13. package/dist/chunk-dvctxyxp.js +2 -0
  14. package/dist/chunk-eb5gmq04.js +186 -0
  15. package/dist/chunk-edbhr7zr.js +156 -0
  16. package/dist/chunk-ef1ghrsq.js +1 -0
  17. package/dist/chunk-f3y92gm3.js +1 -0
  18. package/dist/chunk-fsbv6vcn.js +2 -0
  19. package/dist/chunk-h72ajp0p.js +1 -0
  20. package/dist/chunk-kkmq6cvb.js +2 -0
  21. package/dist/chunk-kmf5rpya.js +1 -0
  22. package/dist/chunk-kt3t4zv0.js +2 -0
  23. package/dist/chunk-pn7re3na.js +2 -0
  24. package/dist/chunk-rp8z1jh7.js +2 -0
  25. package/dist/chunk-shb5s568.js +1 -0
  26. package/dist/chunk-sngkm5ds.js +218 -0
  27. package/dist/chunk-tb8nqrjk.js +1 -0
  28. package/dist/chunk-zc79wdxj.js +41 -0
  29. package/dist/index.js +1 -1146
  30. package/dist/player/audio_controller.d.ts +4 -0
  31. package/dist/player/audio_controller.d.ts.map +1 -1
  32. package/dist/player/player.d.ts +2 -0
  33. package/dist/player/player.d.ts.map +1 -1
  34. package/dist/renderer/backend/pixi_backend.d.ts +1 -1
  35. package/dist/renderer/backend/pixi_backend.d.ts.map +1 -1
  36. package/dist/renderer/backend/render_backend.d.ts +1 -1
  37. package/dist/renderer/backend/render_backend.d.ts.map +1 -1
  38. package/package.json +2 -2
  39. package/dist/index.js.map +0 -357
@@ -0,0 +1,156 @@
1
+ import{k as E,m as vq,n as pq,o as qq,p as Sq,q as fq,s as l,t as Pq,u as Lq}from"./chunk-eb5gmq04.js";import{I as jJ,J as UJ,K as dq,y as a,z as wJ}from"./chunk-a7wf9wxx.js";import{ba as s,ca as v}from"./chunk-kt3t4zv0.js";import{Aa as Cq,Ca as R,Ea as P,Fa as Rq,Ga as Bq,Ia as M,wa as _,ya as Yq}from"./chunk-sngkm5ds.js";import{Ja as W,Ka as b,Qa as h,Va as j,Ya as kq,db as m,hb as Y,ib as U,lb as hq,mb as p,pb as IJ,qb as C,rb as B,sb as S,ub as _q}from"./chunk-1sw3e1ar.js";class L{contextChange(q){let J=new C({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new h,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),Q=q.limits.maxBatchableTextures,$=_({name:"graphics",bits:[Yq,Cq(Q),E,R]});this.shader=new B({glProgram:$,resources:{localUniforms:J,batchSamplers:Bq(Q)}})}execute(q,J){let Q=J.context,$=Q.customShader||this.shader,K=q.renderer,X=K.graphicsContext,{batcher:Z,instructions:V}=X.getContextRenderData(Q);$.groups[0]=K.globalUniforms.bindGroup,K.state.set(q.state),K.shader.bind($),K.geometry.bind(Z.geometry,$.glProgram);let H=V.instructions;for(let N=0;N<V.instructionSize;N++){let k=H[N];if(k.size){for(let z=0;z<k.textures.count;z++)K.texture.bind(k.textures.textures[z],z);K.geometry.draw(k.topology,k.size,k.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}L.extension={type:[W.WebGLPipesAdaptor],name:"graphics"};class y{init(){let q=_({name:"mesh",bits:[E,vq,R]});this._shader=new B({glProgram:q,resources:{uTexture:Y.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new h}}}})}execute(q,J){let Q=q.renderer,$=J._shader;if(!$){$=this._shader;let K=J.texture,X=K.source;$.resources.uTexture=X,$.resources.uSampler=X.style,$.resources.textureUniforms.uniforms.uTextureMatrix=K.textureMatrix.mapCoord}else if(!$.glProgram){j("Mesh shader has no glProgram",J.shader);return}$.groups[100]=Q.globalUniforms.bindGroup,$.groups[101]=q.localUniformsBindGroup,Q.encoder.draw({geometry:J._geometry,shader:$,state:J.state})}destroy(){this._shader.destroy(!0),this._shader=null}}y.extension={type:[W.WebGLPipesAdaptor],name:"mesh"};class G{constructor(){this._tempState=v.for2d(),this._didUploadHash={}}init(q){q.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(q,J,Q){let $=q.renderer,K=this._didUploadHash[Q.uid];if($.shader.bind(Q,K),!K)this._didUploadHash[Q.uid]=!0;$.shader.updateUniformGroup($.globalUniforms.uniformGroup),$.geometry.bind(J,Q.glProgram)}execute(q,J){let Q=q.renderer;this._tempState.blendMode=J.blendMode,Q.state.set(this._tempState);let $=J.textures.textures;for(let K=0;K<J.textures.count;K++)Q.texture.bind($[K],K);Q.geometry.draw(J.topology,J.size,J.start)}}G.extension={type:[W.WebGLPipesAdaptor],name:"batch"};var F=((q)=>{return q[q.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",q[q.ARRAY_BUFFER=34962]="ARRAY_BUFFER",q[q.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",q})(F||{});class Xq{constructor(q,J){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=q||null,this.updateID=-1,this.byteLength=-1,this.type=J}destroy(){this.buffer=null,this.updateID=-1,this.byteLength=-1,this.type=-1,this._lastBindBaseLocation=-1,this._lastBindCallId=-1}}class f{constructor(q){this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=q,this._managedBuffers=new M({renderer:q,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"glBuffer"})}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gl=null,this._boundBufferBases={}}contextChange(){this._gl=this._renderer.gl,this.destroyAll(!0),this._maxBindings=this._renderer.limits.maxUniformBindings}getGlBuffer(q){return q._gcLastUsed=this._renderer.gc.now,q._gpuData[this._renderer.uid]||this.createGLBuffer(q)}bind(q){let{_gl:J}=this,Q=this.getGlBuffer(q);J.bindBuffer(Q.type,Q.buffer)}bindBufferBase(q,J){let{_gl:Q}=this;if(this._boundBufferBases[J]!==q)this._boundBufferBases[J]=q,q._lastBindBaseLocation=J,Q.bindBufferBase(Q.UNIFORM_BUFFER,J,q.buffer)}nextBindBase(q){if(this._bindCallId++,this._minBaseLocation=0,q){if(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1)this._nextBindBaseIndex=1}}freeLocationForBufferBase(q){let J=this.getLastBindBaseLocation(q);if(J>=this._minBaseLocation)return q._lastBindCallId=this._bindCallId,J;let Q=0,$=this._nextBindBaseIndex;while(Q<2){if($>=this._maxBindings)$=this._minBaseLocation,Q++;let K=this._boundBufferBases[$];if(K&&K._lastBindCallId===this._bindCallId){$++;continue}break}if(J=$,this._nextBindBaseIndex=$+1,Q>=2)return-1;return q._lastBindCallId=this._bindCallId,this._boundBufferBases[J]=null,J}getLastBindBaseLocation(q){let J=q._lastBindBaseLocation;if(this._boundBufferBases[J]===q)return J;return-1}bindBufferRange(q,J,Q,$){let{_gl:K}=this;Q||(Q=0),J||(J=0),this._boundBufferBases[J]=null,K.bindBufferRange(K.UNIFORM_BUFFER,J||0,q.buffer,Q*256,$||256)}updateBuffer(q){let{_gl:J}=this,Q=this.getGlBuffer(q);if(q._updateID===Q.updateID)return Q;Q.updateID=q._updateID,J.bindBuffer(Q.type,Q.buffer);let $=q.data,K=q.descriptor.usage&S.STATIC?J.STATIC_DRAW:J.DYNAMIC_DRAW;if($)if(Q.byteLength>=$.byteLength)J.bufferSubData(Q.type,0,$,0,q._updateSize/$.BYTES_PER_ELEMENT);else Q.byteLength=$.byteLength,J.bufferData(Q.type,$,K);else Q.byteLength=q.descriptor.size,J.bufferData(Q.type,Q.byteLength,K);return Q}destroyAll(q=!1){this._managedBuffers.removeAll(q)}onBufferUnload(q,J=!1){let Q=q._gpuData[this._renderer.uid];if(!Q)return;if(!J)this._gl.deleteBuffer(Q.buffer)}createGLBuffer(q){let{_gl:J}=this,Q=F.ARRAY_BUFFER;if(q.descriptor.usage&S.INDEX)Q=F.ELEMENT_ARRAY_BUFFER;else if(q.descriptor.usage&S.UNIFORM)Q=F.UNIFORM_BUFFER;let $=new Xq(J.createBuffer(),Q);return q._gpuData[this._renderer.uid]=$,this._managedBuffers.add(q),$}resetState(){this._boundBufferBases=Object.create(null)}}f.extension={type:[W.WebGLSystem],name:"buffer"};var Zq=class q{constructor(J){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=J,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(J){this.gl=J,this._renderer.gl=J}init(J){J={...q.defaultOptions,...J};let Q=this.multiView=J.multiView;if(J.context&&Q)j("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),Q=!1;if(Q)this.canvas=U.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height);else this.canvas=this._renderer.view.canvas;if(J.context)this.initFromContext(J.context);else{let $=this._renderer.background.alpha<1,K=J.premultipliedAlpha??!0,X=J.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(J.preferWebGLVersion,{alpha:$,premultipliedAlpha:K,antialias:X,stencil:!0,preserveDrawingBuffer:J.preserveDrawingBuffer,powerPreference:J.powerPreference??"default"})}}ensureCanvasSize(J){if(!this.multiView){if(J!==this.canvas)j("multiView is disabled, but targetCanvas is not the main canvas");return}let{canvas:Q}=this;if(Q.width<J.width||Q.height<J.height)Q.width=Math.max(J.width,J.width),Q.height=Math.max(J.height,J.height)}initFromContext(J){this.gl=J,this.webGLVersion=J instanceof U.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(J),this._renderer.runners.contextChange.emit(J);let Q=this._renderer.view.canvas;Q.addEventListener("webglcontextlost",this.handleContextLost,!1),Q.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(J,Q){let $,K=this.canvas;if(J===2)$=K.getContext("webgl2",Q);if(!$){if($=K.getContext("webgl",Q),!$)throw Error("This browser does not support WebGL. Try using the canvas renderer")}this.gl=$,this.initFromContext(this.gl)}getExtensions(){let{gl:J}=this,Q={anisotropicFiltering:J.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:J.getExtension("OES_texture_float_linear"),s3tc:J.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:J.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:J.getExtension("WEBGL_compressed_texture_etc"),etc1:J.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:J.getExtension("WEBGL_compressed_texture_pvrtc")||J.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:J.getExtension("WEBGL_compressed_texture_atc"),astc:J.getExtension("WEBGL_compressed_texture_astc"),bptc:J.getExtension("EXT_texture_compression_bptc"),rgtc:J.getExtension("EXT_texture_compression_rgtc"),loseContext:J.getExtension("WEBGL_lose_context")};if(this.webGLVersion===1)this.extensions={...Q,drawBuffers:J.getExtension("WEBGL_draw_buffers"),depthTexture:J.getExtension("WEBGL_depth_texture"),vertexArrayObject:J.getExtension("OES_vertex_array_object")||J.getExtension("MOZ_OES_vertex_array_object")||J.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:J.getExtension("OES_element_index_uint"),floatTexture:J.getExtension("OES_texture_float"),floatTextureLinear:J.getExtension("OES_texture_float_linear"),textureHalfFloat:J.getExtension("OES_texture_half_float"),textureHalfFloatLinear:J.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:J.getExtension("ANGLE_instanced_arrays"),srgb:J.getExtension("EXT_sRGB")};else{this.extensions={...Q,colorBufferFloat:J.getExtension("EXT_color_buffer_float")};let $=J.getExtension("WEBGL_provoking_vertex");if($)$.provokingVertexWEBGL($.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(J){if(J.preventDefault(),this._contextLossForced)this._contextLossForced=!1,setTimeout(()=>{if(this.gl.isContextLost())this.extensions.loseContext?.restoreContext()},0)}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){let J=this._renderer.view.canvas;this._renderer=null,J.removeEventListener("webglcontextlost",this.handleContextLost),J.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(J){let Q=J.getContextAttributes();if(Q&&!Q.stencil)j("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let $=this.supports,K=this.webGLVersion===2,X=this.extensions;if($.uint32Indices=K||!!X.uint32ElementIndex,$.uniformBufferObject=K,$.vertexArrayObject=K||!!X.vertexArrayObject,$.srgbTextures=K||!!X.srgb,$.nonPowOf2wrapping=K,$.nonPowOf2mipmaps=K,$.msaa=K,!$.uint32Indices)j("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};Zq.extension={type:[W.WebGLSystem],name:"context"};Zq.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};var Mq=Zq;var x=((q)=>{return q[q.RGBA=6408]="RGBA",q[q.RGB=6407]="RGB",q[q.RG=33319]="RG",q[q.RED=6403]="RED",q[q.RGBA_INTEGER=36249]="RGBA_INTEGER",q[q.RGB_INTEGER=36248]="RGB_INTEGER",q[q.RG_INTEGER=33320]="RG_INTEGER",q[q.RED_INTEGER=36244]="RED_INTEGER",q[q.ALPHA=6406]="ALPHA",q[q.LUMINANCE=6409]="LUMINANCE",q[q.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",q[q.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",q[q.DEPTH_STENCIL=34041]="DEPTH_STENCIL",q})(x||{}),A=((q)=>{return q[q.TEXTURE_2D=3553]="TEXTURE_2D",q[q.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",q[q.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",q[q.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",q[q.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",q[q.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",q[q.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",q[q.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",q[q.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",q})(A||{});var I=((q)=>{return q[q.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",q[q.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",q[q.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",q[q.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",q[q.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",q[q.UNSIGNED_INT=5125]="UNSIGNED_INT",q[q.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",q[q.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",q[q.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",q[q.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",q[q.BYTE=5120]="BYTE",q[q.SHORT=5122]="SHORT",q[q.INT=5124]="INT",q[q.FLOAT=5126]="FLOAT",q[q.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",q[q.HALF_FLOAT=36193]="HALF_FLOAT",q})(I||{});var Fq={uint8x2:I.UNSIGNED_BYTE,uint8x4:I.UNSIGNED_BYTE,sint8x2:I.BYTE,sint8x4:I.BYTE,unorm8x2:I.UNSIGNED_BYTE,unorm8x4:I.UNSIGNED_BYTE,snorm8x2:I.BYTE,snorm8x4:I.BYTE,uint16x2:I.UNSIGNED_SHORT,uint16x4:I.UNSIGNED_SHORT,sint16x2:I.SHORT,sint16x4:I.SHORT,unorm16x2:I.UNSIGNED_SHORT,unorm16x4:I.UNSIGNED_SHORT,snorm16x2:I.SHORT,snorm16x4:I.SHORT,float16x2:I.HALF_FLOAT,float16x4:I.HALF_FLOAT,float32:I.FLOAT,float32x2:I.FLOAT,float32x3:I.FLOAT,float32x4:I.FLOAT,uint32:I.UNSIGNED_INT,uint32x2:I.UNSIGNED_INT,uint32x3:I.UNSIGNED_INT,uint32x4:I.UNSIGNED_INT,sint32:I.INT,sint32x2:I.INT,sint32x3:I.INT,sint32x4:I.INT};function Aq(q){return Fq[q]??Fq.float32}var CJ={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class bq{constructor(){this.vaoCache=Object.create(null)}destroy(){this.vaoCache=Object.create(null)}}class d{constructor(q){this._renderer=q,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._managedGeometries=new M({renderer:q,type:"resource",onUnload:this.onGeometryUnload.bind(this),name:"glGeometry"})}contextChange(){let q=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw Error("[PixiJS] Vertex Array Objects are not supported on this device");this.destroyAll(!0);let J=this._renderer.context.extensions.vertexArrayObject;if(J)q.createVertexArray=()=>J.createVertexArrayOES(),q.bindVertexArray=($)=>J.bindVertexArrayOES($),q.deleteVertexArray=($)=>J.deleteVertexArrayOES($);let Q=this._renderer.context.extensions.vertexAttribDivisorANGLE;if(Q)q.drawArraysInstanced=($,K,X,Z)=>{Q.drawArraysInstancedANGLE($,K,X,Z)},q.drawElementsInstanced=($,K,X,Z,V)=>{Q.drawElementsInstancedANGLE($,K,X,Z,V)},q.vertexAttribDivisor=($,K)=>Q.vertexAttribDivisorANGLE($,K);this._activeGeometry=null,this._activeVao=null}bind(q,J){let Q=this.gl;this._activeGeometry=q;let $=this.getVao(q,J);if(this._activeVao!==$)this._activeVao=$,Q.bindVertexArray($);this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){let q=this._activeGeometry,J=this._renderer.buffer;for(let Q=0;Q<q.buffers.length;Q++){let $=q.buffers[Q];J.updateBuffer($)}q._gcLastUsed=this._renderer.gc.now}checkCompatibility(q,J){let Q=q.attributes,$=J._attributeData;for(let K in $)if(!Q[K])throw Error(`shader and geometry incompatible, geometry missing the "${K}" attribute`)}getSignature(q,J){let Q=q.attributes,$=J._attributeData,K=["g",q.uid];for(let X in Q)if($[X])K.push(X,$[X].location);return K.join("-")}getVao(q,J){return q._gpuData[this._renderer.uid]?.vaoCache[J._key]||this.initGeometryVao(q,J)}initGeometryVao(q,J,Q=!0){let $=this._renderer.gl,K=this._renderer.buffer;this._renderer.shader._getProgramData(J),this.checkCompatibility(q,J);let X=this.getSignature(q,J),Z=q._gpuData[this._renderer.uid];if(!Z)Z=new bq,q._gpuData[this._renderer.uid]=Z,this._managedGeometries.add(q);let V=Z.vaoCache,H=V[X];if(H)return V[J._key]=H,H;Pq(q,J._attributeData);let N=q.buffers;H=$.createVertexArray(),$.bindVertexArray(H);for(let k=0;k<N.length;k++){let z=N[k];K.bind(z)}return this.activateVao(q,J),V[J._key]=H,V[X]=H,$.bindVertexArray(null),H}onGeometryUnload(q,J=!1){let Q=q._gpuData[this._renderer.uid];if(!Q)return;let $=Q.vaoCache;if(!J)for(let K in $){if(this._activeVao!==$[K])this.resetState();this.gl.deleteVertexArray($[K])}}destroyAll(q=!1){this._managedGeometries.removeAll(q)}activateVao(q,J){let Q=this._renderer.gl,$=this._renderer.buffer,K=q.attributes;if(q.indexBuffer)$.bind(q.indexBuffer);let X=null;for(let Z in K){let V=K[Z],H=V.buffer,N=$.getGlBuffer(H),k=J._attributeData[Z];if(k){if(X!==N)$.bind(H),X=N;let z=k.location;Q.enableVertexAttribArray(z);let w=p(V.format),O=Aq(V.format);if(k.format?.substring(1,4)==="int")Q.vertexAttribIPointer(z,w.size,O,V.stride,V.offset);else Q.vertexAttribPointer(z,w.size,O,w.normalised,V.stride,V.offset);if(V.instance)if(this.hasInstance){let D=V.divisor??1;Q.vertexAttribDivisor(z,D)}else throw Error("geometry error, GPU Instancing is not supported on this device")}}}draw(q,J,Q,$){let{gl:K}=this._renderer,X=this._activeGeometry,Z=CJ[q||X.topology];if($??($=X.instanceCount),X.indexBuffer){let V=X.indexBuffer.data.BYTES_PER_ELEMENT,H=V===2?K.UNSIGNED_SHORT:K.UNSIGNED_INT;if($!==1)K.drawElementsInstanced(Z,J||X.indexBuffer.data.length,H,(Q||0)*V,$);else K.drawElements(Z,J||X.indexBuffer.data.length,H,(Q||0)*V)}else if($!==1)K.drawArraysInstanced(Z,Q||0,J||X.getSize(),$);else K.drawArrays(Z,Q||0,J||X.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._managedGeometries.destroy(),this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}d.extension={type:[W.WebGLSystem],name:"geometry"};var BJ=new _q({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),Hq=class q{constructor(J){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=J}init(J={}){let{useBackBuffer:Q,antialias:$}={...q.defaultOptions,...J};if(this.useBackBuffer=Q,this._antialias=$,!this._renderer.context.supports.msaa)j("antialiasing, is not supported on when using the back buffer"),this._antialias=!1;this._state=v.for2d();let K=new hq({vertex:`
2
+ attribute vec2 aPosition;
3
+ out vec2 vUv;
4
+
5
+ void main() {
6
+ gl_Position = vec4(aPosition, 0.0, 1.0);
7
+
8
+ vUv = (aPosition + 1.0) / 2.0;
9
+
10
+ // flip dem UVs
11
+ vUv.y = 1.0 - vUv.y;
12
+ }`,fragment:`
13
+ in vec2 vUv;
14
+ out vec4 finalColor;
15
+
16
+ uniform sampler2D uTexture;
17
+
18
+ void main() {
19
+ finalColor = texture(uTexture, vUv);
20
+ }`,name:"big-triangle"});this._bigTriangleShader=new B({glProgram:K,resources:{uTexture:Y.WHITE.source}})}renderStart(J){let Q=this._renderer.renderTarget.getRenderTarget(J.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!Q.isRoot,this._useBackBufferThisRender){let $=this._renderer.renderTarget.getRenderTarget(J.target);this._targetTexture=$.colorTexture,J.target=this._getBackBufferTexture($.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let J=this._renderer;if(J.renderTarget.finishRenderPass(),!this._useBackBufferThisRender)return;J.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,J.encoder.draw({geometry:BJ,shader:this._bigTriangleShader,state:this._state})}_getBackBufferTexture(J){return this._backBufferTexture=this._backBufferTexture||new Y({source:new m({width:J.width,height:J.height,resolution:J._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(J.width,J.height,J._resolution),this._backBufferTexture}destroy(){if(this._backBufferTexture)this._backBufferTexture.destroy(),this._backBufferTexture=null}};Hq.extension={type:[W.WebGLSystem],name:"backBuffer",priority:1};Hq.defaultOptions={useBackBuffer:!1};var Eq=Hq;class c{constructor(q){this._colorMaskCache=15,this._renderer=q}setMask(q){if(this._colorMaskCache===q)return;this._colorMaskCache=q,this._renderer.gl.colorMask(!!(q&8),!!(q&4),!!(q&2),!!(q&1))}}c.extension={type:[W.WebGLSystem],name:"colorMask"};class T{constructor(q){this.commandFinished=Promise.resolve(),this._renderer=q}setGeometry(q,J){this._renderer.geometry.bind(q,J.glProgram)}finishRenderPass(){}draw(q){let J=this._renderer,{geometry:Q,shader:$,state:K,skipSync:X,topology:Z,size:V,start:H,instanceCount:N}=q;if(J.shader.bind($,X),J.geometry.bind(Q,J.shader._activeProgram),K)J.state.set(K);J.geometry.draw(Z,V,H,N??Q.instanceCount)}destroy(){this._renderer=null}}T.extension={type:[W.WebGLSystem],name:"encoder"};class i{constructor(q){this._renderer=q}contextChange(){let q=this._renderer.gl;this.maxTextures=q.getParameter(q.MAX_TEXTURE_IMAGE_UNITS),this.maxBatchableTextures=Rq(this.maxTextures,q);let J=this._renderer.context.webGLVersion===2;this.maxUniformBindings=J?q.getParameter(q.MAX_UNIFORM_BUFFER_BINDINGS):0}destroy(){}}i.extension={type:[W.WebGLSystem],name:"limits"};class u{constructor(q){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:P.NONE},this._renderTargetStencilState=Object.create(null),q.renderTarget.onRenderTargetChange.add(this)}contextChange(q){this._gl=q,this._comparisonFuncMapping={always:q.ALWAYS,never:q.NEVER,equal:q.EQUAL,"not-equal":q.NOTEQUAL,less:q.LESS,"less-equal":q.LEQUAL,greater:q.GREATER,"greater-equal":q.GEQUAL},this._stencilOpsMapping={keep:q.KEEP,zero:q.ZERO,replace:q.REPLACE,invert:q.INVERT,"increment-clamp":q.INCR,"decrement-clamp":q.DECR,"increment-wrap":q.INCR_WRAP,"decrement-wrap":q.DECR_WRAP},this.resetState()}onRenderTargetChange(q){if(this._activeRenderTarget===q)return;this._activeRenderTarget=q;let J=this._renderTargetStencilState[q.uid];if(!J)J=this._renderTargetStencilState[q.uid]={stencilMode:P.DISABLED,stencilReference:0};this.setStencilMode(J.stencilMode,J.stencilReference)}resetState(){this._stencilCache.enabled=!1,this._stencilCache.stencilMode=P.NONE,this._stencilCache.stencilReference=0}setStencilMode(q,J){let Q=this._renderTargetStencilState[this._activeRenderTarget.uid],$=this._gl,K=Lq[q],X=this._stencilCache;if(Q.stencilMode=q,Q.stencilReference=J,q===P.DISABLED){if(this._stencilCache.enabled)this._stencilCache.enabled=!1,$.disable($.STENCIL_TEST);return}if(!this._stencilCache.enabled)this._stencilCache.enabled=!0,$.enable($.STENCIL_TEST);if(q!==X.stencilMode||X.stencilReference!==J)X.stencilMode=q,X.stencilReference=J,$.stencilFunc(this._comparisonFuncMapping[K.stencilBack.compare],J,255),$.stencilOp($.KEEP,$.KEEP,this._stencilOpsMapping[K.stencilBack.passOp])}}u.extension={type:[W.WebGLSystem],name:"stencil"};var Vq={f32:4,i32:4,"vec2<f32>":8,"vec3<f32>":12,"vec4<f32>":16,"vec2<i32>":8,"vec3<i32>":12,"vec4<i32>":16,"mat2x2<f32>":32,"mat3x3<f32>":48,"mat4x4<f32>":64};function yq(q){let J=q.map((X)=>({data:X,offset:0,size:0})),Q=16,$=0,K=0;for(let X=0;X<J.length;X++){let Z=J[X];if($=Vq[Z.data.type],!$)throw Error(`Unknown type ${Z.data.type}`);if(Z.data.size>1)$=Math.max($,16)*Z.data.size;let V=$===12?16:$;Z.size=$;let H=K%16;if(H>0&&16-H<V)K+=(16-H)%16;else K+=($-H%$)%$;Z.offset=K,K+=$}return K=Math.ceil(K/16)*16,{uboElements:J,size:K}}function Gq(q,J){let Q=Math.max(Vq[q.data.type]/16,1),$=q.data.value.length/q.data.size,K=(4-$%4)%4,X=q.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
21
+ v = uv.${q.data.name};
22
+ offset += ${J};
23
+
24
+ arrayOffset = offset;
25
+
26
+ t = 0;
27
+
28
+ for(var i=0; i < ${q.data.size*Q}; i++)
29
+ {
30
+ for(var j = 0; j < ${$}; j++)
31
+ {
32
+ ${X}[arrayOffset++] = v[t++];
33
+ }
34
+ ${K!==0?`arrayOffset += ${K};`:""}
35
+ }
36
+ `}function xq(q){return Sq(q,"uboStd40",Gq,fq)}class n extends pq{constructor(){super({createUboElements:yq,generateUboSync:xq})}}n.extension={type:[W.WebGLSystem],name:"ubo"};class Nq{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this._attachedMipLevel=0,this._attachedLayer=0,this.msaaRenderBuffer=[]}}class Wq{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new kq}init(q,J){this._renderer=q,this._renderTargetSystem=J,q.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new kq;let q=this._renderer.gl;this._drawBuffersCache=[];for(let J=1;J<=16;J++)this._drawBuffersCache[J]=Array.from({length:J},(Q,$)=>q.COLOR_ATTACHMENT0+$)}copyToTexture(q,J,Q,$,K){let X=this._renderTargetSystem,Z=this._renderer,V=X.getGpuRenderTarget(q),H=Z.gl;return this.finishRenderPass(q),H.bindFramebuffer(H.FRAMEBUFFER,V.resolveTargetFramebuffer),Z.texture.bind(J,0),H.copyTexSubImage2D(H.TEXTURE_2D,0,K.x,K.y,Q.x,Q.y,$.width,$.height),J}startRenderPass(q,J=!0,Q,$,K=0,X=0){let Z=this._renderTargetSystem,V=q.colorTexture,H=Z.getGpuRenderTarget(q);if(X!==0&&this._renderer.context.webGLVersion<2)throw Error("[RenderTargetSystem] Rendering to array layers requires WebGL2.");if(K>0){if(H.msaa)throw Error("[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.");if(this._renderer.context.webGLVersion<2)throw Error("[RenderTargetSystem] Rendering to mip levels requires WebGL2.")}let N=$.y;if(q.isRoot)N=V.pixelHeight-$.height-$.y;q.colorTextures.forEach((w)=>{this._renderer.texture.unbind(w)});let k=this._renderer.gl;if(k.bindFramebuffer(k.FRAMEBUFFER,H.framebuffer),!q.isRoot&&(H._attachedMipLevel!==K||H._attachedLayer!==X))q.colorTextures.forEach((w,O)=>{let D=this._renderer.texture.getGlSource(w);if(D.target===k.TEXTURE_2D){if(X!==0)throw Error("[RenderTargetSystem] layer must be 0 when rendering to 2D textures in WebGL.");k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0+O,k.TEXTURE_2D,D.texture,K)}else if(D.target===k.TEXTURE_2D_ARRAY){if(this._renderer.context.webGLVersion<2)throw Error("[RenderTargetSystem] Rendering to 2D array textures requires WebGL2.");k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0+O,D.texture,K,X)}else if(D.target===k.TEXTURE_CUBE_MAP){if(X<0||X>5)throw Error("[RenderTargetSystem] Cube map layer must be between 0 and 5.");k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0+O,k.TEXTURE_CUBE_MAP_POSITIVE_X+X,D.texture,K)}else throw Error("[RenderTargetSystem] Unsupported texture target for render-to-layer in WebGL.")}),H._attachedMipLevel=K,H._attachedLayer=X;if(q.colorTextures.length>1)this._setDrawBuffers(q,k);let z=this._viewPortCache;if(z.x!==$.x||z.y!==N||z.width!==$.width||z.height!==$.height)z.x=$.x,z.y=N,z.width=$.width,z.height=$.height,k.viewport($.x,N,$.width,$.height);if(!H.depthStencilRenderBuffer&&(q.stencil||q.depth))this._initStencil(H);this.clear(q,J,Q)}finishRenderPass(q){let Q=this._renderTargetSystem.getGpuRenderTarget(q);if(!Q.msaa)return;let $=this._renderer.gl;$.bindFramebuffer($.FRAMEBUFFER,Q.resolveTargetFramebuffer),$.bindFramebuffer($.READ_FRAMEBUFFER,Q.framebuffer),$.blitFramebuffer(0,0,Q.width,Q.height,0,0,Q.width,Q.height,$.COLOR_BUFFER_BIT,$.NEAREST),$.bindFramebuffer($.FRAMEBUFFER,Q.framebuffer)}initGpuRenderTarget(q){let Q=this._renderer.gl,$=new Nq;if($._attachedMipLevel=0,$._attachedLayer=0,q.colorTexture instanceof s)return this._renderer.context.ensureCanvasSize(q.colorTexture.resource),$.framebuffer=null,$;return this._initColor(q,$),Q.bindFramebuffer(Q.FRAMEBUFFER,null),$}destroyGpuRenderTarget(q){let J=this._renderer.gl;if(q.framebuffer)J.deleteFramebuffer(q.framebuffer),q.framebuffer=null;if(q.resolveTargetFramebuffer)J.deleteFramebuffer(q.resolveTargetFramebuffer),q.resolveTargetFramebuffer=null;if(q.depthStencilRenderBuffer)J.deleteRenderbuffer(q.depthStencilRenderBuffer),q.depthStencilRenderBuffer=null;q.msaaRenderBuffer.forEach((Q)=>{J.deleteRenderbuffer(Q)}),q.msaaRenderBuffer=null}clear(q,J,Q,$,K=0,X=0){if(!J)return;if(X!==0)throw Error("[RenderTargetSystem] Clearing array layers is not supported in WebGL renderer.");let Z=this._renderTargetSystem;if(typeof J==="boolean")J=J?a.ALL:a.NONE;let V=this._renderer.gl;if(J&a.COLOR){Q??(Q=Z.defaultClearColor);let H=this._clearColorCache,N=Q;if(H[0]!==N[0]||H[1]!==N[1]||H[2]!==N[2]||H[3]!==N[3])H[0]=N[0],H[1]=N[1],H[2]=N[2],H[3]=N[3],V.clearColor(N[0],N[1],N[2],N[3])}V.clear(J)}resizeGpuRenderTarget(q){if(q.isRoot)return;let Q=this._renderTargetSystem.getGpuRenderTarget(q);if(this._resizeColor(q,Q),q.stencil||q.depth)this._resizeStencil(Q)}_initColor(q,J){let Q=this._renderer,$=Q.gl,K=$.createFramebuffer();if(J.resolveTargetFramebuffer=K,$.bindFramebuffer($.FRAMEBUFFER,K),J.width=q.colorTexture.source.pixelWidth,J.height=q.colorTexture.source.pixelHeight,q.colorTextures.forEach((Z,V)=>{let H=Z.source;if(H.antialias)if(Q.context.supports.msaa)J.msaa=!0;else j("[RenderTexture] Antialiasing on textures is not supported in WebGL1");Q.texture.bindSource(H,0);let N=Q.texture.getGlSource(H),k=N.texture;if(N.target===$.TEXTURE_2D)$.framebufferTexture2D($.FRAMEBUFFER,$.COLOR_ATTACHMENT0+V,$.TEXTURE_2D,k,0);else if(N.target===$.TEXTURE_2D_ARRAY){if(Q.context.webGLVersion<2)throw Error("[RenderTargetSystem] TEXTURE_2D_ARRAY requires WebGL2.");$.framebufferTextureLayer($.FRAMEBUFFER,$.COLOR_ATTACHMENT0+V,k,0,0)}else if(N.target===$.TEXTURE_CUBE_MAP)$.framebufferTexture2D($.FRAMEBUFFER,$.COLOR_ATTACHMENT0+V,$.TEXTURE_CUBE_MAP_POSITIVE_X,k,0);else throw Error("[RenderTargetSystem] Unsupported texture target for framebuffer attachment.")}),J.msaa){let Z=$.createFramebuffer();J.framebuffer=Z,$.bindFramebuffer($.FRAMEBUFFER,Z),q.colorTextures.forEach((V,H)=>{let N=$.createRenderbuffer();J.msaaRenderBuffer[H]=N})}else J.framebuffer=K;this._resizeColor(q,J)}_resizeColor(q,J){let Q=q.colorTexture.source;if(J.width=Q.pixelWidth,J.height=Q.pixelHeight,J._attachedMipLevel=0,J._attachedLayer=0,q.colorTextures.forEach(($,K)=>{if(K===0)return;$.source.resize(Q.width,Q.height,Q._resolution)}),J.msaa){let $=this._renderer,K=$.gl,X=J.framebuffer;K.bindFramebuffer(K.FRAMEBUFFER,X),q.colorTextures.forEach((Z,V)=>{let H=Z.source;$.texture.bindSource(H,0);let k=$.texture.getGlSource(H).internalFormat,z=J.msaaRenderBuffer[V];K.bindRenderbuffer(K.RENDERBUFFER,z),K.renderbufferStorageMultisample(K.RENDERBUFFER,4,k,H.pixelWidth,H.pixelHeight),K.framebufferRenderbuffer(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0+V,K.RENDERBUFFER,z)})}}_initStencil(q){if(q.framebuffer===null)return;let J=this._renderer.gl,Q=J.createRenderbuffer();q.depthStencilRenderBuffer=Q,J.bindRenderbuffer(J.RENDERBUFFER,Q),J.framebufferRenderbuffer(J.FRAMEBUFFER,J.DEPTH_STENCIL_ATTACHMENT,J.RENDERBUFFER,Q),this._resizeStencil(q)}_resizeStencil(q){let J=this._renderer.gl;if(J.bindRenderbuffer(J.RENDERBUFFER,q.depthStencilRenderBuffer),q.msaa)J.renderbufferStorageMultisample(J.RENDERBUFFER,4,J.DEPTH24_STENCIL8,q.width,q.height);else J.renderbufferStorage(J.RENDERBUFFER,this._renderer.context.webGLVersion===2?J.DEPTH24_STENCIL8:J.DEPTH_STENCIL,q.width,q.height)}prerender(q){let J=q.colorTexture.resource;if(this._renderer.context.multiView&&s.test(J))this._renderer.context.ensureCanvasSize(J)}postrender(q){if(!this._renderer.context.multiView)return;if(s.test(q.colorTexture.resource)){let J=this._renderer.context.canvas,Q=q.colorTexture;Q.context2D.drawImage(J,0,Q.pixelHeight-J.height)}}_setDrawBuffers(q,J){let Q=q.colorTextures.length,$=this._drawBuffersCache[Q];if(this._renderer.context.webGLVersion===1){let K=this._renderer.context.extensions.drawBuffers;if(!K)j("[RenderTexture] This WebGL1 context does not support rendering to multiple targets");else K.drawBuffersWEBGL($)}else J.drawBuffers($)}}class o extends dq{constructor(q){super(q);this.adaptor=new Wq,this.adaptor.init(q,this)}}o.extension={type:[W.WebGLSystem],name:"renderTarget"};function mq(q,J){let Q=[],$=[`
37
+ var g = s.groups;
38
+ var sS = r.shader;
39
+ var p = s.glProgram;
40
+ var ugS = r.uniformGroup;
41
+ var resources;
42
+ `],K=!1,X=0,Z=J._getProgramData(q.glProgram);for(let H in q.groups){let N=q.groups[H];Q.push(`
43
+ resources = g[${H}].resources;
44
+ `);for(let k in N.resources){let z=N.resources[k];if(z instanceof C)if(z.ubo){let w=q._uniformBindMap[H][Number(k)];Q.push(`
45
+ sS.bindUniformBlock(
46
+ resources[${k}],
47
+ '${w}',
48
+ ${q.glProgram._uniformBlockData[w].index}
49
+ );
50
+ `)}else Q.push(`
51
+ ugS.updateUniformGroup(resources[${k}], p, sD);
52
+ `);else if(z instanceof l){let w=q._uniformBindMap[H][Number(k)];Q.push(`
53
+ sS.bindUniformBlock(
54
+ resources[${k}],
55
+ '${w}',
56
+ ${q.glProgram._uniformBlockData[w].index}
57
+ );
58
+ `)}else if(z instanceof m){let w=q._uniformBindMap[H][k],O=Z.uniformData[w];if(O){if(!K)K=!0,$.push(`
59
+ var tS = r.texture;
60
+ `);J._gl.uniform1i(O.location,X),Q.push(`
61
+ tS.bind(resources[${k}], ${X});
62
+ `),X++}}}}let V=[...$,...Q].join(`
63
+ `);return Function("r","s","sD",V)}class zq{constructor(q,J){this.program=q,this.uniformData=J,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBlockBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBlockBindings=null,this.program=null}}function Iq(q,J,Q){let $=q.createShader(J);return q.shaderSource($,Q),q.compileShader($),$}function wq(q){let J=Array(q);for(let Q=0;Q<J.length;Q++)J[Q]=!1;return J}function g(q,J){switch(q){case"float":return 0;case"vec2":return new Float32Array(2*J);case"vec3":return new Float32Array(3*J);case"vec4":return new Float32Array(4*J);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*J);case"ivec3":return new Int32Array(3*J);case"ivec4":return new Int32Array(4*J);case"uvec2":return new Uint32Array(2*J);case"uvec3":return new Uint32Array(3*J);case"uvec4":return new Uint32Array(4*J);case"bool":return!1;case"bvec2":return wq(2*J);case"bvec3":return wq(3*J);case"bvec4":return wq(4*J);case"mat2":return new Float32Array([1,0,0,1]);case"mat3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var t=null,cq={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"},vJ={float:"float32",vec2:"float32x2",vec3:"float32x3",vec4:"float32x4",int:"sint32",ivec2:"sint32x2",ivec3:"sint32x3",ivec4:"sint32x4",uint:"uint32",uvec2:"uint32x2",uvec3:"uint32x3",uvec4:"uint32x4",bool:"uint32",bvec2:"uint32x2",bvec3:"uint32x3",bvec4:"uint32x4"};function jq(q,J){if(!t){let Q=Object.keys(cq);t={};for(let $=0;$<Q.length;++$){let K=Q[$];t[q[K]]=cq[K]}}return t[J]}function Tq(q,J){let Q=jq(q,J);return vJ[Q]||"float32"}function iq(q,J,Q=!1){let $={},K=J.getProgramParameter(q,J.ACTIVE_ATTRIBUTES);for(let Z=0;Z<K;Z++){let V=J.getActiveAttrib(q,Z);if(V.name.startsWith("gl_"))continue;let H=Tq(J,V.type);$[V.name]={location:0,format:H,stride:p(H).stride,offset:0,instance:!1,start:0}}let X=Object.keys($);if(Q){X.sort((Z,V)=>Z>V?1:-1);for(let Z=0;Z<X.length;Z++)$[X[Z]].location=Z,J.bindAttribLocation(q,Z,X[Z]);J.linkProgram(q)}else for(let Z=0;Z<X.length;Z++)$[X[Z]].location=J.getAttribLocation(q,X[Z]);return $}function uq(q,J){if(!J.ACTIVE_UNIFORM_BLOCKS)return{};let Q={},$=J.getProgramParameter(q,J.ACTIVE_UNIFORM_BLOCKS);for(let K=0;K<$;K++){let X=J.getActiveUniformBlockName(q,K),Z=J.getUniformBlockIndex(q,X),V=J.getActiveUniformBlockParameter(q,K,J.UNIFORM_BLOCK_DATA_SIZE);Q[X]={name:X,index:Z,size:V}}return Q}function nq(q,J){let Q={},$=J.getProgramParameter(q,J.ACTIVE_UNIFORMS);for(let K=0;K<$;K++){let X=J.getActiveUniform(q,K),Z=X.name.replace(/\[.*?\]$/,""),V=!!X.name.match(/\[.*?\]$/),H=jq(J,X.type);Q[Z]={name:Z,index:K,type:H,size:X.size,isArray:V,value:g(H,X.size)}}return Q}function sq(q,J){let Q=q.getShaderSource(J).split(`
64
+ `).map((N,k)=>`${k}: ${N}`),$=q.getShaderInfoLog(J),K=$.split(`
65
+ `),X={},Z=K.map((N)=>parseFloat(N.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter((N)=>{if(N&&!X[N])return X[N]=!0,!0;return!1}),V=[""];Z.forEach((N)=>{Q[N-1]=`%c${Q[N-1]}%c`,V.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});let H=Q.join(`
66
+ `);V[0]=H,console.error($),console.groupCollapsed("click to view full shader code"),console.warn(...V),console.groupEnd()}function aq(q,J,Q,$){if(!q.getProgramParameter(J,q.LINK_STATUS)){if(!q.getShaderParameter(Q,q.COMPILE_STATUS))sq(q,Q);if(!q.getShaderParameter($,q.COMPILE_STATUS))sq(q,$);if(console.error("PixiJS Error: Could not initialize shader."),q.getProgramInfoLog(J)!=="")console.warn("PixiJS Warning: gl.getProgramInfoLog()",q.getProgramInfoLog(J))}}function oq(q,J){let Q=Iq(q,q.VERTEX_SHADER,J.vertex),$=Iq(q,q.FRAGMENT_SHADER,J.fragment),K=q.createProgram();q.attachShader(K,Q),q.attachShader(K,$);let X=J.transformFeedbackVaryings;if(X)if(typeof q.transformFeedbackVaryings!=="function")j("TransformFeedback is not supported but TransformFeedbackVaryings are given.");else q.transformFeedbackVaryings(K,X.names,X.bufferMode==="separate"?q.SEPARATE_ATTRIBS:q.INTERLEAVED_ATTRIBS);if(q.linkProgram(K),!q.getProgramParameter(K,q.LINK_STATUS))aq(q,K,Q,$);J._attributeData=iq(K,q,!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(J.vertex)),J._uniformData=nq(K,q),J._uniformBlockData=uq(K,q),q.deleteShader(Q),q.deleteShader($);let Z={};for(let H in J._uniformData){let N=J._uniformData[H];Z[H]={location:q.getUniformLocation(K,H),value:g(N.type,N.size)}}return new zq(K,Z)}var r={textureCount:0,blockIndex:0};class e{constructor(q){this._activeProgram=null,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._renderer=q}contextChange(q){this._gl=q,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._activeProgram=null}bind(q,J){if(this._setProgram(q.glProgram),J)return;r.textureCount=0,r.blockIndex=0;let Q=this._shaderSyncFunctions[q.glProgram._key];if(!Q)Q=this._shaderSyncFunctions[q.glProgram._key]=this._generateShaderSync(q,this);this._renderer.buffer.nextBindBase(!!q.glProgram.transformFeedbackVaryings),Q(this._renderer,q,r)}updateUniformGroup(q){this._renderer.uniformGroup.updateUniformGroup(q,this._activeProgram,r)}bindUniformBlock(q,J,Q=0){let $=this._renderer.buffer,K=this._getProgramData(this._activeProgram),X=q._bufferResource;if(!X)this._renderer.ubo.updateUniformGroup(q);let Z=q.buffer,V=$.updateBuffer(Z),H=$.freeLocationForBufferBase(V);if(X){let{offset:k,size:z}=q;if(k===0&&z===Z.data.byteLength)$.bindBufferBase(V,H);else $.bindBufferRange(V,H,k)}else if($.getLastBindBaseLocation(V)!==H)$.bindBufferBase(V,H);let N=this._activeProgram._uniformBlockData[J].index;if(K.uniformBlockBindings[Q]===H)return;K.uniformBlockBindings[Q]=H,this._renderer.gl.uniformBlockBinding(K.program,N,H)}_setProgram(q){if(this._activeProgram===q)return;this._activeProgram=q;let J=this._getProgramData(q);this._gl.useProgram(J.program)}_getProgramData(q){return this._programDataHash[q._key]||this._createProgramData(q)}_createProgramData(q){let J=q._key;return this._programDataHash[J]=oq(this._gl,q),this._programDataHash[J]}destroy(){for(let q of Object.keys(this._programDataHash))this._programDataHash[q].destroy();this._programDataHash=null,this._shaderSyncFunctions=null,this._activeProgram=null,this._renderer=null,this._gl=null}_generateShaderSync(q,J){return mq(q,J)}resetState(){this._activeProgram=null}}e.extension={type:[W.WebGLSystem],name:"shader"};var lq={f32:`if (cv !== v) {
67
+ cu.value = v;
68
+ gl.uniform1f(location, v);
69
+ }`,"vec2<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
70
+ cv[0] = v[0];
71
+ cv[1] = v[1];
72
+ gl.uniform2f(location, v[0], v[1]);
73
+ }`,"vec3<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
74
+ cv[0] = v[0];
75
+ cv[1] = v[1];
76
+ cv[2] = v[2];
77
+ gl.uniform3f(location, v[0], v[1], v[2]);
78
+ }`,"vec4<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
79
+ cv[0] = v[0];
80
+ cv[1] = v[1];
81
+ cv[2] = v[2];
82
+ cv[3] = v[3];
83
+ gl.uniform4f(location, v[0], v[1], v[2], v[3]);
84
+ }`,i32:`if (cv !== v) {
85
+ cu.value = v;
86
+ gl.uniform1i(location, v);
87
+ }`,"vec2<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
88
+ cv[0] = v[0];
89
+ cv[1] = v[1];
90
+ gl.uniform2i(location, v[0], v[1]);
91
+ }`,"vec3<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
92
+ cv[0] = v[0];
93
+ cv[1] = v[1];
94
+ cv[2] = v[2];
95
+ gl.uniform3i(location, v[0], v[1], v[2]);
96
+ }`,"vec4<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
97
+ cv[0] = v[0];
98
+ cv[1] = v[1];
99
+ cv[2] = v[2];
100
+ cv[3] = v[3];
101
+ gl.uniform4i(location, v[0], v[1], v[2], v[3]);
102
+ }`,u32:`if (cv !== v) {
103
+ cu.value = v;
104
+ gl.uniform1ui(location, v);
105
+ }`,"vec2<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
106
+ cv[0] = v[0];
107
+ cv[1] = v[1];
108
+ gl.uniform2ui(location, v[0], v[1]);
109
+ }`,"vec3<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
110
+ cv[0] = v[0];
111
+ cv[1] = v[1];
112
+ cv[2] = v[2];
113
+ gl.uniform3ui(location, v[0], v[1], v[2]);
114
+ }`,"vec4<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
115
+ cv[0] = v[0];
116
+ cv[1] = v[1];
117
+ cv[2] = v[2];
118
+ cv[3] = v[3];
119
+ gl.uniform4ui(location, v[0], v[1], v[2], v[3]);
120
+ }`,bool:`if (cv !== v) {
121
+ cu.value = v;
122
+ gl.uniform1i(location, v);
123
+ }`,"vec2<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
124
+ cv[0] = v[0];
125
+ cv[1] = v[1];
126
+ gl.uniform2i(location, v[0], v[1]);
127
+ }`,"vec3<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
128
+ cv[0] = v[0];
129
+ cv[1] = v[1];
130
+ cv[2] = v[2];
131
+ gl.uniform3i(location, v[0], v[1], v[2]);
132
+ }`,"vec4<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
133
+ cv[0] = v[0];
134
+ cv[1] = v[1];
135
+ cv[2] = v[2];
136
+ cv[3] = v[3];
137
+ gl.uniform4i(location, v[0], v[1], v[2], v[3]);
138
+ }`,"mat2x2<f32>":"gl.uniformMatrix2fv(location, false, v);","mat3x3<f32>":"gl.uniformMatrix3fv(location, false, v);","mat4x4<f32>":"gl.uniformMatrix4fv(location, false, v);"},gq={f32:"gl.uniform1fv(location, v);","vec2<f32>":"gl.uniform2fv(location, v);","vec3<f32>":"gl.uniform3fv(location, v);","vec4<f32>":"gl.uniform4fv(location, v);","mat2x2<f32>":"gl.uniformMatrix2fv(location, false, v);","mat3x3<f32>":"gl.uniformMatrix3fv(location, false, v);","mat4x4<f32>":"gl.uniformMatrix4fv(location, false, v);",i32:"gl.uniform1iv(location, v);","vec2<i32>":"gl.uniform2iv(location, v);","vec3<i32>":"gl.uniform3iv(location, v);","vec4<i32>":"gl.uniform4iv(location, v);",u32:"gl.uniform1iv(location, v);","vec2<u32>":"gl.uniform2iv(location, v);","vec3<u32>":"gl.uniform3iv(location, v);","vec4<u32>":"gl.uniform4iv(location, v);",bool:"gl.uniform1iv(location, v);","vec2<bool>":"gl.uniform2iv(location, v);","vec3<bool>":"gl.uniform3iv(location, v);","vec4<bool>":"gl.uniform4iv(location, v);"};function tq(q,J){let Q=[`
139
+ var v = null;
140
+ var cv = null;
141
+ var cu = null;
142
+ var t = 0;
143
+ var gl = renderer.gl;
144
+ var name = null;
145
+ `];for(let $ in q.uniforms){if(!J[$]){if(q.uniforms[$]instanceof C)if(q.uniforms[$].ubo)Q.push(`
146
+ renderer.shader.bindUniformBlock(uv.${$}, "${$}");
147
+ `);else Q.push(`
148
+ renderer.shader.updateUniformGroup(uv.${$});
149
+ `);else if(q.uniforms[$]instanceof l)Q.push(`
150
+ renderer.shader.bindBufferResource(uv.${$}, "${$}");
151
+ `);continue}let K=q.uniformStructures[$],X=!1;for(let Z=0;Z<qq.length;Z++){let V=qq[Z];if(K.type===V.type&&V.test(K)){Q.push(`name = "${$}";`,qq[Z].uniform),X=!0;break}}if(!X){let V=(K.size===1?lq:gq)[K.type].replace("location",`ud["${$}"].location`);Q.push(`
152
+ cu = ud["${$}"];
153
+ cv = cu.value;
154
+ v = uv["${$}"];
155
+ ${V};`)}}return Function("ud","uv","renderer","syncData",Q.join(`
156
+ `))}class Jq{constructor(q){this._cache={},this._uniformGroupSyncHash={},this._renderer=q,this.gl=null,this._cache={}}contextChange(q){this.gl=q}updateUniformGroup(q,J,Q){let $=this._renderer.shader._getProgramData(J);if(!q.isStatic||q._dirtyId!==$.uniformDirtyGroups[q.uid])$.uniformDirtyGroups[q.uid]=q._dirtyId,this._getUniformSyncFunction(q,J)($.uniformData,q.uniforms,this._renderer,Q)}_getUniformSyncFunction(q,J){return this._uniformGroupSyncHash[q._signature]?.[J._key]||this._createUniformSyncFunction(q,J)}_createUniformSyncFunction(q,J){let Q=this._uniformGroupSyncHash[q._signature]||(this._uniformGroupSyncHash[q._signature]={}),$=this._getSignature(q,J._uniformData,"u");if(!this._cache[$])this._cache[$]=this._generateUniformsSync(q,J._uniformData);return Q[J._key]=this._cache[$],Q[J._key]}_generateUniformsSync(q,J){return tq(q,J)}_getSignature(q,J,Q){let $=q.uniforms,K=[`${Q}-`];for(let X in $)if(K.push(X),J[X])K.push(J[X].type);return K.join("-")}destroy(){this._renderer=null,this._cache=null}}Jq.extension={type:[W.WebGLSystem],name:"uniformGroup"};function rq(q){let J={};if(J.normal=[q.ONE,q.ONE_MINUS_SRC_ALPHA],J.add=[q.ONE,q.ONE],J.multiply=[q.DST_COLOR,q.ONE_MINUS_SRC_ALPHA,q.ONE,q.ONE_MINUS_SRC_ALPHA],J.screen=[q.ONE,q.ONE_MINUS_SRC_COLOR,q.ONE,q.ONE_MINUS_SRC_ALPHA],J.none=[0,0],J["normal-npm"]=[q.SRC_ALPHA,q.ONE_MINUS_SRC_ALPHA,q.ONE,q.ONE_MINUS_SRC_ALPHA],J["add-npm"]=[q.SRC_ALPHA,q.ONE,q.ONE,q.ONE],J["screen-npm"]=[q.SRC_ALPHA,q.ONE_MINUS_SRC_COLOR,q.ONE,q.ONE_MINUS_SRC_ALPHA],J.erase=[q.ZERO,q.ONE_MINUS_SRC_ALPHA],!(q instanceof U.get().getWebGLRenderingContext()))J.min=[q.ONE,q.ONE,q.ONE,q.ONE,q.MIN,q.MIN],J.max=[q.ONE,q.ONE,q.ONE,q.ONE,q.MAX,q.MAX];else{let $=q.getExtension("EXT_blend_minmax");if($)J.min=[q.ONE,q.ONE,q.ONE,q.ONE,$.MIN_EXT,$.MIN_EXT],J.max=[q.ONE,q.ONE,q.ONE,q.ONE,$.MAX_EXT,$.MAX_EXT]}return J}var MJ=0,FJ=1,AJ=2,PJ=3,bJ=4,hJ=5,eq=class q{constructor(J){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[MJ]=this.setBlend,this.map[FJ]=this.setOffset,this.map[AJ]=this.setCullFace,this.map[PJ]=this.setDepthTest,this.map[bJ]=this.setFrontFace,this.map[hJ]=this.setDepthMask,this.checks=[],this.defaultState=v.for2d(),J.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(J){if(this._invertFrontFace=!J.isRoot,this._cullFace)this.setFrontFace(this._frontFace);else this._frontFaceDirty=!0}contextChange(J){this.gl=J,this.blendModesMap=rq(J),this.resetState()}set(J){if(J||(J=this.defaultState),this.stateId!==J.data){let Q=this.stateId^J.data,$=0;while(Q){if(Q&1)this.map[$].call(this,!!(J.data&1<<$));Q>>=1,$++}this.stateId=J.data}for(let Q=0;Q<this.checks.length;Q++)this.checks[Q](this,J)}forceState(J){J||(J=this.defaultState);for(let Q=0;Q<this.map.length;Q++)this.map[Q].call(this,!!(J.data&1<<Q));for(let Q=0;Q<this.checks.length;Q++)this.checks[Q](this,J);this.stateId=J.data}setBlend(J){this._updateCheck(q._checkBlendMode,J),this.gl[J?"enable":"disable"](this.gl.BLEND)}setOffset(J){this._updateCheck(q._checkPolygonOffset,J),this.gl[J?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(J){this.gl[J?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(J){this.gl.depthMask(J)}setCullFace(J){if(this._cullFace=J,this.gl[J?"enable":"disable"](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty)this.setFrontFace(this._frontFace)}setFrontFace(J){this._frontFace=J,this._frontFaceDirty=!1;let Q=this._invertFrontFace?!J:J;if(this._glFrontFace!==Q)this._glFrontFace=Q,this.gl.frontFace(this.gl[Q?"CW":"CCW"])}setBlendMode(J){if(!this.blendModesMap[J])J="normal";if(J===this.blendMode)return;this.blendMode=J;let Q=this.blendModesMap[J],$=this.gl;if(Q.length===2)$.blendFunc(Q[0],Q[1]);else $.blendFuncSeparate(Q[0],Q[1],Q[2],Q[3]);if(Q.length===6)this._blendEq=!0,$.blendEquationSeparate(Q[4],Q[5]);else if(this._blendEq)this._blendEq=!1,$.blendEquationSeparate($.FUNC_ADD,$.FUNC_ADD)}setPolygonOffset(J,Q){this.gl.polygonOffset(J,Q)}resetState(){this._glFrontFace=!1,this._frontFace=!1,this._cullFace=!1,this._frontFaceDirty=!1,this._invertFrontFace=!1,this.gl.frontFace(this.gl.CCW),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(J,Q){let $=this.checks.indexOf(J);if(Q&&$===-1)this.checks.push(J);else if(!Q&&$!==-1)this.checks.splice($,1)}static _checkBlendMode(J,Q){J.setBlendMode(Q.blendMode)}static _checkPolygonOffset(J,Q){J.setPolygonOffset(1,Q.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};eq.extension={type:[W.WebGLSystem],name:"state"};var qJ=eq;class Uq{constructor(q){this.target=A.TEXTURE_2D,this._layerInitMask=0,this.texture=q,this.width=-1,this.height=-1,this.type=I.UNSIGNED_BYTE,this.internalFormat=x.RGBA,this.format=x.RGBA,this.samplerType=0}destroy(){}}var JJ={id:"buffer",upload(q,J,Q,$,K,X=!1){let Z=K||J.target;if(!X&&(J.width===q.width&&J.height===q.height))Q.texSubImage2D(Z,0,0,0,q.width,q.height,J.format,J.type,q.resource);else Q.texImage2D(Z,0,J.internalFormat,q.width,q.height,0,J.format,J.type,q.resource);J.width=q.width,J.height=q.height}};var _J={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},QJ={id:"compressed",upload(q,J,Q,$,K,X){let Z=K??J.target;Q.pixelStorei(Q.UNPACK_ALIGNMENT,4);let{pixelWidth:V,pixelHeight:H}=q,N=!!_J[q.format];for(let k=0;k<q.resource.length;k++){let z=q.resource[k];if(N)Q.compressedTexImage2D(Z,k,J.internalFormat,V,H,0,z);else Q.texImage2D(Z,k,J.internalFormat,V,H,0,J.format,J.type,z);V=Math.max(V>>1,1),H=Math.max(H>>1,1)}}};var $J=["right","left","top","bottom","front","back"];function KJ(q){return{id:"cube",upload(J,Q,$,K){let X=J.faces;for(let Z=0;Z<$J.length;Z++){let V=$J[Z],H=X[V];(q[H.uploadMethodId]||q.image).upload(H,Q,$,K,A.TEXTURE_CUBE_MAP_POSITIVE_X+Z,(Q._layerInitMask&1<<Z)===0),Q._layerInitMask|=1<<Z}Q.width=J.pixelWidth,Q.height=J.pixelHeight}}}var Qq={id:"image",upload(q,J,Q,$,K,X=!1){let Z=K||J.target,V=q.pixelWidth,H=q.pixelHeight,N=q.resourceWidth,k=q.resourceHeight,z=$===2,w=X||J.width!==V||J.height!==H,O=N>=V&&k>=H,D=q.resource;(z?EJ:RJ)(Q,Z,J,V,H,N,k,D,w,O),J.width=V,J.height=H}};function EJ(q,J,Q,$,K,X,Z,V,H,N){if(!N){if(H)q.texImage2D(J,0,Q.internalFormat,$,K,0,Q.format,Q.type,null);q.texSubImage2D(J,0,0,0,X,Z,Q.format,Q.type,V);return}if(!H){q.texSubImage2D(J,0,0,0,Q.format,Q.type,V);return}q.texImage2D(J,0,Q.internalFormat,$,K,0,Q.format,Q.type,V)}function RJ(q,J,Q,$,K,X,Z,V,H,N){if(!N){if(H)q.texImage2D(J,0,Q.internalFormat,$,K,0,Q.format,Q.type,null);q.texSubImage2D(J,0,0,0,Q.format,Q.type,V);return}if(!H){q.texSubImage2D(J,0,0,0,Q.format,Q.type,V);return}q.texImage2D(J,0,Q.internalFormat,Q.format,Q.type,V)}function XJ(){let{userAgent:q}=U.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(q)}var LJ=XJ(),ZJ={id:"video",upload(q,J,Q,$,K,X=LJ){if(!q.isValid){let Z=K??J.target;Q.texImage2D(Z,0,J.internalFormat,1,1,0,J.format,J.type,null);return}Qq.upload(q,J,Q,$,K,X)}};var Oq={linear:9729,nearest:9728},HJ={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},$q={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},VJ={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519};function Dq(q,J,Q,$,K,X,Z,V){let H=X;if(!V||q.addressModeU!=="repeat"||q.addressModeV!=="repeat"||q.addressModeW!=="repeat"){let N=$q[Z?"clamp-to-edge":q.addressModeU],k=$q[Z?"clamp-to-edge":q.addressModeV],z=$q[Z?"clamp-to-edge":q.addressModeW];if(J[K](H,J.TEXTURE_WRAP_S,N),J[K](H,J.TEXTURE_WRAP_T,k),J.TEXTURE_WRAP_R)J[K](H,J.TEXTURE_WRAP_R,z)}if(!V||q.magFilter!=="linear")J[K](H,J.TEXTURE_MAG_FILTER,Oq[q.magFilter]);if(Q){if(!V||q.mipmapFilter!=="linear"){let N=HJ[q.minFilter][q.mipmapFilter];J[K](H,J.TEXTURE_MIN_FILTER,N)}}else J[K](H,J.TEXTURE_MIN_FILTER,Oq[q.minFilter]);if($&&q.maxAnisotropy>1){let N=Math.min(q.maxAnisotropy,J.getParameter($.MAX_TEXTURE_MAX_ANISOTROPY_EXT));J[K](H,$.TEXTURE_MAX_ANISOTROPY_EXT,N)}if(q.compare)J[K](H,J.TEXTURE_COMPARE_FUNC,VJ[q.compare])}function NJ(q){return{r8unorm:q.RED,r8snorm:q.RED,r8uint:q.RED,r8sint:q.RED,r16uint:q.RED,r16sint:q.RED,r16float:q.RED,rg8unorm:q.RG,rg8snorm:q.RG,rg8uint:q.RG,rg8sint:q.RG,r32uint:q.RED,r32sint:q.RED,r32float:q.RED,rg16uint:q.RG,rg16sint:q.RG,rg16float:q.RG,rgba8unorm:q.RGBA,"rgba8unorm-srgb":q.RGBA,rgba8snorm:q.RGBA,rgba8uint:q.RGBA,rgba8sint:q.RGBA,bgra8unorm:q.RGBA,"bgra8unorm-srgb":q.RGBA,rgb9e5ufloat:q.RGB,rgb10a2unorm:q.RGBA,rg11b10ufloat:q.RGB,rg32uint:q.RG,rg32sint:q.RG,rg32float:q.RG,rgba16uint:q.RGBA,rgba16sint:q.RGBA,rgba16float:q.RGBA,rgba32uint:q.RGBA,rgba32sint:q.RGBA,rgba32float:q.RGBA,stencil8:q.STENCIL_INDEX8,depth16unorm:q.DEPTH_COMPONENT,depth24plus:q.DEPTH_COMPONENT,"depth24plus-stencil8":q.DEPTH_STENCIL,depth32float:q.DEPTH_COMPONENT,"depth32float-stencil8":q.DEPTH_STENCIL}}function kJ(q,J){let Q={},$=q.RGBA;if(!(q instanceof U.get().getWebGLRenderingContext()))Q={"rgba8unorm-srgb":q.SRGB8_ALPHA8,"bgra8unorm-srgb":q.SRGB8_ALPHA8},$=q.RGBA8;else if(J.srgb)Q={"rgba8unorm-srgb":J.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":J.srgb.SRGB8_ALPHA8_EXT};return{r8unorm:q.R8,r8snorm:q.R8_SNORM,r8uint:q.R8UI,r8sint:q.R8I,r16uint:q.R16UI,r16sint:q.R16I,r16float:q.R16F,rg8unorm:q.RG8,rg8snorm:q.RG8_SNORM,rg8uint:q.RG8UI,rg8sint:q.RG8I,r32uint:q.R32UI,r32sint:q.R32I,r32float:q.R32F,rg16uint:q.RG16UI,rg16sint:q.RG16I,rg16float:q.RG16F,rgba8unorm:q.RGBA,...Q,rgba8snorm:q.RGBA8_SNORM,rgba8uint:q.RGBA8UI,rgba8sint:q.RGBA8I,bgra8unorm:$,rgb9e5ufloat:q.RGB9_E5,rgb10a2unorm:q.RGB10_A2,rg11b10ufloat:q.R11F_G11F_B10F,rg32uint:q.RG32UI,rg32sint:q.RG32I,rg32float:q.RG32F,rgba16uint:q.RGBA16UI,rgba16sint:q.RGBA16I,rgba16float:q.RGBA16F,rgba32uint:q.RGBA32UI,rgba32sint:q.RGBA32I,rgba32float:q.RGBA32F,stencil8:q.STENCIL_INDEX8,depth16unorm:q.DEPTH_COMPONENT16,depth24plus:q.DEPTH_COMPONENT24,"depth24plus-stencil8":q.DEPTH24_STENCIL8,depth32float:q.DEPTH_COMPONENT32F,"depth32float-stencil8":q.DEPTH32F_STENCIL8,...J.s3tc?{"bc1-rgba-unorm":J.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":J.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":J.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...J.s3tc_sRGB?{"bc1-rgba-unorm-srgb":J.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":J.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":J.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...J.rgtc?{"bc4-r-unorm":J.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":J.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":J.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":J.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...J.bptc?{"bc6h-rgb-float":J.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":J.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":J.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":J.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...J.etc?{"etc2-rgb8unorm":J.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":J.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":J.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":J.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":J.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":J.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":J.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":J.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...J.astc?{"astc-4x4-unorm":J.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":J.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":J.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":J.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":J.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":J.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":J.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":J.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":J.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":J.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":J.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":J.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":J.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":J.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":J.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}function WJ(q){return{r8unorm:q.UNSIGNED_BYTE,r8snorm:q.BYTE,r8uint:q.UNSIGNED_BYTE,r8sint:q.BYTE,r16uint:q.UNSIGNED_SHORT,r16sint:q.SHORT,r16float:q.HALF_FLOAT,rg8unorm:q.UNSIGNED_BYTE,rg8snorm:q.BYTE,rg8uint:q.UNSIGNED_BYTE,rg8sint:q.BYTE,r32uint:q.UNSIGNED_INT,r32sint:q.INT,r32float:q.FLOAT,rg16uint:q.UNSIGNED_SHORT,rg16sint:q.SHORT,rg16float:q.HALF_FLOAT,rgba8unorm:q.UNSIGNED_BYTE,"rgba8unorm-srgb":q.UNSIGNED_BYTE,rgba8snorm:q.BYTE,rgba8uint:q.UNSIGNED_BYTE,rgba8sint:q.BYTE,bgra8unorm:q.UNSIGNED_BYTE,"bgra8unorm-srgb":q.UNSIGNED_BYTE,rgb9e5ufloat:q.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:q.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:q.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:q.UNSIGNED_INT,rg32sint:q.INT,rg32float:q.FLOAT,rgba16uint:q.UNSIGNED_SHORT,rgba16sint:q.SHORT,rgba16float:q.HALF_FLOAT,rgba32uint:q.UNSIGNED_INT,rgba32sint:q.INT,rgba32float:q.FLOAT,stencil8:q.UNSIGNED_BYTE,depth16unorm:q.UNSIGNED_SHORT,depth24plus:q.UNSIGNED_INT,"depth24plus-stencil8":q.UNSIGNED_INT_24_8,depth32float:q.FLOAT,"depth32float-stencil8":q.FLOAT_32_UNSIGNED_INT_24_8_REV}}function zJ(q){return{"2d":q.TEXTURE_2D,cube:q.TEXTURE_CUBE_MAP,"1d":null,"3d":q?.TEXTURE_3D||null,"2d-array":q?.TEXTURE_2D_ARRAY||null,"cube-array":q?.TEXTURE_CUBE_MAP_ARRAY||null}}var yJ=4;class Kq{constructor(q){this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1,this._useSeparateSamplers=!1,this._renderer=q,this._managedTextures=new M({renderer:q,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"glTexture"});let J={image:Qq,buffer:JJ,video:ZJ,compressed:QJ};this._uploads={...J,cube:KJ(J)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(q){if(this._gl=q,!this._mapFormatToInternalFormat)this._mapFormatToInternalFormat=kJ(q,this._renderer.context.extensions),this._mapFormatToType=WJ(q),this._mapFormatToFormat=NJ(q),this._mapViewDimensionToGlTarget=zJ(q);this._managedTextures.removeAll(!0),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1;for(let J=0;J<16;J++)this.bind(Y.EMPTY,J)}initSource(q){this.bind(q)}bind(q,J=0){let Q=q.source;if(q){if(this.bindSource(Q,J),this._useSeparateSamplers)this._bindSampler(Q.style,J)}else if(this.bindSource(null,J),this._useSeparateSamplers)this._bindSampler(null,J)}bindSource(q,J=0){let Q=this._gl;if(q._gcLastUsed=this._renderer.gc.now,this._boundTextures[J]!==q){this._boundTextures[J]=q,this._activateLocation(J),q||(q=Y.EMPTY.source);let $=this.getGlSource(q);Q.bindTexture($.target,$.texture)}}_bindSampler(q,J=0){let Q=this._gl;if(!q){this._boundSamplers[J]=null,Q.bindSampler(J,null);return}let $=this._getGlSampler(q);if(this._boundSamplers[J]!==$)this._boundSamplers[J]=$,Q.bindSampler(J,$)}unbind(q){let J=q.source,Q=this._boundTextures,$=this._gl;for(let K=0;K<Q.length;K++)if(Q[K]===J){this._activateLocation(K);let X=this.getGlSource(J);$.bindTexture(X.target,null),Q[K]=null}}_activateLocation(q){if(this._activeTextureLocation!==q)this._activeTextureLocation=q,this._gl.activeTexture(this._gl.TEXTURE0+q)}_initSource(q){let J=this._gl,Q=new Uq(J.createTexture());if(Q.type=this._mapFormatToType[q.format],Q.internalFormat=this._mapFormatToInternalFormat[q.format],Q.format=this._mapFormatToFormat[q.format],Q.target=this._mapViewDimensionToGlTarget[q.viewDimension],Q.target===null)throw Error(`Unsupported view dimension: ${q.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);if(q.uploadMethodId==="cube")Q.target=J.TEXTURE_CUBE_MAP;if(q.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||q.isPowerOfTwo)){let K=Math.max(q.width,q.height);q.mipLevelCount=Math.floor(Math.log2(K))+1}if(q._gpuData[this._renderer.uid]=Q,this._managedTextures.add(q))q.on("update",this.onSourceUpdate,this),q.on("resize",this.onSourceUpdate,this),q.on("styleChange",this.onStyleChange,this),q.on("updateMipmaps",this.onUpdateMipmaps,this);return this.onSourceUpdate(q),this.updateStyle(q,!1),Q}onStyleChange(q){this.updateStyle(q,!1)}updateStyle(q,J){let Q=this._gl,$=this.getGlSource(q);Q.bindTexture($.target,$.texture),this._boundTextures[this._activeTextureLocation]=q,Dq(q.style,Q,q.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",$.target,!this._renderer.context.supports.nonPowOf2wrapping&&!q.isPowerOfTwo,J)}onSourceUnload(q,J=!1){let Q=q._gpuData[this._renderer.uid];if(!Q)return;if(!J)this.unbind(q),this._gl.deleteTexture(Q.texture);q.off("update",this.onSourceUpdate,this),q.off("resize",this.onSourceUpdate,this),q.off("styleChange",this.onStyleChange,this),q.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceUpdate(q){let J=this._gl,Q=this.getGlSource(q);J.bindTexture(Q.target,Q.texture),this._boundTextures[this._activeTextureLocation]=q;let $=q.alphaMode==="premultiply-alpha-on-upload";if(this._premultiplyAlpha!==$)this._premultiplyAlpha=$,J.pixelStorei(J.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$);if(this._uploads[q.uploadMethodId])this._uploads[q.uploadMethodId].upload(q,Q,J,this._renderer.context.webGLVersion);else if(Q.target===J.TEXTURE_2D)this._initEmptyTexture2D(Q,q);else if(Q.target===J.TEXTURE_2D_ARRAY)this._initEmptyTexture2DArray(Q,q);else if(Q.target===J.TEXTURE_CUBE_MAP)this._initEmptyTextureCube(Q,q);else throw Error("[GlTextureSystem] Unsupported texture target for empty allocation.");if(this._applyMipRange(Q,q),q.autoGenerateMipmaps&&q.mipLevelCount>1)this.onUpdateMipmaps(q,!1)}onUpdateMipmaps(q,J=!0){if(J)this.bindSource(q,0);let Q=this.getGlSource(q);this._gl.generateMipmap(Q.target)}_initEmptyTexture2D(q,J){let Q=this._gl;Q.texImage2D(Q.TEXTURE_2D,0,q.internalFormat,J.pixelWidth,J.pixelHeight,0,q.format,q.type,null);let $=Math.max(J.pixelWidth>>1,1),K=Math.max(J.pixelHeight>>1,1);for(let X=1;X<J.mipLevelCount;X++)Q.texImage2D(Q.TEXTURE_2D,X,q.internalFormat,$,K,0,q.format,q.type,null),$=Math.max($>>1,1),K=Math.max(K>>1,1)}_initEmptyTexture2DArray(q,J){if(this._renderer.context.webGLVersion!==2)throw Error("[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.");let Q=this._gl,$=Math.max(J.arrayLayerCount|0,1);Q.texImage3D(Q.TEXTURE_2D_ARRAY,0,q.internalFormat,J.pixelWidth,J.pixelHeight,$,0,q.format,q.type,null);let K=Math.max(J.pixelWidth>>1,1),X=Math.max(J.pixelHeight>>1,1);for(let Z=1;Z<J.mipLevelCount;Z++)Q.texImage3D(Q.TEXTURE_2D_ARRAY,Z,q.internalFormat,K,X,$,0,q.format,q.type,null),K=Math.max(K>>1,1),X=Math.max(X>>1,1)}_initEmptyTextureCube(q,J){let Q=this._gl,$=6;for(let Z=0;Z<6;Z++)Q.texImage2D(Q.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,q.internalFormat,J.pixelWidth,J.pixelHeight,0,q.format,q.type,null);let K=Math.max(J.pixelWidth>>1,1),X=Math.max(J.pixelHeight>>1,1);for(let Z=1;Z<J.mipLevelCount;Z++){for(let V=0;V<6;V++)Q.texImage2D(Q.TEXTURE_CUBE_MAP_POSITIVE_X+V,Z,q.internalFormat,K,X,0,q.format,q.type,null);K=Math.max(K>>1,1),X=Math.max(X>>1,1)}}_applyMipRange(q,J){if(this._renderer.context.webGLVersion!==2)return;let Q=this._gl,$=Math.max((J.mipLevelCount|0)-1,0);Q.texParameteri(q.target,Q.TEXTURE_BASE_LEVEL,0),Q.texParameteri(q.target,Q.TEXTURE_MAX_LEVEL,$)}_initSampler(q){let J=this._gl,Q=this._gl.createSampler();return this._glSamplers[q._resourceId]=Q,Dq(q,J,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",Q,!1,!0),this._glSamplers[q._resourceId]}_getGlSampler(q){return this._glSamplers[q._resourceId]||this._initSampler(q)}getGlSource(q){return q._gcLastUsed=this._renderer.gc.now,q._gpuData[this._renderer.uid]||this._initSource(q)}generateCanvas(q){let{pixels:J,width:Q,height:$}=this.getPixels(q),K=U.get().createCanvas();K.width=Q,K.height=$;let X=K.getContext("2d");if(X){let Z=X.createImageData(Q,$);Z.data.set(J),X.putImageData(Z,0,0)}return K}getPixels(q){let J=q.source.resolution,Q=q.frame,$=Math.max(Math.round(Q.width*J),1),K=Math.max(Math.round(Q.height*J),1),X=new Uint8Array(yJ*$*K),Z=this._renderer,V=Z.renderTarget.getRenderTarget(q),H=Z.renderTarget.getGpuRenderTarget(V),N=Z.gl;return N.bindFramebuffer(N.FRAMEBUFFER,H.resolveTargetFramebuffer),N.readPixels(Math.round(Q.x*J),Math.round(Q.y*J),$,K,N.RGBA,N.UNSIGNED_BYTE,X),{pixels:new Uint8ClampedArray(X.buffer),width:$,height:K}}destroy(){this._managedTextures.destroy(),this._glSamplers=null,this._boundTextures=null,this._boundSamplers=null,this._mapFormatToInternalFormat=null,this._mapFormatToType=null,this._mapFormatToFormat=null,this._uploads=null,this._renderer=null}resetState(){this._activeTextureLocation=-1,this._boundTextures.fill(Y.EMPTY.source),this._boundSamplers=Object.create(null);let q=this._gl;this._premultiplyAlpha=!1,q.pixelStorei(q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha)}}Kq.extension={type:[W.WebGLSystem],name:"texture"};var GJ=[...jJ,n,Eq,Mq,i,f,Kq,o,d,Jq,e,T,qJ,u,c],SJ=[...UJ],fJ=[G,y,L],OJ=[],DJ=[],YJ=[];b.handleByNamedList(W.WebGLSystem,OJ);b.handleByNamedList(W.WebGLPipes,DJ);b.handleByNamedList(W.WebGLPipesAdaptor,YJ);b.add(...GJ,...SJ,...fJ);class xJ extends wJ{constructor(){let q={name:"webgl",type:IJ.WEBGL,systems:OJ,renderPipes:DJ,renderPipeAdaptors:YJ};super(q)}}export{xJ as h};
@@ -0,0 +1 @@
1
+ import{A as KQ,B as FQ,C as HQ,E as jQ,F as NQ,G as kQ,H as JQ,I as EQ,K as OQ,z as VQ}from"./chunk-a7wf9wxx.js";import{$ as XQ,R as OJ,ba as IQ,ca as KJ}from"./chunk-kt3t4zv0.js";import{ia as pJ,ja as iJ,ka as cJ,la as QQ,ma as nJ,na as oJ,oa as $Q,ra as JJ}from"./chunk-rp8z1jh7.js";import{Ia as t}from"./chunk-sngkm5ds.js";import{$a as aJ,Ja as H,Ka as y,Ma as u,Qa as b,Sa as C,Ua as v,Va as YQ,Xa as AJ,_a as e,eb as B,hb as MJ,ib as L,pb as WQ}from"./chunk-1sw3e1ar.js";var r;function xJ(J){let Q=L.get().createCanvas(6,1),Z=Q.getContext("2d");return Z.fillStyle=J,Z.fillRect(0,0,6,1),Q}function qJ(){if(r!==void 0)return r;try{let J=xJ("#ff00ff"),Q=xJ("#ffff00"),X=L.get().createCanvas(6,1).getContext("2d");X.globalCompositeOperation="multiply",X.drawImage(J,0,0),X.drawImage(Q,2,0);let $=X.getImageData(2,0,1,1);if(!$)r=!1;else{let Y=$.data;r=Y[0]===255&&Y[1]===0&&Y[2]===0}}catch(J){r=!1}return r}var W={canvas:null,convertTintToImage:!1,cacheStepsPerColorChannel:8,canUseMultiply:qJ(),tintMethod:null,_canvasSourceCache:new WeakMap,_unpremultipliedCache:new WeakMap,getCanvasSource:(J)=>{let Q=J.source,Z=Q?.resource;if(!Z)return null;let X=Q.alphaMode==="premultiplied-alpha",$=Q.resourceWidth??Q.pixelWidth,Y=Q.resourceHeight??Q.pixelHeight,q=$!==Q.pixelWidth||Y!==Q.pixelHeight;if(X){if(Z instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&Z instanceof OffscreenCanvas){if(!q)return Z}let z=W._unpremultipliedCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas}if(Z instanceof Uint8Array||Z instanceof Uint8ClampedArray||Z instanceof Int8Array||Z instanceof Uint16Array||Z instanceof Int16Array||Z instanceof Uint32Array||Z instanceof Int32Array||Z instanceof Float32Array||Z instanceof ArrayBuffer){let z=W._canvasSourceCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas;let I=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),V=I.getContext("2d"),O=V.createImageData(Q.pixelWidth,Q.pixelHeight),K=O.data,_=Z instanceof ArrayBuffer?new Uint8Array(Z):new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength);if(Q.format==="bgra8unorm")for(let N=0;N<K.length&&N+3<_.length;N+=4)K[N]=_[N+2],K[N+1]=_[N+1],K[N+2]=_[N],K[N+3]=_[N+3];else K.set(_.subarray(0,K.length));return V.putImageData(O,0,0),W._canvasSourceCache.set(Q,{canvas:I,resourceId:Q._resourceId}),I}if(X){let z=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),I=z.getContext("2d",{willReadFrequently:!0});z.width=Q.pixelWidth,z.height=Q.pixelHeight,I.drawImage(Z,0,0);let V=I.getImageData(0,0,z.width,z.height),O=V.data;for(let K=0;K<O.length;K+=4){let _=O[K+3];if(_>0){let N=255/_;O[K]=Math.min(255,O[K]*N+0.5),O[K+1]=Math.min(255,O[K+1]*N+0.5),O[K+2]=Math.min(255,O[K+2]*N+0.5)}}return I.putImageData(V,0,0),W._unpremultipliedCache.set(Q,{canvas:z,resourceId:Q._resourceId}),z}if(q){let z=W._canvasSourceCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas;let I=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),V=I.getContext("2d");return I.width=Q.pixelWidth,I.height=Q.pixelHeight,V.drawImage(Z,0,0),W._canvasSourceCache.set(Q,{canvas:I,resourceId:Q._resourceId}),I}return Z},getTintedCanvas:(J,Q)=>{let Z=J.texture,X=u.shared.setValue(Q).toHex(),$=Z.tintCache||(Z.tintCache={}),Y=$[X],q=Z.source._resourceId;if(Y?.tintId===q)return Y;let z=Y&&"getContext"in Y?Y:L.get().createCanvas();if(W.tintMethod(Z,Q,z),z.tintId=q,W.convertTintToImage&&z.toDataURL!==void 0){let I=L.get().createImage();I.src=z.toDataURL(),I.tintId=q,$[X]=I}else $[X]=z;return $[X]},getTintedPattern:(J,Q)=>{let Z=u.shared.setValue(Q).toHex(),X=J.patternCache||(J.patternCache={}),$=J.source._resourceId,Y=X[Z];if(Y?.tintId===$)return Y;if(!W.canvas)W.canvas=L.get().createCanvas();return W.tintMethod(J,Q,W.canvas),Y=W.canvas.getContext("2d").createPattern(W.canvas,"repeat"),Y.tintId=$,X[Z]=Y,Y},applyPatternTransform:(J,Q,Z=!0)=>{if(!Q)return;let X=J;if(!X.setTransform)return;let $=globalThis.DOMMatrix;if(!$)return;let Y=new $([Q.a,Q.b,Q.c,Q.d,Q.tx,Q.ty]);X.setTransform(Z?Y.inverse():Y)},tintWithMultiply:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.fillStyle=u.shared.setValue(Q).toHex(),X.fillRect(0,0,I,V),X.globalCompositeOperation="multiply";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.globalCompositeOperation="destination-atop",X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore()},tintWithOverlay:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.globalCompositeOperation="copy",X.fillStyle=u.shared.setValue(Q).toHex(),X.fillRect(0,0,I,V),X.globalCompositeOperation="destination-atop";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore()},tintWithPerPixel:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.globalCompositeOperation="copy";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore();let K=Q>>16&255,_=Q>>8&255,N=Q&255,M=X.getImageData(0,0,I,V),R=M.data;for(let G=0;G<R.length;G+=4)R[G]=R[G]*K/255,R[G+1]=R[G+1]*_/255,R[G+2]=R[G+2]*N/255;X.putImageData(M,0,0)},_applyInverseRotation:(J,Q,Z,X)=>{let $=B.inv(Q),Y=B.uX($),q=B.uY($),z=B.vX($),I=B.vY($),V=-Math.min(0,Y*Z,z*X,Y*Z+z*X),O=-Math.min(0,q*Z,I*X,q*Z+I*X);J.transform(Y,q,z,I,V,O)}};W.tintMethod=W.canUseMultiply?W.tintWithMultiply:W.tintWithPerPixel;var PQ="#808080",zJ=new b,BQ=new b,bQ=new b,bJ=new b;function MQ(J,Q,Z){J.beginPath();for(let X=0;X<Z.length;X+=3){let $=Z[X]*2,Y=Z[X+1]*2,q=Z[X+2]*2;J.moveTo(Q[$],Q[$+1]),J.lineTo(Q[Y],Q[Y+1]),J.lineTo(Q[q],Q[q+1]),J.closePath()}J.fill()}function fQ(J){return`#${(J&16777215).toString(16).padStart(6,"0")}`}function TQ(J,Q,Z,X,$,Y){Y=Math.max(0,Math.min(Y,Math.min(X,$)/2)),J.moveTo(Q+Y,Z),J.lineTo(Q+X-Y,Z),J.quadraticCurveTo(Q+X,Z,Q+X,Z+Y),J.lineTo(Q+X,Z+$-Y),J.quadraticCurveTo(Q+X,Z+$,Q+X-Y,Z+$),J.lineTo(Q+Y,Z+$),J.quadraticCurveTo(Q,Z+$,Q,Z+$-Y),J.lineTo(Q,Z+Y),J.quadraticCurveTo(Q,Z,Q+Y,Z)}function IJ(J,Q){switch(Q.type){case"rectangle":{let Z=Q;J.rect(Z.x,Z.y,Z.width,Z.height);break}case"roundedRectangle":{let Z=Q;TQ(J,Z.x,Z.y,Z.width,Z.height,Z.radius);break}case"circle":{let Z=Q;J.arc(Z.x,Z.y,Z.radius,0,Math.PI*2);break}case"ellipse":{let Z=Q;if(J.ellipse)J.ellipse(Z.x,Z.y,Z.halfWidth,Z.halfHeight,0,0,Math.PI*2);else J.save(),J.translate(Z.x,Z.y),J.scale(Z.halfWidth,Z.halfHeight),J.arc(0,0,1,0,Math.PI*2),J.restore();break}case"triangle":{let Z=Q;J.moveTo(Z.x,Z.y),J.lineTo(Z.x2,Z.y2),J.lineTo(Z.x3,Z.y3),J.closePath();break}case"polygon":default:{let Z=Q,X=Z.points;if(!X?.length)break;J.moveTo(X[0],X[1]);for(let $=2;$<X.length;$+=2)J.lineTo(X[$],X[$+1]);if(Z.closePath)J.closePath();break}}}function AQ(J,Q){if(!Q?.length)return!1;for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(!X?.shape)continue;let $=X.transform,Y=$&&!$.isIdentity();if(Y)J.save(),J.transform($.a,$.b,$.c,$.d,$.tx,$.ty);if(IJ(J,X.shape),Y)J.restore()}return!0}function SQ(J,Q,Z,X){let $=J.fill;if($ instanceof iJ){$.buildGradient();let q=$.texture;if(q){let z=W.getTintedPattern(q,Q),I=Z?bJ.copyFrom(Z).scale(q.source.pixelWidth,q.source.pixelHeight):bJ.copyFrom($.transform);if(X&&!J.textureSpace)I.append(X);return W.applyPatternTransform(z,I),z}}if($ instanceof cJ){let q=W.getTintedPattern($.texture,Q);return W.applyPatternTransform(q,$.transform),q}let Y=J.texture;if(Y&&Y!==MJ.WHITE){if(!Y.source.resource)return PQ;let q=W.getTintedPattern(Y,Q),z=Z?bJ.copyFrom(Z).scale(Y.source.pixelWidth,Y.source.pixelHeight):J.matrix;return W.applyPatternTransform(q,z),q}return fQ(Q)}class WJ{constructor(){this.shader=null}contextChange(J){}execute(J,Q){let Z=J.renderer,X=Z.canvasContext,$=X.activeContext,Y=Q.groupTransform,q=Z.globalUniforms.globalUniformData?.worldColor??4294967295,z=Q.groupColorAlpha,I=(q>>>24&255)/255,V=(z>>>24&255)/255,O=Z.filter?.alphaMultiplier??1,K=I*V*O;if(K<=0)return;let _=q&16777215,N=z&16777215,M=OJ(e(N,_)),R=Z._roundPixels|Q._roundPixels;$.save(),X.setContextTransform(Y,R===1),X.setBlendMode(Q.groupBlendMode);let G=Q.context.instructions;for(let w=0;w<G.length;w++){let m=G[w];if(m.action==="texture"){let k=m.data,E=k.image,U=E?W.getCanvasSource(E):null;if(!U)continue;let g=k.alpha*K;if(g<=0)continue;let o=e(k.style,M);$.globalAlpha=g;let T=U;if(o!==16777215)T=W.getTintedCanvas({texture:E},o);let x=E.frame,p=E.source._resolution??E.source.resolution??1,D=x.x*p,S=x.y*p,ZJ=x.width*p,i=x.height*p;if(T!==U)D=0,S=0;let h=k.transform,l=h&&!h.isIdentity(),P=E.rotate;if(l||P){if(zJ.copyFrom(Y),l)zJ.append(h);if(P)B.matrixAppendRotationInv(zJ,P,k.dx,k.dy,k.dw,k.dh);X.setContextTransform(zJ,R===1)}else X.setContextTransform(Y,R===1);if($.drawImage(T,D,S,T===U?ZJ:T.width,T===U?i:T.height,P?0:k.dx,P?0:k.dy,k.dw,k.dh),l||P)X.setContextTransform(Y,R===1);continue}let c=m.data,QJ=c?.path?.shapePath;if(!QJ?.shapePrimitives?.length)continue;let f=c.style,_J=e(f.color,M),d=f.alpha*K;if(d<=0)continue;let A=m.action==="stroke";if($.globalAlpha=d,A){let k=f;$.lineWidth=k.width,$.lineCap=k.cap,$.lineJoin=k.join,$.miterLimit=k.miterLimit}let n=QJ.shapePrimitives;if(!A&&c.hole?.shapePath?.shapePrimitives?.length){let k=n[n.length-1];k.holes=c.hole.shapePath.shapePrimitives}for(let k=0;k<n.length;k++){let E=n[k];if(!E?.shape)continue;let U=E.transform,g=U&&!U.isIdentity(),o=f.texture&&f.texture!==MJ.WHITE,T=f.textureSpace==="global"?U:null,x=o?nJ(BQ,f,E.shape,T):null,p=g?bQ.copyFrom(Y).append(U):Y,D=SQ(f,_J,x,p);if(g)$.save(),$.transform(U.a,U.b,U.c,U.d,U.tx,U.ty);if(A){let S=f;if(S.alignment!==0.5&&!S.pixelLine){let i=[],h=[],l=[];if(oJ[E.shape.type]?.build(E.shape,i)){let F=E.shape.closePath??!0;pJ(i,S,!1,F,h,l),$.fillStyle=D,MQ($,h,l)}else $.strokeStyle=D,$.beginPath(),IJ($,E.shape),$.stroke()}else $.strokeStyle=D,$.beginPath(),IJ($,E.shape),$.stroke()}else if($.fillStyle=D,$.beginPath(),IJ($,E.shape),AQ($,E.holes))$.fill("evenodd");else $.fill();if(g)$.restore()}}$.restore()}destroy(){this.shader=null}}WJ.extension={type:[H.CanvasPipesAdaptor],name:"graphics"};var fJ=class J{static _getPatternRepeat(Q,Z){let X=Q&&Q!=="clamp-to-edge",$=Z&&Z!=="clamp-to-edge";if(X&&$)return"repeat";if(X)return"repeat-x";if($)return"repeat-y";return"no-repeat"}start(Q,Z,X){}execute(Q,Z){let X=Z.elements;if(!X||!X.length)return;let $=Q.renderer,Y=$.canvasContext,q=Y.activeContext;for(let z=0;z<X.length;z++){let I=X[z];if(!I.packAsQuad)continue;let V=I,O=V.texture,K=O?W.getCanvasSource(O):null;if(!K)continue;let _=O.source.style,N=Y.smoothProperty,M=_.scaleMode!=="nearest";if(q[N]!==M)q[N]=M;Y.setBlendMode(Z.blendMode);let R=$.globalUniforms.globalUniformData?.worldColor??4294967295,G=V.color,w=(R>>>24&255)/255,m=(G>>>24&255)/255,c=$.filter?.alphaMultiplier??1,QJ=w*m*c;if(QJ<=0)continue;q.globalAlpha=QJ;let f=R&16777215,_J=G&16777215,d=OJ(e(_J,f)),A=O.frame,n=_.addressModeU??_.addressMode,k=_.addressModeV??_.addressMode,E=J._getPatternRepeat(n,k),U=O.source._resolution??O.source.resolution??1,g=V.renderable?.renderGroup?.isCachedAsTexture,o=A.x*U,T=A.y*U,x=A.width*U,p=A.height*U,D=V.bounds,S=$.renderTarget.renderTarget.isRoot,ZJ=D.minX,i=D.minY,h=D.maxX-D.minX,l=D.maxY-D.minY,P=O.rotate,F=O.uvs,GQ=Math.min(F.x0,F.x1,F.x2,F.x3,F.y0,F.y1,F.y2,F.y3),wQ=Math.max(F.x0,F.x1,F.x2,F.x3,F.y0,F.y1,F.y2,F.y3),yJ=E!=="no-repeat"&&(GQ<0||wQ>1),RJ=P&&!(!yJ&&(d!==16777215||P));if(RJ)J._tempPatternMatrix.copyFrom(V.transform),B.matrixAppendRotationInv(J._tempPatternMatrix,P,ZJ,i,h,l),Y.setContextTransform(J._tempPatternMatrix,V.roundPixels===1,void 0,g&&S);else Y.setContextTransform(V.transform,V.roundPixels===1,void 0,g&&S);let XJ=RJ?0:ZJ,YJ=RJ?0:i,GJ=h,wJ=l;if(yJ){let DJ=K,s=d!==16777215&&!P,a=A.width<=O.source.width&&A.height<=O.source.height;if(s&&a)DJ=W.getTintedCanvas({texture:O},d);let LJ=q.createPattern(DJ,E);if(!LJ)continue;let CJ=GJ,vJ=wJ;if(CJ===0||vJ===0)continue;let mJ=1/CJ,gJ=1/vJ,hJ=(F.x1-F.x0)*mJ,lJ=(F.y1-F.y0)*mJ,uJ=(F.x3-F.x0)*gJ,dJ=(F.y3-F.y0)*gJ,DQ=F.x0-hJ*XJ-uJ*YJ,LQ=F.y0-lJ*XJ-dJ*YJ,PJ=O.source.pixelWidth,BJ=O.source.pixelHeight;J._tempPatternMatrix.set(hJ*PJ,lJ*BJ,uJ*PJ,dJ*BJ,DQ*PJ,LQ*BJ),W.applyPatternTransform(LJ,J._tempPatternMatrix),q.fillStyle=LJ,q.fillRect(XJ,YJ,GJ,wJ)}else{let s=d!==16777215||P?W.getTintedCanvas({texture:O},d):K,a=s!==K;q.drawImage(s,a?0:o,a?0:T,a?s.width:x,a?s.height:p,XJ,YJ,GJ,wJ)}}}};fJ._tempPatternMatrix=new b;fJ.extension={type:[H.CanvasPipesAdaptor],name:"batch"};var sJ=fJ;class VJ{constructor(J){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=J}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(J,Q,Z){this._renderer.renderPipes.batch.break(Z);let X=this._colorStack;X[this._colorStackIndex]=X[this._colorStackIndex-1]&J.mask;let $=this._colorStack[this._colorStackIndex];if($!==this._currentColor)this._currentColor=$,Z.add({renderPipeId:"colorMask",colorMask:$,canBundle:!1});this._colorStackIndex++}pop(J,Q,Z){this._renderer.renderPipes.batch.break(Z);let X=this._colorStack;this._colorStackIndex--;let $=X[this._colorStackIndex-1];if($!==this._currentColor)this._currentColor=$,Z.add({renderPipeId:"colorMask",colorMask:$,canBundle:!1})}execute(J){}destroy(){this._renderer=null,this._colorStack=null}}VJ.extension={type:[H.CanvasPipes],name:"colorMask"};class rJ{constructor(){this.isBatchable=!1}reset(){if(this.isBatchable=!1,this.context=null,this.graphicsData)this.graphicsData.destroy(),this.graphicsData=null}destroy(){this.reset()}}class eJ{constructor(){this.instructions=new aJ}init(){this.instructions.reset()}destroy(){this.instructions.destroy(),this.instructions=null}}var TJ=class J{constructor(Q){this._renderer=Q,this._managedContexts=new t({renderer:Q,type:"resource",name:"graphicsContext"})}init(Q){J.defaultOptions.bezierSmoothness=Q?.bezierSmoothness??J.defaultOptions.bezierSmoothness}getContextRenderData(Q){return this.getGpuContext(Q).graphicsData||this._initContextRenderData(Q)}updateGpuContext(Q){let Z=Q._gpuData,X=!!Z[this._renderer.uid],$=Z[this._renderer.uid]||this._initContext(Q);if(Q.dirty||!X){if(X)$.reset();$.isBatchable=!1,Q.dirty=!1}return $}getGpuContext(Q){return Q._gpuData[this._renderer.uid]||this._initContext(Q)}_initContextRenderData(Q){let Z=new eJ,X=this.getGpuContext(Q);return X.graphicsData=Z,Z.init(),Z}_initContext(Q){let Z=new rJ;return Z.context=Q,Q._gpuData[this._renderer.uid]=Z,this._managedContexts.add(Q),Z}destroy(){this._managedContexts.destroy(),this._renderer=null}};TJ.extension={type:[H.CanvasSystem],name:"graphicsContext"};TJ.defaultOptions={bezierSmoothness:0.5};var tJ=TJ;class FJ{constructor(J,Q){this.state=KJ.for2d(),this.renderer=J,this._adaptor=Q,this.renderer.runners.contextChange.add(this),this._managedGraphics=new t({renderer:J,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(J){return!1}addRenderable(J,Q){this._managedGraphics.add(J),this.renderer.renderPipes.batch.break(Q),Q.add(J)}updateRenderable(J){}execute(J){if(!J.isRenderable)return;this._adaptor.execute(this,J)}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null}}FJ.extension={type:[H.CanvasPipes],name:"graphics"};class ZQ{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach((J)=>{AJ.return(J)}),this.batches.length=0}}class HJ{constructor(J,Q){this.state=KJ.for2d(),this.renderer=J,this._adaptor=Q,this.renderer.runners.contextChange.add(this),this._managedGraphics=new t({renderer:J,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(J){let Q=J.context,Z=!!J._gpuData,$=this.renderer.graphicsContext.updateGpuContext(Q);if($.isBatchable||Z!==$.isBatchable)return!0;return!1}addRenderable(J,Q){let X=this.renderer.graphicsContext.updateGpuContext(J.context);if(J.didViewUpdate)this._rebuild(J);if(X.isBatchable)this._addToBatcher(J,Q);else this.renderer.renderPipes.batch.break(Q),Q.add(J)}updateRenderable(J){let Z=this._getGpuDataForRenderable(J).batches;for(let X=0;X<Z.length;X++){let $=Z[X];$._batcher.updateElement($)}}execute(J){if(!J.isRenderable)return;let Q=this.renderer,Z=J.context;if(!Q.graphicsContext.getGpuContext(Z).batches.length)return;let $=Z.customShader||this._adaptor.shader;this.state.blendMode=J.groupBlendMode;let Y=$.resources.localUniforms.uniforms;Y.uTransformMatrix=J.groupTransform,Y.uRound=Q._roundPixels|J._roundPixels,JQ(J.groupColorAlpha,Y.uColor,0),this._adaptor.execute(this,J)}_rebuild(J){let Q=this._getGpuDataForRenderable(J),X=this.renderer.graphicsContext.updateGpuContext(J.context);if(Q.destroy(),X.isBatchable)this._updateBatchesForRenderable(J,Q)}_addToBatcher(J,Q){let Z=this.renderer.renderPipes.batch,X=this._getGpuDataForRenderable(J).batches;for(let $=0;$<X.length;$++){let Y=X[$];Z.addToBatch(Y,Q)}}_getGpuDataForRenderable(J){return J._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(J)}_initGpuDataForRenderable(J){let Q=new ZQ;return J._gpuData[this.renderer.uid]=Q,this._managedGraphics.add(J),Q}_updateBatchesForRenderable(J,Q){let Z=J.context,$=this.renderer.graphicsContext.getGpuContext(Z),Y=this.renderer._roundPixels|J._roundPixels;Q.batches=$.batches.map((q)=>{let z=AJ.get(QQ);return q.copyTo(z),z.renderable=J,z.roundPixels=Y,z})}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}}HJ.extension={type:[H.WebGLPipes,H.WebGPUPipes],name:"graphics"};y.add(FJ);y.add(HJ);y.add(tJ);y.add($Q);class $J extends XQ{constructor(J){if(J instanceof JJ)J={context:J};let{context:Q,roundPixels:Z,...X}=J||{};super({label:"Graphics",...X});if(this.renderPipeId="graphics",!Q)this.context=this._ownedContext=new JJ,this.context.autoGarbageCollect=this.autoGarbageCollect;else this.context=Q;this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=Z??!1}set context(J){if(J===this._context)return;if(this._context)this._context.off("update",this.onViewUpdate,this),this._context.off("unload",this.unload,this);this._context=J,this._context.on("update",this.onViewUpdate,this),this._context.on("unload",this.unload,this),this.onViewUpdate()}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(J){return this._context.containsPoint(J)}destroy(J){if(this._ownedContext&&!J)this._ownedContext.destroy(J);else if(J===!0||J?.context===!0)this._context.destroy(J);this._ownedContext=null,this._context=null,super.destroy(J)}_onTouch(J){this._gcLastUsed=J,this._context._gcLastUsed=J}_callContextMethod(J,Q){return this.context[J](...Q),this}setFillStyle(...J){return this._callContextMethod("setFillStyle",J)}setStrokeStyle(...J){return this._callContextMethod("setStrokeStyle",J)}fill(...J){return this._callContextMethod("fill",J)}stroke(...J){return this._callContextMethod("stroke",J)}texture(...J){return this._callContextMethod("texture",J)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...J){return this._callContextMethod("arc",J)}arcTo(...J){return this._callContextMethod("arcTo",J)}arcToSvg(...J){return this._callContextMethod("arcToSvg",J)}bezierCurveTo(...J){return this._callContextMethod("bezierCurveTo",J)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...J){return this._callContextMethod("ellipse",J)}circle(...J){return this._callContextMethod("circle",J)}path(...J){return this._callContextMethod("path",J)}lineTo(...J){return this._callContextMethod("lineTo",J)}moveTo(...J){return this._callContextMethod("moveTo",J)}quadraticCurveTo(...J){return this._callContextMethod("quadraticCurveTo",J)}rect(...J){return this._callContextMethod("rect",J)}roundRect(...J){return this._callContextMethod("roundRect",J)}poly(...J){return this._callContextMethod("poly",J)}regularPoly(...J){return this._callContextMethod("regularPoly",J)}roundPoly(...J){return this._callContextMethod("roundPoly",J)}roundShape(...J){return this._callContextMethod("roundShape",J)}filletRect(...J){return this._callContextMethod("filletRect",J)}chamferRect(...J){return this._callContextMethod("chamferRect",J)}star(...J){return this._callContextMethod("star",J)}svg(...J){return this._callContextMethod("svg",J)}restore(...J){return this._callContextMethod("restore",J)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...J){return this._callContextMethod("rotate",J)}scaleTransform(...J){return this._callContextMethod("scale",J)}setTransform(...J){return this._callContextMethod("setTransform",J)}transform(...J){return this._callContextMethod("transform",J)}translateTransform(...J){return this._callContextMethod("translate",J)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(J){this._context.fillStyle=J}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(J){this._context.strokeStyle=J}clone(J=!1){if(J)return new $J(this._context.clone());return this._ownedContext=null,new $J(this._context)}lineStyle(J,Q,Z){v(C,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");let X={};return J&&(X.width=J),Q&&(X.color=Q),Z&&(X.alpha=Z),this.context.strokeStyle=X,this}beginFill(J,Q){v(C,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");let Z={};if(J!==void 0)Z.color=J;if(Q!==void 0)Z.alpha=Q;return this.context.fillStyle=Z,this}endFill(){v(C,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();let J=this.context.strokeStyle;if(J.width!==JJ.defaultStrokeStyle.width||J.color!==JJ.defaultStrokeStyle.color||J.alpha!==JJ.defaultStrokeStyle.alpha)this.context.stroke();return this}drawCircle(...J){return v(C,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",J)}drawEllipse(...J){return v(C,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",J)}drawPolygon(...J){return v(C,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",J)}drawRect(...J){return v(C,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",J)}drawRoundedRect(...J){return v(C,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",J)}drawStar(...J){return v(C,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",J)}}function yQ(J,Q,Z,X,$,Y){Y=Math.max(0,Math.min(Y,Math.min(X,$)/2)),J.moveTo(Q+Y,Z),J.lineTo(Q+X-Y,Z),J.quadraticCurveTo(Q+X,Z,Q+X,Z+Y),J.lineTo(Q+X,Z+$-Y),J.quadraticCurveTo(Q+X,Z+$,Q+X-Y,Z+$),J.lineTo(Q+Y,Z+$),J.quadraticCurveTo(Q,Z+$,Q,Z+$-Y),J.lineTo(Q,Z+Y),J.quadraticCurveTo(Q,Z,Q+Y,Z)}function qQ(J,Q){switch(Q.type){case"rectangle":{let Z=Q;J.rect(Z.x,Z.y,Z.width,Z.height);break}case"roundedRectangle":{let Z=Q;yQ(J,Z.x,Z.y,Z.width,Z.height,Z.radius);break}case"circle":{let Z=Q;J.moveTo(Z.x+Z.radius,Z.y),J.arc(Z.x,Z.y,Z.radius,0,Math.PI*2);break}case"ellipse":{let Z=Q;if(J.ellipse)J.moveTo(Z.x+Z.halfWidth,Z.y),J.ellipse(Z.x,Z.y,Z.halfWidth,Z.halfHeight,0,0,Math.PI*2);else J.save(),J.translate(Z.x,Z.y),J.scale(Z.halfWidth,Z.halfHeight),J.moveTo(1,0),J.arc(0,0,1,0,Math.PI*2),J.restore();break}case"triangle":{let Z=Q;J.moveTo(Z.x,Z.y),J.lineTo(Z.x2,Z.y2),J.lineTo(Z.x3,Z.y3),J.closePath();break}case"polygon":default:{let Z=Q,X=Z.points;if(!X?.length)break;J.moveTo(X[0],X[1]);for(let $=2;$<X.length;$+=2)J.lineTo(X[$],X[$+1]);if(Z.closePath)J.closePath();break}}}function CQ(J,Q){if(!Q?.length)return!1;for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(!X?.shape)continue;let $=X.transform,Y=$&&!$.isIdentity();if(Y)J.save(),J.transform($.a,$.b,$.c,$.d,$.tx,$.ty);if(qQ(J,X.shape),Y)J.restore()}return!0}class jJ{constructor(J){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=J}push(J,Q,Z){this._renderer.renderPipes.batch.break(Z),Z.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:J,inverse:Q._maskOptions.inverse,canBundle:!1})}pop(J,Q,Z){this._renderer.renderPipes.batch.break(Z),Z.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:J,inverse:Q._maskOptions.inverse,canBundle:!1})}execute(J){if(J.action!=="pushMaskBegin"&&J.action!=="popMaskEnd")return;let Q=this._renderer,Z=Q.canvasContext,X=Z?.activeContext;if(!X)return;if(J.action==="popMaskEnd"){if(this._canvasMaskStack.pop())X.restore();return}if(J.inverse)this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");let $=J.mask.mask;if(!($ instanceof $J)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}let Y=$,q=Y.context?.instructions;if(!q?.length){this._canvasMaskStack.push(!1);return}X.save(),Z.setContextTransform(Y.groupTransform,(Q._roundPixels|Y._roundPixels)===1),X.beginPath();let z=!1,I=!1;for(let V=0;V<q.length;V++){let O=q[V],K=O.action;if(K!=="fill"&&K!=="stroke")continue;let N=O.data?.path?.shapePath;if(!N?.shapePrimitives?.length)continue;let M=N.shapePrimitives;for(let R=0;R<M.length;R++){let G=M[R];if(!G?.shape)continue;let w=G.transform,m=w&&!w.isIdentity();if(m)X.save(),X.transform(w.a,w.b,w.c,w.d,w.tx,w.ty);if(qQ(X,G.shape),I=CQ(X,G.holes)||I,z=!0,m)X.restore()}}if(!z){X.restore(),this._canvasMaskStack.push(!1);return}if(I)X.clip("evenodd");else X.clip();this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(J,Q){if(this._warnedMaskTypes.has(J))return;this._warnedMaskTypes.add(J),YQ(Q)}}jJ.extension={type:[H.CanvasPipes],name:"stencilMask"};var j="source-over";function zQ(){let J=qJ(),Q=Object.create(null);return Q.inherit=j,Q.none=j,Q.normal="source-over",Q.add="lighter",Q.multiply=J?"multiply":j,Q.screen=J?"screen":j,Q.overlay=J?"overlay":j,Q.darken=J?"darken":j,Q.lighten=J?"lighten":j,Q["color-dodge"]=J?"color-dodge":j,Q["color-burn"]=J?"color-burn":j,Q["hard-light"]=J?"hard-light":j,Q["soft-light"]=J?"soft-light":j,Q.difference=J?"difference":j,Q.exclusion=J?"exclusion":j,Q.saturation=J?"saturation":j,Q.color=J?"color":j,Q.luminosity=J?"luminosity":j,Q["linear-burn"]=J?"color-burn":j,Q["linear-dodge"]=J?"color-dodge":j,Q["linear-light"]=J?"hard-light":j,Q["pin-light"]=J?"hard-light":j,Q["vivid-light"]=J?"hard-light":j,Q["hard-mix"]=j,Q.negation=J?"difference":j,Q["normal-npm"]=Q.normal,Q["add-npm"]=Q.add,Q["screen-npm"]=Q.screen,Q.erase="destination-out",Q.subtract=j,Q.divide=j,Q.min=j,Q.max=j,Q}var vQ=new b;class NJ{constructor(J){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=zQ(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=J}resolutionChange(J){this.activeResolution=J}init(){let J=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:J}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){let Q=this.rootContext;if(Q.webkitImageSmoothingEnabled)this.smoothProperty="webkitImageSmoothingEnabled";else if(Q.mozImageSmoothingEnabled)this.smoothProperty="mozImageSmoothingEnabled";else if(Q.oImageSmoothingEnabled)this.smoothProperty="oImageSmoothingEnabled";else if(Q.msImageSmoothingEnabled)this.smoothProperty="msImageSmoothingEnabled"}}setContextTransform(J,Q,Z,X){let $=X?b.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||b.IDENTITY,Y=vQ;Y.copyFrom($),Y.append(J);let q=this._projTransform,z=this.activeResolution;if(Z=Z||z,q){let I=b.shared;I.copyFrom(Y),I.prepend(q),Y=I}if(Q)this.activeContext.setTransform(Y.a*Z,Y.b*Z,Y.c*Z,Y.d*Z,Y.tx*z|0,Y.ty*z|0);else this.activeContext.setTransform(Y.a*Z,Y.b*Z,Y.c*Z,Y.d*Z,Y.tx*z,Y.ty*z)}clear(J,Q){let Z=this.activeContext,X=this._renderer;if(Z.clearRect(0,0,X.width,X.height),J){let $=u.shared.setValue(J);Z.globalAlpha=Q??$.alpha,Z.fillStyle=$.toHex(),Z.fillRect(0,0,X.width,X.height),Z.globalAlpha=1}}setBlendMode(J){if(this._activeBlendMode===J)return;this._activeBlendMode=J,this._outerBlend=!1;let Q=this.blendModes[J];if(!Q){if(!this._warnedBlendModes.has(J))console.warn(`CanvasRenderer: blend mode "${J}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(J);this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=Q}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}NJ.extension={type:[H.CanvasSystem],name:"canvasContext"};class kJ{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}kJ.extension={type:[H.CanvasSystem],name:"limits"};class SJ{init(J,Q){this._renderer=J,this._renderTargetSystem=Q}initGpuRenderTarget(J){let Q=J.colorTexture,{canvas:Z,context:X}=this._ensureCanvas(Q);return{canvas:Z,context:X,width:Z.width,height:Z.height}}resizeGpuRenderTarget(J){let Q=J.colorTexture,{canvas:Z}=this._ensureCanvas(Q);Z.width=J.pixelWidth,Z.height=J.pixelHeight}startRenderPass(J,Q,Z,X){let $=this._renderTargetSystem.getGpuRenderTarget(J);if(this._renderer.canvasContext.activeContext=$.context,this._renderer.canvasContext.activeResolution=J.resolution,Q)this.clear(J,Q,Z,X)}clear(J,Q,Z,X){let Y=this._renderTargetSystem.getGpuRenderTarget(J).context,q=X||{x:0,y:0,width:J.pixelWidth,height:J.pixelHeight};if(Y.setTransform(1,0,0,1,0,0),Y.clearRect(q.x,q.y,q.width,q.height),Z){let z=u.shared.setValue(Z);if(z.alpha>0)Y.globalAlpha=z.alpha,Y.fillStyle=z.toHex(),Y.fillRect(q.x,q.y,q.width,q.height),Y.globalAlpha=1}}finishRenderPass(){}copyToTexture(J,Q,Z,X,$){let q=this._renderTargetSystem.getGpuRenderTarget(J).canvas,z=Q.source,{context:I}=this._ensureCanvas(z),V=$?.x??0,O=$?.y??0;return I.drawImage(q,Z.x,Z.y,X.width,X.height,V,O,X.width,X.height),z.update(),Q}destroyGpuRenderTarget(J){}_ensureCanvas(J){let Q=J.resource;if(!Q||!IQ.test(Q))Q=L.get().createCanvas(J.pixelWidth,J.pixelHeight),J.resource=Q;if(Q.width!==J.pixelWidth||Q.height!==J.pixelHeight)Q.width=J.pixelWidth,Q.height=J.pixelHeight;let Z=Q.getContext("2d");return{canvas:Q,context:Z}}}class EJ extends OQ{constructor(J){super(J);this.adaptor=new SJ,this.adaptor.init(J,this)}}EJ.extension={type:[H.CanvasSystem],name:"renderTarget"};class UJ{constructor(J){}init(){}initSource(J){}generateCanvas(J){let Q=L.get().createCanvas(),Z=Q.getContext("2d"),X=W.getCanvasSource(J);if(!X)return Q;let $=J.frame,Y=J.source._resolution??J.source.resolution??1,q=$.x*Y,z=$.y*Y,I=$.width*Y,V=$.height*Y;return Q.width=Math.ceil(I),Q.height=Math.ceil(V),Z.drawImage(X,q,z,I,V,0,0,I,V),Q}getPixels(J){let Q=this.generateCanvas(J);return{pixels:Q.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,Q.width,Q.height).data,width:Q.width,height:Q.height}}destroy(){}}UJ.extension={type:[H.CanvasSystem],name:"texture"};var mQ=[...EQ,NJ,kJ,UJ,EJ],gQ=[kQ,jQ,HQ,FQ,NQ,jJ,VJ,KQ],hQ=[sJ,WJ],UQ=[],_Q=[],RQ=[];y.handleByNamedList(H.CanvasSystem,UQ);y.handleByNamedList(H.CanvasPipes,_Q);y.handleByNamedList(H.CanvasPipesAdaptor,RQ);y.add(...mQ,...gQ,...hQ);class lQ extends VQ{constructor(){let J={name:"canvas",type:WQ.CANVAS,systems:UQ,renderPipes:_Q,renderPipeAdaptors:RQ};super(J)}}export{$J as v,lQ as w};
@@ -0,0 +1 @@
1
+ import{e as d,f}from"./chunk-5v6x1wpn.js";import{Ka as b}from"./chunk-1sw3e1ar.js";b.add(f);b.add(d);
@@ -0,0 +1,2 @@
1
+ import{Wa as I,ab as F,ib as J}from"./chunk-1sw3e1ar.js";class K{constructor(f){this._canvasPool=Object.create(null),this.canvasOptions=f||{},this.enableFullScreen=!1}_createCanvasAndContext(f,q){let z=J.get().createCanvas();z.width=f,z.height=q;let B=z.getContext("2d");return{canvas:z,context:B}}getOptimalCanvasAndContext(f,q,z=1){f=Math.ceil(f*z-0.000001),q=Math.ceil(q*z-0.000001),f=F(f),q=F(q);let B=(f<<17)+(q<<1);if(!this._canvasPool[B])this._canvasPool[B]=[];let E=this._canvasPool[B].pop();if(!E)E=this._createCanvasAndContext(f,q);return E}returnCanvasAndContext(f){let q=f.canvas,{width:z,height:B}=q,E=(z<<17)+(B<<1);f.context.resetTransform(),f.context.clearRect(0,0,z,B),this._canvasPool[E].push(f)}clear(){this._canvasPool={}}}var L=new K;I.register(L);
2
+ export{L as ha};