Comment by augment_me
16 hours ago
Why not compress the texture using NTC, VAE-VQ or some neural codec into a general embedding space of uint8 and then just expand and create mipmaps and similar using the target hardware standard?
16 hours ago
Why not compress the texture using NTC, VAE-VQ or some neural codec into a general embedding space of uint8 and then just expand and create mipmaps and similar using the target hardware standard?
The easiest answer is that most tools and hardware in use predates those type of embeddings.
The advantage with block compression is that it is purpose built to minimize bits used, it's local to small blocks, decoding and encoding can be done with fairly simple code[0], and it doesn't require any specific AI hardware.
I am unfamiliar with NTC, but at first glance it seems to require an Nvidia card with RTX features, meaning it wouldn't be supported on Xbox One and PlayStation 4 (AMD GCN), Xbox Series X|S and PlayStation 5 (AMD RDNA2), nor the original Switch (Nvidia Tegra X1).
[0] https://learn.microsoft.com/en-us/windows/win32/direct3d11/b...
NTC requires GPU for real-time decoding, but you can use it as an compressor only to have a portable representation. It's actually the common use-case today, you can on-device offline decode directly to BC7 if you feel like it!
Doesn't that defeat most of the benefit though?
1 reply →
This question reminds me of one that people apparently have seriously asked: "Why didn't they simply send up the Space Shuttle to rescue the Apollo 13 astronauts?"
Haha older hardware can do multiply-accumulates as well its not an insurmountable compute load :P