Oodle Texture Compression
Oodle Texture is an SDK for encoding of GPU textures to BC1-BC7 formats that can be compressed dramatically smaller. Oodle Texture can make maximum quality BCN encodings that are 5-15% smaller after compression. With rate distortion optimization, Oodle Texture can make high visual quality encodings that are 20-50% smaller.
Oodle Texture is not a compressor itself, it prepares data for the compressor you choose, so it works on all platforms. Most usage requires no runtime processing at all. Oodle Texture is independent from Oodle Data Compression, but they work well together.
Rate Distortion Optimization
Oodle Texture RDO provides fine control with the lambda parameter, ranging from the same quality as non-RDO BCN encoding, to gradually lower quality, with no sudden increase in distortion, or unexpected bad results on some textures. Oodle Texture RDO is predictable and consistent across your whole data set; you can usually use the same lambda level on most of your textures with no manual inspection and tuning. Visit Oodle Texture RDO examples to see for yourself.
RDO encoding just produces BCN block data, which can be put directly into textures, and stored in hardware tiled order. Oodle Texture RDO does not make a custom output format and therefore requires no runtime unpacking.
Lossless Transform for BC7
Full Support for all BC1-7Oodle Texture has high quality baseline non-RDO encoders for all BC1-7 that support all modes and formats. This includes HDR BC6H, 16-bit BC4 and 5, signed and unsigned formats. The non-RDO encoders offer a very good quality-speed tradeoff. Oodle Texture can do RDO encoding of all BC1-7 (except BC2 which is rarely used). Oodle Texture works well with all kinds of texture content, it makes no assumptions about contents to achieve its results, and has no limitations or reduced format support.
Compatible with any lossless compressorOodle Texture RDO optimizes for the compressed size of the texture after packing with any general purpose lossless data compressor. This means it works great with hardware decompression. On consoles with hardware decompression, RDO textures can be loaded directly to GPU memory, Oodle Texture doesn't require any runtime unpacking or CPU interaction at all. Of course it works great with Kraken and all the compressors in Oodle Data Compression, but you don't need Oodle Data to use Oodle Texture, they are independent.
Perceptual allocation for visual qualityOodle Texture RDO has excellent quality under simple numerical measures like RMSE, but what really matters is how the output looks. To that end, Oodle Texture uses perceptual rate allocation for BCN RDO that gives more bits to blocks where errors would be highly visible, and allows more error in blocks where it won't be noticed. This means Oodle Texture's visual quality is even better than the numbers indicate.
See for yourself! This is an encoding of "my soup" to BC7, which would be 8 bits per pixel uncompressed. Oodle Texture improves the Kraken size reduction from only 3.5% on the baseline (lambda=0) encoding to 45% at lambda=40 with very little visual degredation. It's common for BC7 textures without RDO to be nearly incompressible like this one is, but with Oodle Texture it can be compressed almost 2 to 1!
Oodle Texture RDO looks great on all kinds of images and game textures, in all BC1-BC7 formats. See more Oodle Texture RDO examples for yourself.