Over the past year, I've been immersed in the world of texture compression. I've been thinking on what the best solutions are, how things can be improved, learning a lot about existing methods, what we as a community need to do to move forward.
The solution is obvious to me now.
It's a universal, multiplatform, standardized intermediate format. And we are building it. And we are more than happy to donate this standardized format to the greater community.
Right now, to have a working solution WebGL developers have to store at least three copies of every texture.
They need to account for all the different GPUs they need to support. GPU vendors haven't agreed on a standardized format. ASTC doesn't cover enough of the ecosystem they need to support. You know what? Maybe GPU vendors shouldn't standardize their formats yet. GPUs are still constantly changing and innovating, and I enjoy seeing new formats released that take advantage of these exciting innovations.
But to have a multiplatform solution now, you're storing 3+ copies of every texture. That's if you don't want to support high quality formats, if you want that you need even more. And textures take up a lot of data. Formats need different tools, different specialized knowledge sets, and an excess of memory that makes some apps simply not possible.
With Basis, you just need one file and one tool. That format can then be transcoded into any GPU format you'd like. And because it's a customized intermediate format that knows it's storing texture data (as opposed to a generic lossless codec applied on top of a GPU format), we can optimize it and reduce data storage even more.
With Basis, nobody needs to think about GPU formats. GPU vendors can have fun crafting new GPU formats and innovating, so long as they have a Basis transcoder in place. And GPU formats were never meant for CPU storage anyway-- having this separate format meant for CPU storage is ideal in terms of performance as well as multiplatform support.
We'll look back on this time in compression history and wonder why on earth we were making developers with better things to do worry about the intricacies of GPU formats, why there wasn't just a standard.
This is a big reason we're joining Khronos. This shouldn't be proprietary. This could change texture compression as we know it in the industry, because it is the only working solution right now.
Think of the apps that'll be possible with this innovation. When you are storing so much less data. When you are working with a truly multiplatform format. Can we integrate the transcoding step into drivers? GPU hardware itself? What kind of apps will be invented with this new step forward in compression?
I'm very excited to see how this evolves, and feel honored to be able to help move the industry in this direction.