Overview of Basis' RDO Mode

As we all know, textures and images in your application have to somehow end up as a GPU texture format when they make it to the GPU. GPU formats basically split the image up into tiles, and each tile is independent from other tiles. It works fantastic for GPUs-- the GPU can keep most of the texture compressed while it only accesses what it really needs.

However, this isn't so great for CPU storage. For example, if I had an image that was all red, we'd have a data block that was just lots of identical little red tiles. This repetitive memory structure often leaves us with image files that are often unacceptably large on CPUs. And it's unnecessarily large, too-- CPUs don't need tile-based formats for storage, and we can reduce the image size much more with this in mind.

The most common fix today (other than using Basis) is to losslessly compress that GPU format data. That typically gets you a file 50-75% of the original size.

When we mention that .basis files (our custom file format) can easily be 25% of the size of GPU formats, the major complaint we get is that folks don't have the time to change their codebases to accommodate this.

This is where our RDO (Rate Distortion Optimization) Mode comes into play. You can use Basis, get huge size decreases, and not change your current codebase at all.

RDO Mode replaces your normal GPU format compression, and allows you to trade off quality for storage size. Rate Distortion Optimization is common in the video codec world-- we apply those same techniques to texture compression here. We also intelligently structure this data, knowing that you'll be losslessly compressing it afterward. We can even add custom optimizations if we know exactly which lossless codec you'll be using.

Of course, the .basis format's usually better both in terms of size reduction and in terms of runtime performance (transcoding .basis to the GPU format is faster than lossless decompression), but it uses the same codebase and RDO mode can get you surprisingly good results. And if your only alternative is regular GPU format compression followed by lossless, you'll be far better served with Basis in RDO Mode.