This commit is contained in:
2025-01-04 00:34:03 +01:00
parent 41829408dc
commit 0ca14bbc19
18111 changed files with 1871397 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
"use strict";
//# sourceMappingURL=compressedTextureExtensions.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compressedTextureExtensions.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View File

@@ -0,0 +1,2 @@
//# sourceMappingURL=compressedTextureExtensions.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compressedTextureExtensions.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View File

@@ -0,0 +1,37 @@
"use strict";
var core = require("@pixi/core");
let storedGl, extensions;
function getCompressedTextureExtensions() {
extensions = {
bptc: storedGl.getExtension("EXT_texture_compression_bptc"),
astc: storedGl.getExtension("WEBGL_compressed_texture_astc"),
etc: storedGl.getExtension("WEBGL_compressed_texture_etc"),
s3tc: storedGl.getExtension("WEBGL_compressed_texture_s3tc"),
s3tc_sRGB: storedGl.getExtension("WEBGL_compressed_texture_s3tc_srgb"),
/* eslint-disable-line camelcase */
pvrtc: storedGl.getExtension("WEBGL_compressed_texture_pvrtc") || storedGl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),
etc1: storedGl.getExtension("WEBGL_compressed_texture_etc1"),
atc: storedGl.getExtension("WEBGL_compressed_texture_atc")
};
}
const detectCompressedTextures = {
extension: {
type: core.ExtensionType.DetectionParser,
priority: 2
},
test: async () => {
const gl = core.settings.ADAPTER.createCanvas().getContext("webgl");
return gl ? (storedGl = gl, !0) : (console.warn("WebGL not available for compressed textures."), !1);
},
add: async (formats) => {
extensions || getCompressedTextureExtensions();
const textureFormats = [];
for (const extensionName in extensions)
extensions[extensionName] && textureFormats.push(extensionName);
return [...textureFormats, ...formats];
},
remove: async (formats) => (extensions || getCompressedTextureExtensions(), formats.filter((f) => !(f in extensions)))
};
core.extensions.add(detectCompressedTextures);
exports.detectCompressedTextures = detectCompressedTextures;
//# sourceMappingURL=detectCompressedTextures.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"detectCompressedTextures.js","sources":["../../src/loaders/detectCompressedTextures.ts"],"sourcesContent":["import { extensions as ext, ExtensionType, settings } from '@pixi/core';\n\nimport type { FormatDetectionParser } from '@pixi/assets';\nimport type { CompressedTextureExtensionRef, CompressedTextureExtensions } from './compressedTextureExtensions';\n\nlet storedGl: WebGLRenderingContext;\nlet extensions: Partial<CompressedTextureExtensions>;\n\nfunction getCompressedTextureExtensions()\n{\n extensions = {\n bptc: storedGl.getExtension('EXT_texture_compression_bptc'),\n astc: storedGl.getExtension('WEBGL_compressed_texture_astc'),\n etc: storedGl.getExtension('WEBGL_compressed_texture_etc'),\n s3tc: storedGl.getExtension('WEBGL_compressed_texture_s3tc'),\n s3tc_sRGB: storedGl.getExtension('WEBGL_compressed_texture_s3tc_srgb'), /* eslint-disable-line camelcase */\n pvrtc: storedGl.getExtension('WEBGL_compressed_texture_pvrtc')\n || storedGl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n etc1: storedGl.getExtension('WEBGL_compressed_texture_etc1'),\n atc: storedGl.getExtension('WEBGL_compressed_texture_atc'),\n } as Partial<CompressedTextureExtensions>;\n}\n\nexport const detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2,\n },\n test: async (): Promise<boolean> =>\n {\n // Auto-detect WebGL compressed-texture extensions\n const canvas = settings.ADAPTER.createCanvas();\n const gl = canvas.getContext('webgl');\n\n if (!gl)\n {\n if (process.env.DEBUG)\n {\n console.warn('WebGL not available for compressed textures.');\n }\n\n return false;\n }\n\n storedGl = gl;\n\n return true;\n },\n add: async (formats: string[]): Promise<string[]> =>\n {\n if (!extensions) getCompressedTextureExtensions();\n\n const textureFormats = [];\n\n // Assign all available compressed-texture formats\n for (const extensionName in extensions)\n {\n const extension = extensions[extensionName as CompressedTextureExtensionRef];\n\n if (!extension)\n {\n continue;\n }\n\n textureFormats.push(extensionName);\n }\n\n return [...textureFormats, ...formats];\n },\n remove: async (formats: string[]): Promise<string[]> =>\n {\n if (!extensions) getCompressedTextureExtensions();\n\n return formats.filter((f) => !(f in extensions));\n },\n} as FormatDetectionParser;\n\next.add(detectCompressedTextures);\n"],"names":["ExtensionType","settings","ext"],"mappings":";;AAKA,IAAI,UACA;AAEJ,SAAS,iCACT;AACiB,eAAA;AAAA,IACT,MAAM,SAAS,aAAa,8BAA8B;AAAA,IAC1D,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,KAAK,SAAS,aAAa,8BAA8B;AAAA,IACzD,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,WAAW,SAAS,aAAa,oCAAoC;AAAA;AAAA,IACrE,OAAO,SAAS,aAAa,gCAAgC,KACtD,SAAS,aAAa,uCAAuC;AAAA,IACpE,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,KAAK,SAAS,aAAa,8BAA8B;AAAA,EAAA;AAEjE;AAEO,MAAM,2BAA2B;AAAA,EACpC,WAAW;AAAA,IACP,MAAMA,KAAc,cAAA;AAAA,IACpB,UAAU;AAAA,EACd;AAAA,EACA,MAAM,YACN;AAGI,UAAM,KADSC,KAAAA,SAAS,QAAQ,aAAa,EAC3B,WAAW,OAAO;AAEpC,WAAK,MAUL,WAAW,IAEJ,OARC,QAAQ,KAAK,8CAA8C,GAGxD;AAAA,EAMf;AAAA,EACA,KAAK,OAAO,YACZ;AACS,kBAAY,+BAA+B;AAEhD,UAAM,iBAAiB,CAAA;AAGvB,eAAW,iBAAiB;AAEN,iBAAW,aAA8C,KAO3E,eAAe,KAAK,aAAa;AAGrC,WAAO,CAAC,GAAG,gBAAgB,GAAG,OAAO;AAAA,EACzC;AAAA,EACA,QAAQ,OAAO,aAEN,cAAY,+BAA+B,GAEzC,QAAQ,OAAO,CAAC,MAAM,EAAE,KAAK,WAAW;AAEvD;AAEAC,KAAAA,WAAI,IAAI,wBAAwB;;"}

View File

@@ -0,0 +1,38 @@
import { ExtensionType, settings, extensions as extensions$1 } from "@pixi/core";
let storedGl, extensions;
function getCompressedTextureExtensions() {
extensions = {
bptc: storedGl.getExtension("EXT_texture_compression_bptc"),
astc: storedGl.getExtension("WEBGL_compressed_texture_astc"),
etc: storedGl.getExtension("WEBGL_compressed_texture_etc"),
s3tc: storedGl.getExtension("WEBGL_compressed_texture_s3tc"),
s3tc_sRGB: storedGl.getExtension("WEBGL_compressed_texture_s3tc_srgb"),
/* eslint-disable-line camelcase */
pvrtc: storedGl.getExtension("WEBGL_compressed_texture_pvrtc") || storedGl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),
etc1: storedGl.getExtension("WEBGL_compressed_texture_etc1"),
atc: storedGl.getExtension("WEBGL_compressed_texture_atc")
};
}
const detectCompressedTextures = {
extension: {
type: ExtensionType.DetectionParser,
priority: 2
},
test: async () => {
const gl = settings.ADAPTER.createCanvas().getContext("webgl");
return gl ? (storedGl = gl, !0) : (console.warn("WebGL not available for compressed textures."), !1);
},
add: async (formats) => {
extensions || getCompressedTextureExtensions();
const textureFormats = [];
for (const extensionName in extensions)
extensions[extensionName] && textureFormats.push(extensionName);
return [...textureFormats, ...formats];
},
remove: async (formats) => (extensions || getCompressedTextureExtensions(), formats.filter((f) => !(f in extensions)))
};
extensions$1.add(detectCompressedTextures);
export {
detectCompressedTextures
};
//# sourceMappingURL=detectCompressedTextures.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"detectCompressedTextures.mjs","sources":["../../src/loaders/detectCompressedTextures.ts"],"sourcesContent":["import { extensions as ext, ExtensionType, settings } from '@pixi/core';\n\nimport type { FormatDetectionParser } from '@pixi/assets';\nimport type { CompressedTextureExtensionRef, CompressedTextureExtensions } from './compressedTextureExtensions';\n\nlet storedGl: WebGLRenderingContext;\nlet extensions: Partial<CompressedTextureExtensions>;\n\nfunction getCompressedTextureExtensions()\n{\n extensions = {\n bptc: storedGl.getExtension('EXT_texture_compression_bptc'),\n astc: storedGl.getExtension('WEBGL_compressed_texture_astc'),\n etc: storedGl.getExtension('WEBGL_compressed_texture_etc'),\n s3tc: storedGl.getExtension('WEBGL_compressed_texture_s3tc'),\n s3tc_sRGB: storedGl.getExtension('WEBGL_compressed_texture_s3tc_srgb'), /* eslint-disable-line camelcase */\n pvrtc: storedGl.getExtension('WEBGL_compressed_texture_pvrtc')\n || storedGl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n etc1: storedGl.getExtension('WEBGL_compressed_texture_etc1'),\n atc: storedGl.getExtension('WEBGL_compressed_texture_atc'),\n } as Partial<CompressedTextureExtensions>;\n}\n\nexport const detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2,\n },\n test: async (): Promise<boolean> =>\n {\n // Auto-detect WebGL compressed-texture extensions\n const canvas = settings.ADAPTER.createCanvas();\n const gl = canvas.getContext('webgl');\n\n if (!gl)\n {\n if (process.env.DEBUG)\n {\n console.warn('WebGL not available for compressed textures.');\n }\n\n return false;\n }\n\n storedGl = gl;\n\n return true;\n },\n add: async (formats: string[]): Promise<string[]> =>\n {\n if (!extensions) getCompressedTextureExtensions();\n\n const textureFormats = [];\n\n // Assign all available compressed-texture formats\n for (const extensionName in extensions)\n {\n const extension = extensions[extensionName as CompressedTextureExtensionRef];\n\n if (!extension)\n {\n continue;\n }\n\n textureFormats.push(extensionName);\n }\n\n return [...textureFormats, ...formats];\n },\n remove: async (formats: string[]): Promise<string[]> =>\n {\n if (!extensions) getCompressedTextureExtensions();\n\n return formats.filter((f) => !(f in extensions));\n },\n} as FormatDetectionParser;\n\next.add(detectCompressedTextures);\n"],"names":["ext"],"mappings":";AAKA,IAAI,UACA;AAEJ,SAAS,iCACT;AACiB,eAAA;AAAA,IACT,MAAM,SAAS,aAAa,8BAA8B;AAAA,IAC1D,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,KAAK,SAAS,aAAa,8BAA8B;AAAA,IACzD,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,WAAW,SAAS,aAAa,oCAAoC;AAAA;AAAA,IACrE,OAAO,SAAS,aAAa,gCAAgC,KACtD,SAAS,aAAa,uCAAuC;AAAA,IACpE,MAAM,SAAS,aAAa,+BAA+B;AAAA,IAC3D,KAAK,SAAS,aAAa,8BAA8B;AAAA,EAAA;AAEjE;AAEO,MAAM,2BAA2B;AAAA,EACpC,WAAW;AAAA,IACP,MAAM,cAAc;AAAA,IACpB,UAAU;AAAA,EACd;AAAA,EACA,MAAM,YACN;AAGI,UAAM,KADS,SAAS,QAAQ,aAAa,EAC3B,WAAW,OAAO;AAEpC,WAAK,MAUL,WAAW,IAEJ,OARC,QAAQ,KAAK,8CAA8C,GAGxD;AAAA,EAMf;AAAA,EACA,KAAK,OAAO,YACZ;AACS,kBAAY,+BAA+B;AAEhD,UAAM,iBAAiB,CAAA;AAGvB,eAAW,iBAAiB;AAEN,iBAAW,aAA8C,KAO3E,eAAe,KAAK,aAAa;AAGrC,WAAO,CAAC,GAAG,gBAAgB,GAAG,OAAO;AAAA,EACzC;AAAA,EACA,QAAQ,OAAO,aAEN,cAAY,+BAA+B,GAEzC,QAAQ,OAAO,CAAC,MAAM,EAAE,KAAK,WAAW;AAEvD;AAEAA,aAAI,IAAI,wBAAwB;"}

