WASM bindings for texture2ddecoder, providing a high-performance JavaScript interface for decoding Texture2Ds.
Supports:
- BC1, BC2, BC3, BC4, BC5, BC6, BC7
- ATC RGB4 / RGBA8
- ETC1, ETC2, ETC2A1, ETC2A8
- EAC R / RG / signed variants
- ASTC
- PVRTC
- Crunch and Unity Crunch unpacking
- ESM and CommonJS
npm install texture2ddecoder.jsimport { Texture2DDecoder } from "texture2ddecoder.js"; //ESM
const { Texture2DDecoder } = require("texture2ddecoder.js"); // CJS
const decoded = await Texture2DDecoder.decodeAstc(
compressedData,
width,
height,
6,
6,
);
console.log(decoded); // Uint8ArrayAll decode methods return raw pixel bytes in BGRA order..
await Texture2DDecoder.decodeBc1(data, width, height);
await Texture2DDecoder.decodeBc2(data, width, height);
await Texture2DDecoder.decodeBc3(data, width, height);
await Texture2DDecoder.decodeBc4(data, width, height);
await Texture2DDecoder.decodeBc5(data, width, height);
await Texture2DDecoder.decodeBc6(data, width, height);
await Texture2DDecoder.decodeBc7(data, width, height);
await Texture2DDecoder.decodeAtcRgb4(data, width, height);
await Texture2DDecoder.decodeAtcRgba8(data, width, height);
await Texture2DDecoder.decodeEtc1(data, width, height);
await Texture2DDecoder.decodeEtc2(data, width, height);
await Texture2DDecoder.decodeEtc2a1(data, width, height);
await Texture2DDecoder.decodeEtc2a8(data, width, height);
await Texture2DDecoder.decodeEacr(data, width, height);
await Texture2DDecoder.decodeEacrSigned(data, width, height);
await Texture2DDecoder.decodeEacrg(data, width, height);
await Texture2DDecoder.decodeEacrgSigned(data, width, height);
await Texture2DDecoder.decodeAstc(data, width, height, blockWidth, blockHeight);
await Texture2DDecoder.decodePvrtc(data, width, height, is2bpp);
await Texture2DDecoder.unpackCrunch(data, levelIndex);
await Texture2DDecoder.unpackUnityCrunch(data, levelIndex);unpackCrunch(...) and unpackUnityCrunch(...) return unpacked compressed texture payloads. In most cases you will pass the result into one of the decode methods afterward.
This package wraps code derived from texture2ddecoder and its upstream codec sources.
The BC2 / DXT3 decoder in this package is additionally derived from Pillow's BC2 decoder implementation.
References: