@luma.gl/webgl 9.1.0-beta.11 → 9.1.0-beta.15
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/adapter/webgl-adapter.d.ts +2 -1
- package/dist/adapter/webgl-adapter.d.ts.map +1 -1
- package/dist/adapter/webgl-adapter.js +8 -2
- package/dist/adapter/webgl-adapter.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +14 -9
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/dist.dev.js +11 -4
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +11 -4
- package/dist/index.cjs.map +2 -2
- package/package.json +3 -3
- package/src/adapter/webgl-adapter.ts +10 -3
- package/src/adapter/webgl-device.ts +21 -14
package/dist/dist.min.js
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
else if (typeof exports === 'object') exports['luma'] = factory();
|
|
6
6
|
else root['luma'] = factory();})(globalThis, function () {
|
|
7
7
|
var __exports__=(()=>{var Rr=Object.create;var le=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty;var hr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),gr=(e,t)=>{for(var r in t)le(e,r,{get:t[r],enumerable:!0})},ce=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of dr(t))!Er.call(e,s)&&s!==r&&le(e,s,{get:()=>t[s],enumerable:!(i=Ar(t,s))||i.enumerable});return e},Te=(e,t,r)=>(ce(e,t,"default"),r&&ce(r,t,"default")),S=(e,t,r)=>(r=e!=null?Rr(Sr(e)):{},ce(t||!e||!e.__esModule?le(r,"default",{value:e,enumerable:!0}):r,e)),Cr=e=>ce(le({},"__esModule",{value:!0}),e);var d=hr((Fi,qe)=>{qe.exports=globalThis.luma});var ne={};gr(ne,{Accessor:()=>K,WEBGLBuffer:()=>B,WEBGLCommandEncoder:()=>G,WEBGLFramebuffer:()=>M,WEBGLRenderPass:()=>J,WEBGLRenderPipeline:()=>L,WEBGLSampler:()=>w,WEBGLShader:()=>q,WEBGLTexture:()=>P,WEBGLTransformFeedback:()=>ee,WEBGLVertexArray:()=>k,WebGLCanvasContext:()=>j,WebGLDevice:()=>H,WebGLStateTracker:()=>O,getGLParameters:()=>Z,getShaderLayoutFromGLSL:()=>Fe,resetGLParameters:()=>fe,setDeviceParameters:()=>Ie,setGLParameters:()=>N,webgl2Adapter:()=>nr,withDeviceParameters:()=>xt,withGLParameters:()=>X});Te(ne,S(d(),1));var D=S(d(),1);var v=S(d(),1);var W;(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"})(W||(W={}));var re={[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},g=(e,t,r)=>t?e.enable(r):e.disable(r),Je=(e,t,r)=>e.hint(r,t),I=(e,t,r)=>e.pixelStorei(r,t),Le=(e,t,r)=>{let i=r===36006?36009:36008;return e.bindFramebuffer(i,t)},te=(e,t,r)=>{let s={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];e.bindBuffer(s,t)};function Ue(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}var Ge={[3042]:g,[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]:g,[2885]:(e,t)=>e.cullFace(t),[2929]:g,[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]:g,[35723]:Je,[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]:Le,[36010]:Le,[34964]:te,[36662]:te,[36663]:te,[35053]:te,[35055]:te,[2886]:(e,t)=>e.frontFace(t),[33170]:Je,[2849]:(e,t)=>e.lineWidth(t),[32823]:g,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:g,[32926]:g,[32928]:g,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:g,[3088]:(e,t)=>e.scissor(...t),[2960]:g,[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]:g,[10754]:g,[12288]:g,[12289]:g,[12290]:g,[12291]:g,[12292]:g,[12293]:g,[12294]:g,[12295]:g,[3333]:I,[3317]:I,[37440]:I,[37441]:I,[37443]:I,[3330]:I,[3332]:I,[3331]:I,[3314]:I,[32878]:I,[3316]:I,[3315]:I,[32877]:I,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[0],t[1]||!1),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=Ue(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=Ue(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,a,_]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,o,a,_)},stencilOp:(e,t)=>{t=Ue(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,a,_]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,o,a,_)},viewport:(e,t)=>e.viewport(...t)};function h(e,t,r){return t[e]!==void 0?t[e]:r[e]}var et={blendEquation:(e,t,r)=>e.blendEquationSeparate(h(32777,t,r),h(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(h(32969,t,r),h(32968,t,r),h(32971,t,r),h(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(h(32824,t,r),h(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(h(32938,t,r),h(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,h(2962,t,r),h(2967,t,r),h(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,h(34816,t,r),h(36003,t,r),h(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,h(2964,t,r),h(2965,t,r),h(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,h(34817,t,r),h(34818,t,r),h(34819,t,r))},ye={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]})},u=(e,t)=>e.isEnabled(t),we={[3042]:u,[2884]:u,[2929]:u,[3024]:u,[32823]:u,[32926]:u,[32928]:u,[3089]:u,[2960]:u,[35977]:u},tt=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 N(e,t){if(br(t))return;let r={};for(let s in t){let o=Number(s),a=Ge[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=et[s];o(e,t,i)}}function Z(e,t=re){if(typeof t=="number"){let s=t,o=we[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=we[s];i[s]=o?o(e,Number(s)):e.getParameter(Number(s))}return i}function fe(e){N(e,re)}function br(e){for(let t in e)return!1;return!0}function rt(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 O=class{static get(t){return t.state}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(t,r){this.gl=t,this.log=r?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(t={}){this.stateStack.push({})}pop(){let t=this.stateStack[this.stateStack.length-1];N(this.gl,t),this.stateStack.pop()}trackState(t,r){if(this.cache=r.copyState?Z(t):Object.assign({},re),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.state=this,Ir(t);for(let i in ye){let s=ye[i];pr(t,i,s)}it(t,"getParameter"),it(t,"isEnabled")}_updateCache(t){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let o in t){let a=t[o],_=this.cache[o];rt(a,_)||(r=!0,i=_,s&&!(o in s)&&(s[o]=_),this.cache[o]=a)}return{valueChanged:r,oldValue:i}}};function it(e,t){let r=e[t].bind(e);e[t]=function(s){if(s===void 0||tt.has(s))return r(s);let o=O.get(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 pr(e,t,r){if(!e[t])return;let i=e[t].bind(e);e[t]=function(...o){let a=O.get(e),{valueChanged:_,oldValue:n}=r(a._updateCache,...o);return _&&i(...o),n},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function Ir(e){let t=e.useProgram.bind(e);e.useProgram=function(i){let s=O.get(e);s.program!==i&&(t(i),s.program=i)}}function st(e,t,r){let i="",s={preserveDrawingBuffer:!0,...r},o=null;if(o||=e.getContext("webgl2",s),s.failIfMajorPerformanceCaveat&&(i||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow."),!o&&!r.failIfMajorPerformanceCaveat&&(s.failIfMajorPerformanceCaveat=!1,o=e.getContext("webgl2",s),o.luma||={},o.luma.softwareRenderer=!0),o||(o=e.getContext("webgl",{}),o&&(o=null,i||="Your browser only supports WebGL1")),!o)throw i||="Your browser does not support WebGL",new Error(`Failed to create WebGL context: ${i}`);let{onContextLost:a,onContextRestored:_}=t;return e.addEventListener("webglcontextlost",n=>a(n),!1),e.addEventListener("webglcontextrestored",n=>_(n),!1),o.luma||={},o}function x(e,t,r){return r[t]===void 0&&(r[t]=e.getExtension(t)||null),r[t]}function ot(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),_=o||r,n=a||i,c=e.getParameter(7938),l=at(_,n),T=Nr(_,n),f=Or(_,n);return{type:"webgl",gpu:l,gpuType:f,gpuBackend:T,vendor:_,renderer:n,version:c,shadingLanguage:"glsl",shadingLanguageVersion:300}}function at(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 Nr(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}function Or(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(at(e,t)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}var At=S(d(),1);var Xe=S(d(),1);function Re(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 ie="WEBGL_compressed_texture_s3tc",se="WEBGL_compressed_texture_s3tc_srgb",m="EXT_texture_compression_rgtc",Q="EXT_texture_compression_bptc",Fr="WEBGL_compressed_texture_etc",Mr="WEBGL_compressed_texture_astc",Br="WEBGL_compressed_texture_etc1",Pr="WEBGL_compressed_texture_pvrtc",Dr="WEBGL_compressed_texture_atc",_t="EXT_texture_norm16",nt="EXT_render_snorm",ur="EXT_color_buffer_float",Ae={"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":[nt],"norm16-renderable-webgl":[_t],"snorm16-renderable-webgl":[_t,nt],"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":[ie,se,m,Q],"texture-compression-bc5-webgl":[m],"texture-compression-bc7-webgl":[Q],"texture-compression-etc2":[Fr],"texture-compression-astc":[Mr],"texture-compression-etc1-webgl":[Br],"texture-compression-pvrtc-webgl":[Pr],"texture-compression-atc-webgl":[Dr]};function ct(e){return e in Ae}function lt(e,t,r){return(Ae[t]||[]).every(s=>x(e,s,r))}var ve={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0},"r16unorm-webgl":{gl:33322,rb:!0},"r16snorm-webgl":{gl:36760},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0},"rg16unorm-webgl":{gl:33324},"rg16snorm-webgl":{gl:36761},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326},rgb9e5ufloat:{gl:35901},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},"rgb10a2uint-webgl":{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852},"rgb16snorm-webgl":{gl:36762},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842},"rgba16unorm-webgl":{gl:32859,rb:!0},"rgba16snorm-webgl":{gl:36763},"rgb32float-webgl":{gl:34837,x:ur,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:ie},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:se},"bc1-rgba-unorm":{gl:33777,x:ie},"bc1-rgba-unorm-srgb":{gl:35916,x:se},"bc2-rgba-unorm":{gl:33778,x:ie},"bc2-rgba-unorm-srgb":{gl:35918,x:se},"bc3-rgba-unorm":{gl:33779,x:ie},"bc3-rgba-unorm-srgb":{gl:35919,x:se},"bc4-r-unorm":{gl:36283,x:m},"bc4-r-snorm":{gl:36284,x:m},"bc5-rg-unorm":{gl:36285,x:m},"bc5-rg-snorm":{gl:36286,x:m},"bc6h-rgb-ufloat":{gl:36495,x:Q},"bc6h-rgb-float":{gl:36494,x:Q},"bc7-rgba-unorm":{gl:36492,x:Q},"bc7-rgba-unorm-srgb":{gl:36493,x:Q},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37819},"astc-10x5-unorm-srgb":{gl:37851},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rbg2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}};function Tt(e,t,r){let i=t.create,s=ve[t.format];return s?.gl===void 0&&(i=!1),s?.x&&(i=i&&Boolean(x(e,s.x,r))),{format:t.format,create:i&&t.create,render:i&&t.render,filter:i&&t.filter,blend:i&&t.blend,store:i&&t.store}}function de(e){let t=ve[e],r=Ur(e),i=(0,Xe.decodeTextureFormat)(e);return{internalFormat:r,format:t?.dataFormat||xr(i.channels,i.integer,i.normalized,r),type:i.dataType?Re(i.dataType):t?.types?.[0]||5121,compressed:i.compressed||!1}}function ft(e){switch((0,Xe.decodeTextureFormat)(e).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw new Error(`Not a depth stencil format: ${e}`)}}function xr(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;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}function Ur(e){let r=ve[e]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${e}`);return r}var Rt={"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"},Se=class extends At.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),ct(t)&<(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(Rt),...Object.keys(Ae)]}getWebGLFeature(t){let r=Rt[t];return Boolean(typeof r=="string"?x(this.gl,r,this.extensions):r)}};var dt=S(d(),1);var Ee=class extends dt.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]||0}};var Et=S(d(),1);var St=S(d(),1);var M=class extends St.Framebuffer{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(t,r){super(t,r);let i=r.handle===null;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(),this.updateAttachments())}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let t=this.gl.bindFramebuffer(36160,this.handle);for(let r=0;r<this.colorAttachments.length;++r){let i=this.colorAttachments[r];if(i){let s=36064+r;this._attachTextureView(s,i)}}if(this.depthStencilAttachment){let r=ft(this.depthStencilAttachment.props.format);this._attachTextureView(r,this.depthStencilAttachment)}if(this.device.props.debug){let r=this.gl.checkFramebufferStatus(36160);if(r!==36053)throw new Error(`Framebuffer ${wr(r)}`)}this.gl.bindFramebuffer(36160,t)}_attachTextureView(t,r){let{gl:i}=this.device,{texture:s}=r,o=r.props.baseMipLevel,a=r.props.baseArrayLayer;switch(i.bindTexture(s.glTarget,s.handle),s.glTarget){case 35866:case 32879:i.framebufferTextureLayer(36160,t,s.handle,o,a);break;case 34067:let _=yr(a);i.framebufferTexture2D(36160,t,_,s.handle,o);break;case 3553:i.framebufferTexture2D(36160,t,3553,s.handle,o);break;default:throw new Error("Illegal texture type")}i.bindTexture(s.glTarget,null)}};function yr(e){return e<34069?e+34069:e}function wr(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 j=class extends Et.CanvasContext{device;format="rgba8unorm";depthStencilFormat="depth24plus";presentationSize;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}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 M(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 Y=S(d(),1);async function he(e,t){let r=document.getElementsByTagName("head")[0];if(!r)throw new Error("loadScript");let i=document.createElement("script");return i.setAttribute("type","text/javascript"),i.setAttribute("src",e),t&&(i.id=t),new Promise((s,o)=>{i.onload=s,i.onerror=a=>o(new Error(`Unable to load script '${e}': ${a}`)),r.appendChild(i)})}var Xr=1,F=null,ht=!1,ge={debugSpectorJS:Y.log.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0};async function gt(e){if(!globalThis.SPECTOR)try{await he(e.debugSpectorJSUrl||ge.debugSpectorJSUrl)}catch(t){Y.log.warn(String(t))}}function Ct(e){if(e={...ge,...e},!e.debugSpectorJS)return null;if(!F&&globalThis.SPECTOR&&!globalThis.luma?.spector){Y.log.probe(Xr,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:t}=globalThis.SPECTOR;F=new t,globalThis.luma&&(globalThis.luma.spector=F)}if(!F)return null;if(ht||(ht=!0,F.spyCanvases(),F?.onCaptureStarted.add(t=>Y.log.info("Spector capture started:",t)()),F?.onCapture.add(t=>{Y.log.info("Spector capture complete:",t)(),F?.getResultUI(),F?.resultView.display(),F?.resultView.addCapture(t)})),e.gl){let t=e.gl,r=t.device;F?.startCapture(e.gl,500),t.device=r,new Promise(i=>setTimeout(i,2e3)).then(i=>{Y.log.info("Spector capture stopped after 2 seconds")(),F?.stopCapture()})}return F}var ae=S(d(),1);var is=globalThis.document||{},ss=globalThis.process||{},os=globalThis.console,bt=globalThis.navigator||{};function Ce(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 oe(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||Ce()}function He(e){return!e&&!oe()?"Node":Ce(e)?"Electron":(e||bt.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var vr="https://unpkg.com/webgl-debug@2.0.1/index.js";function It(e){return e.luma=e.luma||{},e.luma}async function Nt(){oe()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await he(vr))}function Ot(e,t={}){return t.debugWebGL||t.traceWebGL?Wr(e,t):Hr(e)}function Hr(e){let t=It(e);return t.realContext?t.realContext:e}function Wr(e,t){if(!globalThis.WebGLDebugUtils)return ae.log.warn("webgl-debug not loaded")(),e;let r=It(e);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...W,...e});let i=globalThis.WebGLDebugUtils.makeDebugContext(e,Vr.bind(null,t),kr.bind(null,t));for(let a in W)!(a in i)&&typeof W[a]=="number"&&(i[a]=W[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 Vr(e,t,r,i){i=Array.from(i).map(_=>_===void 0?"undefined":_);let s=globalThis.WebGLDebugUtils.glEnumToString(t),o=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),a=`${s} in gl.${r}(${o})`;ae.log.error(a)();debugger}function kr(e,t,r){let i="";ae.log.level>=1&&(i=pt(t,r),e.traceWebGL&&ae.log.log(1,i)());for(let s of r)if(s===void 0){i=i||pt(t,r);debugger}}var We={};function Ft(e="id"){We[e]=We[e]||1;let t=We[e]++;return`${e}-${t}`}var V=S(d(),1);var B=class extends V.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=Kr(this.props.usage),this.glUsage=Yr(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){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 Kr(e){return e&V.Buffer.INDEX?34963:e&V.Buffer.VERTEX?34962:e&V.Buffer.UNIFORM?35345:34962}function Yr(e){return e&V.Buffer.INDEX||e&V.Buffer.VERTEX?35044:e&V.Buffer.UNIFORM?35048:35044}var _e=S(d(),1);function Bt(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:Mt(T),lineNum:0,linePos:0});continue}let[o,a,_,...n]=s,c=parseInt(_,10);isNaN(c)&&(c=0);let l=parseInt(a,10);isNaN(l)&&(l=0),r.push({message:n.join(":").trim(),type:Mt(o),lineNum:c,linePos:l})}return r}function Mt(e){let t=["warning","error","info"],r=e.toLowerCase();return t.includes(r)?r:"info"}var q=class extends _e.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)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>this.compilationStatus)}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let t=this.device.gl.getShaderInfoLog(this.handle);return t?Bt(t):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}async _compile(t){t=t.startsWith("#version ")?t:`#version 300 es
|
|
8
|
-
${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}_e.log.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),_e.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 yt=S(d(),1);var Dt=S(d(),1);function ut(e,t,r,i){if(Ut(t))return i(e);let s=e;s.pushState();try{return Ie(e,t),N(s.gl,r),i(e)}finally{s.popState()}}function xt(e,t,r){if(Ut(t))return r(e);let i=e;i.pushState();try{return Ie(e,t),r(e)}finally{i.popState()}}function Ie(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($("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),t.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let o=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,a=$("provokingVertex",t.provokingVertex,{first:36429,last:36430});o?.provokingVertexWEBGL(a)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let o=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,a=$("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(zr("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(pe("depthCompare",t.depthCompare))),t.stencilWriteMask){let s=t.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(t.stencilReadMask&&Dt.log.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let s=t.stencilReadMask||4294967295,o=pe("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=Ve("stencilPassOperation",t.stencilPassOperation),o=Ve("stencilFailOperation",t.stencilFailOperation),a=Ve("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,o,a,s),i.stencilOpSeparate(1029,o,a,s)}switch(t.blend){case!0:i.enable(3042);break;case!1:i.disable(3042);break;default:}if(t.blendColorOperation||t.blendAlphaOperation){let s=Pt("blendColorOperation",t.blendColorOperation||"add"),o=Pt("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let a=be("blendColorSrcFactor",t.blendColorSrcFactor||"one"),_=be("blendColorDstFactor",t.blendColorDstFactor||"zero"),n=be("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),c=be("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(a,_,n,c)}}function pe(e,t){return $(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Ve(e,t){return $(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Pt(e,t){return $(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function be(e,t){return $(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 $r(e,t){return`Illegal parameter ${t} for ${e}`}function $(e,t,r){if(!(t in r))throw new Error($r(e,t));return r[t]}function zr(e,t){return t}function Ut(e){let t=!0;for(let r in e){t=!1;break}return t}function Ne(e){let t={};return e.addressModeU&&(t[10242]=ke(e.addressModeU)),e.addressModeV&&(t[10243]=ke(e.addressModeV)),e.addressModeW&&(t[32882]=ke(e.addressModeW)),e.magFilter&&(t[10240]=Ke(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=Zr(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]=pe("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function ke(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Ke(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function Zr(e,t="none"){if(!t)return Ke(e);switch(t){case"none":return Ke(e);case"nearest":return e==="nearest"?9984:9986;case"linear":return e==="nearest"?9985:9987}}var w=class extends yt.Sampler{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=Ne(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 b=S(d(),1);var Oe=S(d(),1),U=class extends Oe.TextureView{device;gl;handle;texture;constructor(t,r){super(t,{...Oe.Texture.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}};var Ht=S(d(),1);var mr="Failed to deduce GL constant from typed array";function wt(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(mr)}}function Xt(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")}}function Ye(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function vt(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}function X(e,t,r){if(Qr(t))return r(e);let{nocatch:i=!0}=t,s=O.get(e);s.push(),N(e,t);let o;if(i)o=r(e),s.pop();else try{o=r(e)}finally{s.pop()}return o}function Qr(e){for(let t in e)return!1;return!0}function Wt(e,t,r){let{dimension:i,width:s,height:o,depth:a=0}=r,{glInternalFormat:_}=r,n=r.glTarget;switch(i){case"2d-array":case"3d":e.texStorage3D(n,t,_,s,o,a);break;default:e.texStorage2D(n,t,_,s,o)}}function $e(e,t,r,i){let{width:s,height:o}=i,{dimension:a,depth:_=0,mipLevel:n=0}=i,{x:c=0,y:l=0,z:T=0}=i,{glFormat:f,glType:R}=i,A=kt(i.glTarget,a,_),E=i.flipY?{[37440]:!0}:{};X(e,E,()=>{switch(a){case"2d-array":case"3d":e.bindTexture(A,t),e.texSubImage3D(A,n,c,l,T,s,o,_,f,R,r),e.bindTexture(A,null);break;case"2d":case"cube":e.bindTexture(A,t),e.texSubImage2D(A,n,c,l,s,o,f,R,r),e.bindTexture(A,null);break;default:throw new Error(a)}})}function ze(e,t,r){let{dimension:i,width:s,height:o,depth:a=0,mipLevel:_=0,byteOffset:n=0}=r,{x:c=0,y:l=0,z:T=0}=r,{glFormat:f,glType:R,compressed:A}=r,E=kt(r.glTarget,i,a);switch(i){case"2d-array":case"3d":A?e.compressedTexSubImage3D(E,_,c,l,T,s,o,a,f,t,n):e.texSubImage3D(E,_,c,l,T,s,o,a,f,R,t,n);break;case"2d":case"cube":A?e.compressedTexSubImage2D(E,_,c,l,s,o,f,t,n):e.texSubImage2D(E,_,c,l,s,o,f,R,t,n);break;default:throw new Error(i)}}function Vt(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(e)}function kt(e,t,r){return t==="cube"?34069+r:e}function Kt(e,t){let{sourceX:r=0,sourceY:i=0,sourceAttachment:s=0}=t||{},{target:o=null,sourceWidth:a,sourceHeight:_,sourceDepth:n,sourceFormat:c,sourceType:l}=t||{},{framebuffer:T,deleteFramebuffer:f}=$t(e),{gl:R,handle:A}=T;a||=T.width,_||=T.height;let E=T.colorAttachments[s]?.texture;if(!E)throw new Error(`Invalid framebuffer attachment ${s}`);n=E?.depth||1,c||=E?.glFormat||6408,l||=E?.glType||5121,o=qr(o,l,c,a,_,n),l=l||wt(o);let y=R.bindFramebuffer(36160,A);return R.readBuffer(36064+s),R.readPixels(r,i,a,_,c,l,o),R.readBuffer(36064),R.bindFramebuffer(36160,y||null),f&&T.destroy(),o}function Yt(e,t){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:o=6408,targetByteOffset:a=0}=t||{},{sourceWidth:_,sourceHeight:n,sourceType:c}=t||{},{framebuffer:l,deleteFramebuffer:T}=$t(e);_=_||l.width,n=n||l.height;let f=l;c=c||5121;let R=r;if(!R){let E=Ye(o),y=vt(c),p=a+_*n*E*y;R=f.device.createBuffer({byteLength:p})}let A=e.device.createCommandEncoder();return A.copyTextureToBuffer({sourceTexture:e,width:_,height:n,origin:[i,s],destinationBuffer:R,byteOffset:a}),A.destroy(),T&&l.destroy(),R}function $t(e){return e instanceof Ht.Framebuffer?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:jr(e),deleteFramebuffer:!0}}function jr(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 qr(e,t,r,i,s,o){if(e)return e;t||=5121;let a=Xt(t,{clamped:!1}),_=Ye(r);return new a(i*s*_)}var P=class extends b.Texture{device;gl;handle;sampler=void 0;view=void 0;mipmaps;compressed;glTarget;glFormat;glType;glInternalFormat;textureUnit=0;constructor(t,r){super(t,r);let i={...this.props};i.data=r.data,this.device=t,this.gl=this.device.gl,this.glTarget=Vt(this.props.dimension);let s=de(this.props.format);this.glInternalFormat=s.internalFormat,this.glFormat=s.format,this.glType=s.type,this.compressed=s.compressed,this.mipmaps=Boolean(this.props.mipmaps),this._initialize(i),Object.seal(this)}_initialize(t){this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:t.data});let{width:r,height:i}=t;if(!r||!i){let s=b.Texture.getTextureDataSize(t.data);r=s?.width||1,i=s?.height||1}if(this.width=r,this.height=i,this.depth=t.depth,this.setSampler(t.sampler),this.view=new U(this.device,{...this.props,texture:this}),this.bind(),Wt(this.gl,this.mipLevels,this),t.data)switch(t.dimension){case"1d":this.setTexture1DData(t.data);break;case"2d":this.setTexture2DData(t.data);break;case"3d":this.setTexture3DData(t.data);break;case"cube":this.setTextureCubeData(t.data);break;case"2d-array":this.setTextureArrayData(t.data);break;case"cube-array":this.setTextureCubeArrayData(t.data);break;default:throw new Error(t.dimension)}this.mipmaps&&this.generateMipmap()}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}createView(t){return new U(this.device,{...t,texture:this})}setSampler(t={}){let r;t instanceof w?(this.sampler=t,r=t.props):(this.sampler=new w(this.device,t),r=t);let i=Ne(r);this._setSamplerParameters(i)}generateMipmap(t){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(b.log.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!t?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(i){b.log.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}copyExternalImage(t){let r=b.Texture.getExternalImageSize(t.image),i={...b.Texture.defaultCopyExternalImageOptions,...r,...t},{image:s,depth:o,mipLevel:a,x:_,y:n,z:c,flipY:l}=i,{width:T,height:f}=i,{dimension:R,glTarget:A,glFormat:E,glInternalFormat:y,glType:p}=this;if(T=Math.min(T,this.width-_),f=Math.min(f,this.height-n),t.sourceX||t.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");return $e(this.device.gl,this.handle,s,{dimension:R,mipLevel:a,x:_,y:n,z:c,width:T,height:f,depth:o,glFormat:E,glInternalFormat:y,glType:p,glTarget:A,flipY:l}),{width:i.width,height:i.height}}setTexture1DData(t){throw new Error("setTexture1DData not supported in WebGL.")}setTexture2DData(t,r=0){this.bind();let i=b.Texture.normalizeTextureData(t,this);i.length>1&&this.props.mipmaps!==!1&&b.log.warn(`Texture ${this.id} mipmap and multiple LODs.`)();for(let s=0;s<i.length;s++){let o=i[s];this._setMipLevel(r,s,o)}this.unbind()}setTexture3DData(t){if(this.props.dimension!=="3d")throw new Error(this.id);ArrayBuffer.isView(t)&&(this.bind(),ze(this.device.gl,t,this),this.unbind())}setTextureCubeData(t,r=0){if(this.props.dimension!=="cube")throw new Error(this.id);for(let i of b.Texture.CubeFaces)this.setTextureCubeFaceData(t[i],i)}setTextureArrayData(t){throw this.props.dimension!=="2d-array"?new Error(this.id):new Error("setTextureArrayData not implemented.")}setTextureCubeArrayData(t){throw new Error("setTextureCubeArrayData not supported in WebGL2.")}setTextureCubeFaceData(t,r,i=0){Array.isArray(t)&&t.length>1&&this.props.mipmaps!==!1&&b.log.warn(`${this.id} has mipmap and multiple LODs.`)();let s=b.Texture.CubeFaces.indexOf(r);this.setTexture2DData(t,s)}update(){throw new Error("Texture.update() not implemented. Use ExternalTexture")}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:o,data:a,format:_=6408,type:n=5121}=t,{gl:c}=this,l=o||a;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,_,i,s,0,_,n,l):c.texImage2D(r,0,_,_,n,l)}_getImageDataMap(t){for(let r=0;r<b.Texture.CubeFaces.length;++r){let i=b.Texture.CubeFaces[r];t[i]&&(t[34069+r]=t[i],delete t[i])}return t}_setSamplerParameters(t){b.log.log(1,`${this.id} sampler parameters`,this.device.getGLKeys(t))(),this.gl.bindTexture(this.glTarget,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.glTarget,s,o);break;case 10241:this.gl.texParameteri(this.glTarget,s,o);break;case 10242:case 10243:this.gl.texParameteri(this.glTarget,s,o);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,s,o);break;default:this.gl.texParameteri(this.glTarget,s,o);break}}this.gl.bindTexture(this.glTarget,null)}_setMipLevel(t,r,i,s=this.glTarget){if(b.Texture.isExternalImage(i)){$e(this.device.gl,this.handle,i,{...this,depth:t,mipLevel:r,glTarget:s,flipY:this.props.flipY});return}if(b.Texture.isTextureLevelData(i)){ze(this.device.gl,i.data,{...this,depth:t,mipLevel:r,glTarget:s});return}throw new Error("Texture: invalid image data")}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(t){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,this.handle),t}unbind(t){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,null),t}};var zt=S(d(),1);var Jr=[1,2,4,8],J=class extends zt.RenderPass{device;glParameters;constructor(t,r){super(t,r),this.device=t;let i;if(!r?.parameters?.viewport)if(r?.framebuffer){let{width:s,height:o}=r.framebuffer;i=[0,0,s,o]}else{let[s,o]=t.getCanvasContext().getDrawingBufferSize();i=[0,0,s,o]}if(this.device.pushState(),this.setParameters({viewport:i,...this.props.parameters}),this.props.framebuffer){let s=this.props.framebuffer.colorAttachments.map((o,a)=>36064+a);this.device.gl.drawBuffers(s)}else this.device.gl.drawBuffers([1029]);this.clear()}end(){this.device.popState()}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,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),t.scissorRect&&(r.scissorTest=!0,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),t.colorMask&&(r.colorMask=Jr.map(i=>Boolean(i&t.colorMask))),this.glParameters=r,N(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((i,s)=>{i&&this.clearColorBuffer(s,i)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,t.clearStencil=this.props.clearStencil),r!==0&&X(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){X(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,t,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,t,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,t,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}};var C=S(d(),1);function Zt(e){return Lr.includes(e)}var Lr=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],mt={[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 Ze(e){let t=mt[e];if(!t)throw new Error("uniform");let[r,i,,s]=t;return{format:s,components:i,glType:r}}function Qt(e){let t=mt[e];if(!t)throw new Error("attribute");let[,r,,i,s]=t;return{attributeType:i,vertexFormat:s,components:r}}function Fe(e,t){let r={attributes:[],bindings:[]};r.attributes=Gr(e,t);let i=ri(e,t);for(let _ 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:_.name,group:0,location:_.location,visibility:(_.vertex?1:0)&(_.fragment?2:0),minBindingSize:_.byteLength,uniforms:n})}let s=ti(e,t),o=0;for(let _ of s)if(Zt(_.type)){let{viewDimension:n,sampleType:c}=si(_.type);r.bindings.push({type:"texture",name:_.name,group:0,location:o,viewDimension:n,sampleType:c}),_.textureUnit=o,o+=1}s.length&&(r.uniforms=s);let a=ei(e,t);return a?.length&&(r.varyings=a),r}function Gr(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:_}=o,n=e.getAttribLocation(t,a);if(n>=0){let{attributeType:c}=Qt(_),l=/instance/i.test(a)?"instance":"vertex";r.push({name:a,location:n,stepMode:l,type:c})}}return r.sort((s,o)=>s.location-o.location),r}function ei(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:_,size:n}=o,{glType:c,components:l}=Ze(_),T={location:s,name:a,type:c,size:n*l};r.push(T)}return r.sort((s,o)=>s.location-o.location),r}function ti(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:_,type:n}=o,{name:c,isArray:l}=oi(a),T=e.getUniformLocation(t,c),f={location:T,name:c,size:_,type:n,isArray:l};if(r.push(f),f.size>1)for(let R=0;R<f.size;R++){let A=`${c}[${R}]`;T=e.getUniformLocation(t,A);let E={...f,name:A,location:T};r.push(E)}}return r}function ri(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:[]},_=r(o,35395)||[],n=e.getActiveUniforms(t,_,35383),c=e.getActiveUniforms(t,_,35384),l=e.getActiveUniforms(t,_,35387),T=e.getActiveUniforms(t,_,35388);for(let f=0;f<a.uniformCount;++f){let R=e.getActiveUniform(t,_[f]);if(!R)throw new Error("activeInfo");a.uniforms.push({name:R.name,format:Ze(n[f]).format,type:n[f],arrayLength:c[f],byteOffset:l[f],byteStride:T[f]})}i.push(a)}return i.sort((o,a)=>o.location-a.location),i}var ii={[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 si(e){let t=ii[e];if(!t)throw new Error("sampler");let[r,i]=t;return{viewDimension:r,sampleType:i}}function oi(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 jt(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 qt(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Jt(e){return Array.isArray(e)?e.length===0||typeof e[0]=="number":!1}function me(e){return qt(e)||Jt(e)}function ai(e){return me(e)!==null||typeof e=="number"||typeof e=="boolean"}function Lt(e){let t={bindings:{},uniforms:{}};return Object.keys(e).forEach(r=>{let i=e[r];ai(i)?t.uniforms[r]=i:t.bindings[r]=i}),t}function Gt(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}function er(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(e)}}var tr=4,L=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=r.vs,this.fs=r.fs;let{varyings:i,bufferMode:s=35981}=r;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=Fe(this.device.gl,this.handle),C.log.timeEnd(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=_i(this.introspectedLayout,r.shaderLayout)}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(_=>`"${_.name}"`).join(", ");r?.disableWarnings||C.log.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${a}`,s)();continue}switch(s||C.log.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(s instanceof B)&&!(s.buffer instanceof B))throw new Error("buffer value");break;case"texture":if(!(s instanceof U||s instanceof P||s instanceof M))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,parameters:i=this.props.parameters,topology:s=this.props.topology,vertexArray:o,vertexCount:a,instanceCount:_,isInstanced:n=!1,firstVertex:c=0,transformFeedback:l}=t,T=Gt(s),f=Boolean(o.indexBuffer),R=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable())return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(r),l&&l.begin(this.props.topology),this._applyBindings(),this._applyUniforms();let A=r;return ut(this.device,i,A.glParameters,()=>{f&&n?this.device.gl.drawElementsInstanced(T,a||0,R,c,_||0):f?this.device.gl.drawElements(T,a||0,R,c):n?this.device.gl.drawArraysInstanced(T,c,a||0,_||0):this.device.gl.drawArrays(T,c,a||0),l&&l.end()}),o.unbindAfterRender(r),!0}setUniformsWebGL(t){let{bindings:r}=Lt(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(tr,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),C.log.timeEnd(tr,`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)}async _reportLinkStatus(t){switch(t){case"success":return;default:switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`Error during compilation of shader ${this.vs.id}`);case"pending":this.vs.asyncCompilationStatus.then(()=>this.vs.debugShader());break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`Error during compilation of shader ${this.fs.id}`);case"pending":this.fs.asyncCompilationStatus.then(()=>this.fs.debugShader());break;case"success":break}let r=this.device.gl.getProgramInfoLog(this.handle);throw new Error(`Error during ${t}: ${r}`)}}_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 this.shaderLayout.bindings)!this.bindings[r.name]&&!this.bindings[r.name.replace(/Uniforms$/,"")]&&(C.log.warn(`Binding ${r.name} not found in ${this.id}`)(),t=!1);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,_=t.getUniformBlockIndex(this.handle,a);if(_===4294967295)throw new Error(`Invalid uniform block name ${a}`);t.uniformBlockBinding(this.handle,i,_),o instanceof B?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 U||o instanceof P||o instanceof M))throw new Error("texture");let n;if(o instanceof U)n=o.texture;else if(o instanceof P)n=o;else if(o instanceof M&&o.colorAttachments[0]instanceof U)C.log.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),n=o.colorAttachments[0].texture;else throw new Error("No texture");t.activeTexture(33984+r),t.bindTexture(n.glTarget,n.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&&jt(this.device.gl,i,s,a)}}};function _i(e,t){let r={...e,attributes:e.attributes.map(i=>({...i}))};for(let i of t?.attributes||[]){let s=r.attributes.find(o=>o.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):C.log.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var ir=S(d(),1);var Be=S(d(),1);var Me=class extends Be.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":ni(this.device,r.options);break;case"copy-buffer-to-texture":ci(this.device,r.options);break;case"copy-texture-to-buffer":li(this.device,r.options);break;case"copy-texture-to-texture":Ti(this.device,r.options);break;default:throw new Error(r.name)}}};function ni(e,t){let r=t.sourceBuffer,i=t.destinationBuffer;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 ci(e,t){throw new Error("Not implemented")}function li(e,t){let{sourceTexture:r,mipLevel:i=0,aspect:s="all",width:o=t.sourceTexture.width,height:a=t.sourceTexture.height,depthOrArrayLayers:_=0,origin:n=[0,0],destinationBuffer:c,byteOffset:l=0,bytesPerRow:T,rowsPerImage:f}=t;if(s!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||_!==0||T||f)throw new Error("not implemented");let{framebuffer:R,destroyFramebuffer:A}=rr(r),E;try{let y=c,p=o||R.width,z=a||R.height,je=de(R.colorAttachments[0].texture.props.format),Tr=je.format,fr=je.type;e.gl.bindBuffer(35051,y.handle),E=e.gl.bindFramebuffer(36160,R.handle),e.gl.readPixels(n[0],n[1],p,z,Tr,fr,l)}finally{e.gl.bindBuffer(35051,null),E!==void 0&&e.gl.bindFramebuffer(36160,E),A&&R.destroy()}}function Ti(e,t){let{sourceTexture:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:o=[0,0],destinationTexture:a}=t,{width:_=t.destinationTexture.width,height:n=t.destinationTexture.height}=t,{framebuffer:c,destroyFramebuffer:l}=rr(r),[T,f]=s,[R,A,E]=o,y=e.gl.bindFramebuffer(36160,c.handle),p=null,z;if(a instanceof P)p=a,_=Number.isFinite(_)?_:p.width,n=Number.isFinite(n)?n:p.height,p.bind(0),z=p.glTarget;else throw new Error("invalid destination");switch(z){case 3553:case 34067:e.gl.copyTexSubImage2D(z,i,R,A,T,f,_,n);break;case 35866:case 32879:e.gl.copyTexSubImage3D(z,i,R,A,E,T,f,_,n);break;default:}p&&p.unbind(),e.gl.bindFramebuffer(36160,y),l&&c.destroy()}function rr(e){if(e instanceof Be.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 G=class extends ir.CommandEncoder{device;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new Me(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 Pe=S(d(),1);function sr(e){let{target:t,source:r,start:i=0,count:s=1}=e,o=r.length,a=s*o,_=0;for(let n=i;_<o;_++)t[n++]=r[_];for(;_<a;)_<a-_?(t.copyWithin(i+_,i,i+_),_*=2):(t.copyWithin(i+_,i,i+a-_),_=a);return e.target}var k=class extends Pe.VertexArray{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return He()==="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:_,normalized:n,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,_):this.device.gl.vertexAttribPointer(t,s,o,n,a,_),this.device.gl.bindBuffer(34962,null),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=Re(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=k.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=fi(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||!Ri(i,this.bufferValue),a){let _=(0,Pe.getScratchArray)(r.constructor,o);sr({target:_,source:i,start:0,count:o}),this.buffer.write(_),this.bufferValue=r}return this.buffer}};function fi(e){return Array.isArray(e)?new Float32Array(e):e}function Ri(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 De=S(d(),1);var ee=class extends De.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(er(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,De.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(or(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 B)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(or(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 or(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var ar=S(d(),1);var ue=class extends ar.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 H=class extends v.Device{type="webgl";handle;features;limits;info;canvasContext;lost;_resolveContextLost;gl;debug=!1;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};_extensions={};_polyfilled=!1;spectorJS;constructor(t){if(super({...t,id:t.id||Ft("webgl-device")}),!t.createCanvasContext)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let r=t.createCanvasContext===!0?{}:t.createCanvasContext,i=r.canvas?.gl?.device;if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new j(this,r),this.lost=new Promise(c=>{this._resolveContextLost=c});let s={...t.webgl};r.alphaMode==="premultiplied"&&(s.premultipliedAlpha=!0),t.powerPreference!==void 0&&(s.powerPreference=t.powerPreference);let o=st(this.canvasContext.canvas,{onContextLost:c=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:c=>console.log("WebGL context restored")},s);if(!o)throw new Error("WebGL context creation failed");if(i=o.device,i)throw new Error(`WebGL context already attached to device ${i.id}`);this.handle=o,this.gl=o,this.spectorJS=Ct({...this.props,gl:this.handle}),this.gl.device=this,this.gl._version=2,this.info=ot(this.gl,this._extensions),this.limits=new Ee(this.gl),this.features=new Se(this.gl,this._extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),this.canvasContext.resize(),new O(this.gl,{log:(...c)=>v.log.log(1,...c)()}).trackState(this.gl,{copyState:!1});let _=t.debugWebGL||t.debug,n=t.debugWebGL;_&&(this.gl=Ot(this.gl,{debugWebGL:_,traceWebGL:n}),v.log.warn("WebGL debug mode activated. Performance reduced.")(),t.debugWebGL&&(v.log.level=Math.max(v.log.level,1)))}destroy(){}get isLost(){return this.gl.isContextLost()}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createBuffer(t){let r=this._normalizeBufferProps(t);return new B(this,r)}createTexture(t){return new P(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new w(this,t)}createShader(t){return new q(this,t)}createFramebuffer(t){return new M(this,t)}createVertexArray(t){return new k(this,t)}createTransformFeedback(t){return new ee(this,t)}createQuerySet(t){return new ue(this,t)}createRenderPipeline(t){return new L(this,t)}beginRenderPass(t){return new J(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 G(this,t)}submit(){this.renderPass?.end(),this.renderPass=null}readPixelsToArrayWebGL(t,r){return Kt(t,r)}readPixelsToBufferWebGL(t,r){return Yt(t,r)}setParametersWebGL(t){N(this.gl,t)}getParametersWebGL(t){return Z(this.gl,t)}withParametersWebGL(t,r){return X(this.gl,t,r)}resetWebGL(){v.log.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),fe(this.gl)}_getDeviceSpecificTextureFormatCapabilities(t){return Tt(this.gl,t,this._extensions)}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(){O.get(this.gl).push()}popState(){O.get(this.gl).pop()}setSpectorMetadata(t,r){t.__SPECTOR_Metadata=r}getGLKey(t,r){let i=Number(t);for(let s in this.gl)if(this.gl[s]===i)return`GL.${s}`;return r?.emptyIfUnknown?"":String(t)}getGLKeys(t){let r={emptyIfUnknown:!0};return Object.entries(t).reduce((i,[s,o])=>(i[`${s}:${this.getGLKey(s,r)}`]=`${o}:${this.getGLKey(o,r)}`,i),{})}_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&&Ei(s,r)&&v.log.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:Ai(this,t,r);break;case Int32Array:di(this,t,r);break;case Uint32Array:Si(this,t,r);break;default:throw new Error("constant")}}getExtension(t){return x(this.gl,t,this._extensions),this._extensions}};function Ai(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:}}function di(e,t,r){e.gl.vertexAttribI4iv(t,r)}function Si(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function Ei(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 hi={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},gi=e=>({drawBuffersWEBGL(t){return e.drawBuffers(t)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),Ci=e=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return e.createVertexArray()},deleteVertexArrayOES(t){return e.deleteVertexArray(t)},isVertexArrayOES(t){return e.isVertexArray(t)},bindVertexArrayOES(t){return e.bindVertexArray(t)}}),bi=e=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...t){return e.drawArraysInstanced(...t)},drawElementsInstancedANGLE(...t){return e.drawElementsInstanced(...t)},vertexAttribDivisorANGLE(...t){return e.vertexAttribDivisor(...t)}});function _r(e=!0){let t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(r,i){if(r==="webgl"||r==="experimental-webgl"){let s=this.originalGetContext("webgl2",i);return s instanceof HTMLElement&&pi(s),s}return this.originalGetContext(r,i)}}function pi(e){e.getExtension("EXT_color_buffer_float");let t={...hi,WEBGL_disjoint_timer_query:e.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:gi(e),OES_vertex_array_object:Ci(e),ANGLE_instanced_arrays:bi(e)},r=e.getExtension;e.getExtension=function(s){let o=r.call(e,s);return o||(s in t?t[s]:null)};let i=e.getSupportedExtensions;e.getSupportedExtensions=function(){return(i.apply(e)||[])?.concat(Object.keys(t))}}var xe=1,Qe=class extends D.Adapter{type="webgl";constructor(){super(),D.Device.defaultProps={...D.Device.defaultProps,...ge},H.adapter=this}isSupported(){return typeof WebGL2RenderingContext<"u"}enforceWebGL2(t){_r(t)}async attach(t){if(t instanceof H)return t;if(t?.device instanceof D.Device)return t.device;if(!Ii(t))throw new Error("Invalid WebGL2RenderingContext");return new H({_handle:t})}async create(t={}){D.log.groupCollapsed(xe,"WebGLDevice created")();let r=[];(t.debugWebGL||t.debug)&&r.push(Nt()),t.debugSpectorJS&&r.push(gt(t));let i=await Promise.allSettled(r);for(let a of i)a.status==="rejected"&&D.log.error(`Failed to initialize debug libraries ${a.reason}`)();let s=new H(t),o=`Created ${s.type}${s.debug?" debug":""} context: ${s.info.vendor}, ${s.info.renderer} for canvas: ${s.canvasContext.id}`;return D.log.probe(xe,o)(),D.log.table(xe,s.info)(),D.log.groupEnd(xe)(),s}};function Ii(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&Number.isFinite(e._version))}var nr=new Qe;var lr=S(d(),1);var Ni={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},K=class{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(t){return cr(t.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(t){return cr(t.type||5126).BYTES_PER_ELEMENT*t.size}static resolve(...t){return new K(Ni,...t)}constructor(...t){lr.log.warn("Accessor will be removed in next minor release"),t.forEach(r=>this._assign(r)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return K.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return K.getBytesPerVertex(this)}_assign(t={}){return 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 cr(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")}}return Cr(ne);})();
|
|
8
|
+
${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}_e.log.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),_e.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 yt=S(d(),1);var Dt=S(d(),1);function ut(e,t,r,i){if(Ut(t))return i(e);let s=e;s.pushState();try{return Ie(e,t),N(s.gl,r),i(e)}finally{s.popState()}}function xt(e,t,r){if(Ut(t))return r(e);let i=e;i.pushState();try{return Ie(e,t),r(e)}finally{i.popState()}}function Ie(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($("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),t.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let o=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,a=$("provokingVertex",t.provokingVertex,{first:36429,last:36430});o?.provokingVertexWEBGL(a)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let o=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,a=$("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(zr("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(pe("depthCompare",t.depthCompare))),t.stencilWriteMask){let s=t.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(t.stencilReadMask&&Dt.log.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let s=t.stencilReadMask||4294967295,o=pe("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=Ve("stencilPassOperation",t.stencilPassOperation),o=Ve("stencilFailOperation",t.stencilFailOperation),a=Ve("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,o,a,s),i.stencilOpSeparate(1029,o,a,s)}switch(t.blend){case!0:i.enable(3042);break;case!1:i.disable(3042);break;default:}if(t.blendColorOperation||t.blendAlphaOperation){let s=Pt("blendColorOperation",t.blendColorOperation||"add"),o=Pt("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let a=be("blendColorSrcFactor",t.blendColorSrcFactor||"one"),_=be("blendColorDstFactor",t.blendColorDstFactor||"zero"),n=be("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),c=be("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(a,_,n,c)}}function pe(e,t){return $(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Ve(e,t){return $(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Pt(e,t){return $(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function be(e,t){return $(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 $r(e,t){return`Illegal parameter ${t} for ${e}`}function $(e,t,r){if(!(t in r))throw new Error($r(e,t));return r[t]}function zr(e,t){return t}function Ut(e){let t=!0;for(let r in e){t=!1;break}return t}function Ne(e){let t={};return e.addressModeU&&(t[10242]=ke(e.addressModeU)),e.addressModeV&&(t[10243]=ke(e.addressModeV)),e.addressModeW&&(t[32882]=ke(e.addressModeW)),e.magFilter&&(t[10240]=Ke(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=Zr(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]=pe("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function ke(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Ke(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function Zr(e,t="none"){if(!t)return Ke(e);switch(t){case"none":return Ke(e);case"nearest":return e==="nearest"?9984:9986;case"linear":return e==="nearest"?9985:9987}}var w=class extends yt.Sampler{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=Ne(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 b=S(d(),1);var Oe=S(d(),1),U=class extends Oe.TextureView{device;gl;handle;texture;constructor(t,r){super(t,{...Oe.Texture.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}};var Ht=S(d(),1);var mr="Failed to deduce GL constant from typed array";function wt(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(mr)}}function Xt(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")}}function Ye(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function vt(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}function X(e,t,r){if(Qr(t))return r(e);let{nocatch:i=!0}=t,s=O.get(e);s.push(),N(e,t);let o;if(i)o=r(e),s.pop();else try{o=r(e)}finally{s.pop()}return o}function Qr(e){for(let t in e)return!1;return!0}function Wt(e,t,r){let{dimension:i,width:s,height:o,depth:a=0}=r,{glInternalFormat:_}=r,n=r.glTarget;switch(i){case"2d-array":case"3d":e.texStorage3D(n,t,_,s,o,a);break;default:e.texStorage2D(n,t,_,s,o)}}function $e(e,t,r,i){let{width:s,height:o}=i,{dimension:a,depth:_=0,mipLevel:n=0}=i,{x:c=0,y:l=0,z:T=0}=i,{glFormat:f,glType:R}=i,A=kt(i.glTarget,a,_),E=i.flipY?{[37440]:!0}:{};X(e,E,()=>{switch(a){case"2d-array":case"3d":e.bindTexture(A,t),e.texSubImage3D(A,n,c,l,T,s,o,_,f,R,r),e.bindTexture(A,null);break;case"2d":case"cube":e.bindTexture(A,t),e.texSubImage2D(A,n,c,l,s,o,f,R,r),e.bindTexture(A,null);break;default:throw new Error(a)}})}function ze(e,t,r){let{dimension:i,width:s,height:o,depth:a=0,mipLevel:_=0,byteOffset:n=0}=r,{x:c=0,y:l=0,z:T=0}=r,{glFormat:f,glType:R,compressed:A}=r,E=kt(r.glTarget,i,a);switch(i){case"2d-array":case"3d":A?e.compressedTexSubImage3D(E,_,c,l,T,s,o,a,f,t,n):e.texSubImage3D(E,_,c,l,T,s,o,a,f,R,t,n);break;case"2d":case"cube":A?e.compressedTexSubImage2D(E,_,c,l,s,o,f,t,n):e.texSubImage2D(E,_,c,l,s,o,f,R,t,n);break;default:throw new Error(i)}}function Vt(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(e)}function kt(e,t,r){return t==="cube"?34069+r:e}function Kt(e,t){let{sourceX:r=0,sourceY:i=0,sourceAttachment:s=0}=t||{},{target:o=null,sourceWidth:a,sourceHeight:_,sourceDepth:n,sourceFormat:c,sourceType:l}=t||{},{framebuffer:T,deleteFramebuffer:f}=$t(e),{gl:R,handle:A}=T;a||=T.width,_||=T.height;let E=T.colorAttachments[s]?.texture;if(!E)throw new Error(`Invalid framebuffer attachment ${s}`);n=E?.depth||1,c||=E?.glFormat||6408,l||=E?.glType||5121,o=qr(o,l,c,a,_,n),l=l||wt(o);let y=R.bindFramebuffer(36160,A);return R.readBuffer(36064+s),R.readPixels(r,i,a,_,c,l,o),R.readBuffer(36064),R.bindFramebuffer(36160,y||null),f&&T.destroy(),o}function Yt(e,t){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:o=6408,targetByteOffset:a=0}=t||{},{sourceWidth:_,sourceHeight:n,sourceType:c}=t||{},{framebuffer:l,deleteFramebuffer:T}=$t(e);_=_||l.width,n=n||l.height;let f=l;c=c||5121;let R=r;if(!R){let E=Ye(o),y=vt(c),p=a+_*n*E*y;R=f.device.createBuffer({byteLength:p})}let A=e.device.createCommandEncoder();return A.copyTextureToBuffer({sourceTexture:e,width:_,height:n,origin:[i,s],destinationBuffer:R,byteOffset:a}),A.destroy(),T&&l.destroy(),R}function $t(e){return e instanceof Ht.Framebuffer?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:jr(e),deleteFramebuffer:!0}}function jr(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 qr(e,t,r,i,s,o){if(e)return e;t||=5121;let a=Xt(t,{clamped:!1}),_=Ye(r);return new a(i*s*_)}var P=class extends b.Texture{device;gl;handle;sampler=void 0;view=void 0;mipmaps;compressed;glTarget;glFormat;glType;glInternalFormat;textureUnit=0;constructor(t,r){super(t,r);let i={...this.props};i.data=r.data,this.device=t,this.gl=this.device.gl,this.glTarget=Vt(this.props.dimension);let s=de(this.props.format);this.glInternalFormat=s.internalFormat,this.glFormat=s.format,this.glType=s.type,this.compressed=s.compressed,this.mipmaps=Boolean(this.props.mipmaps),this._initialize(i),Object.seal(this)}_initialize(t){this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:t.data});let{width:r,height:i}=t;if(!r||!i){let s=b.Texture.getTextureDataSize(t.data);r=s?.width||1,i=s?.height||1}if(this.width=r,this.height=i,this.depth=t.depth,this.setSampler(t.sampler),this.view=new U(this.device,{...this.props,texture:this}),this.bind(),Wt(this.gl,this.mipLevels,this),t.data)switch(t.dimension){case"1d":this.setTexture1DData(t.data);break;case"2d":this.setTexture2DData(t.data);break;case"3d":this.setTexture3DData(t.data);break;case"cube":this.setTextureCubeData(t.data);break;case"2d-array":this.setTextureArrayData(t.data);break;case"cube-array":this.setTextureCubeArrayData(t.data);break;default:throw new Error(t.dimension)}this.mipmaps&&this.generateMipmap()}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}createView(t){return new U(this.device,{...t,texture:this})}setSampler(t={}){let r;t instanceof w?(this.sampler=t,r=t.props):(this.sampler=new w(this.device,t),r=t);let i=Ne(r);this._setSamplerParameters(i)}generateMipmap(t){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(b.log.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!t?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(i){b.log.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}copyExternalImage(t){let r=b.Texture.getExternalImageSize(t.image),i={...b.Texture.defaultCopyExternalImageOptions,...r,...t},{image:s,depth:o,mipLevel:a,x:_,y:n,z:c,flipY:l}=i,{width:T,height:f}=i,{dimension:R,glTarget:A,glFormat:E,glInternalFormat:y,glType:p}=this;if(T=Math.min(T,this.width-_),f=Math.min(f,this.height-n),t.sourceX||t.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");return $e(this.device.gl,this.handle,s,{dimension:R,mipLevel:a,x:_,y:n,z:c,width:T,height:f,depth:o,glFormat:E,glInternalFormat:y,glType:p,glTarget:A,flipY:l}),{width:i.width,height:i.height}}setTexture1DData(t){throw new Error("setTexture1DData not supported in WebGL.")}setTexture2DData(t,r=0){this.bind();let i=b.Texture.normalizeTextureData(t,this);i.length>1&&this.props.mipmaps!==!1&&b.log.warn(`Texture ${this.id} mipmap and multiple LODs.`)();for(let s=0;s<i.length;s++){let o=i[s];this._setMipLevel(r,s,o)}this.unbind()}setTexture3DData(t){if(this.props.dimension!=="3d")throw new Error(this.id);ArrayBuffer.isView(t)&&(this.bind(),ze(this.device.gl,t,this),this.unbind())}setTextureCubeData(t,r=0){if(this.props.dimension!=="cube")throw new Error(this.id);for(let i of b.Texture.CubeFaces)this.setTextureCubeFaceData(t[i],i)}setTextureArrayData(t){throw this.props.dimension!=="2d-array"?new Error(this.id):new Error("setTextureArrayData not implemented.")}setTextureCubeArrayData(t){throw new Error("setTextureCubeArrayData not supported in WebGL2.")}setTextureCubeFaceData(t,r,i=0){Array.isArray(t)&&t.length>1&&this.props.mipmaps!==!1&&b.log.warn(`${this.id} has mipmap and multiple LODs.`)();let s=b.Texture.CubeFaces.indexOf(r);this.setTexture2DData(t,s)}update(){throw new Error("Texture.update() not implemented. Use ExternalTexture")}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:o,data:a,format:_=6408,type:n=5121}=t,{gl:c}=this,l=o||a;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,_,i,s,0,_,n,l):c.texImage2D(r,0,_,_,n,l)}_getImageDataMap(t){for(let r=0;r<b.Texture.CubeFaces.length;++r){let i=b.Texture.CubeFaces[r];t[i]&&(t[34069+r]=t[i],delete t[i])}return t}_setSamplerParameters(t){b.log.log(1,`${this.id} sampler parameters`,this.device.getGLKeys(t))(),this.gl.bindTexture(this.glTarget,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.glTarget,s,o);break;case 10241:this.gl.texParameteri(this.glTarget,s,o);break;case 10242:case 10243:this.gl.texParameteri(this.glTarget,s,o);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,s,o);break;default:this.gl.texParameteri(this.glTarget,s,o);break}}this.gl.bindTexture(this.glTarget,null)}_setMipLevel(t,r,i,s=this.glTarget){if(b.Texture.isExternalImage(i)){$e(this.device.gl,this.handle,i,{...this,depth:t,mipLevel:r,glTarget:s,flipY:this.props.flipY});return}if(b.Texture.isTextureLevelData(i)){ze(this.device.gl,i.data,{...this,depth:t,mipLevel:r,glTarget:s});return}throw new Error("Texture: invalid image data")}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(t){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,this.handle),t}unbind(t){let{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,null),t}};var zt=S(d(),1);var Jr=[1,2,4,8],J=class extends zt.RenderPass{device;glParameters;constructor(t,r){super(t,r),this.device=t;let i;if(!r?.parameters?.viewport)if(r?.framebuffer){let{width:s,height:o}=r.framebuffer;i=[0,0,s,o]}else{let[s,o]=t.getCanvasContext().getDrawingBufferSize();i=[0,0,s,o]}if(this.device.pushState(),this.setParameters({viewport:i,...this.props.parameters}),this.props.framebuffer){let s=this.props.framebuffer.colorAttachments.map((o,a)=>36064+a);this.device.gl.drawBuffers(s)}else this.device.gl.drawBuffers([1029]);this.clear()}end(){this.device.popState()}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,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),t.scissorRect&&(r.scissorTest=!0,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),t.colorMask&&(r.colorMask=Jr.map(i=>Boolean(i&t.colorMask))),this.glParameters=r,N(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((i,s)=>{i&&this.clearColorBuffer(s,i)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,t.clearStencil=this.props.clearStencil),r!==0&&X(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){X(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,t,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,t,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,t,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}};var C=S(d(),1);function Zt(e){return Lr.includes(e)}var Lr=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],mt={[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 Ze(e){let t=mt[e];if(!t)throw new Error("uniform");let[r,i,,s]=t;return{format:s,components:i,glType:r}}function Qt(e){let t=mt[e];if(!t)throw new Error("attribute");let[,r,,i,s]=t;return{attributeType:i,vertexFormat:s,components:r}}function Fe(e,t){let r={attributes:[],bindings:[]};r.attributes=Gr(e,t);let i=ri(e,t);for(let _ 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:_.name,group:0,location:_.location,visibility:(_.vertex?1:0)&(_.fragment?2:0),minBindingSize:_.byteLength,uniforms:n})}let s=ti(e,t),o=0;for(let _ of s)if(Zt(_.type)){let{viewDimension:n,sampleType:c}=si(_.type);r.bindings.push({type:"texture",name:_.name,group:0,location:o,viewDimension:n,sampleType:c}),_.textureUnit=o,o+=1}s.length&&(r.uniforms=s);let a=ei(e,t);return a?.length&&(r.varyings=a),r}function Gr(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:_}=o,n=e.getAttribLocation(t,a);if(n>=0){let{attributeType:c}=Qt(_),l=/instance/i.test(a)?"instance":"vertex";r.push({name:a,location:n,stepMode:l,type:c})}}return r.sort((s,o)=>s.location-o.location),r}function ei(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:_,size:n}=o,{glType:c,components:l}=Ze(_),T={location:s,name:a,type:c,size:n*l};r.push(T)}return r.sort((s,o)=>s.location-o.location),r}function ti(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:_,type:n}=o,{name:c,isArray:l}=oi(a),T=e.getUniformLocation(t,c),f={location:T,name:c,size:_,type:n,isArray:l};if(r.push(f),f.size>1)for(let R=0;R<f.size;R++){let A=`${c}[${R}]`;T=e.getUniformLocation(t,A);let E={...f,name:A,location:T};r.push(E)}}return r}function ri(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:[]},_=r(o,35395)||[],n=e.getActiveUniforms(t,_,35383),c=e.getActiveUniforms(t,_,35384),l=e.getActiveUniforms(t,_,35387),T=e.getActiveUniforms(t,_,35388);for(let f=0;f<a.uniformCount;++f){let R=e.getActiveUniform(t,_[f]);if(!R)throw new Error("activeInfo");a.uniforms.push({name:R.name,format:Ze(n[f]).format,type:n[f],arrayLength:c[f],byteOffset:l[f],byteStride:T[f]})}i.push(a)}return i.sort((o,a)=>o.location-a.location),i}var ii={[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 si(e){let t=ii[e];if(!t)throw new Error("sampler");let[r,i]=t;return{viewDimension:r,sampleType:i}}function oi(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 jt(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 qt(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Jt(e){return Array.isArray(e)?e.length===0||typeof e[0]=="number":!1}function me(e){return qt(e)||Jt(e)}function ai(e){return me(e)!==null||typeof e=="number"||typeof e=="boolean"}function Lt(e){let t={bindings:{},uniforms:{}};return Object.keys(e).forEach(r=>{let i=e[r];ai(i)?t.uniforms[r]=i:t.bindings[r]=i}),t}function Gt(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}function er(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(e)}}var tr=4,L=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=r.vs,this.fs=r.fs;let{varyings:i,bufferMode:s=35981}=r;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=Fe(this.device.gl,this.handle),C.log.timeEnd(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=_i(this.introspectedLayout,r.shaderLayout)}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(_=>`"${_.name}"`).join(", ");r?.disableWarnings||C.log.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${a}`,s)();continue}switch(s||C.log.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(s instanceof B)&&!(s.buffer instanceof B))throw new Error("buffer value");break;case"texture":if(!(s instanceof U||s instanceof P||s instanceof M))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,parameters:i=this.props.parameters,topology:s=this.props.topology,vertexArray:o,vertexCount:a,instanceCount:_,isInstanced:n=!1,firstVertex:c=0,transformFeedback:l}=t,T=Gt(s),f=Boolean(o.indexBuffer),R=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable())return C.log.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(r),l&&l.begin(this.props.topology),this._applyBindings(),this._applyUniforms();let A=r;return ut(this.device,i,A.glParameters,()=>{f&&n?this.device.gl.drawElementsInstanced(T,a||0,R,c,_||0):f?this.device.gl.drawElements(T,a||0,R,c):n?this.device.gl.drawArraysInstanced(T,c,a||0,_||0):this.device.gl.drawArrays(T,c,a||0),l&&l.end()}),o.unbindAfterRender(r),!0}setUniformsWebGL(t){let{bindings:r}=Lt(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(tr,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),C.log.timeEnd(tr,`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)}async _reportLinkStatus(t){switch(t){case"success":return;default:switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`Error during compilation of shader ${this.vs.id}`);case"pending":this.vs.asyncCompilationStatus.then(()=>this.vs.debugShader());break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`Error during compilation of shader ${this.fs.id}`);case"pending":this.fs.asyncCompilationStatus.then(()=>this.fs.debugShader());break;case"success":break}let r=this.device.gl.getProgramInfoLog(this.handle);throw new Error(`Error during ${t}: ${r}`)}}_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 this.shaderLayout.bindings)!this.bindings[r.name]&&!this.bindings[r.name.replace(/Uniforms$/,"")]&&(C.log.warn(`Binding ${r.name} not found in ${this.id}`)(),t=!1);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,_=t.getUniformBlockIndex(this.handle,a);if(_===4294967295)throw new Error(`Invalid uniform block name ${a}`);t.uniformBlockBinding(this.handle,i,_),o instanceof B?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 U||o instanceof P||o instanceof M))throw new Error("texture");let n;if(o instanceof U)n=o.texture;else if(o instanceof P)n=o;else if(o instanceof M&&o.colorAttachments[0]instanceof U)C.log.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),n=o.colorAttachments[0].texture;else throw new Error("No texture");t.activeTexture(33984+r),t.bindTexture(n.glTarget,n.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&&jt(this.device.gl,i,s,a)}}};function _i(e,t){let r={...e,attributes:e.attributes.map(i=>({...i}))};for(let i of t?.attributes||[]){let s=r.attributes.find(o=>o.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):C.log.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var ir=S(d(),1);var Be=S(d(),1);var Me=class extends Be.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":ni(this.device,r.options);break;case"copy-buffer-to-texture":ci(this.device,r.options);break;case"copy-texture-to-buffer":li(this.device,r.options);break;case"copy-texture-to-texture":Ti(this.device,r.options);break;default:throw new Error(r.name)}}};function ni(e,t){let r=t.sourceBuffer,i=t.destinationBuffer;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 ci(e,t){throw new Error("Not implemented")}function li(e,t){let{sourceTexture:r,mipLevel:i=0,aspect:s="all",width:o=t.sourceTexture.width,height:a=t.sourceTexture.height,depthOrArrayLayers:_=0,origin:n=[0,0],destinationBuffer:c,byteOffset:l=0,bytesPerRow:T,rowsPerImage:f}=t;if(s!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||_!==0||T||f)throw new Error("not implemented");let{framebuffer:R,destroyFramebuffer:A}=rr(r),E;try{let y=c,p=o||R.width,z=a||R.height,je=de(R.colorAttachments[0].texture.props.format),Tr=je.format,fr=je.type;e.gl.bindBuffer(35051,y.handle),E=e.gl.bindFramebuffer(36160,R.handle),e.gl.readPixels(n[0],n[1],p,z,Tr,fr,l)}finally{e.gl.bindBuffer(35051,null),E!==void 0&&e.gl.bindFramebuffer(36160,E),A&&R.destroy()}}function Ti(e,t){let{sourceTexture:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:o=[0,0],destinationTexture:a}=t,{width:_=t.destinationTexture.width,height:n=t.destinationTexture.height}=t,{framebuffer:c,destroyFramebuffer:l}=rr(r),[T,f]=s,[R,A,E]=o,y=e.gl.bindFramebuffer(36160,c.handle),p=null,z;if(a instanceof P)p=a,_=Number.isFinite(_)?_:p.width,n=Number.isFinite(n)?n:p.height,p.bind(0),z=p.glTarget;else throw new Error("invalid destination");switch(z){case 3553:case 34067:e.gl.copyTexSubImage2D(z,i,R,A,T,f,_,n);break;case 35866:case 32879:e.gl.copyTexSubImage3D(z,i,R,A,E,T,f,_,n);break;default:}p&&p.unbind(),e.gl.bindFramebuffer(36160,y),l&&c.destroy()}function rr(e){if(e instanceof Be.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 G=class extends ir.CommandEncoder{device;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new Me(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 Pe=S(d(),1);function sr(e){let{target:t,source:r,start:i=0,count:s=1}=e,o=r.length,a=s*o,_=0;for(let n=i;_<o;_++)t[n++]=r[_];for(;_<a;)_<a-_?(t.copyWithin(i+_,i,i+_),_*=2):(t.copyWithin(i+_,i,i+a-_),_=a);return e.target}var k=class extends Pe.VertexArray{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return He()==="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:_,normalized:n,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,_):this.device.gl.vertexAttribPointer(t,s,o,n,a,_),this.device.gl.bindBuffer(34962,null),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=Re(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=k.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=fi(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||!Ri(i,this.bufferValue),a){let _=(0,Pe.getScratchArray)(r.constructor,o);sr({target:_,source:i,start:0,count:o}),this.buffer.write(_),this.bufferValue=r}return this.buffer}};function fi(e){return Array.isArray(e)?new Float32Array(e):e}function Ri(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 De=S(d(),1);var ee=class extends De.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(er(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,De.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(or(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 B)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(or(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 or(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var ar=S(d(),1);var ue=class extends ar.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 H=class extends v.Device{type="webgl";handle;features;limits;info;canvasContext;lost;_resolveContextLost;gl;debug=!1;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};_extensions={};_polyfilled=!1;spectorJS;constructor(t){if(super({...t,id:t.id||Ft("webgl-device")}),!t.createCanvasContext)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let r=t.createCanvasContext===!0?{}:t.createCanvasContext,i=r.canvas?.gl?.device;if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new j(this,r),this.lost=new Promise(l=>{this._resolveContextLost=l});let s={...t.webgl};r.alphaMode==="premultiplied"&&(s.premultipliedAlpha=!0),t.powerPreference!==void 0&&(s.powerPreference=t.powerPreference);let a=this.props._handle||st(this.canvasContext.canvas,{onContextLost:l=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:l=>console.log("WebGL context restored")},s);if(!a)throw new Error("WebGL context creation failed");if(i=a.device,i)throw new Error(`WebGL context already attached to device ${i.id}`);this.handle=a,this.gl=a,this.spectorJS=Ct({...this.props,gl:this.handle}),this.gl.device=this,this.gl._version=2,this.info=ot(this.gl,this._extensions),this.limits=new Ee(this.gl),this.features=new Se(this.gl,this._extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),r.autoResize!==!1&&this.canvasContext.resize(),new O(this.gl,{log:(...l)=>v.log.log(1,...l)()}).trackState(this.gl,{copyState:!1});let n=t.debugWebGL||t.debug,c=t.debugWebGL;n&&(this.gl=Ot(this.gl,{debugWebGL:n,traceWebGL:c}),v.log.warn("WebGL debug mode activated. Performance reduced.")(),t.debugWebGL&&(v.log.level=Math.max(v.log.level,1)))}destroy(){}get isLost(){return this.gl.isContextLost()}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createBuffer(t){let r=this._normalizeBufferProps(t);return new B(this,r)}createTexture(t){return new P(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new w(this,t)}createShader(t){return new q(this,t)}createFramebuffer(t){return new M(this,t)}createVertexArray(t){return new k(this,t)}createTransformFeedback(t){return new ee(this,t)}createQuerySet(t){return new ue(this,t)}createRenderPipeline(t){return new L(this,t)}beginRenderPass(t){return new J(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 G(this,t)}submit(){this.renderPass?.end(),this.renderPass=null}readPixelsToArrayWebGL(t,r){return Kt(t,r)}readPixelsToBufferWebGL(t,r){return Yt(t,r)}setParametersWebGL(t){N(this.gl,t)}getParametersWebGL(t){return Z(this.gl,t)}withParametersWebGL(t,r){return X(this.gl,t,r)}resetWebGL(){v.log.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),fe(this.gl)}_getDeviceSpecificTextureFormatCapabilities(t){return Tt(this.gl,t,this._extensions)}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(){O.get(this.gl).push()}popState(){O.get(this.gl).pop()}setSpectorMetadata(t,r){t.__SPECTOR_Metadata=r}getGLKey(t,r){let i=Number(t);for(let s in this.gl)if(this.gl[s]===i)return`GL.${s}`;return r?.emptyIfUnknown?"":String(t)}getGLKeys(t){let r={emptyIfUnknown:!0};return Object.entries(t).reduce((i,[s,o])=>(i[`${s}:${this.getGLKey(s,r)}`]=`${o}:${this.getGLKey(o,r)}`,i),{})}_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&&Ei(s,r)&&v.log.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:Ai(this,t,r);break;case Int32Array:di(this,t,r);break;case Uint32Array:Si(this,t,r);break;default:throw new Error("constant")}}getExtension(t){return x(this.gl,t,this._extensions),this._extensions}};function Ai(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:}}function di(e,t,r){e.gl.vertexAttribI4iv(t,r)}function Si(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function Ei(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 hi={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},gi=e=>({drawBuffersWEBGL(t){return e.drawBuffers(t)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),Ci=e=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return e.createVertexArray()},deleteVertexArrayOES(t){return e.deleteVertexArray(t)},isVertexArrayOES(t){return e.isVertexArray(t)},bindVertexArrayOES(t){return e.bindVertexArray(t)}}),bi=e=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...t){return e.drawArraysInstanced(...t)},drawElementsInstancedANGLE(...t){return e.drawElementsInstanced(...t)},vertexAttribDivisorANGLE(...t){return e.vertexAttribDivisor(...t)}});function _r(e=!0){let t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(r,i){if(r==="webgl"||r==="experimental-webgl"){let s=this.originalGetContext("webgl2",i);return s instanceof HTMLElement&&pi(s),s}return this.originalGetContext(r,i)}}function pi(e){e.getExtension("EXT_color_buffer_float");let t={...hi,WEBGL_disjoint_timer_query:e.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:gi(e),OES_vertex_array_object:Ci(e),ANGLE_instanced_arrays:bi(e)},r=e.getExtension;e.getExtension=function(s){let o=r.call(e,s);return o||(s in t?t[s]:null)};let i=e.getSupportedExtensions;e.getSupportedExtensions=function(){return(i.apply(e)||[])?.concat(Object.keys(t))}}var xe=1,Qe=class extends D.Adapter{type="webgl";constructor(){super(),D.Device.defaultProps={...D.Device.defaultProps,...ge},H.adapter=this}isSupported(){return typeof WebGL2RenderingContext<"u"}enforceWebGL2(t){_r(t)}async attach(t){if(t instanceof H)return t;if(t?.device instanceof D.Device)return t.device;if(!Ii(t))throw new Error("Invalid WebGL2RenderingContext");return new H({_handle:t,createCanvasContext:{canvas:t.canvas,autoResize:!1}})}async create(t={}){D.log.groupCollapsed(xe,"WebGLDevice created")();let r=[];(t.debugWebGL||t.debug)&&r.push(Nt()),t.debugSpectorJS&&r.push(gt(t));let i=await Promise.allSettled(r);for(let a of i)a.status==="rejected"&&D.log.error(`Failed to initialize debug libraries ${a.reason}`)();let s=new H(t),o=`Created ${s.type}${s.debug?" debug":""} context: ${s.info.vendor}, ${s.info.renderer} for canvas: ${s.canvasContext.id}`;return D.log.probe(xe,o)(),D.log.table(xe,s.info)(),D.log.groupEnd(xe)(),s}};function Ii(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&Number.isFinite(e._version))}var nr=new Qe;var lr=S(d(),1);var Ni={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},K=class{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(t){return cr(t.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(t){return cr(t.type||5126).BYTES_PER_ELEMENT*t.size}static resolve(...t){return new K(Ni,...t)}constructor(...t){lr.log.warn("Accessor will be removed in next minor release"),t.forEach(r=>this._assign(r)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return K.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return K.getBytesPerVertex(this)}_assign(t={}){return 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 cr(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")}}return Cr(ne);})();
|
|
9
9
|
return __exports__;
|
|
10
10
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -4697,7 +4697,8 @@ var WebGLDevice = class extends import_core22.Device {
|
|
|
4697
4697
|
if (props.powerPreference !== void 0) {
|
|
4698
4698
|
webglContextAttributes.powerPreference = props.powerPreference;
|
|
4699
4699
|
}
|
|
4700
|
-
const
|
|
4700
|
+
const externalGLContext = this.props._handle;
|
|
4701
|
+
const gl = externalGLContext || createBrowserContext(this.canvasContext.canvas, {
|
|
4701
4702
|
onContextLost: (event) => {
|
|
4702
4703
|
var _a2;
|
|
4703
4704
|
return (_a2 = this._resolveContextLost) == null ? void 0 : _a2.call(this, {
|
|
@@ -4726,7 +4727,9 @@ var WebGLDevice = class extends import_core22.Device {
|
|
|
4726
4727
|
if (this.props._initializeFeatures) {
|
|
4727
4728
|
this.features.initializeFeatures();
|
|
4728
4729
|
}
|
|
4729
|
-
|
|
4730
|
+
if (canvasContextProps.autoResize !== false) {
|
|
4731
|
+
this.canvasContext.resize();
|
|
4732
|
+
}
|
|
4730
4733
|
const glState = new WebGLStateTracker(this.gl, {
|
|
4731
4734
|
log: (...args) => import_core22.log.log(1, ...args)()
|
|
4732
4735
|
});
|
|
@@ -5094,7 +5097,8 @@ var WebGLAdapter = class extends import_core23.Adapter {
|
|
|
5094
5097
|
}
|
|
5095
5098
|
/**
|
|
5096
5099
|
* Get a device instance from a GL context
|
|
5097
|
-
* Creates
|
|
5100
|
+
* Creates a WebGLCanvasContext against the contexts canvas
|
|
5101
|
+
* @note autoResize will be disabled, assuming that whoever created the external context will be handling resizes.
|
|
5098
5102
|
* @param gl
|
|
5099
5103
|
* @returns
|
|
5100
5104
|
*/
|
|
@@ -5108,7 +5112,10 @@ var WebGLAdapter = class extends import_core23.Adapter {
|
|
|
5108
5112
|
if (!isWebGL(gl)) {
|
|
5109
5113
|
throw new Error("Invalid WebGL2RenderingContext");
|
|
5110
5114
|
}
|
|
5111
|
-
return new WebGLDevice({
|
|
5115
|
+
return new WebGLDevice({
|
|
5116
|
+
_handle: gl,
|
|
5117
|
+
createCanvasContext: { canvas: gl.canvas, autoResize: false }
|
|
5118
|
+
});
|
|
5112
5119
|
}
|
|
5113
5120
|
async create(props = {}) {
|
|
5114
5121
|
import_core23.log.groupCollapsed(LOG_LEVEL2, "WebGLDevice created")();
|