View File

@@ -0,0 +1,8 @@
"use strict";
require("./compressedTextureExtensions.js");
var detectCompressedTextures = require("./detectCompressedTextures.js"), loadDDS = require("./loadDDS.js"), loadKTX = require("./loadKTX.js"), resolveCompressedTextureUrl = require("./resolveCompressedTextureUrl.js");
exports.detectCompressedTextures = detectCompressedTextures.detectCompressedTextures;
exports.loadDDS = loadDDS.loadDDS;
exports.loadKTX = loadKTX.loadKTX;
exports.resolveCompressedTextureUrl = resolveCompressedTextureUrl.resolveCompressedTextureUrl;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}

View File

@@ -0,0 +1,12 @@
import "./compressedTextureExtensions.mjs";
import { detectCompressedTextures } from "./detectCompressedTextures.mjs";
import { loadDDS } from "./loadDDS.mjs";
import { loadKTX } from "./loadKTX.mjs";
import { resolveCompressedTextureUrl } from "./resolveCompressedTextureUrl.mjs";
export {
detectCompressedTextures,
loadDDS,
loadKTX,
resolveCompressedTextureUrl
};
//# sourceMappingURL=index.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}

View File

@@ -0,0 +1,32 @@
"use strict";
var assets = require("@pixi/assets"), core = require("@pixi/core");
require("../parsers/index.js");
var parseDDS = require("../parsers/parseDDS.js");
const loadDDS = {
extension: {
type: core.ExtensionType.LoadParser,
priority: assets.LoaderParserPriority.High
},
name: "loadDDS",
test(url) {
return assets.checkExtension(url, ".dds");
},
async load(url, asset, loader) {
const arrayBuffer = await (await core.settings.ADAPTER.fetch(url)).arrayBuffer(), textures = parseDDS.parseDDS(arrayBuffer).map((resource) => {
const base = new core.BaseTexture(resource, {
mipmap: core.MIPMAP_MODES.OFF,
alphaMode: core.ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,
resolution: core.utils.getResolutionOfUrl(url),
...asset.data
});
return assets.createTexture(base, loader, url);
});
return textures.length === 1 ? textures[0] : textures;
},
unload(texture) {
Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);
}
};
core.extensions.add(loadDDS);
exports.loadDDS = loadDDS;
//# sourceMappingURL=loadDDS.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"loadDDS.js","sources":["../../src/loaders/loadDDS.ts"],"sourcesContent":["import { checkExtension, createTexture, LoaderParserPriority } from '@pixi/assets';\nimport { ALPHA_MODES, BaseTexture, extensions, ExtensionType, MIPMAP_MODES, settings, utils } from '@pixi/core';\nimport { parseDDS } from '../parsers';\n\nimport type { Loader, LoaderParser, ResolvedAsset } from '@pixi/assets';\nimport type { IBaseTextureOptions, Texture } from '@pixi/core';\n\n/** Load our DDS textures! */\nexport const loadDDS: LoaderParser = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadDDS',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.dds');\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>\n {\n // get an array buffer...\n const response = await settings.ADAPTER.fetch(url);\n\n const arrayBuffer = await response.arrayBuffer();\n\n const resources = parseDDS(arrayBuffer);\n\n const textures = resources.map((resource) =>\n {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data,\n });\n\n return createTexture(base, loader, url);\n });\n\n return textures.length === 1 ? textures[0] : textures;\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser<Texture | Texture[], IBaseTextureOptions>;\n\nextensions.add(loadDDS);\n"],"names":["ExtensionType","LoaderParserPriority","checkExtension","settings","parseDDS","BaseTexture","MIPMAP_MODES","ALPHA_MODES","utils","createTexture","extensions"],"mappings":";;;;AAQO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,IACP,MAAMA,KAAc,cAAA;AAAA,IACpB,UAAUC,OAAqB,qBAAA;AAAA,EACnC;AAAA,EAEA,MAAM;AAAA,EAEN,KAAK,KACL;AACW,WAAAC,OAAA,eAAe,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,MAAM,KAAK,KAAa,OAAsB,QAC9C;AAII,UAAM,cAAc,OAFH,MAAMC,KAAS,SAAA,QAAQ,MAAM,GAAG,GAEd,YAAY,GAIzC,WAFYC,SAAS,SAAA,WAAW,EAEX,IAAI,CAAC,aAChC;AACU,YAAA,OAAO,IAAIC,KAAA,YAAY,UAAU;AAAA,QACnC,QAAQC,KAAa,aAAA;AAAA,QACrB,WAAWC,KAAY,YAAA;AAAA,QACvB,YAAYC,KAAAA,MAAM,mBAAmB,GAAG;AAAA,QACxC,GAAG,MAAM;AAAA,MAAA,CACZ;AAEM,aAAAC,qBAAc,MAAM,QAAQ,GAAG;AAAA,IAAA,CACzC;AAED,WAAO,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,SACP;AACQ,UAAM,QAAQ,OAAO,IAErB,QAAQ,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAI,CAAC,IAItC,QAAQ,QAAQ,EAAI;AAAA,EAE5B;AAEJ;AAEAC,KAAAA,WAAW,IAAI,OAAO;;"}

View File

@@ -0,0 +1,34 @@
import { LoaderParserPriority, checkExtension, createTexture } from "@pixi/assets";
import { ExtensionType, settings, BaseTexture, MIPMAP_MODES, ALPHA_MODES, utils, extensions } from "@pixi/core";
import "../parsers/index.mjs";
import { parseDDS } from "../parsers/parseDDS.mjs";
const loadDDS = {
extension: {
type: ExtensionType.LoadParser,
priority: LoaderParserPriority.High
},
name: "loadDDS",
test(url) {
return checkExtension(url, ".dds");
},
async load(url, asset, loader) {
const arrayBuffer = await (await settings.ADAPTER.fetch(url)).arrayBuffer(), textures = parseDDS(arrayBuffer).map((resource) => {
const base = new BaseTexture(resource, {
mipmap: MIPMAP_MODES.OFF,
alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,
resolution: utils.getResolutionOfUrl(url),
...asset.data
});
return createTexture(base, loader, url);
});
return textures.length === 1 ? textures[0] : textures;
},
unload(texture) {
Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);
}
};
extensions.add(loadDDS);
export {
loadDDS
};
//# sourceMappingURL=loadDDS.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"loadDDS.mjs","sources":["../../src/loaders/loadDDS.ts"],"sourcesContent":["import { checkExtension, createTexture, LoaderParserPriority } from '@pixi/assets';\nimport { ALPHA_MODES, BaseTexture, extensions, ExtensionType, MIPMAP_MODES, settings, utils } from '@pixi/core';\nimport { parseDDS } from '../parsers';\n\nimport type { Loader, LoaderParser, ResolvedAsset } from '@pixi/assets';\nimport type { IBaseTextureOptions, Texture } from '@pixi/core';\n\n/** Load our DDS textures! */\nexport const loadDDS: LoaderParser = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadDDS',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.dds');\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>\n {\n // get an array buffer...\n const response = await settings.ADAPTER.fetch(url);\n\n const arrayBuffer = await response.arrayBuffer();\n\n const resources = parseDDS(arrayBuffer);\n\n const textures = resources.map((resource) =>\n {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data,\n });\n\n return createTexture(base, loader, url);\n });\n\n return textures.length === 1 ? textures[0] : textures;\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser<Texture | Texture[], IBaseTextureOptions>;\n\nextensions.add(loadDDS);\n"],"names":[],"mappings":";;;;AAQO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,IACP,MAAM,cAAc;AAAA,IACpB,UAAU,qBAAqB;AAAA,EACnC;AAAA,EAEA,MAAM;AAAA,EAEN,KAAK,KACL;AACW,WAAA,eAAe,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,MAAM,KAAK,KAAa,OAAsB,QAC9C;AAII,UAAM,cAAc,OAFH,MAAM,SAAS,QAAQ,MAAM,GAAG,GAEd,YAAY,GAIzC,WAFY,SAAS,WAAW,EAEX,IAAI,CAAC,aAChC;AACU,YAAA,OAAO,IAAI,YAAY,UAAU;AAAA,QACnC,QAAQ,aAAa;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,YAAY,MAAM,mBAAmB,GAAG;AAAA,QACxC,GAAG,MAAM;AAAA,MAAA,CACZ;AAEM,aAAA,cAAc,MAAM,QAAQ,GAAG;AAAA,IAAA,CACzC;AAED,WAAO,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,SACP;AACQ,UAAM,QAAQ,OAAO,IAErB,QAAQ,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAI,CAAC,IAItC,QAAQ,QAAQ,EAAI;AAAA,EAE5B;AAEJ;AAEA,WAAW,IAAI,OAAO;"}

