Google and Binomial Open-Source Basis Universal Texture Format
opensource.googleblog.com
opensource.googleblog.com
Regular image compression formats like PNG or JPEG save network bandwidth and disk storage but not RAM. They must be completely decompressed and stored uncompressed in RAM as long as they are displayed. Compressed texture formats do save RAM. They remain compressed in RAM while they are being displayed, typically 1/6 the size of regular images or even smaller. That saves not only RAM but memory bandwidth and power too; especially important on mobile. Switching to compressed textures can make applications significantly faster.
Compressed texture formats have two main disadvantages that Basis solves. One is that their compression ratios are fixed and not as good as JPEG. Basis adds extra compression to make them more comparable to JPEG on disk.
The other, larger issue is that compressed texture formats require hardware support on the GPU, and GPUs don't agree on what formats to support. There is no single format with guaranteed support on every platform, which means that cross platform applications must encode each image multiple times and ship different formats to different users. Basis solves this by efficient runtime transcoding to most common GPU formats. This capability is unique and a really big deal.
Anyone with images in their application should take a look at Basis. Now that you can ship a single compressed texture file that's supported everywhere, I hope that this technology can expand beyond games.
https://en.wikipedia.org/wiki/S3_Texture_Compression
It has been an obstacle for open source drivers too, but luckily this specific patent expired.
Accept: image/basis
If so that sounds similar to their previous Crunch library [2], in that it does transcoding on the CPU before moving the texture to the GPU - but most likely much faster than Crunch because it starts with ETC as shared basis. (And artifacts are a common with transcoding between compressed formats, especially when transparency is present, but I have high hopes for this one considering the authors! :) )
Authors suggest that a version that transcodes on the GPU would be possible - that would be really interesting, I would imagine that would be even faster, although at the cost of higher texture memory usage.
[1] https://github.com/binomialLLC/basis_universal#quick-basis-f... [2] https://github.com/BinomialLLC/crunch
When Microsoft still had power over desktop computing, it pretty much dictated GPU vendors to use the DXT image compression format which is supported on all desktop GPUs, but nothing similar has happened on mobile.
In the current situation, this problem couldn't have been solved from the "inside". It isn't a trivial problem by far to solve (probably one of the few topics in programming that deserve the name "rocket science"), but it also doesn't require a huge workforce or standardization committee (and thank goodness this hasn't been "designed-by-committee"), "just" many years of focus and dedication.
https://github.com/binomialLLC/basis_universal#quick-basis-f...
> Internally, Basis files are composed of a non-uniform texture array of one or more 2D ETC1S texture "slices". ETC1S is a simple subset of the ETC1 texture format popular on Android.