pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 4.12 kB
Source Map (JSON)
{"version":3,"file":"detectCompressed.mjs","sources":["../../../src/compressed-textures/shared/detectCompressed.ts"],"sourcesContent":["import { ExtensionType } from '../../extensions/Extensions';\n// eslint-disable-next-line max-len\nimport { getSupportedCompressedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedCompressedTextureFormats';\nimport { isWebGLSupported } from '../../utils/browser/isWebGLSupported';\nimport { isWebGPUSupported } from '../../utils/browser/isWebGPUSupported';\nimport { validFormats } from './resolveCompressedTextureUrl';\n\nimport type { FormatDetectionParser } from '../../assets/detections/types';\nimport type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\n\nlet compressedTextureExtensions: string[];\n\n/**\n * Detects if the browser supports compressed texture formats.\n * @category assets\n * @internal\n */\nexport const detectCompressed = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2,\n },\n test: async (): Promise<boolean> =>\n {\n if (await isWebGPUSupported()) return true;\n if (isWebGLSupported()) return true;\n\n return false;\n },\n add: async (formats: string[]): Promise<string[]> =>\n {\n const supportedCompressedTextureFormats = await getSupportedCompressedTextureFormats();\n\n compressedTextureExtensions = extractExtensionsForCompressedTextureFormats(supportedCompressedTextureFormats);\n\n return [...compressedTextureExtensions, ...formats];\n },\n remove: async (formats: string[]): Promise<string[]> =>\n {\n if (compressedTextureExtensions)\n {\n return formats.filter((f) => !(f in compressedTextureExtensions));\n }\n\n return formats;\n },\n} as FormatDetectionParser;\n\nfunction extractExtensionsForCompressedTextureFormats(formats: TEXTURE_FORMATS[]): string[]\n{\n const extensions: string[] = ['basis'];\n\n const dupeMap: Record<string, boolean> = {};\n\n formats.forEach((format) =>\n {\n const extension = format.split('-')[0];\n\n if (extension && !dupeMap[extension])\n {\n dupeMap[extension] = true;\n extensions.push(extension);\n }\n });\n\n // sort extensions by priority\n extensions.sort((a, b) =>\n {\n const aIndex = validFormats.indexOf(a);\n const bIndex = validFormats.indexOf(b);\n\n if (aIndex === -1)\n {\n return 1;\n }\n if (bIndex === -1)\n {\n return -1;\n }\n\n return aIndex - bIndex;\n });\n\n return extensions;\n}\n"],"names":[],"mappings":";;;;;;;AAUA,IAAI,2BAAA;AAOG,MAAM,gBAAA,GAAmB;AAAA,EAC5B,SAAA,EAAW;AAAA,IACP,MAAM,aAAA,CAAc,eAAA;AAAA,IACpB,QAAA,EAAU;AAAA,GACd;AAAA,EACA,MAAM,YACN;AACI,IAAA,IAAI,MAAM,iBAAA,EAAkB,EAAG,OAAO,IAAA;AACtC,IAAA,IAAI,gBAAA,IAAoB,OAAO,IAAA;AAE/B,IAAA,OAAO,KAAA;AAAA,EACX,CAAA;AAAA,EACA,GAAA,EAAK,OAAO,OAAA,KACZ;AACI,IAAA,MAAM,iCAAA,GAAoC,MAAM,oCAAA,EAAqC;AAErF,IAAA,2BAAA,GAA8B,6CAA6C,iCAAiC,CAAA;AAE5G,IAAA,OAAO,CAAC,GAAG,2BAAA,EAA6B,GAAG,OAAO,CAAA;AAAA,EACtD,CAAA;AAAA,EACA,MAAA,EAAQ,OAAO,OAAA,KACf;AACI,IAAA,IAAI,2BAAA,EACJ;AACI,MAAA,OAAO,QAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,KAAK,2BAAA,CAA4B,CAAA;AAAA,IACpE;AAEA,IAAA,OAAO,OAAA;AAAA,EACX;AACJ;AAEA,SAAS,6CAA6C,OAAA,EACtD;AACI,EAAA,MAAM,UAAA,GAAuB,CAAC,OAAO,CAAA;AAErC,EAAA,MAAM,UAAmC,EAAC;AAE1C,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KACjB;AACI,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAErC,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,CAAQ,SAAS,CAAA,EACnC;AACI,MAAA,OAAA,CAAQ,SAAS,CAAA,GAAI,IAAA;AACrB,MAAA,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,IAC7B;AAAA,EACJ,CAAC,CAAA;AAGD,EAAA,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KACpB;AACI,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA;AACrC,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA;AAErC,IAAA,IAAI,WAAW,CAAA,CAAA,EACf;AACI,MAAA,OAAO,CAAA;AAAA,IACX;AACA,IAAA,IAAI,WAAW,CAAA,CAAA,EACf;AACI,MAAA,OAAO,CAAA,CAAA;AAAA,IACX;AAEA,IAAA,OAAO,MAAA,GAAS,MAAA;AAAA,EACpB,CAAC,CAAA;AAED,EAAA,OAAO,UAAA;AACX;;;;"}