Wednesday, February 18, 2026

Some things we've learned about GPU textures at planetary scales

1. ASTC is now the king: In billions of devices. Everything else=fallback, including BC7.

To us, BC7 is essentially a greatly simplified ASTC, but with some p-bits.

2. At multi-petabyte (planetary) scales: Supercompression bitrate=Matters enormously.

Notably, game developers (who have been using compressed textures the longest) don't work at scales this large, so the approaches and techniques they assume are correct or standard in this domain may not apply at all in extreme scales.

The tradeoffs game developers have made in the past are no longer aligned with modern hardware and network realities.

3. GPU Drivers=super sketchy.

This means for us: No driver usage, no compute. The largest vendors, who already deal with endless GPU driver bugs, don't want even more exposure in critical texture decompression/transcoding paths. If it fails for even ~.1% of customers in the wild, it's unusable.

4. All 14 ASTC block sizes are important in large scale deployment scenarios, not just 2 or 3.

This includes 12x12, which at 4k-8k is quite usable.

5. When mipmap and filtering compatible deblocking of the larger ASTC block sizes is trivial to do in a tiny pixel shader, it makes no sense not to deblock because the cost of not doing so is ~2x-8x more bitrate and bandwidth.

6. Unfortunately, LDR ASTC decoding actually isn't always bitwise exact. (BC7 wins for this, at least.)

The ASTC specification was so dense and complex even the vendors (including ARM itself!) couldn't get it right.

7. WASM SIMD isn't everywhere (or even when it is, some very big vendors won't allow it to be used or enabled), so that means we can't depend on SIMD. This means less searching, more math, and better algorithms in our encoders, or we can't ship.

8. Everything must be fuzzed. That means the obvious things like block decoders, all decompressors, etc. but it also includes encoders. Trust no data.


The Three Generations of GPU Texture Distribution

In the Basis Universal v2.0 wiki:

https://github.com/BinomialLLC/basis_universal/wiki/The-Three-Generations-of-GPU-Texture-Distribution


Tuesday, February 10, 2026

ASTC Texture Sampling with Deblocking in a Simple Pixel Shader

Deblocking is a standard feature in modern image/video codecs, and now developers can benefit from deblocking on GPU textures, either while transcoding to other formats like BC7, or while sampling ASTC textures directly.

This demo with source code shows how to sample ASTC textures (or really any GPU texture format, of any block size) with deblocking applied in a simple pixel shader. It's intended for the larger ASTC block sizes, i.e. beyond 6x6. It greatly reduces block artifacts, which allows larger block sizes to be used across a wider range of content, which ultimately lowers bitrates, memory bandwidth, and download sizes. It's fully compatible with mipmap filtering.

https://github.com/BinomialLLC/basis_universal/tree/master/shader_deblocking

This is a form of "GPU texture compression-aware shading" or "GPU format-informed reconstruction".