@industry-theme/repository-composition-panels 0.6.21 → 0.6.23

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 (26) hide show
  1. package/dist/{BufferResource-AGMDtvQu.js → BufferResource-CEOmm-bn.js} +2 -2
  2. package/dist/{BufferResource-AGMDtvQu.js.map → BufferResource-CEOmm-bn.js.map} +1 -1
  3. package/dist/{CanvasRenderer-EN1EU93u.js → CanvasRenderer-uLmsLKVm.js} +3 -3
  4. package/dist/{CanvasRenderer-EN1EU93u.js.map → CanvasRenderer-uLmsLKVm.js.map} +1 -1
  5. package/dist/{Filter-UO5g1u-H.js → Filter-DaJ1lK09.js} +2 -2
  6. package/dist/{Filter-UO5g1u-H.js.map → Filter-DaJ1lK09.js.map} +1 -1
  7. package/dist/{RenderTargetSystem-DKolurnu.js → RenderTargetSystem-L205smmq.js} +3 -3
  8. package/dist/{RenderTargetSystem-DKolurnu.js.map → RenderTargetSystem-L205smmq.js.map} +1 -1
  9. package/dist/{WebGLRenderer-xGaER6aG.js → WebGLRenderer-Di8FBHm2.js} +4 -4
  10. package/dist/{WebGLRenderer-xGaER6aG.js.map → WebGLRenderer-Di8FBHm2.js.map} +1 -1
  11. package/dist/{WebGPURenderer-B41RbCbk.js → WebGPURenderer-shOBFSVw.js} +4 -4
  12. package/dist/{WebGPURenderer-B41RbCbk.js.map → WebGPURenderer-shOBFSVw.js.map} +1 -1
  13. package/dist/{browserAll-BI6zPI5f.js → browserAll-BDQdYbg7.js} +3 -3
  14. package/dist/{browserAll-BI6zPI5f.js.map → browserAll-BDQdYbg7.js.map} +1 -1
  15. package/dist/{index-Cf_i-MpU.js → index-Dz9kyNPE.js} +21 -39
  16. package/dist/{index-Cf_i-MpU.js.map → index-Dz9kyNPE.js.map} +1 -1
  17. package/dist/{init-B8QjDcQG.js → init-CYQ-TSDD.js} +3 -3
  18. package/dist/{init-B8QjDcQG.js.map → init-CYQ-TSDD.js.map} +1 -1
  19. package/dist/panels/CollectionMapPanel.d.ts +3 -5
  20. package/dist/panels/CollectionMapPanel.d.ts.map +1 -1
  21. package/dist/panels.bundle.js +1 -1
  22. package/dist/webworkerAll-c9JuRq0R.js +3 -0
  23. package/dist/webworkerAll-c9JuRq0R.js.map +1 -0
  24. package/package.json +1 -1
  25. package/dist/webworkerAll-BbsP1NXo.js +0 -3
  26. package/dist/webworkerAll-BbsP1NXo.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WebGLRenderer-xGaER6aG.js","sources":["../node_modules/pixi.js/lib/utils/browser/isSafari.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlLimitsSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateArraySyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboSyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlUboSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GenerateShaderSyncCode.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgramData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/compileShader.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/defaultValue.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/mapType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUboData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUniformData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/logProgramError.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/generateProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlShaderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSync.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlUniformGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCubeTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapViewDimensionToGlTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs","../node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs","../node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"],"sourcesContent":["import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nfunction isSafari() {\n const { userAgent } = DOMAdapter.get().getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n}\n\nexport { isSafari };\n//# sourceMappingURL=isSafari.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\n\n\"use strict\";\nclass GlBatchAdaptor {\n constructor() {\n this._tempState = State.for2d();\n /**\n * We only want to sync the a batched shaders uniforms once on first use\n * this is a hash of shader uids to a boolean value. When the shader is first bound\n * we set the value to true. When the shader is bound again we check the value and\n * if it is true we know that the uniforms have already been synced and we skip it.\n */\n this._didUploadHash = {};\n }\n init(batcherPipe) {\n batcherPipe.renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._didUploadHash = {};\n }\n start(batchPipe, geometry, shader) {\n const renderer = batchPipe.renderer;\n const didUpload = this._didUploadHash[shader.uid];\n renderer.shader.bind(shader, didUpload);\n if (!didUpload) {\n this._didUploadHash[shader.uid] = true;\n }\n renderer.shader.updateUniformGroup(renderer.globalUniforms.uniformGroup);\n renderer.geometry.bind(geometry, shader.glProgram);\n }\n execute(batchPipe, batch) {\n const renderer = batchPipe.renderer;\n this._tempState.blendMode = batch.blendMode;\n renderer.state.set(this._tempState);\n const textures = batch.textures.textures;\n for (let i = 0; i < batch.textures.count; i++) {\n renderer.texture.bind(textures[i], i);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n}\n/** @ignore */\nGlBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GlBatchAdaptor };\n//# sourceMappingURL=GlBatchAdaptor.mjs.map\n","\"use strict\";\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { BUFFER_TYPE };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass GlBuffer {\n constructor(buffer, type) {\n this._lastBindBaseLocation = -1;\n this._lastBindCallId = -1;\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = type;\n }\n destroy() {\n this.buffer = null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = -1;\n this._lastBindBaseLocation = -1;\n this._lastBindCallId = -1;\n }\n}\n\nexport { GlBuffer };\n//# sourceMappingURL=GlBuffer.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { BufferUsage } from '../../shared/buffer/const.mjs';\nimport { BUFFER_TYPE } from './const.mjs';\nimport { GlBuffer } from './GlBuffer.mjs';\n\n\"use strict\";\nclass GlBufferSystem {\n /**\n * @param {Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n /** Cache keeping track of the base bound buffer bases */\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n this._minBaseLocation = 0;\n this._nextBindBaseIndex = this._minBaseLocation;\n this._bindCallId = 0;\n this._renderer = renderer;\n this._managedBuffers = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onBufferUnload.bind(this),\n name: \"glBuffer\"\n });\n }\n /** @ignore */\n destroy() {\n this._managedBuffers.destroy();\n this._renderer = null;\n this._gl = null;\n this._boundBufferBases = {};\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this._gl = this._renderer.gl;\n this.destroyAll(true);\n this._maxBindings = this._renderer.limits.maxUniformBindings;\n }\n getGlBuffer(buffer) {\n buffer._gcLastUsed = this._renderer.gc.now;\n return buffer._gpuData[this._renderer.uid] || this.createGLBuffer(buffer);\n }\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n bind(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n }\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n bindBufferBase(glBuffer, index) {\n const { _gl: gl } = this;\n if (this._boundBufferBases[index] !== glBuffer) {\n this._boundBufferBases[index] = glBuffer;\n glBuffer._lastBindBaseLocation = index;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n nextBindBase(hasTransformFeedback) {\n this._bindCallId++;\n this._minBaseLocation = 0;\n if (hasTransformFeedback) {\n this._boundBufferBases[0] = null;\n this._minBaseLocation = 1;\n if (this._nextBindBaseIndex < 1) {\n this._nextBindBaseIndex = 1;\n }\n }\n }\n freeLocationForBufferBase(glBuffer) {\n let freeIndex = this.getLastBindBaseLocation(glBuffer);\n if (freeIndex >= this._minBaseLocation) {\n glBuffer._lastBindCallId = this._bindCallId;\n return freeIndex;\n }\n let loop = 0;\n let nextIndex = this._nextBindBaseIndex;\n while (loop < 2) {\n if (nextIndex >= this._maxBindings) {\n nextIndex = this._minBaseLocation;\n loop++;\n }\n const curBuf = this._boundBufferBases[nextIndex];\n if (curBuf && curBuf._lastBindCallId === this._bindCallId) {\n nextIndex++;\n continue;\n }\n break;\n }\n freeIndex = nextIndex;\n this._nextBindBaseIndex = nextIndex + 1;\n if (loop >= 2) {\n return -1;\n }\n glBuffer._lastBindCallId = this._bindCallId;\n this._boundBufferBases[freeIndex] = null;\n return freeIndex;\n }\n getLastBindBaseLocation(glBuffer) {\n const index = glBuffer._lastBindBaseLocation;\n if (this._boundBufferBases[index] === glBuffer) {\n return index;\n }\n return -1;\n }\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n * @param size - the size to bind at (this is blocks of 256).\n */\n bindBufferRange(glBuffer, index, offset, size) {\n const { _gl: gl } = this;\n offset || (offset = 0);\n index || (index = 0);\n this._boundBufferBases[index] = null;\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, size || 256);\n }\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {Buffer} buffer - the buffer to update\n */\n updateBuffer(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return glBuffer;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n const data = buffer.data;\n const drawType = buffer.descriptor.usage & BufferUsage.STATIC ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n if (data) {\n if (glBuffer.byteLength >= data.byteLength) {\n gl.bufferSubData(glBuffer.type, 0, data, 0, buffer._updateSize / data.BYTES_PER_ELEMENT);\n } else {\n glBuffer.byteLength = data.byteLength;\n gl.bufferData(glBuffer.type, data, drawType);\n }\n } else {\n glBuffer.byteLength = buffer.descriptor.size;\n gl.bufferData(glBuffer.type, glBuffer.byteLength, drawType);\n }\n return glBuffer;\n }\n /**\n * dispose all WebGL resources of all managed buffers\n * @param contextLost\n */\n destroyAll(contextLost = false) {\n this._managedBuffers.removeAll(contextLost);\n }\n onBufferUnload(buffer, contextLost = false) {\n const glBuffer = buffer._gpuData[this._renderer.uid];\n if (!glBuffer) return;\n if (!contextLost) this._gl.deleteBuffer(glBuffer.buffer);\n }\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n createGLBuffer(buffer) {\n const { _gl: gl } = this;\n let type = BUFFER_TYPE.ARRAY_BUFFER;\n if (buffer.descriptor.usage & BufferUsage.INDEX) {\n type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n } else if (buffer.descriptor.usage & BufferUsage.UNIFORM) {\n type = BUFFER_TYPE.UNIFORM_BUFFER;\n }\n const glBuffer = new GlBuffer(gl.createBuffer(), type);\n buffer._gpuData[this._renderer.uid] = glBuffer;\n this._managedBuffers.add(buffer);\n return glBuffer;\n }\n resetState() {\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n }\n}\n/** @ignore */\nGlBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"buffer\"\n};\n\nexport { GlBufferSystem };\n//# sourceMappingURL=GlBufferSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst _GlContextSystem = class _GlContextSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /**\n * Features supported by current renderer.\n * @type {object}\n * @readonly\n */\n this.supports = {\n /** Support for 32-bit indices buffer. */\n uint32Indices: true,\n /** Support for UniformBufferObjects */\n uniformBufferObject: true,\n /** Support for VertexArrayObjects */\n vertexArrayObject: true,\n /** Support for SRGB texture format */\n srgbTextures: true,\n /** Support for wrapping modes if a texture is non-power of two */\n nonPowOf2wrapping: true,\n /** Support for MSAA (antialiasing of dynamic textures) */\n msaa: true,\n /** Support for mipmaps if a texture is non-power of two */\n nonPowOf2mipmaps: true\n };\n this._renderer = renderer;\n this.extensions = /* @__PURE__ */ Object.create(null);\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n contextChange(gl) {\n this.gl = gl;\n this._renderer.gl = gl;\n }\n init(options) {\n options = { ..._GlContextSystem.defaultOptions, ...options };\n let multiView = this.multiView = options.multiView;\n if (options.context && multiView) {\n warn(\"Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together.\");\n multiView = false;\n }\n if (multiView) {\n this.canvas = DOMAdapter.get().createCanvas(this._renderer.canvas.width, this._renderer.canvas.height);\n } else {\n this.canvas = this._renderer.view.canvas;\n }\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this._renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const antialias = options.antialias && !this._renderer.backBuffer.useBackBuffer;\n this.createContext(options.preferWebGLVersion, {\n alpha,\n premultipliedAlpha,\n antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference ?? \"default\"\n });\n }\n }\n ensureCanvasSize(targetCanvas) {\n if (!this.multiView) {\n if (targetCanvas !== this.canvas) {\n warn(\"multiView is disabled, but targetCanvas is not the main canvas\");\n }\n return;\n }\n const { canvas } = this;\n if (canvas.width < targetCanvas.width || canvas.height < targetCanvas.height) {\n canvas.width = Math.max(targetCanvas.width, targetCanvas.width);\n canvas.height = Math.max(targetCanvas.height, targetCanvas.height);\n }\n }\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n initFromContext(gl) {\n this.gl = gl;\n this.webGLVersion = gl instanceof DOMAdapter.get().getWebGLRenderingContext() ? 1 : 2;\n this.getExtensions();\n this.validateContext(gl);\n this._renderer.runners.contextChange.emit(gl);\n const element = this._renderer.view.canvas;\n element.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n element.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param preferWebGLVersion\n * @param {object} options - context attributes\n */\n createContext(preferWebGLVersion, options) {\n let gl;\n const canvas = this.canvas;\n if (preferWebGLVersion === 2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.initFromContext(this.gl);\n }\n /** Auto-populate the {@link GlContextSystem.extensions extensions}. */\n getExtensions() {\n const { gl } = this;\n const common = {\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n // eslint-disable-line camelcase\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\"),\n bptc: gl.getExtension(\"EXT_texture_compression_bptc\"),\n rgtc: gl.getExtension(\"EXT_texture_compression_rgtc\"),\n loseContext: gl.getExtension(\"WEBGL_lose_context\")\n };\n if (this.webGLVersion === 1) {\n this.extensions = {\n ...common,\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n // Floats and half-floats\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\"),\n vertexAttribDivisorANGLE: gl.getExtension(\"ANGLE_instanced_arrays\"),\n srgb: gl.getExtension(\"EXT_sRGB\")\n };\n } else {\n this.extensions = {\n ...common,\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n };\n const provokeExt = gl.getExtension(\"WEBGL_provoking_vertex\");\n if (provokeExt) {\n provokeExt.provokingVertexWEBGL(provokeExt.FIRST_VERTEX_CONVENTION_WEBGL);\n }\n }\n }\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n handleContextLost(event) {\n event.preventDefault();\n if (this._contextLossForced) {\n this._contextLossForced = false;\n setTimeout(() => {\n if (this.gl.isContextLost()) {\n this.extensions.loseContext?.restoreContext();\n }\n }, 0);\n }\n }\n /** Handles a restored webgl context. */\n handleContextRestored() {\n this.getExtensions();\n this._renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const element = this._renderer.view.canvas;\n this._renderer = null;\n element.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n element.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n this.gl.useProgram(null);\n this.extensions.loseContext?.loseContext();\n }\n /**\n * this function can be called to force a webGL context loss\n * this will release all resources on the GPU.\n * Useful if you need to put Pixi to sleep, and save some GPU memory\n *\n * As soon as render is called - all resources will be created again.\n */\n forceContextLoss() {\n this.extensions.loseContext?.loseContext();\n this._contextLossForced = true;\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n if (attributes && !attributes.stencil) {\n warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const supports = this.supports;\n const isWebGl2 = this.webGLVersion === 2;\n const extensions = this.extensions;\n supports.uint32Indices = isWebGl2 || !!extensions.uint32ElementIndex;\n supports.uniformBufferObject = isWebGl2;\n supports.vertexArrayObject = isWebGl2 || !!extensions.vertexArrayObject;\n supports.srgbTextures = isWebGl2 || !!extensions.srgb;\n supports.nonPowOf2wrapping = isWebGl2;\n supports.nonPowOf2mipmaps = isWebGl2;\n supports.msaa = isWebGl2;\n if (!supports.uint32Indices) {\n warn(\"Provided WebGL context does not support 32 index buffer, large scenes may not render correctly\");\n }\n }\n};\n/** @ignore */\n_GlContextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"context\"\n};\n/** The default options for the system. */\n_GlContextSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.context}\n * @default null\n */\n context: null,\n /**\n * {@link WebGLOptions.premultipliedAlpha}\n * @default true\n */\n premultipliedAlpha: true,\n /**\n * {@link WebGLOptions.preserveDrawingBuffer}\n * @default false\n */\n preserveDrawingBuffer: false,\n /**\n * {@link WebGLOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * {@link WebGLOptions.webGLVersion}\n * @default 2\n */\n preferWebGLVersion: 2,\n /**\n * {@link WebGLOptions.multiView}\n * @default false\n */\n multiView: false\n};\nlet GlContextSystem = _GlContextSystem;\n\nexport { GlContextSystem };\n//# sourceMappingURL=GlContextSystem.mjs.map\n","\"use strict\";\nvar GL_FORMATS = /* @__PURE__ */ ((GL_FORMATS2) => {\n GL_FORMATS2[GL_FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n GL_FORMATS2[GL_FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n GL_FORMATS2[GL_FORMATS2[\"RG\"] = 33319] = \"RG\";\n GL_FORMATS2[GL_FORMATS2[\"RED\"] = 6403] = \"RED\";\n GL_FORMATS2[GL_FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return GL_FORMATS2;\n})(GL_FORMATS || {});\nvar GL_TARGETS = /* @__PURE__ */ ((GL_TARGETS2) => {\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return GL_TARGETS2;\n})(GL_TARGETS || {});\nvar GL_WRAP_MODES = /* @__PURE__ */ ((GL_WRAP_MODES2) => {\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return GL_WRAP_MODES2;\n})(GL_WRAP_MODES || {});\nvar GL_TYPES = /* @__PURE__ */ ((GL_TYPES2) => {\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n GL_TYPES2[GL_TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n GL_TYPES2[GL_TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n GL_TYPES2[GL_TYPES2[\"INT\"] = 5124] = \"INT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n GL_TYPES2[GL_TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return GL_TYPES2;\n})(GL_TYPES || {});\n\nexport { GL_FORMATS, GL_TARGETS, GL_TYPES, GL_WRAP_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { GL_TYPES } from '../../texture/const.mjs';\n\n\"use strict\";\nconst infoMap = {\n uint8x2: GL_TYPES.UNSIGNED_BYTE,\n uint8x4: GL_TYPES.UNSIGNED_BYTE,\n sint8x2: GL_TYPES.BYTE,\n sint8x4: GL_TYPES.BYTE,\n unorm8x2: GL_TYPES.UNSIGNED_BYTE,\n unorm8x4: GL_TYPES.UNSIGNED_BYTE,\n snorm8x2: GL_TYPES.BYTE,\n snorm8x4: GL_TYPES.BYTE,\n uint16x2: GL_TYPES.UNSIGNED_SHORT,\n uint16x4: GL_TYPES.UNSIGNED_SHORT,\n sint16x2: GL_TYPES.SHORT,\n sint16x4: GL_TYPES.SHORT,\n unorm16x2: GL_TYPES.UNSIGNED_SHORT,\n unorm16x4: GL_TYPES.UNSIGNED_SHORT,\n snorm16x2: GL_TYPES.SHORT,\n snorm16x4: GL_TYPES.SHORT,\n float16x2: GL_TYPES.HALF_FLOAT,\n float16x4: GL_TYPES.HALF_FLOAT,\n float32: GL_TYPES.FLOAT,\n float32x2: GL_TYPES.FLOAT,\n float32x3: GL_TYPES.FLOAT,\n float32x4: GL_TYPES.FLOAT,\n uint32: GL_TYPES.UNSIGNED_INT,\n uint32x2: GL_TYPES.UNSIGNED_INT,\n uint32x3: GL_TYPES.UNSIGNED_INT,\n uint32x4: GL_TYPES.UNSIGNED_INT,\n sint32: GL_TYPES.INT,\n sint32x2: GL_TYPES.INT,\n sint32x3: GL_TYPES.INT,\n sint32x4: GL_TYPES.INT\n};\nfunction getGlTypeFromFormat(format) {\n return infoMap[format] ?? infoMap.float32;\n}\n\nexport { getGlTypeFromFormat };\n//# sourceMappingURL=getGlTypeFromFormat.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { getAttributeInfoFromFormat } from '../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { ensureAttributes } from '../shader/program/ensureAttributes.mjs';\nimport { getGlTypeFromFormat } from './utils/getGlTypeFromFormat.mjs';\n\n\"use strict\";\nconst topologyToGlMap = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 3,\n \"triangle-list\": 4,\n \"triangle-strip\": 5\n};\nclass GlGeometryGpuData {\n constructor() {\n this.vaoCache = /* @__PURE__ */ Object.create(null);\n }\n destroy() {\n this.vaoCache = /* @__PURE__ */ Object.create(null);\n }\n}\nclass GlGeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this._managedGeometries = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onGeometryUnload.bind(this),\n name: \"glGeometry\"\n });\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this.gl = this._renderer.gl;\n if (!this._renderer.context.supports.vertexArrayObject) {\n throw new Error(\"[PixiJS] Vertex Array Objects are not supported on this device\");\n }\n this.destroyAll(true);\n const nativeVaoExtension = this._renderer.context.extensions.vertexArrayObject;\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n }\n const nativeInstancedExtension = this._renderer.context.extensions.vertexAttribDivisorANGLE;\n if (nativeInstancedExtension) {\n gl.drawArraysInstanced = (a, b, c, d) => {\n nativeInstancedExtension.drawArraysInstancedANGLE(a, b, c, d);\n };\n gl.drawElementsInstanced = (a, b, c, d, e) => {\n nativeInstancedExtension.drawElementsInstancedANGLE(a, b, c, d, e);\n };\n gl.vertexAttribDivisor = (a, b) => nativeInstancedExtension.vertexAttribDivisorANGLE(a, b);\n }\n this._activeGeometry = null;\n this._activeVao = null;\n }\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param program - Instance of program to use vao for.\n */\n bind(geometry, program) {\n const gl = this.gl;\n this._activeGeometry = geometry;\n const vao = this.getVao(geometry, program);\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n gl.bindVertexArray(vao);\n }\n this.updateBuffers();\n }\n /** Reset and unbind any active VAO and geometry. */\n resetState() {\n this.unbind();\n }\n /** Update buffers of the currently bound geometry. */\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this._renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.updateBuffer(buffer);\n }\n geometry._gcLastUsed = this._renderer.gc.now;\n }\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program._attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program._attributeData;\n const strings = [\"g\", geometry.uid];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n getVao(geometry, program) {\n return geometry._gpuData[this._renderer.uid]?.vaoCache[program._key] || this.initGeometryVao(geometry, program);\n }\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param program\n * @param _incRefCount - Increment refCount of all geometry buffers.\n */\n initGeometryVao(geometry, program, _incRefCount = true) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n this._renderer.shader._getProgramData(program);\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n let gpuData = geometry._gpuData[this._renderer.uid];\n if (!gpuData) {\n gpuData = new GlGeometryGpuData();\n geometry._gpuData[this._renderer.uid] = gpuData;\n this._managedGeometries.add(geometry);\n }\n const vaoObjectHash = gpuData.vaoCache;\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program._key] = vao;\n return vao;\n }\n ensureAttributes(geometry, program._attributeData);\n const buffers = geometry.buffers;\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program._key] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n return vao;\n }\n onGeometryUnload(geometry, contextLost = false) {\n const gpuData = geometry._gpuData[this._renderer.uid];\n if (!gpuData) return;\n const vaoCache = gpuData.vaoCache;\n if (!contextLost) {\n for (const i in vaoCache) {\n if (this._activeVao !== vaoCache[i]) {\n this.resetState();\n }\n this.gl.deleteVertexArray(vaoCache[i]);\n }\n }\n }\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n destroyAll(contextLost = false) {\n this._managedGeometries.removeAll(contextLost);\n }\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n activateVao(geometry, program) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = attribute.buffer;\n const glBuffer = bufferSystem.getGlBuffer(buffer);\n const programAttrib = program._attributeData[j];\n if (programAttrib) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = programAttrib.location;\n gl.enableVertexAttribArray(location);\n const attributeInfo = getAttributeInfoFromFormat(attribute.format);\n const type = getGlTypeFromFormat(attribute.format);\n if (programAttrib.format?.substring(1, 4) === \"int\") {\n gl.vertexAttribIPointer(\n location,\n attributeInfo.size,\n type,\n attribute.stride,\n attribute.offset\n );\n } else {\n gl.vertexAttribPointer(\n location,\n attributeInfo.size,\n type,\n attributeInfo.normalised,\n attribute.stride,\n attribute.offset\n );\n }\n if (attribute.instance) {\n if (this.hasInstance) {\n const divisor = attribute.divisor ?? 1;\n gl.vertexAttribDivisor(location, divisor);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n /**\n * Draws the currently bound geometry.\n * @param topology - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n * @returns This instance of the geometry system.\n */\n draw(topology, size, start, instanceCount) {\n const { gl } = this._renderer;\n const geometry = this._activeGeometry;\n const glTopology = topologyToGlMap[topology || geometry.topology];\n instanceCount ?? (instanceCount = geometry.instanceCount);\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (instanceCount !== 1) {\n gl.drawElementsInstanced(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount);\n } else {\n gl.drawElements(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else if (instanceCount !== 1) {\n gl.drawArraysInstanced(glTopology, start || 0, size || geometry.getSize(), instanceCount);\n } else {\n gl.drawArrays(glTopology, start || 0, size || geometry.getSize());\n }\n return this;\n }\n /** Unbind/reset everything. */\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this._managedGeometries.destroy();\n this._renderer = null;\n this.gl = null;\n this._activeVao = null;\n this._activeGeometry = null;\n }\n}\n/** @ignore */\nGlGeometrySystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"geometry\"\n};\n\nexport { GlGeometryGpuData, GlGeometrySystem };\n//# sourceMappingURL=GlGeometrySystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\nimport { Geometry } from '../shared/geometry/Geometry.mjs';\nimport { Shader } from '../shared/shader/Shader.mjs';\nimport { State } from '../shared/state/State.mjs';\nimport { TextureSource } from '../shared/texture/sources/TextureSource.mjs';\nimport { Texture } from '../shared/texture/Texture.mjs';\nimport { GlProgram } from './shader/GlProgram.mjs';\n\n\"use strict\";\nconst bigTriangleGeometry = new Geometry({\n attributes: {\n aPosition: [\n -1,\n -1,\n // Bottom left corner\n 3,\n -1,\n // Bottom right corner, extending beyond right edge\n -1,\n 3\n // Top left corner, extending beyond top edge\n ]\n }\n});\nconst _GlBackBufferSystem = class _GlBackBufferSystem {\n constructor(renderer) {\n /** if true, the back buffer is used */\n this.useBackBuffer = false;\n this._useBackBufferThisRender = false;\n this._renderer = renderer;\n }\n init(options = {}) {\n const { useBackBuffer, antialias } = { ..._GlBackBufferSystem.defaultOptions, ...options };\n this.useBackBuffer = useBackBuffer;\n this._antialias = antialias;\n if (!this._renderer.context.supports.msaa) {\n warn(\"antialiasing, is not supported on when using the back buffer\");\n this._antialias = false;\n }\n this._state = State.for2d();\n const bigTriangleProgram = new GlProgram({\n vertex: `\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }`,\n fragment: `\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }`,\n name: \"big-triangle\"\n });\n this._bigTriangleShader = new Shader({\n glProgram: bigTriangleProgram,\n resources: {\n uTexture: Texture.WHITE.source\n }\n });\n }\n /**\n * This is called before the RenderTargetSystem is started. This is where\n * we replace the target with the back buffer if required.\n * @param options - The options for this render.\n */\n renderStart(options) {\n const renderTarget = this._renderer.renderTarget.getRenderTarget(options.target);\n this._useBackBufferThisRender = this.useBackBuffer && !!renderTarget.isRoot;\n if (this._useBackBufferThisRender) {\n const renderTarget2 = this._renderer.renderTarget.getRenderTarget(options.target);\n this._targetTexture = renderTarget2.colorTexture;\n options.target = this._getBackBufferTexture(renderTarget2.colorTexture);\n }\n }\n renderEnd() {\n this._presentBackBuffer();\n }\n _presentBackBuffer() {\n const renderer = this._renderer;\n renderer.renderTarget.finishRenderPass();\n if (!this._useBackBufferThisRender) return;\n renderer.renderTarget.bind(this._targetTexture, false);\n this._bigTriangleShader.resources.uTexture = this._backBufferTexture.source;\n renderer.encoder.draw({\n geometry: bigTriangleGeometry,\n shader: this._bigTriangleShader,\n state: this._state\n });\n }\n _getBackBufferTexture(targetSourceTexture) {\n this._backBufferTexture = this._backBufferTexture || new Texture({\n source: new TextureSource({\n width: targetSourceTexture.width,\n height: targetSourceTexture.height,\n resolution: targetSourceTexture._resolution,\n antialias: this._antialias\n })\n });\n this._backBufferTexture.source.resize(\n targetSourceTexture.width,\n targetSourceTexture.height,\n targetSourceTexture._resolution\n );\n return this._backBufferTexture;\n }\n /** destroys the back buffer */\n destroy() {\n if (this._backBufferTexture) {\n this._backBufferTexture.destroy();\n this._backBufferTexture = null;\n }\n }\n};\n/** @ignore */\n_GlBackBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"backBuffer\",\n priority: 1\n};\n/** default options for the back buffer system */\n_GlBackBufferSystem.defaultOptions = {\n /** if true will use the back buffer where required */\n useBackBuffer: false\n};\nlet GlBackBufferSystem = _GlBackBufferSystem;\n\nexport { GlBackBufferSystem };\n//# sourceMappingURL=GlBackBufferSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n this._renderer.gl.colorMask(\n !!(colorMask & 8),\n !!(colorMask & 4),\n !!(colorMask & 2),\n !!(colorMask & 1)\n );\n }\n}\n/** @ignore */\nGlColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GlColorMaskSystem };\n//# sourceMappingURL=GlColorMaskSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlEncoderSystem {\n constructor(renderer) {\n this.commandFinished = Promise.resolve();\n this._renderer = renderer;\n }\n setGeometry(geometry, shader) {\n this._renderer.geometry.bind(geometry, shader.glProgram);\n }\n finishRenderPass() {\n }\n draw(options) {\n const renderer = this._renderer;\n const { geometry, shader, state, skipSync, topology: type, size, start, instanceCount } = options;\n renderer.shader.bind(shader, skipSync);\n renderer.geometry.bind(geometry, renderer.shader._activeProgram);\n if (state) {\n renderer.state.set(state);\n }\n renderer.geometry.draw(type, size, start, instanceCount ?? geometry.instanceCount);\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGlEncoderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"encoder\"\n};\n\nexport { GlEncoderSystem };\n//# sourceMappingURL=GlEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { checkMaxIfStatementsInShader } from '../../batcher/gl/utils/checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nclass GlLimitsSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n contextChange() {\n const gl = this._renderer.gl;\n this.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.maxBatchableTextures = checkMaxIfStatementsInShader(this.maxTextures, gl);\n const isWebGl2 = this._renderer.context.webGLVersion === 2;\n this.maxUniformBindings = isWebGl2 ? gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS) : 0;\n }\n destroy() {\n }\n}\n/** @ignore */\nGlLimitsSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"limits\"\n};\n\nexport { GlLimitsSystem };\n//# sourceMappingURL=GlLimitsSystem.mjs.map\n","\"use strict\";\nclass GlRenderTarget {\n constructor() {\n this.width = -1;\n this.height = -1;\n this.msaa = false;\n /**\n * Tracks which mip level is currently attached to this render target's framebuffer.\n * This lets us skip redundant framebufferTexture2D calls on the common path.\n * @internal\n */\n this._attachedMipLevel = 0;\n /**\n * Tracks which array layer (or cube face index) is currently attached to this render target's framebuffer.\n * For non-array 2D textures this will always be 0.\n * @internal\n */\n this._attachedLayer = 0;\n this.msaaRenderBuffer = [];\n }\n}\n\nexport { GlRenderTarget };\n//# sourceMappingURL=GlRenderTarget.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuStencilModesToPixi } from '../gpu/state/GpuStencilModesToPixi.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GlStencilSystem {\n constructor(renderer) {\n this._stencilCache = {\n enabled: false,\n stencilReference: 0,\n stencilMode: STENCIL_MODES.NONE\n };\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n contextChange(gl) {\n this._gl = gl;\n this._comparisonFuncMapping = {\n always: gl.ALWAYS,\n never: gl.NEVER,\n equal: gl.EQUAL,\n \"not-equal\": gl.NOTEQUAL,\n less: gl.LESS,\n \"less-equal\": gl.LEQUAL,\n greater: gl.GREATER,\n \"greater-equal\": gl.GEQUAL\n };\n this._stencilOpsMapping = {\n keep: gl.KEEP,\n zero: gl.ZERO,\n replace: gl.REPLACE,\n invert: gl.INVERT,\n \"increment-clamp\": gl.INCR,\n \"decrement-clamp\": gl.DECR,\n \"increment-wrap\": gl.INCR_WRAP,\n \"decrement-wrap\": gl.DECR_WRAP\n };\n this.resetState();\n }\n onRenderTargetChange(renderTarget) {\n if (this._activeRenderTarget === renderTarget) return;\n this._activeRenderTarget = renderTarget;\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n resetState() {\n this._stencilCache.enabled = false;\n this._stencilCache.stencilMode = STENCIL_MODES.NONE;\n this._stencilCache.stencilReference = 0;\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n const gl = this._gl;\n const mode = GpuStencilModesToPixi[stencilMode];\n const _stencilCache = this._stencilCache;\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n if (stencilMode === STENCIL_MODES.DISABLED) {\n if (this._stencilCache.enabled) {\n this._stencilCache.enabled = false;\n gl.disable(gl.STENCIL_TEST);\n }\n return;\n }\n if (!this._stencilCache.enabled) {\n this._stencilCache.enabled = true;\n gl.enable(gl.STENCIL_TEST);\n }\n if (stencilMode !== _stencilCache.stencilMode || _stencilCache.stencilReference !== stencilReference) {\n _stencilCache.stencilMode = stencilMode;\n _stencilCache.stencilReference = stencilReference;\n gl.stencilFunc(this._comparisonFuncMapping[mode.stencilBack.compare], stencilReference, 255);\n gl.stencilOp(gl.KEEP, gl.KEEP, this._stencilOpsMapping[mode.stencilBack.passOp]);\n }\n }\n}\n/** @ignore */\nGlStencilSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"stencil\"\n};\n\nexport { GlStencilSystem };\n//# sourceMappingURL=GlStencilSystem.mjs.map\n","\"use strict\";\nconst WGSL_TO_STD40_SIZE = {\n f32: 4,\n i32: 4,\n \"vec2<f32>\": 8,\n \"vec3<f32>\": 12,\n \"vec4<f32>\": 16,\n \"vec2<i32>\": 8,\n \"vec3<i32>\": 12,\n \"vec4<i32>\": 16,\n \"mat2x2<f32>\": 16 * 2,\n \"mat3x3<f32>\": 16 * 3,\n \"mat4x4<f32>\": 16 * 4\n // TODO - not essential for now but support these in the future\n // int: 4,\n // ivec2: 8,\n // ivec3: 12,\n // ivec4: 16,\n // uint: 4,\n // uvec2: 8,\n // uvec3: 12,\n // uvec4: 16,\n // bool: 4,\n // bvec2: 8,\n // bvec3: 12,\n // bvec4: 16,\n // mat2: 16 * 2,\n // mat3: 16 * 3,\n // mat4: 16 * 4,\n};\nfunction createUboElementsSTD40(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n const chunkSize = 16;\n let size = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = WGSL_TO_STD40_SIZE[uboElement.data.type];\n if (!size) {\n throw new Error(`Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, chunkSize) * uboElement.data.size;\n }\n const boundary = size === 12 ? 16 : size;\n uboElement.size = size;\n const curOffset = offset % chunkSize;\n if (curOffset > 0 && chunkSize - curOffset < boundary) {\n offset += (chunkSize - curOffset) % 16;\n } else {\n offset += (size - curOffset % size) % size;\n }\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_TO_STD40_SIZE, createUboElementsSTD40 };\n//# sourceMappingURL=createUboElementsSTD40.mjs.map\n","import { WGSL_TO_STD40_SIZE } from './createUboElementsSTD40.mjs';\n\n\"use strict\";\nfunction generateArraySyncSTD40(uboElement, offsetToAdd) {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = uboElement.data.value.length / uboElement.data.size;\n const remainder = (4 - elementSize % 4) % 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n offset += ${offsetToAdd};\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncSTD40 };\n//# sourceMappingURL=generateArraySyncSTD40.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsSTD40 } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncSTD40 } from './generateArraySyncSTD40.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionSTD40(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboStd40\",\n generateArraySyncSTD40,\n uboSyncFunctionsSTD40\n );\n}\n\nexport { createUboSyncFunctionSTD40 };\n//# sourceMappingURL=createUboSyncSTD40.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsSTD40 } from './shader/utils/createUboElementsSTD40.mjs';\nimport { createUboSyncFunctionSTD40 } from './shader/utils/createUboSyncSTD40.mjs';\n\n\"use strict\";\nclass GlUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsSTD40,\n generateUboSync: createUboSyncFunctionSTD40\n });\n }\n}\n/** @ignore */\nGlUboSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"ubo\"\n};\n\nexport { GlUboSystem };\n//# sourceMappingURL=GlUboSystem.mjs.map\n","import { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { CLEAR } from '../const.mjs';\nimport { GlRenderTarget } from '../GlRenderTarget.mjs';\n\n\"use strict\";\nclass GlRenderTargetAdaptor {\n constructor() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n }\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n const gl = this._renderer.gl;\n this._drawBuffersCache = [];\n for (let i = 1; i <= 16; i++) {\n this._drawBuffersCache[i] = Array.from({ length: i }, (_, j) => gl.COLOR_ATTACHMENT0 + j);\n }\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderTargetSystem = this._renderTargetSystem;\n const renderer = this._renderer;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const gl = renderer.gl;\n this.finishRenderPass(sourceRenderSurfaceTexture);\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n renderer.texture.bind(destinationTexture, 0);\n gl.copyTexSubImage2D(\n gl.TEXTURE_2D,\n 0,\n originDest.x,\n originDest.y,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n const renderTargetSystem = this._renderTargetSystem;\n const source = renderTarget.colorTexture;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (layer !== 0 && this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers requires WebGL2.\");\n }\n if (mipLevel > 0) {\n if (gpuRenderTarget.msaa) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.\");\n }\n if (this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels requires WebGL2.\");\n }\n }\n let viewPortY = viewport.y;\n if (renderTarget.isRoot) {\n viewPortY = source.pixelHeight - viewport.height - viewport.y;\n }\n renderTarget.colorTextures.forEach((texture) => {\n this._renderer.texture.unbind(texture);\n });\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, gpuRenderTarget.framebuffer);\n if (!renderTarget.isRoot && (gpuRenderTarget._attachedMipLevel !== mipLevel || gpuRenderTarget._attachedLayer !== layer)) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const glSource = this._renderer.texture.getGlSource(colorTexture);\n if (glSource.target === gl.TEXTURE_2D) {\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] layer must be 0 when rendering to 2D textures in WebGL.\");\n }\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_2D,\n glSource.texture,\n mipLevel\n );\n } else if (glSource.target === gl.TEXTURE_2D_ARRAY) {\n if (this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to 2D array textures requires WebGL2.\");\n }\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n glSource.texture,\n mipLevel,\n layer\n );\n } else if (glSource.target === gl.TEXTURE_CUBE_MAP) {\n if (layer < 0 || layer > 5) {\n throw new Error(\"[RenderTargetSystem] Cube map layer must be between 0 and 5.\");\n }\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + layer,\n glSource.texture,\n mipLevel\n );\n } else {\n throw new Error(\"[RenderTargetSystem] Unsupported texture target for render-to-layer in WebGL.\");\n }\n });\n gpuRenderTarget._attachedMipLevel = mipLevel;\n gpuRenderTarget._attachedLayer = layer;\n }\n if (renderTarget.colorTextures.length > 1) {\n this._setDrawBuffers(renderTarget, gl);\n }\n const viewPortCache = this._viewPortCache;\n if (viewPortCache.x !== viewport.x || viewPortCache.y !== viewPortY || viewPortCache.width !== viewport.width || viewPortCache.height !== viewport.height) {\n viewPortCache.x = viewport.x;\n viewPortCache.y = viewPortY;\n viewPortCache.width = viewport.width;\n viewPortCache.height = viewport.height;\n gl.viewport(\n viewport.x,\n viewPortY,\n viewport.width,\n viewport.height\n );\n }\n if (!gpuRenderTarget.depthStencilRenderBuffer && (renderTarget.stencil || renderTarget.depth)) {\n this._initStencil(gpuRenderTarget);\n }\n this.clear(renderTarget, clear, clearColor);\n }\n finishRenderPass(renderTarget) {\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (!glRenderTarget.msaa) return;\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, glRenderTarget.framebuffer);\n gl.blitFramebuffer(\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n gl.COLOR_BUFFER_BIT,\n gl.NEAREST\n );\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.framebuffer);\n }\n initGpuRenderTarget(renderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const glRenderTarget = new GlRenderTarget();\n glRenderTarget._attachedMipLevel = 0;\n glRenderTarget._attachedLayer = 0;\n const colorTexture = renderTarget.colorTexture;\n if (colorTexture instanceof CanvasSource) {\n this._renderer.context.ensureCanvasSize(renderTarget.colorTexture.resource);\n glRenderTarget.framebuffer = null;\n return glRenderTarget;\n }\n this._initColor(renderTarget, glRenderTarget);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return glRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n const gl = this._renderer.gl;\n if (gpuRenderTarget.framebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.framebuffer);\n gpuRenderTarget.framebuffer = null;\n }\n if (gpuRenderTarget.resolveTargetFramebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.resolveTargetFramebuffer);\n gpuRenderTarget.resolveTargetFramebuffer = null;\n }\n if (gpuRenderTarget.depthStencilRenderBuffer) {\n gl.deleteRenderbuffer(gpuRenderTarget.depthStencilRenderBuffer);\n gpuRenderTarget.depthStencilRenderBuffer = null;\n }\n gpuRenderTarget.msaaRenderBuffer.forEach((renderBuffer) => {\n gl.deleteRenderbuffer(renderBuffer);\n });\n gpuRenderTarget.msaaRenderBuffer = null;\n }\n clear(_renderTarget, clear, clearColor, _viewport, _mipLevel = 0, layer = 0) {\n if (!clear) return;\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] Clearing array layers is not supported in WebGL renderer.\");\n }\n const renderTargetSystem = this._renderTargetSystem;\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const gl = this._renderer.gl;\n if (clear & CLEAR.COLOR) {\n clearColor ?? (clearColor = renderTargetSystem.defaultClearColor);\n const clearColorCache = this._clearColorCache;\n const clearColorArray = clearColor;\n if (clearColorCache[0] !== clearColorArray[0] || clearColorCache[1] !== clearColorArray[1] || clearColorCache[2] !== clearColorArray[2] || clearColorCache[3] !== clearColorArray[3]) {\n clearColorCache[0] = clearColorArray[0];\n clearColorCache[1] = clearColorArray[1];\n clearColorCache[2] = clearColorArray[2];\n clearColorCache[3] = clearColorArray[3];\n gl.clearColor(clearColorArray[0], clearColorArray[1], clearColorArray[2], clearColorArray[3]);\n }\n }\n gl.clear(clear);\n }\n resizeGpuRenderTarget(renderTarget) {\n if (renderTarget.isRoot) return;\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n this._resizeColor(renderTarget, glRenderTarget);\n if (renderTarget.stencil || renderTarget.depth) {\n this._resizeStencil(glRenderTarget);\n }\n }\n _initColor(renderTarget, glRenderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const resolveTargetFramebuffer = gl.createFramebuffer();\n glRenderTarget.resolveTargetFramebuffer = resolveTargetFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, resolveTargetFramebuffer);\n glRenderTarget.width = renderTarget.colorTexture.source.pixelWidth;\n glRenderTarget.height = renderTarget.colorTexture.source.pixelHeight;\n const colorTextures = renderTarget.colorTextures;\n colorTextures.forEach((colorTexture, i) => {\n const source = colorTexture.source;\n if (source.antialias) {\n if (renderer.context.supports.msaa) {\n glRenderTarget.msaa = true;\n } else {\n warn(\"[RenderTexture] Antialiasing on textures is not supported in WebGL1\");\n }\n }\n renderer.texture.bindSource(source, 0);\n const glSource = renderer.texture.getGlSource(source);\n const glTexture = glSource.texture;\n if (glSource.target === gl.TEXTURE_2D) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_2D,\n glTexture,\n 0\n );\n } else if (glSource.target === gl.TEXTURE_2D_ARRAY) {\n if (renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] TEXTURE_2D_ARRAY requires WebGL2.\");\n }\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n glTexture,\n 0,\n 0\n );\n } else if (glSource.target === gl.TEXTURE_CUBE_MAP) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n glTexture,\n 0\n );\n } else {\n throw new Error(\"[RenderTargetSystem] Unsupported texture target for framebuffer attachment.\");\n }\n });\n if (glRenderTarget.msaa) {\n const viewFramebuffer = gl.createFramebuffer();\n glRenderTarget.framebuffer = viewFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((_, i) => {\n const msaaRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.msaaRenderBuffer[i] = msaaRenderBuffer;\n });\n } else {\n glRenderTarget.framebuffer = resolveTargetFramebuffer;\n }\n this._resizeColor(renderTarget, glRenderTarget);\n }\n _resizeColor(renderTarget, glRenderTarget) {\n const source = renderTarget.colorTexture.source;\n glRenderTarget.width = source.pixelWidth;\n glRenderTarget.height = source.pixelHeight;\n glRenderTarget._attachedMipLevel = 0;\n glRenderTarget._attachedLayer = 0;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (i === 0) return;\n colorTexture.source.resize(source.width, source.height, source._resolution);\n });\n if (glRenderTarget.msaa) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const viewFramebuffer = glRenderTarget.framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const source2 = colorTexture.source;\n renderer.texture.bindSource(source2, 0);\n const glSource = renderer.texture.getGlSource(source2);\n const glInternalFormat = glSource.internalFormat;\n const msaaRenderBuffer = glRenderTarget.msaaRenderBuffer[i];\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n glInternalFormat,\n source2.pixelWidth,\n source2.pixelHeight\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n });\n }\n }\n _initStencil(glRenderTarget) {\n if (glRenderTarget.framebuffer === null) return;\n const gl = this._renderer.gl;\n const depthStencilRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.depthStencilRenderBuffer = depthStencilRenderBuffer;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n this._resizeStencil(glRenderTarget);\n }\n _resizeStencil(glRenderTarget) {\n const gl = this._renderer.gl;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n glRenderTarget.depthStencilRenderBuffer\n );\n if (glRenderTarget.msaa) {\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n gl.DEPTH24_STENCIL8,\n glRenderTarget.width,\n glRenderTarget.height\n );\n } else {\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n this._renderer.context.webGLVersion === 2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n glRenderTarget.width,\n glRenderTarget.height\n );\n }\n }\n prerender(renderTarget) {\n const resource = renderTarget.colorTexture.resource;\n if (this._renderer.context.multiView && CanvasSource.test(resource)) {\n this._renderer.context.ensureCanvasSize(resource);\n }\n }\n postrender(renderTarget) {\n if (!this._renderer.context.multiView) return;\n if (CanvasSource.test(renderTarget.colorTexture.resource)) {\n const contextCanvas = this._renderer.context.canvas;\n const canvasSource = renderTarget.colorTexture;\n canvasSource.context2D.drawImage(\n contextCanvas,\n 0,\n canvasSource.pixelHeight - contextCanvas.height\n );\n }\n }\n _setDrawBuffers(renderTarget, gl) {\n const count = renderTarget.colorTextures.length;\n const bufferArray = this._drawBuffersCache[count];\n if (this._renderer.context.webGLVersion === 1) {\n const ext = this._renderer.context.extensions.drawBuffers;\n if (!ext) {\n warn(\"[RenderTexture] This WebGL1 context does not support rendering to multiple targets\");\n } else {\n ext.drawBuffersWEBGL(bufferArray);\n }\n } else {\n gl.drawBuffers(bufferArray);\n }\n }\n}\n\nexport { GlRenderTargetAdaptor };\n//# sourceMappingURL=GlRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GlRenderTargetAdaptor } from './GlRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GlRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GlRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGlRenderTargetSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"renderTarget\"\n};\n\nexport { GlRenderTargetSystem };\n//# sourceMappingURL=GlRenderTargetSystem.mjs.map\n","import { BufferResource } from '../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\n\n\"use strict\";\nfunction generateShaderSyncCode(shader, shaderSystem) {\n const funcFragments = [];\n const headerFragments = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n let addedTextreSystem = false;\n let textureCount = 0;\n const programData = shaderSystem._getProgramData(shader.glProgram);\n for (const i in shader.groups) {\n const group = shader.groups[i];\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n for (const j in group.resources) {\n const resource = group.resources[j];\n if (resource instanceof UniformGroup) {\n if (resource.ubo) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n } else if (resource instanceof BufferResource) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else if (resource instanceof TextureSource) {\n const uniformName = shader._uniformBindMap[i][j];\n const uniformData = programData.uniformData[uniformName];\n if (uniformData) {\n if (!addedTextreSystem) {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n textureCount++;\n }\n }\n }\n }\n const functionSource = [...headerFragments, ...funcFragments].join(\"\\n\");\n return new Function(\"r\", \"s\", \"sD\", functionSource);\n}\n\nexport { generateShaderSyncCode };\n//# sourceMappingURL=GenerateShaderSyncCode.mjs.map\n","\"use strict\";\nclass IGLUniformData {\n}\nclass GlProgramData {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBlockBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBlockBindings = null;\n this.program = null;\n }\n}\n\nexport { GlProgramData, IGLUniformData };\n//# sourceMappingURL=GlProgramData.mjs.map\n","\"use strict\";\nfunction compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","\"use strict\";\nfunction booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","\"use strict\";\nlet GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nconst GLSL_TO_VERTEX_TYPES = {\n float: \"float32\",\n vec2: \"float32x2\",\n vec3: \"float32x3\",\n vec4: \"float32x4\",\n int: \"sint32\",\n ivec2: \"sint32x2\",\n ivec3: \"sint32x3\",\n ivec4: \"sint32x4\",\n uint: \"uint32\",\n uvec2: \"uint32x2\",\n uvec3: \"uint32x3\",\n uvec4: \"uint32x4\",\n bool: \"uint32\",\n bvec2: \"uint32x2\",\n bvec3: \"uint32x3\",\n bvec4: \"uint32x4\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\nfunction mapGlToVertexFormat(gl, type) {\n const typeValue = mapType(gl, type);\n return GLSL_TO_VERTEX_TYPES[typeValue] || \"float32\";\n}\n\nexport { mapGlToVertexFormat, mapType };\n//# sourceMappingURL=mapType.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { mapGlToVertexFormat } from './mapType.mjs';\n\n\"use strict\";\nfunction extractAttributesFromGlProgram(program, gl, sortAttributes = false) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const format = mapGlToVertexFormat(gl, attribData.type);\n attributes[attribData.name] = {\n location: 0,\n // set further down..\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n const keys = Object.keys(attributes);\n if (sortAttributes) {\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = i;\n gl.bindAttribLocation(program, i, keys[i]);\n }\n gl.linkProgram(program);\n } else {\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = gl.getAttribLocation(program, keys[i]);\n }\n }\n return attributes;\n}\n\nexport { extractAttributesFromGlProgram };\n//# sourceMappingURL=extractAttributesFromGlProgram.mjs.map\n","\"use strict\";\nfunction getUboData(program, gl) {\n if (!gl.ACTIVE_UNIFORM_BLOCKS) return {};\n const uniformBlocks = {};\n const totalUniformsBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let i = 0; i < totalUniformsBlocks; i++) {\n const name = gl.getActiveUniformBlockName(program, i);\n const uniformBlockIndex = gl.getUniformBlockIndex(program, name);\n const size = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_DATA_SIZE);\n uniformBlocks[name] = {\n name,\n index: uniformBlockIndex,\n size\n };\n }\n return uniformBlocks;\n}\n\nexport { getUboData };\n//# sourceMappingURL=getUboData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\n\"use strict\";\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","\"use strict\";\nfunction logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { GlProgramData } from '../GlProgramData.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram.mjs';\nimport { getUboData } from './getUboData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\n\"use strict\";\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n } else {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertex)\n );\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program._uniformData) {\n const data = program._uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateShaderSyncCode } from './GenerateShaderSyncCode.mjs';\nimport { generateProgram } from './program/generateProgram.mjs';\n\n\"use strict\";\nconst defaultSyncData = {\n textureCount: 0,\n blockIndex: 0\n};\nclass GlShaderSystem {\n constructor(renderer) {\n /** @internal */\n this._activeProgram = null;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gl) {\n this._gl = gl;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._activeProgram = null;\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param skipSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, skipSync) {\n this._setProgram(shader.glProgram);\n if (skipSync) return;\n defaultSyncData.textureCount = 0;\n defaultSyncData.blockIndex = 0;\n let syncFunction = this._shaderSyncFunctions[shader.glProgram._key];\n if (!syncFunction) {\n syncFunction = this._shaderSyncFunctions[shader.glProgram._key] = this._generateShaderSync(shader, this);\n }\n this._renderer.buffer.nextBindBase(!!shader.glProgram.transformFeedbackVaryings);\n syncFunction(this._renderer, shader, defaultSyncData);\n }\n /**\n * Updates the uniform group.\n * @param uniformGroup - the uniform group to update\n */\n updateUniformGroup(uniformGroup) {\n this._renderer.uniformGroup.updateUniformGroup(uniformGroup, this._activeProgram, defaultSyncData);\n }\n /**\n * Binds a uniform block to the shader.\n * @param uniformGroup - the uniform group to bind\n * @param name - the name of the uniform block\n * @param index - the index of the uniform block\n */\n bindUniformBlock(uniformGroup, name, index = 0) {\n const bufferSystem = this._renderer.buffer;\n const programData = this._getProgramData(this._activeProgram);\n const isBufferResource = uniformGroup._bufferResource;\n if (!isBufferResource) {\n this._renderer.ubo.updateUniformGroup(uniformGroup);\n }\n const buffer = uniformGroup.buffer;\n const glBuffer = bufferSystem.updateBuffer(buffer);\n const boundLocation = bufferSystem.freeLocationForBufferBase(glBuffer);\n if (isBufferResource) {\n const { offset, size } = uniformGroup;\n if (offset === 0 && size === buffer.data.byteLength) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n } else {\n bufferSystem.bindBufferRange(glBuffer, boundLocation, offset);\n }\n } else if (bufferSystem.getLastBindBaseLocation(glBuffer) !== boundLocation) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n }\n const uniformBlockIndex = this._activeProgram._uniformBlockData[name].index;\n if (programData.uniformBlockBindings[index] === boundLocation) return;\n programData.uniformBlockBindings[index] = boundLocation;\n this._renderer.gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundLocation);\n }\n _setProgram(program) {\n if (this._activeProgram === program) return;\n this._activeProgram = program;\n const programData = this._getProgramData(program);\n this._gl.useProgram(programData.program);\n }\n /**\n * @param program - the program to get the data for\n * @internal\n */\n _getProgramData(program) {\n return this._programDataHash[program._key] || this._createProgramData(program);\n }\n _createProgramData(program) {\n const key = program._key;\n this._programDataHash[key] = generateProgram(this._gl, program);\n return this._programDataHash[key];\n }\n destroy() {\n for (const key of Object.keys(this._programDataHash)) {\n this._programDataHash[key].destroy();\n }\n this._programDataHash = null;\n this._shaderSyncFunctions = null;\n this._activeProgram = null;\n this._renderer = null;\n this._gl = null;\n }\n /**\n * Creates a function that can be executed that will sync the shader as efficiently as possible.\n * Overridden by the unsafe eval package if you don't want eval used in your project.\n * @param shader - the shader to generate the sync function for\n * @param shaderSystem - the shader system to use\n * @returns - the generated sync function\n * @ignore\n */\n _generateShaderSync(shader, shaderSystem) {\n return generateShaderSyncCode(shader, shaderSystem);\n }\n resetState() {\n this._activeProgram = null;\n }\n}\n/** @ignore */\nGlShaderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"shader\"\n};\n\nexport { GlShaderSystem };\n//# sourceMappingURL=GlShaderSystem.mjs.map\n","\"use strict\";\nconst UNIFORM_TO_SINGLE_SETTERS = {\n f32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n \"vec2<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(location, v[0], v[1]);\n }`,\n \"vec3<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(location, v[0], v[1], v[2]);\n }`,\n \"vec4<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n i32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n u32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(location, v);\n }`,\n \"vec2<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n \"vec3<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n \"vec4<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`\n};\nconst UNIFORM_TO_ARRAY_SETTERS = {\n f32: `gl.uniform1fv(location, v);`,\n \"vec2<f32>\": `gl.uniform2fv(location, v);`,\n \"vec3<f32>\": `gl.uniform3fv(location, v);`,\n \"vec4<f32>\": `gl.uniform4fv(location, v);`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`,\n i32: `gl.uniform1iv(location, v);`,\n \"vec2<i32>\": `gl.uniform2iv(location, v);`,\n \"vec3<i32>\": `gl.uniform3iv(location, v);`,\n \"vec4<i32>\": `gl.uniform4iv(location, v);`,\n u32: `gl.uniform1iv(location, v);`,\n \"vec2<u32>\": `gl.uniform2iv(location, v);`,\n \"vec3<u32>\": `gl.uniform3iv(location, v);`,\n \"vec4<u32>\": `gl.uniform4iv(location, v);`,\n bool: `gl.uniform1iv(location, v);`,\n \"vec2<bool>\": `gl.uniform2iv(location, v);`,\n \"vec3<bool>\": `gl.uniform3iv(location, v);`,\n \"vec4<bool>\": `gl.uniform4iv(location, v);`\n};\n\nexport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS };\n//# sourceMappingURL=generateUniformsSyncTypes.mjs.map\n","import { BufferResource } from '../../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup.mjs';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers.mjs';\nimport { UNIFORM_TO_SINGLE_SETTERS, UNIFORM_TO_ARRAY_SETTERS } from './generateUniformsSyncTypes.mjs';\n\n\"use strict\";\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n for (const i in group.uniforms) {\n if (!uniformData[i]) {\n if (group.uniforms[i] instanceof UniformGroup) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n } else {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n } else if (group.uniforms[i] instanceof BufferResource) {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n continue;\n }\n const uniform = group.uniformStructures[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n const template = templateType[uniform.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\n\"use strict\";\nclass GlUniformGroupSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /** Cache to holds the generated functions. Stored against UniformObjects unique signature. */\n this._cache = {};\n this._uniformGroupSyncHash = {};\n this._renderer = renderer;\n this.gl = null;\n this._cache = {};\n }\n contextChange(gl) {\n this.gl = gl;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param group - the uniforms values that be applied to the current shader\n * @param program\n * @param syncData\n * @param syncData.textureCount\n */\n updateUniformGroup(group, program, syncData) {\n const programData = this._renderer.shader._getProgramData(program);\n if (!group.isStatic || group._dirtyId !== programData.uniformDirtyGroups[group.uid]) {\n programData.uniformDirtyGroups[group.uid] = group._dirtyId;\n const syncFunc = this._getUniformSyncFunction(group, program);\n syncFunc(programData.uniformData, group.uniforms, this._renderer, syncData);\n }\n }\n /**\n * Overridable by the pixi.js/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param program\n */\n _getUniformSyncFunction(group, program) {\n return this._uniformGroupSyncHash[group._signature]?.[program._key] || this._createUniformSyncFunction(group, program);\n }\n _createUniformSyncFunction(group, program) {\n const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature] || (this._uniformGroupSyncHash[group._signature] = {});\n const id = this._getSignature(group, program._uniformData, \"u\");\n if (!this._cache[id]) {\n this._cache[id] = this._generateUniformsSync(group, program._uniformData);\n }\n uniformGroupSyncHash[program._key] = this._cache[id];\n return uniformGroupSyncHash[program._key];\n }\n _generateUniformsSync(group, uniformData) {\n return generateUniformsSync(group, uniformData);\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n _getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this._renderer = null;\n this._cache = null;\n }\n}\n/** @ignore */\nGlUniformGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"uniformGroup\"\n};\n\nexport { GlUniformGroupSystem };\n//# sourceMappingURL=GlUniformGroupSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapWebGLBlendModesToPixi(gl) {\n const blendMap = {};\n blendMap.normal = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.add = [gl.ONE, gl.ONE];\n blendMap.multiply = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.screen = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.none = [0, 0];\n blendMap[\"normal-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap[\"add-npm\"] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n blendMap[\"screen-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.erase = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n const isWebGl2 = !(gl instanceof DOMAdapter.get().getWebGLRenderingContext());\n if (isWebGl2) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MIN, gl.MIN];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MAX, gl.MAX];\n } else {\n const ext = gl.getExtension(\"EXT_blend_minmax\");\n if (ext) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MIN_EXT, ext.MIN_EXT];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MAX_EXT, ext.MAX_EXT];\n }\n }\n return blendMap;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { mapWebGLBlendModesToPixi } from './mapWebGLBlendModesToPixi.mjs';\n\n\"use strict\";\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _GlStateSystem = class _GlStateSystem {\n constructor(renderer) {\n /**\n * Whether to invert the front face when rendering\n * This is used for render textures where the Y-coordinate is flipped\n * @default false\n */\n this._invertFrontFace = false;\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = \"none\";\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = State.for2d();\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n this._invertFrontFace = !renderTarget.isRoot;\n if (this._cullFace) {\n this.setFrontFace(this._frontFace);\n } else {\n this._frontFaceDirty = true;\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModesMap = mapWebGLBlendModesToPixi(gl);\n this.resetState();\n }\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n set(state) {\n state || (state = this.defaultState);\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff >>= 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n forceState(state) {\n state || (state = this.defaultState);\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n setBlend(value) {\n this._updateCheck(_GlStateSystem._checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n setOffset(value) {\n this._updateCheck(_GlStateSystem._checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n setCullFace(value) {\n this._cullFace = value;\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n if (this._cullFace && this._frontFaceDirty) {\n this.setFrontFace(this._frontFace);\n }\n }\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n setFrontFace(value) {\n this._frontFace = value;\n this._frontFaceDirty = false;\n const faceMode = this._invertFrontFace ? !value : value;\n if (this._glFrontFace !== faceMode) {\n this._glFrontFace = faceMode;\n this.gl.frontFace(this.gl[faceMode ? \"CW\" : \"CCW\"]);\n }\n }\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n setBlendMode(value) {\n if (!this.blendModesMap[value]) {\n value = \"normal\";\n }\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModesMap[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n /** Resets all the logic and disables the VAOs. */\n resetState() {\n this._glFrontFace = false;\n this._frontFace = false;\n this._cullFace = false;\n this._frontFaceDirty = false;\n this._invertFrontFace = false;\n this.gl.frontFace(this.gl.CCW);\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = \"\";\n this.setBlendMode(\"normal\");\n }\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n _updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n /** @ignore */\n destroy() {\n this.gl = null;\n this.checks.length = 0;\n }\n};\n/** @ignore */\n_GlStateSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"state\"\n};\nlet GlStateSystem = _GlStateSystem;\n\nexport { GlStateSystem };\n//# sourceMappingURL=GlStateSystem.mjs.map\n","import { GL_TARGETS, GL_TYPES, GL_FORMATS } from './const.mjs';\n\n\"use strict\";\nclass GlTexture {\n constructor(texture) {\n this.target = GL_TARGETS.TEXTURE_2D;\n /**\n * Bitmask tracking which array layers / sub-targets have been initialized at mip level 0.\n * Used by uploaders that need per-layer allocation semantics (e.g. cube faces).\n * @internal\n */\n this._layerInitMask = 0;\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.type = GL_TYPES.UNSIGNED_BYTE;\n this.internalFormat = GL_FORMATS.RGBA;\n this.format = GL_FORMATS.RGBA;\n this.samplerType = 0;\n }\n destroy() {\n }\n}\n\nexport { GlTexture };\n//# sourceMappingURL=GlTexture.mjs.map\n","\"use strict\";\nconst glUploadBufferImageResource = {\n id: \"buffer\",\n upload(source, glTexture, gl, _webGLVersion, targetOverride, forceAllocation = false) {\n const target = targetOverride || glTexture.target;\n if (!forceAllocation && (glTexture.width === source.width && glTexture.height === source.height)) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n source.width,\n source.height,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n source.width,\n source.height,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n glTexture.width = source.width;\n glTexture.height = source.height;\n }\n};\n\nexport { glUploadBufferImageResource };\n//# sourceMappingURL=glUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst compressedFormatMap = {\n \"bc1-rgba-unorm\": true,\n \"bc1-rgba-unorm-srgb\": true,\n \"bc2-rgba-unorm\": true,\n \"bc2-rgba-unorm-srgb\": true,\n \"bc3-rgba-unorm\": true,\n \"bc3-rgba-unorm-srgb\": true,\n \"bc4-r-unorm\": true,\n \"bc4-r-snorm\": true,\n \"bc5-rg-unorm\": true,\n \"bc5-rg-snorm\": true,\n \"bc6h-rgb-ufloat\": true,\n \"bc6h-rgb-float\": true,\n \"bc7-rgba-unorm\": true,\n \"bc7-rgba-unorm-srgb\": true,\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"etc2-rgb8unorm\": true,\n \"etc2-rgb8unorm-srgb\": true,\n \"etc2-rgb8a1unorm\": true,\n \"etc2-rgb8a1unorm-srgb\": true,\n \"etc2-rgba8unorm\": true,\n \"etc2-rgba8unorm-srgb\": true,\n \"eac-r11unorm\": true,\n \"eac-r11snorm\": true,\n \"eac-rg11unorm\": true,\n \"eac-rg11snorm\": true,\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"astc-4x4-unorm\": true,\n \"astc-4x4-unorm-srgb\": true,\n \"astc-5x4-unorm\": true,\n \"astc-5x4-unorm-srgb\": true,\n \"astc-5x5-unorm\": true,\n \"astc-5x5-unorm-srgb\": true,\n \"astc-6x5-unorm\": true,\n \"astc-6x5-unorm-srgb\": true,\n \"astc-6x6-unorm\": true,\n \"astc-6x6-unorm-srgb\": true,\n \"astc-8x5-unorm\": true,\n \"astc-8x5-unorm-srgb\": true,\n \"astc-8x6-unorm\": true,\n \"astc-8x6-unorm-srgb\": true,\n \"astc-8x8-unorm\": true,\n \"astc-8x8-unorm-srgb\": true,\n \"astc-10x5-unorm\": true,\n \"astc-10x5-unorm-srgb\": true,\n \"astc-10x6-unorm\": true,\n \"astc-10x6-unorm-srgb\": true,\n \"astc-10x8-unorm\": true,\n \"astc-10x8-unorm-srgb\": true,\n \"astc-10x10-unorm\": true,\n \"astc-10x10-unorm-srgb\": true,\n \"astc-12x10-unorm\": true,\n \"astc-12x10-unorm-srgb\": true,\n \"astc-12x12-unorm\": true,\n \"astc-12x12-unorm-srgb\": true\n};\nconst glUploadCompressedTextureResource = {\n id: \"compressed\",\n upload(source, glTexture, gl, _webGLVersion, targetOverride, _forceAllocation) {\n const target = targetOverride ?? glTexture.target;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const compressed = !!compressedFormatMap[source.format];\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n if (compressed) {\n gl.compressedTexImage2D(\n target,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n levelBuffer\n );\n } else {\n gl.texImage2D(\n target,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n glTexture.format,\n glTexture.type,\n levelBuffer\n );\n }\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { glUploadCompressedTextureResource };\n//# sourceMappingURL=glUploadCompressedTextureResource.mjs.map\n","import { GL_TARGETS } from '../const.mjs';\n\n\"use strict\";\nconst FACE_ORDER = [\"right\", \"left\", \"top\", \"bottom\", \"front\", \"back\"];\nfunction createGlUploadCubeTextureResource(uploaders) {\n return {\n id: \"cube\",\n upload(source, glTexture, gl, webGLVersion) {\n const faces = source.faces;\n for (let faceIndex = 0; faceIndex < FACE_ORDER.length; faceIndex++) {\n const key = FACE_ORDER[faceIndex];\n const face = faces[key];\n const uploader = uploaders[face.uploadMethodId] || uploaders.image;\n uploader.upload(\n face,\n glTexture,\n gl,\n webGLVersion,\n // Use the face target for the current face. cube faces ids go up 1 so\n // GL_TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i addresses the i'th face target.\n GL_TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex,\n // Force allocation for the first upload of each face.\n (glTexture._layerInitMask & 1 << faceIndex) === 0\n );\n glTexture._layerInitMask |= 1 << faceIndex;\n }\n glTexture.width = source.pixelWidth;\n glTexture.height = source.pixelHeight;\n }\n };\n}\n\nexport { createGlUploadCubeTextureResource };\n//# sourceMappingURL=glUploadCubeTextureResource.mjs.map\n","\"use strict\";\nconst glUploadImageResource = {\n id: \"image\",\n upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation = false) {\n const target = targetOverride || glTexture.target;\n const textureWidth = source.pixelWidth;\n const textureHeight = source.pixelHeight;\n const resourceWidth = source.resourceWidth;\n const resourceHeight = source.resourceHeight;\n const isWebGL2 = webGLVersion === 2;\n const needsAllocation = forceAllocation || glTexture.width !== textureWidth || glTexture.height !== textureHeight;\n const resourceFitsTexture = resourceWidth >= textureWidth && resourceHeight >= textureHeight;\n const resource = source.resource;\n const uploadFunction = isWebGL2 ? uploadImageWebGL2 : uploadImageWebGL1;\n uploadFunction(\n gl,\n target,\n glTexture,\n textureWidth,\n textureHeight,\n resourceWidth,\n resourceHeight,\n resource,\n needsAllocation,\n resourceFitsTexture\n );\n glTexture.width = textureWidth;\n glTexture.height = textureHeight;\n }\n};\nfunction uploadImageWebGL2(gl, target, glTexture, textureWidth, textureHeight, resourceWidth, resourceHeight, resource, needsAllocation, resourceFitsTexture) {\n if (!resourceFitsTexture) {\n if (needsAllocation) {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n resourceWidth,\n resourceHeight,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n if (!needsAllocation) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n}\nfunction uploadImageWebGL1(gl, target, glTexture, textureWidth, textureHeight, _resourceWidth, _resourceHeight, resource, needsAllocation, resourceFitsTexture) {\n if (!resourceFitsTexture) {\n if (needsAllocation) {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n if (!needsAllocation) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n glTexture.format,\n glTexture.type,\n resource\n );\n}\n\nexport { glUploadImageResource };\n//# sourceMappingURL=glUploadImageResource.mjs.map\n","import { isSafari } from '../../../../../utils/browser/isSafari.mjs';\nimport { glUploadImageResource } from './glUploadImageResource.mjs';\n\n\"use strict\";\nconst defaultForceAllocation = isSafari();\nconst glUploadVideoResource = {\n id: \"video\",\n upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation = defaultForceAllocation) {\n if (!source.isValid) {\n const target = targetOverride ?? glTexture.target;\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n 1,\n 1,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n return;\n }\n glUploadImageResource.upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation);\n }\n};\n\nexport { glUploadVideoResource };\n//# sourceMappingURL=glUploadVideoResource.mjs.map\n","\"use strict\";\nconst scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728\n};\nconst mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985\n },\n nearest: {\n linear: 9986,\n nearest: 9984\n }\n};\nconst wrapModeToGlAddress = {\n \"clamp-to-edge\": 33071,\n repeat: 10497,\n \"mirror-repeat\": 33648\n};\nconst compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n \"less-equal\": 515,\n greater: 516,\n \"not-equal\": 517,\n \"greater-equal\": 518,\n always: 519\n};\n\nexport { compareModeToGlCompare, mipmapScaleModeToGlFilter, scaleModeToGlFilter, wrapModeToGlAddress };\n//# sourceMappingURL=pixiToGlMaps.mjs.map\n","import { wrapModeToGlAddress, scaleModeToGlFilter, mipmapScaleModeToGlFilter, compareModeToGlCompare } from './pixiToGlMaps.mjs';\n\n\"use strict\";\nfunction applyStyleParams(style, gl, mipmaps, anisotropicExt, glFunctionName, firstParam, forceClamp, firstCreation) {\n const castParam = firstParam;\n if (!firstCreation || style.addressModeU !== \"repeat\" || style.addressModeV !== \"repeat\" || style.addressModeW !== \"repeat\") {\n const wrapModeS = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeW];\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n if (gl.TEXTURE_WRAP_R) gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n if (!firstCreation || style.magFilter !== \"linear\") {\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n if (mipmaps) {\n if (!firstCreation || style.mipmapFilter !== \"linear\") {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n } else {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n if (anisotropicExt && style.maxAnisotropy > 1) {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n if (style.compare) {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n\nexport { applyStyleParams };\n//# sourceMappingURL=applyStyleParams.mjs.map\n","\"use strict\";\nfunction mapFormatToGlFormat(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n \"rgba8unorm-srgb\": gl.RGBA,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n \"bgra8unorm-srgb\": gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n \"depth24plus-stencil8\": gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n \"depth32float-stencil8\": gl.DEPTH_STENCIL\n };\n}\n\nexport { mapFormatToGlFormat };\n//# sourceMappingURL=mapFormatToGlFormat.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapFormatToGlInternalFormat(gl, extensions) {\n let srgb = {};\n let bgra8unorm = gl.RGBA;\n if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext())) {\n srgb = {\n \"rgba8unorm-srgb\": gl.SRGB8_ALPHA8,\n \"bgra8unorm-srgb\": gl.SRGB8_ALPHA8\n };\n bgra8unorm = gl.RGBA8;\n } else if (extensions.srgb) {\n srgb = {\n \"rgba8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT,\n \"bgra8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT\n };\n }\n return {\n // 8-bit formats\n r8unorm: gl.R8,\n r8snorm: gl.R8_SNORM,\n r8uint: gl.R8UI,\n r8sint: gl.R8I,\n // 16-bit formats\n r16uint: gl.R16UI,\n r16sint: gl.R16I,\n r16float: gl.R16F,\n rg8unorm: gl.RG8,\n rg8snorm: gl.RG8_SNORM,\n rg8uint: gl.RG8UI,\n rg8sint: gl.RG8I,\n // 32-bit formats\n r32uint: gl.R32UI,\n r32sint: gl.R32I,\n r32float: gl.R32F,\n rg16uint: gl.RG16UI,\n rg16sint: gl.RG16I,\n rg16float: gl.RG16F,\n rgba8unorm: gl.RGBA,\n ...srgb,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA8_SNORM,\n rgba8uint: gl.RGBA8UI,\n rgba8sint: gl.RGBA8I,\n bgra8unorm,\n rgb9e5ufloat: gl.RGB9_E5,\n rgb10a2unorm: gl.RGB10_A2,\n rg11b10ufloat: gl.R11F_G11F_B10F,\n // 64-bit formats\n rg32uint: gl.RG32UI,\n rg32sint: gl.RG32I,\n rg32float: gl.RG32F,\n rgba16uint: gl.RGBA16UI,\n rgba16sint: gl.RGBA16I,\n rgba16float: gl.RGBA16F,\n // 128-bit formats\n rgba32uint: gl.RGBA32UI,\n rgba32sint: gl.RGBA32I,\n rgba32float: gl.RGBA32F,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT16,\n depth24plus: gl.DEPTH_COMPONENT24,\n \"depth24plus-stencil8\": gl.DEPTH24_STENCIL8,\n depth32float: gl.DEPTH_COMPONENT32F,\n \"depth32float-stencil8\": gl.DEPTH32F_STENCIL8,\n // Compressed formats\n ...extensions.s3tc ? {\n \"bc1-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT\n } : {},\n ...extensions.s3tc_sRGB ? {\n \"bc1-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n } : {},\n ...extensions.rgtc ? {\n \"bc4-r-unorm\": extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,\n \"bc4-r-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n \"bc5-rg-unorm\": extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,\n \"bc5-rg-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT\n } : {},\n ...extensions.bptc ? {\n \"bc6h-rgb-float\": extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n \"bc6h-rgb-ufloat\": extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n \"bc7-rgba-unorm\": extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n \"bc7-rgba-unorm-srgb\": extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT\n } : {},\n ...extensions.etc ? {\n \"etc2-rgb8unorm\": extensions.etc.COMPRESSED_RGB8_ETC2,\n \"etc2-rgb8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ETC2,\n \"etc2-rgb8a1unorm\": extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgb8a1unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgba8unorm\": extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,\n \"etc2-rgba8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n \"eac-r11unorm\": extensions.etc.COMPRESSED_R11_EAC,\n // 'eac-r11snorm'\n \"eac-rg11unorm\": extensions.etc.COMPRESSED_SIGNED_RG11_EAC\n // 'eac-rg11snorm'\n } : {},\n ...extensions.astc ? {\n \"astc-4x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,\n \"astc-4x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n \"astc-5x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,\n \"astc-5x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,\n \"astc-5x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,\n \"astc-5x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n \"astc-6x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,\n \"astc-6x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n \"astc-6x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,\n \"astc-6x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n \"astc-8x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,\n \"astc-8x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n \"astc-8x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,\n \"astc-8x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n \"astc-8x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,\n \"astc-8x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n \"astc-10x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,\n \"astc-10x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n \"astc-10x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,\n \"astc-10x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n \"astc-10x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,\n \"astc-10x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n \"astc-10x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,\n \"astc-10x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n \"astc-12x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,\n \"astc-12x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n \"astc-12x12-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,\n \"astc-12x12-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR\n } : {}\n };\n}\n\nexport { mapFormatToGlInternalFormat };\n//# sourceMappingURL=mapFormatToGlInternalFormat.mjs.map\n","\"use strict\";\nfunction mapFormatToGlType(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n \"rgba8unorm-srgb\": gl.UNSIGNED_BYTE,\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n \"bgra8unorm-srgb\": gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n \"depth24plus-stencil8\": gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n \"depth32float-stencil8\": gl.FLOAT_32_UNSIGNED_INT_24_8_REV\n };\n}\n\nexport { mapFormatToGlType };\n//# sourceMappingURL=mapFormatToGlType.mjs.map\n","\"use strict\";\nfunction mapViewDimensionToGlTarget(gl) {\n return {\n \"2d\": gl.TEXTURE_2D,\n cube: gl.TEXTURE_CUBE_MAP,\n \"1d\": null,\n // WebGL2 only\n \"3d\": gl?.TEXTURE_3D || null,\n \"2d-array\": gl?.TEXTURE_2D_ARRAY || null,\n \"cube-array\": gl?.TEXTURE_CUBE_MAP_ARRAY || null\n };\n}\n\nexport { mapViewDimensionToGlTarget };\n//# sourceMappingURL=mapViewDimensionToGlTarget.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { Texture } from '../../shared/texture/Texture.mjs';\nimport { GlTexture } from './GlTexture.mjs';\nimport { glUploadBufferImageResource } from './uploaders/glUploadBufferImageResource.mjs';\nimport { glUploadCompressedTextureResource } from './uploaders/glUploadCompressedTextureResource.mjs';\nimport { createGlUploadCubeTextureResource } from './uploaders/glUploadCubeTextureResource.mjs';\nimport { glUploadImageResource } from './uploaders/glUploadImageResource.mjs';\nimport { glUploadVideoResource } from './uploaders/glUploadVideoResource.mjs';\nimport { applyStyleParams } from './utils/applyStyleParams.mjs';\nimport { mapFormatToGlFormat } from './utils/mapFormatToGlFormat.mjs';\nimport { mapFormatToGlInternalFormat } from './utils/mapFormatToGlInternalFormat.mjs';\nimport { mapFormatToGlType } from './utils/mapFormatToGlType.mjs';\nimport { mapViewDimensionToGlTarget } from './utils/mapViewDimensionToGlTarget.mjs';\nimport './utils/unpremultiplyAlpha.mjs';\n\n\"use strict\";\nconst BYTES_PER_PIXEL = 4;\nclass GlTextureSystem {\n constructor(renderer) {\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundTextures = [];\n this._activeTextureLocation = -1;\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._premultiplyAlpha = false;\n // TODO - separate samplers will be a cool thing to add, but not right now!\n this._useSeparateSamplers = false;\n this._renderer = renderer;\n this._managedTextures = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onSourceUnload.bind(this),\n name: \"glTexture\"\n });\n const baseUploaders = {\n image: glUploadImageResource,\n buffer: glUploadBufferImageResource,\n video: glUploadVideoResource,\n compressed: glUploadCompressedTextureResource\n };\n this._uploads = {\n ...baseUploaders,\n cube: createGlUploadCubeTextureResource(baseUploaders)\n };\n }\n /**\n * @deprecated since 8.15.0\n */\n get managedTextures() {\n return Object.values(this._managedTextures.items);\n }\n contextChange(gl) {\n this._gl = gl;\n if (!this._mapFormatToInternalFormat) {\n this._mapFormatToInternalFormat = mapFormatToGlInternalFormat(gl, this._renderer.context.extensions);\n this._mapFormatToType = mapFormatToGlType(gl);\n this._mapFormatToFormat = mapFormatToGlFormat(gl);\n this._mapViewDimensionToGlTarget = mapViewDimensionToGlTarget(gl);\n }\n this._managedTextures.removeAll(true);\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._premultiplyAlpha = false;\n for (let i = 0; i < 16; i++) {\n this.bind(Texture.EMPTY, i);\n }\n }\n /**\n * Initializes a texture source, if it has already been initialized nothing will happen.\n * @param source - The texture source to initialize.\n * @returns The initialized texture source.\n */\n initSource(source) {\n this.bind(source);\n }\n bind(texture, location = 0) {\n const source = texture.source;\n if (texture) {\n this.bindSource(source, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(source.style, location);\n }\n } else {\n this.bindSource(null, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(null, location);\n }\n }\n }\n bindSource(source, location = 0) {\n const gl = this._gl;\n source._gcLastUsed = this._renderer.gc.now;\n if (this._boundTextures[location] !== source) {\n this._boundTextures[location] = source;\n this._activateLocation(location);\n source || (source = Texture.EMPTY.source);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n }\n }\n _bindSampler(style, location = 0) {\n const gl = this._gl;\n if (!style) {\n this._boundSamplers[location] = null;\n gl.bindSampler(location, null);\n return;\n }\n const sampler = this._getGlSampler(style);\n if (this._boundSamplers[location] !== sampler) {\n this._boundSamplers[location] = sampler;\n gl.bindSampler(location, sampler);\n }\n }\n unbind(texture) {\n const source = texture.source;\n const boundTextures = this._boundTextures;\n const gl = this._gl;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === source) {\n this._activateLocation(i);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, null);\n boundTextures[i] = null;\n }\n }\n }\n _activateLocation(location) {\n if (this._activeTextureLocation !== location) {\n this._activeTextureLocation = location;\n this._gl.activeTexture(this._gl.TEXTURE0 + location);\n }\n }\n _initSource(source) {\n const gl = this._gl;\n const glTexture = new GlTexture(gl.createTexture());\n glTexture.type = this._mapFormatToType[source.format];\n glTexture.internalFormat = this._mapFormatToInternalFormat[source.format];\n glTexture.format = this._mapFormatToFormat[source.format];\n glTexture.target = this._mapViewDimensionToGlTarget[source.viewDimension];\n if (glTexture.target === null) {\n throw new Error(`Unsupported view dimension: ${source.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);\n }\n if (source.uploadMethodId === \"cube\") {\n glTexture.target = gl.TEXTURE_CUBE_MAP;\n }\n if (source.autoGenerateMipmaps && (this._renderer.context.supports.nonPowOf2mipmaps || source.isPowerOfTwo)) {\n const biggestDimension = Math.max(source.width, source.height);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n source._gpuData[this._renderer.uid] = glTexture;\n const added = this._managedTextures.add(source);\n if (added) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceUpdate, this);\n source.on(\"styleChange\", this.onStyleChange, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n this.onSourceUpdate(source);\n this.updateStyle(source, false);\n return glTexture;\n }\n onStyleChange(source) {\n this.updateStyle(source, false);\n }\n updateStyle(source, firstCreation) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n applyStyleParams(\n source.style,\n gl,\n source.mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"texParameteri\",\n glTexture.target,\n // will force a clamp to edge if the texture is not a power of two\n !this._renderer.context.supports.nonPowOf2wrapping && !source.isPowerOfTwo,\n firstCreation\n );\n }\n onSourceUnload(source, contextLost = false) {\n const glTexture = source._gpuData[this._renderer.uid];\n if (!glTexture) return;\n if (!contextLost) {\n this.unbind(source);\n this._gl.deleteTexture(glTexture.texture);\n }\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceUpdate, this);\n source.off(\"styleChange\", this.onStyleChange, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n onSourceUpdate(source) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n if (this._premultiplyAlpha !== premultipliedAlpha) {\n this._premultiplyAlpha = premultipliedAlpha;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);\n }\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, glTexture, gl, this._renderer.context.webGLVersion);\n } else if (glTexture.target === gl.TEXTURE_2D) {\n this._initEmptyTexture2D(glTexture, source);\n } else if (glTexture.target === gl.TEXTURE_2D_ARRAY) {\n this._initEmptyTexture2DArray(glTexture, source);\n } else if (glTexture.target === gl.TEXTURE_CUBE_MAP) {\n this._initEmptyTextureCube(glTexture, source);\n } else {\n throw new Error(\"[GlTextureSystem] Unsupported texture target for empty allocation.\");\n }\n this._applyMipRange(glTexture, source);\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source, false);\n }\n }\n onUpdateMipmaps(source, bind = true) {\n if (bind) this.bindSource(source, 0);\n const glTexture = this.getGlSource(source);\n this._gl.generateMipmap(glTexture.target);\n }\n _initEmptyTexture2D(glTexture, source) {\n const gl = this._gl;\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n glTexture.internalFormat,\n w,\n h,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n _initEmptyTexture2DArray(glTexture, source) {\n if (this._renderer.context.webGLVersion !== 2) {\n throw new Error(\"[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.\");\n }\n const gl2 = this._gl;\n const depth = Math.max(source.arrayLayerCount | 0, 1);\n gl2.texImage3D(\n gl2.TEXTURE_2D_ARRAY,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n depth,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n gl2.texImage3D(\n gl2.TEXTURE_2D_ARRAY,\n level,\n glTexture.internalFormat,\n w,\n h,\n depth,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n _initEmptyTextureCube(glTexture, source) {\n const gl = this._gl;\n const totalCubeFaces = 6;\n for (let face = 0; face < totalCubeFaces; face++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n for (let face = 0; face < totalCubeFaces; face++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n level,\n glTexture.internalFormat,\n w,\n h,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n /**\n * Applies a mip range to the currently-bound texture so WebGL2 considers the texture \"mipmap complete\"\n * for the declared `mipLevelCount` (especially important for partial mip chains rendered via FBO).\n * @param glTexture - The GL texture wrapper.\n * @param source - The texture source describing mipLevelCount.\n */\n _applyMipRange(glTexture, source) {\n if (this._renderer.context.webGLVersion !== 2) return;\n const gl = this._gl;\n const maxLevel = Math.max((source.mipLevelCount | 0) - 1, 0);\n gl.texParameteri(glTexture.target, gl.TEXTURE_BASE_LEVEL, 0);\n gl.texParameteri(glTexture.target, gl.TEXTURE_MAX_LEVEL, maxLevel);\n }\n _initSampler(style) {\n const gl = this._gl;\n const glSampler = this._gl.createSampler();\n this._glSamplers[style._resourceId] = glSampler;\n applyStyleParams(\n style,\n gl,\n this._boundTextures[this._activeTextureLocation].mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"samplerParameteri\",\n glSampler,\n false,\n true\n );\n return this._glSamplers[style._resourceId];\n }\n _getGlSampler(sampler) {\n return this._glSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGlSource(source) {\n source._gcLastUsed = this._renderer.gc.now;\n return source._gpuData[this._renderer.uid] || this._initSource(source);\n }\n generateCanvas(texture) {\n const { pixels, width, height } = this.getPixels(texture);\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n return canvas;\n }\n getPixels(texture) {\n const resolution = texture.source.resolution;\n const frame = texture.frame;\n const width = Math.max(Math.round(frame.width * resolution), 1);\n const height = Math.max(Math.round(frame.height * resolution), 1);\n const pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const renderer = this._renderer;\n const renderTarget = renderer.renderTarget.getRenderTarget(texture);\n const glRenterTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget);\n const gl = renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenterTarget.resolveTargetFramebuffer);\n gl.readPixels(\n Math.round(frame.x * resolution),\n Math.round(frame.y * resolution),\n width,\n height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n pixels\n );\n if (false) {\n unpremultiplyAlpha(pixels);\n }\n return { pixels: new Uint8ClampedArray(pixels.buffer), width, height };\n }\n destroy() {\n this._managedTextures.destroy();\n this._glSamplers = null;\n this._boundTextures = null;\n this._boundSamplers = null;\n this._mapFormatToInternalFormat = null;\n this._mapFormatToType = null;\n this._mapFormatToFormat = null;\n this._uploads = null;\n this._renderer = null;\n }\n resetState() {\n this._activeTextureLocation = -1;\n this._boundTextures.fill(Texture.EMPTY.source);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n const gl = this._gl;\n this._premultiplyAlpha = false;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this._premultiplyAlpha);\n }\n}\n/** @ignore */\nGlTextureSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"texture\"\n};\n\nexport { GlTextureSystem };\n//# sourceMappingURL=GlTextureSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GlGraphicsAdaptor {\n contextChange(renderer) {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const maxTextures = renderer.limits.maxBatchableTextures;\n const glProgram = compileHighShaderGlProgram({\n name: \"graphics\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n localUniformBitGl,\n roundPixelsBitGl\n ]\n });\n this.shader = new Shader({\n glProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n batcher,\n instructions\n } = contextSystem.getContextRenderData(context);\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n renderer.state.set(graphicsPipe.state);\n renderer.shader.bind(shader);\n renderer.geometry.bind(batcher.geometry, shader.glProgram);\n const batches = instructions.instructions;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n if (batch.size) {\n for (let j = 0; j < batch.textures.count; j++) {\n renderer.texture.bind(batch.textures.textures[j], j);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGlGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GlGraphicsAdaptor };\n//# sourceMappingURL=GlGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GlMeshAdaptor {\n init() {\n const glProgram = compileHighShaderGlProgram({\n name: \"mesh\",\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl\n ]\n });\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n const texture = mesh.texture;\n const source = texture.source;\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n } else if (!shader.glProgram) {\n warn(\"Mesh shader has no glProgram\", mesh.shader);\n return;\n }\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\nGlMeshAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GlMeshAdaptor };\n//# sourceMappingURL=GlMeshAdaptor.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GlGraphicsAdaptor } from '../../../scene/graphics/gl/GlGraphicsAdaptor.mjs';\nimport { GlMeshAdaptor } from '../../../scene/mesh/gl/GlMeshAdaptor.mjs';\nimport { GlBatchAdaptor } from '../../batcher/gl/GlBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { GlBufferSystem } from './buffer/GlBufferSystem.mjs';\nimport { GlContextSystem } from './context/GlContextSystem.mjs';\nimport { GlGeometrySystem } from './geometry/GlGeometrySystem.mjs';\nimport { GlBackBufferSystem } from './GlBackBufferSystem.mjs';\nimport { GlColorMaskSystem } from './GlColorMaskSystem.mjs';\nimport { GlEncoderSystem } from './GlEncoderSystem.mjs';\nimport { GlLimitsSystem } from './GlLimitsSystem.mjs';\nimport { GlStencilSystem } from './GlStencilSystem.mjs';\nimport { GlUboSystem } from './GlUboSystem.mjs';\nimport { GlRenderTargetSystem } from './renderTarget/GlRenderTargetSystem.mjs';\nimport { GlShaderSystem } from './shader/GlShaderSystem.mjs';\nimport { GlUniformGroupSystem } from './shader/GlUniformGroupSystem.mjs';\nimport { GlStateSystem } from './state/GlStateSystem.mjs';\nimport { GlTextureSystem } from './texture/GlTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGLSystems = [\n ...SharedSystems,\n GlUboSystem,\n GlBackBufferSystem,\n GlContextSystem,\n GlLimitsSystem,\n GlBufferSystem,\n GlTextureSystem,\n GlRenderTargetSystem,\n GlGeometrySystem,\n GlUniformGroupSystem,\n GlShaderSystem,\n GlEncoderSystem,\n GlStateSystem,\n GlStencilSystem,\n GlColorMaskSystem\n];\nconst DefaultWebGLPipes = [...SharedRenderPipes];\nconst DefaultWebGLAdapters = [GlBatchAdaptor, GlMeshAdaptor, GlGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGLSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGLPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGLSystems, ...DefaultWebGLPipes, ...DefaultWebGLAdapters);\nclass WebGLRenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgl\",\n type: RendererType.WEBGL,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGLRenderer };\n//# sourceMappingURL=WebGLRenderer.mjs.map\n"],"names":["_GlContextSystem","extensions","_GlBackBufferSystem","_GlStateSystem"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}
