texture2ddecoder.js
v1.1.0
Published
WASM bindings for K0lb3's texture2ddecoder
Maintainers
Readme
texture2ddecoder.js
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
Install
npm install texture2ddecoder.jsUsage
import { 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..
Main API
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.
Attribution
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:
- https://github.com/K0lb3/texture2ddecoder
- https://github.com/python-pillow/Pillow
