AstcSharp 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package AstcSharp --version 1.2.0
                    
NuGet\Install-Package AstcSharp -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AstcSharp" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AstcSharp" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="AstcSharp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AstcSharp --version 1.2.0
                    
#r "nuget: AstcSharp, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AstcSharp@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AstcSharp&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=AstcSharp&version=1.2.0
                    
Install as a Cake Tool

AstcSharp

A pure C# library for decoding ASTC (Adaptive Scalable Texture Compression) textures, supporting both LDR and HDR content.

Features

  • Managed C#, no native dependencies
  • Decode ASTC textures to RGBA32 (LDR) or RGBA float / FP16 (HDR)
  • Linear and sRGB LDR decode modes
  • All standard block footprints (4x4 to 12x12)
  • UASTC LDR decode (Basis Universal), via UastcDecoder — all 19 LDR modes (single/multi-subset, dual-plane, RGB/RGBA/LA, solid)

Installation

dotnet add package AstcSharp

Usage

using AstcSharp;
using AstcSharp.Core;

byte[] astcData = File.ReadAllBytes("texture.astc");
var footprint = Footprint.FromFootprintType(FootprintType.Footprint4x4);

// LDR: decode to RGBA8888
Span<byte> ldrPixels = AstcDecoder.DecompressImage(astcData, width, height, footprint);

// LDR sRGB: apply the spec's sRGB endpoint expansion (output stays sRGB-encoded)
Span<byte> srgbPixels = AstcDecoder.DecompressImage(astcData, width, height, footprint, LdrDecodeMode.Srgb);

// HDR: decode to RGBA float
Span<float> hdrPixels = AstcDecoder.DecompressHdrImage(astcData, width, height, footprint);

// UASTC (Basis Universal, always 4x4): decode raw UASTC block data to RGBA8888
Span<byte> uastcPixels = UastcDecoder.DecompressImage(uastcData, width, height);

Performance

AstcSharp's performance is competitive with ARM's C++ implementation, with some overhead due to being a pure C# implementation.

LDR

| Method                     | FileName        | Mean         | Error      | StdDev     | Median       | Allocated |
|--------------------------- |---------------- |-------------:|-----------:|-----------:|-------------:|----------:|
| AstcSharp_DecompressLdr    | footprint-4x4   |    13.577 us |  0.1627 us |  0.1443 us |    13.564 us |         - |
| AstcSharp_DecompressHdr    | footprint-4x4   |    16.575 us |  0.3153 us |  0.2633 us |    16.533 us |         - |
| ArmReference_DecompressLdr | footprint-4x4   |    11.191 us |  0.1550 us |  0.1374 us |    11.141 us |         - |
| ArmReference_DecompressHdr | footprint-4x4   |    13.932 us |  0.3439 us |  1.0141 us |    14.062 us |         - |
| AstcSharp_DecompressLdr    | footprint-12x12 |     4.384 us |  0.0670 us |  0.0688 us |     4.357 us |         - |
| AstcSharp_DecompressHdr    | footprint-12x12 |     7.733 us |  0.1528 us |  0.1819 us |     7.667 us |         - |
| ArmReference_DecompressLdr | footprint-12x12 |     7.770 us |  0.0729 us |  0.0682 us |     7.767 us |         - |
| ArmReference_DecompressHdr | footprint-12x12 |     7.920 us |  0.0510 us |  0.0426 us |     7.923 us |         - |
| AstcSharp_DecompressLdr    | rgba-4x4        |   962.404 us | 19.2086 us | 32.6176 us |   955.002 us |         - |
| AstcSharp_DecompressHdr    | rgba-4x4        | 1,134.736 us | 22.2962 us | 34.7125 us | 1,144.305 us |         - |
| ArmReference_DecompressLdr | rgba-4x4        |   734.388 us | 14.5948 us | 35.2481 us |   722.839 us |         - |
| ArmReference_DecompressHdr | rgba-4x4        |   716.613 us | 14.0726 us | 18.7865 us |   710.109 us |         - |
| AstcSharp_DecompressLdr    | rgba-8x8        |   422.630 us |  8.2009 us |  8.0543 us |   422.920 us |         - |
| AstcSharp_DecompressHdr    | rgba-8x8        |   629.957 us | 10.5187 us | 15.0857 us |   624.104 us |         - |
| ArmReference_DecompressLdr | rgba-8x8        |   480.440 us |  3.3241 us |  3.1094 us |   479.974 us |         - |
| ArmReference_DecompressHdr | rgba-8x8        |   492.185 us |  4.7352 us |  4.1977 us |   491.723 us |         - |

Future improvements

  • 3D block types
  • Encoding

References

This implementation is based on:

License

See LICENSE for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.1 221 6/5/2026
3.0.0 90 6/5/2026
2.0.0 94 6/4/2026
1.2.0 108 6/3/2026
1.1.0 96 5/30/2026
1.0.0 102 5/26/2026
0.9.8 3,707 2/24/2026
0.9.7 117 2/23/2026
0.9.6 129 2/4/2026
0.9.5 110 2/4/2026
0.9.4 125 2/3/2026
0.9.3 116 2/3/2026