This content was automatically converted from the project's wiki Markdown to HTML. See the Basis Universal GitHub wiki for the latest content.
| Gen | Ship | Process at Load | Effective Shipped bpp Relative to BC7 |
|---|---|---|---|
| 1 | Raw GPU blocks | None | ~8 bpp |
| 2 | Distorted GPU blocks | LZ Decompress or CRN transcode | ~4–7 bpp |
| 3 | Portable latent | Codec Transcode + SSD Cache | ~1.5–3 bpp (0.35–2 at larger block sizes) |
Source → ASTC / BCn → Ship → GPU
Assumption: GPU formats are opaque blocks, most assume it's "impossible" to compress further
Source → GPU blocks
→ RDO / clustering
→ LZ compressor / CRN transcode
→ Decompress → GPU blocks
Assumption: Keep GPU blocks, distort them to increase redundancy; most still assuming no more compression is possible
Source → Portable latent
→ Weight Grid DCT Transform + Quantize
→ Arithmetic coding (CABAC-style)
→ Ship
→ Install-time / Streaming transcode / Deblocking
(parallel on modern 8+ core CPUs)
→ Cache GPU blocks (NVMe / Gen5 SSD: ~8–14 GB/s)
→ GPU
Assumption: Compress and distribute textures as real signals, not opaque distorted blocks. Apply modern psychovisual methods. GPU formats are execution formats, not distribution formats. Streaming or install-time transcode to modern SSDs.
Textures should be treated like compiled shaders:
Ship a compact intermediate. Compile locally. Cache the execution format.
| Era | Mental Model | Technique | What's Being Compressed |
|---|---|---|---|
| Gen 1 | GPU blocks are final | None (optional container-level LZ) | Opaque, high-entropy block bytes |
| Gen 2 | GPU blocks are noisy data | RDO + entropy coding, clusterization | Distorted block byte streams |
| Gen 3 | GPU textures are signals | Transform coding + psychovisual modeling | Structured latent parameter fields |
In early 2026 Basis Universal is a Gen 3 system living in a mostly Gen 1/2 world.
| Texture Payload | Gen 2 Download | Gen 3 Download | Impact |
|---|---|---|---|
| 2 GB | ~1.5 GB | ~500 MB | Modest |
| 20 GB | ~12 GB | ~4 GB | Significant |
| 100 GB | ~60 GB | ~20 GB | Critical |
| Planetary scale | Petabytes/yr | ~1/3 PB/yr | Infrastructure-level |
The larger the texture payload, the more Gen 3 matters.
For small projects, any generation is viable. At large scale, Gen 2 becomes increasingly difficult to sustain.
XUASTC LDR covers ASTC (and BC7 with latent to latent transcoding or bc7f), and we doubt many (if any) developers will consider writing their own system for all 14 block sizes. The sheer complexity of ASTC itself is a big barrier.
However, latent domain BC7 with DCT is likely inevitable now. (Who will do "XBC7" first?) BC7 has weight grids, too. It's essentially a stripped-down ASTC. Binomial could do it, but we already have XUASTC LDR, and ASTC is now the dominant format with billions of shipped hardware decoders.