View File

@@ -0,0 +1,36 @@
"use strict";
var assets = require("@pixi/assets"), core = require("@pixi/core");
require("../parsers/index.js");
var parseKTX = require("../parsers/parseKTX.js");
const loadKTX = {
extension: {
type: core.ExtensionType.LoadParser,
priority: assets.LoaderParserPriority.High
},
name: "loadKTX",
test(url) {
return assets.checkExtension(url, ".ktx");
},
async load(url, asset, loader) {
const arrayBuffer = await (await core.settings.ADAPTER.fetch(url)).arrayBuffer(), { compressed, uncompressed, kvData } = parseKTX.parseKTX(url, arrayBuffer), resources = compressed ?? uncompressed, options = {
mipmap: core.MIPMAP_MODES.OFF,
alphaMode: core.ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,
resolution: core.utils.getResolutionOfUrl(url),
...asset.data
}, textures = resources.map((resource) => {
resources === uncompressed && Object.assign(options, {
type: resource.type,
format: resource.format
});
const res = resource.resource ?? resource, base = new core.BaseTexture(res, options);
return base.ktxKeyValueData = kvData, assets.createTexture(base, loader, url);
});
return textures.length === 1 ? textures[0] : textures;
},
unload(texture) {
Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);
}
};
core.extensions.add(loadKTX);
exports.loadKTX = loadKTX;
//# sourceMappingURL=loadKTX.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"loadKTX.js","sources":["../../src/loaders/loadKTX.ts"],"sourcesContent":["import { checkExtension, createTexture, LoaderParserPriority } from '@pixi/assets';\nimport { ALPHA_MODES, BaseTexture, extensions, ExtensionType, MIPMAP_MODES, settings, utils } from '@pixi/core';\nimport { parseKTX } from '../parsers';\n\nimport type { Loader, LoaderParser, ResolvedAsset } from '@pixi/assets';\nimport type { IBaseTextureOptions, Texture } from '@pixi/core';\n\n/** Loads KTX textures! */\nexport const loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadKTX',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.ktx');\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>\n {\n // get an array buffer...\n const response = await settings.ADAPTER.fetch(url);\n\n const arrayBuffer = await response.arrayBuffer();\n\n const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer);\n\n const resources = compressed ?? uncompressed;\n\n const options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data,\n };\n\n const textures = resources.map((resource) =>\n {\n if (resources === uncompressed)\n {\n Object.assign(options, {\n type: (resource as typeof uncompressed[0]).type,\n format: (resource as typeof uncompressed[0]).format,\n });\n }\n\n const res = (resource as typeof uncompressed[0]).resource ?? (resource as typeof compressed[0]);\n\n const base = new BaseTexture(res, options);\n\n base.ktxKeyValueData = kvData;\n\n return createTexture(base, loader, url);\n });\n\n return textures.length === 1 ? textures[0] : textures;\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser<Texture | Texture[], IBaseTextureOptions>;\n\nextensions.add(loadKTX);\n"],"names":["ExtensionType","LoaderParserPriority","checkExtension","settings","parseKTX","MIPMAP_MODES","ALPHA_MODES","utils","BaseTexture","createTexture","extensions"],"mappings":";;;;AAQO,MAAM,UAAU;AAAA,EACnB,WAAW;AAAA,IACP,MAAMA,KAAc,cAAA;AAAA,IACpB,UAAUC,OAAqB,qBAAA;AAAA,EACnC;AAAA,EAEA,MAAM;AAAA,EAEN,KAAK,KACL;AACW,WAAAC,OAAA,eAAe,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,MAAM,KAAK,KAAa,OAAsB,QAC9C;AAIU,UAAA,cAAc,OAFH,MAAMC,cAAS,QAAQ,MAAM,GAAG,GAEd,YAAA,GAE7B,EAAE,YAAY,cAAc,OAAA,IAAWC,SAAS,SAAA,KAAK,WAAW,GAEhE,YAAY,cAAc,cAE1B,UAAU;AAAA,MACZ,QAAQC,KAAa,aAAA;AAAA,MACrB,WAAWC,KAAY,YAAA;AAAA,MACvB,YAAYC,KAAAA,MAAM,mBAAmB,GAAG;AAAA,MACxC,GAAG,MAAM;AAAA,IAGP,GAAA,WAAW,UAAU,IAAI,CAAC,aAChC;AACQ,oBAAc,gBAEd,OAAO,OAAO,SAAS;AAAA,QACnB,MAAO,SAAoC;AAAA,QAC3C,QAAS,SAAoC;AAAA,MAAA,CAChD;AAGC,YAAA,MAAO,SAAoC,YAAa,UAExD,OAAO,IAAIC,KAAA,YAAY,KAAK,OAAO;AAEzC,aAAA,KAAK,kBAAkB,QAEhBC,OAAc,cAAA,MAAM,QAAQ,GAAG;AAAA,IAAA,CACzC;AAED,WAAO,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,SACP;AACQ,UAAM,QAAQ,OAAO,IAErB,QAAQ,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAI,CAAC,IAItC,QAAQ,QAAQ,EAAI;AAAA,EAE5B;AAEJ;AAEAC,KAAAA,WAAW,IAAI,OAAO;;"}

