@zephyr3d/editor 0.3.7 → 0.3.8

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.
Files changed (61) hide show
  1. package/dist/assets/{index-ySiLtSxz.js → index-BZ1L8ggE.js} +43 -3
  2. package/dist/assistant/zephyr-types-index.json +13230 -9488
  3. package/dist/images/icon1024.png +0 -0
  4. package/dist/index.html +1 -1
  5. package/dist/modules/zephyr3d_backend-webgl.js +2 -0
  6. package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
  7. package/dist/modules/zephyr3d_backend-webgpu.js +457 -16
  8. package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
  9. package/dist/modules/zephyr3d_device.js +27 -0
  10. package/dist/modules/zephyr3d_device.js.map +1 -1
  11. package/dist/modules/zephyr3d_loaders.js +208 -1
  12. package/dist/modules/zephyr3d_loaders.js.map +1 -1
  13. package/dist/modules/zephyr3d_scene.js +774 -80
  14. package/dist/modules/zephyr3d_scene.js.map +1 -1
  15. package/dist/vendor/zephyr3d/backend-webgl/dist/capabilities_webgl.js +2 -0
  16. package/dist/vendor/zephyr3d/backend-webgl/dist/capabilities_webgl.js.map +1 -1
  17. package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js +2 -0
  18. package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js.map +1 -1
  19. package/dist/vendor/zephyr3d/backend-webgpu/dist/commandqueue.js +55 -10
  20. package/dist/vendor/zephyr3d/backend-webgpu/dist/commandqueue.js.map +1 -1
  21. package/dist/vendor/zephyr3d/backend-webgpu/dist/computepass_webgpu.js +4 -0
  22. package/dist/vendor/zephyr3d/backend-webgpu/dist/computepass_webgpu.js.map +1 -1
  23. package/dist/vendor/zephyr3d/backend-webgpu/dist/device.js +44 -1
  24. package/dist/vendor/zephyr3d/backend-webgpu/dist/device.js.map +1 -1
  25. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +58 -5
  26. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
  27. package/dist/vendor/zephyr3d/backend-webgpu/dist/timestamp_query.js +297 -0
  28. package/dist/vendor/zephyr3d/backend-webgpu/dist/timestamp_query.js.map +1 -0
  29. package/dist/vendor/zephyr3d/device/dist/base_types.js.map +1 -1
  30. package/dist/vendor/zephyr3d/device/dist/device.js +27 -0
  31. package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
  32. package/dist/vendor/zephyr3d/device/dist/index.d.ts +81 -1
  33. package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js +208 -1
  34. package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js.map +1 -1
  35. package/dist/vendor/zephyr3d/loaders/dist/index.d.ts +8 -0
  36. package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +334 -63
  37. package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
  38. package/dist/vendor/zephyr3d/scene/dist/animation/morphtargetgrouptrack.js +66 -0
  39. package/dist/vendor/zephyr3d/scene/dist/animation/morphtargetgrouptrack.js.map +1 -0
  40. package/dist/vendor/zephyr3d/scene/dist/asset/model.js +9 -0
  41. package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
  42. package/dist/vendor/zephyr3d/scene/dist/index.d.ts +260 -4
  43. package/dist/vendor/zephyr3d/scene/dist/index.js +7 -0
  44. package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
  45. package/dist/vendor/zephyr3d/scene/dist/posteffect/sao.js +1 -1
  46. package/dist/vendor/zephyr3d/scene/dist/posteffect/sao.js.map +1 -1
  47. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/executor.js +270 -1
  48. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/executor.js.map +1 -1
  49. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js +19 -1
  50. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  51. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/types.js.map +1 -1
  52. package/dist/vendor/zephyr3d/scene/dist/scene/scene.js +1 -0
  53. package/dist/vendor/zephyr3d/scene/dist/scene/scene.js.map +1 -1
  54. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +2 -1
  55. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
  56. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +70 -1
  57. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
  58. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
  59. package/package.json +6 -6
  60. package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js +0 -320
  61. package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js.map +0 -1
