Skip to content

Repository files navigation

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.js

Usage

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); // Uint8Array

All 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:

About

High-performance WebAssembly bindings in TypeScript for decoding compressed texture formats.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages