{"version":3,"file":"mapFormatToGlInternalFormat.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.ts"],"sourcesContent":["import { DOMAdapter } from '../../../../../environment/adapter';\n\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { WebGLExtensions } from '../../context/WebGLExtensions';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param gl - The rendering context.\n * @param extensions - The WebGL extensions.\n * @returns Lookup table.\n */\nexport function mapFormatToGlInternalFormat(\n    gl: GlRenderingContext,\n    extensions: WebGLExtensions,\n): Record<string, number>\n{\n    let srgb = {};\n    let bgra8unorm: number = gl.RGBA;\n\n    if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext()))\n    {\n        srgb = {\n            'rgba8unorm-srgb': gl.SRGB8_ALPHA8,\n            'bgra8unorm-srgb': gl.SRGB8_ALPHA8,\n        };\n\n        bgra8unorm = gl.RGBA8;\n    }\n    else if (extensions.srgb)\n    {\n        srgb = {\n            'rgba8unorm-srgb': extensions.srgb.SRGB8_ALPHA8_EXT,\n            'bgra8unorm-srgb': extensions.srgb.SRGB8_ALPHA8_EXT,\n        };\n    }\n\n    return {\n        // 8-bit formats\n        r8unorm: gl.R8,\n        r8snorm: gl.R8_SNORM,\n        r8uint: gl.R8UI,\n        r8sint: gl.R8I,\n\n        // 16-bit formats\n        r16uint: gl.R16UI,\n        r16sint: gl.R16I,\n        r16float: gl.R16F,\n        rg8unorm: gl.RG8,\n        rg8snorm: gl.RG8_SNORM,\n        rg8uint: gl.RG8UI,\n        rg8sint: gl.RG8I,\n\n        // 32-bit formats\n        r32uint: gl.R32UI,\n        r32sint: gl.R32I,\n        r32float: gl.R32F,\n        rg16uint: gl.RG16UI,\n        rg16sint: gl.RG16I,\n        rg16float: gl.RG16F,\n        rgba8unorm: gl.RGBA,\n\n        ...srgb,\n\n        // Packed 32-bit formats\n        rgba8snorm: gl.RGBA8_SNORM,\n        rgba8uint: gl.RGBA8UI,\n        rgba8sint: gl.RGBA8I,\n        bgra8unorm,\n        rgb9e5ufloat: gl.RGB9_E5,\n        rgb10a2unorm: gl.RGB10_A2,\n        rg11b10ufloat: gl.R11F_G11F_B10F,\n\n        // 64-bit formats\n        rg32uint: gl.RG32UI,\n        rg32sint: gl.RG32I,\n        rg32float: gl.RG32F,\n        rgba16uint: gl.RGBA16UI,\n        rgba16sint: gl.RGBA16I,\n        rgba16float: gl.RGBA16F,\n\n        // 128-bit formats\n        rgba32uint: gl.RGBA32UI,\n        rgba32sint: gl.RGBA32I,\n        rgba32float: gl.RGBA32F,\n\n        // Depth/stencil formats\n        stencil8: gl.STENCIL_INDEX8,\n        depth16unorm: gl.DEPTH_COMPONENT16,\n        depth24plus: gl.DEPTH_COMPONENT24,\n        'depth24plus-stencil8': gl.DEPTH24_STENCIL8,\n        depth32float: gl.DEPTH_COMPONENT32F,\n        'depth32float-stencil8': gl.DEPTH32F_STENCIL8,\n\n        // Compressed formats\n        ...extensions.s3tc ? {\n            'bc1-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n            'bc2-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n            'bc3-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n        } : {},\n        ...extensions.s3tc_sRGB ? {\n            'bc1-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n            'bc2-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n            'bc3-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\n        } : {},\n        ...extensions.rgtc ? {\n            'bc4-r-unorm': extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,\n            'bc4-r-snorm': extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n            'bc5-rg-unorm': extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,\n            'bc5-rg-snorm': extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\n        } : {},\n        ...extensions.bptc ? {\n            'bc6h-rgb-float': extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n            'bc6h-rgb-ufloat': extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n            'bc7-rgba-unorm': extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n            'bc7-rgba-unorm-srgb': extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,\n        } : {},\n        ...extensions.etc ? {\n            'etc2-rgb8unorm': extensions.etc.COMPRESSED_RGB8_ETC2,\n            'etc2-rgb8unorm-srgb': extensions.etc.COMPRESSED_SRGB8_ETC2,\n            'etc2-rgb8a1unorm': extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n            'etc2-rgb8a1unorm-srgb': extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n            'etc2-rgba8unorm': extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,\n            'etc2-rgba8unorm-srgb': extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n            'eac-r11unorm': extensions.etc.COMPRESSED_R11_EAC,\n            // 'eac-r11snorm'\n            'eac-rg11unorm': extensions.etc.COMPRESSED_SIGNED_RG11_EAC,\n            // 'eac-rg11snorm'\n        } : {},\n        ...extensions.astc ? {\n            'astc-4x4-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,\n            'astc-4x4-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n            'astc-5x4-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,\n            'astc-5x4-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,\n            'astc-5x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,\n            'astc-5x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n            'astc-6x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,\n            'astc-6x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n            'astc-6x6-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,\n            'astc-6x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n            'astc-8x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,\n            'astc-8x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n            'astc-8x6-unorm':   extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,\n            'astc-8x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n            'astc-8x8-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,\n            'astc-8x8-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n            'astc-10x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,\n            'astc-10x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n            'astc-10x6-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,\n            'astc-10x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n            'astc-10x8-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,\n            'astc-10x8-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n            'astc-10x10-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,\n            'astc-10x10-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n            'astc-12x10-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,\n            'astc-12x10-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n            'astc-12x12-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,\n            'astc-12x12-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,\n        } : {},\n    };\n}\n"],"names":[],"mappings":"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"}