1
+ {"version":3,"file":"WebGLRenderer-Di8FBHm2.js","sources":["../node_modules/pixi.js/lib/utils/browser/isSafari.mjs","../node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlLimitsSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateArraySyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboSyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlUboSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GenerateShaderSyncCode.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgramData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/compileShader.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/defaultValue.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/mapType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUboData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUniformData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/logProgramError.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/generateProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlShaderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSync.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlUniformGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCubeTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapViewDimensionToGlTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs","../node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs","../node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"],"sourcesContent":["import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nfunction isSafari() {\n const { userAgent } = DOMAdapter.get().getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n}\n\nexport { isSafari };\n//# sourceMappingURL=isSafari.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\n\n\"use strict\";\nclass GlBatchAdaptor {\n constructor() {\n this._tempState = State.for2d();\n /**\n * We only want to sync the a batched shaders uniforms once on first use\n * this is a hash of shader uids to a boolean value. When the shader is first bound\n * we set the value to true. When the shader is bound again we check the value and\n * if it is true we know that the uniforms have already been synced and we skip it.\n */\n this._didUploadHash = {};\n }\n init(batcherPipe) {\n batcherPipe.renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._didUploadHash = {};\n }\n start(batchPipe, geometry, shader) {\n const renderer = batchPipe.renderer;\n const didUpload = this._didUploadHash[shader.uid];\n renderer.shader.bind(shader, didUpload);\n if (!didUpload) {\n this._didUploadHash[shader.uid] = true;\n }\n renderer.shader.updateUniformGroup(renderer.globalUniforms.uniformGroup);\n renderer.geometry.bind(geometry, shader.glProgram);\n }\n execute(batchPipe, batch) {\n const renderer = batchPipe.renderer;\n this._tempState.blendMode = batch.blendMode;\n renderer.state.set(this._tempState);\n const textures = batch.textures.textures;\n for (let i = 0; i < batch.textures.count; i++) {\n renderer.texture.bind(textures[i], i);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n}\n/** @ignore */\nGlBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GlBatchAdaptor };\n//# sourceMappingURL=GlBatchAdaptor.mjs.map\n","\"use strict\";\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { BUFFER_TYPE };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass GlBuffer {\n constructor(buffer, type) {\n this._lastBindBaseLocation = -1;\n this._lastBindCallId = -1;\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = type;\n }\n destroy() {\n this.buffer = null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = -1;\n this._lastBindBaseLocation = -1;\n this._lastBindCallId = -1;\n }\n}\n\nexport { GlBuffer };\n//# sourceMappingURL=GlBuffer.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { BufferUsage } from '../../shared/buffer/const.mjs';\nimport { BUFFER_TYPE } from './const.mjs';\nimport { GlBuffer } from './GlBuffer.mjs';\n\n\"use strict\";\nclass GlBufferSystem {\n /**\n * @param {Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n /** Cache keeping track of the base bound buffer bases */\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n this._minBaseLocation = 0;\n this._nextBindBaseIndex = this._minBaseLocation;\n this._bindCallId = 0;\n this._renderer = renderer;\n this._managedBuffers = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onBufferUnload.bind(this),\n name: \"glBuffer\"\n });\n }\n /** @ignore */\n destroy() {\n this._managedBuffers.destroy();\n this._renderer = null;\n this._gl = null;\n this._boundBufferBases = {};\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this._gl = this._renderer.gl;\n this.destroyAll(true);\n this._maxBindings = this._renderer.limits.maxUniformBindings;\n }\n getGlBuffer(buffer) {\n buffer._gcLastUsed = this._renderer.gc.now;\n return buffer._gpuData[this._renderer.uid] || this.createGLBuffer(buffer);\n }\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n bind(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n }\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n bindBufferBase(glBuffer, index) {\n const { _gl: gl } = this;\n if (this._boundBufferBases[index] !== glBuffer) {\n this._boundBufferBases[index] = glBuffer;\n glBuffer._lastBindBaseLocation = index;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n nextBindBase(hasTransformFeedback) {\n this._bindCallId++;\n this._minBaseLocation = 0;\n if (hasTransformFeedback) {\n this._boundBufferBases[0] = null;\n this._minBaseLocation = 1;\n if (this._nextBindBaseIndex < 1) {\n this._nextBindBaseIndex = 1;\n }\n }\n }\n freeLocationForBufferBase(glBuffer) {\n let freeIndex = this.getLastBindBaseLocation(glBuffer);\n if (freeIndex >= this._minBaseLocation) {\n glBuffer._lastBindCallId = this._bindCallId;\n return freeIndex;\n }\n let loop = 0;\n let nextIndex = this._nextBindBaseIndex;\n while (loop < 2) {\n if (nextIndex >= this._maxBindings) {\n nextIndex = this._minBaseLocation;\n loop++;\n }\n const curBuf = this._boundBufferBases[nextIndex];\n if (curBuf && curBuf._lastBindCallId === this._bindCallId) {\n nextIndex++;\n continue;\n }\n break;\n }\n freeIndex = nextIndex;\n this._nextBindBaseIndex = nextIndex + 1;\n if (loop >= 2) {\n return -1;\n }\n glBuffer._lastBindCallId = this._bindCallId;\n this._boundBufferBases[freeIndex] = null;\n return freeIndex;\n }\n getLastBindBaseLocation(glBuffer) {\n const index = glBuffer._lastBindBaseLocation;\n if (this._boundBufferBases[index] === glBuffer) {\n return index;\n }\n return -1;\n }\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n * @param size - the size to bind at (this is blocks of 256).\n */\n bindBufferRange(glBuffer, index, offset, size) {\n const { _gl: gl } = this;\n offset || (offset = 0);\n index || (index = 0);\n this._boundBufferBases[index] = null;\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, size || 256);\n }\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {Buffer} buffer - the buffer to update\n */\n updateBuffer(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return glBuffer;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n const data = buffer.data;\n const drawType = buffer.descriptor.usage & BufferUsage.STATIC ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n if (data) {\n if (glBuffer.byteLength >= data.byteLength) {\n gl.bufferSubData(glBuffer.type, 0, data, 0, buffer._updateSize / data.BYTES_PER_ELEMENT);\n } else {\n glBuffer.byteLength = data.byteLength;\n gl.bufferData(glBuffer.type, data, drawType);\n }\n } else {\n glBuffer.byteLength = buffer.descriptor.size;\n gl.bufferData(glBuffer.type, glBuffer.byteLength, drawType);\n }\n return glBuffer;\n }\n /**\n * dispose all WebGL resources of all managed buffers\n * @param contextLost\n */\n destroyAll(contextLost = false) {\n this._managedBuffers.removeAll(contextLost);\n }\n onBufferUnload(buffer, contextLost = false) {\n const glBuffer = buffer._gpuData[this._renderer.uid];\n if (!glBuffer) return;\n if (!contextLost) this._gl.deleteBuffer(glBuffer.buffer);\n }\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n createGLBuffer(buffer) {\n const { _gl: gl } = this;\n let type = BUFFER_TYPE.ARRAY_BUFFER;\n if (buffer.descriptor.usage & BufferUsage.INDEX) {\n type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n } else if (buffer.descriptor.usage & BufferUsage.UNIFORM) {\n type = BUFFER_TYPE.UNIFORM_BUFFER;\n }\n const glBuffer = new GlBuffer(gl.createBuffer(), type);\n buffer._gpuData[this._renderer.uid] = glBuffer;\n this._managedBuffers.add(buffer);\n return glBuffer;\n }\n resetState() {\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n }\n}\n/** @ignore */\nGlBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"buffer\"\n};\n\nexport { GlBufferSystem };\n//# sourceMappingURL=GlBufferSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst _GlContextSystem = class _GlContextSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /**\n * Features supported by current renderer.\n * @type {object}\n * @readonly\n */\n this.supports = {\n /** Support for 32-bit indices buffer. */\n uint32Indices: true,\n /** Support for UniformBufferObjects */\n uniformBufferObject: true,\n /** Support for VertexArrayObjects */\n vertexArrayObject: true,\n /** Support for SRGB texture format */\n srgbTextures: true,\n /** Support for wrapping modes if a texture is non-power of two */\n nonPowOf2wrapping: true,\n /** Support for MSAA (antialiasing of dynamic textures) */\n msaa: true,\n /** Support for mipmaps if a texture is non-power of two */\n nonPowOf2mipmaps: true\n };\n this._renderer = renderer;\n this.extensions = /* @__PURE__ */ Object.create(null);\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n contextChange(gl) {\n this.gl = gl;\n this._renderer.gl = gl;\n }\n init(options) {\n options = { ..._GlContextSystem.defaultOptions, ...options };\n let multiView = this.multiView = options.multiView;\n if (options.context && multiView) {\n warn(\"Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together.\");\n multiView = false;\n }\n if (multiView) {\n this.canvas = DOMAdapter.get().createCanvas(this._renderer.canvas.width, this._renderer.canvas.height);\n } else {\n this.canvas = this._renderer.view.canvas;\n }\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this._renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const antialias = options.antialias && !this._renderer.backBuffer.useBackBuffer;\n this.createContext(options.preferWebGLVersion, {\n alpha,\n premultipliedAlpha,\n antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference ?? \"default\"\n });\n }\n }\n ensureCanvasSize(targetCanvas) {\n if (!this.multiView) {\n if (targetCanvas !== this.canvas) {\n warn(\"multiView is disabled, but targetCanvas is not the main canvas\");\n }\n return;\n }\n const { canvas } = this;\n if (canvas.width < targetCanvas.width || canvas.height < targetCanvas.height) {\n canvas.width = Math.max(targetCanvas.width, targetCanvas.width);\n canvas.height = Math.max(targetCanvas.height, targetCanvas.height);\n }\n }\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n initFromContext(gl) {\n this.gl = gl;\n this.webGLVersion = gl instanceof DOMAdapter.get().getWebGLRenderingContext() ? 1 : 2;\n this.getExtensions();\n this.validateContext(gl);\n this._renderer.runners.contextChange.emit(gl);\n const element = this._renderer.view.canvas;\n element.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n element.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param preferWebGLVersion\n * @param {object} options - context attributes\n */\n createContext(preferWebGLVersion, options) {\n let gl;\n const canvas = this.canvas;\n if (preferWebGLVersion === 2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.initFromContext(this.gl);\n }\n /** Auto-populate the {@link GlContextSystem.extensions extensions}. */\n getExtensions() {\n const { gl } = this;\n const common = {\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n // eslint-disable-line camelcase\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\"),\n bptc: gl.getExtension(\"EXT_texture_compression_bptc\"),\n rgtc: gl.getExtension(\"EXT_texture_compression_rgtc\"),\n loseContext: gl.getExtension(\"WEBGL_lose_context\")\n };\n if (this.webGLVersion === 1) {\n this.extensions = {\n ...common,\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n // Floats and half-floats\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\"),\n vertexAttribDivisorANGLE: gl.getExtension(\"ANGLE_instanced_arrays\"),\n srgb: gl.getExtension(\"EXT_sRGB\")\n };\n } else {\n this.extensions = {\n ...common,\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n };\n const provokeExt = gl.getExtension(\"WEBGL_provoking_vertex\");\n if (provokeExt) {\n provokeExt.provokingVertexWEBGL(provokeExt.FIRST_VERTEX_CONVENTION_WEBGL);\n }\n }\n }\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n handleContextLost(event) {\n event.preventDefault();\n if (this._contextLossForced) {\n this._contextLossForced = false;\n setTimeout(() => {\n if (this.gl.isContextLost()) {\n this.extensions.loseContext?.restoreContext();\n }\n }, 0);\n }\n }\n /** Handles a restored webgl context. */\n handleContextRestored() {\n this.getExtensions();\n this._renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const element = this._renderer.view.canvas;\n this._renderer = null;\n element.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n element.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n this.gl.useProgram(null);\n this.extensions.loseContext?.loseContext();\n }\n /**\n * this function can be called to force a webGL context loss\n * this will release all resources on the GPU.\n * Useful if you need to put Pixi to sleep, and save some GPU memory\n *\n * As soon as render is called - all resources will be created again.\n */\n forceContextLoss() {\n this.extensions.loseContext?.loseContext();\n this._contextLossForced = true;\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n if (attributes && !attributes.stencil) {\n warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const supports = this.supports;\n const isWebGl2 = this.webGLVersion === 2;\n const extensions = this.extensions;\n supports.uint32Indices = isWebGl2 || !!extensions.uint32ElementIndex;\n supports.uniformBufferObject = isWebGl2;\n supports.vertexArrayObject = isWebGl2 || !!extensions.vertexArrayObject;\n supports.srgbTextures = isWebGl2 || !!extensions.srgb;\n supports.nonPowOf2wrapping = isWebGl2;\n supports.nonPowOf2mipmaps = isWebGl2;\n supports.msaa = isWebGl2;\n if (!supports.uint32Indices) {\n warn(\"Provided WebGL context does not support 32 index buffer, large scenes may not render correctly\");\n }\n }\n};\n/** @ignore */\n_GlContextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"context\"\n};\n/** The default options for the system. */\n_GlContextSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.context}\n * @default null\n */\n context: null,\n /**\n * {@link WebGLOptions.premultipliedAlpha}\n * @default true\n */\n premultipliedAlpha: true,\n /**\n * {@link WebGLOptions.preserveDrawingBuffer}\n * @default false\n */\n preserveDrawingBuffer: false,\n /**\n * {@link WebGLOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * {@link WebGLOptions.webGLVersion}\n * @default 2\n */\n preferWebGLVersion: 2,\n /**\n * {@link WebGLOptions.multiView}\n * @default false\n */\n multiView: false\n};\nlet GlContextSystem = _GlContextSystem;\n\nexport { GlContextSystem };\n//# sourceMappingURL=GlContextSystem.mjs.map\n","\"use strict\";\nvar GL_FORMATS = /* @__PURE__ */ ((GL_FORMATS2) => {\n GL_FORMATS2[GL_FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n GL_FORMATS2[GL_FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n GL_FORMATS2[GL_FORMATS2[\"RG\"] = 33319] = \"RG\";\n GL_FORMATS2[GL_FORMATS2[\"RED\"] = 6403] = \"RED\";\n GL_FORMATS2[GL_FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return GL_FORMATS2;\n})(GL_FORMATS || {});\nvar GL_TARGETS = /* @__PURE__ */ ((GL_TARGETS2) => {\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return GL_TARGETS2;\n})(GL_TARGETS || {});\nvar GL_WRAP_MODES = /* @__PURE__ */ ((GL_WRAP_MODES2) => {\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return GL_WRAP_MODES2;\n})(GL_WRAP_MODES || {});\nvar GL_TYPES = /* @__PURE__ */ ((GL_TYPES2) => {\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n GL_TYPES2[GL_TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n GL_TYPES2[GL_TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n GL_TYPES2[GL_TYPES2[\"INT\"] = 5124] = \"INT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n GL_TYPES2[GL_TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return GL_TYPES2;\n})(GL_TYPES || {});\n\nexport { GL_FORMATS, GL_TARGETS, GL_TYPES, GL_WRAP_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { GL_TYPES } from '../../texture/const.mjs';\n\n\"use strict\";\nconst infoMap = {\n uint8x2: GL_TYPES.UNSIGNED_BYTE,\n uint8x4: GL_TYPES.UNSIGNED_BYTE,\n sint8x2: GL_TYPES.BYTE,\n sint8x4: GL_TYPES.BYTE,\n unorm8x2: GL_TYPES.UNSIGNED_BYTE,\n unorm8x4: GL_TYPES.UNSIGNED_BYTE,\n snorm8x2: GL_TYPES.BYTE,\n snorm8x4: GL_TYPES.BYTE,\n uint16x2: GL_TYPES.UNSIGNED_SHORT,\n uint16x4: GL_TYPES.UNSIGNED_SHORT,\n sint16x2: GL_TYPES.SHORT,\n sint16x4: GL_TYPES.SHORT,\n unorm16x2: GL_TYPES.UNSIGNED_SHORT,\n unorm16x4: GL_TYPES.UNSIGNED_SHORT,\n snorm16x2: GL_TYPES.SHORT,\n snorm16x4: GL_TYPES.SHORT,\n float16x2: GL_TYPES.HALF_FLOAT,\n float16x4: GL_TYPES.HALF_FLOAT,\n float32: GL_TYPES.FLOAT,\n float32x2: GL_TYPES.FLOAT,\n float32x3: GL_TYPES.FLOAT,\n float32x4: GL_TYPES.FLOAT,\n uint32: GL_TYPES.UNSIGNED_INT,\n uint32x2: GL_TYPES.UNSIGNED_INT,\n uint32x3: GL_TYPES.UNSIGNED_INT,\n uint32x4: GL_TYPES.UNSIGNED_INT,\n sint32: GL_TYPES.INT,\n sint32x2: GL_TYPES.INT,\n sint32x3: GL_TYPES.INT,\n sint32x4: GL_TYPES.INT\n};\nfunction getGlTypeFromFormat(format) {\n return infoMap[format] ?? infoMap.float32;\n}\n\nexport { getGlTypeFromFormat };\n//# sourceMappingURL=getGlTypeFromFormat.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { getAttributeInfoFromFormat } from '../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { ensureAttributes } from '../shader/program/ensureAttributes.mjs';\nimport { getGlTypeFromFormat } from './utils/getGlTypeFromFormat.mjs';\n\n\"use strict\";\nconst topologyToGlMap = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 3,\n \"triangle-list\": 4,\n \"triangle-strip\": 5\n};\nclass GlGeometryGpuData {\n constructor() {\n this.vaoCache = /* @__PURE__ */ Object.create(null);\n }\n destroy() {\n this.vaoCache = /* @__PURE__ */ Object.create(null);\n }\n}\nclass GlGeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this._managedGeometries = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onGeometryUnload.bind(this),\n name: \"glGeometry\"\n });\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this.gl = this._renderer.gl;\n if (!this._renderer.context.supports.vertexArrayObject) {\n throw new Error(\"[PixiJS] Vertex Array Objects are not supported on this device\");\n }\n this.destroyAll(true);\n const nativeVaoExtension = this._renderer.context.extensions.vertexArrayObject;\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n }\n const nativeInstancedExtension = this._renderer.context.extensions.vertexAttribDivisorANGLE;\n if (nativeInstancedExtension) {\n gl.drawArraysInstanced = (a, b, c, d) => {\n nativeInstancedExtension.drawArraysInstancedANGLE(a, b, c, d);\n };\n gl.drawElementsInstanced = (a, b, c, d, e) => {\n nativeInstancedExtension.drawElementsInstancedANGLE(a, b, c, d, e);\n };\n gl.vertexAttribDivisor = (a, b) => nativeInstancedExtension.vertexAttribDivisorANGLE(a, b);\n }\n this._activeGeometry = null;\n this._activeVao = null;\n }\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param program - Instance of program to use vao for.\n */\n bind(geometry, program) {\n const gl = this.gl;\n this._activeGeometry = geometry;\n const vao = this.getVao(geometry, program);\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n gl.bindVertexArray(vao);\n }\n this.updateBuffers();\n }\n /** Reset and unbind any active VAO and geometry. */\n resetState() {\n this.unbind();\n }\n /** Update buffers of the currently bound geometry. */\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this._renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.updateBuffer(buffer);\n }\n geometry._gcLastUsed = this._renderer.gc.now;\n }\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program._attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program._attributeData;\n const strings = [\"g\", geometry.uid];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n getVao(geometry, program) {\n return geometry._gpuData[this._renderer.uid]?.vaoCache[program._key] || this.initGeometryVao(geometry, program);\n }\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param program\n * @param _incRefCount - Increment refCount of all geometry buffers.\n */\n initGeometryVao(geometry, program, _incRefCount = true) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n this._renderer.shader._getProgramData(program);\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n let gpuData = geometry._gpuData[this._renderer.uid];\n if (!gpuData) {\n gpuData = new GlGeometryGpuData();\n geometry._gpuData[this._renderer.uid] = gpuData;\n this._managedGeometries.add(geometry);\n }\n const vaoObjectHash = gpuData.vaoCache;\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program._key] = vao;\n return vao;\n }\n ensureAttributes(geometry, program._attributeData);\n const buffers = geometry.buffers;\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program._key] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n return vao;\n }\n onGeometryUnload(geometry, contextLost = false) {\n const gpuData = geometry._gpuData[this._renderer.uid];\n if (!gpuData) return;\n const vaoCache = gpuData.vaoCache;\n if (!contextLost) {\n for (const i in vaoCache) {\n if (this._activeVao !== vaoCache[i]) {\n this.resetState();\n }\n this.gl.deleteVertexArray(vaoCache[i]);\n }\n }\n }\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n destroyAll(contextLost = false) {\n this._managedGeometries.removeAll(contextLost);\n }\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n activateVao(geometry, program) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = attribute.buffer;\n const glBuffer = bufferSystem.getGlBuffer(buffer);\n const programAttrib = program._attributeData[j];\n if (programAttrib) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = programAttrib.location;\n gl.enableVertexAttribArray(location);\n const attributeInfo = getAttributeInfoFromFormat(attribute.format);\n const type = getGlTypeFromFormat(attribute.format);\n if (programAttrib.format?.substring(1, 4) === \"int\") {\n gl.vertexAttribIPointer(\n location,\n attributeInfo.size,\n type,\n attribute.stride,\n attribute.offset\n );\n } else {\n gl.vertexAttribPointer(\n location,\n attributeInfo.size,\n type,\n attributeInfo.normalised,\n attribute.stride,\n attribute.offset\n );\n }\n if (attribute.instance) {\n if (this.hasInstance) {\n const divisor = attribute.divisor ?? 1;\n gl.vertexAttribDivisor(location, divisor);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n /**\n * Draws the currently bound geometry.\n * @param topology - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n * @returns This instance of the geometry system.\n */\n draw(topology, size, start, instanceCount) {\n const { gl } = this._renderer;\n const geometry = this._activeGeometry;\n const glTopology = topologyToGlMap[topology || geometry.topology];\n instanceCount ?? (instanceCount = geometry.instanceCount);\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (instanceCount !== 1) {\n gl.drawElementsInstanced(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount);\n } else {\n gl.drawElements(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else if (instanceCount !== 1) {\n gl.drawArraysInstanced(glTopology, start || 0, size || geometry.getSize(), instanceCount);\n } else {\n gl.drawArrays(glTopology, start || 0, size || geometry.getSize());\n }\n return this;\n }\n /** Unbind/reset everything. */\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this._managedGeometries.destroy();\n this._renderer = null;\n this.gl = null;\n this._activeVao = null;\n this._activeGeometry = null;\n }\n}\n/** @ignore */\nGlGeometrySystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"geometry\"\n};\n\nexport { GlGeometryGpuData, GlGeometrySystem };\n//# sourceMappingURL=GlGeometrySystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\nimport { Geometry } from '../shared/geometry/Geometry.mjs';\nimport { Shader } from '../shared/shader/Shader.mjs';\nimport { State } from '../shared/state/State.mjs';\nimport { TextureSource } from '../shared/texture/sources/TextureSource.mjs';\nimport { Texture } from '../shared/texture/Texture.mjs';\nimport { GlProgram } from './shader/GlProgram.mjs';\n\n\"use strict\";\nconst bigTriangleGeometry = new Geometry({\n attributes: {\n aPosition: [\n -1,\n -1,\n // Bottom left corner\n 3,\n -1,\n // Bottom right corner, extending beyond right edge\n -1,\n 3\n // Top left corner, extending beyond top edge\n ]\n }\n});\nconst _GlBackBufferSystem = class _GlBackBufferSystem {\n constructor(renderer) {\n /** if true, the back buffer is used */\n this.useBackBuffer = false;\n this._useBackBufferThisRender = false;\n this._renderer = renderer;\n }\n init(options = {}) {\n const { useBackBuffer, antialias } = { ..._GlBackBufferSystem.defaultOptions, ...options };\n this.useBackBuffer = useBackBuffer;\n this._antialias = antialias;\n if (!this._renderer.context.supports.msaa) {\n warn(\"antialiasing, is not supported on when using the back buffer\");\n this._antialias = false;\n }\n this._state = State.for2d();\n const bigTriangleProgram = new GlProgram({\n vertex: `\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }`,\n fragment: `\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }`,\n name: \"big-triangle\"\n });\n this._bigTriangleShader = new Shader({\n glProgram: bigTriangleProgram,\n resources: {\n uTexture: Texture.WHITE.source\n }\n });\n }\n /**\n * This is called before the RenderTargetSystem is started. This is where\n * we replace the target with the back buffer if required.\n * @param options - The options for this render.\n */\n renderStart(options) {\n const renderTarget = this._renderer.renderTarget.getRenderTarget(options.target);\n this._useBackBufferThisRender = this.useBackBuffer && !!renderTarget.isRoot;\n if (this._useBackBufferThisRender) {\n const renderTarget2 = this._renderer.renderTarget.getRenderTarget(options.target);\n this._targetTexture = renderTarget2.colorTexture;\n options.target = this._getBackBufferTexture(renderTarget2.colorTexture);\n }\n }\n renderEnd() {\n this._presentBackBuffer();\n }\n _presentBackBuffer() {\n const renderer = this._renderer;\n renderer.renderTarget.finishRenderPass();\n if (!this._useBackBufferThisRender) return;\n renderer.renderTarget.bind(this._targetTexture, false);\n this._bigTriangleShader.resources.uTexture = this._backBufferTexture.source;\n renderer.encoder.draw({\n geometry: bigTriangleGeometry,\n shader: this._bigTriangleShader,\n state: this._state\n });\n }\n _getBackBufferTexture(targetSourceTexture) {\n this._backBufferTexture = this._backBufferTexture || new Texture({\n source: new TextureSource({\n width: targetSourceTexture.width,\n height: targetSourceTexture.height,\n resolution: targetSourceTexture._resolution,\n antialias: this._antialias\n })\n });\n this._backBufferTexture.source.resize(\n targetSourceTexture.width,\n targetSourceTexture.height,\n targetSourceTexture._resolution\n );\n return this._backBufferTexture;\n }\n /** destroys the back buffer */\n destroy() {\n if (this._backBufferTexture) {\n this._backBufferTexture.destroy();\n this._backBufferTexture = null;\n }\n }\n};\n/** @ignore */\n_GlBackBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"backBuffer\",\n priority: 1\n};\n/** default options for the back buffer system */\n_GlBackBufferSystem.defaultOptions = {\n /** if true will use the back buffer where required */\n useBackBuffer: false\n};\nlet GlBackBufferSystem = _GlBackBufferSystem;\n\nexport { GlBackBufferSystem };\n//# sourceMappingURL=GlBackBufferSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n this._renderer.gl.colorMask(\n !!(colorMask & 8),\n !!(colorMask & 4),\n !!(colorMask & 2),\n !!(colorMask & 1)\n );\n }\n}\n/** @ignore */\nGlColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GlColorMaskSystem };\n//# sourceMappingURL=GlColorMaskSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlEncoderSystem {\n constructor(renderer) {\n this.commandFinished = Promise.resolve();\n this._renderer = renderer;\n }\n setGeometry(geometry, shader) {\n this._renderer.geometry.bind(geometry, shader.glProgram);\n }\n finishRenderPass() {\n }\n draw(options) {\n const renderer = this._renderer;\n const { geometry, shader, state, skipSync, topology: type, size, start, instanceCount } = options;\n renderer.shader.bind(shader, skipSync);\n renderer.geometry.bind(geometry, renderer.shader._activeProgram);\n if (state) {\n renderer.state.set(state);\n }\n renderer.geometry.draw(type, size, start, instanceCount ?? geometry.instanceCount);\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGlEncoderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"encoder\"\n};\n\nexport { GlEncoderSystem };\n//# sourceMappingURL=GlEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { checkMaxIfStatementsInShader } from '../../batcher/gl/utils/checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nclass GlLimitsSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n contextChange() {\n const gl = this._renderer.gl;\n this.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.maxBatchableTextures = checkMaxIfStatementsInShader(this.maxTextures, gl);\n const isWebGl2 = this._renderer.context.webGLVersion === 2;\n this.maxUniformBindings = isWebGl2 ? gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS) : 0;\n }\n destroy() {\n }\n}\n/** @ignore */\nGlLimitsSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"limits\"\n};\n\nexport { GlLimitsSystem };\n//# sourceMappingURL=GlLimitsSystem.mjs.map\n","\"use strict\";\nclass GlRenderTarget {\n constructor() {\n this.width = -1;\n this.height = -1;\n this.msaa = false;\n /**\n * Tracks which mip level is currently attached to this render target's framebuffer.\n * This lets us skip redundant framebufferTexture2D calls on the common path.\n * @internal\n */\n this._attachedMipLevel = 0;\n /**\n * Tracks which array layer (or cube face index) is currently attached to this render target's framebuffer.\n * For non-array 2D textures this will always be 0.\n * @internal\n */\n this._attachedLayer = 0;\n this.msaaRenderBuffer = [];\n }\n}\n\nexport { GlRenderTarget };\n//# sourceMappingURL=GlRenderTarget.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuStencilModesToPixi } from '../gpu/state/GpuStencilModesToPixi.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GlStencilSystem {\n constructor(renderer) {\n this._stencilCache = {\n enabled: false,\n stencilReference: 0,\n stencilMode: STENCIL_MODES.NONE\n };\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n contextChange(gl) {\n this._gl = gl;\n this._comparisonFuncMapping = {\n always: gl.ALWAYS,\n never: gl.NEVER,\n equal: gl.EQUAL,\n \"not-equal\": gl.NOTEQUAL,\n less: gl.LESS,\n \"less-equal\": gl.LEQUAL,\n greater: gl.GREATER,\n \"greater-equal\": gl.GEQUAL\n };\n this._stencilOpsMapping = {\n keep: gl.KEEP,\n zero: gl.ZERO,\n replace: gl.REPLACE,\n invert: gl.INVERT,\n \"increment-clamp\": gl.INCR,\n \"decrement-clamp\": gl.DECR,\n \"increment-wrap\": gl.INCR_WRAP,\n \"decrement-wrap\": gl.DECR_WRAP\n };\n this.resetState();\n }\n onRenderTargetChange(renderTarget) {\n if (this._activeRenderTarget === renderTarget) return;\n this._activeRenderTarget = renderTarget;\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n resetState() {\n this._stencilCache.enabled = false;\n this._stencilCache.stencilMode = STENCIL_MODES.NONE;\n this._stencilCache.stencilReference = 0;\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n const gl = this._gl;\n const mode = GpuStencilModesToPixi[stencilMode];\n const _stencilCache = this._stencilCache;\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n if (stencilMode === STENCIL_MODES.DISABLED) {\n if (this._stencilCache.enabled) {\n this._stencilCache.enabled = false;\n gl.disable(gl.STENCIL_TEST);\n }\n return;\n }\n if (!this._stencilCache.enabled) {\n this._stencilCache.enabled = true;\n gl.enable(gl.STENCIL_TEST);\n }\n if (stencilMode !== _stencilCache.stencilMode || _stencilCache.stencilReference !== stencilReference) {\n _stencilCache.stencilMode = stencilMode;\n _stencilCache.stencilReference = stencilReference;\n gl.stencilFunc(this._comparisonFuncMapping[mode.stencilBack.compare], stencilReference, 255);\n gl.stencilOp(gl.KEEP, gl.KEEP, this._stencilOpsMapping[mode.stencilBack.passOp]);\n }\n }\n}\n/** @ignore */\nGlStencilSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"stencil\"\n};\n\nexport { GlStencilSystem };\n//# sourceMappingURL=GlStencilSystem.mjs.map\n","\"use strict\";\nconst WGSL_TO_STD40_SIZE = {\n f32: 4,\n i32: 4,\n \"vec2<f32>\": 8,\n \"vec3<f32>\": 12,\n \"vec4<f32>\": 16,\n \"vec2<i32>\": 8,\n \"vec3<i32>\": 12,\n \"vec4<i32>\": 16,\n \"mat2x2<f32>\": 16 * 2,\n \"mat3x3<f32>\": 16 * 3,\n \"mat4x4<f32>\": 16 * 4\n // TODO - not essential for now but support these in the future\n // int: 4,\n // ivec2: 8,\n // ivec3: 12,\n // ivec4: 16,\n // uint: 4,\n // uvec2: 8,\n // uvec3: 12,\n // uvec4: 16,\n // bool: 4,\n // bvec2: 8,\n // bvec3: 12,\n // bvec4: 16,\n // mat2: 16 * 2,\n // mat3: 16 * 3,\n // mat4: 16 * 4,\n};\nfunction createUboElementsSTD40(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n const chunkSize = 16;\n let size = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = WGSL_TO_STD40_SIZE[uboElement.data.type];\n if (!size) {\n throw new Error(`Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, chunkSize) * uboElement.data.size;\n }\n const boundary = size === 12 ? 16 : size;\n uboElement.size = size;\n const curOffset = offset % chunkSize;\n if (curOffset > 0 && chunkSize - curOffset < boundary) {\n offset += (chunkSize - curOffset) % 16;\n } else {\n offset += (size - curOffset % size) % size;\n }\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_TO_STD40_SIZE, createUboElementsSTD40 };\n//# sourceMappingURL=createUboElementsSTD40.mjs.map\n","import { WGSL_TO_STD40_SIZE } from './createUboElementsSTD40.mjs';\n\n\"use strict\";\nfunction generateArraySyncSTD40(uboElement, offsetToAdd) {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = uboElement.data.value.length / uboElement.data.size;\n const remainder = (4 - elementSize % 4) % 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n offset += ${offsetToAdd};\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncSTD40 };\n//# sourceMappingURL=generateArraySyncSTD40.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsSTD40 } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncSTD40 } from './generateArraySyncSTD40.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionSTD40(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboStd40\",\n generateArraySyncSTD40,\n uboSyncFunctionsSTD40\n );\n}\n\nexport { createUboSyncFunctionSTD40 };\n//# sourceMappingURL=createUboSyncSTD40.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsSTD40 } from './shader/utils/createUboElementsSTD40.mjs';\nimport { createUboSyncFunctionSTD40 } from './shader/utils/createUboSyncSTD40.mjs';\n\n\"use strict\";\nclass GlUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsSTD40,\n generateUboSync: createUboSyncFunctionSTD40\n });\n }\n}\n/** @ignore */\nGlUboSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"ubo\"\n};\n\nexport { GlUboSystem };\n//# sourceMappingURL=GlUboSystem.mjs.map\n","import { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { CLEAR } from '../const.mjs';\nimport { GlRenderTarget } from '../GlRenderTarget.mjs';\n\n\"use strict\";\nclass GlRenderTargetAdaptor {\n constructor() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n }\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n const gl = this._renderer.gl;\n this._drawBuffersCache = [];\n for (let i = 1; i <= 16; i++) {\n this._drawBuffersCache[i] = Array.from({ length: i }, (_, j) => gl.COLOR_ATTACHMENT0 + j);\n }\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderTargetSystem = this._renderTargetSystem;\n const renderer = this._renderer;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const gl = renderer.gl;\n this.finishRenderPass(sourceRenderSurfaceTexture);\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n renderer.texture.bind(destinationTexture, 0);\n gl.copyTexSubImage2D(\n gl.TEXTURE_2D,\n 0,\n originDest.x,\n originDest.y,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport, mipLevel = 0, layer = 0) {\n const renderTargetSystem = this._renderTargetSystem;\n const source = renderTarget.colorTexture;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (layer !== 0 && this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to array layers requires WebGL2.\");\n }\n if (mipLevel > 0) {\n if (gpuRenderTarget.msaa) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.\");\n }\n if (this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to mip levels requires WebGL2.\");\n }\n }\n let viewPortY = viewport.y;\n if (renderTarget.isRoot) {\n viewPortY = source.pixelHeight - viewport.height - viewport.y;\n }\n renderTarget.colorTextures.forEach((texture) => {\n this._renderer.texture.unbind(texture);\n });\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, gpuRenderTarget.framebuffer);\n if (!renderTarget.isRoot && (gpuRenderTarget._attachedMipLevel !== mipLevel || gpuRenderTarget._attachedLayer !== layer)) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const glSource = this._renderer.texture.getGlSource(colorTexture);\n if (glSource.target === gl.TEXTURE_2D) {\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] layer must be 0 when rendering to 2D textures in WebGL.\");\n }\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_2D,\n glSource.texture,\n mipLevel\n );\n } else if (glSource.target === gl.TEXTURE_2D_ARRAY) {\n if (this._renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] Rendering to 2D array textures requires WebGL2.\");\n }\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n glSource.texture,\n mipLevel,\n layer\n );\n } else if (glSource.target === gl.TEXTURE_CUBE_MAP) {\n if (layer < 0 || layer > 5) {\n throw new Error(\"[RenderTargetSystem] Cube map layer must be between 0 and 5.\");\n }\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + layer,\n glSource.texture,\n mipLevel\n );\n } else {\n throw new Error(\"[RenderTargetSystem] Unsupported texture target for render-to-layer in WebGL.\");\n }\n });\n gpuRenderTarget._attachedMipLevel = mipLevel;\n gpuRenderTarget._attachedLayer = layer;\n }\n if (renderTarget.colorTextures.length > 1) {\n this._setDrawBuffers(renderTarget, gl);\n }\n const viewPortCache = this._viewPortCache;\n if (viewPortCache.x !== viewport.x || viewPortCache.y !== viewPortY || viewPortCache.width !== viewport.width || viewPortCache.height !== viewport.height) {\n viewPortCache.x = viewport.x;\n viewPortCache.y = viewPortY;\n viewPortCache.width = viewport.width;\n viewPortCache.height = viewport.height;\n gl.viewport(\n viewport.x,\n viewPortY,\n viewport.width,\n viewport.height\n );\n }\n if (!gpuRenderTarget.depthStencilRenderBuffer && (renderTarget.stencil || renderTarget.depth)) {\n this._initStencil(gpuRenderTarget);\n }\n this.clear(renderTarget, clear, clearColor);\n }\n finishRenderPass(renderTarget) {\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (!glRenderTarget.msaa) return;\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, glRenderTarget.framebuffer);\n gl.blitFramebuffer(\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n gl.COLOR_BUFFER_BIT,\n gl.NEAREST\n );\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.framebuffer);\n }\n initGpuRenderTarget(renderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const glRenderTarget = new GlRenderTarget();\n glRenderTarget._attachedMipLevel = 0;\n glRenderTarget._attachedLayer = 0;\n const colorTexture = renderTarget.colorTexture;\n if (colorTexture instanceof CanvasSource) {\n this._renderer.context.ensureCanvasSize(renderTarget.colorTexture.resource);\n glRenderTarget.framebuffer = null;\n return glRenderTarget;\n }\n this._initColor(renderTarget, glRenderTarget);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return glRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n const gl = this._renderer.gl;\n if (gpuRenderTarget.framebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.framebuffer);\n gpuRenderTarget.framebuffer = null;\n }\n if (gpuRenderTarget.resolveTargetFramebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.resolveTargetFramebuffer);\n gpuRenderTarget.resolveTargetFramebuffer = null;\n }\n if (gpuRenderTarget.depthStencilRenderBuffer) {\n gl.deleteRenderbuffer(gpuRenderTarget.depthStencilRenderBuffer);\n gpuRenderTarget.depthStencilRenderBuffer = null;\n }\n gpuRenderTarget.msaaRenderBuffer.forEach((renderBuffer) => {\n gl.deleteRenderbuffer(renderBuffer);\n });\n gpuRenderTarget.msaaRenderBuffer = null;\n }\n clear(_renderTarget, clear, clearColor, _viewport, _mipLevel = 0, layer = 0) {\n if (!clear) return;\n if (layer !== 0) {\n throw new Error(\"[RenderTargetSystem] Clearing array layers is not supported in WebGL renderer.\");\n }\n const renderTargetSystem = this._renderTargetSystem;\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const gl = this._renderer.gl;\n if (clear & CLEAR.COLOR) {\n clearColor ?? (clearColor = renderTargetSystem.defaultClearColor);\n const clearColorCache = this._clearColorCache;\n const clearColorArray = clearColor;\n if (clearColorCache[0] !== clearColorArray[0] || clearColorCache[1] !== clearColorArray[1] || clearColorCache[2] !== clearColorArray[2] || clearColorCache[3] !== clearColorArray[3]) {\n clearColorCache[0] = clearColorArray[0];\n clearColorCache[1] = clearColorArray[1];\n clearColorCache[2] = clearColorArray[2];\n clearColorCache[3] = clearColorArray[3];\n gl.clearColor(clearColorArray[0], clearColorArray[1], clearColorArray[2], clearColorArray[3]);\n }\n }\n gl.clear(clear);\n }\n resizeGpuRenderTarget(renderTarget) {\n if (renderTarget.isRoot) return;\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n this._resizeColor(renderTarget, glRenderTarget);\n if (renderTarget.stencil || renderTarget.depth) {\n this._resizeStencil(glRenderTarget);\n }\n }\n _initColor(renderTarget, glRenderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const resolveTargetFramebuffer = gl.createFramebuffer();\n glRenderTarget.resolveTargetFramebuffer = resolveTargetFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, resolveTargetFramebuffer);\n glRenderTarget.width = renderTarget.colorTexture.source.pixelWidth;\n glRenderTarget.height = renderTarget.colorTexture.source.pixelHeight;\n const colorTextures = renderTarget.colorTextures;\n colorTextures.forEach((colorTexture, i) => {\n const source = colorTexture.source;\n if (source.antialias) {\n if (renderer.context.supports.msaa) {\n glRenderTarget.msaa = true;\n } else {\n warn(\"[RenderTexture] Antialiasing on textures is not supported in WebGL1\");\n }\n }\n renderer.texture.bindSource(source, 0);\n const glSource = renderer.texture.getGlSource(source);\n const glTexture = glSource.texture;\n if (glSource.target === gl.TEXTURE_2D) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_2D,\n glTexture,\n 0\n );\n } else if (glSource.target === gl.TEXTURE_2D_ARRAY) {\n if (renderer.context.webGLVersion < 2) {\n throw new Error(\"[RenderTargetSystem] TEXTURE_2D_ARRAY requires WebGL2.\");\n }\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n glTexture,\n 0,\n 0\n );\n } else if (glSource.target === gl.TEXTURE_CUBE_MAP) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n glTexture,\n 0\n );\n } else {\n throw new Error(\"[RenderTargetSystem] Unsupported texture target for framebuffer attachment.\");\n }\n });\n if (glRenderTarget.msaa) {\n const viewFramebuffer = gl.createFramebuffer();\n glRenderTarget.framebuffer = viewFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((_, i) => {\n const msaaRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.msaaRenderBuffer[i] = msaaRenderBuffer;\n });\n } else {\n glRenderTarget.framebuffer = resolveTargetFramebuffer;\n }\n this._resizeColor(renderTarget, glRenderTarget);\n }\n _resizeColor(renderTarget, glRenderTarget) {\n const source = renderTarget.colorTexture.source;\n glRenderTarget.width = source.pixelWidth;\n glRenderTarget.height = source.pixelHeight;\n glRenderTarget._attachedMipLevel = 0;\n glRenderTarget._attachedLayer = 0;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (i === 0) return;\n colorTexture.source.resize(source.width, source.height, source._resolution);\n });\n if (glRenderTarget.msaa) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const viewFramebuffer = glRenderTarget.framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const source2 = colorTexture.source;\n renderer.texture.bindSource(source2, 0);\n const glSource = renderer.texture.getGlSource(source2);\n const glInternalFormat = glSource.internalFormat;\n const msaaRenderBuffer = glRenderTarget.msaaRenderBuffer[i];\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n glInternalFormat,\n source2.pixelWidth,\n source2.pixelHeight\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n });\n }\n }\n _initStencil(glRenderTarget) {\n if (glRenderTarget.framebuffer === null) return;\n const gl = this._renderer.gl;\n const depthStencilRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.depthStencilRenderBuffer = depthStencilRenderBuffer;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n this._resizeStencil(glRenderTarget);\n }\n _resizeStencil(glRenderTarget) {\n const gl = this._renderer.gl;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n glRenderTarget.depthStencilRenderBuffer\n );\n if (glRenderTarget.msaa) {\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n gl.DEPTH24_STENCIL8,\n glRenderTarget.width,\n glRenderTarget.height\n );\n } else {\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n this._renderer.context.webGLVersion === 2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n glRenderTarget.width,\n glRenderTarget.height\n );\n }\n }\n prerender(renderTarget) {\n const resource = renderTarget.colorTexture.resource;\n if (this._renderer.context.multiView && CanvasSource.test(resource)) {\n this._renderer.context.ensureCanvasSize(resource);\n }\n }\n postrender(renderTarget) {\n if (!this._renderer.context.multiView) return;\n if (CanvasSource.test(renderTarget.colorTexture.resource)) {\n const contextCanvas = this._renderer.context.canvas;\n const canvasSource = renderTarget.colorTexture;\n canvasSource.context2D.drawImage(\n contextCanvas,\n 0,\n canvasSource.pixelHeight - contextCanvas.height\n );\n }\n }\n _setDrawBuffers(renderTarget, gl) {\n const count = renderTarget.colorTextures.length;\n const bufferArray = this._drawBuffersCache[count];\n if (this._renderer.context.webGLVersion === 1) {\n const ext = this._renderer.context.extensions.drawBuffers;\n if (!ext) {\n warn(\"[RenderTexture] This WebGL1 context does not support rendering to multiple targets\");\n } else {\n ext.drawBuffersWEBGL(bufferArray);\n }\n } else {\n gl.drawBuffers(bufferArray);\n }\n }\n}\n\nexport { GlRenderTargetAdaptor };\n//# sourceMappingURL=GlRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GlRenderTargetAdaptor } from './GlRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GlRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GlRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGlRenderTargetSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"renderTarget\"\n};\n\nexport { GlRenderTargetSystem };\n//# sourceMappingURL=GlRenderTargetSystem.mjs.map\n","import { BufferResource } from '../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\n\n\"use strict\";\nfunction generateShaderSyncCode(shader, shaderSystem) {\n const funcFragments = [];\n const headerFragments = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n let addedTextreSystem = false;\n let textureCount = 0;\n const programData = shaderSystem._getProgramData(shader.glProgram);\n for (const i in shader.groups) {\n const group = shader.groups[i];\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n for (const j in group.resources) {\n const resource = group.resources[j];\n if (resource instanceof UniformGroup) {\n if (resource.ubo) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n } else if (resource instanceof BufferResource) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else if (resource instanceof TextureSource) {\n const uniformName = shader._uniformBindMap[i][j];\n const uniformData = programData.uniformData[uniformName];\n if (uniformData) {\n if (!addedTextreSystem) {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n textureCount++;\n }\n }\n }\n }\n const functionSource = [...headerFragments, ...funcFragments].join(\"\\n\");\n return new Function(\"r\", \"s\", \"sD\", functionSource);\n}\n\nexport { generateShaderSyncCode };\n//# sourceMappingURL=GenerateShaderSyncCode.mjs.map\n","\"use strict\";\nclass IGLUniformData {\n}\nclass GlProgramData {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBlockBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBlockBindings = null;\n this.program = null;\n }\n}\n\nexport { GlProgramData, IGLUniformData };\n//# sourceMappingURL=GlProgramData.mjs.map\n","\"use strict\";\nfunction compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","\"use strict\";\nfunction booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","\"use strict\";\nlet GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nconst GLSL_TO_VERTEX_TYPES = {\n float: \"float32\",\n vec2: \"float32x2\",\n vec3: \"float32x3\",\n vec4: \"float32x4\",\n int: \"sint32\",\n ivec2: \"sint32x2\",\n ivec3: \"sint32x3\",\n ivec4: \"sint32x4\",\n uint: \"uint32\",\n uvec2: \"uint32x2\",\n uvec3: \"uint32x3\",\n uvec4: \"uint32x4\",\n bool: \"uint32\",\n bvec2: \"uint32x2\",\n bvec3: \"uint32x3\",\n bvec4: \"uint32x4\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\nfunction mapGlToVertexFormat(gl, type) {\n const typeValue = mapType(gl, type);\n return GLSL_TO_VERTEX_TYPES[typeValue] || \"float32\";\n}\n\nexport { mapGlToVertexFormat, mapType };\n//# sourceMappingURL=mapType.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { mapGlToVertexFormat } from './mapType.mjs';\n\n\"use strict\";\nfunction extractAttributesFromGlProgram(program, gl, sortAttributes = false) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const format = mapGlToVertexFormat(gl, attribData.type);\n attributes[attribData.name] = {\n location: 0,\n // set further down..\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n const keys = Object.keys(attributes);\n if (sortAttributes) {\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = i;\n gl.bindAttribLocation(program, i, keys[i]);\n }\n gl.linkProgram(program);\n } else {\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = gl.getAttribLocation(program, keys[i]);\n }\n }\n return attributes;\n}\n\nexport { extractAttributesFromGlProgram };\n//# sourceMappingURL=extractAttributesFromGlProgram.mjs.map\n","\"use strict\";\nfunction getUboData(program, gl) {\n if (!gl.ACTIVE_UNIFORM_BLOCKS) return {};\n const uniformBlocks = {};\n const totalUniformsBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let i = 0; i < totalUniformsBlocks; i++) {\n const name = gl.getActiveUniformBlockName(program, i);\n const uniformBlockIndex = gl.getUniformBlockIndex(program, name);\n const size = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_DATA_SIZE);\n uniformBlocks[name] = {\n name,\n index: uniformBlockIndex,\n size\n };\n }\n return uniformBlocks;\n}\n\nexport { getUboData };\n//# sourceMappingURL=getUboData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\n\"use strict\";\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","\"use strict\";\nfunction logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { GlProgramData } from '../GlProgramData.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram.mjs';\nimport { getUboData } from './getUboData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\n\"use strict\";\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n } else {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertex)\n );\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program._uniformData) {\n const data = program._uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateShaderSyncCode } from './GenerateShaderSyncCode.mjs';\nimport { generateProgram } from './program/generateProgram.mjs';\n\n\"use strict\";\nconst defaultSyncData = {\n textureCount: 0,\n blockIndex: 0\n};\nclass GlShaderSystem {\n constructor(renderer) {\n /** @internal */\n this._activeProgram = null;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gl) {\n this._gl = gl;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._activeProgram = null;\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param skipSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, skipSync) {\n this._setProgram(shader.glProgram);\n if (skipSync) return;\n defaultSyncData.textureCount = 0;\n defaultSyncData.blockIndex = 0;\n let syncFunction = this._shaderSyncFunctions[shader.glProgram._key];\n if (!syncFunction) {\n syncFunction = this._shaderSyncFunctions[shader.glProgram._key] = this._generateShaderSync(shader, this);\n }\n this._renderer.buffer.nextBindBase(!!shader.glProgram.transformFeedbackVaryings);\n syncFunction(this._renderer, shader, defaultSyncData);\n }\n /**\n * Updates the uniform group.\n * @param uniformGroup - the uniform group to update\n */\n updateUniformGroup(uniformGroup) {\n this._renderer.uniformGroup.updateUniformGroup(uniformGroup, this._activeProgram, defaultSyncData);\n }\n /**\n * Binds a uniform block to the shader.\n * @param uniformGroup - the uniform group to bind\n * @param name - the name of the uniform block\n * @param index - the index of the uniform block\n */\n bindUniformBlock(uniformGroup, name, index = 0) {\n const bufferSystem = this._renderer.buffer;\n const programData = this._getProgramData(this._activeProgram);\n const isBufferResource = uniformGroup._bufferResource;\n if (!isBufferResource) {\n this._renderer.ubo.updateUniformGroup(uniformGroup);\n }\n const buffer = uniformGroup.buffer;\n const glBuffer = bufferSystem.updateBuffer(buffer);\n const boundLocation = bufferSystem.freeLocationForBufferBase(glBuffer);\n if (isBufferResource) {\n const { offset, size } = uniformGroup;\n if (offset === 0 && size === buffer.data.byteLength) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n } else {\n bufferSystem.bindBufferRange(glBuffer, boundLocation, offset);\n }\n } else if (bufferSystem.getLastBindBaseLocation(glBuffer) !== boundLocation) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n }\n const uniformBlockIndex = this._activeProgram._uniformBlockData[name].index;\n if (programData.uniformBlockBindings[index] === boundLocation) return;\n programData.uniformBlockBindings[index] = boundLocation;\n this._renderer.gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundLocation);\n }\n _setProgram(program) {\n if (this._activeProgram === program) return;\n this._activeProgram = program;\n const programData = this._getProgramData(program);\n this._gl.useProgram(programData.program);\n }\n /**\n * @param program - the program to get the data for\n * @internal\n */\n _getProgramData(program) {\n return this._programDataHash[program._key] || this._createProgramData(program);\n }\n _createProgramData(program) {\n const key = program._key;\n this._programDataHash[key] = generateProgram(this._gl, program);\n return this._programDataHash[key];\n }\n destroy() {\n for (const key of Object.keys(this._programDataHash)) {\n this._programDataHash[key].destroy();\n }\n this._programDataHash = null;\n this._shaderSyncFunctions = null;\n this._activeProgram = null;\n this._renderer = null;\n this._gl = null;\n }\n /**\n * Creates a function that can be executed that will sync the shader as efficiently as possible.\n * Overridden by the unsafe eval package if you don't want eval used in your project.\n * @param shader - the shader to generate the sync function for\n * @param shaderSystem - the shader system to use\n * @returns - the generated sync function\n * @ignore\n */\n _generateShaderSync(shader, shaderSystem) {\n return generateShaderSyncCode(shader, shaderSystem);\n }\n resetState() {\n this._activeProgram = null;\n }\n}\n/** @ignore */\nGlShaderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"shader\"\n};\n\nexport { GlShaderSystem };\n//# sourceMappingURL=GlShaderSystem.mjs.map\n","\"use strict\";\nconst UNIFORM_TO_SINGLE_SETTERS = {\n f32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n \"vec2<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(location, v[0], v[1]);\n }`,\n \"vec3<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(location, v[0], v[1], v[2]);\n }`,\n \"vec4<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n i32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n u32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(location, v);\n }`,\n \"vec2<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n \"vec3<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n \"vec4<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`\n};\nconst UNIFORM_TO_ARRAY_SETTERS = {\n f32: `gl.uniform1fv(location, v);`,\n \"vec2<f32>\": `gl.uniform2fv(location, v);`,\n \"vec3<f32>\": `gl.uniform3fv(location, v);`,\n \"vec4<f32>\": `gl.uniform4fv(location, v);`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`,\n i32: `gl.uniform1iv(location, v);`,\n \"vec2<i32>\": `gl.uniform2iv(location, v);`,\n \"vec3<i32>\": `gl.uniform3iv(location, v);`,\n \"vec4<i32>\": `gl.uniform4iv(location, v);`,\n u32: `gl.uniform1iv(location, v);`,\n \"vec2<u32>\": `gl.uniform2iv(location, v);`,\n \"vec3<u32>\": `gl.uniform3iv(location, v);`,\n \"vec4<u32>\": `gl.uniform4iv(location, v);`,\n bool: `gl.uniform1iv(location, v);`,\n \"vec2<bool>\": `gl.uniform2iv(location, v);`,\n \"vec3<bool>\": `gl.uniform3iv(location, v);`,\n \"vec4<bool>\": `gl.uniform4iv(location, v);`\n};\n\nexport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS };\n//# sourceMappingURL=generateUniformsSyncTypes.mjs.map\n","import { BufferResource } from '../../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup.mjs';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers.mjs';\nimport { UNIFORM_TO_SINGLE_SETTERS, UNIFORM_TO_ARRAY_SETTERS } from './generateUniformsSyncTypes.mjs';\n\n\"use strict\";\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n for (const i in group.uniforms) {\n if (!uniformData[i]) {\n if (group.uniforms[i] instanceof UniformGroup) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n } else {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n } else if (group.uniforms[i] instanceof BufferResource) {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n continue;\n }\n const uniform = group.uniformStructures[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n const template = templateType[uniform.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\n\"use strict\";\nclass GlUniformGroupSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /** Cache to holds the generated functions. Stored against UniformObjects unique signature. */\n this._cache = {};\n this._uniformGroupSyncHash = {};\n this._renderer = renderer;\n this.gl = null;\n this._cache = {};\n }\n contextChange(gl) {\n this.gl = gl;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param group - the uniforms values that be applied to the current shader\n * @param program\n * @param syncData\n * @param syncData.textureCount\n */\n updateUniformGroup(group, program, syncData) {\n const programData = this._renderer.shader._getProgramData(program);\n if (!group.isStatic || group._dirtyId !== programData.uniformDirtyGroups[group.uid]) {\n programData.uniformDirtyGroups[group.uid] = group._dirtyId;\n const syncFunc = this._getUniformSyncFunction(group, program);\n syncFunc(programData.uniformData, group.uniforms, this._renderer, syncData);\n }\n }\n /**\n * Overridable by the pixi.js/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param program\n */\n _getUniformSyncFunction(group, program) {\n return this._uniformGroupSyncHash[group._signature]?.[program._key] || this._createUniformSyncFunction(group, program);\n }\n _createUniformSyncFunction(group, program) {\n const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature] || (this._uniformGroupSyncHash[group._signature] = {});\n const id = this._getSignature(group, program._uniformData, \"u\");\n if (!this._cache[id]) {\n this._cache[id] = this._generateUniformsSync(group, program._uniformData);\n }\n uniformGroupSyncHash[program._key] = this._cache[id];\n return uniformGroupSyncHash[program._key];\n }\n _generateUniformsSync(group, uniformData) {\n return generateUniformsSync(group, uniformData);\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n _getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this._renderer = null;\n this._cache = null;\n }\n}\n/** @ignore */\nGlUniformGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"uniformGroup\"\n};\n\nexport { GlUniformGroupSystem };\n//# sourceMappingURL=GlUniformGroupSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapWebGLBlendModesToPixi(gl) {\n const blendMap = {};\n blendMap.normal = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.add = [gl.ONE, gl.ONE];\n blendMap.multiply = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.screen = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.none = [0, 0];\n blendMap[\"normal-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap[\"add-npm\"] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n blendMap[\"screen-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.erase = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n const isWebGl2 = !(gl instanceof DOMAdapter.get().getWebGLRenderingContext());\n if (isWebGl2) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MIN, gl.MIN];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MAX, gl.MAX];\n } else {\n const ext = gl.getExtension(\"EXT_blend_minmax\");\n if (ext) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MIN_EXT, ext.MIN_EXT];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MAX_EXT, ext.MAX_EXT];\n }\n }\n return blendMap;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { mapWebGLBlendModesToPixi } from './mapWebGLBlendModesToPixi.mjs';\n\n\"use strict\";\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _GlStateSystem = class _GlStateSystem {\n constructor(renderer) {\n /**\n * Whether to invert the front face when rendering\n * This is used for render textures where the Y-coordinate is flipped\n * @default false\n */\n this._invertFrontFace = false;\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = \"none\";\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = State.for2d();\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n this._invertFrontFace = !renderTarget.isRoot;\n if (this._cullFace) {\n this.setFrontFace(this._frontFace);\n } else {\n this._frontFaceDirty = true;\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModesMap = mapWebGLBlendModesToPixi(gl);\n this.resetState();\n }\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n set(state) {\n state || (state = this.defaultState);\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff >>= 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n forceState(state) {\n state || (state = this.defaultState);\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n setBlend(value) {\n this._updateCheck(_GlStateSystem._checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n setOffset(value) {\n this._updateCheck(_GlStateSystem._checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n setCullFace(value) {\n this._cullFace = value;\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n if (this._cullFace && this._frontFaceDirty) {\n this.setFrontFace(this._frontFace);\n }\n }\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n setFrontFace(value) {\n this._frontFace = value;\n this._frontFaceDirty = false;\n const faceMode = this._invertFrontFace ? !value : value;\n if (this._glFrontFace !== faceMode) {\n this._glFrontFace = faceMode;\n this.gl.frontFace(this.gl[faceMode ? \"CW\" : \"CCW\"]);\n }\n }\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n setBlendMode(value) {\n if (!this.blendModesMap[value]) {\n value = \"normal\";\n }\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModesMap[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n /** Resets all the logic and disables the VAOs. */\n resetState() {\n this._glFrontFace = false;\n this._frontFace = false;\n this._cullFace = false;\n this._frontFaceDirty = false;\n this._invertFrontFace = false;\n this.gl.frontFace(this.gl.CCW);\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = \"\";\n this.setBlendMode(\"normal\");\n }\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n _updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n /** @ignore */\n destroy() {\n this.gl = null;\n this.checks.length = 0;\n }\n};\n/** @ignore */\n_GlStateSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"state\"\n};\nlet GlStateSystem = _GlStateSystem;\n\nexport { GlStateSystem };\n//# sourceMappingURL=GlStateSystem.mjs.map\n","import { GL_TARGETS, GL_TYPES, GL_FORMATS } from './const.mjs';\n\n\"use strict\";\nclass GlTexture {\n constructor(texture) {\n this.target = GL_TARGETS.TEXTURE_2D;\n /**\n * Bitmask tracking which array layers / sub-targets have been initialized at mip level 0.\n * Used by uploaders that need per-layer allocation semantics (e.g. cube faces).\n * @internal\n */\n this._layerInitMask = 0;\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.type = GL_TYPES.UNSIGNED_BYTE;\n this.internalFormat = GL_FORMATS.RGBA;\n this.format = GL_FORMATS.RGBA;\n this.samplerType = 0;\n }\n destroy() {\n }\n}\n\nexport { GlTexture };\n//# sourceMappingURL=GlTexture.mjs.map\n","\"use strict\";\nconst glUploadBufferImageResource = {\n id: \"buffer\",\n upload(source, glTexture, gl, _webGLVersion, targetOverride, forceAllocation = false) {\n const target = targetOverride || glTexture.target;\n if (!forceAllocation && (glTexture.width === source.width && glTexture.height === source.height)) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n source.width,\n source.height,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n source.width,\n source.height,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n glTexture.width = source.width;\n glTexture.height = source.height;\n }\n};\n\nexport { glUploadBufferImageResource };\n//# sourceMappingURL=glUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst compressedFormatMap = {\n \"bc1-rgba-unorm\": true,\n \"bc1-rgba-unorm-srgb\": true,\n \"bc2-rgba-unorm\": true,\n \"bc2-rgba-unorm-srgb\": true,\n \"bc3-rgba-unorm\": true,\n \"bc3-rgba-unorm-srgb\": true,\n \"bc4-r-unorm\": true,\n \"bc4-r-snorm\": true,\n \"bc5-rg-unorm\": true,\n \"bc5-rg-snorm\": true,\n \"bc6h-rgb-ufloat\": true,\n \"bc6h-rgb-float\": true,\n \"bc7-rgba-unorm\": true,\n \"bc7-rgba-unorm-srgb\": true,\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"etc2-rgb8unorm\": true,\n \"etc2-rgb8unorm-srgb\": true,\n \"etc2-rgb8a1unorm\": true,\n \"etc2-rgb8a1unorm-srgb\": true,\n \"etc2-rgba8unorm\": true,\n \"etc2-rgba8unorm-srgb\": true,\n \"eac-r11unorm\": true,\n \"eac-r11snorm\": true,\n \"eac-rg11unorm\": true,\n \"eac-rg11snorm\": true,\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"astc-4x4-unorm\": true,\n \"astc-4x4-unorm-srgb\": true,\n \"astc-5x4-unorm\": true,\n \"astc-5x4-unorm-srgb\": true,\n \"astc-5x5-unorm\": true,\n \"astc-5x5-unorm-srgb\": true,\n \"astc-6x5-unorm\": true,\n \"astc-6x5-unorm-srgb\": true,\n \"astc-6x6-unorm\": true,\n \"astc-6x6-unorm-srgb\": true,\n \"astc-8x5-unorm\": true,\n \"astc-8x5-unorm-srgb\": true,\n \"astc-8x6-unorm\": true,\n \"astc-8x6-unorm-srgb\": true,\n \"astc-8x8-unorm\": true,\n \"astc-8x8-unorm-srgb\": true,\n \"astc-10x5-unorm\": true,\n \"astc-10x5-unorm-srgb\": true,\n \"astc-10x6-unorm\": true,\n \"astc-10x6-unorm-srgb\": true,\n \"astc-10x8-unorm\": true,\n \"astc-10x8-unorm-srgb\": true,\n \"astc-10x10-unorm\": true,\n \"astc-10x10-unorm-srgb\": true,\n \"astc-12x10-unorm\": true,\n \"astc-12x10-unorm-srgb\": true,\n \"astc-12x12-unorm\": true,\n \"astc-12x12-unorm-srgb\": true\n};\nconst glUploadCompressedTextureResource = {\n id: \"compressed\",\n upload(source, glTexture, gl, _webGLVersion, targetOverride, _forceAllocation) {\n const target = targetOverride ?? glTexture.target;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const compressed = !!compressedFormatMap[source.format];\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n if (compressed) {\n gl.compressedTexImage2D(\n target,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n levelBuffer\n );\n } else {\n gl.texImage2D(\n target,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n glTexture.format,\n glTexture.type,\n levelBuffer\n );\n }\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { glUploadCompressedTextureResource };\n//# sourceMappingURL=glUploadCompressedTextureResource.mjs.map\n","import { GL_TARGETS } from '../const.mjs';\n\n\"use strict\";\nconst FACE_ORDER = [\"right\", \"left\", \"top\", \"bottom\", \"front\", \"back\"];\nfunction createGlUploadCubeTextureResource(uploaders) {\n return {\n id: \"cube\",\n upload(source, glTexture, gl, webGLVersion) {\n const faces = source.faces;\n for (let faceIndex = 0; faceIndex < FACE_ORDER.length; faceIndex++) {\n const key = FACE_ORDER[faceIndex];\n const face = faces[key];\n const uploader = uploaders[face.uploadMethodId] || uploaders.image;\n uploader.upload(\n face,\n glTexture,\n gl,\n webGLVersion,\n // Use the face target for the current face. cube faces ids go up 1 so\n // GL_TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i addresses the i'th face target.\n GL_TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex,\n // Force allocation for the first upload of each face.\n (glTexture._layerInitMask & 1 << faceIndex) === 0\n );\n glTexture._layerInitMask |= 1 << faceIndex;\n }\n glTexture.width = source.pixelWidth;\n glTexture.height = source.pixelHeight;\n }\n };\n}\n\nexport { createGlUploadCubeTextureResource };\n//# sourceMappingURL=glUploadCubeTextureResource.mjs.map\n","\"use strict\";\nconst glUploadImageResource = {\n id: \"image\",\n upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation = false) {\n const target = targetOverride || glTexture.target;\n const textureWidth = source.pixelWidth;\n const textureHeight = source.pixelHeight;\n const resourceWidth = source.resourceWidth;\n const resourceHeight = source.resourceHeight;\n const isWebGL2 = webGLVersion === 2;\n const needsAllocation = forceAllocation || glTexture.width !== textureWidth || glTexture.height !== textureHeight;\n const resourceFitsTexture = resourceWidth >= textureWidth && resourceHeight >= textureHeight;\n const resource = source.resource;\n const uploadFunction = isWebGL2 ? uploadImageWebGL2 : uploadImageWebGL1;\n uploadFunction(\n gl,\n target,\n glTexture,\n textureWidth,\n textureHeight,\n resourceWidth,\n resourceHeight,\n resource,\n needsAllocation,\n resourceFitsTexture\n );\n glTexture.width = textureWidth;\n glTexture.height = textureHeight;\n }\n};\nfunction uploadImageWebGL2(gl, target, glTexture, textureWidth, textureHeight, resourceWidth, resourceHeight, resource, needsAllocation, resourceFitsTexture) {\n if (!resourceFitsTexture) {\n if (needsAllocation) {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n resourceWidth,\n resourceHeight,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n if (!needsAllocation) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n}\nfunction uploadImageWebGL1(gl, target, glTexture, textureWidth, textureHeight, _resourceWidth, _resourceHeight, resource, needsAllocation, resourceFitsTexture) {\n if (!resourceFitsTexture) {\n if (needsAllocation) {\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n if (!needsAllocation) {\n gl.texSubImage2D(\n target,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n resource\n );\n return;\n }\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n glTexture.format,\n glTexture.type,\n resource\n );\n}\n\nexport { glUploadImageResource };\n//# sourceMappingURL=glUploadImageResource.mjs.map\n","import { isSafari } from '../../../../../utils/browser/isSafari.mjs';\nimport { glUploadImageResource } from './glUploadImageResource.mjs';\n\n\"use strict\";\nconst defaultForceAllocation = isSafari();\nconst glUploadVideoResource = {\n id: \"video\",\n upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation = defaultForceAllocation) {\n if (!source.isValid) {\n const target = targetOverride ?? glTexture.target;\n gl.texImage2D(\n target,\n 0,\n glTexture.internalFormat,\n 1,\n 1,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n return;\n }\n glUploadImageResource.upload(source, glTexture, gl, webGLVersion, targetOverride, forceAllocation);\n }\n};\n\nexport { glUploadVideoResource };\n//# sourceMappingURL=glUploadVideoResource.mjs.map\n","\"use strict\";\nconst scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728\n};\nconst mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985\n },\n nearest: {\n linear: 9986,\n nearest: 9984\n }\n};\nconst wrapModeToGlAddress = {\n \"clamp-to-edge\": 33071,\n repeat: 10497,\n \"mirror-repeat\": 33648\n};\nconst compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n \"less-equal\": 515,\n greater: 516,\n \"not-equal\": 517,\n \"greater-equal\": 518,\n always: 519\n};\n\nexport { compareModeToGlCompare, mipmapScaleModeToGlFilter, scaleModeToGlFilter, wrapModeToGlAddress };\n//# sourceMappingURL=pixiToGlMaps.mjs.map\n","import { wrapModeToGlAddress, scaleModeToGlFilter, mipmapScaleModeToGlFilter, compareModeToGlCompare } from './pixiToGlMaps.mjs';\n\n\"use strict\";\nfunction applyStyleParams(style, gl, mipmaps, anisotropicExt, glFunctionName, firstParam, forceClamp, firstCreation) {\n const castParam = firstParam;\n if (!firstCreation || style.addressModeU !== \"repeat\" || style.addressModeV !== \"repeat\" || style.addressModeW !== \"repeat\") {\n const wrapModeS = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeW];\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n if (gl.TEXTURE_WRAP_R) gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n if (!firstCreation || style.magFilter !== \"linear\") {\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n if (mipmaps) {\n if (!firstCreation || style.mipmapFilter !== \"linear\") {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n } else {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n if (anisotropicExt && style.maxAnisotropy > 1) {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n if (style.compare) {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n\nexport { applyStyleParams };\n//# sourceMappingURL=applyStyleParams.mjs.map\n","\"use strict\";\nfunction mapFormatToGlFormat(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n \"rgba8unorm-srgb\": gl.RGBA,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n \"bgra8unorm-srgb\": gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n \"depth24plus-stencil8\": gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n \"depth32float-stencil8\": gl.DEPTH_STENCIL\n };\n}\n\nexport { mapFormatToGlFormat };\n//# sourceMappingURL=mapFormatToGlFormat.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapFormatToGlInternalFormat(gl, extensions) {\n let srgb = {};\n let bgra8unorm = gl.RGBA;\n if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext())) {\n srgb = {\n \"rgba8unorm-srgb\": gl.SRGB8_ALPHA8,\n \"bgra8unorm-srgb\": gl.SRGB8_ALPHA8\n };\n bgra8unorm = gl.RGBA8;\n } else if (extensions.srgb) {\n srgb = {\n \"rgba8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT,\n \"bgra8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT\n };\n }\n return {\n // 8-bit formats\n r8unorm: gl.R8,\n r8snorm: gl.R8_SNORM,\n r8uint: gl.R8UI,\n r8sint: gl.R8I,\n // 16-bit formats\n r16uint: gl.R16UI,\n r16sint: gl.R16I,\n r16float: gl.R16F,\n rg8unorm: gl.RG8,\n rg8snorm: gl.RG8_SNORM,\n rg8uint: gl.RG8UI,\n rg8sint: gl.RG8I,\n // 32-bit formats\n r32uint: gl.R32UI,\n r32sint: gl.R32I,\n r32float: gl.R32F,\n rg16uint: gl.RG16UI,\n rg16sint: gl.RG16I,\n rg16float: gl.RG16F,\n rgba8unorm: gl.RGBA,\n ...srgb,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA8_SNORM,\n rgba8uint: gl.RGBA8UI,\n rgba8sint: gl.RGBA8I,\n bgra8unorm,\n rgb9e5ufloat: gl.RGB9_E5,\n rgb10a2unorm: gl.RGB10_A2,\n rg11b10ufloat: gl.R11F_G11F_B10F,\n // 64-bit formats\n rg32uint: gl.RG32UI,\n rg32sint: gl.RG32I,\n rg32float: gl.RG32F,\n rgba16uint: gl.RGBA16UI,\n rgba16sint: gl.RGBA16I,\n rgba16float: gl.RGBA16F,\n // 128-bit formats\n rgba32uint: gl.RGBA32UI,\n rgba32sint: gl.RGBA32I,\n rgba32float: gl.RGBA32F,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT16,\n depth24plus: gl.DEPTH_COMPONENT24,\n \"depth24plus-stencil8\": gl.DEPTH24_STENCIL8,\n depth32float: gl.DEPTH_COMPONENT32F,\n \"depth32float-stencil8\": gl.DEPTH32F_STENCIL8,\n // Compressed formats\n ...extensions.s3tc ? {\n \"bc1-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT\n } : {},\n ...extensions.s3tc_sRGB ? {\n \"bc1-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n } : {},\n ...extensions.rgtc ? {\n \"bc4-r-unorm\": extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,\n \"bc4-r-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n \"bc5-rg-unorm\": extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,\n \"bc5-rg-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT\n } : {},\n ...extensions.bptc ? {\n \"bc6h-rgb-float\": extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n \"bc6h-rgb-ufloat\": extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n \"bc7-rgba-unorm\": extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n \"bc7-rgba-unorm-srgb\": extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT\n } : {},\n ...extensions.etc ? {\n \"etc2-rgb8unorm\": extensions.etc.COMPRESSED_RGB8_ETC2,\n \"etc2-rgb8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ETC2,\n \"etc2-rgb8a1unorm\": extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgb8a1unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgba8unorm\": extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,\n \"etc2-rgba8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n \"eac-r11unorm\": extensions.etc.COMPRESSED_R11_EAC,\n // 'eac-r11snorm'\n \"eac-rg11unorm\": extensions.etc.COMPRESSED_SIGNED_RG11_EAC\n // 'eac-rg11snorm'\n } : {},\n ...extensions.astc ? {\n \"astc-4x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,\n \"astc-4x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n \"astc-5x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,\n \"astc-5x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,\n \"astc-5x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,\n \"astc-5x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n \"astc-6x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,\n \"astc-6x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n \"astc-6x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,\n \"astc-6x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n \"astc-8x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,\n \"astc-8x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n \"astc-8x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,\n \"astc-8x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n \"astc-8x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,\n \"astc-8x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n \"astc-10x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,\n \"astc-10x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n \"astc-10x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,\n \"astc-10x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n \"astc-10x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,\n \"astc-10x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n \"astc-10x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,\n \"astc-10x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n \"astc-12x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,\n \"astc-12x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n \"astc-12x12-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,\n \"astc-12x12-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR\n } : {}\n };\n}\n\nexport { mapFormatToGlInternalFormat };\n//# sourceMappingURL=mapFormatToGlInternalFormat.mjs.map\n","\"use strict\";\nfunction mapFormatToGlType(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n \"rgba8unorm-srgb\": gl.UNSIGNED_BYTE,\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n \"bgra8unorm-srgb\": gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n \"depth24plus-stencil8\": gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n \"depth32float-stencil8\": gl.FLOAT_32_UNSIGNED_INT_24_8_REV\n };\n}\n\nexport { mapFormatToGlType };\n//# sourceMappingURL=mapFormatToGlType.mjs.map\n","\"use strict\";\nfunction mapViewDimensionToGlTarget(gl) {\n return {\n \"2d\": gl.TEXTURE_2D,\n cube: gl.TEXTURE_CUBE_MAP,\n \"1d\": null,\n // WebGL2 only\n \"3d\": gl?.TEXTURE_3D || null,\n \"2d-array\": gl?.TEXTURE_2D_ARRAY || null,\n \"cube-array\": gl?.TEXTURE_CUBE_MAP_ARRAY || null\n };\n}\n\nexport { mapViewDimensionToGlTarget };\n//# sourceMappingURL=mapViewDimensionToGlTarget.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { GCManagedHash } from '../../../../utils/data/GCManagedHash.mjs';\nimport { Texture } from '../../shared/texture/Texture.mjs';\nimport { GlTexture } from './GlTexture.mjs';\nimport { glUploadBufferImageResource } from './uploaders/glUploadBufferImageResource.mjs';\nimport { glUploadCompressedTextureResource } from './uploaders/glUploadCompressedTextureResource.mjs';\nimport { createGlUploadCubeTextureResource } from './uploaders/glUploadCubeTextureResource.mjs';\nimport { glUploadImageResource } from './uploaders/glUploadImageResource.mjs';\nimport { glUploadVideoResource } from './uploaders/glUploadVideoResource.mjs';\nimport { applyStyleParams } from './utils/applyStyleParams.mjs';\nimport { mapFormatToGlFormat } from './utils/mapFormatToGlFormat.mjs';\nimport { mapFormatToGlInternalFormat } from './utils/mapFormatToGlInternalFormat.mjs';\nimport { mapFormatToGlType } from './utils/mapFormatToGlType.mjs';\nimport { mapViewDimensionToGlTarget } from './utils/mapViewDimensionToGlTarget.mjs';\nimport './utils/unpremultiplyAlpha.mjs';\n\n\"use strict\";\nconst BYTES_PER_PIXEL = 4;\nclass GlTextureSystem {\n constructor(renderer) {\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundTextures = [];\n this._activeTextureLocation = -1;\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._premultiplyAlpha = false;\n // TODO - separate samplers will be a cool thing to add, but not right now!\n this._useSeparateSamplers = false;\n this._renderer = renderer;\n this._managedTextures = new GCManagedHash({\n renderer,\n type: \"resource\",\n onUnload: this.onSourceUnload.bind(this),\n name: \"glTexture\"\n });\n const baseUploaders = {\n image: glUploadImageResource,\n buffer: glUploadBufferImageResource,\n video: glUploadVideoResource,\n compressed: glUploadCompressedTextureResource\n };\n this._uploads = {\n ...baseUploaders,\n cube: createGlUploadCubeTextureResource(baseUploaders)\n };\n }\n /**\n * @deprecated since 8.15.0\n */\n get managedTextures() {\n return Object.values(this._managedTextures.items);\n }\n contextChange(gl) {\n this._gl = gl;\n if (!this._mapFormatToInternalFormat) {\n this._mapFormatToInternalFormat = mapFormatToGlInternalFormat(gl, this._renderer.context.extensions);\n this._mapFormatToType = mapFormatToGlType(gl);\n this._mapFormatToFormat = mapFormatToGlFormat(gl);\n this._mapViewDimensionToGlTarget = mapViewDimensionToGlTarget(gl);\n }\n this._managedTextures.removeAll(true);\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._premultiplyAlpha = false;\n for (let i = 0; i < 16; i++) {\n this.bind(Texture.EMPTY, i);\n }\n }\n /**\n * Initializes a texture source, if it has already been initialized nothing will happen.\n * @param source - The texture source to initialize.\n * @returns The initialized texture source.\n */\n initSource(source) {\n this.bind(source);\n }\n bind(texture, location = 0) {\n const source = texture.source;\n if (texture) {\n this.bindSource(source, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(source.style, location);\n }\n } else {\n this.bindSource(null, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(null, location);\n }\n }\n }\n bindSource(source, location = 0) {\n const gl = this._gl;\n source._gcLastUsed = this._renderer.gc.now;\n if (this._boundTextures[location] !== source) {\n this._boundTextures[location] = source;\n this._activateLocation(location);\n source || (source = Texture.EMPTY.source);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n }\n }\n _bindSampler(style, location = 0) {\n const gl = this._gl;\n if (!style) {\n this._boundSamplers[location] = null;\n gl.bindSampler(location, null);\n return;\n }\n const sampler = this._getGlSampler(style);\n if (this._boundSamplers[location] !== sampler) {\n this._boundSamplers[location] = sampler;\n gl.bindSampler(location, sampler);\n }\n }\n unbind(texture) {\n const source = texture.source;\n const boundTextures = this._boundTextures;\n const gl = this._gl;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === source) {\n this._activateLocation(i);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, null);\n boundTextures[i] = null;\n }\n }\n }\n _activateLocation(location) {\n if (this._activeTextureLocation !== location) {\n this._activeTextureLocation = location;\n this._gl.activeTexture(this._gl.TEXTURE0 + location);\n }\n }\n _initSource(source) {\n const gl = this._gl;\n const glTexture = new GlTexture(gl.createTexture());\n glTexture.type = this._mapFormatToType[source.format];\n glTexture.internalFormat = this._mapFormatToInternalFormat[source.format];\n glTexture.format = this._mapFormatToFormat[source.format];\n glTexture.target = this._mapViewDimensionToGlTarget[source.viewDimension];\n if (glTexture.target === null) {\n throw new Error(`Unsupported view dimension: ${source.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);\n }\n if (source.uploadMethodId === \"cube\") {\n glTexture.target = gl.TEXTURE_CUBE_MAP;\n }\n if (source.autoGenerateMipmaps && (this._renderer.context.supports.nonPowOf2mipmaps || source.isPowerOfTwo)) {\n const biggestDimension = Math.max(source.width, source.height);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n source._gpuData[this._renderer.uid] = glTexture;\n const added = this._managedTextures.add(source);\n if (added) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceUpdate, this);\n source.on(\"styleChange\", this.onStyleChange, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n this.onSourceUpdate(source);\n this.updateStyle(source, false);\n return glTexture;\n }\n onStyleChange(source) {\n this.updateStyle(source, false);\n }\n updateStyle(source, firstCreation) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n applyStyleParams(\n source.style,\n gl,\n source.mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"texParameteri\",\n glTexture.target,\n // will force a clamp to edge if the texture is not a power of two\n !this._renderer.context.supports.nonPowOf2wrapping && !source.isPowerOfTwo,\n firstCreation\n );\n }\n onSourceUnload(source, contextLost = false) {\n const glTexture = source._gpuData[this._renderer.uid];\n if (!glTexture) return;\n if (!contextLost) {\n this.unbind(source);\n this._gl.deleteTexture(glTexture.texture);\n }\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceUpdate, this);\n source.off(\"styleChange\", this.onStyleChange, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n }\n onSourceUpdate(source) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n if (this._premultiplyAlpha !== premultipliedAlpha) {\n this._premultiplyAlpha = premultipliedAlpha;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);\n }\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, glTexture, gl, this._renderer.context.webGLVersion);\n } else if (glTexture.target === gl.TEXTURE_2D) {\n this._initEmptyTexture2D(glTexture, source);\n } else if (glTexture.target === gl.TEXTURE_2D_ARRAY) {\n this._initEmptyTexture2DArray(glTexture, source);\n } else if (glTexture.target === gl.TEXTURE_CUBE_MAP) {\n this._initEmptyTextureCube(glTexture, source);\n } else {\n throw new Error(\"[GlTextureSystem] Unsupported texture target for empty allocation.\");\n }\n this._applyMipRange(glTexture, source);\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source, false);\n }\n }\n onUpdateMipmaps(source, bind = true) {\n if (bind) this.bindSource(source, 0);\n const glTexture = this.getGlSource(source);\n this._gl.generateMipmap(glTexture.target);\n }\n _initEmptyTexture2D(glTexture, source) {\n const gl = this._gl;\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n glTexture.internalFormat,\n w,\n h,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n _initEmptyTexture2DArray(glTexture, source) {\n if (this._renderer.context.webGLVersion !== 2) {\n throw new Error(\"[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.\");\n }\n const gl2 = this._gl;\n const depth = Math.max(source.arrayLayerCount | 0, 1);\n gl2.texImage3D(\n gl2.TEXTURE_2D_ARRAY,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n depth,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n gl2.texImage3D(\n gl2.TEXTURE_2D_ARRAY,\n level,\n glTexture.internalFormat,\n w,\n h,\n depth,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n _initEmptyTextureCube(glTexture, source) {\n const gl = this._gl;\n const totalCubeFaces = 6;\n for (let face = 0; face < totalCubeFaces; face++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n 0,\n glTexture.internalFormat,\n source.pixelWidth,\n source.pixelHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n let w = Math.max(source.pixelWidth >> 1, 1);\n let h = Math.max(source.pixelHeight >> 1, 1);\n for (let level = 1; level < source.mipLevelCount; level++) {\n for (let face = 0; face < totalCubeFaces; face++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n level,\n glTexture.internalFormat,\n w,\n h,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n w = Math.max(w >> 1, 1);\n h = Math.max(h >> 1, 1);\n }\n }\n /**\n * Applies a mip range to the currently-bound texture so WebGL2 considers the texture \"mipmap complete\"\n * for the declared `mipLevelCount` (especially important for partial mip chains rendered via FBO).\n * @param glTexture - The GL texture wrapper.\n * @param source - The texture source describing mipLevelCount.\n */\n _applyMipRange(glTexture, source) {\n if (this._renderer.context.webGLVersion !== 2) return;\n const gl = this._gl;\n const maxLevel = Math.max((source.mipLevelCount | 0) - 1, 0);\n gl.texParameteri(glTexture.target, gl.TEXTURE_BASE_LEVEL, 0);\n gl.texParameteri(glTexture.target, gl.TEXTURE_MAX_LEVEL, maxLevel);\n }\n _initSampler(style) {\n const gl = this._gl;\n const glSampler = this._gl.createSampler();\n this._glSamplers[style._resourceId] = glSampler;\n applyStyleParams(\n style,\n gl,\n this._boundTextures[this._activeTextureLocation].mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"samplerParameteri\",\n glSampler,\n false,\n true\n );\n return this._glSamplers[style._resourceId];\n }\n _getGlSampler(sampler) {\n return this._glSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGlSource(source) {\n source._gcLastUsed = this._renderer.gc.now;\n return source._gpuData[this._renderer.uid] || this._initSource(source);\n }\n generateCanvas(texture) {\n const { pixels, width, height } = this.getPixels(texture);\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n return canvas;\n }\n getPixels(texture) {\n const resolution = texture.source.resolution;\n const frame = texture.frame;\n const width = Math.max(Math.round(frame.width * resolution), 1);\n const height = Math.max(Math.round(frame.height * resolution), 1);\n const pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const renderer = this._renderer;\n const renderTarget = renderer.renderTarget.getRenderTarget(texture);\n const glRenterTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget);\n const gl = renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenterTarget.resolveTargetFramebuffer);\n gl.readPixels(\n Math.round(frame.x * resolution),\n Math.round(frame.y * resolution),\n width,\n height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n pixels\n );\n if (false) {\n unpremultiplyAlpha(pixels);\n }\n return { pixels: new Uint8ClampedArray(pixels.buffer), width, height };\n }\n destroy() {\n this._managedTextures.destroy();\n this._glSamplers = null;\n this._boundTextures = null;\n this._boundSamplers = null;\n this._mapFormatToInternalFormat = null;\n this._mapFormatToType = null;\n this._mapFormatToFormat = null;\n this._uploads = null;\n this._renderer = null;\n }\n resetState() {\n this._activeTextureLocation = -1;\n this._boundTextures.fill(Texture.EMPTY.source);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n const gl = this._gl;\n this._premultiplyAlpha = false;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this._premultiplyAlpha);\n }\n}\n/** @ignore */\nGlTextureSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"texture\"\n};\n\nexport { GlTextureSystem };\n//# sourceMappingURL=GlTextureSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GlGraphicsAdaptor {\n contextChange(renderer) {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const maxTextures = renderer.limits.maxBatchableTextures;\n const glProgram = compileHighShaderGlProgram({\n name: \"graphics\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n localUniformBitGl,\n roundPixelsBitGl\n ]\n });\n this.shader = new Shader({\n glProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n batcher,\n instructions\n } = contextSystem.getContextRenderData(context);\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n renderer.state.set(graphicsPipe.state);\n renderer.shader.bind(shader);\n renderer.geometry.bind(batcher.geometry, shader.glProgram);\n const batches = instructions.instructions;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n if (batch.size) {\n for (let j = 0; j < batch.textures.count; j++) {\n renderer.texture.bind(batch.textures.textures[j], j);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGlGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GlGraphicsAdaptor };\n//# sourceMappingURL=GlGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GlMeshAdaptor {\n init() {\n const glProgram = compileHighShaderGlProgram({\n name: \"mesh\",\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl\n ]\n });\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n const texture = mesh.texture;\n const source = texture.source;\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n } else if (!shader.glProgram) {\n warn(\"Mesh shader has no glProgram\", mesh.shader);\n return;\n }\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\nGlMeshAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GlMeshAdaptor };\n//# sourceMappingURL=GlMeshAdaptor.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GlGraphicsAdaptor } from '../../../scene/graphics/gl/GlGraphicsAdaptor.mjs';\nimport { GlMeshAdaptor } from '../../../scene/mesh/gl/GlMeshAdaptor.mjs';\nimport { GlBatchAdaptor } from '../../batcher/gl/GlBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { GlBufferSystem } from './buffer/GlBufferSystem.mjs';\nimport { GlContextSystem } from './context/GlContextSystem.mjs';\nimport { GlGeometrySystem } from './geometry/GlGeometrySystem.mjs';\nimport { GlBackBufferSystem } from './GlBackBufferSystem.mjs';\nimport { GlColorMaskSystem } from './GlColorMaskSystem.mjs';\nimport { GlEncoderSystem } from './GlEncoderSystem.mjs';\nimport { GlLimitsSystem } from './GlLimitsSystem.mjs';\nimport { GlStencilSystem } from './GlStencilSystem.mjs';\nimport { GlUboSystem } from './GlUboSystem.mjs';\nimport { GlRenderTargetSystem } from './renderTarget/GlRenderTargetSystem.mjs';\nimport { GlShaderSystem } from './shader/GlShaderSystem.mjs';\nimport { GlUniformGroupSystem } from './shader/GlUniformGroupSystem.mjs';\nimport { GlStateSystem } from './state/GlStateSystem.mjs';\nimport { GlTextureSystem } from './texture/GlTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGLSystems = [\n ...SharedSystems,\n GlUboSystem,\n GlBackBufferSystem,\n GlContextSystem,\n GlLimitsSystem,\n GlBufferSystem,\n GlTextureSystem,\n GlRenderTargetSystem,\n GlGeometrySystem,\n GlUniformGroupSystem,\n GlShaderSystem,\n GlEncoderSystem,\n GlStateSystem,\n GlStencilSystem,\n GlColorMaskSystem\n];\nconst DefaultWebGLPipes = [...SharedRenderPipes];\nconst DefaultWebGLAdapters = [GlBatchAdaptor, GlMeshAdaptor, GlGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGLSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGLPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGLSystems, ...DefaultWebGLPipes, ...DefaultWebGLAdapters);\nclass WebGLRenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgl\",\n type: RendererType.WEBGL,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGLRenderer };\n//# sourceMappingURL=WebGLRenderer.mjs.map\n"],"names":["_GlContextSystem","extensions","_GlBackBufferSystem","_GlStateSystem"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}