@@ -37,6 +37,7 @@ class WebGLMiscCaps {
37
37
  supportDepthClamp;
38
38
  maxBindGroups;
39
39
  maxTexCoordIndex;
40
+ supportTimestampQuery;
40
41
  constructor(gl){
41
42
  this._isWebGL2 = isWebGL2(gl);
42
43
  this._extBlendMinMax = null;
@@ -53,6 +54,7 @@ class WebGLMiscCaps {
53
54
  this.supportDepthClamp = false;
54
55
  this.maxBindGroups = 4;
55
56
  this.maxTexCoordIndex = 8;
57
+ this.supportTimestampQuery = false;
56
58
  }
57
59
  }
58
60
  class WebGLShaderCaps {
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities_webgl.js","sources":["../src/capabilities_webgl.ts"],"sourcesContent":["import { WebGLEnum } from './webgl_enum';\r\nimport { isWebGL2 } from './utils';\r\nimport type {\r\n WebGLContext,\r\n TextureFormat,\r\n FramebufferCaps,\r\n MiscCaps,\r\n ShaderCaps,\r\n TextureCaps,\r\n TextureFormatInfo\r\n} from '@zephyr3d/device';\r\nimport type { Immutable, Nullable } from '@zephyr3d/base';\r\n\r\nexport interface TextureParams {\r\n target: number;\r\n format: number;\r\n internalFormat: number;\r\n type: number;\r\n filterable: boolean;\r\n renderable: boolean;\r\n repeatable: boolean;\r\n compressed: boolean;\r\n generateMipmap: boolean;\r\n}\r\n\r\n/*********************************************************************************************************************\r\n * Unsized Internal Formats\r\n * --------------------------------------------------------------------------------------------\r\n * GL_RGB | GL_RGB | GL_UNSIGNED_BYTE\r\n * | | GL_UNSIGNED_SHORT_5_6_5\r\n * --------------------------------------------------------------------------------------------\r\n * GL_RGBA | GL_RGBA | GL_UNSIGNED_BYTE\r\n * | | GL_UNSIGNED_SHORT_4_4_4_4\r\n * | | GL_UNSIGNED_SHORT_5_5_5_1\r\n * --------------------------------------------------------------------------------------------\r\n * GL_LUMINANCE_ALPHA | GL_LUMINANCE_ALPHA | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n * GL_LUMINANCE | GL_LUMINANCE | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n * GL_ALPHA | GL_ALPHA | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n *\r\n *\r\n * Sized Internal Formats\r\n * ------------------------------------------------------------------------------------------------------\r\n * Sized Internal Format | Format | Type | Renderable | Filterable\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8 | GL_RED | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8_SNORM | GL_RED | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16F | GL_RED | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32F | GL_RED | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8UI | GL_RED_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8I | GL_RED_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16UI | GL_RED_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16I | GL_RED_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32UI | GL_RED_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32I | GL_RED_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8 | GL_RG | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8_SNORM | GL_RG | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16F | GL_RG | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32F | GL_RG | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8UI | GL_RG_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8I | GL_RG_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16UI | GL_RG_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16I | GL_RG_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32UI | GL_RG_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32I | GL_RG_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8 | GL_RGB | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_SRGB8 | GL_RGB | GL_UNSIGNED_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB565 | GL_RGB | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_5_6_5 | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8_SNORM | GL_RGB | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R11F_G11F_B10F | GL_RGB | GL_UNSIGNED_INT_10F_11F_11F_REV | No | Yes\r\n * | | GL_HALF_FLOAT | |\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB9_E5 | GL_RGB | GL_UNSIGNED_INT_5_9_9_9_REV | No | Yes\r\n * | | GL_HALF_FLOAT | |\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16F | GL_RGB | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32F | GL_RGB | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8UI | GL_RGB_INTEGER | GL_UNSIGNED_BYTE | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8I | GL_RGB_INTEGER | GL_BYTE | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16UI | GL_RGB_INTEGER | GL_UNSIGNED_SHORT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16I | GL_RGB_INTEGER | GL_SHORT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32UI | GL_RGB_INTEGER | GL_UNSIGNED_INT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32I | GL_RGB_INTEGER | GL_INT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_SRGB8_ALPHA8 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8_SNORM | GL_RGBA | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB5_A1 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_5_5_5_1 | |\r\n * | | GL_UNSIGNED_INT_2_10_10_10_REV | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA4 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_4_4_4_4 | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB10_A2 | GL_RGBA | GL_UNSIGNED_INT_2_10_10_10_REV | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16F | GL_RGBA | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32F | GL_RGBA | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8UI | GL_RGBA_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8I | GL_RGBA_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16UI | GL_RGBA_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16I | GL_RGBA_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32UI | GL_RGBA_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32I | GL_RGBA_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT16 | GL_DEPTH_COMPONENT | GL_UNSIGNED_SHORT | N/A | N/A\r\n * | | GL_UNSIGNED_INT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT24 | GL_DEPTH_COMPONENT | GL_UNSIGNED_INT | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT32F | GL_DEPTH_COMPONENT | GL_FLOAT | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH24_STENCIL8 | GL_DEPTH_STENCIL | GL_UNSIGNED_INT_24_8 | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH32F_STENCIL8 | GL_DEPTH_STENCIL | GL_FLOAT_32_UNSIGNED_INT_24_8_REV | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n *********************************************************************************************************************/\r\n\r\nexport interface TextureFormatInfoWebGL extends TextureFormatInfo {\r\n glFormat: number;\r\n glInternalFormat: number;\r\n glType: number[];\r\n}\r\n\r\nexport class WebGLFramebufferCaps implements FramebufferCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extDrawBuffers: Nullable<WEBGL_draw_buffers>;\r\n private readonly _extFloatBlending: Nullable<EXT_float_blend>;\r\n private readonly _extRenderMipmap: Nullable<OES_fbo_render_mipmap>;\r\n maxDrawBuffers: number;\r\n maxColorAttachmentBytesPerSample: number;\r\n supportRenderMipmap: boolean;\r\n supportMultisampledFramebuffer: boolean;\r\n supportFloatBlending: boolean;\r\n supportDepth32float: boolean;\r\n supportDepth32floatStencil8: boolean;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extDrawBuffers = this._isWebGL2 ? null : gl.getExtension('WEBGL_draw_buffers');\r\n this._extFloatBlending = gl.getExtension('EXT_float_blend');\r\n this._extRenderMipmap = this._isWebGL2 ? null : gl.getExtension('OES_fbo_render_mipmap');\r\n this.maxDrawBuffers =\r\n this._isWebGL2 || this._extDrawBuffers\r\n ? Math.min(\r\n gl.getParameter(WebGLEnum.MAX_COLOR_ATTACHMENTS),\r\n gl.getParameter(WebGLEnum.MAX_DRAW_BUFFERS)\r\n )\r\n : 1;\r\n this.maxColorAttachmentBytesPerSample = this.maxDrawBuffers * 16;\r\n this.supportRenderMipmap = isWebGL2(gl) || !!this._extRenderMipmap;\r\n this.supportMultisampledFramebuffer = isWebGL2(gl);\r\n this.supportFloatBlending = !!this._extFloatBlending;\r\n this.supportDepth32float = this._isWebGL2;\r\n this.supportDepth32floatStencil8 = this._isWebGL2;\r\n }\r\n}\r\n\r\nexport class WebGLMiscCaps implements MiscCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extIndexUint32: Nullable<OES_element_index_uint>;\r\n private readonly _extBlendMinMax: Nullable<EXT_blend_minmax>;\r\n supportOversizedViewport: boolean;\r\n supportBlendMinMax: boolean;\r\n support32BitIndex: boolean;\r\n supportDepthClamp: boolean;\r\n maxBindGroups: number;\r\n maxTexCoordIndex: number;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extBlendMinMax = null;\r\n this._extIndexUint32 = this._isWebGL2 ? gl.getExtension('OES_element_index_uint') : null;\r\n if (this._isWebGL2) {\r\n this.supportBlendMinMax = true;\r\n this.support32BitIndex = true;\r\n } else {\r\n this._extBlendMinMax = gl.getExtension('EXT_blend_minmax');\r\n this.supportBlendMinMax = !!this._extBlendMinMax;\r\n this.support32BitIndex = !!this._extIndexUint32;\r\n }\r\n this.supportOversizedViewport = true;\r\n this.supportDepthClamp = false;\r\n this.maxBindGroups = 4;\r\n this.maxTexCoordIndex = 8;\r\n }\r\n}\r\nexport class WebGLShaderCaps implements ShaderCaps {\r\n private readonly _extFragDepth: Nullable<EXT_frag_depth>;\r\n private readonly _extStandardDerivatives: Nullable<OES_standard_derivatives>;\r\n private readonly _extShaderTextureLod: Nullable<EXT_shader_texture_lod>;\r\n supportFragmentDepth: boolean;\r\n supportStandardDerivatives: boolean;\r\n supportShaderTextureLod: boolean;\r\n supportHighPrecisionFloat: boolean;\r\n maxUniformBufferSize: number;\r\n uniformBufferOffsetAlignment: number;\r\n maxStorageBufferSize: number;\r\n storageBufferOffsetAlignment: number;\r\n constructor(gl: WebGLContext) {\r\n this._extFragDepth = null;\r\n this._extStandardDerivatives = null;\r\n this._extShaderTextureLod = null;\r\n this.maxStorageBufferSize = 0;\r\n this.storageBufferOffsetAlignment = 0;\r\n if (isWebGL2(gl)) {\r\n this.supportFragmentDepth = true;\r\n this.supportStandardDerivatives = true;\r\n this.supportShaderTextureLod = true;\r\n this.supportHighPrecisionFloat = true;\r\n this.maxUniformBufferSize = gl.getParameter(gl.MAX_UNIFORM_BLOCK_SIZE) || 16384;\r\n this.uniformBufferOffsetAlignment = gl.getParameter(gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT) || 256;\r\n } else {\r\n this._extFragDepth = gl.getExtension('EXT_frag_depth');\r\n this.supportFragmentDepth = !!this._extFragDepth;\r\n this._extStandardDerivatives = gl.getExtension('OES_standard_derivatives');\r\n this.supportStandardDerivatives = !!this._extStandardDerivatives;\r\n this._extShaderTextureLod = gl.getExtension('EXT_shader_texture_lod');\r\n this.supportShaderTextureLod = !!this._extShaderTextureLod;\r\n this.supportHighPrecisionFloat =\r\n gl.getShaderPrecisionFormat &&\r\n !!gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT)?.precision &&\r\n !!gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision;\r\n this.maxUniformBufferSize = 0;\r\n this.uniformBufferOffsetAlignment = 1;\r\n }\r\n }\r\n}\r\nexport class WebGLTextureCaps implements TextureCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extS3TC: Nullable<WEBGL_compressed_texture_s3tc>;\r\n private readonly _extS3TCSRGB: Nullable<WEBGL_compressed_texture_s3tc_srgb>;\r\n private readonly _extBPTC: Nullable<EXT_texture_compression_bptc>;\r\n private readonly _extRGTC: Nullable<EXT_texture_compression_rgtc>;\r\n private readonly _extASTC: Nullable<WEBGL_compressed_texture_astc>;\r\n private readonly _extTextureFilterAnisotropic: Nullable<EXT_texture_filter_anisotropic>;\r\n private readonly _extDepthTexture: Nullable<WEBGL_depth_texture>;\r\n private readonly _extSRGB: Nullable<EXT_sRGB>;\r\n private readonly _extTextureFloat: Nullable<OES_texture_float>;\r\n private readonly _extTextureFloatLinear: Nullable<OES_texture_float_linear>;\r\n private readonly _extTextureHalfFloat: Nullable<OES_texture_half_float>;\r\n private readonly _extTextureHalfFloatLinear: Nullable<OES_texture_half_float_linear>;\r\n private readonly _textureFormatInfos: Record<TextureFormat, TextureFormatInfoWebGL>;\r\n maxTextureSize: number;\r\n maxCubeTextureSize: number;\r\n npo2Mipmapping: boolean;\r\n npo2Repeating: boolean;\r\n supportS3TC: boolean;\r\n supportS3TCSRGB: boolean;\r\n supportBPTC: boolean;\r\n supportRGTC: boolean;\r\n supportASTC: boolean;\r\n supportDepthTexture: boolean;\r\n support3DTexture: boolean;\r\n supportSRGBTexture: boolean;\r\n supportFloatTexture: boolean;\r\n supportLinearFloatTexture: boolean;\r\n supportHalfFloatTexture: boolean;\r\n supportLinearHalfFloatTexture: boolean;\r\n supportAnisotropicFiltering: boolean;\r\n supportFloatColorBuffer: boolean;\r\n supportHalfFloatColorBuffer: boolean;\r\n supportFloatBlending: boolean;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extTextureFilterAnisotropic =\r\n gl.getExtension('EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('MOZ_EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\r\n this.supportAnisotropicFiltering = !!this._extTextureFilterAnisotropic;\r\n if (this._isWebGL2) {\r\n this._extDepthTexture = null;\r\n this.supportDepthTexture = true;\r\n } else {\r\n this._extDepthTexture = gl.getExtension('WEBGL_depth_texture');\r\n this.supportDepthTexture = !!this._extDepthTexture;\r\n }\r\n this.support3DTexture = this._isWebGL2;\r\n this._extSRGB = this._isWebGL2 ? null : gl.getExtension('EXT_sRGB');\r\n this.supportSRGBTexture = this._isWebGL2 || !!this._extSRGB;\r\n if (this._isWebGL2) {\r\n this._extTextureFloat = null;\r\n this.supportFloatTexture = true;\r\n } else {\r\n this._extTextureFloat = gl.getExtension('OES_texture_float');\r\n this.supportFloatTexture = !!this._extTextureFloat;\r\n }\r\n this._extTextureFloatLinear = gl.getExtension('OES_texture_float_linear');\r\n this.supportLinearFloatTexture = !!this._extTextureFloatLinear;\r\n if (this._isWebGL2) {\r\n this._extTextureHalfFloat = null;\r\n this.supportHalfFloatTexture = true;\r\n this._extTextureHalfFloatLinear = null;\r\n this.supportLinearHalfFloatTexture = true;\r\n } else {\r\n this._extTextureHalfFloat = gl.getExtension('OES_texture_half_float');\r\n this.supportHalfFloatTexture = !!this._extTextureHalfFloat;\r\n this._extTextureHalfFloatLinear = gl.getExtension('OES_texture_half_float_linear');\r\n this.supportLinearHalfFloatTexture = !!this._extTextureHalfFloatLinear;\r\n }\r\n\r\n if (this._isWebGL2) {\r\n if (gl.getExtension('EXT_color_buffer_float')) {\r\n this.supportHalfFloatColorBuffer = true;\r\n this.supportFloatColorBuffer = true;\r\n } else if (gl.getExtension('EXT_color_buffer_half_float')) {\r\n this.supportHalfFloatColorBuffer = true;\r\n this.supportFloatColorBuffer = false;\r\n } else {\r\n this.supportHalfFloatColorBuffer = false;\r\n this.supportFloatColorBuffer = false;\r\n }\r\n } else {\r\n this.supportFloatColorBuffer = !!gl.getExtension('WEBGL_color_buffer_float');\r\n this.supportHalfFloatColorBuffer = !!gl.getExtension('EXT_color_buffer_half_float');\r\n }\r\n this.supportFloatBlending = this.supportFloatColorBuffer && !!gl.getExtension('EXT_float_blend');\r\n\r\n this._extS3TC =\r\n gl.getExtension('WEBGL_compressed_texture_s3tc') ||\r\n gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') ||\r\n gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');\r\n this.supportS3TC = !!this._extS3TC;\r\n this._extS3TCSRGB = gl.getExtension('WEBGL_compressed_texture_s3tc_srgb');\r\n this.supportS3TCSRGB = !!this._extS3TCSRGB;\r\n this._extBPTC = gl.getExtension('EXT_texture_compression_bptc');\r\n this.supportBPTC = !!this._extBPTC;\r\n this._extRGTC = gl.getExtension('EXT_texture_compression_rgtc');\r\n this.supportRGTC = !!this._extRGTC;\r\n this._extASTC = gl.getExtension('WEBGL_compressed_texture_astc');\r\n this.supportASTC = !!this._extASTC;\r\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\r\n this.maxCubeTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\r\n if (this._isWebGL2) {\r\n this.npo2Mipmapping = true;\r\n this.npo2Repeating = true;\r\n } else {\r\n this.npo2Mipmapping = false;\r\n this.npo2Repeating = false;\r\n }\r\n this._textureFormatInfos = {\r\n rgba8unorm: {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: this._isWebGL2 ? (gl as WebGL2RenderingContext).RGBA8 : gl.RGBA,\r\n glType: [gl.UNSIGNED_BYTE, gl.UNSIGNED_SHORT_4_4_4_4, gl.UNSIGNED_SHORT_5_5_5_1],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n }\r\n } as Record<TextureFormat, TextureFormatInfoWebGL>;\r\n if (this._extASTC) {\r\n for (const k of [\r\n '4x4',\r\n '5x4',\r\n '5x5',\r\n '6x5',\r\n '6x6',\r\n '8x5',\r\n '8x6',\r\n '8x8',\r\n '10x5',\r\n '10x6',\r\n '10x8',\r\n '10x10',\r\n '12x10',\r\n '12x12'\r\n ]) {\r\n const [w, h] = k.split('x').map((val) => Number(val));\r\n this._textureFormatInfos[`astc-${k}` as keyof typeof this._textureFormatInfos] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extASTC[\r\n `COMPRESSED_RGBA_ASTC_${k}_KHR` as keyof typeof this._extASTC\r\n ] as number,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: w,\r\n blockHeight: h\r\n };\r\n this._textureFormatInfos[`astc-${k}-srgb` as keyof typeof this._textureFormatInfos] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extASTC[\r\n `COMPRESSED_SRGB8_ALPHA8_ASTC_${k}_KHR` as keyof typeof this._extASTC\r\n ] as number,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: w,\r\n blockHeight: h\r\n };\r\n }\r\n }\r\n if (this._extS3TC) {\r\n this._textureFormatInfos['dxt1'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt3'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt5'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extS3TCSRGB) {\r\n this._textureFormatInfos['dxt1-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_S3TC_DXT1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt3-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt5-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extRGTC) {\r\n this._textureFormatInfos['bc4'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_RED_RGTC1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc4-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_SIGNED_RED_RGTC1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc5'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_RED_GREEN_RGTC2_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc5-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extBPTC) {\r\n this._textureFormatInfos['bc6h'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc6h-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc7'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGBA_BPTC_UNORM_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc7-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (isWebGL2(gl)) {\r\n this._textureFormatInfos['r8unorm'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r8snorm'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r16f'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r32f'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['r8ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r8i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r16ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r16i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r32ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['r32i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg8unorm'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg8snorm'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg16f'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg32f'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rg8ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg8i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg16ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg16i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg32ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rg32i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba8unorm-srgb'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.SRGB8_ALPHA8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba8snorm'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba16f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba32f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rgba8ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba8i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba16ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba16i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba32ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rgba32i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rg11b10uf'] = {\r\n glFormat: gl.RGB,\r\n glInternalFormat: gl.R11F_G11F_B10F,\r\n glType: [gl.UNSIGNED_INT_10F_11F_11F_REV],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d16'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT16,\r\n glType: [gl.UNSIGNED_SHORT, gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['d24'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT24,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d32f'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT32F,\r\n glType: [gl.FLOAT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d24s8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH24_STENCIL8,\r\n glType: [gl.UNSIGNED_INT_24_8],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d32fs8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH32F_STENCIL8,\r\n glType: [gl.FLOAT_32_UNSIGNED_INT_24_8_REV],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n } else {\r\n if (this.supportFloatTexture) {\r\n this._textureFormatInfos['rgba32f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA,\r\n glType: [gl.FLOAT, gl.UNSIGNED_BYTE, gl.UNSIGNED_SHORT_4_4_4_4, gl.UNSIGNED_SHORT_5_5_5_1],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n }\r\n if (this.supportHalfFloatTexture) {\r\n this._textureFormatInfos['rgba16f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA,\r\n glType: [\r\n WebGLEnum.HALF_FLOAT,\r\n gl.UNSIGNED_BYTE,\r\n gl.UNSIGNED_SHORT_4_4_4_4,\r\n gl.UNSIGNED_SHORT_5_5_5_1\r\n ],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n }\r\n if (this.supportSRGBTexture) {\r\n this._textureFormatInfos['rgba8unorm-srgb'] = {\r\n glFormat: WebGLEnum.SRGB_ALPHA,\r\n glInternalFormat: WebGLEnum.SRGB_ALPHA,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n }\r\n if (this.supportDepthTexture) {\r\n this._textureFormatInfos['d16'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['d24'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d24s8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH_STENCIL,\r\n glType: [WebGLEnum.UNSIGNED_INT_24_8],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n }\r\n }\r\n }\r\n calcMemoryUsage(format: TextureFormat, type: number, numPixels: number) {\r\n switch (format) {\r\n case 'd16':\r\n case 'd24':\r\n case 'd24s8':\r\n case 'd32f':\r\n switch (type) {\r\n case WebGLEnum.UNSIGNED_SHORT:\r\n return numPixels * 2;\r\n default:\r\n return numPixels * 4;\r\n }\r\n case 'd32fs8':\r\n return numPixels * 8;\r\n case 'dxt1':\r\n case 'dxt1-srgb':\r\n return numPixels / 2;\r\n case 'dxt3':\r\n case 'dxt3-srgb':\r\n case 'dxt5':\r\n case 'dxt5-srgb':\r\n return numPixels;\r\n case 'r16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 2;\r\n default:\r\n return numPixels * 4;\r\n }\r\n case 'r16i':\r\n case 'r16ui':\r\n return numPixels * 2;\r\n case 'r32f':\r\n case 'r32i':\r\n case 'r32ui':\r\n return numPixels * 4;\r\n case 'r8unorm':\r\n case 'r8snorm':\r\n case 'r8i':\r\n case 'r8ui':\r\n return numPixels;\r\n case 'rg16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 4;\r\n default:\r\n return numPixels * 8;\r\n }\r\n case 'rg16i':\r\n case 'rg16ui':\r\n return numPixels * 4;\r\n case 'rg32f':\r\n case 'rg32i':\r\n case 'rg32ui':\r\n return numPixels * 8;\r\n case 'rg8unorm':\r\n case 'rg8snorm':\r\n case 'rg8i':\r\n case 'rg8ui':\r\n return numPixels * 2;\r\n case 'rgba16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 8;\r\n default:\r\n return numPixels * 16;\r\n }\r\n case 'rgba16i':\r\n case 'rgba16ui':\r\n return numPixels * 8;\r\n case 'rgba32f':\r\n case 'rgba32i':\r\n case 'rgba32ui':\r\n return numPixels * 16;\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n case 'rgba8snorm':\r\n case 'rgba8i':\r\n case 'rgba8ui':\r\n return numPixels * 4;\r\n default:\r\n return 0;\r\n }\r\n }\r\n getTextureFormatInfo(format: TextureFormat): Immutable<TextureFormatInfoWebGL> {\r\n return this._textureFormatInfos[format];\r\n }\r\n}\r\n"],"names":["WebGLFramebufferCaps","_isWebGL2","_extDrawBuffers","_extFloatBlending","_extRenderMipmap","maxDrawBuffers","maxColorAttachmentBytesPerSample","supportRenderMipmap","supportMultisampledFramebuffer","supportFloatBlending","supportDepth32float","supportDepth32floatStencil8","gl","isWebGL2","getExtension","Math","min","getParameter","WebGLEnum","MAX_COLOR_ATTACHMENTS","MAX_DRAW_BUFFERS","WebGLMiscCaps","_extIndexUint32","_extBlendMinMax","supportOversizedViewport","supportBlendMinMax","support32BitIndex","supportDepthClamp","maxBindGroups","maxTexCoordIndex","WebGLShaderCaps","_extFragDepth","_extStandardDerivatives","_extShaderTextureLod","supportFragmentDepth","supportStandardDerivatives","supportShaderTextureLod","supportHighPrecisionFloat","maxUniformBufferSize","uniformBufferOffsetAlignment","maxStorageBufferSize","storageBufferOffsetAlignment","MAX_UNIFORM_BLOCK_SIZE","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","precision","FRAGMENT_SHADER","WebGLTextureCaps","_extS3TC","_extS3TCSRGB","_extBPTC","_extRGTC","_extASTC","_extTextureFilterAnisotropic","_extDepthTexture","_extSRGB","_extTextureFloat","_extTextureFloatLinear","_extTextureHalfFloat","_extTextureHalfFloatLinear","_textureFormatInfos","maxTextureSize","maxCubeTextureSize","npo2Mipmapping","npo2Repeating","supportS3TC","supportS3TCSRGB","supportBPTC","supportRGTC","supportASTC","supportDepthTexture","support3DTexture","supportSRGBTexture","supportFloatTexture","supportLinearFloatTexture","supportHalfFloatTexture","supportLinearHalfFloatTexture","supportAnisotropicFiltering","supportFloatColorBuffer","supportHalfFloatColorBuffer","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","rgba8unorm","glFormat","RGBA","glInternalFormat","RGBA8","glType","UNSIGNED_BYTE","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","filterable","renderable","compressed","blockWidth","blockHeight","size","k","w","h","split","map","val","Number","NONE","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","RED","R8","R8_SNORM","BYTE","R16F","HALF_FLOAT","FLOAT","R32F","RED_INTEGER","R8UI","R8I","R16UI","UNSIGNED_SHORT","R16I","SHORT","R32UI","UNSIGNED_INT","R32I","INT","RG","RG8","RG8_SNORM","RG16F","RG32F","RG8UI","RG8I","RG16UI","RG16I","RG32UI","RG32I","SRGB8_ALPHA8","RGBA8_SNORM","RGBA16F","RGBA32F","RGBA_INTEGER","RGBA8UI","RGBA8I","RGBA16UI","RGBA16I","RGBA32UI","RGBA32I","RGB","R11F_G11F_B10F","UNSIGNED_INT_10F_11F_11F_REV","DEPTH_COMPONENT","DEPTH_COMPONENT16","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","DEPTH_STENCIL","DEPTH24_STENCIL8","UNSIGNED_INT_24_8","DEPTH32F_STENCIL8","FLOAT_32_UNSIGNED_INT_24_8_REV","SRGB_ALPHA","calcMemoryUsage","format","type","numPixels","getTextureFormatInfo"],"mappings":"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"}
1
+ {"version":3,"file":"capabilities_webgl.js","sources":["../src/capabilities_webgl.ts"],"sourcesContent":["import { WebGLEnum } from './webgl_enum';\r\nimport { isWebGL2 } from './utils';\r\nimport type {\r\n WebGLContext,\r\n TextureFormat,\r\n FramebufferCaps,\r\n MiscCaps,\r\n ShaderCaps,\r\n TextureCaps,\r\n TextureFormatInfo\r\n} from '@zephyr3d/device';\r\nimport type { Immutable, Nullable } from '@zephyr3d/base';\r\n\r\nexport interface TextureParams {\r\n target: number;\r\n format: number;\r\n internalFormat: number;\r\n type: number;\r\n filterable: boolean;\r\n renderable: boolean;\r\n repeatable: boolean;\r\n compressed: boolean;\r\n generateMipmap: boolean;\r\n}\r\n\r\n/*********************************************************************************************************************\r\n * Unsized Internal Formats\r\n * --------------------------------------------------------------------------------------------\r\n * GL_RGB | GL_RGB | GL_UNSIGNED_BYTE\r\n * | | GL_UNSIGNED_SHORT_5_6_5\r\n * --------------------------------------------------------------------------------------------\r\n * GL_RGBA | GL_RGBA | GL_UNSIGNED_BYTE\r\n * | | GL_UNSIGNED_SHORT_4_4_4_4\r\n * | | GL_UNSIGNED_SHORT_5_5_5_1\r\n * --------------------------------------------------------------------------------------------\r\n * GL_LUMINANCE_ALPHA | GL_LUMINANCE_ALPHA | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n * GL_LUMINANCE | GL_LUMINANCE | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n * GL_ALPHA | GL_ALPHA | GL_UNSIGNED_BYTE\r\n * --------------------------------------------------------------------------------------------\r\n *\r\n *\r\n * Sized Internal Formats\r\n * ------------------------------------------------------------------------------------------------------\r\n * Sized Internal Format | Format | Type | Renderable | Filterable\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8 | GL_RED | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8_SNORM | GL_RED | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16F | GL_RED | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32F | GL_RED | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8UI | GL_RED_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R8I | GL_RED_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16UI | GL_RED_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R16I | GL_RED_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32UI | GL_RED_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R32I | GL_RED_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8 | GL_RG | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8_SNORM | GL_RG | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16F | GL_RG | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32F | GL_RG | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8UI | GL_RG_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG8I | GL_RG_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16UI | GL_RG_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG16I | GL_RG_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32UI | GL_RG_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RG32I | GL_RG_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8 | GL_RGB | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_SRGB8 | GL_RGB | GL_UNSIGNED_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB565 | GL_RGB | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_5_6_5 | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8_SNORM | GL_RGB | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_R11F_G11F_B10F | GL_RGB | GL_UNSIGNED_INT_10F_11F_11F_REV | No | Yes\r\n * | | GL_HALF_FLOAT | |\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB9_E5 | GL_RGB | GL_UNSIGNED_INT_5_9_9_9_REV | No | Yes\r\n * | | GL_HALF_FLOAT | |\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16F | GL_RGB | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32F | GL_RGB | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8UI | GL_RGB_INTEGER | GL_UNSIGNED_BYTE | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB8I | GL_RGB_INTEGER | GL_BYTE | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16UI | GL_RGB_INTEGER | GL_UNSIGNED_SHORT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB16I | GL_RGB_INTEGER | GL_SHORT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32UI | GL_RGB_INTEGER | GL_UNSIGNED_INT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB32I | GL_RGB_INTEGER | GL_INT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_SRGB8_ALPHA8 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8_SNORM | GL_RGBA | GL_BYTE | No | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB5_A1 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_5_5_5_1 | |\r\n * | | GL_UNSIGNED_INT_2_10_10_10_REV | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA4 | GL_RGBA | GL_UNSIGNED_BYTE | Yes | Yes\r\n * | | GL_UNSIGNED_SHORT_4_4_4_4 | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGB10_A2 | GL_RGBA | GL_UNSIGNED_INT_2_10_10_10_REV | Yes | Yes\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16F | GL_RGBA | GL_HALF_FLOAT | No | Yes\r\n * | | GL_FLOAT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32F | GL_RGBA | GL_FLOAT | No | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8UI | GL_RGBA_INTEGER | GL_UNSIGNED_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA8I | GL_RGBA_INTEGER | GL_BYTE | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16UI | GL_RGBA_INTEGER | GL_UNSIGNED_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA16I | GL_RGBA_INTEGER | GL_SHORT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32UI | GL_RGBA_INTEGER | GL_UNSIGNED_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_RGBA32I | GL_RGBA_INTEGER | GL_INT | Yes | No\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT16 | GL_DEPTH_COMPONENT | GL_UNSIGNED_SHORT | N/A | N/A\r\n * | | GL_UNSIGNED_INT | |\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT24 | GL_DEPTH_COMPONENT | GL_UNSIGNED_INT | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH_COMPONENT32F | GL_DEPTH_COMPONENT | GL_FLOAT | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH24_STENCIL8 | GL_DEPTH_STENCIL | GL_UNSIGNED_INT_24_8 | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n * GL_DEPTH32F_STENCIL8 | GL_DEPTH_STENCIL | GL_FLOAT_32_UNSIGNED_INT_24_8_REV | N/A | N/A\r\n * ------------------------------------------------------------------------------------------------------\r\n *********************************************************************************************************************/\r\n\r\nexport interface TextureFormatInfoWebGL extends TextureFormatInfo {\r\n glFormat: number;\r\n glInternalFormat: number;\r\n glType: number[];\r\n}\r\n\r\nexport class WebGLFramebufferCaps implements FramebufferCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extDrawBuffers: Nullable<WEBGL_draw_buffers>;\r\n private readonly _extFloatBlending: Nullable<EXT_float_blend>;\r\n private readonly _extRenderMipmap: Nullable<OES_fbo_render_mipmap>;\r\n maxDrawBuffers: number;\r\n maxColorAttachmentBytesPerSample: number;\r\n supportRenderMipmap: boolean;\r\n supportMultisampledFramebuffer: boolean;\r\n supportFloatBlending: boolean;\r\n supportDepth32float: boolean;\r\n supportDepth32floatStencil8: boolean;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extDrawBuffers = this._isWebGL2 ? null : gl.getExtension('WEBGL_draw_buffers');\r\n this._extFloatBlending = gl.getExtension('EXT_float_blend');\r\n this._extRenderMipmap = this._isWebGL2 ? null : gl.getExtension('OES_fbo_render_mipmap');\r\n this.maxDrawBuffers =\r\n this._isWebGL2 || this._extDrawBuffers\r\n ? Math.min(\r\n gl.getParameter(WebGLEnum.MAX_COLOR_ATTACHMENTS),\r\n gl.getParameter(WebGLEnum.MAX_DRAW_BUFFERS)\r\n )\r\n : 1;\r\n this.maxColorAttachmentBytesPerSample = this.maxDrawBuffers * 16;\r\n this.supportRenderMipmap = isWebGL2(gl) || !!this._extRenderMipmap;\r\n this.supportMultisampledFramebuffer = isWebGL2(gl);\r\n this.supportFloatBlending = !!this._extFloatBlending;\r\n this.supportDepth32float = this._isWebGL2;\r\n this.supportDepth32floatStencil8 = this._isWebGL2;\r\n }\r\n}\r\n\r\nexport class WebGLMiscCaps implements MiscCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extIndexUint32: Nullable<OES_element_index_uint>;\r\n private readonly _extBlendMinMax: Nullable<EXT_blend_minmax>;\r\n supportOversizedViewport: boolean;\r\n supportBlendMinMax: boolean;\r\n support32BitIndex: boolean;\r\n supportDepthClamp: boolean;\r\n maxBindGroups: number;\r\n maxTexCoordIndex: number;\r\n supportTimestampQuery: boolean;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extBlendMinMax = null;\r\n this._extIndexUint32 = this._isWebGL2 ? gl.getExtension('OES_element_index_uint') : null;\r\n if (this._isWebGL2) {\r\n this.supportBlendMinMax = true;\r\n this.support32BitIndex = true;\r\n } else {\r\n this._extBlendMinMax = gl.getExtension('EXT_blend_minmax');\r\n this.supportBlendMinMax = !!this._extBlendMinMax;\r\n this.support32BitIndex = !!this._extIndexUint32;\r\n }\r\n this.supportOversizedViewport = true;\r\n this.supportDepthClamp = false;\r\n this.maxBindGroups = 4;\r\n this.maxTexCoordIndex = 8;\r\n this.supportTimestampQuery = false;\r\n }\r\n}\r\nexport class WebGLShaderCaps implements ShaderCaps {\r\n private readonly _extFragDepth: Nullable<EXT_frag_depth>;\r\n private readonly _extStandardDerivatives: Nullable<OES_standard_derivatives>;\r\n private readonly _extShaderTextureLod: Nullable<EXT_shader_texture_lod>;\r\n supportFragmentDepth: boolean;\r\n supportStandardDerivatives: boolean;\r\n supportShaderTextureLod: boolean;\r\n supportHighPrecisionFloat: boolean;\r\n maxUniformBufferSize: number;\r\n uniformBufferOffsetAlignment: number;\r\n maxStorageBufferSize: number;\r\n storageBufferOffsetAlignment: number;\r\n constructor(gl: WebGLContext) {\r\n this._extFragDepth = null;\r\n this._extStandardDerivatives = null;\r\n this._extShaderTextureLod = null;\r\n this.maxStorageBufferSize = 0;\r\n this.storageBufferOffsetAlignment = 0;\r\n if (isWebGL2(gl)) {\r\n this.supportFragmentDepth = true;\r\n this.supportStandardDerivatives = true;\r\n this.supportShaderTextureLod = true;\r\n this.supportHighPrecisionFloat = true;\r\n this.maxUniformBufferSize = gl.getParameter(gl.MAX_UNIFORM_BLOCK_SIZE) || 16384;\r\n this.uniformBufferOffsetAlignment = gl.getParameter(gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT) || 256;\r\n } else {\r\n this._extFragDepth = gl.getExtension('EXT_frag_depth');\r\n this.supportFragmentDepth = !!this._extFragDepth;\r\n this._extStandardDerivatives = gl.getExtension('OES_standard_derivatives');\r\n this.supportStandardDerivatives = !!this._extStandardDerivatives;\r\n this._extShaderTextureLod = gl.getExtension('EXT_shader_texture_lod');\r\n this.supportShaderTextureLod = !!this._extShaderTextureLod;\r\n this.supportHighPrecisionFloat =\r\n gl.getShaderPrecisionFormat &&\r\n !!gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT)?.precision &&\r\n !!gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)?.precision;\r\n this.maxUniformBufferSize = 0;\r\n this.uniformBufferOffsetAlignment = 1;\r\n }\r\n }\r\n}\r\nexport class WebGLTextureCaps implements TextureCaps {\r\n private readonly _isWebGL2: boolean;\r\n private readonly _extS3TC: Nullable<WEBGL_compressed_texture_s3tc>;\r\n private readonly _extS3TCSRGB: Nullable<WEBGL_compressed_texture_s3tc_srgb>;\r\n private readonly _extBPTC: Nullable<EXT_texture_compression_bptc>;\r\n private readonly _extRGTC: Nullable<EXT_texture_compression_rgtc>;\r\n private readonly _extASTC: Nullable<WEBGL_compressed_texture_astc>;\r\n private readonly _extTextureFilterAnisotropic: Nullable<EXT_texture_filter_anisotropic>;\r\n private readonly _extDepthTexture: Nullable<WEBGL_depth_texture>;\r\n private readonly _extSRGB: Nullable<EXT_sRGB>;\r\n private readonly _extTextureFloat: Nullable<OES_texture_float>;\r\n private readonly _extTextureFloatLinear: Nullable<OES_texture_float_linear>;\r\n private readonly _extTextureHalfFloat: Nullable<OES_texture_half_float>;\r\n private readonly _extTextureHalfFloatLinear: Nullable<OES_texture_half_float_linear>;\r\n private readonly _textureFormatInfos: Record<TextureFormat, TextureFormatInfoWebGL>;\r\n maxTextureSize: number;\r\n maxCubeTextureSize: number;\r\n npo2Mipmapping: boolean;\r\n npo2Repeating: boolean;\r\n supportS3TC: boolean;\r\n supportS3TCSRGB: boolean;\r\n supportBPTC: boolean;\r\n supportRGTC: boolean;\r\n supportASTC: boolean;\r\n supportDepthTexture: boolean;\r\n support3DTexture: boolean;\r\n supportSRGBTexture: boolean;\r\n supportFloatTexture: boolean;\r\n supportLinearFloatTexture: boolean;\r\n supportHalfFloatTexture: boolean;\r\n supportLinearHalfFloatTexture: boolean;\r\n supportAnisotropicFiltering: boolean;\r\n supportFloatColorBuffer: boolean;\r\n supportHalfFloatColorBuffer: boolean;\r\n supportFloatBlending: boolean;\r\n constructor(gl: WebGLContext) {\r\n this._isWebGL2 = isWebGL2(gl);\r\n this._extTextureFilterAnisotropic =\r\n gl.getExtension('EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('MOZ_EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\r\n this.supportAnisotropicFiltering = !!this._extTextureFilterAnisotropic;\r\n if (this._isWebGL2) {\r\n this._extDepthTexture = null;\r\n this.supportDepthTexture = true;\r\n } else {\r\n this._extDepthTexture = gl.getExtension('WEBGL_depth_texture');\r\n this.supportDepthTexture = !!this._extDepthTexture;\r\n }\r\n this.support3DTexture = this._isWebGL2;\r\n this._extSRGB = this._isWebGL2 ? null : gl.getExtension('EXT_sRGB');\r\n this.supportSRGBTexture = this._isWebGL2 || !!this._extSRGB;\r\n if (this._isWebGL2) {\r\n this._extTextureFloat = null;\r\n this.supportFloatTexture = true;\r\n } else {\r\n this._extTextureFloat = gl.getExtension('OES_texture_float');\r\n this.supportFloatTexture = !!this._extTextureFloat;\r\n }\r\n this._extTextureFloatLinear = gl.getExtension('OES_texture_float_linear');\r\n this.supportLinearFloatTexture = !!this._extTextureFloatLinear;\r\n if (this._isWebGL2) {\r\n this._extTextureHalfFloat = null;\r\n this.supportHalfFloatTexture = true;\r\n this._extTextureHalfFloatLinear = null;\r\n this.supportLinearHalfFloatTexture = true;\r\n } else {\r\n this._extTextureHalfFloat = gl.getExtension('OES_texture_half_float');\r\n this.supportHalfFloatTexture = !!this._extTextureHalfFloat;\r\n this._extTextureHalfFloatLinear = gl.getExtension('OES_texture_half_float_linear');\r\n this.supportLinearHalfFloatTexture = !!this._extTextureHalfFloatLinear;\r\n }\r\n\r\n if (this._isWebGL2) {\r\n if (gl.getExtension('EXT_color_buffer_float')) {\r\n this.supportHalfFloatColorBuffer = true;\r\n this.supportFloatColorBuffer = true;\r\n } else if (gl.getExtension('EXT_color_buffer_half_float')) {\r\n this.supportHalfFloatColorBuffer = true;\r\n this.supportFloatColorBuffer = false;\r\n } else {\r\n this.supportHalfFloatColorBuffer = false;\r\n this.supportFloatColorBuffer = false;\r\n }\r\n } else {\r\n this.supportFloatColorBuffer = !!gl.getExtension('WEBGL_color_buffer_float');\r\n this.supportHalfFloatColorBuffer = !!gl.getExtension('EXT_color_buffer_half_float');\r\n }\r\n this.supportFloatBlending = this.supportFloatColorBuffer && !!gl.getExtension('EXT_float_blend');\r\n\r\n this._extS3TC =\r\n gl.getExtension('WEBGL_compressed_texture_s3tc') ||\r\n gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') ||\r\n gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');\r\n this.supportS3TC = !!this._extS3TC;\r\n this._extS3TCSRGB = gl.getExtension('WEBGL_compressed_texture_s3tc_srgb');\r\n this.supportS3TCSRGB = !!this._extS3TCSRGB;\r\n this._extBPTC = gl.getExtension('EXT_texture_compression_bptc');\r\n this.supportBPTC = !!this._extBPTC;\r\n this._extRGTC = gl.getExtension('EXT_texture_compression_rgtc');\r\n this.supportRGTC = !!this._extRGTC;\r\n this._extASTC = gl.getExtension('WEBGL_compressed_texture_astc');\r\n this.supportASTC = !!this._extASTC;\r\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\r\n this.maxCubeTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\r\n if (this._isWebGL2) {\r\n this.npo2Mipmapping = true;\r\n this.npo2Repeating = true;\r\n } else {\r\n this.npo2Mipmapping = false;\r\n this.npo2Repeating = false;\r\n }\r\n this._textureFormatInfos = {\r\n rgba8unorm: {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: this._isWebGL2 ? (gl as WebGL2RenderingContext).RGBA8 : gl.RGBA,\r\n glType: [gl.UNSIGNED_BYTE, gl.UNSIGNED_SHORT_4_4_4_4, gl.UNSIGNED_SHORT_5_5_5_1],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n }\r\n } as Record<TextureFormat, TextureFormatInfoWebGL>;\r\n if (this._extASTC) {\r\n for (const k of [\r\n '4x4',\r\n '5x4',\r\n '5x5',\r\n '6x5',\r\n '6x6',\r\n '8x5',\r\n '8x6',\r\n '8x8',\r\n '10x5',\r\n '10x6',\r\n '10x8',\r\n '10x10',\r\n '12x10',\r\n '12x12'\r\n ]) {\r\n const [w, h] = k.split('x').map((val) => Number(val));\r\n this._textureFormatInfos[`astc-${k}` as keyof typeof this._textureFormatInfos] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extASTC[\r\n `COMPRESSED_RGBA_ASTC_${k}_KHR` as keyof typeof this._extASTC\r\n ] as number,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: w,\r\n blockHeight: h\r\n };\r\n this._textureFormatInfos[`astc-${k}-srgb` as keyof typeof this._textureFormatInfos] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extASTC[\r\n `COMPRESSED_SRGB8_ALPHA8_ASTC_${k}_KHR` as keyof typeof this._extASTC\r\n ] as number,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: w,\r\n blockHeight: h\r\n };\r\n }\r\n }\r\n if (this._extS3TC) {\r\n this._textureFormatInfos['dxt1'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt3'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt5'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extS3TCSRGB) {\r\n this._textureFormatInfos['dxt1-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_S3TC_DXT1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt3-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['dxt5-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extS3TCSRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extRGTC) {\r\n this._textureFormatInfos['bc4'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_RED_RGTC1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc4-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_SIGNED_RED_RGTC1_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 8,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc5'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_RED_GREEN_RGTC2_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc5-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extRGTC.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (this._extBPTC) {\r\n this._textureFormatInfos['bc6h'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc6h-signed'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc7'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_RGBA_BPTC_UNORM_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n this._textureFormatInfos['bc7-srgb'] = {\r\n glFormat: gl.NONE,\r\n glInternalFormat: this._extBPTC.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,\r\n glType: [gl.NONE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: true,\r\n size: 16,\r\n blockWidth: 4,\r\n blockHeight: 4\r\n };\r\n }\r\n if (isWebGL2(gl)) {\r\n this._textureFormatInfos['r8unorm'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r8snorm'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r16f'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r32f'] = {\r\n glFormat: gl.RED,\r\n glInternalFormat: gl.R32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['r8ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r8i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 1\r\n };\r\n this._textureFormatInfos['r16ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r16i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['r32ui'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['r32i'] = {\r\n glFormat: gl.RED_INTEGER,\r\n glInternalFormat: gl.R32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg8unorm'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg8snorm'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg16f'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg32f'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rg8ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg8i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['rg16ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg16i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rg32ui'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rg32i'] = {\r\n glFormat: gl.RG,\r\n glInternalFormat: gl.RG32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba8unorm-srgb'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.SRGB8_ALPHA8,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba8snorm'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA8_SNORM,\r\n glType: [gl.BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba16f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA16F,\r\n glType: [gl.HALF_FLOAT, gl.FLOAT],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba32f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA32F,\r\n glType: [gl.FLOAT],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rgba8ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA8UI,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba8i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA8I,\r\n glType: [gl.BYTE],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['rgba16ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA16UI,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba16i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA16I,\r\n glType: [gl.SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n this._textureFormatInfos['rgba32ui'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA32UI,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rgba32i'] = {\r\n glFormat: gl.RGBA_INTEGER,\r\n glInternalFormat: gl.RGBA32I,\r\n glType: [gl.INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n this._textureFormatInfos['rg11b10uf'] = {\r\n glFormat: gl.RGB,\r\n glInternalFormat: gl.R11F_G11F_B10F,\r\n glType: [gl.UNSIGNED_INT_10F_11F_11F_REV],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d16'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT16,\r\n glType: [gl.UNSIGNED_SHORT, gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['d24'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT24,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d32f'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT32F,\r\n glType: [gl.FLOAT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d24s8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH24_STENCIL8,\r\n glType: [gl.UNSIGNED_INT_24_8],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d32fs8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH32F_STENCIL8,\r\n glType: [gl.FLOAT_32_UNSIGNED_INT_24_8_REV],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n } else {\r\n if (this.supportFloatTexture) {\r\n this._textureFormatInfos['rgba32f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA,\r\n glType: [gl.FLOAT, gl.UNSIGNED_BYTE, gl.UNSIGNED_SHORT_4_4_4_4, gl.UNSIGNED_SHORT_5_5_5_1],\r\n filterable: this.supportLinearFloatTexture,\r\n renderable: this.supportFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 16\r\n };\r\n }\r\n if (this.supportHalfFloatTexture) {\r\n this._textureFormatInfos['rgba16f'] = {\r\n glFormat: gl.RGBA,\r\n glInternalFormat: gl.RGBA,\r\n glType: [\r\n WebGLEnum.HALF_FLOAT,\r\n gl.UNSIGNED_BYTE,\r\n gl.UNSIGNED_SHORT_4_4_4_4,\r\n gl.UNSIGNED_SHORT_5_5_5_1\r\n ],\r\n filterable: this.supportLinearHalfFloatTexture,\r\n renderable: this.supportHalfFloatColorBuffer,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 8\r\n };\r\n }\r\n if (this.supportSRGBTexture) {\r\n this._textureFormatInfos['rgba8unorm-srgb'] = {\r\n glFormat: WebGLEnum.SRGB_ALPHA,\r\n glInternalFormat: WebGLEnum.SRGB_ALPHA,\r\n glType: [gl.UNSIGNED_BYTE],\r\n filterable: true,\r\n renderable: false,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n }\r\n if (this.supportDepthTexture) {\r\n this._textureFormatInfos['d16'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT,\r\n glType: [gl.UNSIGNED_SHORT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 2\r\n };\r\n this._textureFormatInfos['d24'] = {\r\n glFormat: gl.DEPTH_COMPONENT,\r\n glInternalFormat: gl.DEPTH_COMPONENT,\r\n glType: [gl.UNSIGNED_INT],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n this._textureFormatInfos['d24s8'] = {\r\n glFormat: gl.DEPTH_STENCIL,\r\n glInternalFormat: gl.DEPTH_STENCIL,\r\n glType: [WebGLEnum.UNSIGNED_INT_24_8],\r\n filterable: false,\r\n renderable: true,\r\n compressed: false,\r\n blockWidth: 1,\r\n blockHeight: 1,\r\n size: 4\r\n };\r\n }\r\n }\r\n }\r\n calcMemoryUsage(format: TextureFormat, type: number, numPixels: number) {\r\n switch (format) {\r\n case 'd16':\r\n case 'd24':\r\n case 'd24s8':\r\n case 'd32f':\r\n switch (type) {\r\n case WebGLEnum.UNSIGNED_SHORT:\r\n return numPixels * 2;\r\n default:\r\n return numPixels * 4;\r\n }\r\n case 'd32fs8':\r\n return numPixels * 8;\r\n case 'dxt1':\r\n case 'dxt1-srgb':\r\n return numPixels / 2;\r\n case 'dxt3':\r\n case 'dxt3-srgb':\r\n case 'dxt5':\r\n case 'dxt5-srgb':\r\n return numPixels;\r\n case 'r16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 2;\r\n default:\r\n return numPixels * 4;\r\n }\r\n case 'r16i':\r\n case 'r16ui':\r\n return numPixels * 2;\r\n case 'r32f':\r\n case 'r32i':\r\n case 'r32ui':\r\n return numPixels * 4;\r\n case 'r8unorm':\r\n case 'r8snorm':\r\n case 'r8i':\r\n case 'r8ui':\r\n return numPixels;\r\n case 'rg16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 4;\r\n default:\r\n return numPixels * 8;\r\n }\r\n case 'rg16i':\r\n case 'rg16ui':\r\n return numPixels * 4;\r\n case 'rg32f':\r\n case 'rg32i':\r\n case 'rg32ui':\r\n return numPixels * 8;\r\n case 'rg8unorm':\r\n case 'rg8snorm':\r\n case 'rg8i':\r\n case 'rg8ui':\r\n return numPixels * 2;\r\n case 'rgba16f':\r\n switch (type) {\r\n case WebGLEnum.HALF_FLOAT:\r\n return numPixels * 8;\r\n default:\r\n return numPixels * 16;\r\n }\r\n case 'rgba16i':\r\n case 'rgba16ui':\r\n return numPixels * 8;\r\n case 'rgba32f':\r\n case 'rgba32i':\r\n case 'rgba32ui':\r\n return numPixels * 16;\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n case 'rgba8snorm':\r\n case 'rgba8i':\r\n case 'rgba8ui':\r\n return numPixels * 4;\r\n default:\r\n return 0;\r\n }\r\n }\r\n getTextureFormatInfo(format: TextureFormat): Immutable<TextureFormatInfoWebGL> {\r\n return this._textureFormatInfos[format];\r\n }\r\n}\r\n"],"names":["WebGLFramebufferCaps","_isWebGL2","_extDrawBuffers","_extFloatBlending","_extRenderMipmap","maxDrawBuffers","maxColorAttachmentBytesPerSample","supportRenderMipmap","supportMultisampledFramebuffer","supportFloatBlending","supportDepth32float","supportDepth32floatStencil8","gl","isWebGL2","getExtension","Math","min","getParameter","WebGLEnum","MAX_COLOR_ATTACHMENTS","MAX_DRAW_BUFFERS","WebGLMiscCaps","_extIndexUint32","_extBlendMinMax","supportOversizedViewport","supportBlendMinMax","support32BitIndex","supportDepthClamp","maxBindGroups","maxTexCoordIndex","supportTimestampQuery","WebGLShaderCaps","_extFragDepth","_extStandardDerivatives","_extShaderTextureLod","supportFragmentDepth","supportStandardDerivatives","supportShaderTextureLod","supportHighPrecisionFloat","maxUniformBufferSize","uniformBufferOffsetAlignment","maxStorageBufferSize","storageBufferOffsetAlignment","MAX_UNIFORM_BLOCK_SIZE","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","precision","FRAGMENT_SHADER","WebGLTextureCaps","_extS3TC","_extS3TCSRGB","_extBPTC","_extRGTC","_extASTC","_extTextureFilterAnisotropic","_extDepthTexture","_extSRGB","_extTextureFloat","_extTextureFloatLinear","_extTextureHalfFloat","_extTextureHalfFloatLinear","_textureFormatInfos","maxTextureSize","maxCubeTextureSize","npo2Mipmapping","npo2Repeating","supportS3TC","supportS3TCSRGB","supportBPTC","supportRGTC","supportASTC","supportDepthTexture","support3DTexture","supportSRGBTexture","supportFloatTexture","supportLinearFloatTexture","supportHalfFloatTexture","supportLinearHalfFloatTexture","supportAnisotropicFiltering","supportFloatColorBuffer","supportHalfFloatColorBuffer","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","rgba8unorm","glFormat","RGBA","glInternalFormat","RGBA8","glType","UNSIGNED_BYTE","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","filterable","renderable","compressed","blockWidth","blockHeight","size","k","w","h","split","map","val","Number","NONE","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","RED","R8","R8_SNORM","BYTE","R16F","HALF_FLOAT","FLOAT","R32F","RED_INTEGER","R8UI","R8I","R16UI","UNSIGNED_SHORT","R16I","SHORT","R32UI","UNSIGNED_INT","R32I","INT","RG","RG8","RG8_SNORM","RG16F","RG32F","RG8UI","RG8I","RG16UI","RG16I","RG32UI","RG32I","SRGB8_ALPHA8","RGBA8_SNORM","RGBA16F","RGBA32F","RGBA_INTEGER","RGBA8UI","RGBA8I","RGBA16UI","RGBA16I","RGBA32UI","RGBA32I","RGB","R11F_G11F_B10F","UNSIGNED_INT_10F_11F_11F_REV","DEPTH_COMPONENT","DEPTH_COMPONENT16","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","DEPTH_STENCIL","DEPTH24_STENCIL8","UNSIGNED_INT_24_8","DEPTH32F_STENCIL8","FLOAT_32_UNSIGNED_INT_24_8_REV","SRGB_ALPHA","calcMemoryUsage","format","type","numPixels","getTextureFormatInfo"],"mappings":";;;AA8KO,MAAMA,oBAAAA,CAAAA;IACMC,SAAmB;IACnBC,eAA8C;IAC9CC,iBAA6C;IAC7CC,gBAAkD;IACnEC,cAAuB;IACvBC,gCAAyC;IACzCC,mBAA6B;IAC7BC,8BAAwC;IACxCC,oBAA8B;IAC9BC,mBAA6B;IAC7BC,2BAAqC;AACrC,IAAA,WAAA,CAAYC,EAAgB,CAAE;QAC5B,IAAI,CAACX,SAAS,GAAGY,QAASD,CAAAA,EAAAA,CAAAA;QAC1B,IAAI,CAACV,eAAe,GAAG,IAAI,CAACD,SAAS,GAAG,IAAA,GAAOW,EAAGE,CAAAA,YAAY,CAAC,oBAAA,CAAA;AAC/D,QAAA,IAAI,CAACX,iBAAiB,GAAGS,EAAAA,CAAGE,YAAY,CAAC,iBAAA,CAAA;QACzC,IAAI,CAACV,gBAAgB,GAAG,IAAI,CAACH,SAAS,GAAG,IAAA,GAAOW,EAAGE,CAAAA,YAAY,CAAC,uBAAA,CAAA;QAChE,IAAI,CAACT,cAAc,GACjB,IAAI,CAACJ,SAAS,IAAI,IAAI,CAACC,eAAe,GAClCa,IAAAA,CAAKC,GAAG,CACNJ,EAAAA,CAAGK,YAAY,CAACC,SAAUC,CAAAA,qBAAqB,CAC/CP,EAAAA,EAAAA,CAAGK,YAAY,CAACC,SAAUE,CAAAA,gBAAgB,CAE5C,CAAA,GAAA,CAAA;AACN,QAAA,IAAI,CAACd,gCAAgC,GAAG,IAAI,CAACD,cAAc,GAAG,EAAA;QAC9D,IAAI,CAACE,mBAAmB,GAAGM,QAAAA,CAASD,OAAO,CAAC,CAAC,IAAI,CAACR,gBAAgB;QAClE,IAAI,CAACI,8BAA8B,GAAGK,QAASD,CAAAA,EAAAA,CAAAA;AAC/C,QAAA,IAAI,CAACH,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAACN,iBAAiB;AACpD,QAAA,IAAI,CAACO,mBAAmB,GAAG,IAAI,CAACT,SAAS;AACzC,QAAA,IAAI,CAACU,2BAA2B,GAAG,IAAI,CAACV,SAAS;AACnD;AACF;AAEO,MAAMoB,aAAAA,CAAAA;IACMpB,SAAmB;IACnBqB,eAAkD;IAClDC,eAA4C;IAC7DC,wBAAkC;IAClCC,kBAA4B;IAC5BC,iBAA2B;IAC3BC,iBAA2B;IAC3BC,aAAsB;IACtBC,gBAAyB;IACzBC,qBAA+B;AAC/B,IAAA,WAAA,CAAYlB,EAAgB,CAAE;QAC5B,IAAI,CAACX,SAAS,GAAGY,QAASD,CAAAA,EAAAA,CAAAA;QAC1B,IAAI,CAACW,eAAe,GAAG,IAAA;QACvB,IAAI,CAACD,eAAe,GAAG,IAAI,CAACrB,SAAS,GAAGW,EAAAA,CAAGE,YAAY,CAAC,wBAA4B,CAAA,GAAA,IAAA;QACpF,IAAI,IAAI,CAACb,SAAS,EAAE;YAClB,IAAI,CAACwB,kBAAkB,GAAG,IAAA;YAC1B,IAAI,CAACC,iBAAiB,GAAG,IAAA;SACpB,MAAA;AACL,YAAA,IAAI,CAACH,eAAe,GAAGX,EAAAA,CAAGE,YAAY,CAAC,kBAAA,CAAA;AACvC,YAAA,IAAI,CAACW,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAACF,eAAe;AAChD,YAAA,IAAI,CAACG,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAACJ,eAAe;AACjD;QACA,IAAI,CAACE,wBAAwB,GAAG,IAAA;QAChC,IAAI,CAACG,iBAAiB,GAAG,KAAA;QACzB,IAAI,CAACC,aAAa,GAAG,CAAA;QACrB,IAAI,CAACC,gBAAgB,GAAG,CAAA;QACxB,IAAI,CAACC,qBAAqB,GAAG,KAAA;AAC/B;AACF;AACO,MAAMC,eAAAA,CAAAA;IACMC,aAAwC;IACxCC,uBAA4D;IAC5DC,oBAAuD;IACxEC,oBAA8B;IAC9BC,0BAAoC;IACpCC,uBAAiC;IACjCC,yBAAmC;IACnCC,oBAA6B;IAC7BC,4BAAqC;IACrCC,oBAA6B;IAC7BC,4BAAqC;AACrC,IAAA,WAAA,CAAY9B,EAAgB,CAAE;QAC5B,IAAI,CAACoB,aAAa,GAAG,IAAA;QACrB,IAAI,CAACC,uBAAuB,GAAG,IAAA;QAC/B,IAAI,CAACC,oBAAoB,GAAG,IAAA;QAC5B,IAAI,CAACO,oBAAoB,GAAG,CAAA;QAC5B,IAAI,CAACC,4BAA4B,GAAG,CAAA;AACpC,QAAA,IAAI7B,SAASD,EAAK,CAAA,EAAA;YAChB,IAAI,CAACuB,oBAAoB,GAAG,IAAA;YAC5B,IAAI,CAACC,0BAA0B,GAAG,IAAA;YAClC,IAAI,CAACC,uBAAuB,GAAG,IAAA;YAC/B,IAAI,CAACC,yBAAyB,GAAG,IAAA;YACjC,IAAI,CAACC,oBAAoB,GAAG3B,EAAAA,CAAGK,YAAY,CAACL,EAAAA,CAAG+B,sBAAsB,CAAK,IAAA,KAAA;YAC1E,IAAI,CAACH,4BAA4B,GAAG5B,EAAAA,CAAGK,YAAY,CAACL,EAAAA,CAAGgC,+BAA+B,CAAK,IAAA,GAAA;SACtF,MAAA;AACL,YAAA,IAAI,CAACZ,aAAa,GAAGpB,EAAAA,CAAGE,YAAY,CAAC,gBAAA,CAAA;AACrC,YAAA,IAAI,CAACqB,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAACH,aAAa;AAChD,YAAA,IAAI,CAACC,uBAAuB,GAAGrB,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA;AAC/C,YAAA,IAAI,CAACsB,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAACH,uBAAuB;AAChE,YAAA,IAAI,CAACC,oBAAoB,GAAGtB,EAAAA,CAAGE,YAAY,CAAC,wBAAA,CAAA;AAC5C,YAAA,IAAI,CAACuB,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAACH,oBAAoB;AAC1D,YAAA,IAAI,CAACI,yBAAyB,GAC5B1B,EAAAA,CAAGiC,wBAAwB,IAC3B,CAAC,CAACjC,EAAGiC,CAAAA,wBAAwB,CAACjC,EAAAA,CAAGkC,aAAa,EAAElC,EAAGmC,CAAAA,UAAU,CAAGC,EAAAA,SAAAA,IAChE,CAAC,CAACpC,EAAGiC,CAAAA,wBAAwB,CAACjC,EAAAA,CAAGqC,eAAe,EAAErC,EAAGmC,CAAAA,UAAU,CAAGC,EAAAA,SAAAA;YACpE,IAAI,CAACT,oBAAoB,GAAG,CAAA;YAC5B,IAAI,CAACC,4BAA4B,GAAG,CAAA;AACtC;AACF;AACF;AACO,MAAMU,gBAAAA,CAAAA;IACMjD,SAAmB;IACnBkD,QAAkD;IAClDC,YAA2D;IAC3DC,QAAiD;IACjDC,QAAiD;IACjDC,QAAkD;IAClDC,4BAAuE;IACvEC,gBAAgD;IAChDC,QAA6B;IAC7BC,gBAA8C;IAC9CC,sBAA2D;IAC3DC,oBAAuD;IACvDC,0BAAoE;IACpEC,mBAAmE;IACpFC,cAAuB;IACvBC,kBAA2B;IAC3BC,cAAwB;IACxBC,aAAuB;IACvBC,WAAqB;IACrBC,eAAyB;IACzBC,WAAqB;IACrBC,WAAqB;IACrBC,WAAqB;IACrBC,mBAA6B;IAC7BC,gBAA0B;IAC1BC,kBAA4B;IAC5BC,mBAA6B;IAC7BC,yBAAmC;IACnCC,uBAAiC;IACjCC,6BAAuC;IACvCC,2BAAqC;IACrCC,uBAAiC;IACjCC,2BAAqC;IACrCzE,oBAA8B;AAC9B,IAAA,WAAA,CAAYG,EAAgB,CAAE;QAC5B,IAAI,CAACX,SAAS,GAAGY,QAASD,CAAAA,EAAAA,CAAAA;AAC1B,QAAA,IAAI,CAAC4C,4BAA4B,GAC/B5C,EAAAA,CAAGE,YAAY,CAAC,gCAChBF,CAAAA,IAAAA,EAAAA,CAAGE,YAAY,CAAC,oCAChBF,CAAAA,IAAAA,EAAAA,CAAGE,YAAY,CAAC,uCAAA,CAAA;AAClB,QAAA,IAAI,CAACkE,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAACxB,4BAA4B;QACtE,IAAI,IAAI,CAACvD,SAAS,EAAE;YAClB,IAAI,CAACwD,gBAAgB,GAAG,IAAA;YACxB,IAAI,CAACgB,mBAAmB,GAAG,IAAA;SACtB,MAAA;AACL,YAAA,IAAI,CAAChB,gBAAgB,GAAG7C,EAAAA,CAAGE,YAAY,CAAC,qBAAA,CAAA;AACxC,YAAA,IAAI,CAAC2D,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAChB,gBAAgB;AACpD;AACA,QAAA,IAAI,CAACiB,gBAAgB,GAAG,IAAI,CAACzE,SAAS;QACtC,IAAI,CAACyD,QAAQ,GAAG,IAAI,CAACzD,SAAS,GAAG,IAAA,GAAOW,EAAGE,CAAAA,YAAY,CAAC,UAAA,CAAA;QACxD,IAAI,CAAC6D,kBAAkB,GAAG,IAAI,CAAC1E,SAAS,IAAI,CAAC,CAAC,IAAI,CAACyD,QAAQ;QAC3D,IAAI,IAAI,CAACzD,SAAS,EAAE;YAClB,IAAI,CAAC0D,gBAAgB,GAAG,IAAA;YACxB,IAAI,CAACiB,mBAAmB,GAAG,IAAA;SACtB,MAAA;AACL,YAAA,IAAI,CAACjB,gBAAgB,GAAG/C,EAAAA,CAAGE,YAAY,CAAC,mBAAA,CAAA;AACxC,YAAA,IAAI,CAAC8D,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAACjB,gBAAgB;AACpD;AACA,QAAA,IAAI,CAACC,sBAAsB,GAAGhD,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA;AAC9C,QAAA,IAAI,CAAC+D,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAACjB,sBAAsB;QAC9D,IAAI,IAAI,CAAC3D,SAAS,EAAE;YAClB,IAAI,CAAC4D,oBAAoB,GAAG,IAAA;YAC5B,IAAI,CAACiB,uBAAuB,GAAG,IAAA;YAC/B,IAAI,CAAChB,0BAA0B,GAAG,IAAA;YAClC,IAAI,CAACiB,6BAA6B,GAAG,IAAA;SAChC,MAAA;AACL,YAAA,IAAI,CAAClB,oBAAoB,GAAGjD,EAAAA,CAAGE,YAAY,CAAC,wBAAA,CAAA;AAC5C,YAAA,IAAI,CAACgE,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAACjB,oBAAoB;AAC1D,YAAA,IAAI,CAACC,0BAA0B,GAAGlD,EAAAA,CAAGE,YAAY,CAAC,+BAAA,CAAA;AAClD,YAAA,IAAI,CAACiE,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAACjB,0BAA0B;AACxE;QAEA,IAAI,IAAI,CAAC7D,SAAS,EAAE;YAClB,IAAIW,EAAAA,CAAGE,YAAY,CAAC,wBAA2B,CAAA,EAAA;gBAC7C,IAAI,CAACoE,2BAA2B,GAAG,IAAA;gBACnC,IAAI,CAACD,uBAAuB,GAAG,IAAA;AACjC,aAAA,MAAO,IAAIrE,EAAAA,CAAGE,YAAY,CAAC,6BAAgC,CAAA,EAAA;gBACzD,IAAI,CAACoE,2BAA2B,GAAG,IAAA;gBACnC,IAAI,CAACD,uBAAuB,GAAG,KAAA;aAC1B,MAAA;gBACL,IAAI,CAACC,2BAA2B,GAAG,KAAA;gBACnC,IAAI,CAACD,uBAAuB,GAAG,KAAA;AACjC;SACK,MAAA;AACL,YAAA,IAAI,CAACA,uBAAuB,GAAG,CAAC,CAACrE,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA;AACjD,YAAA,IAAI,CAACoE,2BAA2B,GAAG,CAAC,CAACtE,EAAAA,CAAGE,YAAY,CAAC,6BAAA,CAAA;AACvD;QACA,IAAI,CAACL,oBAAoB,GAAG,IAAI,CAACwE,uBAAuB,IAAI,CAAC,CAACrE,EAAGE,CAAAA,YAAY,CAAC,iBAAA,CAAA;AAE9E,QAAA,IAAI,CAACqC,QAAQ,GACXvC,EAAAA,CAAGE,YAAY,CAAC,+BAChBF,CAAAA,IAAAA,EAAAA,CAAGE,YAAY,CAAC,mCAChBF,CAAAA,IAAAA,EAAAA,CAAGE,YAAY,CAAC,sCAAA,CAAA;AAClB,QAAA,IAAI,CAACsD,WAAW,GAAG,CAAC,CAAC,IAAI,CAACjB,QAAQ;AAClC,QAAA,IAAI,CAACC,YAAY,GAAGxC,EAAAA,CAAGE,YAAY,CAAC,oCAAA,CAAA;AACpC,QAAA,IAAI,CAACuD,eAAe,GAAG,CAAC,CAAC,IAAI,CAACjB,YAAY;AAC1C,QAAA,IAAI,CAACC,QAAQ,GAAGzC,EAAAA,CAAGE,YAAY,CAAC,8BAAA,CAAA;AAChC,QAAA,IAAI,CAACwD,WAAW,GAAG,CAAC,CAAC,IAAI,CAACjB,QAAQ;AAClC,QAAA,IAAI,CAACC,QAAQ,GAAG1C,EAAAA,CAAGE,YAAY,CAAC,8BAAA,CAAA;AAChC,QAAA,IAAI,CAACyD,WAAW,GAAG,CAAC,CAAC,IAAI,CAACjB,QAAQ;AAClC,QAAA,IAAI,CAACC,QAAQ,GAAG3C,EAAAA,CAAGE,YAAY,CAAC,+BAAA,CAAA;AAChC,QAAA,IAAI,CAAC0D,WAAW,GAAG,CAAC,CAAC,IAAI,CAACjB,QAAQ;AAClC,QAAA,IAAI,CAACS,cAAc,GAAGpD,GAAGK,YAAY,CAACL,GAAGuE,gBAAgB,CAAA;AACzD,QAAA,IAAI,CAAClB,kBAAkB,GAAGrD,GAAGK,YAAY,CAACL,GAAGwE,yBAAyB,CAAA;QACtE,IAAI,IAAI,CAACnF,SAAS,EAAE;YAClB,IAAI,CAACiE,cAAc,GAAG,IAAA;YACtB,IAAI,CAACC,aAAa,GAAG,IAAA;SAChB,MAAA;YACL,IAAI,CAACD,cAAc,GAAG,KAAA;YACtB,IAAI,CAACC,aAAa,GAAG,KAAA;AACvB;QACA,IAAI,CAACJ,mBAAmB,GAAG;YACzBsB,UAAY,EAAA;AACVC,gBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;gBACjBC,gBAAkB,EAAA,IAAI,CAACvF,SAAS,GAAG,EAA+BwF,CAAAA,KAAK,GAAG7E,EAAAA,CAAG2E,IAAI;gBACjFG,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E,aAAa;AAAE/E,oBAAAA,EAAAA,CAAGgF,sBAAsB;AAAEhF,oBAAAA,EAAAA,CAAGiF;AAAuB,iBAAA;gBAChFC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR;AACF,SAAA;QACA,IAAI,IAAI,CAAC5C,QAAQ,EAAE;AACjB,YAAA,KAAK,MAAM6C,CAAK,IAAA;AACd,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,KAAA;AACA,gBAAA,MAAA;AACA,gBAAA,MAAA;AACA,gBAAA,MAAA;AACA,gBAAA,OAAA;AACA,gBAAA,OAAA;AACA,gBAAA;aACD,CAAE;AACD,gBAAA,MAAM,CAACC,CAAAA,EAAGC,CAAE,CAAA,GAAGF,CAAEG,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,GAAG,CAAC,CAACC,GAAAA,GAAQC,MAAOD,CAAAA,GAAAA,CAAAA,CAAAA;gBAChD,IAAI,CAAC1C,mBAAmB,CAAC,CAAC,KAAK,EAAEqC,CAAAA,CAAAA,CAAG,CAA0C,GAAG;AAC/Ed,oBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;oBACjBnB,gBAAkB,EAAA,IAAI,CAACjC,QAAQ,CAC7B,CAAC,qBAAqB,EAAE6C,CAAAA,CAAE,IAAI,CAAC,CAChC;oBACDV,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAG+F;AAAK,qBAAA;oBACjBb,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,IAAA;oBACZG,IAAM,EAAA,EAAA;oBACNF,UAAYI,EAAAA,CAAAA;oBACZH,WAAaI,EAAAA;AACf,iBAAA;gBACA,IAAI,CAACvC,mBAAmB,CAAC,CAAC,KAAK,EAAEqC,CAAE,CAAA,KAAK,CAAC,CAA0C,GAAG;AACpFd,oBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;oBACjBnB,gBAAkB,EAAA,IAAI,CAACjC,QAAQ,CAC7B,CAAC,6BAA6B,EAAE6C,CAAAA,CAAE,IAAI,CAAC,CACxC;oBACDV,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAG+F;AAAK,qBAAA;oBACjBb,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,IAAA;oBACZG,IAAM,EAAA,EAAA;oBACNF,UAAYI,EAAAA,CAAAA;oBACZH,WAAaI,EAAAA;AACf,iBAAA;AACF;AACF;QACA,IAAI,IAAI,CAACnD,QAAQ,EAAE;AACjB,YAAA,IAAI,CAACY,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACrC,QAAQ,CAACyD,4BAA4B;gBAC5DlB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,CAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACrC,QAAQ,CAAC0D,6BAA6B;gBAC7DnB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACrC,QAAQ,CAAC2D,6BAA6B;gBAC7DpB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACF;QACA,IAAI,IAAI,CAAC9C,YAAY,EAAE;AACrB,YAAA,IAAI,CAACW,mBAAmB,CAAC,WAAA,CAAY,GAAG;AACtCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACpC,YAAY,CAAC2D,6BAA6B;gBACjErB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,CAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,WAAA,CAAY,GAAG;AACtCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACpC,YAAY,CAAC4D,mCAAmC;gBACvEtB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,WAAA,CAAY,GAAG;AACtCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACpC,YAAY,CAAC6D,mCAAmC;gBACvEvB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACF;QACA,IAAI,IAAI,CAAC5C,QAAQ,EAAE;AACjB,YAAA,IAAI,CAACS,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAAClC,QAAQ,CAAC4D,wBAAwB;gBACxDxB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,CAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,YAAA,CAAa,GAAG;AACvCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAAClC,QAAQ,CAAC6D,+BAA+B;gBAC/DzB,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,CAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAAClC,QAAQ,CAAC8D,8BAA8B;gBAC9D1B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,YAAA,CAAa,GAAG;AACvCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAAClC,QAAQ,CAAC+D,qCAAqC;gBACrE3B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACF;QACA,IAAI,IAAI,CAAC7C,QAAQ,EAAE;AACjB,YAAA,IAAI,CAACU,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACnC,QAAQ,CAACiE,sCAAsC;gBACtE5B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,aAAA,CAAc,GAAG;AACxCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACnC,QAAQ,CAACkE,oCAAoC;gBACpE7B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACnC,QAAQ,CAACmE,8BAA8B;gBAC9D9B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACnC,mBAAmB,CAAC,UAAA,CAAW,GAAG;AACrCuB,gBAAAA,QAAAA,EAAU1E,GAAG+F,IAAI;AACjBnB,gBAAAA,gBAAAA,EAAkB,IAAI,CAACnC,QAAQ,CAACoE,oCAAoC;gBACpE/B,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+F;AAAK,iBAAA;gBACjBb,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZG,IAAM,EAAA,EAAA;gBACNF,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA;AACf,aAAA;AACF;AACA,QAAA,IAAIrF,SAASD,EAAK,CAAA,EAAA;AAChB,YAAA,IAAI,CAACmD,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAG8G,GAAG;AAChBlC,gBAAAA,gBAAAA,EAAkB5E,GAAG+G,EAAE;gBACvBjC,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAG8G,GAAG;AAChBlC,gBAAAA,gBAAAA,EAAkB5E,GAAGgH,QAAQ;gBAC7BlC,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG8G,GAAG;AAChBlC,gBAAAA,gBAAAA,EAAkB5E,GAAGkH,IAAI;gBACzBpC,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGmH,UAAU;AAAEnH,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBACjClC,UAAY,EAAA,IAAI,CAACf,6BAA6B;gBAC9CgB,UAAY,EAAA,IAAI,CAACb,2BAA2B;gBAC5Cc,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG8G,GAAG;AAChBlC,gBAAAA,gBAAAA,EAAkB5E,GAAGqH,IAAI;gBACzBvC,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBAClBlC,UAAY,EAAA,IAAI,CAACjB,yBAAyB;gBAC1CkB,UAAY,EAAA,IAAI,CAACd,uBAAuB;gBACxCe,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAGuH,IAAI;gBACzBzC,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAGwH,GAAG;gBACxB1C,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAGyH,KAAK;gBAC1B3C,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG0H;AAAe,iBAAA;gBAC3BxC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAG2H,IAAI;gBACzB7C,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG4H;AAAM,iBAAA;gBAClB1C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAG6H,KAAK;gBAC1B/C,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG8H;AAAa,iBAAA;gBACzB5C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAGsH,WAAW;AACxB1C,gBAAAA,gBAAAA,EAAkB5E,GAAG+H,IAAI;gBACzBjD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGgI;AAAI,iBAAA;gBAChB9C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,UAAA,CAAW,GAAG;AACrCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGkI,GAAG;gBACxBpD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,UAAA,CAAW,GAAG;AACrCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGmI,SAAS;gBAC9BrD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGoI,KAAK;gBAC1BtD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGmH,UAAU;AAAEnH,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBACjClC,UAAY,EAAA,IAAI,CAACf,6BAA6B;gBAC9CgB,UAAY,EAAA,IAAI,CAACb,2BAA2B;gBAC5Cc,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGqI,KAAK;gBAC1BvD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBAClBlC,UAAY,EAAA,IAAI,CAACjB,yBAAyB;gBAC1CkB,UAAY,EAAA,IAAI,CAACd,uBAAuB;gBACxCe,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGsI,KAAK;gBAC1BxD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGuI,IAAI;gBACzBzD,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,QAAA,CAAS,GAAG;AACnCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGwI,MAAM;gBAC3B1D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG0H;AAAe,iBAAA;gBAC3BxC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAGyI,KAAK;gBAC1B3D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG4H;AAAM,iBAAA;gBAClB1C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,QAAA,CAAS,GAAG;AACnCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAG0I,MAAM;gBAC3B5D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG8H;AAAa,iBAAA;gBACzB5C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAGiI,EAAE;AACfrD,gBAAAA,gBAAAA,EAAkB5E,GAAG2I,KAAK;gBAC1B7D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGgI;AAAI,iBAAA;gBAChB9C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,iBAAA,CAAkB,GAAG;AAC5CuB,gBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,gBAAAA,gBAAAA,EAAkB5E,GAAG4I,YAAY;gBACjC9D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,YAAA,CAAa,GAAG;AACvCuB,gBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,gBAAAA,gBAAAA,EAAkB5E,GAAG6I,WAAW;gBAChC/D,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,gBAAAA,gBAAAA,EAAkB5E,GAAG8I,OAAO;gBAC5BhE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGmH,UAAU;AAAEnH,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBACjClC,UAAY,EAAA,IAAI,CAACf,6BAA6B;gBAC9CgB,UAAY,EAAA,IAAI,CAACb,2BAA2B;gBAC5Cc,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,gBAAAA,gBAAAA,EAAkB5E,GAAG+I,OAAO;gBAC5BjE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBAClBlC,UAAY,EAAA,IAAI,CAACjB,yBAAyB;gBAC1CkB,UAAY,EAAA,IAAI,CAACd,uBAAuB;gBACxCe,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGiJ,OAAO;gBAC5BnE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG+E;AAAc,iBAAA;gBAC1BG,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,QAAA,CAAS,GAAG;AACnCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGkJ,MAAM;gBAC3BpE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGiH;AAAK,iBAAA;gBACjB/B,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,UAAA,CAAW,GAAG;AACrCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGmJ,QAAQ;gBAC7BrE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG0H;AAAe,iBAAA;gBAC3BxC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGoJ,OAAO;gBAC5BtE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG4H;AAAM,iBAAA;gBAClB1C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,UAAA,CAAW,GAAG;AACrCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGqJ,QAAQ;gBAC7BvE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG8H;AAAa,iBAAA;gBACzB5C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,gBAAAA,QAAAA,EAAU1E,GAAGgJ,YAAY;AACzBpE,gBAAAA,gBAAAA,EAAkB5E,GAAGsJ,OAAO;gBAC5BxE,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGgI;AAAI,iBAAA;gBAChB9C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,WAAA,CAAY,GAAG;AACtCuB,gBAAAA,QAAAA,EAAU1E,GAAGuJ,GAAG;AAChB3E,gBAAAA,gBAAAA,EAAkB5E,GAAGwJ,cAAc;gBACnC1E,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGyJ;AAA6B,iBAAA;gBACzCvE,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAG0J,eAAe;AAC5B9E,gBAAAA,gBAAAA,EAAkB5E,GAAG2J,iBAAiB;gBACtC7E,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG0H,cAAc;AAAE1H,oBAAAA,EAAAA,CAAG8H;AAAa,iBAAA;gBAC5C5C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,gBAAAA,QAAAA,EAAU1E,GAAG0J,eAAe;AAC5B9E,gBAAAA,gBAAAA,EAAkB5E,GAAG4J,iBAAiB;gBACtC9E,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAG8H;AAAa,iBAAA;gBACzB5C,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,MAAA,CAAO,GAAG;AACjCuB,gBAAAA,QAAAA,EAAU1E,GAAG0J,eAAe;AAC5B9E,gBAAAA,gBAAAA,EAAkB5E,GAAG6J,kBAAkB;gBACvC/E,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGoH;AAAM,iBAAA;gBAClBlC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,gBAAAA,QAAAA,EAAU1E,GAAG8J,aAAa;AAC1BlF,gBAAAA,gBAAAA,EAAkB5E,GAAG+J,gBAAgB;gBACrCjF,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGgK;AAAkB,iBAAA;gBAC9B9E,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;AACA,YAAA,IAAI,CAACpC,mBAAmB,CAAC,QAAA,CAAS,GAAG;AACnCuB,gBAAAA,QAAAA,EAAU1E,GAAG8J,aAAa;AAC1BlF,gBAAAA,gBAAAA,EAAkB5E,GAAGiK,iBAAiB;gBACtCnF,MAAQ,EAAA;AAAC9E,oBAAAA,EAAAA,CAAGkK;AAA+B,iBAAA;gBAC3ChF,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,IAAA;gBACZC,UAAY,EAAA,KAAA;gBACZC,UAAY,EAAA,CAAA;gBACZC,WAAa,EAAA,CAAA;gBACbC,IAAM,EAAA;AACR,aAAA;SACK,MAAA;YACL,IAAI,IAAI,CAACvB,mBAAmB,EAAE;AAC5B,gBAAA,IAAI,CAACb,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,oBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,oBAAAA,gBAAAA,EAAkB5E,GAAG2E,IAAI;oBACzBG,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAGoH,KAAK;AAAEpH,wBAAAA,EAAAA,CAAG+E,aAAa;AAAE/E,wBAAAA,EAAAA,CAAGgF,sBAAsB;AAAEhF,wBAAAA,EAAAA,CAAGiF;AAAuB,qBAAA;oBAC1FC,UAAY,EAAA,IAAI,CAACjB,yBAAyB;oBAC1CkB,UAAY,EAAA,IAAI,CAACd,uBAAuB;oBACxCe,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACF;YACA,IAAI,IAAI,CAACrB,uBAAuB,EAAE;AAChC,gBAAA,IAAI,CAACf,mBAAmB,CAAC,SAAA,CAAU,GAAG;AACpCuB,oBAAAA,QAAAA,EAAU1E,GAAG2E,IAAI;AACjBC,oBAAAA,gBAAAA,EAAkB5E,GAAG2E,IAAI;oBACzBG,MAAQ,EAAA;AACNxE,wBAAAA,SAAAA,CAAU6G,UAAU;AACpBnH,wBAAAA,EAAAA,CAAG+E,aAAa;AAChB/E,wBAAAA,EAAAA,CAAGgF,sBAAsB;AACzBhF,wBAAAA,EAAAA,CAAGiF;AACJ,qBAAA;oBACDC,UAAY,EAAA,IAAI,CAACf,6BAA6B;oBAC9CgB,UAAY,EAAA,IAAI,CAACb,2BAA2B;oBAC5Cc,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACF;YACA,IAAI,IAAI,CAACxB,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,CAACZ,mBAAmB,CAAC,iBAAA,CAAkB,GAAG;AAC5CuB,oBAAAA,QAAAA,EAAUpE,UAAU6J,UAAU;AAC9BvF,oBAAAA,gBAAAA,EAAkBtE,UAAU6J,UAAU;oBACtCrF,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAG+E;AAAc,qBAAA;oBAC1BG,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACF;YACA,IAAI,IAAI,CAAC1B,mBAAmB,EAAE;AAC5B,gBAAA,IAAI,CAACV,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,oBAAAA,QAAAA,EAAU1E,GAAG0J,eAAe;AAC5B9E,oBAAAA,gBAAAA,EAAkB5E,GAAG0J,eAAe;oBACpC5E,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAG0H;AAAe,qBAAA;oBAC3BxC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACA,gBAAA,IAAI,CAACpC,mBAAmB,CAAC,KAAA,CAAM,GAAG;AAChCuB,oBAAAA,QAAAA,EAAU1E,GAAG0J,eAAe;AAC5B9E,oBAAAA,gBAAAA,EAAkB5E,GAAG0J,eAAe;oBACpC5E,MAAQ,EAAA;AAAC9E,wBAAAA,EAAAA,CAAG8H;AAAa,qBAAA;oBACzB5C,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACA,gBAAA,IAAI,CAACpC,mBAAmB,CAAC,OAAA,CAAQ,GAAG;AAClCuB,oBAAAA,QAAAA,EAAU1E,GAAG8J,aAAa;AAC1BlF,oBAAAA,gBAAAA,EAAkB5E,GAAG8J,aAAa;oBAClChF,MAAQ,EAAA;AAACxE,wBAAAA,SAAAA,CAAU0J;AAAkB,qBAAA;oBACrC9E,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,IAAA;oBACZC,UAAY,EAAA,KAAA;oBACZC,UAAY,EAAA,CAAA;oBACZC,WAAa,EAAA,CAAA;oBACbC,IAAM,EAAA;AACR,iBAAA;AACF;AACF;AACF;AACA6E,IAAAA,eAAAA,CAAgBC,MAAqB,EAAEC,IAAY,EAAEC,SAAiB,EAAE;QACtE,OAAQF,MAAAA;YACN,KAAK,KAAA;YACL,KAAK,KAAA;YACL,KAAK,OAAA;YACL,KAAK,MAAA;gBACH,OAAQC,IAAAA;AACN,oBAAA,KAAKhK,UAAUoH,cAAc;AAC3B,wBAAA,OAAO6C,SAAY,GAAA,CAAA;AACrB,oBAAA;AACE,wBAAA,OAAOA,SAAY,GAAA,CAAA;AACvB;YACF,KAAK,QAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,MAAA;YACL,KAAK,WAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,MAAA;YACL,KAAK,WAAA;YACL,KAAK,MAAA;YACL,KAAK,WAAA;gBACH,OAAOA,SAAAA;YACT,KAAK,MAAA;gBACH,OAAQD,IAAAA;AACN,oBAAA,KAAKhK,UAAU6G,UAAU;AACvB,wBAAA,OAAOoD,SAAY,GAAA,CAAA;AACrB,oBAAA;AACE,wBAAA,OAAOA,SAAY,GAAA,CAAA;AACvB;YACF,KAAK,MAAA;YACL,KAAK,OAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,MAAA;YACL,KAAK,MAAA;YACL,KAAK,OAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,SAAA;YACL,KAAK,SAAA;YACL,KAAK,KAAA;YACL,KAAK,MAAA;gBACH,OAAOA,SAAAA;YACT,KAAK,OAAA;gBACH,OAAQD,IAAAA;AACN,oBAAA,KAAKhK,UAAU6G,UAAU;AACvB,wBAAA,OAAOoD,SAAY,GAAA,CAAA;AACrB,oBAAA;AACE,wBAAA,OAAOA,SAAY,GAAA,CAAA;AACvB;YACF,KAAK,OAAA;YACL,KAAK,QAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,QAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,UAAA;YACL,KAAK,UAAA;YACL,KAAK,MAAA;YACL,KAAK,OAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,SAAA;gBACH,OAAQD,IAAAA;AACN,oBAAA,KAAKhK,UAAU6G,UAAU;AACvB,wBAAA,OAAOoD,SAAY,GAAA,CAAA;AACrB,oBAAA;AACE,wBAAA,OAAOA,SAAY,GAAA,EAAA;AACvB;YACF,KAAK,SAAA;YACL,KAAK,UAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;YACrB,KAAK,SAAA;YACL,KAAK,SAAA;YACL,KAAK,UAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,EAAA;YACrB,KAAK,YAAA;YACL,KAAK,iBAAA;YACL,KAAK,YAAA;YACL,KAAK,QAAA;YACL,KAAK,SAAA;AACH,gBAAA,OAAOA,SAAY,GAAA,CAAA;AACrB,YAAA;gBACE,OAAO,CAAA;AACX;AACF;AACAC,IAAAA,oBAAAA,CAAqBH,MAAqB,EAAqC;AAC7E,QAAA,OAAO,IAAI,CAAClH,mBAAmB,CAACkH,MAAO,CAAA;AACzC;AACF;;;;"}
@@ -23,6 +23,7 @@ class WebGPUMiscCaps {
23
23
  supportDepthClamp;
24
24
  maxBindGroups;
25
25
  maxTexCoordIndex;
26
+ supportTimestampQuery;
26
27
  constructor(device){
27
28
  this.supportOversizedViewport = false;
28
29
  this.supportBlendMinMax = true;
@@ -30,6 +31,7 @@ class WebGPUMiscCaps {
30
31
  this.supportDepthClamp = device.device.features.has('depth-clip-control');
31
32
  this.maxBindGroups = 4;
32
33
  this.maxTexCoordIndex = 8;
34
+ this.supportTimestampQuery = device.device.features.has('timestamp-query');
33
35
  }
34
36
  }
35
37
  class WebGPUShaderCaps {