{"version":3,"file":"glUploadCompressedTextureResource.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.ts"],"sourcesContent":["import type { CompressedSource } from '../../../shared/texture/sources/CompressedSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nconst compressedFormatMap: Record<string, boolean> = {\n    'bc1-rgba-unorm': true,\n    'bc1-rgba-unorm-srgb': true,\n    'bc2-rgba-unorm': true,\n    'bc2-rgba-unorm-srgb': true,\n    'bc3-rgba-unorm': true,\n    'bc3-rgba-unorm-srgb': true,\n    'bc4-r-unorm': true,\n    'bc4-r-snorm': true,\n    'bc5-rg-unorm': true,\n    'bc5-rg-snorm': true,\n    'bc6h-rgb-ufloat': true,\n    'bc6h-rgb-float': true,\n    'bc7-rgba-unorm': true,\n    'bc7-rgba-unorm-srgb': true,\n\n    // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n    // supported by the device/user agent and enabled in requestDevice.\n    'etc2-rgb8unorm': true,\n    'etc2-rgb8unorm-srgb': true,\n    'etc2-rgb8a1unorm': true,\n    'etc2-rgb8a1unorm-srgb': true,\n    'etc2-rgba8unorm': true,\n    'etc2-rgba8unorm-srgb': true,\n    'eac-r11unorm': true,\n    'eac-r11snorm': true,\n    'eac-rg11unorm': true,\n    'eac-rg11snorm': true,\n\n    // ASTC compressed formats usable if \"texture-compression-astc\" is both\n    // supported by the device/user agent and enabled in requestDevice.\n    'astc-4x4-unorm': true,\n    'astc-4x4-unorm-srgb': true,\n    'astc-5x4-unorm': true,\n    'astc-5x4-unorm-srgb': true,\n    'astc-5x5-unorm': true,\n    'astc-5x5-unorm-srgb': true,\n    'astc-6x5-unorm': true,\n    'astc-6x5-unorm-srgb': true,\n    'astc-6x6-unorm': true,\n    'astc-6x6-unorm-srgb': true,\n    'astc-8x5-unorm': true,\n    'astc-8x5-unorm-srgb': true,\n    'astc-8x6-unorm': true,\n    'astc-8x6-unorm-srgb': true,\n    'astc-8x8-unorm': true,\n    'astc-8x8-unorm-srgb': true,\n    'astc-10x5-unorm': true,\n    'astc-10x5-unorm-srgb': true,\n    'astc-10x6-unorm': true,\n    'astc-10x6-unorm-srgb': true,\n    'astc-10x8-unorm': true,\n    'astc-10x8-unorm-srgb': true,\n    'astc-10x10-unorm': true,\n    'astc-10x10-unorm-srgb': true,\n    'astc-12x10-unorm': true,\n    'astc-12x10-unorm-srgb': true,\n    'astc-12x12-unorm': true,\n    'astc-12x12-unorm-srgb': true,\n};\n\n/** @internal */\nexport const glUploadCompressedTextureResource = {\n\n    id: 'compressed',\n\n    upload(\n        source: CompressedSource,\n        glTexture: GlTexture,\n        gl: GlRenderingContext,\n        _webGLVersion: number,\n        targetOverride?: number,\n        _forceAllocation?: boolean\n    )\n    {\n        const target = targetOverride ?? glTexture.target;\n\n        gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n\n        let mipWidth = source.pixelWidth;\n        let mipHeight = source.pixelHeight;\n\n        const compressed = !!compressedFormatMap[source.format];\n\n        for (let i = 0; i < source.resource.length; i++)\n        {\n            const levelBuffer = source.resource[i];\n\n            if (compressed)\n            {\n                gl.compressedTexImage2D(\n                    target, i, glTexture.internalFormat,\n                    mipWidth, mipHeight, 0,\n                    levelBuffer\n                );\n            }\n            else\n            {\n                gl.texImage2D(\n                    target, i, glTexture.internalFormat,\n                    mipWidth, mipHeight, 0,\n                    glTexture.format, glTexture.type,\n                    levelBuffer);\n            }\n\n            mipWidth = Math.max(mipWidth >> 1, 1);\n            mipHeight = Math.max(mipHeight >> 1, 1);\n        }\n    }\n} as GLTextureUploader;\n\n"],"names":[],"mappings":"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"}