diff --git a/build/module/picogl.js b/build/module/picogl.js index 100a1b4a..eb3c1172 100644 --- a/build/module/picogl.js +++ b/build/module/picogl.js @@ -33,7 +33,7 @@ let webglInfoInitialized = false; @namespace PicoGL */ export const PicoGL = Object.assign({ - version: "0.17.4", + version: "0.17.5", WEBGL_INFO, diff --git a/build/picogl.min.js b/build/picogl.min.js index 3202e74d..1ab0dc3c 100644 --- a/build/picogl.min.js +++ b/build/picogl.min.js @@ -20,5 +20,5 @@ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PicoGL=e():t.PicoGL=e()}(window,(function(){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var s=e[r]={i:r,l:!1,exports:{}};return t[r].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)i.d(r,s,function(e){return t[e]}.bind(null,s));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,i){"use strict";i.r(e);const r={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,TIMEOUT_IGNORED:-1,MAX_CLIENT_WAIT_TIMEOUT_WEBGL:37447,QUERY_COUNTER_BITS_EXT:34916,TIME_ELAPSED_EXT:35007,TIMESTAMP_EXT:36392,GPU_DISJOINT_EXT:36795,TEXTURE_MAX_ANISOTROPY_EXT:34046,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047,UNMASKED_VENDOR_WEBGL:37445,UNMASKED_RENDERER_WEBGL:37446,COMPLETION_STATUS_KHR:37297,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_KHR:37808,COMPRESSED_RGBA_ASTC_5x4_KHR:37809,COMPRESSED_RGBA_ASTC_5x5_KHR:37810,COMPRESSED_RGBA_ASTC_6x5_KHR:37811,COMPRESSED_RGBA_ASTC_6x6_KHR:37812,COMPRESSED_RGBA_ASTC_8x5_KHR:37813,COMPRESSED_RGBA_ASTC_8x6_KHR:37814,COMPRESSED_RGBA_ASTC_8x8_KHR:37815,COMPRESSED_RGBA_ASTC_10x5_KHR:37816,COMPRESSED_RGBA_ASTC_10x6_KHR:37817,COMPRESSED_RGBA_ASTC_10x8_KHR:37818,COMPRESSED_RGBA_ASTC_10x10_KHR:37819,COMPRESSED_RGBA_ASTC_12x10_KHR:37820,COMPRESSED_RGBA_ASTC_12x12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:37853},s={[r.BYTE]:1,[r.UNSIGNED_BYTE]:1,[r.SHORT]:2,[r.UNSIGNED_SHORT]:2,[r.INT]:4,[r.UNSIGNED_INT]:4,[r.FLOAT]:4},E={[r.R8]:[r.RED,r.UNSIGNED_BYTE],[r.R8_SNORM]:[r.RED,r.BYTE],[r.R16F]:[r.RED,r.FLOAT],[r.R32F]:[r.RED,r.FLOAT],[r.R8UI]:[r.RED_INTEGER,r.UNSIGNED_BYTE],[r.R8I]:[r.RED_INTEGER,r.BYTE],[r.R16UI]:[r.RED_INTEGER,r.UNSIGNED_SHORT],[r.R16I]:[r.RED_INTEGER,r.SHORT],[r.R32UI]:[r.RED_INTEGER,r.UNSIGNED_INT],[r.R32I]:[r.RED_INTEGER,r.INT],[r.RG8]:[r.RG,r.UNSIGNED_BYTE],[r.RG8_SNORM]:[r.RG,r.BYTE],[r.RG16F]:[r.RG,r.FLOAT],[r.RG32F]:[r.RG,r.FLOAT],[r.RG8UI]:[r.RG_INTEGER,r.UNSIGNED_BYTE],[r.RG8I]:[r.RG_INTEGER,r.BYTE],[r.RG16UI]:[r.RG_INTEGER,r.UNSIGNED_SHORT],[r.RG16I]:[r.RG_INTEGER,r.SHORT],[r.RG32UI]:[r.RG_INTEGER,r.UNSIGNED_INT],[r.RG32I]:[r.RG_INTEGER,r.INT],[r.RGB8]:[r.RGB,r.UNSIGNED_BYTE],[r.SRGB8]:[r.RGB,r.UNSIGNED_BYTE],[r.RGB565]:[r.RGB,r.UNSIGNED_SHORT_5_6_5],[r.RGB8_SNORM]:[r.RGB,r.BYTE],[r.R11F_G11F_B10F]:[r.RGB,r.UNSIGNED_INT_10F_11F_11F_REV],[r.RGB9_E5]:[r.RGB,r.UNSIGNED_INT_5_9_9_9_REV],[r.RGB16F]:[r.RGB,r.FLOAT],[r.RGB32F]:[r.RGB,r.FLOAT],[r.RGB8UI]:[r.RGB_INTEGER,r.UNSIGNED_BYTE],[r.RGB8I]:[r.RGB_INTEGER,r.BYTE],[r.RGB16UI]:[r.RGB_INTEGER,r.UNSIGNED_SHORT],[r.RGB16I]:[r.RGB_INTEGER,r.SHORT],[r.RGB32UI]:[r.RGB_INTEGER,r.UNSIGNED_INT],[r.RGB32I]:[r.RGB_INTEGER,r.INT],[r.RGBA8]:[r.RGBA,r.UNSIGNED_BYTE],[r.SRGB8_ALPHA8]:[r.RGBA,r.UNSIGNED_BYTE],[r.RGBA8_SNORM]:[r.RGBA,r.BYTE],[r.RGB5_A1]:[r.RGBA,r.UNSIGNED_SHORT_5_5_5_1],[r.RGBA4]:[r.RGBA,r.UNSIGNED_SHORT_4_4_4_4],[r.RGB10_A2]:[r.RGBA,r.UNSIGNED_INT_2_10_10_10_REV],[r.RGBA16F]:[r.RGBA,r.FLOAT],[r.RGBA32F]:[r.RGBA,r.FLOAT],[r.RGBA8UI]:[r.RGBA_INTEGER,r.UNSIGNED_BYTE],[r.RGBA8I]:[r.RGBA_INTEGER,r.BYTE],[r.RGB10_A2UI]:[r.RGBA_INTEGER,r.UNSIGNED_INT_2_10_10_10_REV],[r.RGBA16UI]:[r.RGBA_INTEGER,r.UNSIGNED_SHORT],[r.RGBA16I]:[r.RGBA_INTEGER,r.SHORT],[r.RGBA32I]:[r.RGBA_INTEGER,r.INT],[r.RGBA32UI]:[r.RGBA_INTEGER,r.UNSIGNED_INT],[r.DEPTH_COMPONENT16]:[r.DEPTH_COMPONENT,r.UNSIGNED_SHORT],[r.DEPTH_COMPONENT24]:[r.DEPTH_COMPONENT,r.UNSIGNED_INT],[r.DEPTH_COMPONENT32F]:[r.DEPTH_COMPONENT,r.FLOAT],[r.DEPTH24_STENCIL8]:[r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8],[r.DEPTH32F_STENCIL8]:[r.DEPTH_STENCIL,r.FLOAT_32_UNSIGNED_INT_24_8_REV]},_={[r.COMPRESSED_RGB_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT3_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT5_EXT]:!0,[r.COMPRESSED_SRGB_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT]:!0,[r.COMPRESSED_R11_EAC]:!0,[r.COMPRESSED_SIGNED_R11_EAC]:!0,[r.COMPRESSED_RG11_EAC]:!0,[r.COMPRESSED_SIGNED_RG11_EAC]:!0,[r.COMPRESSED_RGB8_ETC2]:!0,[r.COMPRESSED_SRGB8_ETC2]:!0,[r.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]:!0,[r.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]:!0,[r.COMPRESSED_RGBA8_ETC2_EAC]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]:!0,[r.COMPRESSED_RGBA_ASTC_4x4_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_5x4_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_5x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_6x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_6x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x8_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x8_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x10_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_12x10_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_12x12_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR]:!0,[r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]:!0,[r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]:!0,[r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]:!0,[r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]:!0},h={},a=new Array(1),T={},n={[r.UNSIGNED_BYTE]:{[r.RED]:r.R8,[r.RG]:r.RG8,[r.RGB]:r.RGB8,[r.RGBA]:r.RGBA8},[r.UNSIGNED_SHORT]:{[r.DEPTH_COMPONENT]:r.DEPTH_COMPONENT16},[r.FLOAT]:{[r.RED]:r.R16F,[r.RG]:r.RG16F,[r.RGB]:r.RGB16F,[r.RGBA]:r.RGBA16F,[r.DEPTH_COMPONENT]:r.DEPTH_COMPONENT32F}};class R{constructor(t,e,i){if(this.gl=t,this.texture=null,this.appState=e,this.compressed=_[i.internalFormat],void 0!==i.format&&(console.warn("Cubemap option 'format' is deprecated and will be removed. Use 'internalFormat' with a sized format instead."),this.compressed=Boolean(_[i.format]),void 0===i.type&&(i.type=i.format===r.DEPTH_COMPONENT?r.UNSIGNED_SHORT:r.UNSIGNED_BYTE),void 0===i.internalFormat&&(this.compressed?i.internalFormat=i.format:i.internalFormat=n[i.type][i.format])),this.compressed)this.internalFormat=i.internalFormat,this.format=i.internalFormat,this.type=r.UNSIGNED_BYTE;else{this.internalFormat=void 0!==i.internalFormat?i.internalFormat:r.RGBA8;let t=E[this.internalFormat];this.format=t[0],this.type=void 0!==i.type?i.type:t[1]}this.currentUnit=-1;let s=Array.isArray(i.negX),a=s?i.negX[0]:i.negX,{width:T=a.width,height:R=a.height,flipY:A=!1,premultiplyAlpha:S=!1,minFilter:l=(a?r.LINEAR_MIPMAP_NEAREST:r.NEAREST),magFilter:o=(a?r.LINEAR:r.NEAREST),wrapS:u=r.REPEAT,wrapT:N=r.REPEAT,compareMode:I=r.NONE,compareFunc:M=r.LEQUAL,minLOD:c=null,maxLOD:O=null,baseLevel:F=null,maxLevel:C=null,maxAnisotropy:m=1}=i;this.width=T,this.height=R,this.flipY=A,this.premultiplyAlpha=S,this.minFilter=l,this.magFilter=o,this.wrapS=u,this.wrapT=N,this.compareMode=I,this.compareFunc=M,this.minLOD=c,this.maxLOD=O,this.baseLevel=F,this.maxLevel=C,this.maxAnisotropy=Math.min(m,h.MAX_TEXTURE_ANISOTROPY),this.mipmaps=l===r.LINEAR_MIPMAP_NEAREST||l===r.LINEAR_MIPMAP_LINEAR,this.miplevelsProvided=s&&i.negX.length>1,this.levels=this.mipmaps?Math.floor(Math.log2(Math.min(this.width,this.height)))+1:1,this.restore(i)}restore(t=T){this.texture=this.gl.createTexture(),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.bind(0),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,this.magFilter),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,this.minFilter),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,this.wrapS),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,this.wrapT),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_COMPARE_FUNC,this.compareFunc),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_COMPARE_MODE,this.compareMode),null!==this.baseLevel&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_BASE_LEVEL,this.baseLevel),null!==this.maxLevel&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_LEVEL,this.maxLevel),null!==this.minLOD&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_LOD,this.minLOD),null!==this.maxLOD&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_LOD,this.maxLOD),this.maxAnisotropy>1&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_ANISOTROPY_EXT,this.maxAnisotropy),this.gl.texStorage2D(r.TEXTURE_CUBE_MAP,this.levels,this.internalFormat,this.width,this.height);let{negX:e,posX:i,negY:s,posY:E,negZ:_,posZ:h}=t;return e&&(this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_X,e),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_X,i),this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_Y,s),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_Y,E),this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_Z,_),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_Z,h)),this.mipmaps&&!this.miplevelsProvided&&this.gl.generateMipmap(r.TEXTURE_CUBE_MAP),this}delete(){return this.texture&&(this.gl.deleteTexture(this.texture),this.texture=null,this.appState.textures[this.currentUnit]=null,this.currentUnit=-1),this}faceData(t,e){Array.isArray(e)||(a[0]=e,e=a);let i,s=this.mipmaps?e.length:1,E=this.width,_=this.height;if(this.gl.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,this.flipY),this.gl.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha),this.compressed)for(i=0;i>1,1),_=Math.max(_>>1,1);else for(i=0;i>1,1),_=Math.max(_>>1,1);return this}bind(t){let e=this.appState.textures[t];return this.appState.activeTexture!==t&&(this.gl.activeTexture(r.TEXTURE0+t),this.appState.activeTexture=t),e!==this&&(e&&(e.currentUnit=-1),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.gl.bindTexture(r.TEXTURE_CUBE_MAP,this.texture),this.appState.textures[t]=this,this.currentUnit=t),this}}class A{constructor(t,e,i,s=null,E){this.gl=t,this.currentProgram=i,this.drawPrimitive=r.TRIANGLES,this.currentVertexArray=s,this.currentTransformFeedback=null,this.appState=e,this.uniformIndices={},this.uniformNames=new Array(h.MAX_UNIFORMS),this.uniformValues=new Array(h.MAX_UNIFORMS),this.uniformCount=0,this.uniformBuffers=new Array(h.MAX_UNIFORM_BUFFERS),this.uniformBlockNames=new Array(h.MAX_UNIFORM_BUFFERS),this.uniformBlockCount=0,this.textures=new Array(h.MAX_TEXTURE_UNITS),this.textureCount=0,this.offsets=new Int32Array(1),this.numElements=new Int32Array(1),this.numInstances=new Int32Array(1),this.numDraws=1,this.drawCountsFromVertexArray=!0,void 0!==E&&(console.warn("Primitive argument to 'App.createDrawCall' is deprecated and will be removed. Use 'DrawCall.primitive' instead."),this.primitive(E))}primitive(t){return this.drawPrimitive=t,this}transformFeedback(t){return this.currentTransformFeedback=t,this}uniform(t,e){let i=this.uniformIndices[t];return void 0===i&&(i=this.uniformCount++,this.uniformIndices[t]=i,this.uniformNames[i]=t),this.uniformValues[i]=e,this}texture(t,e){let i=this.currentProgram.samplers[t];return this.textures[i]=e,this}uniformBlock(t,e){let i=this.currentProgram.uniformBlocks[t];return this.uniformBuffers[i]=e,this}drawRanges(...t){this.numDraws=t.length,this.offsets.length1&&this.gl.texParameteri(this.binding,r.TEXTURE_MAX_ANISOTROPY_EXT,this.maxAnisotropy),this.is3D?(s=this.mipmaps?Math.floor(Math.log2(Math.max(Math.max(this.width,this.height),this.depth)))+1:1,this.gl.texStorage3D(this.binding,s,this.internalFormat,this.width,this.height,this.depth)):(s=this.mipmaps?Math.floor(Math.log2(Math.max(this.width,this.height)))+1:1,this.gl.texStorage2D(this.binding,s,this.internalFormat,this.width,this.height)),this}data(t){Array.isArray(t)||(a[0]=t,t=a);let e,i=this.mipmaps?t.length:1,s=this.width,E=this.height,_=this.depth,h=this.mipmaps&&1===t.length;if(this.bind(Math.max(this.currentUnit,0)),this.gl.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,this.flipY),this.gl.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha),this.compressed)if(this.is3D)for(e=0;e>1,1),E=Math.max(E>>1,1),_=Math.max(_>>1,1);else for(e=0;e>1,1),E=Math.max(E>>1,1);else if(this.is3D)for(e=0;e>1,1),E=Math.max(E>>1,1),_=Math.max(_>>1,1);else for(e=0;e>1,1),E=Math.max(E>>1,1);return h&&this.gl.generateMipmap(this.binding),this}delete(){return this.texture&&(this.gl.deleteTexture(this.texture),this.texture=null,-1!==this.currentUnit&&this.appState.textures[this.currentUnit]===this&&(this.appState.textures[this.currentUnit]=null,this.currentUnit=-1)),this}bind(t){let e=this.appState.textures[t];return this.appState.activeTexture!==t&&(this.gl.activeTexture(r.TEXTURE0+t),this.appState.activeTexture=t),e!==this&&(e&&(e.currentUnit=-1),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.gl.bindTexture(this.binding,this.texture),this.appState.textures[t]=this,this.currentUnit=t),this}}class l{constructor(t,e,i,r,s=0){this.gl=t,this.renderbuffer=null,this.width=e,this.height=i,this.internalFormat=r,this.samples=s,this.restore()}restore(){return this.renderbuffer=this.gl.createRenderbuffer(),this.resize(this.width,this.height),this}resize(t,e){return this.width=t,this.height=e,this.gl.bindRenderbuffer(r.RENDERBUFFER,this.renderbuffer),this.gl.renderbufferStorageMultisample(r.RENDERBUFFER,this.samples,this.internalFormat,this.width,this.height),this.gl.bindRenderbuffer(r.RENDERBUFFER,null),this}delete(){return this.gl.deleteRenderbuffer(this.renderbuffer),this.renderbuffer=null,this}}class o{constructor(t,e){this.gl=t,this.framebuffer=null,this.appState=e,this.numColorTargets=0,this.colorAttachments=[],this.colorAttachmentEnums=[],this.colorAttachmentTargets=[],this.depthAttachment=null,this.depthAttachmentTarget=null,this.width=0,this.height=0,this.restore()}restore(){let t=this.appState.framebuffers;for(let e in t)t[e]===this&&(t[e]=null);return this.framebuffer=this.gl.createFramebuffer(),this}colorTarget(t,e,i=(e.is3D?0:r.TEXTURE_2D)){if(t>=this.numColorTargets){let e=t+1;this.colorAttachmentEnums.length=e,this.colorAttachments.length=e,this.colorAttachmentTargets.length=e;for(let t=this.numColorTargets;t1?O:c;break;case r.BOOL:E=h>1?F:c;break;case r.FLOAT_VEC2:case r.INT_VEC2:case r.UNSIGNED_INT_VEC2:case r.FLOAT_VEC3:case r.INT_VEC3:case r.UNSIGNED_INT_VEC3:case r.FLOAT_VEC4:case r.INT_VEC4:case r.UNSIGNED_INT_VEC4:E=O;break;case r.BOOL_VEC2:case r.BOOL_VEC3:case r.BOOL_VEC4:E=F;break;case r.FLOAT_MAT2:case r.FLOAT_MAT3:case r.FLOAT_MAT4:case r.FLOAT_MAT2x3:case r.FLOAT_MAT2x4:case r.FLOAT_MAT3x2:case r.FLOAT_MAT3x4:case r.FLOAT_MAT4x2:case r.FLOAT_MAT4x3:E=C;break;default:console.error("Unrecognized type for uniform ",e.name)}E&&(this.uniforms[e.name]=new E(this.gl,s,_,h))}let i=this.gl.getProgramParameter(this.program,r.ACTIVE_UNIFORM_BLOCKS);for(let t=0;t=this.dirtyEnd)return this;let t=this.data.subarray(this.dirtyStart,this.dirtyEnd),e=4*this.dirtyStart;return this.gl.bindBuffer(this.gl.UNIFORM_BUFFER,this.buffer),this.gl.bufferSubData(this.gl.UNIFORM_BUFFER,e,t),this.gl.bindBuffer(this.gl.UNIFORM_BUFFER,null),this.dirtyStart=this.size,this.dirtyEnd=0,this}delete(){return this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=null,-1!==this.currentBase&&this.appState.uniformBuffers[this.currentBase]===this&&(this.appState.uniformBuffers[this.currentBase]=null),this.currentBase=-1),this}bind(t){let e=this.appState.uniformBuffers[t];return e!==this&&(e&&(e.currentBase=-1),-1!==this.currentBase&&(this.appState.uniformBuffers[this.currentBase]=null),this.gl.bindBufferBase(this.gl.UNIFORM_BUFFER,t,this.buffer),this.appState.uniformBuffers[t]=this,this.currentBase=t),this}}class U{constructor(t,e){this.gl=t,this.appState=e,this.vertexArray=null,this.indexType=null,this.indexed=!1,this.numElements=0,this.numInstances=1,this.offsets=0,this.numDraws=1}restore(){return this.appState.vertexArray===this&&(this.appState.vertexArray=null),null!==this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this}vertexAttributeBuffer(t,e,i=T){return this.attributeBuffer(t,e,i,!1),this}instanceAttributeBuffer(t,e,i=T){return this.attributeBuffer(t,e,i,!0),this}indexBuffer(t){return null===this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this.bind(),this.gl.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t.buffer),this.numElements=3*t.numItems,this.indexType=t.type,this.indexed=!0,this}delete(){return this.vertexArray&&(this.gl.deleteVertexArray(this.vertexArray),this.vertexArray=null,this.appState.vertexArray===this&&(this.gl.bindVertexArray(null),this.appState.vertexArray=null)),this}bind(){return this.appState.vertexArray!==this&&(this.gl.bindVertexArray(this.vertexArray),this.appState.vertexArray=this),this}attributeBuffer(t,e,i={},E){null===this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this.bind(),this.gl.bindBuffer(r.ARRAY_BUFFER,e.buffer);let{type:_=e.type,size:h=e.itemSize,stride:a=0,offset:T=0,normalized:n=!1,integer:R=Boolean(e.integer&&!n)}=i,A=e.numColumns;0===a&&(a=A*h*s[_]);let S=Math.ceil((e.byteLength-T)/a);for(let e=0;e{let r=t.length,s=new Array(r),E=new Array(r),_=r;for(let e=0;e{let t=0;for(let e=0;e<_;++e)if(E[e].checkCompletion()){if(E[e].checkLinkage(),!E[e].linked)return void i(new Error("Program linkage failed"));++t}else E[e-t]=E[e];0===(_-=t)?e(s):requestAnimationFrame(h)};h()})}restorePrograms(...t){return new Promise((e,i)=>{let r=t.length,s=t.slice(),E=r;for(let e=0;e{let t=0;for(let e=0;e{t.preventDefault()},this.contextRestoredListener=()=>{this.initExtensions(),this.contextRestoredHandler()},this.canvas.addEventListener("webglcontextlost",this.contextLostListener),this.canvas.addEventListener("webglcontextrestored",this.contextRestoredListener)):(this.canvas.removeEventListener("webglcontextlost",this.contextLostListener),this.canvas.removeEventListener("webglcontextrestored",this.contextRestoredListener),this.contextLostListener=null,this.contextRestoredListener=null)}depthTest(){return console.warn("App.depthTest is deprecated. Use App.enable(PicoGL.DEPTH_TEST) instead."),this.enable(r.DEPTH_TEST),this}noDepthTest(){return console.warn("App.noDepthTest is deprecated. Use App.disable(PicoGL.DEPTH_TEST) instead."),this.disable(r.DEPTH_TEST),this}blend(){return console.warn("App.blend is deprecated. Use App.enable(PicoGL.BLEND) instead."),this.enable(r.BLEND),this}noBlend(){return console.warn("App.noBlend is deprecated. Use App.disable(PicoGL.BLEND) instead."),this.disable(r.BLEND),this}stencilTest(){return console.warn("App.stencilTest is deprecated. Use App.enable(PicoGL.STENCIL_TEST) instead."),this.enable(r.STENCIL_TEST),this}noStencilTest(){return console.warn("App.noStencilTest is deprecated. Use App.disable(PicoGL.STENCIL_TEST) instead."),this.disable(r.STENCIL_TEST),this}scissorTest(){return console.warn("App.scissorTest is deprecated. Use App.enable(PicoGL.SCISSOR_TEST) instead."),this.enable(r.SCISSOR_TEST),this}noScissorTest(){return console.warn("App.noScissorTest is deprecated. Use App.disable(PicoGL.SCISSOR_TEST) instead."),this.disable(r.SCISSOR_TEST),this}rasterize(){return console.warn("App.noRasterize is deprecated. Use App.disable(PicoGL.RASTERIZER_DISCARD) instead."),this.disable(r.RASTERIZER_DISCARD),this}noRasterize(){return console.warn("App.rasterize is deprecated. Use App.enable(PicoGL.RASTERIZER_DISCARD) instead."),this.enable(r.RASTERIZER_DISCARD),this}cullBackfaces(){return console.warn("App.cullBackfaces is deprecated. Use App.enable(PicoGL.CULL_FACE) instead."),this.enable(r.CULL_FACE),this}drawBackfaces(){return console.warn("App.drawBackfaces is deprecated. Use App.disable(PicoGL.CULL_FACE) instead."),this.disable(r.CULL_FACE),this}}i.d(e,"PicoGL",(function(){return G}));let p=!1;const G=Object.assign({version:"0.17.4",WEBGL_INFO:h,createApp:(t,e)=>("CANVAS"===t.tagName&&(t=t.getContext("webgl2",e)),p||(h.MAX_TEXTURE_UNITS=t.getParameter(r.MAX_COMBINED_TEXTURE_IMAGE_UNITS),h.MAX_UNIFORM_BUFFERS=t.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS),h.MAX_UNIFORMS=Math.min(t.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),t.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS)),h.SAMPLES=t.getParameter(r.SAMPLES),h.VENDOR="(Unknown)",h.RENDERER="(Unknown)",h.FLOAT_RENDER_TARGETS=Boolean(t.getExtension("EXT_color_buffer_float")),h.LINEAR_FLOAT_TEXTURES=Boolean(t.getExtension("OES_texture_float_linear")),h.S3TC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_s3tc")),h.S3TC_SRGB_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_s3tc_srgb")),h.ETC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_etc")),h.ASTC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_astc")),h.PVRTC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_pvrtc")),h.LOSE_CONTEXT=Boolean(t.getExtension("WEBGL_lose_context")),h.DEBUG_SHADERS=Boolean(t.getExtension("WEBGL_debug_shaders")),h.GPU_TIMER=Boolean(t.getExtension("EXT_disjoint_timer_query_webgl2")||t.getExtension("EXT_disjoint_timer_query")),h.TEXTURE_ANISOTROPY=Boolean(t.getExtension("EXT_texture_filter_anisotropic")),h.MAX_TEXTURE_ANISOTROPY=h.TEXTURE_ANISOTROPY?t.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1,h.DEBUG_RENDERER_INFO=Boolean(t.getExtension("WEBGL_debug_renderer_info")),h.DEBUG_RENDERER_INFO&&(h.VENDOR=t.getParameter(r.UNMASKED_VENDOR_WEBGL),h.RENDERER=t.getParameter(r.UNMASKED_RENDERER_WEBGL)),h.PARALLEL_SHADER_COMPILE=Boolean(t.getExtension("KHR_parallel_shader_compile")),h.MULTI_DRAW_INSTANCED=Boolean(t.getExtension("WEBGL_multi_draw_instanced")),p=!0),new g(t))},r)}]).PicoGL})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PicoGL=e():t.PicoGL=e()}(window,(function(){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var s=e[r]={i:r,l:!1,exports:{}};return t[r].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)i.d(r,s,function(e){return t[e]}.bind(null,s));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,i){"use strict";i.r(e);const r={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,TIMEOUT_IGNORED:-1,MAX_CLIENT_WAIT_TIMEOUT_WEBGL:37447,QUERY_COUNTER_BITS_EXT:34916,TIME_ELAPSED_EXT:35007,TIMESTAMP_EXT:36392,GPU_DISJOINT_EXT:36795,TEXTURE_MAX_ANISOTROPY_EXT:34046,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047,UNMASKED_VENDOR_WEBGL:37445,UNMASKED_RENDERER_WEBGL:37446,COMPLETION_STATUS_KHR:37297,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_KHR:37808,COMPRESSED_RGBA_ASTC_5x4_KHR:37809,COMPRESSED_RGBA_ASTC_5x5_KHR:37810,COMPRESSED_RGBA_ASTC_6x5_KHR:37811,COMPRESSED_RGBA_ASTC_6x6_KHR:37812,COMPRESSED_RGBA_ASTC_8x5_KHR:37813,COMPRESSED_RGBA_ASTC_8x6_KHR:37814,COMPRESSED_RGBA_ASTC_8x8_KHR:37815,COMPRESSED_RGBA_ASTC_10x5_KHR:37816,COMPRESSED_RGBA_ASTC_10x6_KHR:37817,COMPRESSED_RGBA_ASTC_10x8_KHR:37818,COMPRESSED_RGBA_ASTC_10x10_KHR:37819,COMPRESSED_RGBA_ASTC_12x10_KHR:37820,COMPRESSED_RGBA_ASTC_12x12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:37853},s={[r.BYTE]:1,[r.UNSIGNED_BYTE]:1,[r.SHORT]:2,[r.UNSIGNED_SHORT]:2,[r.INT]:4,[r.UNSIGNED_INT]:4,[r.FLOAT]:4},E={[r.R8]:[r.RED,r.UNSIGNED_BYTE],[r.R8_SNORM]:[r.RED,r.BYTE],[r.R16F]:[r.RED,r.FLOAT],[r.R32F]:[r.RED,r.FLOAT],[r.R8UI]:[r.RED_INTEGER,r.UNSIGNED_BYTE],[r.R8I]:[r.RED_INTEGER,r.BYTE],[r.R16UI]:[r.RED_INTEGER,r.UNSIGNED_SHORT],[r.R16I]:[r.RED_INTEGER,r.SHORT],[r.R32UI]:[r.RED_INTEGER,r.UNSIGNED_INT],[r.R32I]:[r.RED_INTEGER,r.INT],[r.RG8]:[r.RG,r.UNSIGNED_BYTE],[r.RG8_SNORM]:[r.RG,r.BYTE],[r.RG16F]:[r.RG,r.FLOAT],[r.RG32F]:[r.RG,r.FLOAT],[r.RG8UI]:[r.RG_INTEGER,r.UNSIGNED_BYTE],[r.RG8I]:[r.RG_INTEGER,r.BYTE],[r.RG16UI]:[r.RG_INTEGER,r.UNSIGNED_SHORT],[r.RG16I]:[r.RG_INTEGER,r.SHORT],[r.RG32UI]:[r.RG_INTEGER,r.UNSIGNED_INT],[r.RG32I]:[r.RG_INTEGER,r.INT],[r.RGB8]:[r.RGB,r.UNSIGNED_BYTE],[r.SRGB8]:[r.RGB,r.UNSIGNED_BYTE],[r.RGB565]:[r.RGB,r.UNSIGNED_SHORT_5_6_5],[r.RGB8_SNORM]:[r.RGB,r.BYTE],[r.R11F_G11F_B10F]:[r.RGB,r.UNSIGNED_INT_10F_11F_11F_REV],[r.RGB9_E5]:[r.RGB,r.UNSIGNED_INT_5_9_9_9_REV],[r.RGB16F]:[r.RGB,r.FLOAT],[r.RGB32F]:[r.RGB,r.FLOAT],[r.RGB8UI]:[r.RGB_INTEGER,r.UNSIGNED_BYTE],[r.RGB8I]:[r.RGB_INTEGER,r.BYTE],[r.RGB16UI]:[r.RGB_INTEGER,r.UNSIGNED_SHORT],[r.RGB16I]:[r.RGB_INTEGER,r.SHORT],[r.RGB32UI]:[r.RGB_INTEGER,r.UNSIGNED_INT],[r.RGB32I]:[r.RGB_INTEGER,r.INT],[r.RGBA8]:[r.RGBA,r.UNSIGNED_BYTE],[r.SRGB8_ALPHA8]:[r.RGBA,r.UNSIGNED_BYTE],[r.RGBA8_SNORM]:[r.RGBA,r.BYTE],[r.RGB5_A1]:[r.RGBA,r.UNSIGNED_SHORT_5_5_5_1],[r.RGBA4]:[r.RGBA,r.UNSIGNED_SHORT_4_4_4_4],[r.RGB10_A2]:[r.RGBA,r.UNSIGNED_INT_2_10_10_10_REV],[r.RGBA16F]:[r.RGBA,r.FLOAT],[r.RGBA32F]:[r.RGBA,r.FLOAT],[r.RGBA8UI]:[r.RGBA_INTEGER,r.UNSIGNED_BYTE],[r.RGBA8I]:[r.RGBA_INTEGER,r.BYTE],[r.RGB10_A2UI]:[r.RGBA_INTEGER,r.UNSIGNED_INT_2_10_10_10_REV],[r.RGBA16UI]:[r.RGBA_INTEGER,r.UNSIGNED_SHORT],[r.RGBA16I]:[r.RGBA_INTEGER,r.SHORT],[r.RGBA32I]:[r.RGBA_INTEGER,r.INT],[r.RGBA32UI]:[r.RGBA_INTEGER,r.UNSIGNED_INT],[r.DEPTH_COMPONENT16]:[r.DEPTH_COMPONENT,r.UNSIGNED_SHORT],[r.DEPTH_COMPONENT24]:[r.DEPTH_COMPONENT,r.UNSIGNED_INT],[r.DEPTH_COMPONENT32F]:[r.DEPTH_COMPONENT,r.FLOAT],[r.DEPTH24_STENCIL8]:[r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8],[r.DEPTH32F_STENCIL8]:[r.DEPTH_STENCIL,r.FLOAT_32_UNSIGNED_INT_24_8_REV]},_={[r.COMPRESSED_RGB_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT3_EXT]:!0,[r.COMPRESSED_RGBA_S3TC_DXT5_EXT]:!0,[r.COMPRESSED_SRGB_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT]:!0,[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT]:!0,[r.COMPRESSED_R11_EAC]:!0,[r.COMPRESSED_SIGNED_R11_EAC]:!0,[r.COMPRESSED_RG11_EAC]:!0,[r.COMPRESSED_SIGNED_RG11_EAC]:!0,[r.COMPRESSED_RGB8_ETC2]:!0,[r.COMPRESSED_SRGB8_ETC2]:!0,[r.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]:!0,[r.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]:!0,[r.COMPRESSED_RGBA8_ETC2_EAC]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]:!0,[r.COMPRESSED_RGBA_ASTC_4x4_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_5x4_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_5x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_6x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_6x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_8x8_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x5_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x6_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x8_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_10x10_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_12x10_KHR]:!0,[r.COMPRESSED_RGBA_ASTC_12x12_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR]:!0,[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR]:!0,[r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]:!0,[r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]:!0,[r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]:!0,[r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]:!0},h={},a=new Array(1),T={},n={[r.UNSIGNED_BYTE]:{[r.RED]:r.R8,[r.RG]:r.RG8,[r.RGB]:r.RGB8,[r.RGBA]:r.RGBA8},[r.UNSIGNED_SHORT]:{[r.DEPTH_COMPONENT]:r.DEPTH_COMPONENT16},[r.FLOAT]:{[r.RED]:r.R16F,[r.RG]:r.RG16F,[r.RGB]:r.RGB16F,[r.RGBA]:r.RGBA16F,[r.DEPTH_COMPONENT]:r.DEPTH_COMPONENT32F}};class R{constructor(t,e,i){if(this.gl=t,this.texture=null,this.appState=e,this.compressed=_[i.internalFormat],void 0!==i.format&&(console.warn("Cubemap option 'format' is deprecated and will be removed. Use 'internalFormat' with a sized format instead."),this.compressed=Boolean(_[i.format]),void 0===i.type&&(i.type=i.format===r.DEPTH_COMPONENT?r.UNSIGNED_SHORT:r.UNSIGNED_BYTE),void 0===i.internalFormat&&(this.compressed?i.internalFormat=i.format:i.internalFormat=n[i.type][i.format])),this.compressed)this.internalFormat=i.internalFormat,this.format=i.internalFormat,this.type=r.UNSIGNED_BYTE;else{this.internalFormat=void 0!==i.internalFormat?i.internalFormat:r.RGBA8;let t=E[this.internalFormat];this.format=t[0],this.type=void 0!==i.type?i.type:t[1]}this.currentUnit=-1;let s=Array.isArray(i.negX),a=s?i.negX[0]:i.negX,{width:T=a.width,height:R=a.height,flipY:A=!1,premultiplyAlpha:S=!1,minFilter:l=(a?r.LINEAR_MIPMAP_NEAREST:r.NEAREST),magFilter:o=(a?r.LINEAR:r.NEAREST),wrapS:u=r.REPEAT,wrapT:N=r.REPEAT,compareMode:I=r.NONE,compareFunc:M=r.LEQUAL,minLOD:c=null,maxLOD:O=null,baseLevel:F=null,maxLevel:C=null,maxAnisotropy:m=1}=i;this.width=T,this.height=R,this.flipY=A,this.premultiplyAlpha=S,this.minFilter=l,this.magFilter=o,this.wrapS=u,this.wrapT=N,this.compareMode=I,this.compareFunc=M,this.minLOD=c,this.maxLOD=O,this.baseLevel=F,this.maxLevel=C,this.maxAnisotropy=Math.min(m,h.MAX_TEXTURE_ANISOTROPY),this.mipmaps=l===r.LINEAR_MIPMAP_NEAREST||l===r.LINEAR_MIPMAP_LINEAR,this.miplevelsProvided=s&&i.negX.length>1,this.levels=this.mipmaps?Math.floor(Math.log2(Math.min(this.width,this.height)))+1:1,this.restore(i)}restore(t=T){this.texture=this.gl.createTexture(),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.bind(0),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,this.magFilter),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,this.minFilter),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,this.wrapS),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,this.wrapT),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_COMPARE_FUNC,this.compareFunc),this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_COMPARE_MODE,this.compareMode),null!==this.baseLevel&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_BASE_LEVEL,this.baseLevel),null!==this.maxLevel&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_LEVEL,this.maxLevel),null!==this.minLOD&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_LOD,this.minLOD),null!==this.maxLOD&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_LOD,this.maxLOD),this.maxAnisotropy>1&&this.gl.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAX_ANISOTROPY_EXT,this.maxAnisotropy),this.gl.texStorage2D(r.TEXTURE_CUBE_MAP,this.levels,this.internalFormat,this.width,this.height);let{negX:e,posX:i,negY:s,posY:E,negZ:_,posZ:h}=t;return e&&(this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_X,e),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_X,i),this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_Y,s),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_Y,E),this.faceData(r.TEXTURE_CUBE_MAP_NEGATIVE_Z,_),this.faceData(r.TEXTURE_CUBE_MAP_POSITIVE_Z,h)),this.mipmaps&&!this.miplevelsProvided&&this.gl.generateMipmap(r.TEXTURE_CUBE_MAP),this}delete(){return this.texture&&(this.gl.deleteTexture(this.texture),this.texture=null,this.appState.textures[this.currentUnit]=null,this.currentUnit=-1),this}faceData(t,e){Array.isArray(e)||(a[0]=e,e=a);let i,s=this.mipmaps?e.length:1,E=this.width,_=this.height;if(this.gl.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,this.flipY),this.gl.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha),this.compressed)for(i=0;i>1,1),_=Math.max(_>>1,1);else for(i=0;i>1,1),_=Math.max(_>>1,1);return this}bind(t){let e=this.appState.textures[t];return this.appState.activeTexture!==t&&(this.gl.activeTexture(r.TEXTURE0+t),this.appState.activeTexture=t),e!==this&&(e&&(e.currentUnit=-1),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.gl.bindTexture(r.TEXTURE_CUBE_MAP,this.texture),this.appState.textures[t]=this,this.currentUnit=t),this}}class A{constructor(t,e,i,s=null,E){this.gl=t,this.currentProgram=i,this.drawPrimitive=r.TRIANGLES,this.currentVertexArray=s,this.currentTransformFeedback=null,this.appState=e,this.uniformIndices={},this.uniformNames=new Array(h.MAX_UNIFORMS),this.uniformValues=new Array(h.MAX_UNIFORMS),this.uniformCount=0,this.uniformBuffers=new Array(h.MAX_UNIFORM_BUFFERS),this.uniformBlockNames=new Array(h.MAX_UNIFORM_BUFFERS),this.uniformBlockCount=0,this.textures=new Array(h.MAX_TEXTURE_UNITS),this.textureCount=0,this.offsets=new Int32Array(1),this.numElements=new Int32Array(1),this.numInstances=new Int32Array(1),this.numDraws=1,this.drawCountsFromVertexArray=!0,void 0!==E&&(console.warn("Primitive argument to 'App.createDrawCall' is deprecated and will be removed. Use 'DrawCall.primitive' instead."),this.primitive(E))}primitive(t){return this.drawPrimitive=t,this}transformFeedback(t){return this.currentTransformFeedback=t,this}uniform(t,e){let i=this.uniformIndices[t];return void 0===i&&(i=this.uniformCount++,this.uniformIndices[t]=i,this.uniformNames[i]=t),this.uniformValues[i]=e,this}texture(t,e){let i=this.currentProgram.samplers[t];return this.textures[i]=e,this}uniformBlock(t,e){let i=this.currentProgram.uniformBlocks[t];return this.uniformBuffers[i]=e,this}drawRanges(...t){this.numDraws=t.length,this.offsets.length1&&this.gl.texParameteri(this.binding,r.TEXTURE_MAX_ANISOTROPY_EXT,this.maxAnisotropy),this.is3D?(s=this.mipmaps?Math.floor(Math.log2(Math.max(Math.max(this.width,this.height),this.depth)))+1:1,this.gl.texStorage3D(this.binding,s,this.internalFormat,this.width,this.height,this.depth)):(s=this.mipmaps?Math.floor(Math.log2(Math.max(this.width,this.height)))+1:1,this.gl.texStorage2D(this.binding,s,this.internalFormat,this.width,this.height)),this}data(t){Array.isArray(t)||(a[0]=t,t=a);let e,i=this.mipmaps?t.length:1,s=this.width,E=this.height,_=this.depth,h=this.mipmaps&&1===t.length;if(this.bind(Math.max(this.currentUnit,0)),this.gl.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,this.flipY),this.gl.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha),this.compressed)if(this.is3D)for(e=0;e>1,1),E=Math.max(E>>1,1),_=Math.max(_>>1,1);else for(e=0;e>1,1),E=Math.max(E>>1,1);else if(this.is3D)for(e=0;e>1,1),E=Math.max(E>>1,1),_=Math.max(_>>1,1);else for(e=0;e>1,1),E=Math.max(E>>1,1);return h&&this.gl.generateMipmap(this.binding),this}delete(){return this.texture&&(this.gl.deleteTexture(this.texture),this.texture=null,-1!==this.currentUnit&&this.appState.textures[this.currentUnit]===this&&(this.appState.textures[this.currentUnit]=null,this.currentUnit=-1)),this}bind(t){let e=this.appState.textures[t];return this.appState.activeTexture!==t&&(this.gl.activeTexture(r.TEXTURE0+t),this.appState.activeTexture=t),e!==this&&(e&&(e.currentUnit=-1),-1!==this.currentUnit&&(this.appState.textures[this.currentUnit]=null),this.gl.bindTexture(this.binding,this.texture),this.appState.textures[t]=this,this.currentUnit=t),this}}class l{constructor(t,e,i,r,s=0){this.gl=t,this.renderbuffer=null,this.width=e,this.height=i,this.internalFormat=r,this.samples=s,this.restore()}restore(){return this.renderbuffer=this.gl.createRenderbuffer(),this.resize(this.width,this.height),this}resize(t,e){return this.width=t,this.height=e,this.gl.bindRenderbuffer(r.RENDERBUFFER,this.renderbuffer),this.gl.renderbufferStorageMultisample(r.RENDERBUFFER,this.samples,this.internalFormat,this.width,this.height),this.gl.bindRenderbuffer(r.RENDERBUFFER,null),this}delete(){return this.gl.deleteRenderbuffer(this.renderbuffer),this.renderbuffer=null,this}}class o{constructor(t,e){this.gl=t,this.framebuffer=null,this.appState=e,this.numColorTargets=0,this.colorAttachments=[],this.colorAttachmentEnums=[],this.colorAttachmentTargets=[],this.depthAttachment=null,this.depthAttachmentTarget=null,this.width=0,this.height=0,this.restore()}restore(){let t=this.appState.framebuffers;for(let e in t)t[e]===this&&(t[e]=null);return this.framebuffer=this.gl.createFramebuffer(),this}colorTarget(t,e,i=(e.is3D?0:r.TEXTURE_2D)){if(t>=this.numColorTargets){let e=t+1;this.colorAttachmentEnums.length=e,this.colorAttachments.length=e,this.colorAttachmentTargets.length=e;for(let t=this.numColorTargets;t1?O:c;break;case r.BOOL:E=h>1?F:c;break;case r.FLOAT_VEC2:case r.INT_VEC2:case r.UNSIGNED_INT_VEC2:case r.FLOAT_VEC3:case r.INT_VEC3:case r.UNSIGNED_INT_VEC3:case r.FLOAT_VEC4:case r.INT_VEC4:case r.UNSIGNED_INT_VEC4:E=O;break;case r.BOOL_VEC2:case r.BOOL_VEC3:case r.BOOL_VEC4:E=F;break;case r.FLOAT_MAT2:case r.FLOAT_MAT3:case r.FLOAT_MAT4:case r.FLOAT_MAT2x3:case r.FLOAT_MAT2x4:case r.FLOAT_MAT3x2:case r.FLOAT_MAT3x4:case r.FLOAT_MAT4x2:case r.FLOAT_MAT4x3:E=C;break;default:console.error("Unrecognized type for uniform ",e.name)}E&&(this.uniforms[e.name]=new E(this.gl,s,_,h))}let i=this.gl.getProgramParameter(this.program,r.ACTIVE_UNIFORM_BLOCKS);for(let t=0;t=this.dirtyEnd)return this;let t=this.data.subarray(this.dirtyStart,this.dirtyEnd),e=4*this.dirtyStart;return this.gl.bindBuffer(this.gl.UNIFORM_BUFFER,this.buffer),this.gl.bufferSubData(this.gl.UNIFORM_BUFFER,e,t),this.gl.bindBuffer(this.gl.UNIFORM_BUFFER,null),this.dirtyStart=this.size,this.dirtyEnd=0,this}delete(){return this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=null,-1!==this.currentBase&&this.appState.uniformBuffers[this.currentBase]===this&&(this.appState.uniformBuffers[this.currentBase]=null),this.currentBase=-1),this}bind(t){let e=this.appState.uniformBuffers[t];return e!==this&&(e&&(e.currentBase=-1),-1!==this.currentBase&&(this.appState.uniformBuffers[this.currentBase]=null),this.gl.bindBufferBase(this.gl.UNIFORM_BUFFER,t,this.buffer),this.appState.uniformBuffers[t]=this,this.currentBase=t),this}}class U{constructor(t,e){this.gl=t,this.appState=e,this.vertexArray=null,this.indexType=null,this.indexed=!1,this.numElements=0,this.numInstances=1,this.offsets=0,this.numDraws=1}restore(){return this.appState.vertexArray===this&&(this.appState.vertexArray=null),null!==this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this}vertexAttributeBuffer(t,e,i=T){return this.attributeBuffer(t,e,i,!1),this}instanceAttributeBuffer(t,e,i=T){return this.attributeBuffer(t,e,i,!0),this}indexBuffer(t){return null===this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this.bind(),this.gl.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t.buffer),this.numElements=3*t.numItems,this.indexType=t.type,this.indexed=!0,this}delete(){return this.vertexArray&&(this.gl.deleteVertexArray(this.vertexArray),this.vertexArray=null,this.appState.vertexArray===this&&(this.gl.bindVertexArray(null),this.appState.vertexArray=null)),this}bind(){return this.appState.vertexArray!==this&&(this.gl.bindVertexArray(this.vertexArray),this.appState.vertexArray=this),this}attributeBuffer(t,e,i={},E){null===this.vertexArray&&(this.vertexArray=this.gl.createVertexArray()),this.bind(),this.gl.bindBuffer(r.ARRAY_BUFFER,e.buffer);let{type:_=e.type,size:h=e.itemSize,stride:a=0,offset:T=0,normalized:n=!1,integer:R=Boolean(e.integer&&!n)}=i,A=e.numColumns;0===a&&(a=A*h*s[_]);let S=Math.ceil((e.byteLength-T)/a);for(let e=0;e{let r=t.length,s=new Array(r),E=new Array(r),_=r;for(let e=0;e{let t=0;for(let e=0;e<_;++e)if(E[e].checkCompletion()){if(E[e].checkLinkage(),!E[e].linked)return void i(new Error("Program linkage failed"));++t}else E[e-t]=E[e];0===(_-=t)?e(s):requestAnimationFrame(h)};h()})}restorePrograms(...t){return new Promise((e,i)=>{let r=t.length,s=t.slice(),E=r;for(let e=0;e{let t=0;for(let e=0;e{t.preventDefault()},this.contextRestoredListener=()=>{this.initExtensions(),this.contextRestoredHandler()},this.canvas.addEventListener("webglcontextlost",this.contextLostListener),this.canvas.addEventListener("webglcontextrestored",this.contextRestoredListener)):(this.canvas.removeEventListener("webglcontextlost",this.contextLostListener),this.canvas.removeEventListener("webglcontextrestored",this.contextRestoredListener),this.contextLostListener=null,this.contextRestoredListener=null)}depthTest(){return console.warn("App.depthTest is deprecated. Use App.enable(PicoGL.DEPTH_TEST) instead."),this.enable(r.DEPTH_TEST),this}noDepthTest(){return console.warn("App.noDepthTest is deprecated. Use App.disable(PicoGL.DEPTH_TEST) instead."),this.disable(r.DEPTH_TEST),this}blend(){return console.warn("App.blend is deprecated. Use App.enable(PicoGL.BLEND) instead."),this.enable(r.BLEND),this}noBlend(){return console.warn("App.noBlend is deprecated. Use App.disable(PicoGL.BLEND) instead."),this.disable(r.BLEND),this}stencilTest(){return console.warn("App.stencilTest is deprecated. Use App.enable(PicoGL.STENCIL_TEST) instead."),this.enable(r.STENCIL_TEST),this}noStencilTest(){return console.warn("App.noStencilTest is deprecated. Use App.disable(PicoGL.STENCIL_TEST) instead."),this.disable(r.STENCIL_TEST),this}scissorTest(){return console.warn("App.scissorTest is deprecated. Use App.enable(PicoGL.SCISSOR_TEST) instead."),this.enable(r.SCISSOR_TEST),this}noScissorTest(){return console.warn("App.noScissorTest is deprecated. Use App.disable(PicoGL.SCISSOR_TEST) instead."),this.disable(r.SCISSOR_TEST),this}rasterize(){return console.warn("App.noRasterize is deprecated. Use App.disable(PicoGL.RASTERIZER_DISCARD) instead."),this.disable(r.RASTERIZER_DISCARD),this}noRasterize(){return console.warn("App.rasterize is deprecated. Use App.enable(PicoGL.RASTERIZER_DISCARD) instead."),this.enable(r.RASTERIZER_DISCARD),this}cullBackfaces(){return console.warn("App.cullBackfaces is deprecated. Use App.enable(PicoGL.CULL_FACE) instead."),this.enable(r.CULL_FACE),this}drawBackfaces(){return console.warn("App.drawBackfaces is deprecated. Use App.disable(PicoGL.CULL_FACE) instead."),this.disable(r.CULL_FACE),this}}i.d(e,"PicoGL",(function(){return G}));let p=!1;const G=Object.assign({version:"0.17.5",WEBGL_INFO:h,createApp:(t,e)=>("CANVAS"===t.tagName&&(t=t.getContext("webgl2",e)),p||(h.MAX_TEXTURE_UNITS=t.getParameter(r.MAX_COMBINED_TEXTURE_IMAGE_UNITS),h.MAX_UNIFORM_BUFFERS=t.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS),h.MAX_UNIFORMS=Math.min(t.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),t.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS)),h.SAMPLES=t.getParameter(r.SAMPLES),h.VENDOR="(Unknown)",h.RENDERER="(Unknown)",h.FLOAT_RENDER_TARGETS=Boolean(t.getExtension("EXT_color_buffer_float")),h.LINEAR_FLOAT_TEXTURES=Boolean(t.getExtension("OES_texture_float_linear")),h.S3TC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_s3tc")),h.S3TC_SRGB_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_s3tc_srgb")),h.ETC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_etc")),h.ASTC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_astc")),h.PVRTC_TEXTURES=Boolean(t.getExtension("WEBGL_compressed_texture_pvrtc")),h.LOSE_CONTEXT=Boolean(t.getExtension("WEBGL_lose_context")),h.DEBUG_SHADERS=Boolean(t.getExtension("WEBGL_debug_shaders")),h.GPU_TIMER=Boolean(t.getExtension("EXT_disjoint_timer_query_webgl2")||t.getExtension("EXT_disjoint_timer_query")),h.TEXTURE_ANISOTROPY=Boolean(t.getExtension("EXT_texture_filter_anisotropic")),h.MAX_TEXTURE_ANISOTROPY=h.TEXTURE_ANISOTROPY?t.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1,h.DEBUG_RENDERER_INFO=Boolean(t.getExtension("WEBGL_debug_renderer_info")),h.DEBUG_RENDERER_INFO&&(h.VENDOR=t.getParameter(r.UNMASKED_VENDOR_WEBGL),h.RENDERER=t.getParameter(r.UNMASKED_RENDERER_WEBGL)),h.PARALLEL_SHADER_COMPILE=Boolean(t.getExtension("KHR_parallel_shader_compile")),h.MULTI_DRAW_INSTANCED=Boolean(t.getExtension("WEBGL_multi_draw_instanced")),p=!0),new g(t))},r)}]).PicoGL})); //# sourceMappingURL=picogl.min.js.map \ No newline at end of file diff --git a/test/reference-images/test-render-vao-update-after-drawcall.html.png b/test/reference-images/test-render-vao-update-after-drawcall.html.png new file mode 100644 index 00000000..c5e104be Binary files /dev/null and b/test/reference-images/test-render-vao-update-after-drawcall.html.png differ