@omnimedia/omnitool
Version:
open source video processing tools
156 lines (148 loc) • 68.1 kB
JavaScript
import{c as q,e as Ce,f as Ge,g as Q,h as Fe,i as Pe,k as J,l as Me,m as Oe}from"./chunk-Y2VKPF3Q.js";import{b as $,c as Ae,n as De,o as Ue,p as Le}from"./chunk-GT46VDWY.js";import{u as j,v as g}from"./chunk-TT2DOKKC.js";import{c as z,e as Be,g as ye,i as Z,k as B,l as Ne,m as Ie,o as v}from"./chunk-LFJVYUTB.js";import{D as x,E,H as Re,I as K,L as ge,M as T,N as R,O as Y,Q as ve,d as _,e as A,k,p as d,s as me,z as W}from"./chunk-ERLCDDYH.js";var y=class{contextChange(e){let r=new T({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new k,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),i=e.limits.maxBatchableTextures,s=z({name:"graphics",bits:[Be,ye(i),q,Z]});this.shader=new R({glProgram:s,resources:{localUniforms:r,batchSamplers:Ie(i)}})}execute(e,r){let i=r.context,s=i.customShader||this.shader,n=e.renderer,o=n.graphicsContext,{batcher:a,instructions:c}=o.getContextRenderData(i);s.groups[0]=n.globalUniforms.bindGroup,n.state.set(e.state),n.shader.bind(s),n.geometry.bind(a.geometry,s.glProgram);let u=c.instructions;for(let f=0;f<c.instructionSize;f++){let m=u[f];if(m.size){for(let l=0;l<m.textures.count;l++)n.texture.bind(m.textures.textures[l],l);n.geometry.draw(m.topology,m.size,m.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}};y.extension={type:[_.WebGLPipesAdaptor],name:"graphics"};var C=class{init(){let e=z({name:"mesh",bits:[q,Ce,Z]});this._shader=new R({glProgram:e,resources:{uTexture:x.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new k}}}})}execute(e,r){let i=e.renderer,s=r._shader;if(s){if(!s.glProgram){d("Mesh shader has no glProgram",r.shader);return}}else{s=this._shader;let n=r.texture,o=n.source;s.resources.uTexture=o,s.resources.uSampler=o.style,s.resources.textureUniforms.uniforms.uTextureMatrix=n.textureMatrix.mapCoord}s.groups[100]=i.globalUniforms.bindGroup,s.groups[101]=e.localUniformsBindGroup,i.encoder.draw({geometry:r._geometry,shader:s,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}};C.extension={type:[_.WebGLPipesAdaptor],name:"mesh"};var N=class{constructor(){this._tempState=g.for2d(),this._didUploadHash={}}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(e,r,i){let s=e.renderer,n=this._didUploadHash[i.uid];s.shader.bind(i,n),n||(this._didUploadHash[i.uid]=!0),s.shader.updateUniformGroup(s.globalUniforms.uniformGroup),s.geometry.bind(r,i.glProgram)}execute(e,r){let i=e.renderer;this._tempState.blendMode=r.blendMode,i.state.set(this._tempState);let s=r.textures.textures;for(let n=0;n<r.textures.count;n++)i.texture.bind(s[n],n);i.geometry.draw(r.topology,r.size,r.start)}};N.extension={type:[_.WebGLPipesAdaptor],name:"batch"};var I=(t=>(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(I||{});var ee=class{constructor(e,r){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=r}destroy(){this.buffer=null,this.updateID=-1,this.byteLength=-1,this.type=-1,this._lastBindBaseLocation=-1,this._lastBindCallId=-1}};var D=class{constructor(e){this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=e,this._managedBuffers=new v({renderer:e,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(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this.createGLBuffer(e)}bind(e){let{_gl:r}=this,i=this.getGlBuffer(e);r.bindBuffer(i.type,i.buffer)}bindBufferBase(e,r){let{_gl:i}=this;this._boundBufferBases[r]!==e&&(this._boundBufferBases[r]=e,e._lastBindBaseLocation=r,i.bindBufferBase(i.UNIFORM_BUFFER,r,e.buffer))}nextBindBase(e){this._bindCallId++,this._minBaseLocation=0,e&&(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1&&(this._nextBindBaseIndex=1))}freeLocationForBufferBase(e){let r=this.getLastBindBaseLocation(e);if(r>=this._minBaseLocation)return e._lastBindCallId=this._bindCallId,r;let i=0,s=this._nextBindBaseIndex;for(;i<2;){s>=this._maxBindings&&(s=this._minBaseLocation,i++);let n=this._boundBufferBases[s];if(n&&n._lastBindCallId===this._bindCallId){s++;continue}break}return r=s,this._nextBindBaseIndex=s+1,i>=2?-1:(e._lastBindCallId=this._bindCallId,this._boundBufferBases[r]=null,r)}getLastBindBaseLocation(e){let r=e._lastBindBaseLocation;return this._boundBufferBases[r]===e?r:-1}bindBufferRange(e,r,i,s){let{_gl:n}=this;i||(i=0),r||(r=0),this._boundBufferBases[r]=null,n.bindBufferRange(n.UNIFORM_BUFFER,r||0,e.buffer,i*256,s||256)}updateBuffer(e){let{_gl:r}=this,i=this.getGlBuffer(e);if(e._updateID===i.updateID)return i;i.updateID=e._updateID,r.bindBuffer(i.type,i.buffer);let s=e.data,n=e.descriptor.usage&Y.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;return s?i.byteLength>=s.byteLength?r.bufferSubData(i.type,0,s,0,e._updateSize/s.BYTES_PER_ELEMENT):(i.byteLength=s.byteLength,r.bufferData(i.type,s,n)):(i.byteLength=e.descriptor.size,r.bufferData(i.type,i.byteLength,n)),i}destroyAll(e=!1){this._managedBuffers.removeAll(e)}onBufferUnload(e,r=!1){let i=e._gpuData[this._renderer.uid];i&&(r||this._gl.deleteBuffer(i.buffer))}createGLBuffer(e){let{_gl:r}=this,i=I.ARRAY_BUFFER;e.descriptor.usage&Y.INDEX?i=I.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&Y.UNIFORM&&(i=I.UNIFORM_BUFFER);let s=new ee(r.createBuffer(),i);return e._gpuData[this._renderer.uid]=s,this._managedBuffers.add(e),s}resetState(){this._boundBufferBases=Object.create(null)}};D.extension={type:[_.WebGLSystem],name:"buffer"};var _e=class we{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,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(e){this.gl=e,this._renderer.gl=e}init(e){e={...we.defaultOptions,...e};let r=this.multiView=e.multiView;if(e.context&&r&&(d("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),r=!1),r?this.canvas=E.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,e.context)this.initFromContext(e.context);else{let i=this._renderer.background.alpha<1,s=e.premultipliedAlpha??!0,n=e.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(e.preferWebGLVersion,{alpha:i,premultipliedAlpha:s,antialias:n,stencil:!0,preserveDrawingBuffer:e.preserveDrawingBuffer,powerPreference:e.powerPreference??"default"})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&d("multiView is disabled, but targetCanvas is not the main canvas");return}let{canvas:r}=this;(r.width<e.width||r.height<e.height)&&(r.width=Math.max(e.width,e.width),r.height=Math.max(e.height,e.height))}initFromContext(e){this.gl=e,this.webGLVersion=e instanceof E.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(e),this._renderer.runners.contextChange.emit(e);let r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(e,r){let i,s=this.canvas;if(e===2&&(i=s.getContext("webgl2",r)),!i&&(i=s.getContext("webgl",r),!i))throw new Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=i,this.initFromContext(this.gl)}getExtensions(){let{gl:e}=this,r={anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc"),rgtc:e.getExtension("EXT_texture_compression_rgtc"),loseContext:e.getExtension("WEBGL_lose_context")};if(this.webGLVersion===1)this.extensions={...r,drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:e.getExtension("ANGLE_instanced_arrays"),srgb:e.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:e.getExtension("EXT_color_buffer_float")};let i=e.getExtension("WEBGL_provoking_vertex");i&&i.provokingVertexWEBGL(i.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(e){e.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){let e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(e){let r=e.getContextAttributes();r&&!r.stencil&&d("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let i=this.supports,s=this.webGLVersion===2,n=this.extensions;i.uint32Indices=s||!!n.uint32ElementIndex,i.uniformBufferObject=s,i.vertexArrayObject=s||!!n.vertexArrayObject,i.srgbTextures=s||!!n.srgb,i.nonPowOf2wrapping=s,i.nonPowOf2mipmaps=s,i.msaa=s,i.uint32Indices||d("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};_e.extension={type:[_.WebGLSystem],name:"context"};_e.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};var He=_e;var te=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(te||{}),U=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(U||{});var h=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(h||{});var Ve={uint8x2:h.UNSIGNED_BYTE,uint8x4:h.UNSIGNED_BYTE,sint8x2:h.BYTE,sint8x4:h.BYTE,unorm8x2:h.UNSIGNED_BYTE,unorm8x4:h.UNSIGNED_BYTE,snorm8x2:h.BYTE,snorm8x4:h.BYTE,uint16x2:h.UNSIGNED_SHORT,uint16x4:h.UNSIGNED_SHORT,sint16x2:h.SHORT,sint16x4:h.SHORT,unorm16x2:h.UNSIGNED_SHORT,unorm16x4:h.UNSIGNED_SHORT,snorm16x2:h.SHORT,snorm16x4:h.SHORT,float16x2:h.HALF_FLOAT,float16x4:h.HALF_FLOAT,float32:h.FLOAT,float32x2:h.FLOAT,float32x3:h.FLOAT,float32x4:h.FLOAT,uint32:h.UNSIGNED_INT,uint32x2:h.UNSIGNED_INT,uint32x3:h.UNSIGNED_INT,uint32x4:h.UNSIGNED_INT,sint32:h.INT,sint32x2:h.INT,sint32x3:h.INT,sint32x4:h.INT};function Xe(t){return Ve[t]??Ve.float32}var At={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5},le=class{constructor(){this.vaoCache=Object.create(null)}destroy(){this.vaoCache=Object.create(null)}},G=class{constructor(e){this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._managedGeometries=new v({renderer:e,type:"resource",onUnload:this.onGeometryUnload.bind(this),name:"glGeometry"})}contextChange(){let e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");this.destroyAll(!0);let r=this._renderer.context.extensions.vertexArrayObject;r&&(e.createVertexArray=()=>r.createVertexArrayOES(),e.bindVertexArray=s=>r.bindVertexArrayOES(s),e.deleteVertexArray=s=>r.deleteVertexArrayOES(s));let i=this._renderer.context.extensions.vertexAttribDivisorANGLE;i&&(e.drawArraysInstanced=(s,n,o,a)=>{i.drawArraysInstancedANGLE(s,n,o,a)},e.drawElementsInstanced=(s,n,o,a,c)=>{i.drawElementsInstancedANGLE(s,n,o,a,c)},e.vertexAttribDivisor=(s,n)=>i.vertexAttribDivisorANGLE(s,n)),this._activeGeometry=null,this._activeVao=null}bind(e,r){let i=this.gl;this._activeGeometry=e;let s=this.getVao(e,r);this._activeVao!==s&&(this._activeVao=s,i.bindVertexArray(s)),this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){let e=this._activeGeometry,r=this._renderer.buffer;for(let i=0;i<e.buffers.length;i++){let s=e.buffers[i];r.updateBuffer(s)}e._gcLastUsed=this._renderer.gc.now}checkCompatibility(e,r){let i=e.attributes,s=r._attributeData;for(let n in s)if(!i[n])throw new Error(`shader and geometry incompatible, geometry missing the "${n}" attribute`)}getSignature(e,r){let i=e.attributes,s=r._attributeData,n=["g",e.uid];for(let o in i)s[o]&&n.push(o,s[o].location);return n.join("-")}getVao(e,r){return e._gpuData[this._renderer.uid]?.vaoCache[r._key]||this.initGeometryVao(e,r)}initGeometryVao(e,r,i=!0){let s=this._renderer.gl,n=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(e,r);let o=this.getSignature(e,r),a=e._gpuData[this._renderer.uid];a||(a=new le,e._gpuData[this._renderer.uid]=a,this._managedGeometries.add(e));let c=a.vaoCache,u=c[o];if(u)return c[r._key]=u,u;Me(e,r._attributeData);let f=e.buffers;u=s.createVertexArray(),s.bindVertexArray(u);for(let m=0;m<f.length;m++){let l=f[m];n.bind(l)}return this.activateVao(e,r),c[r._key]=u,c[o]=u,s.bindVertexArray(null),u}onGeometryUnload(e,r=!1){let i=e._gpuData[this._renderer.uid];if(!i)return;let s=i.vaoCache;if(!r)for(let n in s)this._activeVao!==s[n]&&this.resetState(),this.gl.deleteVertexArray(s[n])}destroyAll(e=!1){this._managedGeometries.removeAll(e)}activateVao(e,r){let i=this._renderer.gl,s=this._renderer.buffer,n=e.attributes;e.indexBuffer&&s.bind(e.indexBuffer);let o=null;for(let a in n){let c=n[a],u=c.buffer,f=s.getGlBuffer(u),m=r._attributeData[a];if(m){o!==f&&(s.bind(u),o=f);let l=m.location;i.enableVertexAttribArray(l);let p=K(c.format),S=Xe(c.format);if(m.format?.substring(1,4)==="int"?i.vertexAttribIPointer(l,p.size,S,c.stride,c.offset):i.vertexAttribPointer(l,p.size,S,p.normalised,c.stride,c.offset),c.instance)if(this.hasInstance){let b=c.divisor??1;i.vertexAttribDivisor(l,b)}else throw new Error("geometry error, GPU Instancing is not supported on this device")}}}draw(e,r,i,s){let{gl:n}=this._renderer,o=this._activeGeometry,a=At[e||o.topology];if(s??(s=o.instanceCount),o.indexBuffer){let c=o.indexBuffer.data.BYTES_PER_ELEMENT,u=c===2?n.UNSIGNED_SHORT:n.UNSIGNED_INT;s!==1?n.drawElementsInstanced(a,r||o.indexBuffer.data.length,u,(i||0)*c,s):n.drawElements(a,r||o.indexBuffer.data.length,u,(i||0)*c)}else s!==1?n.drawArraysInstanced(a,i||0,r||o.getSize(),s):n.drawArrays(a,i||0,r||o.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}};G.extension={type:[_.WebGLSystem],name:"geometry"};var Bt=new ve({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),he=class ke{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(e={}){let{useBackBuffer:r,antialias:i}={...ke.defaultOptions,...e};this.useBackBuffer=r,this._antialias=i,this._renderer.context.supports.msaa||(d("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=g.for2d();let s=new Re({vertex:`
attribute vec2 aPosition;
out vec2 vUv;
void main() {
gl_Position = vec4(aPosition, 0.0, 1.0);
vUv = (aPosition + 1.0) / 2.0;
// flip dem UVs
vUv.y = 1.0 - vUv.y;
}`,fragment:`
in vec2 vUv;
out vec4 finalColor;
uniform sampler2D uTexture;
void main() {
finalColor = texture(uTexture, vUv);
}`,name:"big-triangle"});this._bigTriangleShader=new R({glProgram:s,resources:{uTexture:x.WHITE.source}})}renderStart(e){let r=this._renderer.renderTarget.getRenderTarget(e.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!r.isRoot,this._useBackBufferThisRender){let i=this._renderer.renderTarget.getRenderTarget(e.target);this._targetTexture=i.colorTexture,e.target=this._getBackBufferTexture(i.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let e=this._renderer;e.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(e.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,e.encoder.draw({geometry:Bt,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(e){return this._backBufferTexture=this._backBufferTexture||new x({source:new W({width:e.width,height:e.height,resolution:e._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(e.width,e.height,e._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}};he.extension={type:[_.WebGLSystem],name:"backBuffer",priority:1};he.defaultOptions={useBackBuffer:!1};var We=he;var F=class{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.gl.colorMask(!!(e&8),!!(e&4),!!(e&2),!!(e&1)))}};F.extension={type:[_.WebGLSystem],name:"colorMask"};var P=class{constructor(e){this.commandFinished=Promise.resolve(),this._renderer=e}setGeometry(e,r){this._renderer.geometry.bind(e,r.glProgram)}finishRenderPass(){}draw(e){let r=this._renderer,{geometry:i,shader:s,state:n,skipSync:o,topology:a,size:c,start:u,instanceCount:f}=e;r.shader.bind(s,o),r.geometry.bind(i,r.shader._activeProgram),n&&r.state.set(n),r.geometry.draw(a,c,u,f??i.instanceCount)}destroy(){this._renderer=null}};P.extension={type:[_.WebGLSystem],name:"encoder"};var M=class{constructor(e){this._renderer=e}contextChange(){let e=this._renderer.gl;this.maxTextures=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.maxBatchableTextures=Ne(this.maxTextures,e);let r=this._renderer.context.webGLVersion===2;this.maxUniformBindings=r?e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS):0}destroy(){}};M.extension={type:[_.WebGLSystem],name:"limits"};var O=class{constructor(e){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:B.NONE},this._renderTargetStencilState=Object.create(null),e.renderTarget.onRenderTargetChange.add(this)}contextChange(e){this._gl=e,this._comparisonFuncMapping={always:e.ALWAYS,never:e.NEVER,equal:e.EQUAL,"not-equal":e.NOTEQUAL,less:e.LESS,"less-equal":e.LEQUAL,greater:e.GREATER,"greater-equal":e.GEQUAL},this._stencilOpsMapping={keep:e.KEEP,zero:e.ZERO,replace:e.REPLACE,invert:e.INVERT,"increment-clamp":e.INCR,"decrement-clamp":e.DECR,"increment-wrap":e.INCR_WRAP,"decrement-wrap":e.DECR_WRAP},this.resetState()}onRenderTargetChange(e){if(this._activeRenderTarget===e)return;this._activeRenderTarget=e;let r=this._renderTargetStencilState[e.uid];r||(r=this._renderTargetStencilState[e.uid]={stencilMode:B.DISABLED,stencilReference:0}),this.setStencilMode(r.stencilMode,r.stencilReference)}resetState(){this._stencilCache.enabled=!1,this._stencilCache.stencilMode=B.NONE,this._stencilCache.stencilReference=0}setStencilMode(e,r){let i=this._renderTargetStencilState[this._activeRenderTarget.uid],s=this._gl,n=Oe[e],o=this._stencilCache;if(i.stencilMode=e,i.stencilReference=r,e===B.DISABLED){this._stencilCache.enabled&&(this._stencilCache.enabled=!1,s.disable(s.STENCIL_TEST));return}this._stencilCache.enabled||(this._stencilCache.enabled=!0,s.enable(s.STENCIL_TEST)),(e!==o.stencilMode||o.stencilReference!==r)&&(o.stencilMode=e,o.stencilReference=r,s.stencilFunc(this._comparisonFuncMapping[n.stencilBack.compare],r,255),s.stencilOp(s.KEEP,s.KEEP,this._stencilOpsMapping[n.stencilBack.passOp]))}};O.extension={type:[_.WebGLSystem],name:"stencil"};var de={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 je(t){let e=t.map(n=>({data:n,offset:0,size:0})),r=16,i=0,s=0;for(let n=0;n<e.length;n++){let o=e[n];if(i=de[o.data.type],!i)throw new Error(`Unknown type ${o.data.type}`);o.data.size>1&&(i=Math.max(i,r)*o.data.size);let a=i===12?16:i;o.size=i;let c=s%r;c>0&&r-c<a?s+=(r-c)%16:s+=(i-c%i)%i,o.offset=s,s+=i}return s=Math.ceil(s/16)*16,{uboElements:e,size:s}}function Ke(t,e){let r=Math.max(de[t.data.type]/16,1),i=t.data.value.length/t.data.size,s=(4-i%4)%4,n=t.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
v = uv.${t.data.name};
offset += ${e};
arrayOffset = offset;
t = 0;
for(var i=0; i < ${t.data.size*r}; i++)
{
for(var j = 0; j < ${i}; j++)
{
${n}[arrayOffset++] = v[t++];
}
${s!==0?`arrayOffset += ${s};`:""}
}
`}function Ye(t){return Fe(t,"uboStd40",Ke,Pe)}var L=class extends Ge{constructor(){super({createUboElements:je,generateUboSync:Ye})}};L.extension={type:[_.WebGLSystem],name:"ubo"};var re=class{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this._attachedMipLevel=0,this._attachedLayer=0,this.msaaRenderBuffer=[]}};var ie=class{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new me}init(e,r){this._renderer=e,this._renderTargetSystem=r,e.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new me;let e=this._renderer.gl;this._drawBuffersCache=[];for(let r=1;r<=16;r++)this._drawBuffersCache[r]=Array.from({length:r},(i,s)=>e.COLOR_ATTACHMENT0+s)}copyToTexture(e,r,i,s,n){let o=this._renderTargetSystem,a=this._renderer,c=o.getGpuRenderTarget(e),u=a.gl;return this.finishRenderPass(e),u.bindFramebuffer(u.FRAMEBUFFER,c.resolveTargetFramebuffer),a.texture.bind(r,0),u.copyTexSubImage2D(u.TEXTURE_2D,0,n.x,n.y,i.x,i.y,s.width,s.height),r}startRenderPass(e,r=!0,i,s,n=0,o=0){let a=this._renderTargetSystem,c=e.colorTexture,u=a.getGpuRenderTarget(e);if(o!==0&&this._renderer.context.webGLVersion<2)throw new Error("[RenderTargetSystem] Rendering to array layers requires WebGL2.");if(n>0){if(u.msaa)throw new Error("[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.");if(this._renderer.context.webGLVersion<2)throw new Error("[RenderTargetSystem] Rendering to mip levels requires WebGL2.")}let f=s.y;e.isRoot&&(f=c.pixelHeight-s.height-s.y),e.colorTextures.forEach(p=>{this._renderer.texture.unbind(p)});let m=this._renderer.gl;m.bindFramebuffer(m.FRAMEBUFFER,u.framebuffer),!e.isRoot&&(u._attachedMipLevel!==n||u._attachedLayer!==o)&&(e.colorTextures.forEach((p,S)=>{let b=this._renderer.texture.getGlSource(p);if(b.target===m.TEXTURE_2D){if(o!==0)throw new Error("[RenderTargetSystem] layer must be 0 when rendering to 2D textures in WebGL.");m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0+S,m.TEXTURE_2D,b.texture,n)}else if(b.target===m.TEXTURE_2D_ARRAY){if(this._renderer.context.webGLVersion<2)throw new Error("[RenderTargetSystem] Rendering to 2D array textures requires WebGL2.");m.framebufferTextureLayer(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0+S,b.texture,n,o)}else if(b.target===m.TEXTURE_CUBE_MAP){if(o<0||o>5)throw new Error("[RenderTargetSystem] Cube map layer must be between 0 and 5.");m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0+S,m.TEXTURE_CUBE_MAP_POSITIVE_X+o,b.texture,n)}else throw new Error("[RenderTargetSystem] Unsupported texture target for render-to-layer in WebGL.")}),u._attachedMipLevel=n,u._attachedLayer=o),e.colorTextures.length>1&&this._setDrawBuffers(e,m);let l=this._viewPortCache;(l.x!==s.x||l.y!==f||l.width!==s.width||l.height!==s.height)&&(l.x=s.x,l.y=f,l.width=s.width,l.height=s.height,m.viewport(s.x,f,s.width,s.height)),!u.depthStencilRenderBuffer&&(e.stencil||e.depth)&&this._initStencil(u),this.clear(e,r,i)}finishRenderPass(e){let i=this._renderTargetSystem.getGpuRenderTarget(e);if(!i.msaa)return;let s=this._renderer.gl;s.bindFramebuffer(s.FRAMEBUFFER,i.resolveTargetFramebuffer),s.bindFramebuffer(s.READ_FRAMEBUFFER,i.framebuffer),s.blitFramebuffer(0,0,i.width,i.height,0,0,i.width,i.height,s.COLOR_BUFFER_BIT,s.NEAREST),s.bindFramebuffer(s.FRAMEBUFFER,i.framebuffer)}initGpuRenderTarget(e){let i=this._renderer.gl,s=new re;return s._attachedMipLevel=0,s._attachedLayer=0,e.colorTexture instanceof j?(this._renderer.context.ensureCanvasSize(e.colorTexture.resource),s.framebuffer=null,s):(this._initColor(e,s),i.bindFramebuffer(i.FRAMEBUFFER,null),s)}destroyGpuRenderTarget(e){let r=this._renderer.gl;e.framebuffer&&(r.deleteFramebuffer(e.framebuffer),e.framebuffer=null),e.resolveTargetFramebuffer&&(r.deleteFramebuffer(e.resolveTargetFramebuffer),e.resolveTargetFramebuffer=null),e.depthStencilRenderBuffer&&(r.deleteRenderbuffer(e.depthStencilRenderBuffer),e.depthStencilRenderBuffer=null),e.msaaRenderBuffer.forEach(i=>{r.deleteRenderbuffer(i)}),e.msaaRenderBuffer=null}clear(e,r,i,s,n=0,o=0){if(!r)return;if(o!==0)throw new Error("[RenderTargetSystem] Clearing array layers is not supported in WebGL renderer.");let a=this._renderTargetSystem;typeof r=="boolean"&&(r=r?$.ALL:$.NONE);let c=this._renderer.gl;if(r&$.COLOR){i??(i=a.defaultClearColor);let u=this._clearColorCache,f=i;(u[0]!==f[0]||u[1]!==f[1]||u[2]!==f[2]||u[3]!==f[3])&&(u[0]=f[0],u[1]=f[1],u[2]=f[2],u[3]=f[3],c.clearColor(f[0],f[1],f[2],f[3]))}c.clear(r)}resizeGpuRenderTarget(e){if(e.isRoot)return;let i=this._renderTargetSystem.getGpuRenderTarget(e);this._resizeColor(e,i),(e.stencil||e.depth)&&this._resizeStencil(i)}_initColor(e,r){let i=this._renderer,s=i.gl,n=s.createFramebuffer();if(r.resolveTargetFramebuffer=n,s.bindFramebuffer(s.FRAMEBUFFER,n),r.width=e.colorTexture.source.pixelWidth,r.height=e.colorTexture.source.pixelHeight,e.colorTextures.forEach((a,c)=>{let u=a.source;u.antialias&&(i.context.supports.msaa?r.msaa=!0:d("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),i.texture.bindSource(u,0);let f=i.texture.getGlSource(u),m=f.texture;if(f.target===s.TEXTURE_2D)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+c,s.TEXTURE_2D,m,0);else if(f.target===s.TEXTURE_2D_ARRAY){if(i.context.webGLVersion<2)throw new Error("[RenderTargetSystem] TEXTURE_2D_ARRAY requires WebGL2.");s.framebufferTextureLayer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+c,m,0,0)}else if(f.target===s.TEXTURE_CUBE_MAP)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+c,s.TEXTURE_CUBE_MAP_POSITIVE_X,m,0);else throw new Error("[RenderTargetSystem] Unsupported texture target for framebuffer attachment.")}),r.msaa){let a=s.createFramebuffer();r.framebuffer=a,s.bindFramebuffer(s.FRAMEBUFFER,a),e.colorTextures.forEach((c,u)=>{let f=s.createRenderbuffer();r.msaaRenderBuffer[u]=f})}else r.framebuffer=n;this._resizeColor(e,r)}_resizeColor(e,r){let i=e.colorTexture.source;if(r.width=i.pixelWidth,r.height=i.pixelHeight,r._attachedMipLevel=0,r._attachedLayer=0,e.colorTextures.forEach((s,n)=>{n!==0&&s.source.resize(i.width,i.height,i._resolution)}),r.msaa){let s=this._renderer,n=s.gl,o=r.framebuffer;n.bindFramebuffer(n.FRAMEBUFFER,o),e.colorTextures.forEach((a,c)=>{let u=a.source;s.texture.bindSource(u,0);let m=s.texture.getGlSource(u).internalFormat,l=r.msaaRenderBuffer[c];n.bindRenderbuffer(n.RENDERBUFFER,l),n.renderbufferStorageMultisample(n.RENDERBUFFER,4,m,u.pixelWidth,u.pixelHeight),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+c,n.RENDERBUFFER,l)})}}_initStencil(e){if(e.framebuffer===null)return;let r=this._renderer.gl,i=r.createRenderbuffer();e.depthStencilRenderBuffer=i,r.bindRenderbuffer(r.RENDERBUFFER,i),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,i),this._resizeStencil(e)}_resizeStencil(e){let r=this._renderer.gl;r.bindRenderbuffer(r.RENDERBUFFER,e.depthStencilRenderBuffer),e.msaa?r.renderbufferStorageMultisample(r.RENDERBUFFER,4,r.DEPTH24_STENCIL8,e.width,e.height):r.renderbufferStorage(r.RENDERBUFFER,this._renderer.context.webGLVersion===2?r.DEPTH24_STENCIL8:r.DEPTH_STENCIL,e.width,e.height)}prerender(e){let r=e.colorTexture.resource;this._renderer.context.multiView&&j.test(r)&&this._renderer.context.ensureCanvasSize(r)}postrender(e){if(this._renderer.context.multiView&&j.test(e.colorTexture.resource)){let r=this._renderer.context.canvas,i=e.colorTexture;i.context2D.drawImage(r,0,i.pixelHeight-r.height)}}_setDrawBuffers(e,r){let i=e.colorTextures.length,s=this._drawBuffersCache[i];if(this._renderer.context.webGLVersion===1){let n=this._renderer.context.extensions.drawBuffers;n?n.drawBuffersWEBGL(s):d("[RenderTexture] This WebGL1 context does not support rendering to multiple targets")}else r.drawBuffers(s)}};var w=class extends Le{constructor(e){super(e),this.adaptor=new ie,this.adaptor.init(e,this)}};w.extension={type:[_.WebGLSystem],name:"renderTarget"};function $e(t,e){let r=[],i=[`
var g = s.groups;
var sS = r.shader;
var p = s.glProgram;
var ugS = r.uniformGroup;
var resources;
`],s=!1,n=0,o=e._getProgramData(t.glProgram);for(let c in t.groups){let u=t.groups[c];r.push(`
resources = g[${c}].resources;
`);for(let f in u.resources){let m=u.resources[f];if(m instanceof T)if(m.ubo){let l=t._uniformBindMap[c][Number(f)];r.push(`
sS.bindUniformBlock(
resources[${f}],
'${l}',
${t.glProgram._uniformBlockData[l].index}
);
`)}else r.push(`
ugS.updateUniformGroup(resources[${f}], p, sD);
`);else if(m instanceof J){let l=t._uniformBindMap[c][Number(f)];r.push(`
sS.bindUniformBlock(
resources[${f}],
'${l}',
${t.glProgram._uniformBlockData[l].index}
);
`)}else if(m instanceof W){let l=t._uniformBindMap[c][f],p=o.uniformData[l];p&&(s||(s=!0,i.push(`
var tS = r.texture;
`)),e._gl.uniform1i(p.location,n),r.push(`
tS.bind(resources[${f}], ${n});
`),n++)}}}let a=[...i,...r].join(`
`);return new Function("r","s","sD",a)}var se=class{constructor(e,r){this.program=e,this.uniformData=r,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBlockBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBlockBindings=null,this.program=null}};function pe(t,e,r){let i=t.createShader(e);return t.shaderSource(i,r),t.compileShader(i),i}function Ee(t){let e=new Array(t);for(let r=0;r<e.length;r++)e[r]=!1;return e}function ne(t,e){switch(t){case"float":return 0;case"vec2":return new Float32Array(2*e);case"vec3":return new Float32Array(3*e);case"vec4":return new Float32Array(4*e);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*e);case"ivec3":return new Int32Array(3*e);case"ivec4":return new Int32Array(4*e);case"uvec2":return new Uint32Array(2*e);case"uvec3":return new Uint32Array(3*e);case"uvec4":return new Uint32Array(4*e);case"bool":return!1;case"bvec2":return Ee(2*e);case"bvec3":return Ee(3*e);case"bvec4":return Ee(4*e);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 oe=null,ze={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"},yt={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 be(t,e){if(!oe){let r=Object.keys(ze);oe={};for(let i=0;i<r.length;++i){let s=r[i];oe[t[s]]=ze[s]}}return oe[e]}function qe(t,e){let r=be(t,e);return yt[r]||"float32"}function Ze(t,e,r=!1){let i={},s=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let o=0;o<s;o++){let a=e.getActiveAttrib(t,o);if(a.name.startsWith("gl_"))continue;let c=qe(e,a.type);i[a.name]={location:0,format:c,stride:K(c).stride,offset:0,instance:!1,start:0}}let n=Object.keys(i);if(r){n.sort((o,a)=>o>a?1:-1);for(let o=0;o<n.length;o++)i[n[o]].location=o,e.bindAttribLocation(t,o,n[o]);e.linkProgram(t)}else for(let o=0;o<n.length;o++)i[n[o]].location=e.getAttribLocation(t,n[o]);return i}function Qe(t,e){if(!e.ACTIVE_UNIFORM_BLOCKS)return{};let r={},i=e.getProgramParameter(t,e.ACTIVE_UNIFORM_BLOCKS);for(let s=0;s<i;s++){let n=e.getActiveUniformBlockName(t,s),o=e.getUniformBlockIndex(t,n),a=e.getActiveUniformBlockParameter(t,s,e.UNIFORM_BLOCK_DATA_SIZE);r[n]={name:n,index:o,size:a}}return r}function Je(t,e){let r={},i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<i;s++){let n=e.getActiveUniform(t,s),o=n.name.replace(/\[.*?\]$/,""),a=!!n.name.match(/\[.*?\]$/),c=be(e,n.type);r[o]={name:o,index:s,type:c,size:n.size,isArray:a,value:ne(c,n.size)}}return r}function et(t,e){let r=t.getShaderSource(e).split(`
`).map((u,f)=>`${f}: ${u}`),i=t.getShaderInfoLog(e),s=i.split(`
`),n={},o=s.map(u=>parseFloat(u.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(u=>u&&!n[u]?(n[u]=!0,!0):!1),a=[""];o.forEach(u=>{r[u-1]=`%c${r[u-1]}%c`,a.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});let c=r.join(`
`);a[0]=c,console.error(i),console.groupCollapsed("click to view full shader code"),console.warn(...a),console.groupEnd()}function tt(t,e,r,i){t.getProgramParameter(e,t.LINK_STATUS)||(t.getShaderParameter(r,t.COMPILE_STATUS)||et(t,r),t.getShaderParameter(i,t.COMPILE_STATUS)||et(t,i),console.error("PixiJS Error: Could not initialize shader."),t.getProgramInfoLog(e)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",t.getProgramInfoLog(e)))}function rt(t,e){let r=pe(t,t.VERTEX_SHADER,e.vertex),i=pe(t,t.FRAGMENT_SHADER,e.fragment),s=t.createProgram();t.attachShader(s,r),t.attachShader(s,i);let n=e.transformFeedbackVaryings;n&&(typeof t.transformFeedbackVaryings!="function"?d("TransformFeedback is not supported but TransformFeedbackVaryings are given."):t.transformFeedbackVaryings(s,n.names,n.bufferMode==="separate"?t.SEPARATE_ATTRIBS:t.INTERLEAVED_ATTRIBS)),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||tt(t,s,r,i),e._attributeData=Ze(s,t,!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(e.vertex)),e._uniformData=Je(s,t),e._uniformBlockData=Qe(s,t),t.deleteShader(r),t.deleteShader(i);let o={};for(let c in e._uniformData){let u=e._uniformData[c];o[c]={location:t.getUniformLocation(s,c),value:ne(u.type,u.size)}}return new se(s,o)}var ae={textureCount:0,blockIndex:0},H=class{constructor(e){this._activeProgram=null,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._renderer=e}contextChange(e){this._gl=e,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._activeProgram=null}bind(e,r){if(this._setProgram(e.glProgram),r)return;ae.textureCount=0,ae.blockIndex=0;let i=this._shaderSyncFunctions[e.glProgram._key];i||(i=this._shaderSyncFunctions[e.glProgram._key]=this._generateShaderSync(e,this)),this._renderer.buffer.nextBindBase(!!e.glProgram.transformFeedbackVaryings),i(this._renderer,e,ae)}updateUniformGroup(e){this._renderer.uniformGroup.updateUniformGroup(e,this._activeProgram,ae)}bindUniformBlock(e,r,i=0){let s=this._renderer.buffer,n=this._getProgramData(this._activeProgram),o=e._bufferResource;o||this._renderer.ubo.updateUniformGroup(e);let a=e.buffer,c=s.updateBuffer(a),u=s.freeLocationForBufferBase(c);if(o){let{offset:m,size:l}=e;m===0&&l===a.data.byteLength?s.bindBufferBase(c,u):s.bindBufferRange(c,u,m)}else s.getLastBindBaseLocation(c)!==u&&s.bindBufferBase(c,u);let f=this._activeProgram._uniformBlockData[r].index;n.uniformBlockBindings[i]!==u&&(n.uniformBlockBindings[i]=u,this._renderer.gl.uniformBlockBinding(n.program,f,u))}_setProgram(e){if(this._activeProgram===e)return;this._activeProgram=e;let r=this._getProgramData(e);this._gl.useProgram(r.program)}_getProgramData(e){return this._programDataHash[e._key]||this._createProgramData(e)}_createProgramData(e){let r=e._key;return this._programDataHash[r]=rt(this._gl,e),this._programDataHash[r]}destroy(){for(let e of Object.keys(this._programDataHash))this._programDataHash[e].destroy();this._programDataHash=null,this._shaderSyncFunctions=null,this._activeProgram=null,this._renderer=null,this._gl=null}_generateShaderSync(e,r){return $e(e,r)}resetState(){this._activeProgram=null}};H.extension={type:[_.WebGLSystem],name:"shader"};var it={f32:`if (cv !== v) {
cu.value = v;
gl.uniform1f(location, v);
}`,"vec2<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2f(location, v[0], v[1]);
}`,"vec3<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3f(location, v[0], v[1], v[2]);
}`,"vec4<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4f(location, v[0], v[1], v[2], v[3]);
}`,i32:`if (cv !== v) {
cu.value = v;
gl.uniform1i(location, v);
}`,"vec2<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2i(location, v[0], v[1]);
}`,"vec3<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3i(location, v[0], v[1], v[2]);
}`,"vec4<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
}`,u32:`if (cv !== v) {
cu.value = v;
gl.uniform1ui(location, v);
}`,"vec2<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2ui(location, v[0], v[1]);
}`,"vec3<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3ui(location, v[0], v[1], v[2]);
}`,"vec4<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4ui(location, v[0], v[1], v[2], v[3]);
}`,bool:`if (cv !== v) {
cu.value = v;
gl.uniform1i(location, v);
}`,"vec2<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2i(location, v[0], v[1]);
}`,"vec3<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3i(location, v[0], v[1], v[2]);
}`,"vec4<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
}`,"mat2x2<f32>":"gl.uniformMatrix2fv(location, false, v);","mat3x3<f32>":"gl.uniformMatrix3fv(location, false, v);","mat4x4<f32>":"gl.uniformMatrix4fv(location, false, v);"},st={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 nt(t,e){let r=[`
var v = null;
var cv = null;
var cu = null;
var t = 0;
var gl = renderer.gl;
var name = null;
`];for(let i in t.uniforms){if(!e[i]){t.uniforms[i]instanceof T?t.uniforms[i].ubo?r.push(`
renderer.shader.bindUniformBlock(uv.${i}, "${i}");
`):r.push(`
renderer.shader.updateUniformGroup(uv.${i});
`):t.uniforms[i]instanceof J&&r.push(`
renderer.shader.bindBufferResource(uv.${i}, "${i}");
`);continue}let s=t.uniformStructures[i],n=!1;for(let o=0;o<Q.length;o++){let a=Q[o];if(s.type===a.type&&a.test(s)){r.push(`name = "${i}";`,Q[o].uniform),n=!0;break}}if(!n){let a=(s.size===1?it:st)[s.type].replace("location",`ud["${i}"].location`);r.push(`
cu = ud["${i}"];
cv = cu.value;
v = uv["${i}"];
${a};`)}}return new Function("ud","uv","renderer","syncData",r.join(`
`))}var V=class{constructor(e){this._cache={},this._uniformGroupSyncHash={},this._renderer=e,this.gl=null,this._cache={}}contextChange(e){this.gl=e}updateUniformGroup(e,r,i){let s=this._renderer.shader._getProgramData(r);(!e.isStatic||e._dirtyId!==s.uniformDirtyGroups[e.uid])&&(s.uniformDirtyGroups[e.uid]=e._dirtyId,this._getUniformSyncFunction(e,r)(s.uniformData,e.uniforms,this._renderer,i))}_getUniformSyncFunction(e,r){return this._uniformGroupSyncHash[e._signature]?.[r._key]||this._createUniformSyncFunction(e,r)}_createUniformSyncFunction(e,r){let i=this._uniformGroupSyncHash[e._signature]||(this._uniformGroupSyncHash[e._signature]={}),s=this._getSignature(e,r._uniformData,"u");return this._cache[s]||(this._cache[s]=this._generateUniformsSync(e,r._uniformData)),i[r._key]=this._cache[s],i[r._key]}_generateUniformsSync(e,r){return nt(e,r)}_getSignature(e,r,i){let s=e.uniforms,n=[`${i}-`];for(let o in s)n.push(o),r[o]&&n.push(r[o].type);return n.join("-")}destroy(){this._renderer=null,this._cache=null}};V.extension={type:[_.WebGLSystem],name:"uniformGroup"};function ot(t){let e={};if(e.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e.add=[t.ONE,t.ONE],e.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.none=[0,0],e["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],e["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],!(t instanceof E.get().getWebGLRenderingContext()))e.min=[t.ONE,t.ONE,t.ONE,t.ONE,t.MIN,t.MIN],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,t.MAX,t.MAX];else{let i=t.getExtension("EXT_blend_minmax");i&&(e.min=[t.ONE,t.ONE,t.ONE,t.ONE,i.MIN_EXT,i.MIN_EXT],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,i.MAX_EXT,i.MAX_EXT])}return e}var Ct=0,Nt=1,It=2,Dt=3,Ut=4,Gt=5,at=class xe{constructor(e){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[Ct]=this.setBlend,this.map[Nt]=this.setOffset,this.map[It]=this.setCullFace,this.map[Dt]=this.setDepthTest,this.map[Ut]=this.setFrontFace,this.map[Gt]=this.setDepthMask,this.checks=[],this.defaultState=g.for2d(),e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){this._invertFrontFace=!e.isRoot,this._cullFace?this.setFrontFace(this._frontFace):this._frontFaceDirty=!0}contextChange(e){this.gl=e,this.blendModesMap=ot(e),this.resetState()}set(e){if(e||(e=this.defaultState),this.stateId!==e.data){let r=this.stateId^e.data,i=0;for(;r;)r&1&&this.map[i].call(this,!!(e.data&1<<i)),r>>=1,i++;this.stateId=e.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,e)}forceState(e){e||(e=this.defaultState);for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(e.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,e);this.stateId=e.data}setBlend(e){this._updateCheck(xe._checkBlendMode,e),this.gl[e?"enable":"disable"](this.gl.BLEND)}setOffset(e){this._updateCheck(xe._checkPolygonOffset,e),this.gl[e?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this._cullFace=e,this.gl[e?"enable":"disable"](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty&&this.setFrontFace(this._frontFace)}setFrontFace(e){this._frontFace=e,this._frontFaceDirty=!1;let r=this._invertFrontFace?!e:e;this._glFrontFace!==r&&(this._glFrontFace=r,this.gl.frontFace(this.gl[r?"CW":"CCW"]))}setBlendMode(e){if(this.blendModesMap[e]||(e="normal"),e===this.blendMode)return;this.blendMode=e;let r=this.blendModesMap[e],i=this.gl;r.length===2?i.blendFunc(r[0],r[1]):i.blendFuncSeparate(r[0],r[1],r[2],r[3]),r.length===6?(this._blendEq=!0,i.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,r){this.gl.polygonOffset(e,r)}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(e,r){let i=this.checks.indexOf(e);r&&i===-1?this.checks.push(e):!r&&i!==-1&&this.checks.splice(i,1)}static _checkBlendMode(e,r){e.setBlendMode(r.blendMode)}static _checkPolygonOffset(e,r){e.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};at.extension={type:[_.WebGLSystem],name:"state"};var ct=at;var ce=class{constructor(e){this.target=U.TEXTURE_2D,this._layerInitMask=0,this.texture=e,this.width=-1,this.height=-1,this.type=h.UNSIGNED_BYTE,this.internalFormat=te.RGBA,this.format=te.RGBA,this.samplerType=0}destroy(){}};var ut={id:"buffer",upload(t,e,r,i,s,n=!1){let o=s||e.target;!n&&e.width===t.width&&e.height===t.height?r.texSubImage2D(o,0,0,0,t.width,t.height,e.format,e.type,t.resource):r.texImage2D(o,0,e.internalFormat,t.width,t.height,0,e.format,e.type,t.resource),e.width=t.width,e.height=t.height}};var Ft={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3