@annotorious/openseadragon 3.2.0 → 3.2.1
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.
- package/dist/annotorious-openseadragon.es.js +34379 -10
- package/dist/annotorious-openseadragon.es.js.map +1 -1
- package/dist/annotorious-openseadragon.js +1032 -972
- package/dist/annotorious-openseadragon.js.map +1 -1
- package/package.json +4 -4
- package/dist/CanvasPool-YpLnDXhe.js +0 -47
- package/dist/CanvasPool-YpLnDXhe.js.map +0 -1
- package/dist/SharedSystems-CkNt_hd1.js +0 -2543
- package/dist/SharedSystems-CkNt_hd1.js.map +0 -1
- package/dist/WebGLRenderer-D4J_4T0q.js +0 -2618
- package/dist/WebGLRenderer-D4J_4T0q.js.map +0 -1
- package/dist/WebGPURenderer-bp_Mr1WJ.js +0 -1614
- package/dist/WebGPURenderer-bp_Mr1WJ.js.map +0 -1
- package/dist/browserAll-BuClNU5V.js +0 -2057
- package/dist/browserAll-BuClNU5V.js.map +0 -1
- package/dist/colorToUniform-BcHZBaJ_.js +0 -219
- package/dist/colorToUniform-BcHZBaJ_.js.map +0 -1
- package/dist/index-Bxy_vBCw.js +0 -20939
- package/dist/index-Bxy_vBCw.js.map +0 -1
- package/dist/init-CxAUULxM.js +0 -3716
- package/dist/init-CxAUULxM.js.map +0 -1
- package/dist/webworkerAll-BtY9uC7i.js +0 -3
- package/dist/webworkerAll-BtY9uC7i.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebGLRenderer-D4J_4T0q.js","sources":["../../../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/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/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/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 { 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}\n\nexport { GlBuffer };\n//# sourceMappingURL=GlBuffer.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.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 this._gpuBuffers = /* @__PURE__ */ Object.create(null);\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._renderer.renderableGC.addManagedHash(this, \"_gpuBuffers\");\n }\n /**\n * @ignore\n */\n destroy() {\n this._renderer = null;\n this._gl = null;\n this._gpuBuffers = null;\n this._boundBufferBases = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this._gl = this._renderer.gl;\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n this._maxBindings = gl.MAX_UNIFORM_BUFFER_BINDINGS ? gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS) : 0;\n }\n getGlBuffer(buffer) {\n return this._gpuBuffers[buffer.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 /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n const gl = this._gl;\n for (const id in this._gpuBuffers) {\n gl.deleteBuffer(this._gpuBuffers[id].buffer);\n }\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n }\n /**\n * Disposes buffer\n * @param {Buffer} buffer - buffer with data\n * @param {boolean} [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n onBufferDestroy(buffer, contextLost) {\n const glBuffer = this._gpuBuffers[buffer.uid];\n const gl = this._gl;\n if (!contextLost) {\n gl.deleteBuffer(glBuffer.buffer);\n }\n this._gpuBuffers[buffer.uid] = null;\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 this._gpuBuffers[buffer.uid] = glBuffer;\n buffer.on(\"destroy\", this.onBufferDestroy, this);\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._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 { 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 GlGeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._geometryVaoHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this._renderer.renderableGC.addManagedHash(this, \"_geometryVaoHash\");\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 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 this._geometryVaoHash = /* @__PURE__ */ Object.create(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 }\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 this._geometryVaoHash[geometry.uid]?.[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 if (!this._geometryVaoHash[geometry.uid]) {\n this._geometryVaoHash[geometry.uid] = /* @__PURE__ */ Object.create(null);\n geometry.on(\"destroy\", this.onGeometryDestroy, this);\n }\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\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 /**\n * Disposes geometry.\n * @param geometry - Geometry with buffers. Only VAO will be disposed\n * @param [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n onGeometryDestroy(geometry, contextLost) {\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\n const gl = this.gl;\n if (vaoObjectHash) {\n if (contextLost) {\n for (const i in vaoObjectHash) {\n if (this._activeVao !== vaoObjectHash[i]) {\n this.unbind();\n }\n gl.deleteVertexArray(vaoObjectHash[i]);\n }\n }\n this._geometryVaoHash[geometry.uid] = null;\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 const gl = this.gl;\n for (const i in this._geometryVaoHash) {\n if (contextLost) {\n for (const j in this._geometryVaoHash[i]) {\n const vaoObjectHash = this._geometryVaoHash[i];\n if (this._activeVao !== vaoObjectHash) {\n this.unbind();\n }\n gl.deleteVertexArray(vaoObjectHash[j]);\n }\n }\n this._geometryVaoHash[i] = null;\n }\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 */\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._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 { 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)\n 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)\n 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","\"use strict\";\nclass GlRenderTarget {\n constructor() {\n this.width = -1;\n this.height = -1;\n this.msaa = false;\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)\n 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 }\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) {\n const renderTargetSystem = this._renderTargetSystem;\n const source = renderTarget.colorTexture;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n let viewPortY = viewport.y;\n if (renderTarget.isRoot) {\n viewPortY = source.pixelHeight - viewport.height;\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 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)\n 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 const colorTexture = renderTarget.colorTexture;\n if (CanvasSource.test(colorTexture.resource)) {\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) {\n if (!clear)\n return;\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)\n 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 renderTarget.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 gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n 3553,\n // texture.target,\n glTexture,\n 0\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 renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (i === 0)\n 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)\n 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)\n 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}\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)\n 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 { getMaxTexturesPerBatch } from '../../../batcher/gl/utils/maxRecommendedTextures.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 /**\n * @internal\n * @private\n */\n this._activeProgram = null;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._renderer.renderableGC.addManagedHash(this, \"_programDataHash\");\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 this.maxTextures = getMaxTexturesPerBatch();\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)\n 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)\n return;\n programData.uniformBlockBindings[index] = boundLocation;\n this._renderer.gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundLocation);\n }\n _setProgram(program) {\n if (this._activeProgram === program)\n 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 * @private\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 const programData = this._programDataHash[key];\n programData.destroy();\n this._programDataHash[key] = null;\n }\n this._programDataHash = 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() {\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 }\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.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\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.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\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 // used\n /** Resets all the logic and disables the VAOs. */\n resetState() {\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 /**\n * @ignore\n */\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 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}\n\nexport { GlTexture };\n//# sourceMappingURL=GlTexture.mjs.map\n","\"use strict\";\nconst glUploadBufferImageResource = {\n id: \"buffer\",\n upload(source, glTexture, gl) {\n if (glTexture.width === source.width || glTexture.height === source.height) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\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 glTexture.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) {\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 gl.TEXTURE_2D,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n levelBuffer\n );\n } else {\n gl.texImage2D(\n gl.TEXTURE_2D,\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","\"use strict\";\nconst glUploadImageResource = {\n id: \"image\",\n upload(source, glTexture, gl, webGLVersion) {\n const glWidth = glTexture.width;\n const glHeight = glTexture.height;\n const textureWidth = source.pixelWidth;\n const textureHeight = source.pixelHeight;\n const resourceWidth = source.resourceWidth;\n const resourceHeight = source.resourceHeight;\n if (resourceWidth < textureWidth || resourceHeight < textureHeight) {\n if (glWidth !== textureWidth || glHeight !== textureHeight) {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n if (webGLVersion === 2) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n resourceWidth,\n resourceHeight,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n } else if (glWidth === textureWidth && glHeight === textureHeight) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else if (webGLVersion === 2) {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n glTexture.width = textureWidth;\n glTexture.height = textureHeight;\n }\n};\n\nexport { glUploadImageResource };\n//# sourceMappingURL=glUploadImageResource.mjs.map\n","import { glUploadImageResource } from './glUploadImageResource.mjs';\n\n\"use strict\";\nconst glUploadVideoResource = {\n id: \"video\",\n upload(source, glTexture, gl, webGLVersion) {\n if (!source.isValid) {\n gl.texImage2D(\n glTexture.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);\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)\n 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","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.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 { 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 './utils/unpremultiplyAlpha.mjs';\n\n\"use strict\";\nconst BYTES_PER_PIXEL = 4;\nclass GlTextureSystem {\n constructor(renderer) {\n this.managedTextures = [];\n this._glTextures = /* @__PURE__ */ Object.create(null);\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundTextures = [];\n this._activeTextureLocation = -1;\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._uploads = {\n image: glUploadImageResource,\n buffer: glUploadBufferImageResource,\n video: glUploadVideoResource,\n compressed: glUploadCompressedTextureResource\n };\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._renderer.renderableGC.addManagedHash(this, \"_glTextures\");\n this._renderer.renderableGC.addManagedHash(this, \"_glSamplers\");\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 }\n this._glTextures = /* @__PURE__ */ Object.create(null);\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 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._touched = this._renderer.textureGC.count;\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 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 this._glTextures[source.uid] = glTexture;\n if (!this.managedTextures.includes(source)) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceUpdate, this);\n source.on(\"styleChange\", this.onStyleChange, this);\n source.on(\"destroy\", this.onSourceDestroy, this);\n source.on(\"unload\", this.onSourceUnload, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.push(source);\n }\n this.onSourceUpdate(source);\n 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(gl.TEXTURE_2D, 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 gl.TEXTURE_2D,\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) {\n const glTexture = this._glTextures[source.uid];\n if (!glTexture)\n return;\n this.unbind(source);\n this._glTextures[source.uid] = null;\n this._gl.deleteTexture(glTexture.texture);\n }\n onSourceUpdate(source) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(gl.TEXTURE_2D, 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 {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, source.pixelWidth, source.pixelHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source, false);\n }\n }\n onUpdateMipmaps(source, bind = true) {\n if (bind)\n this.bindSource(source, 0);\n const glTexture = this.getGlSource(source);\n this._gl.generateMipmap(glTexture.target);\n }\n onSourceDestroy(source) {\n source.off(\"destroy\", this.onSourceDestroy, this);\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceUpdate, this);\n source.off(\"unload\", this.onSourceUnload, this);\n source.off(\"styleChange\", this.onStyleChange, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n this.onSourceUnload(source);\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 return this._glTextures[source.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.slice().forEach((source) => this.onSourceDestroy(source));\n this.managedTextures = 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 }\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 { getMaxTexturesPerBatch } from '../../../rendering/batcher/gl/utils/maxRecommendedTextures.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 init() {\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 = getMaxTexturesPerBatch();\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 { 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 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":["GlBatchAdaptor","State","batcherPipe","batchPipe","geometry","shader","renderer","didUpload","batch","textures","ExtensionType","BUFFER_TYPE","BUFFER_TYPE2","GlBuffer","buffer","type","GlBufferSystem","gl","glBuffer","index","hasTransformFeedback","freeIndex","loop","nextIndex","curBuf","offset","size","data","drawType","BufferUsage","id","contextLost","_GlContextSystem","options","multiView","warn","DOMAdapter","alpha","premultipliedAlpha","antialias","targetCanvas","canvas","element","preferWebGLVersion","common","provokeExt","event","_a","attributes","supports","isWebGl2","extensions","GlContextSystem","GL_FORMATS","GL_FORMATS2","GL_TARGETS","GL_TARGETS2","GL_TYPES","GL_TYPES2","infoMap","getGlTypeFromFormat","format","topologyToGlMap","GlGeometrySystem","nativeVaoExtension","vao","nativeInstancedExtension","a","b","c","d","e","program","bufferSystem","i","geometryAttributes","shaderAttributes","j","attribs","strings","_incRefCount","signature","vaoObjectHash","ensureAttributes","buffers","lastBuffer","attribute","programAttrib","location","attributeInfo","getAttributeInfoFromFormat","divisor","topology","start","instanceCount","glTopology","byteSize","glType","bigTriangleGeometry","Geometry","_GlBackBufferSystem","useBackBuffer","bigTriangleProgram","GlProgram","Shader","Texture","renderTarget","renderTarget2","targetSourceTexture","TextureSource","GlBackBufferSystem","GlColorMaskSystem","colorMask","GlEncoderSystem","state","skipSync","GlRenderTarget","GlStencilSystem","STENCIL_MODES","stencilState","stencilMode","stencilReference","mode","GpuStencilModesToPixi","_stencilCache","WGSL_TO_STD40_SIZE","createUboElementsSTD40","uniformData","uboElements","chunkSize","uboElement","boundary","curOffset","generateArraySyncSTD40","offsetToAdd","rowSize","elementSize","remainder","createUboSyncFunctionSTD40","createUboSyncFunction","uboSyncFunctionsSTD40","GlUboSystem","UboSystem","GlRenderTargetAdaptor","Rectangle","renderTargetSystem","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest","glRenderTarget","clear","clearColor","viewport","source","gpuRenderTarget","viewPortY","texture","viewPortCache","colorTexture","CanvasSource","renderBuffer","_renderTarget","CLEAR","clearColorCache","clearColorArray","resolveTargetFramebuffer","glTexture","viewFramebuffer","_","msaaRenderBuffer","source2","glInternalFormat","depthStencilRenderBuffer","resource","contextCanvas","canvasSource","GlRenderTargetSystem","RenderTargetSystem","generateShaderSyncCode","shaderSystem","funcFragments","headerFragments","addedTextreSystem","textureCount","programData","group","UniformGroup","resName","BufferResource","uniformName","functionSource","GlProgramData","compileShader","src","booleanArray","array","defaultValue","GL_TABLE","GL_TO_GLSL_TYPES","GLSL_TO_VERTEX_TYPES","mapType","typeNames","tn","mapGlToVertexFormat","typeValue","extractAttributesFromGlProgram","sortAttributes","totalAttributes","attribData","keys","getUboData","uniformBlocks","totalUniformsBlocks","name","uniformBlockIndex","getUniformData","uniforms","totalUniforms","isArray","logPrettyShaderError","shaderSrc","line","shaderLog","splitShader","dedupe","lineNumbers","n","logArgs","number","fragmentSourceToLog","logProgramError","vertexShader","fragmentShader","generateProgram","glVertShader","glFragShader","webGLProgram","transformFeedbackVaryings","defaultSyncData","GlShaderSystem","getMaxTexturesPerBatch","syncFunction","uniformGroup","isBufferResource","boundLocation","key","UNIFORM_TO_SINGLE_SETTERS","UNIFORM_TO_ARRAY_SETTERS","generateUniformsSync","uniform","parsed","uniformParsers","parser","template","GlUniformGroupSystem","syncData","uniformGroupSyncHash","preFix","mapWebGLBlendModesToPixi","blendMap","ext","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_GlStateSystem","diff","value","scale","func","system","GlStateSystem","GlTexture","glUploadBufferImageResource","compressedFormatMap","glUploadCompressedTextureResource","mipWidth","mipHeight","compressed","levelBuffer","glUploadImageResource","webGLVersion","glWidth","glHeight","textureWidth","textureHeight","resourceWidth","resourceHeight","glUploadVideoResource","scaleModeToGlFilter","mipmapScaleModeToGlFilter","wrapModeToGlAddress","compareModeToGlCompare","applyStyleParams","style","mipmaps","anisotropicExt","glFunctionName","firstParam","forceClamp","firstCreation","castParam","wrapModeS","wrapModeT","wrapModeR","glFilterMode","level","mapFormatToGlFormat","mapFormatToGlInternalFormat","srgb","bgra8unorm","mapFormatToGlType","BYTES_PER_PIXEL","GlTextureSystem","sampler","boundTextures","biggestDimension","bind","glSampler","pixels","width","height","ctx","imageData","resolution","frame","glRenterTarget","GlGraphicsAdaptor","Matrix","maxTextures","glProgram","compileHighShaderGlProgram","colorBitGl","generateTextureBatchBitGl","localUniformBitGl","roundPixelsBitGl","getBatchSamplersUniformGroup","graphicsPipe","renderable","context","contextSystem","batcher","instructions","batches","GlMeshAdaptor","textureBitGl","meshPipe","mesh","DefaultWebGLSystems","SharedSystems","DefaultWebGLPipes","SharedRenderPipes","DefaultWebGLAdapters","systems","renderPipes","renderPipeAdaptors","WebGLRenderer","AbstractRenderer","systemConfig","RendererType"],"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]}
|