View File

@@ -0,0 +1,38 @@
import { LoaderParserPriority, checkExtension, createTexture } from "@pixi/assets";
import { ExtensionType, settings, MIPMAP_MODES, ALPHA_MODES, utils, BaseTexture, extensions } from "@pixi/core";
import "../parsers/index.mjs";
import { parseKTX } from "../parsers/parseKTX.mjs";
const loadKTX = {
extension: {
type: ExtensionType.LoadParser,
priority: LoaderParserPriority.High
},
name: "loadKTX",
test(url) {
return checkExtension(url, ".ktx");
},
async load(url, asset, loader) {
const arrayBuffer = await (await settings.ADAPTER.fetch(url)).arrayBuffer(), { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer), resources = compressed ?? uncompressed, options = {
mipmap: MIPMAP_MODES.OFF,
alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,
resolution: utils.getResolutionOfUrl(url),
...asset.data
}, textures = resources.map((resource) => {
resources === uncompressed && Object.assign(options, {
type: resource.type,
format: resource.format
});
const res = resource.resource ?? resource, base = new BaseTexture(res, options);
return base.ktxKeyValueData = kvData, createTexture(base, loader, url);
});
return textures.length === 1 ? textures[0] : textures;
},
unload(texture) {
Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);
}
};
extensions.add(loadKTX);
export {
loadKTX
};
//# sourceMappingURL=loadKTX.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"loadKTX.mjs","sources":["../../src/loaders/loadKTX.ts"],"sourcesContent":["import { checkExtension, createTexture, LoaderParserPriority } from '@pixi/assets';\nimport { ALPHA_MODES, BaseTexture, extensions, ExtensionType, MIPMAP_MODES, settings, utils } from '@pixi/core';\nimport { parseKTX } from '../parsers';\n\nimport type { Loader, LoaderParser, ResolvedAsset } from '@pixi/assets';\nimport type { IBaseTextureOptions, Texture } from '@pixi/core';\n\n/** Loads KTX textures! */\nexport const loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadKTX',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.ktx');\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>\n {\n // get an array buffer...\n const response = await settings.ADAPTER.fetch(url);\n\n const arrayBuffer = await response.arrayBuffer();\n\n const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer);\n\n const resources = compressed ?? uncompressed;\n\n const options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data,\n };\n\n const textures = resources.map((resource) =>\n {\n if (resources === uncompressed)\n {\n Object.assign(options, {\n type: (resource as typeof uncompressed[0]).type,\n format: (resource as typeof uncompressed[0]).format,\n });\n }\n\n const res = (resource as typeof uncompressed[0]).resource ?? (resource as typeof compressed[0]);\n\n const base = new BaseTexture(res, options);\n\n base.ktxKeyValueData = kvData;\n\n return createTexture(base, loader, url);\n });\n\n return textures.length === 1 ? textures[0] : textures;\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser<Texture | Texture[], IBaseTextureOptions>;\n\nextensions.add(loadKTX);\n"],"names":[],"mappings":";;;;AAQO,MAAM,UAAU;AAAA,EACnB,WAAW;AAAA,IACP,MAAM,cAAc;AAAA,IACpB,UAAU,qBAAqB;AAAA,EACnC;AAAA,EAEA,MAAM;AAAA,EAEN,KAAK,KACL;AACW,WAAA,eAAe,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,MAAM,KAAK,KAAa,OAAsB,QAC9C;AAIU,UAAA,cAAc,OAFH,MAAM,SAAS,QAAQ,MAAM,GAAG,GAEd,YAAA,GAE7B,EAAE,YAAY,cAAc,OAAA,IAAW,SAAS,KAAK,WAAW,GAEhE,YAAY,cAAc,cAE1B,UAAU;AAAA,MACZ,QAAQ,aAAa;AAAA,MACrB,WAAW,YAAY;AAAA,MACvB,YAAY,MAAM,mBAAmB,GAAG;AAAA,MACxC,GAAG,MAAM;AAAA,IAGP,GAAA,WAAW,UAAU,IAAI,CAAC,aAChC;AACQ,oBAAc,gBAEd,OAAO,OAAO,SAAS;AAAA,QACnB,MAAO,SAAoC;AAAA,QAC3C,QAAS,SAAoC;AAAA,MAAA,CAChD;AAGC,YAAA,MAAO,SAAoC,YAAa,UAExD,OAAO,IAAI,YAAY,KAAK,OAAO;AAEzC,aAAA,KAAK,kBAAkB,QAEhB,cAAc,MAAM,QAAQ,GAAG;AAAA,IAAA,CACzC;AAED,WAAO,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI;AAAA,EACjD;AAAA,EAEA,OAAO,SACP;AACQ,UAAM,QAAQ,OAAO,IAErB,QAAQ,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAI,CAAC,IAItC,QAAQ,QAAQ,EAAI;AAAA,EAE5B;AAEJ;AAEA,WAAW,IAAI,OAAO;"}

View File

@@ -0,0 +1,29 @@
"use strict";
var core = require("@pixi/core");
const knownFormats = ["s3tc", "s3tc_sRGB", "etc", "etc1", "pvrtc", "atc", "astc", "bptc"], resolveCompressedTextureUrl = {
extension: core.ExtensionType.ResolveParser,
test: (value) => {
const extension = core.utils.path.extname(value).slice(1);
return ["basis", "ktx", "dds"].includes(extension);
},
parse: (value) => {
const parts = value.split("."), extension = parts.pop();
if (["ktx", "dds"].includes(extension)) {
const textureFormat = parts.pop();
if (knownFormats.includes(textureFormat))
return {
resolution: parseFloat(core.settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"),
format: textureFormat,
src: value
};
}
return {
resolution: parseFloat(core.settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"),
format: extension,
src: value
};
}
};
core.extensions.add(resolveCompressedTextureUrl);
exports.resolveCompressedTextureUrl = resolveCompressedTextureUrl;
//# sourceMappingURL=resolveCompressedTextureUrl.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolveCompressedTextureUrl.js","sources":["../../src/loaders/resolveCompressedTextureUrl.ts"],"sourcesContent":["import { extensions, ExtensionType, settings, utils } from '@pixi/core';\n\nimport type { ResolveURLParser, UnresolvedAsset } from '@pixi/assets';\n\nconst knownFormats = ['s3tc', 's3tc_sRGB', 'etc', 'etc1', 'pvrtc', 'atc', 'astc', 'bptc'];\n\nexport const resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value: string) =>\n {\n const extension = utils.path.extname(value).slice(1);\n\n return ['basis', 'ktx', 'dds'].includes(extension);\n },\n parse: (value: string): UnresolvedAsset =>\n {\n // value expected in format: {name}{resolution}.{format}.{extension} - texture@2x.astc.ktx\n const parts = value.split('.');\n const extension = parts.pop();\n\n if (['ktx', 'dds'].includes(extension))\n {\n const textureFormat = parts.pop();\n\n if (knownFormats.includes(textureFormat))\n {\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: textureFormat,\n src: value,\n };\n }\n }\n\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: extension,\n src: value,\n };\n },\n} as ResolveURLParser;\n\nextensions.add(resolveCompressedTextureUrl);\n"],"names":["ExtensionType","utils","settings","extensions"],"mappings":";;AAIA,MAAM,eAAe,CAAC,QAAQ,aAAa,OAAO,QAAQ,SAAS,OAAO,QAAQ,MAAM,GAE3E,8BAA8B;AAAA,EACvC,WAAWA,KAAc,cAAA;AAAA,EACzB,MAAM,CAAC,UACP;AACI,UAAM,YAAYC,KAAM,MAAA,KAAK,QAAQ,KAAK,EAAE,MAAM,CAAC;AAEnD,WAAO,CAAC,SAAS,OAAO,KAAK,EAAE,SAAS,SAAS;AAAA,EACrD;AAAA,EACA,OAAO,CAAC,UACR;AAEI,UAAM,QAAQ,MAAM,MAAM,GAAG,GACvB,YAAY,MAAM;AAExB,QAAI,CAAC,OAAO,KAAK,EAAE,SAAS,SAAS,GACrC;AACU,YAAA,gBAAgB,MAAM;AAExB,UAAA,aAAa,SAAS,aAAa;AAE5B,eAAA;AAAA,UACH,YAAY,WAAWC,KAAAA,SAAS,cAAc,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG;AAAA,UACrE,QAAQ;AAAA,UACR,KAAK;AAAA,QAAA;AAAA,IAGjB;AAEO,WAAA;AAAA,MACH,YAAY,WAAWA,KAAAA,SAAS,cAAc,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG;AAAA,MACrE,QAAQ;AAAA,MACR,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;AAEAC,KAAAA,WAAW,IAAI,2BAA2B;;"}

View File

@@ -0,0 +1,30 @@
import { ExtensionType, utils, settings, extensions } from "@pixi/core";
const knownFormats = ["s3tc", "s3tc_sRGB", "etc", "etc1", "pvrtc", "atc", "astc", "bptc"], resolveCompressedTextureUrl = {
extension: ExtensionType.ResolveParser,
test: (value) => {
const extension = utils.path.extname(value).slice(1);
return ["basis", "ktx", "dds"].includes(extension);
},
parse: (value) => {
const parts = value.split("."), extension = parts.pop();
if (["ktx", "dds"].includes(extension)) {
const textureFormat = parts.pop();
if (knownFormats.includes(textureFormat))
return {
resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"),
format: textureFormat,
src: value
};
}
return {
resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"),
format: extension,
src: value
};
}
};
extensions.add(resolveCompressedTextureUrl);
export {
resolveCompressedTextureUrl
};
//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolveCompressedTextureUrl.mjs","sources":["../../src/loaders/resolveCompressedTextureUrl.ts"],"sourcesContent":["import { extensions, ExtensionType, settings, utils } from '@pixi/core';\n\nimport type { ResolveURLParser, UnresolvedAsset } from '@pixi/assets';\n\nconst knownFormats = ['s3tc', 's3tc_sRGB', 'etc', 'etc1', 'pvrtc', 'atc', 'astc', 'bptc'];\n\nexport const resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value: string) =>\n {\n const extension = utils.path.extname(value).slice(1);\n\n return ['basis', 'ktx', 'dds'].includes(extension);\n },\n parse: (value: string): UnresolvedAsset =>\n {\n // value expected in format: {name}{resolution}.{format}.{extension} - texture@2x.astc.ktx\n const parts = value.split('.');\n const extension = parts.pop();\n\n if (['ktx', 'dds'].includes(extension))\n {\n const textureFormat = parts.pop();\n\n if (knownFormats.includes(textureFormat))\n {\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: textureFormat,\n src: value,\n };\n }\n }\n\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: extension,\n src: value,\n };\n },\n} as ResolveURLParser;\n\nextensions.add(resolveCompressedTextureUrl);\n"],"names":[],"mappings":";AAIA,MAAM,eAAe,CAAC,QAAQ,aAAa,OAAO,QAAQ,SAAS,OAAO,QAAQ,MAAM,GAE3E,8BAA8B;AAAA,EACvC,WAAW,cAAc;AAAA,EACzB,MAAM,CAAC,UACP;AACI,UAAM,YAAY,MAAM,KAAK,QAAQ,KAAK,EAAE,MAAM,CAAC;AAEnD,WAAO,CAAC,SAAS,OAAO,KAAK,EAAE,SAAS,SAAS;AAAA,EACrD;AAAA,EACA,OAAO,CAAC,UACR;AAEI,UAAM,QAAQ,MAAM,MAAM,GAAG,GACvB,YAAY,MAAM;AAExB,QAAI,CAAC,OAAO,KAAK,EAAE,SAAS,SAAS,GACrC;AACU,YAAA,gBAAgB,MAAM;AAExB,UAAA,aAAa,SAAS,aAAa;AAE5B,eAAA;AAAA,UACH,YAAY,WAAW,SAAS,cAAc,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG;AAAA,UACrE,QAAQ;AAAA,UACR,KAAK;AAAA,QAAA;AAAA,IAGjB;AAEO,WAAA;AAAA,MACH,YAAY,WAAW,SAAS,cAAc,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG;AAAA,MACrE,QAAQ;AAAA,MACR,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;AAEA,WAAW,IAAI,2BAA2B;"}