@deck.gl/arcgis 9.0.0-beta.10 → 9.0.0-beta.11
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/commons.d.ts +2 -2
- package/dist/commons.d.ts.map +1 -1
- package/dist/commons.js +40 -24
- package/dist/deck-layer-view-2d.d.ts.map +1 -1
- package/dist/deck-layer-view-2d.js +21 -8
- package/dist/deck-renderer.d.ts +2 -1
- package/dist/deck-renderer.d.ts.map +1 -1
- package/dist/deck-renderer.js +11 -4
- package/dist/dist.dev.js +196 -5652
- package/dist/index.cjs +66 -33
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist.min.js +2 -3
- package/package.json +6 -7
- package/src/commons.ts +53 -36
- package/src/deck-layer-view-2d.ts +22 -8
- package/src/deck-renderer.ts +12 -4
package/dist.min.js
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var Gr=Object.create;var Ae=Object.defineProperty;var ei=Object.getOwnPropertyDescriptor;var ti=Object.getOwnPropertyNames;var ri=Object.getPrototypeOf,ii=Object.prototype.hasOwnProperty;var si=(e,t,r)=>t in e?Ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Be=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),oi=(e,t)=>{for(var r in t)Ae(e,r,{get:t[r],enumerable:!0})},Me=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ti(t))!ii.call(e,s)&&s!==r&&Ae(e,s,{get:()=>t[s],enumerable:!(i=ei(t,s))||i.enumerable});return e},q=(e,t,r)=>(Me(e,t,"default"),r&&Me(r,t,"default")),h=(e,t,r)=>(r=e!=null?Gr(ri(e)):{},Me(t||!e||!e.__esModule?Ae(r,"default",{value:e,enumerable:!0}):r,e)),ai=e=>Me(Ae({},"__esModule",{value:!0}),e);var Pe=(e,t,r)=>(si(e,typeof t!="symbol"?t+"":t,r),r);var De=Be((us,Wt)=>{Wt.exports=globalThis.deck});var E=Be((Bs,Kt)=>{Kt.exports=globalThis.luma});var $r=Be((Tn,zr)=>{zr.exports=globalThis.luma});var jr=Be((ft,Qr)=>{(function(e,t){typeof ft=="object"&&typeof Qr<"u"?t(ft):typeof define=="function"&&define.amd?define(["exports"],t):t(e.esriLoader=e.esriLoader||{})})(ft,function(e){"use strict";var t=typeof window<"u",r={Promise:t?window.Promise:void 0},i="4.21",s="next";function o(R){if(R.toLowerCase()===s)return s;var A=R&&R.match(/^(\d)\.(\d+)/);return A&&{major:parseInt(A[1],10),minor:parseInt(A[2],10)}}function a(R){return R===void 0&&(R=i),"https://js.arcgis.com/"+R+"/"}function n(R){R===void 0&&(R=i);var A=a(R),b=o(R);if(b!==s&&b.major===3){var u=b.minor<=10?"js/":"";return""+A+u+"esri/css/esri.css"}else return A+"esri/themes/light/main.css"}function _(R){var A=document.createElement("link");return A.rel="stylesheet",A.href=R,A}function c(R,A){if(A){var b=document.querySelector(A);b.parentNode.insertBefore(R,b)}else document.head.appendChild(R)}function l(R){return document.querySelector('link[href*="'+R+'"]')}function T(R){return!R||o(R)?n(R):R}function f(R,A){var b=T(R),u=l(b);return u||(u=_(b),c(u,A)),u}var d={};function S(R){var A=document.createElement("script");return A.type="text/javascript",A.src=R,A.setAttribute("data-esri-loader","loading"),A}function p(R,A,b){var u;b&&(u=x(R,b));var y=function(){A(R),R.removeEventListener("load",y,!1),u&&R.removeEventListener("error",u,!1)};R.addEventListener("load",y,!1)}function x(R,A){var b=function(u){A(u.error||new Error("There was an error attempting to load "+R.src)),R.removeEventListener("error",b,!1)};return R.addEventListener("error",b,!1),b}function O(R){R===void 0&&(R={}),d=R}function k(){return document.querySelector("script[data-esri-loader]")}function re(){var R=window.require;return R&&R.on}function Fe(R){R===void 0&&(R={});var A={};[d,R].forEach(function(y){for(var w in y)Object.prototype.hasOwnProperty.call(y,w)&&(A[w]=y[w])});var b=A.version,u=A.url||a(b);return new r.Promise(function(y,w){var Q=k();if(Q){var Ht=Q.getAttribute("src");Ht!==u?w(new Error("The ArcGIS API for JavaScript is already loaded ("+Ht+").")):re()?y(Q):p(Q,y,w)}else if(re())w(new Error("The ArcGIS API for JavaScript is already loaded."));else{var Tt=A.css;if(Tt){var Lr=Tt===!0;f(Lr?b:Tt,A.insertCssBefore)}Q=S(u),p(Q,function(){Q.setAttribute("data-esri-loader","loaded"),y(Q)},w),document.body.appendChild(Q)}})}function Oe(R){return new r.Promise(function(A,b){var u=window.require.on("error",b);window.require(R,function(){for(var y=[],w=0;w<arguments.length;w++)y[w]=arguments[w];u.remove(),A(y)})})}function Jr(R,A){if(A===void 0&&(A={}),re())return Oe(R);var b=k(),u=b&&b.getAttribute("src");return!A.url&&u&&(A.url=u),Fe(A).then(function(){return Oe(R)})}e.utils=r,e.loadModules=Jr,e.getScript=k,e.isLoaded=re,e.loadScript=Fe,e.setDefaultOptions=O,e.loadCss=f,Object.defineProperty(e,"__esModule",{value:!0})})});var ue={};oi(ue,{loadArcGISModules:()=>Cs});var K={},Vt=h(De(),1);q(K,h(De(),1));if(!Vt.Layer)throw new Error("@deck.gl/core is not found");q(ue,K);var kt={layers:{},layerFilter:{},parameters:{},effects:{},pickingRadius:{},onBeforeRender:{},onAfterRender:{},onClick:{},onHover:{},onDragStart:{},onDrag:{},onDragEnd:{},onError:{},debug:{},drawPickingColors:{},getCursor:{},getTooltip:{}};function Rt(e){return e.createSubclass({properties:kt,constructor(){this._callbacks={},this.watch(Object.keys(kt),(r,i,s)=>{this.emit("change",{[s]:r})})},on(r,i){this._callbacks[r]=this._callbacks[r]||[],this._callbacks[r].push(i)},emit(r,i){let s=this._callbacks[r];if(s)for(let o of s)o(i)},toJSON(){let r={};for(let i of this.keys())this[i]!==void 0&&(r[i]=this[i]);return r}})}function dt(e,t,r){return t.createSubclass({properties:{deck:{},blendMode:{},effect:{}},constructor(){this.deck=new e},createLayerView(i){return i.type==="2d"?new r({view:i,layer:this}):(console.error("DeckLayer does not support SceneView at the moment. Use DeckRenderer instead."),null)}})}var I=h(E(),1);var Se=h(E(),1);var J;(function(e){e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=4294967295]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e[e.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",e[e.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",e[e.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",e[e.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",e[e.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",e[e.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",e[e.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",e[e.LINE_WEBGL=6913]="LINE_WEBGL",e[e.FILL_WEBGL=6914]="FILL_WEBGL",e[e.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",e[e.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",e[e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",e[e.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",e[e.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",e[e.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",e[e.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",e[e.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",e[e.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",e[e.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",e[e.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",e[e.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",e[e.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",e[e.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",e[e.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",e[e.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",e[e.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",e[e.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",e[e.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",e[e.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",e[e.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",e[e.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",e[e.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",e[e.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(J||(J={}));var xe={[3042]:!1,[32773]:new Float32Array([0,0,0,0]),[32777]:32774,[34877]:32774,[32969]:1,[32968]:0,[32971]:1,[32970]:0,[3106]:new Float32Array([0,0,0,0]),[3107]:[!0,!0,!0,!0],[2884]:!1,[2885]:1029,[2929]:!1,[2931]:1,[2932]:513,[2928]:new Float32Array([0,1]),[2930]:!0,[3024]:!0,[35725]:null,[36006]:null,[36007]:null,[34229]:null,[34964]:null,[2886]:2305,[33170]:4352,[2849]:1,[32823]:!1,[32824]:0,[10752]:0,[32926]:!1,[32928]:!1,[32938]:1,[32939]:!1,[3089]:!1,[3088]:new Int32Array([0,0,1024,1024]),[2960]:!1,[2961]:0,[2968]:4294967295,[36005]:4294967295,[2962]:519,[2967]:0,[2963]:4294967295,[34816]:519,[36003]:0,[36004]:4294967295,[2964]:7680,[2965]:7680,[2966]:7680,[34817]:7680,[34818]:7680,[34819]:7680,[2978]:[0,0,1024,1024],[36389]:null,[36662]:null,[36663]:null,[35053]:null,[35055]:null,[35723]:4352,[36010]:null,[35977]:!1,[3333]:4,[3317]:4,[37440]:!1,[37441]:!1,[37443]:37444,[3330]:0,[3332]:0,[3331]:0,[3314]:0,[32878]:0,[3316]:0,[3315]:0,[32877]:0},F=(e,t,r)=>t?e.enable(r):e.disable(r),mt=(e,t,r)=>e.hint(r,t),v=(e,t,r)=>e.pixelStorei(r,t),Yt=(e,t,r)=>{let i=r===36006?36009:36008;return e.bindFramebuffer(i,t)},he=(e,t,r)=>{let s={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];e.bindBuffer(s,t)};function At(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}var zt={[3042]:F,[32773]:(e,t)=>e.blendColor(...t),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(e,t)=>e.clearColor(...t),[3107]:(e,t)=>e.colorMask(...t),[2884]:F,[2885]:(e,t)=>e.cullFace(t),[2929]:F,[2931]:(e,t)=>e.clearDepth(t),[2932]:(e,t)=>e.depthFunc(t),[2928]:(e,t)=>e.depthRange(...t),[2930]:(e,t)=>e.depthMask(t),[3024]:F,[35723]:mt,[35725]:(e,t)=>e.useProgram(t),[36007]:(e,t)=>e.bindRenderbuffer(36161,t),[36389]:(e,t)=>e.bindTransformFeedback?.(36386,t),[34229]:(e,t)=>e.bindVertexArray(t),[36006]:Yt,[36010]:Yt,[34964]:he,[36662]:he,[36663]:he,[35053]:he,[35055]:he,[2886]:(e,t)=>e.frontFace(t),[33170]:mt,[2849]:(e,t)=>e.lineWidth(t),[32823]:F,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:F,[32926]:F,[32928]:F,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:F,[3088]:(e,t)=>e.scissor(...t),[2960]:F,[2961]:(e,t)=>e.clearStencil(t),[2968]:(e,t)=>e.stencilMaskSeparate(1028,t),[36005]:(e,t)=>e.stencilMaskSeparate(1029,t),[2962]:"stencilFuncFront",[2967]:"stencilFuncFront",[2963]:"stencilFuncFront",[34816]:"stencilFuncBack",[36003]:"stencilFuncBack",[36004]:"stencilFuncBack",[2964]:"stencilOpFront",[2965]:"stencilOpFront",[2966]:"stencilOpFront",[34817]:"stencilOpBack",[34818]:"stencilOpBack",[34819]:"stencilOpBack",[2978]:(e,t)=>e.viewport(...t),[34383]:F,[10754]:F,[12288]:F,[12289]:F,[12290]:F,[12291]:F,[12292]:F,[12293]:F,[12294]:F,[12295]:F,[3333]:v,[3317]:v,[37440]:v,[37441]:v,[37443]:v,[3330]:v,[3332]:v,[3331]:v,[3314]:v,[32878]:v,[3316]:v,[3315]:v,[32877]:v,framebuffer:(e,t)=>{let r=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{let r=typeof t=="number"?[t,t]:t;e.blendEquationSeparate(...r)},blendFunc:(e,t)=>{let r=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...r)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(...t),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=At(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=At(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,a,n]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,o,a,n)},stencilOp:(e,t)=>{t=At(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,a,n]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,o,a,n)},viewport:(e,t)=>e.viewport(...t)};function N(e,t,r){return t[e]!==void 0?t[e]:r[e]}var $t={blendEquation:(e,t,r)=>e.blendEquationSeparate(N(32777,t,r),N(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(N(32969,t,r),N(32968,t,r),N(32971,t,r),N(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(N(32824,t,r),N(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(N(32938,t,r),N(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,N(2962,t,r),N(2967,t,r),N(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,N(34816,t,r),N(36003,t,r),N(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,N(2964,t,r),N(2965,t,r),N(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,N(34817,t,r),N(34818,t,r),N(34819,t,r))},ht={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),useProgram:(e,t)=>e({[35725]:t}),bindRenderbuffer:(e,t,r)=>e({[36007]:r}),bindTransformFeedback:(e,t,r)=>e({[36389]:r}),bindVertexArray:(e,t)=>e({[34229]:t}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({[36006]:r,[36010]:r});case 36009:return e({[36006]:r});case 36008:return e({[36010]:r});default:return null}},bindBuffer:(e,t,r)=>{let i={[34962]:[34964],[36662]:[36662],[36663]:[36663],[35051]:[35053],[35052]:[35055]}[t];return i?e({[i]:r}):{valueChanged:!0}},blendColor:(e,t,r,i,s)=>e({[32773]:new Float32Array([t,r,i,s])}),blendEquation:(e,t)=>e({[32777]:t,[34877]:t}),blendEquationSeparate:(e,t,r)=>e({[32777]:t,[34877]:r}),blendFunc:(e,t,r)=>e({[32969]:t,[32968]:r,[32971]:t,[32970]:r}),blendFuncSeparate:(e,t,r,i,s)=>e({[32969]:t,[32968]:r,[32971]:i,[32970]:s}),clearColor:(e,t,r,i,s)=>e({[3106]:new Float32Array([t,r,i,s])}),clearDepth:(e,t)=>e({[2931]:t}),clearStencil:(e,t)=>e({[2961]:t}),colorMask:(e,t,r,i,s)=>e({[3107]:[t,r,i,s]}),cullFace:(e,t)=>e({[2885]:t}),depthFunc:(e,t)=>e({[2932]:t}),depthRange:(e,t,r)=>e({[2928]:new Float32Array([t,r])}),depthMask:(e,t)=>e({[2930]:t}),frontFace:(e,t)=>e({[2886]:t}),lineWidth:(e,t)=>e({[2849]:t}),polygonOffset:(e,t,r)=>e({[32824]:t,[10752]:r}),sampleCoverage:(e,t,r)=>e({[32938]:t,[32939]:r}),scissor:(e,t,r,i,s)=>e({[3088]:new Int32Array([t,r,i,s])}),stencilMask:(e,t)=>e({[2968]:t,[36005]:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,i)=>e({[2962]:t,[2967]:r,[2963]:i,[34816]:t,[36003]:r,[36004]:i}),stencilFuncSeparate:(e,t,r,i,s)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:i,[t===1028?2963:36004]:s}),stencilOp:(e,t,r,i)=>e({[2964]:t,[2965]:r,[2966]:i,[34817]:t,[34818]:r,[34819]:i}),stencilOpSeparate:(e,t,r,i,s)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:i,[t===1028?2966:34819]:s}),viewport:(e,t,r,i,s)=>e({[2978]:[t,r,i,s]})},m=(e,t)=>e.isEnabled(t),St={[3042]:m,[2884]:m,[2929]:m,[3024]:m,[32823]:m,[32926]:m,[32928]:m,[3089]:m,[2960]:m,[35977]:m},Zt=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function W(e,t){if(ni(t))return;let r={};for(let s in t){let o=Number(s),a=zt[s];a&&(typeof a=="string"?r[a]=!0:a(e,t[s],o))}let i=e.state&&e.state.cache;if(i)for(let s in r){let o=$t[s];o(e,t,i)}}function Ue(e,t=xe){if(typeof t=="number"){let s=t,o=St[s];return o?o(e,s):e.getParameter(s)}let r=Array.isArray(t)?t:Object.keys(t),i={};for(let s of r){let o=St[s];i[s]=o?o(e,Number(s)):e.getParameter(Number(s))}return i}function ni(e){for(let t in e)return!1;return!0}function Qt(e,t){if(e===t)return!0;let r=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(t)||ArrayBuffer.isView(t);if(r&&i&&e.length===t.length){for(let s=0;s<e.length;++s)if(e[s]!==t[s])return!1;return!0}return!1}var Et=class{gl;program=null;stateStack=[];enable=!0;cache;log;constructor(t,{copyState:r=!1,log:i=()=>{}}={}){this.gl=t,this.cache=r?Ue(t):Object.assign({},xe),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(t={}){this.stateStack.push({})}pop(){(0,Se.assert)(this.stateStack.length>0);let t=this.stateStack[this.stateStack.length-1];W(this.gl,t),this.stateStack.pop()}_updateCache(t){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let o in t){(0,Se.assert)(o!==void 0);let a=t[o],n=this.cache[o];Qt(a,n)||(r=!0,i=n,s&&!(o in s)&&(s[o]=n),this.cache[o]=a)}return{valueChanged:r,oldValue:i}}};function ie(e){return e.state}function gt(e,t){let{enable:r=!0,copyState:i}=t;if((0,Se.assert)(i!==void 0),!e.state){e.state=new Et(e,{copyState:i}),ci(e);for(let o in ht){let a=ht[o];_i(e,o,a)}jt(e,"getParameter"),jt(e,"isEnabled")}let s=ie(e);return s.enable=r,e}function L(e){let t=ie(e);t||(gt(e,{copyState:!1}),t=ie(e)),t.push()}function j(e){let t=ie(e);(0,Se.assert)(t),t.pop()}function jt(e,t){let r=e[t].bind(e);e[t]=function(s){if(s===void 0||Zt.has(s))return r(s);let o=ie(e);return s in o.cache||(o.cache[s]=r(s)),o.enable?o.cache[s]:r(s)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function _i(e,t,r){if(!e[t])return;let i=e[t].bind(e);e[t]=function(...o){let a=ie(e),{valueChanged:n,oldValue:_}=r(a._updateCache,...o);return n&&i(...o),_},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function ci(e){let t=e.useProgram.bind(e);e.useProgram=function(i){let s=ie(e);s.program!==i&&(t(i),s.program=i)}}var li={powerPreference:"high-performance",onContextLost:()=>console.error("WebGL context lost"),onContextRestored:()=>console.info("WebGL context restored")};function qt(e,t){t={...li,...t};let r=null,i=o=>r=o.statusMessage||r;e.addEventListener("webglcontextcreationerror",i,!1);let s=null;if(s||=e.getContext("webgl2",t),e.removeEventListener("webglcontextcreationerror",i,!1),!s)throw new Error(`Failed to create WebGL context: ${r||"Unknown error"}`);if(t.onContextLost){let{onContextLost:o}=t;e.addEventListener("webglcontextlost",a=>o(a),!1)}if(t.onContextRestored){let{onContextRestored:o}=t;e.addEventListener("webglcontextrestored",a=>o(a),!1)}return s}function X(e,t,r){return r[t]===void 0&&(r[t]=e.getExtension(t)||null),r[t]}function Jt(e,t){let r=e.getParameter(7936),i=e.getParameter(7937);X(e,"WEBGL_debug_renderer_info",t);let s=t.WEBGL_debug_renderer_info,o=e.getParameter(s?s.UNMASKED_VENDOR_WEBGL:7936),a=e.getParameter(s?s.UNMASKED_RENDERER_WEBGL:7937),n=o||r,_=a||i,c=e.getParameter(7938),l=Lt(n,_),T=fi(n,_),f=Ti(n,_);return{type:"webgl",gpu:l,gpuType:f,gpuBackend:T,vendor:n,renderer:_,version:c,shadingLanguage:"glsl",shadingLanguageVersion:300}}function Lt(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function fi(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}function Ti(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(Lt(e,t)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}var _r=h(E(),1);var Nt=h(E(),1);function ye(e){switch(e){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(e))}var M="texture-compression-bc",g="texture-compression-astc",Y="texture-compression-etc2",Ri="texture-compression-etc1-webgl",we="texture-compression-pvrtc-webgl",pt="texture-compression-atc-webgl",Ee="float32-renderable-webgl",bt="float16-renderable-webgl",di="rgb9e5ufloat_renderable-webgl",Ct="snorm8-renderable-webgl",ge="norm16-renderable-webgl",It="snorm16-renderable-webgl",ve="float32-filterable",Gt="float16-filterable-webgl",pe="WEBGL_compressed_texture_s3tc",be="WEBGL_compressed_texture_s3tc_srgb",ae="EXT_texture_compression_rgtc",ne="EXT_texture_compression_bptc",Ai="WEBGL_compressed_texture_etc",hi="WEBGL_compressed_texture_astc",Si="WEBGL_compressed_texture_etc1",Ei="WEBGL_compressed_texture_pvrtc",gi="WEBGL_compressed_texture_atc",er="EXT_texture_norm16",tr="EXT_render_snorm",pi="EXT_color_buffer_float",Xe={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat_renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[tr],"norm16-renderable-webgl":[er],"snorm16-renderable-webgl":[er,tr],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[pe,be,ae,ne],"texture-compression-bc5-webgl":[ae],"texture-compression-bc7-webgl":[ne],"texture-compression-etc2":[Ai],"texture-compression-astc":[hi],"texture-compression-etc1-webgl":[Si],"texture-compression-pvrtc-webgl":[Ei],"texture-compression-atc-webgl":[gi]};function rr(e){return e in Xe}function ir(e,t,r){return(Xe[t]||[]).every(s=>X(e,s,r))}var He={"rgb8unorm-unsized":{gl:6407,b:4,c:2,bpp:4,dataFormat:6407,types:[5121,33635]},"rgba8unorm-unsized":{gl:6408,b:4,c:2,bpp:4,dataFormat:6408,types:[5121,32819,32820]},r8unorm:{gl:33321,b:1,c:1,rb:!0},r8snorm:{gl:36756,b:1,c:1,render:Ct},r8uint:{gl:33330,b:1,c:1,rb:!0},r8sint:{gl:33329,b:1,c:1,rb:!0},rg8unorm:{gl:33323,b:2,c:2,rb:!0},rg8snorm:{gl:36757,b:2,c:2,render:Ct},rg8uint:{gl:33336,b:2,c:2,rb:!0},rg8sint:{gl:33335,b:2,c:2,rb:!0},r16uint:{gl:33332,b:2,c:1,rb:!0},r16sint:{gl:33331,b:2,c:1,rb:!0},r16float:{gl:33325,b:2,c:1,render:bt,filter:"float16-filterable-webgl",rb:!0},"r16unorm-webgl":{gl:33322,b:2,c:1,f:ge,rb:!0},"r16snorm-webgl":{gl:36760,b:2,c:1,f:It},"rgba4unorm-webgl":{gl:32854,b:2,c:4,wgpu:!1,rb:!0},"rgb565unorm-webgl":{gl:36194,b:2,c:4,wgpu:!1,rb:!0},"rgb5a1unorm-webgl":{gl:32855,b:2,c:4,wgpu:!1,rb:!0},"rgb8unorm-webgl":{gl:32849,b:3,c:3,wgpu:!1},"rgb8snorm-webgl":{gl:36758,b:3,c:3,wgpu:!1},rgba8unorm:{gl:32856,b:4,c:2,bpp:4},"rgba8unorm-srgb":{gl:35907,b:4,c:4,bpp:4},rgba8snorm:{gl:36759,b:4,c:4,render:Ct},rgba8uint:{gl:36220,b:4,c:4,bpp:4},rgba8sint:{gl:36238,b:4,c:4,bpp:4},bgra8unorm:{b:4,c:4},"bgra8unorm-srgb":{b:4,c:4},rg16uint:{gl:33338,b:4,c:1,bpp:4},rg16sint:{gl:33337,b:4,c:2,bpp:4},rg16float:{gl:33327,bpp:4,b:4,c:2,render:bt,filter:Gt,rb:!0},"rg16unorm-webgl":{gl:33324,b:2,c:2,render:ge},"rg16snorm-webgl":{gl:36761,b:2,c:2,render:It},r32uint:{gl:33334,b:4,c:1,bpp:4,rb:!0},r32sint:{gl:33333,b:4,c:1,bpp:4,rb:!0},r32float:{gl:33326,bpp:4,b:4,c:1,render:Ee,filter:ve},rgb9e5ufloat:{gl:35901,b:4,c:3,p:1,render:di},rg11b10ufloat:{gl:35898,b:4,c:3,p:1,render:Ee,rb:!0},rgb10a2unorm:{gl:32857,b:4,c:4,p:1,rb:!0},"rgb10a2uint-webgl":{b:4,c:4,gl:36975,p:1,wgpu:!1,bpp:4,rb:!0},"rgb16unorm-webgl":{gl:32852,b:2,c:3,f:ge},"rgb16snorm-webgl":{gl:36762,b:2,c:3,f:ge},rg32uint:{gl:33340,b:8,c:2,rb:!0},rg32sint:{gl:33339,b:8,c:2,rb:!0},rg32float:{gl:33328,b:8,c:2,render:Ee,filter:ve,rb:!0},rgba16uint:{gl:36214,b:8,c:4,rb:!0},rgba16sint:{gl:36232,b:8,c:4,rb:!0},rgba16float:{gl:34842,b:8,c:4,render:bt,filter:Gt},"rgba16unorm-webgl":{gl:32859,b:2,c:4,render:ge,rb:!0},"rgba16snorm-webgl":{gl:36763,b:2,c:4,render:It},"rgb32float-webgl":{gl:34837,render:Ee,filter:ve,gl2ext:pi,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,b:16,c:4,rb:!0},rgba32sint:{gl:36226,b:16,c:4,rb:!0},rgba32float:{gl:34836,b:16,c:4,render:Ee,filter:ve,rb:!0},stencil8:{gl:36168,b:1,c:1,attachment:36128,rb:!0},depth16unorm:{gl:33189,b:2,c:1,attachment:36096,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,b:3,c:1,attachment:36096,dataFormat:6402,types:[5125]},depth32float:{gl:36012,b:4,c:1,attachment:36096,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth24unorm-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,dataFormat:34041,types:[34042],rb:!0},"depth32float-stencil8":{gl:36013,b:5,c:2,p:1,attachment:33306,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:pe,f:M},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:be,f:M},"bc1-rgba-unorm":{gl:33777,x:pe,f:M},"bc1-rgba-unorm-srgb":{gl:35916,x:be,f:M},"bc2-rgba-unorm":{gl:33778,x:pe,f:M},"bc2-rgba-unorm-srgb":{gl:35918,x:be,f:M},"bc3-rgba-unorm":{gl:33779,x:pe,f:M},"bc3-rgba-unorm-srgb":{gl:35919,x:be,f:M},"bc4-r-unorm":{gl:36283,x:ae,f:M},"bc4-r-snorm":{gl:36284,x:ae,f:M},"bc5-rg-unorm":{gl:36285,x:ae,f:M},"bc5-rg-snorm":{gl:36286,x:ae,f:M},"bc6h-rgb-ufloat":{gl:36495,x:ne,f:M},"bc6h-rgb-float":{gl:36494,x:ne,f:M},"bc7-rgba-unorm":{gl:36492,x:ne,f:M},"bc7-rgba-unorm-srgb":{gl:36493,x:ne,f:M},"etc2-rgb8unorm":{gl:37492,f:Y},"etc2-rgb8unorm-srgb":{gl:37494,f:Y},"etc2-rgb8a1unorm":{gl:37496,f:Y},"etc2-rgb8a1unorm-srgb":{gl:37497,f:Y},"etc2-rgba8unorm":{gl:37493,f:Y},"etc2-rgba8unorm-srgb":{gl:37495,f:Y},"eac-r11unorm":{gl:37488,f:Y},"eac-r11snorm":{gl:37489,f:Y},"eac-rg11unorm":{gl:37490,f:Y},"eac-rg11snorm":{gl:37491,f:Y},"astc-4x4-unorm":{gl:37808,f:g},"astc-4x4-unorm-srgb":{gl:37840,f:g},"astc-5x4-unorm":{gl:37809,f:g},"astc-5x4-unorm-srgb":{gl:37841,f:g},"astc-5x5-unorm":{gl:37810,f:g},"astc-5x5-unorm-srgb":{gl:37842,f:g},"astc-6x5-unorm":{gl:37811,f:g},"astc-6x5-unorm-srgb":{gl:37843,f:g},"astc-6x6-unorm":{gl:37812,f:g},"astc-6x6-unorm-srgb":{gl:37844,f:g},"astc-8x5-unorm":{gl:37813,f:g},"astc-8x5-unorm-srgb":{gl:37845,f:g},"astc-8x6-unorm":{gl:37814,f:g},"astc-8x6-unorm-srgb":{gl:37846,f:g},"astc-8x8-unorm":{gl:37815,f:g},"astc-8x8-unorm-srgb":{gl:37847,f:g},"astc-10x5-unorm":{gl:37819,f:g},"astc-10x5-unorm-srgb":{gl:37851,f:g},"astc-10x6-unorm":{gl:37817,f:g},"astc-10x6-unorm-srgb":{gl:37849,f:g},"astc-10x8-unorm":{gl:37818,f:g},"astc-10x8-unorm-srgb":{gl:37850,f:g},"astc-10x10-unorm":{gl:37819,f:g},"astc-10x10-unorm-srgb":{gl:37851,f:g},"astc-12x10-unorm":{gl:37820,f:g},"astc-12x10-unorm-srgb":{gl:37852,f:g},"astc-12x12-unorm":{gl:37821,f:g},"astc-12x12-unorm-srgb":{gl:37853,f:g},"pvrtc-rgb4unorm-webgl":{gl:35840,f:we},"pvrtc-rgba4unorm-webgl":{gl:35842,f:we},"pvrtc-rbg2unorm-webgl":{gl:35841,f:we},"pvrtc-rgba2unorm-webgl":{gl:35843,f:we},"etc1-rbg-unorm-webgl":{gl:36196,f:Ri},"atc-rgb-unorm-webgl":{gl:35986,f:pt},"atc-rgba-unorm-webgl":{gl:35986,f:pt},"atc-rgbai-unorm-webgl":{gl:34798,f:pt}},bi={[6403]:1,[36244]:1,[33319]:2,[33320]:2,[6407]:3,[36248]:3,[6408]:4,[36249]:4,[6402]:1,[34041]:1,[6406]:1,[6409]:1,[6410]:2},Ci={[5126]:4,[5125]:4,[5124]:4,[5123]:2,[5122]:2,[5131]:2,[5120]:1,[5121]:1};function We(e,t,r){let i=He[t];if(!i||i.gl===void 0)return!1;let s=i.x||i.gl2ext;return s?Boolean(X(e,s,r)):!0}function ut(e){let r=He[e]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${e}`);return r}function sr(e,t,r){if(!We(e,t,r)||t.startsWith("depth")||t.startsWith("stencil"))return!1;try{if((0,Nt.decodeTextureFormat)(t).signed)return!1}catch{return!1}return t.endsWith("32float")?Boolean(X(e,"OES_texture_float_linear, extensions",r)):t.endsWith("16float")?Boolean(X(e,"OES_texture_half_float_linear, extensions",r)):!0}function or(e,t,r){return!(!We(e,t,r)||typeof t=="number")}function _e(e){let t=He[e],r=ut(e),i=(0,Nt.decodeTextureFormat)(e);return{format:r,dataFormat:t?.dataFormat||Ii(i.format,i.integer,i.normalized,r),type:i.dataType?ye(i.dataType):t?.types?.[0]||5121,compressed:i.compressed}}function ar(e){let t=He[e];if(!t?.attachment)throw new Error(`${e} is not a depth stencil format`);return t.attachment}function Ft(e){let t=_e(e),r=bi[t.dataFormat]||4,i=Ci[t.type]||1;return r*i}function Ii(e,t,r,i){if(i===6408||i===6407)return i;switch(e){case"r":return t&&!r?36244:6403;case"rg":return t&&!r?33320:33319;case"rgb":return t&&!r?36248:6407;case"rgba":return t&&!r?36249:6408;default:return 6408}}var nr={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},Ve=class extends _r.DeviceFeatures{gl;extensions;testedFeatures=new Set;constructor(t,r,i){super([],i),this.gl=t,this.extensions=r,X(t,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let t=this.getFeatures();for(let r of t)this.has(r)&&(yield r);return[]}has(t){return this.disabledFeatures[t]?!1:(this.testedFeatures.has(t)||(this.testedFeatures.add(t),rr(t)&&ir(this.gl,t,this.extensions)&&this.features.add(t),this.getWebGLFeature(t)&&this.features.add(t)),this.features.has(t))}initializeFeatures(){let t=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of t)this.has(r)}getFeatures(){return[...Object.keys(nr),...Object.keys(Xe)]}getWebGLFeature(t){let r=nr[t];return Boolean(typeof r=="string"?X(this.gl,r,this.extensions):r)}};var cr=h(E(),1);var ke=class extends cr.DeviceLimits{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderComponents(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(t){super(),this.gl=t}getParameter(t){return this.limits[t]===void 0&&(this.limits[t]=this.gl.getParameter(t)),this.limits[t]}};var dr=h(E(),1);var Qe=h(E(),1);var B=h(E(),1);function H(e,t,r){if(Ni(t))return r(e);let{nocatch:i=!0}=t;L(e),W(e,t);let s;if(i)s=r(e),j(e);else try{s=r(e)}finally{j(e)}return s}function Ni(e){for(let t in e)return!1;return!0}var Ye=h(E(),1);function fr(e,t,r,i){if((0,Ye.isObjectEmpty)(t))return i(e);let s=e;L(s.gl);try{return ui(e,t),W(s.gl,r),i(e)}finally{j(s.gl)}}function ui(e,t){let r=e,{gl:i}=r;if(t.cullMode)switch(t.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029);break}if(t.frontFace&&i.frontFace(se("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),t.depthBias!==void 0&&i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0),e.features.has("provoking-vertex-webgl")){let o=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex;if(t.provokingVertex){let a=se("provokingVertex",t.provokingVertex,{first:36429,last:36430});o?.provokingVertexWEBGL(a)}}if(e.features.has("polygon-mode-webgl")){let o=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode;if(t.polygonMode){let a=se("polygonMode",t.polygonMode,{fill:6914,line:6913});o?.polygonModeWEBGL(1028,a),o?.polygonModeWEBGL(1029,a)}t.polygonOffsetLine&&i.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&i.enable(12288),t.clipDistance1&&i.enable(12289),t.clipDistance2&&i.enable(12290),t.clipDistance3&&i.enable(12291),t.clipDistance4&&i.enable(12292),t.clipDistance5&&i.enable(12293),t.clipDistance6&&i.enable(12294),t.clipDistance7&&i.enable(12295)),t.depthWriteEnabled!==void 0&&i.depthMask(Oi("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(me("depthCompare",t.depthCompare))),t.stencilWriteMask){let s=t.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(t.stencilReadMask&&Ye.log.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let s=t.stencilReadMask||4294967295,o=me("depthCompare",t.stencilCompare);t.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,o,0,s),i.stencilFuncSeparate(1029,o,0,s)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let s=Ot("stencilPassOperation",t.stencilPassOperation),o=Ot("stencilFailOperation",t.stencilFailOperation),a=Ot("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,o,a,s),i.stencilOpSeparate(1029,o,a,s)}if(t.blendColorOperation||t.blendAlphaOperation){i.enable(3042);let s=lr("blendColorOperation",t.blendColorOperation||"add"),o=lr("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let a=Ke("blendColorSrcFactor",t.blendColorSrcFactor||"one"),n=Ke("blendColorDstFactor",t.blendColorDstFactor||"zero"),_=Ke("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),c=Ke("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(a,n,_,c)}}function me(e,t){return se(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Ot(e,t){return se(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function lr(e,t){return se(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function Ke(e,t){return se(e,t,{one:1,zero:0,"src-color":768,"one-minus-src-color":769,"dst-color":774,"one-minus-dst-color":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,"constant-color":32769,"one-minus-constant-color":32770,"constant-alpha":32771,"one-minus-constant-alpha":32772})}function Fi(e,t){return`Illegal parameter ${t} for ${e}`}function se(e,t,r){if(!(t in r))throw new Error(Fi(e,t));return r[t]}function Oi(e,t){return t}function ze(e){let t={};return e.addressModeU&&(t[10242]=Mt(e.addressModeU)),e.addressModeV&&(t[10243]=Mt(e.addressModeV)),e.addressModeW&&(t[32882]=Mt(e.addressModeW)),e.magFilter&&(t[10240]=Tr(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=Mi(e.minFilter||"linear",e.mipmapFilter)),e.lodMinClamp!==void 0&&(t[33082]=e.lodMinClamp),e.lodMaxClamp!==void 0&&(t[33083]=e.lodMaxClamp),e.type==="comparison-sampler"&&(t[34892]=34894),e.compare&&(t[34893]=me("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function Mt(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Tr(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function Mi(e,t){if(!t)return Tr(e);switch(e){case"nearest":return t==="nearest"?9984:9986;case"linear":return t==="nearest"?9985:9987}}var z=h(E(),1);var P=class extends z.Buffer{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength;bytesUsed;constructor(t,r={}){super(t,r),this.device=t,this.gl=this.device.gl;let i=typeof r=="object"?r.handle:void 0;this.handle=i||this.gl.createBuffer(),t.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glTarget=Bi(this.props.usage),this.glUsage=Pi(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}_initWithData(t,r=0,i=t.byteLength+r){let s=this.glTarget;this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.glUsage),this.gl.bufferSubData(s,r,t),this.gl.bindBuffer(s,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(t,r,i),this.trackAllocatedMemory(i)}_initWithByteLength(t){(0,z.assert)(t>=0);let r=t;t===0&&(r=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=t,this.byteLength=t,this._setDebugData(null,0,t),this.trackAllocatedMemory(t),this}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle),this.destroyed=!0,this.handle=null)}write(t,r=0){this.gl.bindBuffer(36663,this.handle),this.gl.bufferSubData(36663,r,t),this.gl.bindBuffer(36663,null),this._setDebugData(t,r,t.byteLength)}async readAsync(t=0,r){return this.readSyncWebGL(t,r)}readSyncWebGL(t=0,r){r=r??this.byteLength-t;let i=new Uint8Array(r),s=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,i,s,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,t,r),i}};function Bi(e){return e&z.Buffer.INDEX?34963:e&z.Buffer.VERTEX?34962:e&z.Buffer.UNIFORM?35345:34962}function Pi(e){return e&z.Buffer.INDEX||e&z.Buffer.VERTEX?35044:e&z.Buffer.UNIFORM?35048:35044}var Rr=h(E(),1);var oe=class extends Rr.Sampler{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=ze(r),this.handle=this.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(t){for(let[r,i]of Object.entries(t)){let s=Number(r);switch(s){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,s,i);break;default:this.device.gl.samplerParameteri(this.handle,s,i);break}}}};var $e=h(E(),1),V=class extends $e.TextureView{device;gl;handle;texture;constructor(t,r){super(t,{...$e.Texture.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}};var Di={parameters:{},pixelStore:{},pixels:null,border:0,dataFormat:void 0,textureUnit:void 0,target:void 0},Ze=class extends B.Texture{MAX_ATTRIBUTES;device;gl;handle;sampler=void 0;view=void 0;glFormat=void 0;type=void 0;dataFormat=void 0;mipmaps=void 0;target;textureUnit=void 0;loaded=!1;_video;constructor(t,r){super(t,{...Di,format:"rgba8unorm",...r}),this.device=t,this.gl=this.device.gl,this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glFormat=6408,this.target=xi(this.props),this.loaded=!1,typeof this.props?.data=="string"&&Object.assign(this.props,{data:(0,B.loadImage)(this.props.data)}),this.initialize(this.props),Object.seal(this)}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}toString(){return`Texture(${this.id},${this.width}x${this.height})`}createView(t){return new V(this.device,{...t,texture:this})}initialize(t={}){if(this.props.dimension==="cube")return this.initializeCube(t);let r=t.data;if(r instanceof Promise)return r.then(x=>this.initialize(Object.assign({},t,{pixels:x,data:x}))),this;let i=typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement;if(i&&r.readyState<HTMLVideoElement.HAVE_METADATA)return this._video=null,r.addEventListener("loadeddata",()=>this.initialize(t)),this;let{parameters:s={}}=t,{pixels:o=null,pixelStore:a={},textureUnit:n=void 0,mipmaps:_=!0}=t;r||(r=o);let{width:c,height:l,dataFormat:T,type:f,compressed:d=!1}=t,{depth:S=0}=t,p=ut(t.format);return{width:c,height:l,compressed:d,dataFormat:T,type:f}=this._deduceParameters({format:t.format,type:f,dataFormat:T,compressed:d,data:r,width:c,height:l}),this.width=c,this.height=l,this.glFormat=p,this.type=f,this.dataFormat=T,this.textureUnit=n,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),this.mipmaps=_,this.setImageData({data:r,width:c,height:l,depth:S,format:p,type:f,dataFormat:T,parameters:a,compressed:d}),this.setSampler(t.sampler),this._setSamplerParameters(s),this.view=this.createView({...this.props,mipLevelCount:1,arrayLayerCount:1}),_&&this.device.isTextureFormatFilterable(t.format)&&this.generateMipmap(),i&&(this._video={video:r,parameters:s,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}initializeCube(t){let{mipmaps:r=!0,parameters:i={}}=t;return this.setCubeMapImageData(t).then(()=>{this.loaded=!0,r&&this.generateMipmap(t),this.setSampler(t.sampler),this._setSamplerParameters(i)}),this}setSampler(t={}){let r;t instanceof oe?(this.sampler=t,r=t.props):(this.sampler=new oe(this.device,t),r=t);let i=ze(r);return this._setSamplerParameters(i),this}resize(t){let{height:r,width:i,mipmaps:s=!1}=t;return i!==this.width||r!==this.height?this.initialize({width:i,height:r,format:this.format,type:this.type,dataFormat:this.dataFormat,mipmaps:s}):this}update(){if(this._video){let{video:t,parameters:r,lastTime:i}=this._video;if(i===t.currentTime||t.readyState<HTMLVideoElement.HAVE_CURRENT_DATA)return;this.setSubImageData({data:t,parameters:r}),this.mipmaps&&this.generateMipmap(),this._video.lastTime=t.currentTime}}generateMipmap(t={}){return this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),H(this.gl,t,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this}setImageData(t){if(this.props.dimension==="3d"||this.props.dimension==="2d-array")return this.setImageData3D(t);this.trackDeallocatedMemory("Texture");let{target:r=this.target,pixels:i=null,level:s=0,glFormat:o=this.glFormat,offset:a=0,parameters:n={}}=t,{data:_=null,type:c=this.type,width:l=this.width,height:T=this.height,dataFormat:f=this.dataFormat,compressed:d=!1}=t;_||(_=i),{type:c,dataFormat:f,compressed:d,width:l,height:T}=this._deduceParameters({format:this.props.format,type:c,dataFormat:f,compressed:d,data:_,width:l,height:T});let{gl:S}=this;S.bindTexture(this.target,this.handle);let p=null;if({data:_,dataType:p}=this._getDataType({data:_,compressed:d}),H(this.gl,n,()=>{switch(p){case"null":S.texImage2D(r,s,o,l,T,0,f,c,_);break;case"typed-array":S.texImage2D(r,s,o,l,T,0,f,c,_,a);break;case"buffer":this.device.gl.bindBuffer(35052,_.handle||_),this.device.gl.texImage2D(r,s,o,l,T,0,f,c,a),this.device.gl.bindBuffer(35052,null);break;case"browser-object":S.texImage2D(r,s,o,l,T,0,f,c,_);break;case"compressed":for(let[x,O]of _.entries())S.compressedTexImage2D(r,x,O.format,O.width,O.height,0,O.data);break;default:(0,B.assert)(!1,"Unknown image data type")}}),_&&_.byteLength)this.trackAllocatedMemory(_.byteLength,"Texture");else{let x=Ft(this.props.format);this.trackAllocatedMemory(this.width*this.height*x,"Texture")}return this.loaded=!0,this}setSubImageData({target:t=this.target,pixels:r=null,data:i=null,x:s=0,y:o=0,width:a=this.width,height:n=this.height,level:_=0,glFormat:c=this.glFormat,type:l=this.type,dataFormat:T=this.dataFormat,compressed:f=!1,offset:d=0,parameters:S={}}){if({type:l,dataFormat:T,compressed:f,width:a,height:n}=this._deduceParameters({format:this.props.format,type:l,dataFormat:T,compressed:f,data:i,width:a,height:n}),(0,B.assert)(this.depth===1,"texSubImage not supported for 3D textures"),i||(i=r),i&&i.data){let p=i;i=p.data,a=p.shape[0],n=p.shape[1]}i instanceof P&&(i=i.handle),this.gl.bindTexture(this.target,this.handle),H(this.gl,S,()=>{f?this.gl.compressedTexSubImage2D(t,_,s,o,a,n,c,i):i===null?this.gl.texSubImage2D(t,_,s,o,a,n,T,l,null):ArrayBuffer.isView(i)?this.gl.texSubImage2D(t,_,s,o,a,n,T,l,i,d):typeof WebGLBuffer<"u"&&i instanceof WebGLBuffer?(this.device.gl.bindBuffer(35052,i),this.device.gl.texSubImage2D(t,_,s,o,a,n,T,l,d),this.device.gl.bindBuffer(35052,null)):this.device.gl.texSubImage2D(t,_,s,o,a,n,T,l,i)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(t={}){return B.log.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(t=this.textureUnit){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,this.handle),t}unbind(t=this.textureUnit){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,null),t}_getDataType({data:t,compressed:r=!1}){return r?{data:t,dataType:"compressed"}:t===null?{data:t,dataType:"null"}:ArrayBuffer.isView(t)?{data:t,dataType:"typed-array"}:t instanceof P?{data:t.handle,dataType:"buffer"}:typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer?{data:t,dataType:"buffer"}:{data:t,dataType:"browser-object"}}_deduceParameters(t){let{format:r,data:i}=t,{width:s,height:o,dataFormat:a,type:n,compressed:_}=t,c=_e(r);return a=a||c.dataFormat,n=n||c.type,_=_||c.compressed,{width:s,height:o}=this._deduceImageSize(i,s,o),{dataFormat:a,type:n,compressed:_,width:s,height:o,format:r,data:i}}_deduceImageSize(t,r,i){let s;return typeof ImageData<"u"&&t instanceof ImageData?s={width:t.width,height:t.height}:typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement?s={width:t.naturalWidth,height:t.naturalHeight}:typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?s={width:t.width,height:t.height}:typeof ImageBitmap<"u"&&t instanceof ImageBitmap?s={width:t.width,height:t.height}:typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement?s={width:t.videoWidth,height:t.videoHeight}:t?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},(0,B.assert)(s,"Could not deduced texture size"),(0,B.assert)(r===void 0||s.width===r,"Deduced texture width does not match supplied width"),(0,B.assert)(i===void 0||s.height===i,"Deduced texture height does not match supplied height"),s}async setCubeMapImageData(t){let{gl:r}=this,{width:i,height:s,pixels:o,data:a,format:n=6408,type:_=5121}=t,c=o||a,l=await Promise.all(Ze.FACES.map(T=>{let f=c[T];return Promise.all(Array.isArray(f)?f:[f])}));this.bind(),Ze.FACES.forEach((T,f)=>{l[f].length>1&&this.props.mipmaps!==!1&&B.log.warn(`${this.id} has mipmap and multiple LODs.`)(),l[f].forEach((d,S)=>{i&&s?r.texImage2D(T,S,n,i,s,0,n,_,d):r.texImage2D(T,S,n,n,_,d)})}),this.unbind()}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:o,data:a,format:n=6408,type:_=5121}=t,{gl:c}=this,l=o||a;return this.bind(),l instanceof Promise?l.then(T=>this.setImageDataForFace(Object.assign({},t,{face:r,data:T,pixels:T}))):this.width||this.height?c.texImage2D(r,0,n,i,s,0,n,_,l):c.texImage2D(r,0,n,n,_,l),this}setImageData3D(t){let{level:r=0,dataFormat:i,format:s,type:o,width:a,height:n,depth:_=1,offset:c=0,data:l,parameters:T={}}=t;this.trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle);let f=_e(s);if(H(this.gl,T,()=>{ArrayBuffer.isView(l)&&this.gl.texImage3D(this.target,r,f.format,a,n,_,0,f.dataFormat,f.type,l),l instanceof P&&(this.gl.bindBuffer(35052,l.handle),this.gl.texImage3D(this.target,r,i,a,n,_,0,s,o,c))}),l&&l.byteLength)this.trackAllocatedMemory(l.byteLength,"Texture");else{let d=Ft(this.props.format);this.trackAllocatedMemory(this.width*this.height*this.depth*d,"Texture")}return this.loaded=!0,this}_setSamplerParameters(t){if(!(0,B.isObjectEmpty)(t)){Ui(t),this.gl.bindTexture(this.target,this.handle);for(let[r,i]of Object.entries(t)){let s=Number(r),o=i;switch(s){case 33082:case 33083:this.gl.texParameterf(this.target,s,o);break;default:this.gl.texParameteri(this.target,s,o);break}}this.gl.bindTexture(this.target,null)}}},D=Ze;Pe(D,"FACES",[34069,34070,34071,34072,34073,34074]);function xi(e){switch(e.dimension){case"2d":return 3553;case"cube":return 34067;case"2d-array":return 35866;case"3d":return 32879;case"1d":case"cube-array":default:throw new Error(e.dimension)}}function Ui(e){B.log.log(1,"texture sampler parameters",e)()}var $=class extends Qe.Framebuffer{device;gl;handle;get texture(){return this.colorAttachments[0]}constructor(t,r){super(t,r);let i=r.handle===null;if(this.device=t,this.gl=t.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),!i){t.setSpectorMetadata(this.handle,{id:this.props.id,props:this.props}),this.autoCreateAttachmentTextures();let s=this.gl.bindFramebuffer(36160,this.handle);for(let o=0;o<this.colorAttachments.length;++o){let a=this.colorAttachments[o],n=36064+o;a&&this._attachOne(n,a)}if(this.depthStencilAttachment&&this._attachOne(ar(this.depthStencilAttachment.props.format),this.depthStencilAttachment),r.check!==!1){let o=this.gl.checkFramebufferStatus(36160);if(o!==36053)throw new Error(`Framebuffer ${wi(o)}`)}this.gl.bindFramebuffer(36160,s)}}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}createDepthStencilTexture(t){return new D(this.device,{id:`${this.id}-depth-stencil`,format:t,width:this.width,height:this.height,mipmaps:!1})}resizeAttachments(t,r){if(this.handle===null)return this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;t===void 0&&(t=this.gl.drawingBufferWidth),r===void 0&&(r=this.gl.drawingBufferHeight);for(let i of this.colorAttachments)i.texture.resize({width:t,height:r});return this.depthStencilAttachment&&this.depthStencilAttachment.texture.resize({width:t,height:r}),this}_attachOne(t,r){if(Array.isArray(r)){let[i,s=0,o=0]=r;return this._attachTexture(t,i,s,o),i}if(r instanceof D)return this._attachTexture(t,r,0,0),r;if(r instanceof V){let i=r;return this._attachTexture(t,i.texture,i.props.baseMipLevel,i.props.baseArrayLayer),r.texture}throw new Error("attach")}_attachTexture(t,r,i,s){let{gl:o}=this.device;switch(o.bindTexture(r.target,r.handle),r.target){case 35866:case 32879:o.framebufferTextureLayer(36160,t,r.target,s,i);break;case 34067:let a=yi(i);o.framebufferTexture2D(36160,t,a,r.handle,s);break;case 3553:o.framebufferTexture2D(36160,t,3553,r.handle,s);break;default:(0,Qe.assert)(!1,"Illegal texture type")}o.bindTexture(r.target,null)}};function yi(e){return e<34069?e+34069:e}function wi(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}var je=class extends dr.CanvasContext{device;presentationSize;_framebuffer=null;constructor(t,r){super(r),this.device=t,this.presentationSize=[-1,-1],this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this.update()}getCurrentFramebuffer(){return this.update(),this._framebuffer=this._framebuffer||new $(this.device,{handle:null}),this._framebuffer}update(){let t=this.getPixelSize();(t[0]!==this.presentationSize[0]||t[1]!==this.presentationSize[1])&&(this.presentationSize=t,this.resize())}resize(t){if(this.device.gl&&this.canvas){let r=this.getDevicePixelRatio(t?.useDevicePixels);this.setDevicePixelRatio(r,t);return}}commit(){}};var Z=h(E(),1),vi={spector:Z.log.get("spector")||Z.log.get("inspect")},Xi="https://spectorcdn.babylonjs.com/spector.bundle.js",Hi=1,U=null,Ar=!1;async function hr(e){if(!globalThis.SPECTOR)try{await(0,Z.loadScript)(Xi)}catch(t){Z.log.warn(String(t))}}function Sr(e){if(e={...vi,...e},!e?.spector||(!U&&globalThis.SPECTOR&&(Z.log.probe(Hi,"SPECTOR found and initialized")(),U=new globalThis.SPECTOR.Spector,globalThis.luma&&(globalThis.luma.spector=U)),!U))return null;if(Ar||(Ar=!0,U.spyCanvases(),U?.onCaptureStarted.add(t=>Z.log.info("Spector capture started:",t)()),U?.onCapture.add(t=>{Z.log.info("Spector capture complete:",t)(),U?.getResultUI(),U?.resultView.display(),U?.resultView.addCapture(t)})),e?.canvas){if(typeof e.spector=="string"&&e.spector!==e.canvas.id)return U;U?.startCapture(e?.canvas,500),new Promise(t=>setTimeout(t,2e3)).then(t=>{Z.log.info("Spector capture stopped after 2 seconds")(),U?.stopCapture()})}return U}var G=h(E(),1);var Mo=globalThis.document||{},Bo=globalThis.process||{},Po=globalThis.console,Er=globalThis.navigator||{};function qe(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let t=typeof navigator<"u"&&navigator.userAgent,r=e||t;return Boolean(r&&r.indexOf("Electron")>=0)}function Ce(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||qe()}function Bt(e){return!e&&!Ce()?"Node":qe(e)?"Electron":(e||Er.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Wi="https://unpkg.com/webgl-debug@2.0.1/index.js";function gr(e){return e.luma=e.luma||{},e.luma}async function pr(){Ce()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await(0,G.loadScript)(Wi))}function br(e,t={}){return e?t.debug?ki(e,t):Vi(e):null}function Vi(e){let t=gr(e);return t.realContext?t.realContext:e}function ki(e,t){if(!globalThis.WebGLDebugUtils)return G.log.warn("webgl-debug not loaded")(),e;let r=gr(e);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...J,...e});let i=globalThis.WebGLDebugUtils.makeDebugContext(e,Ki.bind(null,t),mi.bind(null,t));for(let a in J)!(a in i)&&typeof J[a]=="number"&&(i[a]=J[a]);class s{}Object.setPrototypeOf(i,Object.getPrototypeOf(e)),Object.setPrototypeOf(s,i);let o=Object.create(s);return r.realContext=e,r.debugContext=o,o.debug=!0,o}function Pt(e,t){t=Array.from(t).map(i=>i===void 0?"undefined":i);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${e}(${r})`}function Ki(e,t,r,i){i=Array.from(i).map(n=>n===void 0?"undefined":n);let s=globalThis.WebGLDebugUtils.glEnumToString(t),o=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),a=`${s} in gl.${r}(${o})`;G.log.error(a)();debugger;if(e.throwOnError)throw new Error(a)}function mi(e,t,r){let i="";if(G.log.level>=1&&(i=Pt(t,r),G.log.log(1,i)()),e.break&&e.break.length>0&&(i=i||Pt(t,r),e.break.every(o=>i.indexOf(o)!==-1)))debugger;for(let s of r)if(s===void 0){if(i=i||Pt(t,r),e.throwOnError)throw new Error(`Undefined argument: ${i}`);G.log.error(`Undefined argument: ${i}`)();debugger}}var ce=h(E(),1);function Ir(e){let t=e.split(/\r?\n/),r=[];for(let i of t){if(i.length<=1)continue;let s=i.split(":");if(s.length===2){let[T,f]=s;r.push({message:f.trim(),type:Cr(T),lineNum:0,linePos:0});continue}let[o,a,n,..._]=s,c=parseInt(n,10);isNaN(c)&&(c=0);let l=parseInt(a,10);isNaN(l)&&(l=0),r.push({message:_.join(":").trim(),type:Cr(o),lineNum:c,linePos:l})}return r}function Cr(e){let t=["warning","error","info"],r=e.toLowerCase();return t.includes(r)?r:"info"}var Je=class extends ce.Shader{device;handle;constructor(t,r){switch(super(t,r),this.device=t,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0)}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let t=this.device.gl.getShaderInfoLog(this.handle);return Ir(t)}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)}async _compile(t){t=(s=>s.startsWith("#version ")?s:`#version 100
|
|
8
|
-
${s}`)(t);let{gl:i}=this.device;if(i.shaderSource(this.handle,t),i.compileShader(this.handle),ce.log.level===0){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);this.debugShader();return}ce.log.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),ce.log.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let t=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:i}=this.device;for(;;){if(i.getShaderParameter(this.handle,37297))return;await t(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}};var Nr=h(E(),1);var Yi=256,zi=1024,$i=16384,Dt=6144,Le=class extends Nr.RenderPass{device;glParameters;constructor(t,r){super(t,r),this.device=t,L(this.device.gl),this.setParameters(this.props.parameters),this.clear()}end(){j(this.device.gl),this.props.framebuffer&&W(this.device.gl,{framebuffer:null})}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={};this.props.framebuffer&&(r.framebuffer=this.props.framebuffer),this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,t.viewport&&(t.viewport.length>=6?(r.viewport=t.viewport.slice(0,4),r.depthRange=[t.viewport[4],t.viewport[5]]):r.viewport=t.viewport),r.scissorTest=Boolean(t.scissorRect),t.scissorRect&&(r.scissor=t.scissorRect),t.blendConstant&&(r.blendColor=t.blendConstant),t.stencilReference&&(console.warn("RenderPassParameters.stencilReference not yet implemented in WebGL"),t[2967]=t.stencilReference),this.glParameters=r,W(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColor!==!1&&(r|=$i,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=Yi,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=zi,t.clearStencil=this.props.clearStencil),r!==0&&H(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){H(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int32Array:this.device.gl.clearBufferiv(Dt,t,r);break;case Uint32Array:this.device.gl.clearBufferuiv(Dt,t,r);break;case Float32Array:default:this.device.gl.clearBufferfv(Dt,t,r);break}})}};var C=h(E(),1),yr=h(E(),1);var Ge=h(E(),1);var Zi="Failed to deduce GL constant from typed array";function ur(e){switch(ArrayBuffer.isView(e)?e.constructor:e){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(Zi)}}function Ie(e,t){let{clamped:r=!0}=t||{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return r?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error("Failed to deduce typed array type from GL constant")}}var Qi={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},ji={deprecatedProps:{instanced:"divisor",isInstanced:"divisor"}},ee=class{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(t){return Ie(t.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(t){return(0,Ge.assert)(t.size),Ie(t.type||5126).BYTES_PER_ELEMENT*t.size}static resolve(...t){return new ee(Qi,...t)}constructor(...t){t.forEach(r=>this._assign(r)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return ee.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return ee.getBytesPerVertex(this)}_assign(t={}){return t=(0,Ge.checkProps)("Accessor",t,ji),t.type!==void 0&&(this.type=t.type,(t.type===5124||t.type===5125)&&(this.integer=!0)),t.size!==void 0&&(this.size=t.size),t.offset!==void 0&&(this.offset=t.offset),t.stride!==void 0&&(this.stride=t.stride),t.normalize!==void 0&&(this.normalized=t.normalize),t.normalized!==void 0&&(this.normalized=t.normalized),t.integer!==void 0&&(this.integer=t.integer),t.divisor!==void 0&&(this.divisor=t.divisor),t.buffer!==void 0&&(this.buffer=t.buffer),t.index!==void 0&&(typeof t.index=="boolean"?this.index=t.index?1:0:this.index=t.index),t.instanced!==void 0&&(this.divisor=t.instanced?1:0),t.isInstanced!==void 0&&(this.divisor=t.isInstanced?1:0),this.offset===void 0&&delete this.offset,this.stride===void 0&&delete this.stride,this.type===void 0&&delete this.type,this.size===void 0&&delete this.size,this.divisor===void 0&&delete this.divisor,this.normalized===void 0&&delete this.normalized,this.integer===void 0&&delete this.integer,this.buffer===void 0&&delete this.buffer,this.index===void 0&&delete this.index,this}};function Fr(e){return qi.includes(e)}var qi=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],Or={[5126]:[5126,1,"float","f32","float32"],[35664]:[5126,2,"vec2","vec2<f32>","float32x2"],[35665]:[5126,3,"vec3","vec3<f32>","float32x3"],[35666]:[5126,4,"vec4","vec4<f32>","float32x4"],[5124]:[5124,1,"int","i32","sint32"],[35667]:[5124,2,"ivec2","vec2<i32>","sint32x2"],[35668]:[5124,3,"ivec3","vec3<i32>","sint32x3"],[35669]:[5124,4,"ivec4","vec4<i32>","sint32x4"],[5125]:[5125,1,"uint","u32","uint32"],[36294]:[5125,2,"uvec2","vec2<u32>","uint32x2"],[36295]:[5125,3,"uvec3","vec3<u32>","uint32x3"],[36296]:[5125,4,"uvec4","vec4<u32>","uint32x4"],[35670]:[5126,1,"bool","f32","float32"],[35671]:[5126,2,"bvec2","vec2<f32>","float32x2"],[35672]:[5126,3,"bvec3","vec3<f32>","float32x3"],[35673]:[5126,4,"bvec4","vec4<f32>","float32x4"],[35674]:[5126,8,"mat2","mat2x2<f32>"],[35685]:[5126,8,"mat2x3","mat2x3<f32>"],[35686]:[5126,8,"mat2x4","mat2x4<f32>"],[35687]:[5126,12,"mat3x2","mat3x2<f32>"],[35675]:[5126,12,"mat3","mat3x3<f32>"],[35688]:[5126,12,"mat3x4","mat3x4<f32>"],[35689]:[5126,16,"mat4x2","mat4x2<f32>"],[35690]:[5126,16,"mat4x3","mat4x3<f32>"],[35676]:[5126,16,"mat4","mat4x4<f32>"]};function xt(e){let t=Or[e];if(!t)throw new Error("uniform");let[r,i,,s]=t;return{format:s,components:i,glType:r}}function Mr(e){let t=Or[e];if(!t)throw new Error("attribute");let[,r,,i,s]=t;return{attributeType:i,vertexFormat:s,components:r}}function Br(e,t){let r={attributes:[],bindings:[]};r.attributes=Ji(e,t);let i=es(e,t);for(let n of i){let _=n.uniforms.map(c=>({name:c.name,format:c.format,byteOffset:c.byteOffset,byteStride:c.byteStride,arrayLength:c.arrayLength}));r.bindings.push({type:"uniform",name:n.name,location:n.location,visibility:(n.vertex?1:0)&(n.fragment?2:0),minBindingSize:n.byteLength,uniforms:_})}let s=Gi(e,t),o=0;for(let n of s)if(Fr(n.type)){let{viewDimension:_,sampleType:c}=rs(n.type);r.bindings.push({type:"texture",name:n.name,location:o,viewDimension:_,sampleType:c}),n.textureUnit=o,o+=1}s.length&&(r.uniforms=s);let a=Li(e,t);return a?.length&&(r.varyings=a),r}function Ji(e,t){let r=[],i=e.getProgramParameter(t,35721);for(let s=0;s<i;s++){let o=e.getActiveAttrib(t,s);if(!o)throw new Error("activeInfo");let{name:a,type:n}=o,_=e.getAttribLocation(t,a);if(_>=0){let{attributeType:c}=Mr(n),l=/instance/i.test(a)?"instance":"vertex";r.push({name:a,location:_,stepMode:l,type:c})}}return r.sort((s,o)=>s.location-o.location),r}function Li(e,t){let r=[],i=e.getProgramParameter(t,35971);for(let s=0;s<i;s++){let o=e.getTransformFeedbackVarying(t,s);if(!o)throw new Error("activeInfo");let{name:a,type:n,size:_}=o,{glType:c,components:l}=xt(n),T=new ee({type:c,size:_*l}),f={location:s,name:a,accessor:T};r.push(f)}return r.sort((s,o)=>s.location-o.location),r}function Gi(e,t){let r=[],i=e.getProgramParameter(t,35718);for(let s=0;s<i;s++){let o=e.getActiveUniform(t,s);if(!o)throw new Error("activeInfo");let{name:a,size:n,type:_}=o,{name:c,isArray:l}=is(a),T=e.getUniformLocation(t,c),f={location:T,name:c,size:n,type:_,isArray:l};if(r.push(f),f.size>1)for(let d=0;d<f.size;d++){let S=`${c}[${d}]`;T=e.getUniformLocation(t,S);let p={...f,name:S,location:T};r.push(p)}}return r}function es(e,t){let r=(o,a)=>e.getActiveUniformBlockParameter(t,o,a),i=[],s=e.getProgramParameter(t,35382);for(let o=0;o<s;o++){let a={name:e.getActiveUniformBlockName(t,o)||"",location:r(o,35391),byteLength:r(o,35392),vertex:r(o,35396),fragment:r(o,35398),uniformCount:r(o,35394),uniforms:[]},n=r(o,35395)||[],_=e.getActiveUniforms(t,n,35383),c=e.getActiveUniforms(t,n,35384),l=e.getActiveUniforms(t,n,35387),T=e.getActiveUniforms(t,n,35388);for(let f=0;f<a.uniformCount;++f){let d=e.getActiveUniform(t,n[f]);if(!d)throw new Error("activeInfo");a.uniforms.push({name:d.name,format:xt(_[f]).format,type:_[f],arrayLength:c[f],byteOffset:l[f],byteStride:T[f]})}i.push(a)}return i.sort((o,a)=>o.location-a.location),i}var ts={[35678]:["2d","float"],[35680]:["cube","float"],[35679]:["3d","float"],[35682]:["3d","depth"],[36289]:["2d-array","float"],[36292]:["2d-array","depth"],[36293]:["cube","float"],[36298]:["2d","sint"],[36299]:["3d","sint"],[36300]:["cube","sint"],[36303]:["2d-array","uint"],[36306]:["2d","uint"],[36307]:["3d","uint"],[36308]:["cube","uint"],[36311]:["2d-array","uint"]};function rs(e){let t=ts[e];if(!t)throw new Error("sampler");let[r,i]=t;return{viewDimension:r,sampleType:i}}function is(e){if(e[e.length-1]!=="]")return{name:e,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(e);if(!r||r.length<2)throw new Error(`Failed to parse GLSL uniform name ${e}`);return{name:r[1],length:r[2]?1:0,isArray:Boolean(r[2])}}function Pr(e,t,r,i){let s=e,o=i;o===!0&&(o=1),o===!1&&(o=0);let a=typeof o=="number"?[o]:o;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof i!="number")throw new Error("samplers must be set to integers");return e.uniform1i(t,i);case 5126:return e.uniform1fv(t,a);case 35664:return e.uniform2fv(t,a);case 35665:return e.uniform3fv(t,a);case 35666:return e.uniform4fv(t,a);case 5124:return e.uniform1iv(t,a);case 35667:return e.uniform2iv(t,a);case 35668:return e.uniform3iv(t,a);case 35669:return e.uniform4iv(t,a);case 35670:return e.uniform1iv(t,a);case 35671:return e.uniform2iv(t,a);case 35672:return e.uniform3iv(t,a);case 35673:return e.uniform4iv(t,a);case 5125:return s.uniform1uiv(t,a,1);case 36294:return s.uniform2uiv(t,a,2);case 36295:return s.uniform3uiv(t,a,3);case 36296:return s.uniform4uiv(t,a,4);case 35674:return e.uniformMatrix2fv(t,!1,a);case 35675:return e.uniformMatrix3fv(t,!1,a);case 35676:return e.uniformMatrix4fv(t,!1,a);case 35685:return s.uniformMatrix2x3fv(t,!1,a);case 35686:return s.uniformMatrix2x4fv(t,!1,a);case 35687:return s.uniformMatrix3x2fv(t,!1,a);case 35688:return s.uniformMatrix3x4fv(t,!1,a);case 35689:return s.uniformMatrix4x2fv(t,!1,a);case 35690:return s.uniformMatrix4x3fv(t,!1,a)}throw new Error("Illegal uniform")}function Dr(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"line-loop-webgl":return 2;case"triangle-list":return 4;case"triangle-strip":return 5;case"triangle-fan-webgl":return 6;default:throw new Error(e)}}function xr(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"line-loop-webgl":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;case"triangle-fan-webgl":return 4;default:throw new Error(e)}}var Ur=4,et=class extends C.RenderPipeline{device;handle;vs;fs;introspectedLayout;uniforms={};bindings={};varyings=null;_uniformCount=0;_uniformSetters={};constructor(t,r){super(t,r),this.device=t,this.handle=this.props.handle||this.device.gl.createProgram(),this.device.setSpectorMetadata(this.handle,{id:this.props.id}),this.vs=(0,C.cast)(r.vs),this.fs=(0,C.cast)(r.fs);let{varyings:i,bufferMode:s=35981}=r;switch(i&&i.length>0&&(this.varyings=i,this.device.gl.transformFeedbackVaryings(this.handle,i,s)),this._linkShaders(),C.log.time(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=Br(this.device.gl,this.handle),C.log.timeEnd(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=(0,yr.mergeShaderLayout)(this.introspectedLayout,r.shaderLayout),this.props.topology){case"triangle-fan-webgl":case"line-loop-webgl":C.log.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);break;default:}}destroy(){this.handle&&(this.device.gl.deleteProgram(this.handle),this.destroyed=!0)}setBindings(t,r){for(let[i,s]of Object.entries(t)){let o=this.shaderLayout.bindings.find(a=>a.name===i)||this.shaderLayout.bindings.find(a=>a.name===`${i}Uniforms`);if(!o){let a=this.shaderLayout.bindings.map(n=>`"${n.name}"`).join(", ");r?.disableWarnings&&C.log.warn(`Unknown binding "${i}" in render pipeline "${this.id}", expected one of ${a}`)();continue}switch(s||C.log.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(s instanceof P)&&!(s.buffer instanceof P))throw new Error("buffer value");break;case"texture":if(!(s instanceof V||s instanceof D||s instanceof $))throw new Error("texture value");break;case"sampler":C.log.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=s}}draw(t){let{renderPass:r,vertexArray:i,vertexCount:s,instanceCount:o,firstVertex:a=0,transformFeedback:n}=t,_=Dr(this.props.topology),c=Boolean(i.indexBuffer),l=i.indexBuffer?.glIndexType,T=Number(o)>0;if(this.linkStatus!=="success")return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable()||s===0)return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;if(s===0)return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - no vertices to draw`)(),!0;this.device.gl.useProgram(this.handle),i.bindBeforeRender(r),n&&n.begin(this.props.topology),this._applyBindings(),this._applyUniforms();let f=r;return fr(this.device,this.props.parameters,f.glParameters,()=>{c&&T?this.device.gl.drawElementsInstanced(_,s||0,l,a,o||0):c?this.device.gl.drawElements(_,s||0,l,a):T?this.device.gl.drawArraysInstanced(_,a,s||0,o||0):this.device.gl.drawArrays(_,a,s||0),n&&n.end()}),i.unbindAfterRender(r),!0}setUniformsWebGL(t){let{bindings:r}=(0,C.splitUniformsAndBindings)(t);Object.keys(r).forEach(i=>{C.log.warn(`Unsupported value "${JSON.stringify(r[i])}" used in setUniforms() for key ${i}. Use setBindings() instead?`)()}),Object.assign(this.uniforms,t)}async _linkShaders(){let{gl:t}=this.device;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),C.log.time(Ur,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),C.log.timeEnd(Ur,`linkProgram for ${this.id}`)(),C.log.level,!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}C.log.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),C.log.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}_reportLinkStatus(t){switch(t){case"success":return;default:throw this.vs.compilationStatus==="error"?(this.vs.debugShader(),new Error(`Error during compilation of shader ${this.vs.id}`)):this.fs?.compilationStatus==="error"?(this.vs.debugShader(),new Error(`Error during compilation of shader ${this.fs.id}`)):new Error(`Error during ${t}: ${this.device.gl.getProgramInfoLog(this.handle)}`)}}_getLinkStatus(){let{gl:t}=this.device;return t.getProgramParameter(this.handle,35714)?(t.validateProgram(this.handle),t.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation")):(this.linkStatus="error","linking")}async _waitForLinkComplete(){let t=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:i}=this.device;for(;;){if(i.getProgramParameter(this.handle,37297))return;await t(10)}}_areTexturesRenderable(){let t=!0;for(let[,r]of Object.entries(this.bindings))r instanceof D&&(r.update(),t=t&&r.loaded);return t}_applyBindings(){if(this.linkStatus!=="success")return;let{gl:t}=this.device;t.useProgram(this.handle);let r=0,i=0;for(let s of this.shaderLayout.bindings){let o=this.bindings[s.name]||this.bindings[s.name.replace(/Uniforms$/,"")];if(!o)throw new Error(`No value for binding ${s.name} in ${this.id}`);switch(s.type){case"uniform":let{name:a}=s,n=t.getUniformBlockIndex(this.handle,a);if(n===4294967295)throw new Error(`Invalid uniform block name ${a}`);t.uniformBlockBinding(this.handle,i,n),o instanceof P?t.bindBufferBase(35345,i,o.handle):t.bindBufferRange(35345,i,o.buffer.handle,o.offset||0,o.size||o.buffer.byteLength-o.offset),i+=1;break;case"texture":if(!(o instanceof V||o instanceof D||o instanceof $))throw new Error("texture");let _;if(o instanceof V)_=o.texture;else if(o instanceof D)_=o;else if(o instanceof $&&o.colorAttachments[0]instanceof V)C.log.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),_=o.colorAttachments[0].texture;else throw new Error("No texture");t.activeTexture(33984+r),t.bindTexture(_.target,_.handle),r+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${s.type}' not supported in WebGL`)}}}_applyUniforms(){for(let t of this.shaderLayout.uniforms||[]){let{name:r,location:i,type:s,textureUnit:o}=t,a=this.uniforms[r]??o;a!==void 0&&Pr(this.device.gl,i,s,a)}}};var vr=h(E(),1);var rt=h(E(),1);var tt=class extends rt.CommandBuffer{device;commands=[];constructor(t){super(t,{}),this.device=t}submitCommands(t=this.commands){for(let r of t)switch(r.name){case"copy-buffer-to-buffer":ss(this.device,r.options);break;case"copy-buffer-to-texture":os(this.device,r.options);break;case"copy-texture-to-buffer":as(this.device,r.options);break;case"copy-texture-to-texture":ns(this.device,r.options);break}}};function ss(e,t){let r=t.source,i=t.destination;e.gl.bindBuffer(36662,r.handle),e.gl.bindBuffer(36663,i.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}function os(e,t){throw new Error("Not implemented")}function as(e,t){let{source:r,mipLevel:i=0,aspect:s="all",width:o=t.source.width,height:a=t.source.height,depthOrArrayLayers:n=0,origin:_=[0,0],destination:c,byteOffset:l=0,bytesPerRow:T,rowsPerImage:f}=t;if(s!=="all")throw new Error("not supported");if(i!==0||n!==0||T||f)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:S}=wr(r),p;try{let x=c,O=o||d.width,k=a||d.height,re=_e(d.texture.props.format),Fe=re.dataFormat,Oe=re.type;e.gl.bindBuffer(35051,x.handle),p=e.gl.bindFramebuffer(36160,d.handle),e.gl.readPixels(_[0],_[1],O,k,Fe,Oe,l)}finally{e.gl.bindBuffer(35051,null),p!==void 0&&e.gl.bindFramebuffer(36160,p),S&&d.destroy()}}function ns(e,t){let{source:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:o=[0,0],destination:a}=t,{width:n=t.destination.width,height:_=t.destination.height}=t,{framebuffer:c,destroyFramebuffer:l}=wr(r),[T,f]=s,[d,S,p]=o,x=e.gl.bindFramebuffer(36160,c.handle),O=null,k;if(a instanceof D)O=a,n=Number.isFinite(n)?n:O.width,_=Number.isFinite(_)?_:O.height,O.bind(0),k=O.target;else throw new Error("invalid destination");switch(k){case 3553:case 34067:e.gl.copyTexSubImage2D(k,i,d,S,T,f,n,_);break;case 35866:case 32879:e.gl.copyTexSubImage3D(k,i,d,S,p,T,f,n,_);break;default:}O&&O.unbind(),e.gl.bindFramebuffer(36160,x),l&&c.destroy()}function wr(e){if(e instanceof rt.Texture){let{width:t,height:r,id:i}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${i}`,width:t,height:r,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}var it=class extends vr.CommandEncoder{device;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new tt(t)}destroy(){}finish(){this.commandBuffer.submitCommands()}copyBufferToBuffer(t){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:t})}copyBufferToTexture(t){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:t})}copyTextureToBuffer(t){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:t})}copyTextureToTexture(t){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:t})}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}resolveQuerySet(t,r,i){}};var fe=h(E(),1);var le=class extends fe.VertexArray{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return Bt()==="Chrome"}constructor(t,r){super(t,r),this.device=t,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(t){let r=t;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(t,r){let i=r;if(i.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:s,type:o,stride:a,offset:n,normalized:_,integer:c,divisor:l}=this._getAccessor(t);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,i.handle),c?this.device.gl.vertexAttribIPointer(t,s,o,a,n):this.device.gl.vertexAttribPointer(t,s,o,_,a,n),this.device.gl.enableVertexAttribArray(t),this.device.gl.vertexAttribDivisor(t,l||0),this.attributes[t]=i,this.device.gl.bindVertexArray(null)}setConstantWebGL(t,r){this._enable(t,!1),this.attributes[t]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let t=0;t<this.maxVertexAttributes;++t){let r=this.attributes[t];ArrayBuffer.isView(r)&&this.device.setConstantAttributeWebGL(t,r)}}_getAccessor(t){let r=this.attributeInfos[t];if(!r)throw new Error(`Unknown attribute location ${t}`);let i=ye(r.bufferDataType);return{size:r.bufferComponents,type:i,stride:r.byteStride,offset:r.byteOffset,normalized:r.normalized,integer:r.integer,divisor:r.stepMode==="instance"?1:0}}_enable(t,r=!0){let s=le.isConstantAttributeZeroSupported(this.device)||t!==0;(r||s)&&(t=Number(t),this.device.gl.bindVertexArray(this.handle),r?this.device.gl.enableVertexAttribArray(t):this.device.gl.disableVertexAttribArray(t),this.device.gl.bindVertexArray(null))}getConstantBuffer(t,r){let i=_s(r),s=i.byteLength*t,o=i.length*t;if(this.buffer&&s!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${s} !== ${this.buffer.byteLength}.`);let a=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:s}),a=a||!cs(i,this.bufferValue),a){let n=(0,fe.getScratchArray)(r.constructor,o);(0,fe.fillArray)({target:n,source:i,start:0,count:o}),this.buffer.write(n),this.bufferValue=r}return this.buffer}};function _s(e){return Array.isArray(e)?new Float32Array(e):e}function cs(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var ot=h(E(),1);var st=class extends ot.TransformFeedback{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(t,r){super(t,r),this.device=t,this.gl=t.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,r.buffers&&this.setBuffers(r.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(t="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(xr(t))}end(){this.gl.endTransformFeedback(),this.bindOnUse||this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(t){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let r in t)this.setBuffer(r,t[r])})}setBuffer(t,r){let i=this._getVaryingIndex(t),{buffer:s,byteLength:o,byteOffset:a}=this._getBufferRange(r);if(i<0){this.unusedBuffers[t]=s,ot.log.warn(`${this.id} unusedBuffers varying buffer ${t}`)();return}this.buffers[i]={buffer:s,byteLength:o,byteOffset:a},this.bindOnUse||this._bindBuffer(i,s,a,o)}getBuffer(t){if(Xr(t))return this.buffers[t]||null;let r=this._getVaryingIndex(t);return r>=0?this.buffers[r]:null}bind(t=this.handle){if(typeof t!="function")return this.gl.bindTransformFeedback(36386,t),this;let r;return this._bound?r=t():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=t(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(t){if(t instanceof P)return{buffer:t,byteOffset:0,byteLength:t.byteLength};let{buffer:r,byteOffset:i=0,byteLength:s=t.buffer.byteLength}=t;return{buffer:r,byteOffset:i,byteLength:s}}_getVaryingIndex(t){if(Xr(t))return Number(t);for(let r of this.layout.varyings)if(t===r.name)return r.location;return-1}_bindBuffers(){for(let t in this.buffers){let{buffer:r,byteLength:i,byteOffset:s}=this._getBufferRange(this.buffers[t]);this._bindBuffer(Number(t),r,s,i)}}_unbindBuffers(){for(let t in this.buffers)this.gl.bindBufferBase(35982,Number(t),null)}_bindBuffer(t,r,i=0,s){let o=r&&r.handle;!o||s===void 0?this.gl.bindBufferBase(35982,t,o):this.gl.bindBufferRange(35982,t,o,i,s)}};function Xr(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var Hr=h(E(),1);var at=class extends Hr.QuerySet{device;handle;target=null;_queryPending=!1;_pollingPromise=null;get[Symbol.toStringTag](){return"Query"}constructor(t,r){if(super(t,r),this.device=t,r.count>1)throw new Error("WebGL QuerySet can only have one value");this.handle=this.device.gl.createQuery(),Object.seal(this)}destroy(){this.device.gl.deleteQuery(this.handle)}beginTimestampQuery(){return this._begin(35007)}endTimestampQuery(){this._end()}beginOcclusionQuery(t){return this._begin(t?.conservative?36202:35887)}endOcclusionQuery(){this._end()}beginTransformFeedbackQuery(){return this._begin(35976)}endTransformFeedbackQuery(){this._end()}async resolveQuery(){return[await this.pollQuery()]}_begin(t){this._queryPending||(this.target=t,this.device.gl.beginQuery(this.target,this.handle))}_end(){this._queryPending||this.target&&(this.device.gl.endQuery(this.target),this.target=null,this._queryPending=!0)}isResultAvailable(){if(!this._queryPending)return!1;let t=this.device.gl.getQueryParameter(this.handle,34919);return t&&(this._queryPending=!1),t}isTimerDisjoint(){return this.device.gl.getParameter(36795)}getResult(){return this.device.gl.getQueryParameter(this.handle,34918)}getTimerMilliseconds(){return this.getResult()/1e6}pollQuery(t=Number.POSITIVE_INFINITY){if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let o=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>t?(s("Timed out"),this._pollingPromise=null):requestAnimationFrame(o)};requestAnimationFrame(o)}),this._pollingPromise}};var Te=h(E(),1);var Ut=h(E(),1);function yt(e){switch(e){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return(0,Ut.assert)(!1),0}}function Wr(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return(0,Ut.assert)(!1),0}}function Vr(e,t){let{sourceX:r=0,sourceY:i=0,sourceFormat:s=6408,sourceAttachment:o=36064}=t||{},{target:a=null,sourceWidth:n,sourceHeight:_,sourceType:c}=t||{},{framebuffer:l,deleteFramebuffer:T}=Kr(e);(0,Te.assert)(l);let{gl:f,handle:d}=l;n=n||l.width,_=_||l.height;let S=o-36064;c=c||l.colorAttachments[S]?.texture?.type||5121,a=fs(a,c,s,n,_),c=c||ur(a);let p=f.bindFramebuffer(36160,d);return f.readPixels(r,i,n,_,s,c,a),f.bindFramebuffer(36160,p||null),T&&l.destroy(),a}function kr(e,t){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:o=6408,targetByteOffset:a=0}=t||{},{sourceWidth:n,sourceHeight:_,sourceType:c}=t||{},{framebuffer:l,deleteFramebuffer:T}=Kr(e);(0,Te.assert)(l),n=n||l.width,_=_||l.height;let f=l;c=c||5121;let d=r;if(!d){let p=yt(o),x=Wr(c),O=a+n*_*p*x;d=f.device.createBuffer({byteLength:O})}let S=e.device.createCommandEncoder();return S.copyTextureToBuffer({source:e,width:n,height:_,origin:[i,s],destination:d,byteOffset:a}),S.destroy(),T&&l.destroy(),d}function Kr(e){return e instanceof Te.Framebuffer?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:ls(e),deleteFramebuffer:!0}}function ls(e,t){let{device:r,width:i,height:s,id:o}=e;return r.createFramebuffer({...t,id:`framebuffer-for-${o}`,width:i,height:s,colorAttachments:[e]})}function fs(e,t,r,i,s){if(e)return e;t=t||5121;let o=Ie(t,{clamped:!1}),a=yt(r);return new o(i*s*a)}var mr=h(E(),1);var Ts=256,Rs=1024,ds=16384;var As="clear: bad arguments";function Yr(e,t){let{framebuffer:r=null,color:i=null,depth:s=null,stencil:o=null}=t||{},a={};r&&(a.framebuffer=r);let n=0;i&&(n|=ds,i!==!0&&(a.clearColor=i)),s&&(n|=Ts,s!==!0&&(a.clearDepth=s)),o&&(n|=Rs,s!==!0&&(a.clearStencil=s)),(0,mr.assert)(n!==0,As);let _=e.gl;H(_,a,()=>{_.clear(n)})}var Ne=1,Re=class extends I.Device{type="webgl";handle;features;limits;info;canvasContext;lost;_resolveContextLost;static isSupported(){return typeof WebGL2RenderingContext<"u"}static attach(t){if(t instanceof Re)return t;if(t?.device instanceof I.Device)return t.device;if(!hs(t))throw new Error("Invalid WebGL2RenderingContext");return new Re({gl:t})}static async create(t={}){I.log.groupCollapsed(Ne,"WebGLDevice created")();let r=[];t.debug&&r.push(pr()),t.spector&&r.push(hr()),typeof t.canvas=="string"&&r.push(I.CanvasContext.pageLoaded);let i=await Promise.allSettled(r);for(let a of i)a.status==="rejected"&&I.log.error(`Failed to initialize debug libraries ${a.reason}`)();if(I.log.probe(Ne+1,"DOM is loaded")(),t.gl?.device)return I.log.warn("reattaching existing device")(),Re.attach(t.gl);let s=new Re(t),o=`Created ${s.type}${s.debug?" debug":""} context: ${s.info.vendor}, ${s.info.renderer} for canvas: ${s.canvasContext.id}`;return I.log.probe(Ne,o)(),I.log.table(Ne,s.info)(),I.log.groupEnd(Ne)(),s}constructor(t){super({...t,id:t.id||(0,I.uid)("webgl-device")});let r=t.gl?.device;if(r)throw new Error(`WebGL context already attached to device ${r.id}`);let i=t.gl?.canvas||t.canvas;this.canvasContext=new je(this,{...t,canvas:i}),this.lost=new Promise(n=>{this._resolveContextLost=n});let s=t.gl||null;if(s||=qt(this.canvasContext.canvas,{...t,onContextLost:n=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."})}),!s)throw new Error("WebGL context creation failed");this.handle=s,this.gl=s,this.gl.device=this,this.gl._version=2,this.info=Jt(this.gl,this._extensions),this.limits=new ke(this.gl),this.features=new Ve(this.gl,this._extensions,this.props.disabledFeatures),this.props.initalizeFeatures&&this.features.initializeFeatures(),this.canvasContext.resize();let{enable:o=!0,copyState:a=!1}=t;gt(this.gl,{enable:o,copyState:a,log:(...n)=>I.log.log(1,...n)()}),t.debug&&(this.gl=br(this.gl,{...t,throwOnError:!0}),this.debug=!0,I.log.level=Math.max(I.log.level,1),I.log.warn("WebGL debug mode activated. Performance reduced.")()),t.spector&&(this.spectorJS=Sr({...this.props,canvas:this.handle.canvas}))}destroy(){}get isLost(){return this.gl.isContextLost()}getSize(){return[this.gl.drawingBufferWidth,this.gl.drawingBufferHeight]}isTextureFormatSupported(t){return We(this.gl,t,this._extensions)}isTextureFormatFilterable(t){return sr(this.gl,t,this._extensions)}isTextureFormatRenderable(t){return or(this.gl,t,this._extensions)}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createBuffer(t){let r=this._getBufferProps(t);return new P(this,r)}_createTexture(t){return new D(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new oe(this,t)}createShader(t){return new Je(this,t)}createFramebuffer(t){return new $(this,t)}createVertexArray(t){return new le(this,t)}createTransformFeedback(t){return new st(this,t)}createQuerySet(t){return new at(this,t)}createRenderPipeline(t){return new et(this,t)}beginRenderPass(t){return new Le(this,t)}createComputePipeline(t){throw new Error("ComputePipeline not supported in WebGL")}beginComputePass(t){throw new Error("ComputePass not supported in WebGL")}renderPass=null;createCommandEncoder(t){return new it(this,t)}submit(){this.renderPass?.end(),this.renderPass=null}readPixelsToArrayWebGL(t,r){return Vr(t,r)}readPixelsToBufferWebGL(t,r){return kr(t,r)}setParametersWebGL(t){W(this.gl,t)}getParametersWebGL(t){return Ue(this.gl,t)}withParametersWebGL(t,r){H(this.gl,t,r)}clearWebGL(t){Yr(this,t)}gl;debug=!1;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};_extensions={};_polyfilled=!1;spectorJS;loseDevice(){let t=!1,i=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return i&&(t=!0,i.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),t}pushState(){L(this.gl)}popState(){j(this.gl)}setSpectorMetadata(t,r){t.__SPECTOR_Metadata=r}getGLKey(t,r){r=r||this.gl2||this.gl;let i=Number(t);for(let s in r)if(r[s]===i)return`GL.${s}`;return String(t)}_constants;setConstantAttributeWebGL(t,r){let i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);let s=this._constants[t];switch(s&&ps(s,r)&&I.log.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:Ss(this,t,r);break;case Int32Array:Es(this,t,r);break;case Uint32Array:gs(this,t,r);break;default:(0,I.assert)(!1)}}getExtension(t){return X(this.gl,t,this._extensions),this._extensions}},te=Re;Pe(te,"type","webgl");function hs(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&Number.isFinite(e._version))}function Ss(e,t,r){switch(r.length){case 1:e.gl.vertexAttrib1fv(t,r);break;case 2:e.gl.vertexAttrib2fv(t,r);break;case 3:e.gl.vertexAttrib3fv(t,r);break;case 4:e.gl.vertexAttrib4fv(t,r);break;default:(0,I.assert)(!1)}}function Es(e,t,r){e.gl.vertexAttribI4iv(t,r)}function gs(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function ps(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var nt=h($r(),1),Zr=h(De(),1);function _t(e){let t=e.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),r=new nt.Model(e,{vs:`#version 300 es
|
|
7
|
+
"use strict";var __exports__=(()=>{var se=Object.create;var R=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var le=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var _=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),fe=(e,n)=>{for(var t in n)R(e,t,{get:n[t],enumerable:!0})},P=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of le(n))!ue.call(e,a)&&a!==t&&R(e,a,{get:()=>n[a],enumerable:!(o=ce(n,a))||o.enumerable});return e},v=(e,n,t)=>(P(e,n,"default"),t&&P(t,n,"default")),D=(e,n,t)=>(t=e!=null?se(de(e)):{},P(n||!e||!e.__esModule?R(t,"default",{value:e,enumerable:!0}):t,e)),he=e=>P(R({},"__esModule",{value:!0}),e);var z=_((ye,W)=>{W.exports=globalThis.deck});var Y=_((De,Q)=>{Q.exports=globalThis.luma});var ee=_((T,$)=>{(function(e,n){typeof T=="object"&&typeof $<"u"?n(T):typeof define=="function"&&define.amd?define(["exports"],n):n(e.esriLoader=e.esriLoader||{})})(T,function(e){"use strict";var n=typeof window<"u",t={Promise:n?window.Promise:void 0},o="4.25",a="next";function c(r){if(r.toLowerCase()===a)return a;var i=r&&r.match(/^(\d)\.(\d+)/);return i&&{major:parseInt(i[1],10),minor:parseInt(i[2],10)}}function d(r){return r===void 0&&(r=o),"https://js.arcgis.com/".concat(r,"/")}function h(r){r===void 0&&(r=o);var i=d(r),s=c(r);if(s!==a&&s.major===3){var l=s.minor<=10?"js/":"";return"".concat(i).concat(l,"esri/css/esri.css")}else return"".concat(i,"esri/themes/light/main.css")}function w(r){var i=document.createElement("link");return i.rel="stylesheet",i.href=r,i}function k(r,i){if(i){var s=document.querySelector(i);s.parentNode.insertBefore(r,s)}else document.head.appendChild(r)}function x(r){return document.querySelector('link[href*="'.concat(r,'"]'))}function A(r){return!r||c(r)?h(r):r}function b(r,i){var s=A(r),l=x(s);return l||(l=w(s),k(l,i)),l}var L={};function te(r){var i=document.createElement("script");return i.type="text/javascript",i.src=r,i.setAttribute("data-esri-loader","loading"),i}function J(r,i,s){var l;s&&(l=ne(r,s));var u=function(){i(r),r.removeEventListener("load",u,!1),l&&r.removeEventListener("error",l,!1)};r.addEventListener("load",u,!1)}function ne(r,i){var s=function(l){i(l.error||new Error("There was an error attempting to load ".concat(r.src))),r.removeEventListener("error",s,!1)};return r.addEventListener("error",s,!1),s}function oe(r){r===void 0&&(r={}),L=r}function q(){return document.querySelector("script[data-esri-loader]")}function C(){var r=window.require;return r&&r.on}function j(r){r===void 0&&(r={});var i={};[L,r].forEach(function(u){for(var f in u)Object.prototype.hasOwnProperty.call(u,f)&&(i[f]=u[f])});var s=i.version,l=i.url||d(s);return new t.Promise(function(u,f){var p=q();if(p){var N=p.getAttribute("src");N!==l?f(new Error("The ArcGIS API for JavaScript is already loaded (".concat(N,")."))):C()?u(p):J(p,u,f)}else if(C())f(new Error("The ArcGIS API for JavaScript is already loaded."));else{var V=i.css;if(V){var ae=V===!0;b(ae?s:V,i.insertCssBefore)}p=te(l),J(p,function(){p.setAttribute("data-esri-loader","loaded"),u(p)},f),document.body.appendChild(p)}})}function H(r){return new t.Promise(function(i,s){var l=window.require.on("error",s);window.require(r,function(){for(var u=[],f=0;f<arguments.length;f++)u[f]=arguments[f];l.remove(),i(u)})})}function ie(r,i){if(i===void 0&&(i={}),C())return H(r);var s=q(),l=s&&s.getAttribute("src");return!i.url&&l&&(i.url=l),j(i).then(function(){return H(r)})}e.utils=t,e.loadModules=ie,e.getScript=q,e.isLoaded=C,e.loadScript=j,e.setDefaultOptions=oe,e.loadCss=b,Object.defineProperty(e,"__esModule",{value:!0})})});var S={};fe(S,{loadArcGISModules:()=>ve});var m={},X=D(z(),1);v(m,D(z(),1));if(!X.Layer)throw new Error("@deck.gl/core is not found");v(S,m);var K={layers:{},layerFilter:{},parameters:{},effects:{},pickingRadius:{},onBeforeRender:{},onAfterRender:{},onClick:{},onHover:{},onDragStart:{},onDrag:{},onDragEnd:{},onError:{},debug:{},drawPickingColors:{},getCursor:{},getTooltip:{}};function F(e){return e.createSubclass({properties:K,constructor(){this._callbacks={},this.watch(Object.keys(K),(t,o,a)=>{this.emit("change",{[a]:t})})},on(t,o){this._callbacks[t]=this._callbacks[t]||[],this._callbacks[t].push(o)},emit(t,o){let a=this._callbacks[t];if(a)for(let c of a)c(o)},toJSON(){let t={};for(let o of this.keys())this[o]!==void 0&&(t[o]=this[o]);return t}})}function G(e,n,t){return n.createSubclass({properties:{deck:{},blendMode:{},effect:{}},constructor(){this.deck=new e},createLayerView(o){return o.type==="2d"?new t({view:o,layer:this}):(console.error("DeckLayer does not support SceneView at the moment. Use DeckRenderer instead."),null)}})}var I=D(Y(),1),Z=D(z(),1);async function me(e){return new Promise(n=>{let t=new Z.Deck({controller:!1,gl:e,parameters:{depthCompare:"less-equal"},width:null,height:null,onDeviceInitialized:o=>{n({deckInstance:t,device:o})}})})}async function E(e){let{deckInstance:n,device:t}=await me(e),o=t.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),a=new I.Model(t,{vs:`#version 300 es
|
|
9
8
|
in vec2 pos;
|
|
10
9
|
out vec2 v_texcoord;
|
|
11
10
|
void main(void) {
|
|
@@ -23,6 +22,6 @@ void main(void) {
|
|
|
23
22
|
imageColor.rgb *= imageColor.a;
|
|
24
23
|
fragColor = imageColor;
|
|
25
24
|
}
|
|
26
|
-
`,bindings:{deckglTexture:
|
|
25
|
+
`,bindings:{deckglTexture:o},parameters:{depthWriteEnabled:!0,depthCompare:"less-equal",blendColorSrcFactor:"one",blendColorDstFactor:"one-minus-src-alpha",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one-minus-src-alpha",blendColorOperation:"add",blendAlphaOperation:"add"},geometry:new I.Geometry({topology:"triangle-strip",attributes:{pos:{size:2,value:new Int8Array([-1,-1,1,-1,-1,1,-1,1,1,1,1,-1])}}}),vertexCount:6}),c=t.createFramebuffer({id:"deckfbo",width:1,height:1,colorAttachments:[o],depthStencilAttachment:"depth16unorm"});return n.setProps({_framebuffer:c,_customRender:d=>{d==="arcgis"?n._drawLayers(d):this.redraw()}}),{deck:n,texture:o,fbo:c,model:a}}function M(e,n){let{model:t,deck:o,fbo:a}=e,c=t.device,d=c.getParametersWebGL(36006),{width:h,height:w,...k}=n,x=window.devicePixelRatio,A=Math.round(h*x),b=Math.round(w*x);a.resize({width:A,height:b}),o.setProps({viewState:k}),o.redraw("arcgis");let L=c.beginRenderPass({framebuffer:d,parameters:{viewport:[0,0,A,b]},clearColor:!1,clearDepth:!1});try{t.draw(L)}finally{L.end()}}function g(e){e.deck.finalize(),e.model.destroy(),e.fbo.destroy(),e.texture.destroy()}function B(e){return e.createSubclass({properties:{cancelInitialization:null,resources:null},async attach(){let n=this.context,t=!1;this.cancelInitialization=()=>t=!0;let o=await E.call(this,n);if(t){g(o);return}this.resources=o,this.layer.deck.on("change",a=>o.deck.setProps(a)),o.deck.setProps(this.layer.deck.toJSON())},redraw(){this.requestRender()},detach(){this.cancelInitialization?.(),this.resources&&(g(this.resources),this.resources=null)},render(n){if(!this.resources)return;let[t,o]=this.view.state.size,a=n.state;M(this.resources,{width:t,height:o,latitude:this.view.center.latitude,longitude:this.view.center.longitude,zoom:this.view.featuresTilingScheme.scaleToLevel(a.scale),bearing:-a.rotation,pitch:0})}})}function pe(e,n){let t=Math.sqrt(1+n**2),o=e/2/180*Math.PI;return t/2/Math.tan(o)}function O(e,n){class t{constructor(a,c){this.resources=null,this.cancelInitialization=null,this.view=a,this.deck=new e(c)}async setup(a){let c=a.gl,d=!1;this.cancelInitialization=()=>d=!0;let h=await E.call(this,c);if(d){g(h);return}this.deck.on("change",w=>h.deck.setProps(w)),h.deck.setProps(this.deck.toJSON()),this.resources=h}dispose(){this.cancelInitialization?.(),this.resources&&g(this.resources)}redraw(){n.requestRender(this.view)}render(){let[a,c]=this.view.size;M(this.resources,{width:a,height:c,latitude:this.view.center.latitude,longitude:this.view.center.longitude,altitude:pe(this.view.camera.fov,a/c),zoom:this.view.zoom,bearing:this.view.camera.heading,pitch:this.view.camera.tilt})}}return t}var U=D(ee(),1),y;async function ve(e,n){let t=Array.isArray(e)?null:e;return await we(t,n),Array.isArray(e)?(0,U.loadModules)(e,n).then(o=>({...y,modules:o})):y}async function we(e,n){if(y)return y;if(e){let d=e.layers.Layer,h=e.core.Accessor,w=e.views["2d"].layers.BaseLayerViewGL2D,k=e.views["3d"].externalRenderers;return re(d,h,w,k)}let[t,o,a,c]=await(0,U.loadModules)(["esri/layers/Layer","esri/core/Accessor","esri/views/2d/layers/BaseLayerViewGL2D","esri/views/3d/externalRenderers"],n);return re(t,o,a,c)}function re(e,n,t,o){let a=F(n),c=B(t),d=G(a,e,c),h=O(a,o);return y={DeckLayer:d,DeckRenderer:h},y}return he(S);})();
|
|
27
26
|
return __exports__;
|
|
28
27
|
});
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Use deck.gl as a custom ArcGIS API for JavaScript layer",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "9.0.0-beta.
|
|
6
|
+
"version": "9.0.0-beta.11",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -36,18 +36,17 @@
|
|
|
36
36
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@luma.gl/constants": "^9.0.
|
|
40
|
-
"
|
|
41
|
-
"esri-loader": "^3.3.0"
|
|
39
|
+
"@luma.gl/constants": "^9.0.11",
|
|
40
|
+
"esri-loader": "^3.7.0"
|
|
42
41
|
},
|
|
43
42
|
"peerDependencies": {
|
|
44
43
|
"@arcgis/core": "^4.0.0",
|
|
45
44
|
"@deck.gl/core": "^9.0.0-beta",
|
|
46
|
-
"@luma.gl/core": "^9.0.
|
|
47
|
-
"@luma.gl/engine": "^9.0.
|
|
45
|
+
"@luma.gl/core": "^9.0.0",
|
|
46
|
+
"@luma.gl/engine": "^9.0.0"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
50
49
|
"@arcgis/core": "^4.21.0"
|
|
51
50
|
},
|
|
52
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "d8a3f5bdb644f85caba9d5c1e74baff8f8a3d439"
|
|
53
52
|
}
|
package/src/commons.ts
CHANGED
|
@@ -4,7 +4,6 @@ import {GL} from '@luma.gl/constants';
|
|
|
4
4
|
import {Model, Geometry} from '@luma.gl/engine';
|
|
5
5
|
import {Deck} from '@deck.gl/core';
|
|
6
6
|
import type {Device, Texture, Framebuffer} from '@luma.gl/core';
|
|
7
|
-
import type {WebGLDevice} from '@luma.gl/webgl';
|
|
8
7
|
|
|
9
8
|
interface Renderer {
|
|
10
9
|
redraw: () => void;
|
|
@@ -17,7 +16,40 @@ export type RenderResources = {
|
|
|
17
16
|
fbo: Framebuffer;
|
|
18
17
|
};
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
async function createDeckInstance(gl: WebGL2RenderingContext): Promise<{
|
|
20
|
+
deckInstance: Deck;
|
|
21
|
+
device: Device;
|
|
22
|
+
}> {
|
|
23
|
+
return new Promise(resolve => {
|
|
24
|
+
const deckInstance = new Deck({
|
|
25
|
+
// Input is handled by the ArcGIS API for JavaScript.
|
|
26
|
+
controller: false,
|
|
27
|
+
|
|
28
|
+
// We use the same WebGL context as the ArcGIS API for JavaScript.
|
|
29
|
+
gl,
|
|
30
|
+
|
|
31
|
+
// We need depth testing in general; we don't know what layers might be added to the deck.
|
|
32
|
+
parameters: {
|
|
33
|
+
depthCompare: 'less-equal'
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// To disable canvas resizing, since the FBO is owned by the ArcGIS API for JavaScript.
|
|
37
|
+
width: null,
|
|
38
|
+
height: null,
|
|
39
|
+
|
|
40
|
+
onDeviceInitialized: (device: Device) => {
|
|
41
|
+
resolve({deckInstance, device});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function initializeResources(
|
|
48
|
+
this: Renderer,
|
|
49
|
+
gl: WebGL2RenderingContext
|
|
50
|
+
): Promise<RenderResources> {
|
|
51
|
+
const {deckInstance, device} = await createDeckInstance(gl);
|
|
52
|
+
|
|
21
53
|
const texture = device.createTexture({
|
|
22
54
|
format: 'rgba8unorm',
|
|
23
55
|
width: 1,
|
|
@@ -58,7 +90,13 @@ void main(void) {
|
|
|
58
90
|
},
|
|
59
91
|
parameters: {
|
|
60
92
|
depthWriteEnabled: true,
|
|
61
|
-
depthCompare: 'less-equal'
|
|
93
|
+
depthCompare: 'less-equal',
|
|
94
|
+
blendColorSrcFactor: 'one',
|
|
95
|
+
blendColorDstFactor: 'one-minus-src-alpha',
|
|
96
|
+
blendAlphaSrcFactor: 'one',
|
|
97
|
+
blendAlphaDstFactor: 'one-minus-src-alpha',
|
|
98
|
+
blendColorOperation: 'add',
|
|
99
|
+
blendAlphaOperation: 'add'
|
|
62
100
|
},
|
|
63
101
|
geometry: new Geometry({
|
|
64
102
|
topology: 'triangle-strip',
|
|
@@ -73,31 +111,14 @@ void main(void) {
|
|
|
73
111
|
id: 'deckfbo',
|
|
74
112
|
width: 1,
|
|
75
113
|
height: 1,
|
|
76
|
-
colorAttachments: [texture]
|
|
114
|
+
colorAttachments: [texture],
|
|
115
|
+
depthStencilAttachment: 'depth16unorm'
|
|
77
116
|
});
|
|
78
117
|
|
|
79
|
-
|
|
80
|
-
// The view state will be set dynamically to track the MapView current extent.
|
|
81
|
-
viewState: {},
|
|
82
|
-
|
|
83
|
-
// Input is handled by the ArcGIS API for JavaScript.
|
|
84
|
-
controller: false,
|
|
85
|
-
|
|
86
|
-
// We use the same WebGL context as the ArcGIS API for JavaScript.
|
|
87
|
-
device,
|
|
88
|
-
|
|
89
|
-
// We need depth testing in general; we don't know what layers might be added to the deck.
|
|
90
|
-
parameters: {
|
|
91
|
-
depthTest: true
|
|
92
|
-
},
|
|
93
|
-
|
|
118
|
+
deckInstance.setProps({
|
|
94
119
|
// This deck renders into an auxiliary framebuffer.
|
|
95
120
|
_framebuffer: fbo,
|
|
96
121
|
|
|
97
|
-
// To disable canvas resizing, since the FBO is owned by the ArcGIS API for JavaScript.
|
|
98
|
-
width: null,
|
|
99
|
-
height: null,
|
|
100
|
-
|
|
101
122
|
_customRender: redrawReason => {
|
|
102
123
|
if (redrawReason === 'arcgis') {
|
|
103
124
|
deckInstance._drawLayers(redrawReason);
|
|
@@ -125,7 +146,8 @@ export function render(
|
|
|
125
146
|
) {
|
|
126
147
|
const {model, deck, fbo} = resources;
|
|
127
148
|
const device = model.device;
|
|
128
|
-
|
|
149
|
+
// @ts-ignore device.getParametersWebGL should return `any` not `void`?
|
|
150
|
+
const screenFbo: Framebuffer = device.getParametersWebGL(GL.FRAMEBUFFER_BINDING);
|
|
129
151
|
const {width, height, ...viewState} = viewport;
|
|
130
152
|
|
|
131
153
|
/* global window */
|
|
@@ -144,19 +166,14 @@ export function render(
|
|
|
144
166
|
const textureToScreenPass = device.beginRenderPass({
|
|
145
167
|
framebuffer: screenFbo,
|
|
146
168
|
parameters: {viewport: [0, 0, pixelWidth, pixelHeight]},
|
|
147
|
-
clearColor:
|
|
148
|
-
clearDepth:
|
|
169
|
+
clearColor: false,
|
|
170
|
+
clearDepth: false
|
|
149
171
|
});
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
},
|
|
156
|
-
() => {
|
|
157
|
-
model.draw(textureToScreenPass);
|
|
158
|
-
}
|
|
159
|
-
);
|
|
172
|
+
try {
|
|
173
|
+
model.draw(textureToScreenPass);
|
|
174
|
+
} finally {
|
|
175
|
+
textureToScreenPass.end();
|
|
176
|
+
}
|
|
160
177
|
}
|
|
161
178
|
|
|
162
179
|
export function finalizeResources(resources: RenderResources) {
|
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
import {WebGLDevice} from '@luma.gl/webgl';
|
|
2
1
|
import {initializeResources, render, finalizeResources} from './commons';
|
|
3
2
|
|
|
4
3
|
export default function createDeckLayerView2D(BaseLayerViewGL2D) {
|
|
5
4
|
return BaseLayerViewGL2D.createSubclass({
|
|
6
5
|
properties: {
|
|
6
|
+
cancelInitialization: null,
|
|
7
7
|
resources: null
|
|
8
8
|
},
|
|
9
9
|
|
|
10
10
|
// Attach is called as soon as the layer view is ready to start rendering.
|
|
11
|
-
attach() {
|
|
11
|
+
async attach() {
|
|
12
12
|
// We use a full-screen quad and shaders to composite the frame rendered
|
|
13
13
|
// with deck.gl on top of the MapView. Composition uses the MapView context.
|
|
14
14
|
const gl = this.context;
|
|
15
|
-
const device = WebGLDevice.attach(gl);
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
let cancelled = false;
|
|
17
|
+
this.cancelInitialization = () => (cancelled = true);
|
|
18
|
+
const resources = await initializeResources.call(this, gl);
|
|
19
|
+
// If the layer got detached while awaiting, do not proceed
|
|
20
|
+
if (cancelled) {
|
|
21
|
+
finalizeResources(resources);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.resources = resources;
|
|
18
25
|
|
|
19
26
|
// Update deck props
|
|
20
|
-
this.layer.deck.on('change', props =>
|
|
27
|
+
this.layer.deck.on('change', props => resources.deck.setProps(props));
|
|
21
28
|
|
|
22
29
|
// We need to start drawing the deck.gl layer immediately.
|
|
23
|
-
|
|
30
|
+
resources.deck.setProps(this.layer.deck.toJSON());
|
|
24
31
|
},
|
|
25
32
|
|
|
26
33
|
redraw() {
|
|
@@ -29,12 +36,19 @@ export default function createDeckLayerView2D(BaseLayerViewGL2D) {
|
|
|
29
36
|
|
|
30
37
|
// Called when the layer must be destroyed.
|
|
31
38
|
detach() {
|
|
32
|
-
|
|
33
|
-
this.resources
|
|
39
|
+
this.cancelInitialization?.();
|
|
40
|
+
if (this.resources) {
|
|
41
|
+
finalizeResources(this.resources);
|
|
42
|
+
this.resources = null;
|
|
43
|
+
}
|
|
34
44
|
},
|
|
35
45
|
|
|
36
46
|
// Called every time that the layer view must be rendered.
|
|
37
47
|
render(renderParameters) {
|
|
48
|
+
if (!this.resources) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
38
52
|
const [width, height] = this.view.state.size;
|
|
39
53
|
// The view state must be kept in-sync with the MapView of the ArcGIS API.
|
|
40
54
|
const state = renderParameters.state;
|