sdfsdfs
This commit is contained in:
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.d.ts
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
12
node_modules/pixi.js/lib/compressed-textures/ktx/init.js
generated
vendored
Normal file
12
node_modules/pixi.js/lib/compressed-textures/ktx/init.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
'use strict';
|
||||
|
||||
var Extensions = require('../../extensions/Extensions.js');
|
||||
var detectCompressed = require('../shared/detectCompressed.js');
|
||||
var resolveCompressedTextureUrl = require('../shared/resolveCompressedTextureUrl.js');
|
||||
var loadKTX = require('./loadKTX.js');
|
||||
|
||||
"use strict";
|
||||
Extensions.extensions.add(loadKTX.loadKTX);
|
||||
Extensions.extensions.add(resolveCompressedTextureUrl.resolveCompressedTextureUrl);
|
||||
Extensions.extensions.add(detectCompressed.detectCompressed);
|
||||
//# sourceMappingURL=init.js.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.js.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"init.js","sources":["../../../src/compressed-textures/ktx/init.ts"],"sourcesContent":["import { extensions } from '../../extensions/Extensions';\nimport { detectCompressed } from '../shared/detectCompressed';\nimport { resolveCompressedTextureUrl } from '../shared/resolveCompressedTextureUrl';\nimport { loadKTX } from './loadKTX';\n\nextensions.add(loadKTX);\nextensions.add(resolveCompressedTextureUrl);\nextensions.add(detectCompressed);\n\n"],"names":["extensions","loadKTX","resolveCompressedTextureUrl","detectCompressed"],"mappings":";;;;;;;;AAKAA,qBAAA,CAAW,IAAIC,eAAO,CAAA,CAAA;AACtBD,qBAAA,CAAW,IAAIE,uDAA2B,CAAA,CAAA;AAC1CF,qBAAA,CAAW,IAAIG,iCAAgB,CAAA;;"}
|
10
node_modules/pixi.js/lib/compressed-textures/ktx/init.mjs
generated
vendored
Normal file
10
node_modules/pixi.js/lib/compressed-textures/ktx/init.mjs
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { extensions } from '../../extensions/Extensions.mjs';
|
||||
import { detectCompressed } from '../shared/detectCompressed.mjs';
|
||||
import { resolveCompressedTextureUrl } from '../shared/resolveCompressedTextureUrl.mjs';
|
||||
import { loadKTX } from './loadKTX.mjs';
|
||||
|
||||
"use strict";
|
||||
extensions.add(loadKTX);
|
||||
extensions.add(resolveCompressedTextureUrl);
|
||||
extensions.add(detectCompressed);
|
||||
//# sourceMappingURL=init.mjs.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.mjs.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/init.mjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"init.mjs","sources":["../../../src/compressed-textures/ktx/init.ts"],"sourcesContent":["import { extensions } from '../../extensions/Extensions';\nimport { detectCompressed } from '../shared/detectCompressed';\nimport { resolveCompressedTextureUrl } from '../shared/resolveCompressedTextureUrl';\nimport { loadKTX } from './loadKTX';\n\nextensions.add(loadKTX);\nextensions.add(resolveCompressedTextureUrl);\nextensions.add(detectCompressed);\n\n"],"names":[],"mappings":";;;;;;AAKA,UAAA,CAAW,IAAI,OAAO,CAAA,CAAA;AACtB,UAAA,CAAW,IAAI,2BAA2B,CAAA,CAAA;AAC1C,UAAA,CAAW,IAAI,gBAAgB,CAAA"}
|
17
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.d.ts
generated
vendored
Normal file
17
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.d.ts
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';
|
||||
import { ExtensionType } from '../../extensions/Extensions';
|
||||
import type { Loader } from '../../assets/loader/Loader';
|
||||
import type { ResolvedAsset } from '../../assets/types';
|
||||
import type { Texture } from '../../rendering/renderers/shared/texture/Texture';
|
||||
/** Loads KTX textures! */
|
||||
export declare const loadKTX: {
|
||||
extension: {
|
||||
type: ExtensionType.LoadParser;
|
||||
priority: LoaderParserPriority;
|
||||
name: string;
|
||||
};
|
||||
name: string;
|
||||
test(url: string): boolean;
|
||||
load<T>(url: string, _asset: ResolvedAsset, loader: Loader): Promise<Texture | Texture[]>;
|
||||
unload(texture: Texture | Texture[]): void;
|
||||
};
|
40
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.js
generated
vendored
Normal file
40
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
'use strict';
|
||||
|
||||
var LoaderParser = require('../../assets/loader/parsers/LoaderParser.js');
|
||||
var createTexture = require('../../assets/loader/parsers/textures/utils/createTexture.js');
|
||||
var checkExtension = require('../../assets/utils/checkExtension.js');
|
||||
var Extensions = require('../../extensions/Extensions.js');
|
||||
var CompressedSource = require('../../rendering/renderers/shared/texture/sources/CompressedSource.js');
|
||||
var getSupportedTextureFormats = require('../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats.js');
|
||||
var parseKTX = require('./parseKTX.js');
|
||||
|
||||
"use strict";
|
||||
const loadKTX = {
|
||||
extension: {
|
||||
type: Extensions.ExtensionType.LoadParser,
|
||||
priority: LoaderParser.LoaderParserPriority.High,
|
||||
name: "loadKTX"
|
||||
},
|
||||
name: "loadKTX",
|
||||
test(url) {
|
||||
return checkExtension.checkExtension(url, ".ktx");
|
||||
},
|
||||
async load(url, _asset, loader) {
|
||||
const supportedTextures = await getSupportedTextureFormats.getSupportedTextureFormats();
|
||||
const ktxResponse = await fetch(url);
|
||||
const ktxArrayBuffer = await ktxResponse.arrayBuffer();
|
||||
const textureOptions = parseKTX.parseKTX(ktxArrayBuffer, supportedTextures);
|
||||
const compressedTextureSource = new CompressedSource.CompressedSource(textureOptions);
|
||||
return createTexture.createTexture(compressedTextureSource, loader, url);
|
||||
},
|
||||
unload(texture) {
|
||||
if (Array.isArray(texture)) {
|
||||
texture.forEach((t) => t.destroy(true));
|
||||
} else {
|
||||
texture.destroy(true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.loadKTX = loadKTX;
|
||||
//# sourceMappingURL=loadKTX.js.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.js.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"loadKTX.js","sources":["../../../src/compressed-textures/ktx/loadKTX.ts"],"sourcesContent":["import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { parseKTX } from './parseKTX';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX textures! */\nexport const loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n name: 'loadKTX',\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 const supportedTextures = await getSupportedTextureFormats();\n\n const ktxResponse = await fetch(url);\n\n const ktxArrayBuffer = await ktxResponse.arrayBuffer();\n\n const textureOptions = parseKTX(ktxArrayBuffer, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\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} satisfies LoaderParser<Texture | Texture[], TextureSourceOptions>;\n\n"],"names":["ExtensionType","LoaderParserPriority","checkExtension","getSupportedTextureFormats","parseKTX","CompressedSource","createTexture"],"mappings":";;;;;;;;;;;AAeO,MAAM,OAAU,GAAA;AAAA,EACnB,SAAW,EAAA;AAAA,IACP,MAAMA,wBAAc,CAAA,UAAA;AAAA,IACpB,UAAUC,iCAAqB,CAAA,IAAA;AAAA,IAC/B,IAAM,EAAA,SAAA;AAAA,GACV;AAAA,EAEA,IAAM,EAAA,SAAA;AAAA,EAEN,KAAK,GACL,EAAA;AACI,IAAO,OAAAC,6BAAA,CAAe,KAAK,MAAM,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,MAAM,IAAA,CAAK,GAAa,EAAA,MAAA,EAAuB,MAC/C,EAAA;AACI,IAAM,MAAA,iBAAA,GAAoB,MAAMC,qDAA2B,EAAA,CAAA;AAE3D,IAAM,MAAA,WAAA,GAAc,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAEnC,IAAM,MAAA,cAAA,GAAiB,MAAM,WAAA,CAAY,WAAY,EAAA,CAAA;AAErD,IAAM,MAAA,cAAA,GAAiBC,iBAAS,CAAA,cAAA,EAAgB,iBAAiB,CAAA,CAAA;AAEjE,IAAM,MAAA,uBAAA,GAA0B,IAAIC,iCAAA,CAAiB,cAAc,CAAA,CAAA;AAEnE,IAAO,OAAAC,2BAAA,CAAc,uBAAyB,EAAA,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,GAC7D;AAAA,EAEA,OAAO,OACP,EAAA;AACI,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAO,CACzB,EAAA;AACI,MAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,CAAE,CAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA;AAAA,KAG1C,MAAA;AACI,MAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,KACxB;AAAA,GACJ;AAEJ;;;;"}
|
38
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.mjs
generated
vendored
Normal file
38
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.mjs
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser.mjs';
|
||||
import { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture.mjs';
|
||||
import { checkExtension } from '../../assets/utils/checkExtension.mjs';
|
||||
import { ExtensionType } from '../../extensions/Extensions.mjs';
|
||||
import { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource.mjs';
|
||||
import { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats.mjs';
|
||||
import { parseKTX } from './parseKTX.mjs';
|
||||
|
||||
"use strict";
|
||||
const loadKTX = {
|
||||
extension: {
|
||||
type: ExtensionType.LoadParser,
|
||||
priority: LoaderParserPriority.High,
|
||||
name: "loadKTX"
|
||||
},
|
||||
name: "loadKTX",
|
||||
test(url) {
|
||||
return checkExtension(url, ".ktx");
|
||||
},
|
||||
async load(url, _asset, loader) {
|
||||
const supportedTextures = await getSupportedTextureFormats();
|
||||
const ktxResponse = await fetch(url);
|
||||
const ktxArrayBuffer = await ktxResponse.arrayBuffer();
|
||||
const textureOptions = parseKTX(ktxArrayBuffer, supportedTextures);
|
||||
const compressedTextureSource = new CompressedSource(textureOptions);
|
||||
return createTexture(compressedTextureSource, loader, url);
|
||||
},
|
||||
unload(texture) {
|
||||
if (Array.isArray(texture)) {
|
||||
texture.forEach((t) => t.destroy(true));
|
||||
} else {
|
||||
texture.destroy(true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export { loadKTX };
|
||||
//# sourceMappingURL=loadKTX.mjs.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.mjs.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/loadKTX.mjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"loadKTX.mjs","sources":["../../../src/compressed-textures/ktx/loadKTX.ts"],"sourcesContent":["import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { parseKTX } from './parseKTX';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX textures! */\nexport const loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n name: 'loadKTX',\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 const supportedTextures = await getSupportedTextureFormats();\n\n const ktxResponse = await fetch(url);\n\n const ktxArrayBuffer = await ktxResponse.arrayBuffer();\n\n const textureOptions = parseKTX(ktxArrayBuffer, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\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} satisfies LoaderParser<Texture | Texture[], TextureSourceOptions>;\n\n"],"names":[],"mappings":";;;;;;;;;AAeO,MAAM,OAAU,GAAA;AAAA,EACnB,SAAW,EAAA;AAAA,IACP,MAAM,aAAc,CAAA,UAAA;AAAA,IACpB,UAAU,oBAAqB,CAAA,IAAA;AAAA,IAC/B,IAAM,EAAA,SAAA;AAAA,GACV;AAAA,EAEA,IAAM,EAAA,SAAA;AAAA,EAEN,KAAK,GACL,EAAA;AACI,IAAO,OAAA,cAAA,CAAe,KAAK,MAAM,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,MAAM,IAAA,CAAK,GAAa,EAAA,MAAA,EAAuB,MAC/C,EAAA;AACI,IAAM,MAAA,iBAAA,GAAoB,MAAM,0BAA2B,EAAA,CAAA;AAE3D,IAAM,MAAA,WAAA,GAAc,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAEnC,IAAM,MAAA,cAAA,GAAiB,MAAM,WAAA,CAAY,WAAY,EAAA,CAAA;AAErD,IAAM,MAAA,cAAA,GAAiB,QAAS,CAAA,cAAA,EAAgB,iBAAiB,CAAA,CAAA;AAEjE,IAAM,MAAA,uBAAA,GAA0B,IAAI,gBAAA,CAAiB,cAAc,CAAA,CAAA;AAEnE,IAAO,OAAA,aAAA,CAAc,uBAAyB,EAAA,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,GAC7D;AAAA,EAEA,OAAO,OACP,EAAA;AACI,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAO,CACzB,EAAA;AACI,MAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,CAAE,CAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA;AAAA,KAG1C,MAAA;AACI,MAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,KACxB;AAAA,GACJ;AAEJ;;;;"}
|
3
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.d.ts
generated
vendored
Normal file
3
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';
|
||||
import type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';
|
||||
export declare function parseKTX(arrayBuffer: ArrayBuffer, supportedFormats: TEXTURE_FORMATS[]): TextureSourceOptions<Uint8Array[]>;
|
132
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.js
generated
vendored
Normal file
132
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.js
generated
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
'use strict';
|
||||
|
||||
var _const = require('../ktx2/const.js');
|
||||
|
||||
"use strict";
|
||||
function parseKTX(arrayBuffer, supportedFormats) {
|
||||
const dataView = new DataView(arrayBuffer);
|
||||
if (!validate(dataView)) {
|
||||
throw new Error("Invalid KTX identifier in header");
|
||||
}
|
||||
const {
|
||||
littleEndian,
|
||||
glType,
|
||||
glFormat,
|
||||
glInternalFormat,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
numberOfMipmapLevels,
|
||||
offset
|
||||
} = parseKTXHeader(dataView);
|
||||
const textureFormat = _const.KTX.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[glInternalFormat];
|
||||
if (!textureFormat) {
|
||||
throw new Error(`Unknown texture format ${glInternalFormat}`);
|
||||
}
|
||||
if (!supportedFormats.includes(textureFormat)) {
|
||||
throw new Error(`Unsupported texture format: ${textureFormat}, supportedFormats: ${supportedFormats}`);
|
||||
}
|
||||
const imagePixelByteSize = getImagePixelByteSize(glType, glFormat, glInternalFormat);
|
||||
const imageBuffers = getImageBuffers(
|
||||
dataView,
|
||||
glType,
|
||||
imagePixelByteSize,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
offset,
|
||||
numberOfMipmapLevels,
|
||||
littleEndian
|
||||
);
|
||||
return {
|
||||
format: textureFormat,
|
||||
width: pixelWidth,
|
||||
height: pixelHeight,
|
||||
resource: imageBuffers,
|
||||
alphaMode: "no-premultiply-alpha"
|
||||
};
|
||||
}
|
||||
function getImageBuffers(dataView, glType, imagePixelByteSize, pixelWidth, pixelHeight, offset, numberOfMipmapLevels, littleEndian) {
|
||||
const alignedWidth = pixelWidth + 3 & ~3;
|
||||
const alignedHeight = pixelHeight + 3 & ~3;
|
||||
let imagePixels = pixelWidth * pixelHeight;
|
||||
if (glType === 0) {
|
||||
imagePixels = alignedWidth * alignedHeight;
|
||||
}
|
||||
let mipByteSize = imagePixels * imagePixelByteSize;
|
||||
let mipWidth = pixelWidth;
|
||||
let mipHeight = pixelHeight;
|
||||
let alignedMipWidth = alignedWidth;
|
||||
let alignedMipHeight = alignedHeight;
|
||||
let imageOffset = offset;
|
||||
const imageBuffers = new Array(numberOfMipmapLevels);
|
||||
for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {
|
||||
const imageSize = dataView.getUint32(imageOffset, littleEndian);
|
||||
let elementOffset = imageOffset + 4;
|
||||
imageBuffers[mipmapLevel] = new Uint8Array(dataView.buffer, elementOffset, mipByteSize);
|
||||
elementOffset += mipByteSize;
|
||||
imageOffset += imageSize + 4;
|
||||
imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset;
|
||||
mipWidth = mipWidth >> 1 || 1;
|
||||
mipHeight = mipHeight >> 1 || 1;
|
||||
alignedMipWidth = mipWidth + 4 - 1 & ~(4 - 1);
|
||||
alignedMipHeight = mipHeight + 4 - 1 & ~(4 - 1);
|
||||
mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;
|
||||
}
|
||||
return imageBuffers;
|
||||
}
|
||||
function getImagePixelByteSize(glType, glFormat, glInternalFormat) {
|
||||
let imagePixelByteSize = _const.KTX.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];
|
||||
if (glType !== 0) {
|
||||
if (_const.KTX.TYPES_TO_BYTES_PER_COMPONENT[glType]) {
|
||||
imagePixelByteSize = _const.KTX.TYPES_TO_BYTES_PER_COMPONENT[glType] * _const.KTX.FORMATS_TO_COMPONENTS[glFormat];
|
||||
} else {
|
||||
imagePixelByteSize = _const.KTX.TYPES_TO_BYTES_PER_PIXEL[glType];
|
||||
}
|
||||
}
|
||||
if (imagePixelByteSize === void 0) {
|
||||
throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");
|
||||
}
|
||||
return imagePixelByteSize;
|
||||
}
|
||||
function parseKTXHeader(dataView) {
|
||||
const littleEndian = dataView.getUint32(_const.KTX.FIELDS.ENDIANNESS, true) === _const.KTX.ENDIANNESS;
|
||||
const glType = dataView.getUint32(_const.KTX.FIELDS.GL_TYPE, littleEndian);
|
||||
const glFormat = dataView.getUint32(_const.KTX.FIELDS.GL_FORMAT, littleEndian);
|
||||
const glInternalFormat = dataView.getUint32(_const.KTX.FIELDS.GL_INTERNAL_FORMAT, littleEndian);
|
||||
const pixelWidth = dataView.getUint32(_const.KTX.FIELDS.PIXEL_WIDTH, littleEndian);
|
||||
const pixelHeight = dataView.getUint32(_const.KTX.FIELDS.PIXEL_HEIGHT, littleEndian) || 1;
|
||||
const pixelDepth = dataView.getUint32(_const.KTX.FIELDS.PIXEL_DEPTH, littleEndian) || 1;
|
||||
const numberOfArrayElements = dataView.getUint32(_const.KTX.FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;
|
||||
const numberOfFaces = dataView.getUint32(_const.KTX.FIELDS.NUMBER_OF_FACES, littleEndian);
|
||||
const numberOfMipmapLevels = dataView.getUint32(_const.KTX.FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);
|
||||
const bytesOfKeyValueData = dataView.getUint32(_const.KTX.FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);
|
||||
if (pixelHeight === 0 || pixelDepth !== 1) {
|
||||
throw new Error("Only 2D textures are supported");
|
||||
}
|
||||
if (numberOfFaces !== 1) {
|
||||
throw new Error("CubeTextures are not supported by KTXLoader yet!");
|
||||
}
|
||||
if (numberOfArrayElements !== 1) {
|
||||
throw new Error("WebGL does not support array textures");
|
||||
}
|
||||
return {
|
||||
littleEndian,
|
||||
glType,
|
||||
glFormat,
|
||||
glInternalFormat,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
numberOfMipmapLevels,
|
||||
offset: _const.KTX.FILE_HEADER_SIZE + bytesOfKeyValueData
|
||||
};
|
||||
}
|
||||
function validate(dataView) {
|
||||
for (let i = 0; i < _const.KTX.FILE_IDENTIFIER.length; i++) {
|
||||
if (dataView.getUint8(i) !== _const.KTX.FILE_IDENTIFIER[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.parseKTX = parseKTX;
|
||||
//# sourceMappingURL=parseKTX.js.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.js.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
130
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.mjs
generated
vendored
Normal file
130
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.mjs
generated
vendored
Normal file
@@ -0,0 +1,130 @@
|
||||
import { KTX } from '../ktx2/const.mjs';
|
||||
|
||||
"use strict";
|
||||
function parseKTX(arrayBuffer, supportedFormats) {
|
||||
const dataView = new DataView(arrayBuffer);
|
||||
if (!validate(dataView)) {
|
||||
throw new Error("Invalid KTX identifier in header");
|
||||
}
|
||||
const {
|
||||
littleEndian,
|
||||
glType,
|
||||
glFormat,
|
||||
glInternalFormat,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
numberOfMipmapLevels,
|
||||
offset
|
||||
} = parseKTXHeader(dataView);
|
||||
const textureFormat = KTX.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[glInternalFormat];
|
||||
if (!textureFormat) {
|
||||
throw new Error(`Unknown texture format ${glInternalFormat}`);
|
||||
}
|
||||
if (!supportedFormats.includes(textureFormat)) {
|
||||
throw new Error(`Unsupported texture format: ${textureFormat}, supportedFormats: ${supportedFormats}`);
|
||||
}
|
||||
const imagePixelByteSize = getImagePixelByteSize(glType, glFormat, glInternalFormat);
|
||||
const imageBuffers = getImageBuffers(
|
||||
dataView,
|
||||
glType,
|
||||
imagePixelByteSize,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
offset,
|
||||
numberOfMipmapLevels,
|
||||
littleEndian
|
||||
);
|
||||
return {
|
||||
format: textureFormat,
|
||||
width: pixelWidth,
|
||||
height: pixelHeight,
|
||||
resource: imageBuffers,
|
||||
alphaMode: "no-premultiply-alpha"
|
||||
};
|
||||
}
|
||||
function getImageBuffers(dataView, glType, imagePixelByteSize, pixelWidth, pixelHeight, offset, numberOfMipmapLevels, littleEndian) {
|
||||
const alignedWidth = pixelWidth + 3 & ~3;
|
||||
const alignedHeight = pixelHeight + 3 & ~3;
|
||||
let imagePixels = pixelWidth * pixelHeight;
|
||||
if (glType === 0) {
|
||||
imagePixels = alignedWidth * alignedHeight;
|
||||
}
|
||||
let mipByteSize = imagePixels * imagePixelByteSize;
|
||||
let mipWidth = pixelWidth;
|
||||
let mipHeight = pixelHeight;
|
||||
let alignedMipWidth = alignedWidth;
|
||||
let alignedMipHeight = alignedHeight;
|
||||
let imageOffset = offset;
|
||||
const imageBuffers = new Array(numberOfMipmapLevels);
|
||||
for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {
|
||||
const imageSize = dataView.getUint32(imageOffset, littleEndian);
|
||||
let elementOffset = imageOffset + 4;
|
||||
imageBuffers[mipmapLevel] = new Uint8Array(dataView.buffer, elementOffset, mipByteSize);
|
||||
elementOffset += mipByteSize;
|
||||
imageOffset += imageSize + 4;
|
||||
imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset;
|
||||
mipWidth = mipWidth >> 1 || 1;
|
||||
mipHeight = mipHeight >> 1 || 1;
|
||||
alignedMipWidth = mipWidth + 4 - 1 & ~(4 - 1);
|
||||
alignedMipHeight = mipHeight + 4 - 1 & ~(4 - 1);
|
||||
mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;
|
||||
}
|
||||
return imageBuffers;
|
||||
}
|
||||
function getImagePixelByteSize(glType, glFormat, glInternalFormat) {
|
||||
let imagePixelByteSize = KTX.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];
|
||||
if (glType !== 0) {
|
||||
if (KTX.TYPES_TO_BYTES_PER_COMPONENT[glType]) {
|
||||
imagePixelByteSize = KTX.TYPES_TO_BYTES_PER_COMPONENT[glType] * KTX.FORMATS_TO_COMPONENTS[glFormat];
|
||||
} else {
|
||||
imagePixelByteSize = KTX.TYPES_TO_BYTES_PER_PIXEL[glType];
|
||||
}
|
||||
}
|
||||
if (imagePixelByteSize === void 0) {
|
||||
throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");
|
||||
}
|
||||
return imagePixelByteSize;
|
||||
}
|
||||
function parseKTXHeader(dataView) {
|
||||
const littleEndian = dataView.getUint32(KTX.FIELDS.ENDIANNESS, true) === KTX.ENDIANNESS;
|
||||
const glType = dataView.getUint32(KTX.FIELDS.GL_TYPE, littleEndian);
|
||||
const glFormat = dataView.getUint32(KTX.FIELDS.GL_FORMAT, littleEndian);
|
||||
const glInternalFormat = dataView.getUint32(KTX.FIELDS.GL_INTERNAL_FORMAT, littleEndian);
|
||||
const pixelWidth = dataView.getUint32(KTX.FIELDS.PIXEL_WIDTH, littleEndian);
|
||||
const pixelHeight = dataView.getUint32(KTX.FIELDS.PIXEL_HEIGHT, littleEndian) || 1;
|
||||
const pixelDepth = dataView.getUint32(KTX.FIELDS.PIXEL_DEPTH, littleEndian) || 1;
|
||||
const numberOfArrayElements = dataView.getUint32(KTX.FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;
|
||||
const numberOfFaces = dataView.getUint32(KTX.FIELDS.NUMBER_OF_FACES, littleEndian);
|
||||
const numberOfMipmapLevels = dataView.getUint32(KTX.FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);
|
||||
const bytesOfKeyValueData = dataView.getUint32(KTX.FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);
|
||||
if (pixelHeight === 0 || pixelDepth !== 1) {
|
||||
throw new Error("Only 2D textures are supported");
|
||||
}
|
||||
if (numberOfFaces !== 1) {
|
||||
throw new Error("CubeTextures are not supported by KTXLoader yet!");
|
||||
}
|
||||
if (numberOfArrayElements !== 1) {
|
||||
throw new Error("WebGL does not support array textures");
|
||||
}
|
||||
return {
|
||||
littleEndian,
|
||||
glType,
|
||||
glFormat,
|
||||
glInternalFormat,
|
||||
pixelWidth,
|
||||
pixelHeight,
|
||||
numberOfMipmapLevels,
|
||||
offset: KTX.FILE_HEADER_SIZE + bytesOfKeyValueData
|
||||
};
|
||||
}
|
||||
function validate(dataView) {
|
||||
for (let i = 0; i < KTX.FILE_IDENTIFIER.length; i++) {
|
||||
if (dataView.getUint8(i) !== KTX.FILE_IDENTIFIER[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
export { parseKTX };
|
||||
//# sourceMappingURL=parseKTX.mjs.map
|
1
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.mjs.map
generated
vendored
Normal file
1
node_modules/pixi.js/lib/compressed-textures/ktx/parseKTX.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user