-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Upstream bevy_basisu_loader / use basisu_c_sys #23597
Description
What problem does this solve or what need does it fill?
See also #23358
I believe basisu is still worth better support. In the snapshot tests of bevy_basisu_loader, a BC7 skybox with mipmaps is 32 MB (though it's not zstd compressed), while ASTC 8x8 and XUASTC 8x8 is only 8 MB and 5.3 MB. See also The-Three-Generations-of-GPU-Texture-Distribution
Pros and cons of different texture formats I can think of:
| Format | Pros | Cons |
|---|---|---|
| Common image formats (png, webp) | Small file size. Easy to view, port, and edit | Slow loading. VRAM and Bandwidth aren't reduced |
| Native GPU formats | Fastest loading speed, no decoding. Reduced VRAM and bandwidth | Size on disk is large1. Requires separate versions for different platforms |
| Basis Universal formats | Small file size. Reduced VRAM and bandwidth. Portable | Slow loading2. Requires basis universal dependency3 |
What solution would you like?
Upstream bevy_basisu_loader.
What alternative(s) have you considered?
No.
Footnotes
-
ASTC with large block size is much smaller than BCn but isn't always available on desktop. There's also RDO which can reduce compressed size. ↩
-
No transcoding if basisu textures are standard ASTC and platform support it. Caching results to disk during installing/first loading is a solution, too. ↩
-
Needs C++ binding + wasm workaround. A pure Rust transcoder is a huge amount of work probably no one can finish it. ↩