UNPKG

pixi-basis-ktx2

Version:

Loader for the *.basis & *.ktx2 supercompressed texture file format. This package also ships with the transcoder!

157 lines 4.98 kB
import { INTERNAL_FORMATS } from '@pixi/compressed-textures'; import { TYPES } from '@pixi/core'; import type { CompressedTextureResource } from '@pixi/compressed-textures'; import type { BufferResource } from '@pixi/core'; /** * The transcoding formats provided by basis_universal. * * NOTE: Not all of these formats are supported on WebGL! * @ignore */ export declare enum BASIS_FORMATS { cTFETC1 = 0, cTFETC2 = 1, cTFBC1 = 2, cTFBC3 = 3, cTFBC4 = 4, cTFBC5 = 5, cTFBC7 = 6, cTFPVRTC1_4_RGB = 8, cTFPVRTC1_4_RGBA = 9, cTFASTC_4x4 = 10, cTFATC_RGB = 11, cTFATC_RGBA_INTERPOLATED_ALPHA = 12, cTFRGBA32 = 13, cTFRGB565 = 14, cTFBGR565 = 15, cTFRGBA4444 = 16 } /** * Maps {@link BASIS_FORMATS} to {@link PIXI.INTERNAL_FORMATS} * @ignore */ export declare const BASIS_FORMAT_TO_INTERNAL_FORMAT: { [id: number]: INTERNAL_FORMATS; }; /** * Maps {@link BASIS_FORMATS} to {@link PIXI.TYPES}. These formats are a fallback when the basis file cannot be transcoded * to a valid compressed texture format. * * NOTE: {@link BASIS_FORMATS.cTFBGR565} is not supported, while {@link BASIS_FORMATS.cTFRGBA4444} is not implemented by * [at]pixi/basis. * @ignore */ export declare const BASIS_FORMAT_TO_TYPE: { [id: number]: TYPES; }; /** * Maps {@link PIXI.INTERNAL_FORMATS} to {@link BASIS_FORMATS} * @ignore */ export declare const INTERNAL_FORMAT_TO_BASIS_FORMAT: { [id: number]: number; }; /** * Enumerates the basis formats with alpha components * @ignore */ export declare const BASIS_FORMATS_ALPHA: { [id: number]: boolean; }; export type TranscodedResourcesArray = (Array<CompressedTextureResource> | Array<BufferResource>) & { basisFormat: BASIS_FORMATS; }; /** * Binding to C++ {@code BasisFile} wrapper class. * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/texture/index.html * @private */ export declare class BasisFile { constructor(buffer: Uint8Array); getNumImages(): number; getNumLevels(imageId: number): number; getImageWidth(imageId: number, level: number): number; getImageHeight(imageId: number, level: number): number; getHasAlpha(): boolean; startTranscoding(): boolean; getImageTranscodedSizeInBytes(imageId: number, level: number, basisFormat: number): number; transcodeImage(dstBuff: Uint8Array, imageId: number, level: number, basisFormat: BASIS_FORMATS, pvrtcWrapAddressing: boolean, getAlphaForOpaqueFormats: boolean): number; close(): void; delete(): void; } /** * Compressed texture extensions relevant to the formats into which Basis can decompress into. * @ignore */ export type BasisTextureExtensions = { 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; bptc: any; }; /** * Interface for the KTX2 image level info. * @ignore */ export interface KTX2LevelInfo { levelIndex: number; layerIndex: number; faceIndex: number; origWidth: number; origHeight: number; width: number; height: number; numBlocksX: number; numBlocksY: number; totalBlocks: number; alphaFlag: number; iframeFlag: number; } /** * Binding to C++ {@code KTX2File} wrapper class. * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html * @private */ export declare class KTX2File { constructor(buffer: Uint8Array); getLevels(): number; getLayers(): number; getFaces(): number; getWidth(): number; getHeight(): number; getHasAlpha(): boolean; getDFD(data: Uint8Array): number; getDFDSize(): number; startTranscoding(): boolean; getImageLevelInfo(level_index: number, layer_index: number, face_index: number): KTX2LevelInfo; getImageTranscodedSizeInBytes(level: number, layer: number, face: number, basisFormat: number): number; transcodeImage(dstBuff: Uint8Array, level: number, layer: number, face: number, basisFormat: BASIS_FORMATS, getAlphaForOpaqueFormats: boolean, channel0: number, channel1: number): number; close(): void; delete(): void; } /** API provided by basis_universal WebGL library. */ export type BasisBinding = { BasisFile: typeof BasisFile; KTX2File: typeof KTX2File; initializeBasis: () => void; }; /** * Binding to basis_universal WebGL library. * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/build/basis_transcoder.js * @ignore */ export type BASIS = (opts?: { wasmBinary: ArrayBuffer; }) => Promise<BasisBinding>; declare global { interface Window { BASIS: BASIS; } } //# sourceMappingURL=Basis.d.ts.map