{"version":3,"file":"convertFormatIfRequired.mjs","sources":["../../../../src/compressed-textures/ktx2/utils/convertFormatIfRequired.ts"],"sourcesContent":["import type { TEXTURE_FORMATS } from '../../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../../rendering/renderers/shared/texture/sources/TextureSource';\n\ninterface ColorConverter\n{\n    convertedFormat: TEXTURE_FORMATS,\n    convertFunction: (levelBuffer: Uint8Array) => Uint8Array\n}\n\nconst converters: Record<string, ColorConverter> = {\n    rgb8unorm: {\n        convertedFormat: 'rgba8unorm',\n        convertFunction: convertRGBtoRGBA,\n    },\n    'rgb8unorm-srgb': {\n        convertedFormat: 'rgba8unorm-srgb',\n        convertFunction: convertRGBtoRGBA,\n    }\n};\n\n/**\n * @param textureOptions\n * @internal\n */\nexport function convertFormatIfRequired(textureOptions: TextureSourceOptions)\n{\n    const format = textureOptions.format;\n\n    if (converters[format])\n    {\n        const convertFunction = converters[format].convertFunction;\n\n        const levelBuffers = textureOptions.resource;\n\n        for (let i = 0; i < levelBuffers.length; i++)\n        {\n            levelBuffers[i] = convertFunction(levelBuffers[i]);\n        }\n\n        textureOptions.format = converters[format].convertedFormat;\n    }\n}\n\nfunction convertRGBtoRGBA(levelBuffer: Uint8Array): Uint8Array\n{\n    const pixelCount = levelBuffer.byteLength / 3;\n\n    const levelBufferWithAlpha = new Uint32Array(pixelCount);\n\n    for (let i = 0; i < pixelCount; ++i)\n    {\n        levelBufferWithAlpha[i] = (levelBuffer[i * 3]) // R\n               + (levelBuffer[(i * 3) + 1] << 8) // G\n               + (levelBuffer[(i * 3) + 2] << 16) // B\n               + 0xff000000; // A (255)\n    }\n\n    return new Uint8Array(levelBufferWithAlpha.buffer);\n}\n"],"names":[],"mappings":";AASA,MAAM,UAAA,GAA6C;AAAA,EAC/C,SAAA,EAAW;AAAA,IACP,eAAA,EAAiB,YAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACrB;AAAA,EACA,gBAAA,EAAkB;AAAA,IACd,eAAA,EAAiB,iBAAA;AAAA,IACjB,eAAA,EAAiB;AAAA;AAEzB,CAAA;AAMO,SAAS,wBAAwB,cAAA,EACxC;AACI,EAAA,MAAM,SAAS,cAAA,CAAe,MAAA;AAE9B,EAAA,IAAI,UAAA,CAAW,MAAM,CAAA,EACrB;AACI,IAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,MAAM,CAAA,CAAE,eAAA;AAE3C,IAAA,MAAM,eAAe,cAAA,CAAe,QAAA;AAEpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,QAAQ,CAAA,EAAA,EACzC;AACI,MAAA,YAAA,CAAa,CAAC,CAAA,GAAI,eAAA,CAAgB,YAAA,CAAa,CAAC,CAAC,CAAA;AAAA,IACrD;AAEA,IAAA,cAAA,CAAe,MAAA,GAAS,UAAA,CAAW,MAAM,CAAA,CAAE,eAAA;AAAA,EAC/C;AACJ;AAEA,SAAS,iBAAiB,WAAA,EAC1B;AACI,EAAA,MAAM,UAAA,GAAa,YAAY,UAAA,GAAa,CAAA;AAE5C,EAAA,MAAM,oBAAA,GAAuB,IAAI,WAAA,CAAY,UAAU,CAAA;AAEvD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,EAAE,CAAA,EAClC;AACI,IAAA,oBAAA,CAAqB,CAAC,CAAA,GAAK,WAAA,CAAY,CAAA,GAAI,CAAC,KAClC,WAAA,CAAa,CAAA,GAAI,CAAA,GAAK,CAAC,KAAK,CAAA,CAAA,IAC5B,WAAA,CAAa,IAAI,CAAA,GAAK,CAAC,KAAK,EAAA,CAAA,GAC7B,UAAA;AAAA,EACb;AAEA,EAAA,OAAO,IAAI,UAAA,CAAW,oBAAA,CAAqB,MAAM,CAAA;AACrD;;;;"}