///
import type { BaseTexture } from '@pixi/core';
import { BufferResource } from '@pixi/core';
import type { ExtensionMetadata } from '@pixi/core';
import { FORMATS } from '@pixi/constants';
import type { GLTexture } from '@pixi/core';
import { LoaderResource } from '@pixi/loaders';
import type { Renderer } from '@pixi/core';
import type { Resource } from '@pixi/core';
import { TYPES } from '@pixi/constants';
import { ViewableBuffer } from '@pixi/core';
/**
* Resource that fetches texture data over the network and stores it in a buffer.
* @class
* @extends PIXI.Resource
* @memberof PIXI
*/
export declare abstract class BlobResource extends BufferResource {
protected origin: string;
protected buffer: ViewableBuffer;
protected loaded: boolean;
/**
* @param {string} source - the URL of the texture file
* @param {PIXI.IBlobOptions} options
* @param {boolean}[options.autoLoad] - whether to fetch the data immediately;
* you can fetch it later via {@link BlobResource#load}
* @param {boolean}[options.width] - the width in pixels.
* @param {boolean}[options.height] - the height in pixels.
*/
constructor(source: string | Uint8Array | Uint32Array | Float32Array, options?: IBlobOptions);
protected onBlobLoaded(_data: ArrayBuffer): void;
/** Loads the blob */
load(): Promise;
}
/**
* @ignore
*/
export declare type CompressedLevelBuffer = {
levelID: number;
levelWidth: number;
levelHeight: number;
levelBuffer: Uint8Array;
};
export declare type CompressedTextureExtensionRef = keyof CompressedTextureExtensions;
/** Compressed texture extensions */
export declare type CompressedTextureExtensions = {
s3tc?: WEBGL_compressed_texture_s3tc;
s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb;
etc: any;
etc1: any;
pvrtc: any;
atc: any;
astc: WEBGL_compressed_texture_astc;
};
/**
* Loader plugin for handling compressed textures for all platforms.
* @class
* @memberof PIXI
* @implements {PIXI.ILoaderPlugin}
*/
export declare class CompressedTextureLoader {
/** @ignore */
static extension: ExtensionMetadata;
/** Map of available texture extensions. */
private static _textureExtensions;
/** Map of available texture formats. */
private static _textureFormats;
/**
* Called after a compressed-textures manifest is loaded.
*
* This will then load the correct compression format for the device. Your manifest should adhere
* to the following schema:
*
* ```js
* import { INTERNAL_FORMATS } from '@pixi/constants';
*
* type CompressedTextureManifest = {
* textures: Array<{ src: string, format?: keyof INTERNAL_FORMATS}>,
* cacheID: string;
* };
* ```
*
* This is an example of a .json manifest file
*
* ```json
* {
* "cacheID":"asset",
* "textures":[
* { "src":"asset.fallback.png" },
* { "format":"COMPRESSED_RGBA_S3TC_DXT5_EXT", "src":"asset.s3tc.ktx" },
* { "format":"COMPRESSED_RGBA8_ETC2_EAC", "src":"asset.etc.ktx" },
* { "format":"RGBA_PVRTC_4BPPV1_IMG", "src":"asset.pvrtc.ktx" }
* ]
* }
* ```
*/
static use(resource: LoaderResource, next: (...args: any[]) => void): void;
/** Map of available texture extensions. */
static get textureExtensions(): Partial;
/** Map of available texture formats. */
static get textureFormats(): {
[P in keyof INTERNAL_FORMATS]?: number;
};
}
/**
* Schema for compressed-texture manifests
* @ignore
* @see PIXI.CompressedTextureLoader
*/
export declare type CompressedTextureManifest = {
textures: Array<{
src: string;
format?: keyof INTERNAL_FORMATS;
}>;
cacheID: string;
};
/**
* Resource for compressed texture formats, as follows: S3TC/DXTn (& their sRGB formats), ATC, ASTC, ETC 1/2, PVRTC.
*
* Compressed textures improve performance when rendering is texture-bound. The texture data stays compressed in
* graphics memory, increasing memory locality and speeding up texture fetches. These formats can also be used to store
* more detail in the same amount of memory.
*
* For most developers, container file formats are a better abstraction instead of directly handling raw texture
* data. PixiJS provides native support for the following texture file formats (via {@link PIXI.Loader}):
*
* **.dds** - the DirectDraw Surface file format stores DXTn (DXT-1,3,5) data. See {@link PIXI.DDSLoader}
* **.ktx** - the Khronos Texture Container file format supports storing all the supported WebGL compression formats.
* See {@link PIXI.KTXLoader}.
* **.basis** - the BASIS supercompressed file format stores texture data in an internal format that is transcoded
* to the compression format supported on the device at _runtime_. It also supports transcoding into a uncompressed
* format as a fallback; you must install the `@pixi/basis-loader`, `@pixi/basis-transcoder` packages separately to
* use these files. See {@link PIXI.BasisLoader}.
*
* The loaders for the aforementioned formats use `CompressedTextureResource` internally. It is strongly suggested that
* they be used instead.
*
* ## Working directly with CompressedTextureResource
*
* Since `CompressedTextureResource` inherits `BlobResource`, you can provide it a URL pointing to a file containing
* the raw texture data (with no file headers!):
*
* ```js
* // The resource backing the texture data for your textures.
* // NOTE: You can also provide a ArrayBufferView instead of a URL. This is used when loading data from a container file
* // format such as KTX, DDS, or BASIS.
* const compressedResource = new PIXI.CompressedTextureResource("bunny.dxt5", {
* format: PIXI.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
* width: 256,
* height: 256
* });
*
* // You can create a base-texture to the cache, so that future `Texture`s can be created using the `Texture.from` API.
* const baseTexture = new PIXI.BaseTexture(compressedResource, { pmaMode: PIXI.ALPHA_MODES.NPM });
*
* // Create a Texture to add to the TextureCache
* const texture = new PIXI.Texture(baseTexture);
*
* // Add baseTexture & texture to the global texture cache
* PIXI.BaseTexture.addToCache(baseTexture, "bunny.dxt5");
* PIXI.Texture.addToCache(texture, "bunny.dxt5");
* ```
* @memberof PIXI
*/
export declare class CompressedTextureResource extends BlobResource {
/** The compression format */
format: INTERNAL_FORMATS;
/**
* The number of mipmap levels stored in the resource buffer.
* @default 1
*/
levels: number;
private _extension;
private _levelBuffers;
/**
* @param source - the buffer/URL holding the compressed texture data
* @param options
* @param {PIXI.INTERNAL_FORMATS} options.format - the compression format
* @param {number} options.width - the image width in pixels.
* @param {number} options.height - the image height in pixels.
* @param {number} [options.level=1] - the mipmap levels stored in the compressed texture, including level 0.
* @param {number} [options.levelBuffers] - the buffers for each mipmap level. `CompressedTextureResource` can allows you
* to pass `null` for `source`, for cases where each level is stored in non-contiguous memory.
*/
constructor(source: string | Uint8Array | Uint32Array, options: ICompressedTextureResourceOptions);
/**
* @override
* @param renderer - A reference to the current renderer
* @param _texture - the texture
* @param _glTexture - texture instance for this webgl context
*/
upload(renderer: Renderer, _texture: BaseTexture, _glTexture: GLTexture): boolean;
/** @protected */
protected onBlobLoaded(): void;
/**
* Returns the key (to ContextSystem#extensions) for the WebGL extension supporting the compression format
* @private
* @param format - the compression format to get the extension for.
*/
private static _formatToExtension;
/**
* Pre-creates buffer views for each mipmap level
* @private
* @param buffer -
* @param format - compression formats
* @param levels - mipmap levels
* @param blockWidth -
* @param blockHeight -
* @param imageWidth - width of the image in pixels
* @param imageHeight - height of the image in pixels
*/
private static _createLevelBuffers;
}
/**
* @class
* @memberof PIXI
* @implements {PIXI.ILoaderPlugin}
* @see https://docs.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-pguide
*/
export declare class DDSLoader {
/** @ignore */
static extension: ExtensionMetadata;
/**
* Registers a DDS compressed texture
* @see PIXI.Loader.loaderMiddleware
* @param resource - loader resource that is checked to see if it is a DDS file
* @param next - callback Function to call when done
*/
static use(resource: LoaderResource, next: (...args: any[]) => void): void;
}
/**
* Number of components in each {@link PIXI.FORMATS}
* @ignore
*/
export declare const FORMATS_TO_COMPONENTS: {
[id: number]: number;
};
declare interface IBlobOptions {
autoLoad?: boolean;
width: number;
height: number;
}
/**
* @ignore
*/
export declare interface ICompressedTextureResourceOptions {
format: INTERNAL_FORMATS;
width: number;
height: number;
levels?: number;
levelBuffers?: CompressedLevelBuffer[];
}
/**
* Maps the compressed texture formats in {@link PIXI.INTERNAL_FORMATS} to the number of bytes taken by
* each texel.
* @memberof PIXI
* @static
* @ignore
*/
export declare const INTERNAL_FORMAT_TO_BYTES_PER_PIXEL: {
[id: number]: number;
};
/**
* WebGL internal formats, including compressed texture formats provided by extensions
* @memberof PIXI
* @static
* @name INTERNAL_FORMATS
* @enum {number}
* @property {number} [COMPRESSED_RGB_S3TC_DXT1_EXT=0x83F0] -
* @property {number} [COMPRESSED_RGBA_S3TC_DXT1_EXT=0x83F1] -
* @property {number} [COMPRESSED_RGBA_S3TC_DXT3_EXT=0x83F2] -
* @property {number} [COMPRESSED_RGBA_S3TC_DXT5_EXT=0x83F3] -
* @property {number} [COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917] -
* @property {number} [COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918] -
* @property {number} [COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919] -
* @property {number} [COMPRESSED_SRGB_S3TC_DXT1_EXT=35916] -
* @property {number} [COMPRESSED_R11_EAC=0x9270] -
* @property {number} [COMPRESSED_SIGNED_R11_EAC=0x9271] -
* @property {number} [COMPRESSED_RG11_EAC=0x9272] -
* @property {number} [COMPRESSED_SIGNED_RG11_EAC=0x9273] -
* @property {number} [COMPRESSED_RGB8_ETC2=0x9274] -
* @property {number} [COMPRESSED_RGBA8_ETC2_EAC=0x9278] -
* @property {number} [COMPRESSED_SRGB8_ETC2=0x9275] -
* @property {number} [COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=0x9279] -
* @property {number} [COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=0x9276] -
* @property {number} [COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=0x9277] -
* @property {number} [COMPRESSED_RGB_PVRTC_4BPPV1_IMG=0x8C00] -
* @property {number} [COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=0x8C02] -
* @property {number} [COMPRESSED_RGB_PVRTC_2BPPV1_IMG=0x8C01] -
* @property {number} [COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=0x8C03] -
* @property {number} [COMPRESSED_RGB_ETC1_WEBGL=0x8D64] -
* @property {number} [COMPRESSED_RGB_ATC_WEBGL=0x8C92] -
* @property {number} [COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=0x8C92] -
* @property {number} [COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=0x87EE] -
* @property {number} [COMPRESSED_RGBA_ASTC_4x4_KHR=0x93B0] -
*/
export declare enum INTERNAL_FORMATS {
COMPRESSED_RGB_S3TC_DXT1_EXT = 33776,
COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777,
COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778,
COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779,
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917,
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918,
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919,
COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916,
COMPRESSED_R11_EAC = 37488,
COMPRESSED_SIGNED_R11_EAC = 37489,
COMPRESSED_RG11_EAC = 37490,
COMPRESSED_SIGNED_RG11_EAC = 37491,
COMPRESSED_RGB8_ETC2 = 37492,
COMPRESSED_RGBA8_ETC2_EAC = 37496,
COMPRESSED_SRGB8_ETC2 = 37493,
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497,
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494,
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495,
COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840,
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842,
COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841,
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843,
COMPRESSED_RGB_ETC1_WEBGL = 36196,
COMPRESSED_RGB_ATC_WEBGL = 35986,
COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986,
COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798,
COMPRESSED_RGBA_ASTC_4x4_KHR = 37808
}
/**
* Loader plugin for handling KTX texture container files.
*
* This KTX loader does not currently support the following features:
* * cube textures
* * 3D textures
* * endianness conversion for big-endian machines
* * embedded *.basis files
*
* It does supports the following features:
* * multiple textures per file
* * mipmapping (only for compressed formats)
* * vendor-specific key/value data parsing (enable {@link PIXI.KTXLoader.loadKeyValueData})
* @class
* @memberof PIXI
* @implements {PIXI.ILoaderPlugin}
*/
export declare class KTXLoader {
/** @ignore */
static extension: ExtensionMetadata;
/**
* If set to `true`, {@link PIXI.KTXLoader} will parse key-value data in KTX textures. This feature relies
* on the [Encoding Standard]{@link https://encoding.spec.whatwg.org}.
*
* The key-value data will be available on the base-textures as {@code PIXI.BaseTexture.ktxKeyValueData}. They
* will hold a reference to the texture data buffer, so make sure to delete key-value data once you are done
* using it.
*/
static loadKeyValueData: boolean;
/**
* Called after a KTX file is loaded.
*
* This will parse the KTX file header and add a {@code BaseTexture} to the texture
* cache.
* @see PIXI.Loader.loaderMiddleware
* @param resource - loader resource that is checked to see if it is a KTX file
* @param next - callback Function to call when done
*/
static use(resource: LoaderResource, next: (...args: any[]) => void): void;
}
/**
* @class
* @memberof PIXI
* @implements {PIXI.ILoaderPlugin}
* @see https://docs.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-pguide
*/
/**
* Parses the DDS file header, generates base-textures, and puts them into the texture cache.
* @param arrayBuffer
*/
export declare function parseDDS(arrayBuffer: ArrayBuffer): CompressedTextureResource[];
export declare function parseKTX(url: string, arrayBuffer: ArrayBuffer, loadKeyValueData?: boolean): {
compressed?: CompressedTextureResource[];
uncompressed?: {
resource: BufferResource;
type: TYPES;
format: FORMATS;
}[];
kvData: Map | null;
};
/**
* Maps {@link PIXI.TYPES} to the bytes taken per component, excluding those ones that are bit-fields.
* @ignore
*/
export declare const TYPES_TO_BYTES_PER_COMPONENT: {
[id: number]: number;
};
/**
* Number of bytes per pixel in bit-field types in {@link PIXI.TYPES}
* @ignore
*/
export declare const TYPES_TO_BYTES_PER_PIXEL: {
[id: number]: number;
};
export { }