A C# library for decoding ASTC (Adaptive Scalable Texture Compression) compressed textures.
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.
- 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
dotnet add package AstcSharpusing 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 orderusing 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);- Improved performance
- HDR support
- Encoding
This implementation is based on:
- ASTC Specification: Khronos Data Format Specification - The official ASTC texture compression format specification
- Google astc-codec: github.com/google/astc-codec
See LICENSE for details.