shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$context$GlContextSystem = function(global, require, module, exports) { var adapter = require("module$node_modules$pixi_DOT_js$lib$environment$adapter"); global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions"); var warn = require("module$node_modules$pixi_DOT_js$lib$utils$logging$warn"); "use strict"; const node_modules$pixi_DOT_js$lib$rendering$renderers$gl$context$GlContextSystem$classdecl$var24 = class { constructor(renderer) { this.supports = {uint32Indices:!0, uniformBufferObject:!0, vertexArrayObject:!0, srgbTextures:!0, nonPowOf2wrapping:!0, msaa:!0, nonPowOf2mipmaps:!0}; this._renderer = renderer; this.extensions = Object.create(null); this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); } get isLost() { return !this.gl || this.gl.isContextLost(); } contextChange(gl) { this.gl = gl; this._renderer.gl = gl; } init(options) { options = {...node_modules$pixi_DOT_js$lib$rendering$renderers$gl$context$GlContextSystem$classdecl$var24.defaultOptions, ...options}; let multiView = this.multiView = options.multiView; options.context && multiView && (warn.warn("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."), multiView = !1); this.canvas = multiView ? adapter.DOMAdapter.get().createCanvas(this._renderer.canvas.width, this._renderer.canvas.height) : this._renderer.view.canvas; options.context ? this.initFromContext(options.context) : this.createContext(options.preferWebGLVersion, {alpha:1 > this._renderer.background.alpha, premultipliedAlpha:options.premultipliedAlpha ?? !0, antialias:options.antialias && !this._renderer.backBuffer.useBackBuffer, stencil:!0, preserveDrawingBuffer:options.preserveDrawingBuffer, powerPreference:options.powerPreference ?? "default"}); } ensureCanvasSize(targetCanvas) { if (this.multiView) { var {canvas} = this; if (canvas.width < targetCanvas.width || canvas.height < targetCanvas.height) { canvas.width = Math.max(targetCanvas.width, targetCanvas.width), canvas.height = Math.max(targetCanvas.height, targetCanvas.height); } } else { targetCanvas !== this.canvas && warn.warn("multiView is disabled, but targetCanvas is not the main canvas"); } } initFromContext(gl) { this.gl = gl; this.webGLVersion = gl instanceof adapter.DOMAdapter.get().getWebGLRenderingContext() ? 1 : 2; this.getExtensions(); this.validateContext(gl); this._renderer.runners.contextChange.emit(gl); gl = this._renderer.view.canvas; gl.addEventListener("webglcontextlost", this.handleContextLost, !1); gl.addEventListener("webglcontextrestored", this.handleContextRestored, !1); } createContext(preferWebGLVersion, options) { let gl; const canvas = this.canvas; 2 === preferWebGLVersion && (gl = canvas.getContext("webgl2", options)); if (!gl && (gl = canvas.getContext("webgl", options), !gl)) { throw Error("This browser does not support WebGL. Try using the canvas renderer"); } this.gl = gl; this.initFromContext(this.gl); } getExtensions() { var {gl} = this; const common = {anisotropicFiltering:gl.getExtension("EXT_texture_filter_anisotropic"), floatTextureLinear:gl.getExtension("OES_texture_float_linear"), s3tc:gl.getExtension("WEBGL_compressed_texture_s3tc"), s3tc_sRGB:gl.getExtension("WEBGL_compressed_texture_s3tc_srgb"), etc:gl.getExtension("WEBGL_compressed_texture_etc"), etc1:gl.getExtension("WEBGL_compressed_texture_etc1"), pvrtc:gl.getExtension("WEBGL_compressed_texture_pvrtc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"), atc:gl.getExtension("WEBGL_compressed_texture_atc"), astc:gl.getExtension("WEBGL_compressed_texture_astc"), bptc:gl.getExtension("EXT_texture_compression_bptc"), rgtc:gl.getExtension("EXT_texture_compression_rgtc"), loseContext:gl.getExtension("WEBGL_lose_context")}; 1 === this.webGLVersion ? this.extensions = {...common, drawBuffers:gl.getExtension("WEBGL_draw_buffers"), depthTexture:gl.getExtension("WEBGL_depth_texture"), vertexArrayObject:gl.getExtension("OES_vertex_array_object") || gl.getExtension("MOZ_OES_vertex_array_object") || gl.getExtension("WEBKIT_OES_vertex_array_object"), uint32ElementIndex:gl.getExtension("OES_element_index_uint"), floatTexture:gl.getExtension("OES_texture_float"), floatTextureLinear:gl.getExtension("OES_texture_float_linear"), textureHalfFloat:gl.getExtension("OES_texture_half_float"), textureHalfFloatLinear:gl.getExtension("OES_texture_half_float_linear"), vertexAttribDivisorANGLE:gl.getExtension("ANGLE_instanced_arrays"), srgb:gl.getExtension("EXT_sRGB")} : (this.extensions = {...common, colorBufferFloat:gl.getExtension("EXT_color_buffer_float")}, (gl = gl.getExtension("WEBGL_provoking_vertex")) && gl.provokingVertexWEBGL(gl.FIRST_VERTEX_CONVENTION_WEBGL)); } handleContextLost(event) { event.preventDefault(); this._contextLossForced && (this._contextLossForced = !1, setTimeout(() => { this.gl.isContextLost() && this.extensions.loseContext?.restoreContext(); }, 0)); } handleContextRestored() { this.getExtensions(); this._renderer.runners.contextChange.emit(this.gl); } destroy() { const element = this._renderer.view.canvas; this._renderer = null; element.removeEventListener("webglcontextlost", this.handleContextLost); element.removeEventListener("webglcontextrestored", this.handleContextRestored); this.gl.useProgram(null); this.extensions.loseContext?.loseContext(); } forceContextLoss() { this.extensions.loseContext?.loseContext(); this._contextLossForced = !0; } validateContext(gl) { (gl = gl.getContextAttributes()) && !gl.stencil && warn.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly"); gl = this.supports; const isWebGl2 = 2 === this.webGLVersion, extensions = this.extensions; gl.uint32Indices = isWebGl2 || !!extensions.uint32ElementIndex; gl.uniformBufferObject = isWebGl2; gl.vertexArrayObject = isWebGl2 || !!extensions.vertexArrayObject; gl.srgbTextures = isWebGl2 || !!extensions.srgb; gl.nonPowOf2wrapping = isWebGl2; gl.nonPowOf2mipmaps = isWebGl2; gl.msaa = isWebGl2; gl.uint32Indices || warn.warn("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly"); } }; require = node_modules$pixi_DOT_js$lib$rendering$renderers$gl$context$GlContextSystem$classdecl$var24; require.extension = {type:[global.ExtensionType.WebGLSystem], name:"context"}; require.defaultOptions = {context:null, premultipliedAlpha:!0, preserveDrawingBuffer:!1, powerPreference:void 0, preferWebGLVersion:2, multiView:!1}; exports.GlContextSystem = require; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$context$GlContextSystem.js.map