Skip to content

Erik-White/AstcSharp

Repository files navigation

AstcSharp

A C# library for decoding ASTC (Adaptive Scalable Texture Compression) compressed textures.

Overview

ASTC is a lossy block-based texture compression format designed for real-time graphics applications. It provides flexible compression rates and quality levels, making it ideal for mobile and embedded GPU platforms.

AstcSharp is a pure C# implementation of the ASTC decompression algorithm, allowing you to decode ASTC-compressed textures to RGBA8888 format.

Features

  • Decode ASTC compressed data to RGBA8888 format
  • Support for all standard ASTC block footprints (4x4, 5x4, 5x5, 6x5, 6x6, 8x5, 8x6, 8x8, 10x5, 10x6, 10x8, 10x10, 12x10, 12x12)
  • Load and decode .astc files
  • Clean, minimal public API surface

Installation

dotnet add package AstcSharp

Usage

Decoding ASTC data from a byte array

using AstcSharp;
using AstcSharp.Core;

// Your ASTC compressed data
byte[] astcData = File.ReadAllBytes("texture.astc");

// Image dimensions and block footprint
int width = 512;
int height = 512;
FootprintType footprint = FootprintType.Footprint4x4;

// Decode to RGBA8888
Span<byte> rgbaPixels = AstcDecoder.ASTCDecompressToRGBA(
    astcData,
    width,
    height,
    footprint
);

// rgbaPixels now contains width * height * 4 bytes in RGBA order

Decoding an ASTC file

using AstcSharp;
using AstcSharp.IO;

// Load an ASTC file (includes header with dimensions and footprint)
byte[] fileData = File.ReadAllBytes("texture.astc");
AstcFile astcFile = AstcFile.FromMemory(fileData);

// Decode to RGBA8888
Span<byte> rgbaPixels = AstcDecoder.DecompressToImage(astcFile);

Future improvements

  • Improved performance
  • HDR support
  • Encoding

References

This implementation is based on:

License

See LICENSE for details.

About

Adaptive scalable texture compression library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages