LZHAM and crunch are now Public Domain software
As of 9/15/2020, the LZHAM and crunch data compression libraries are in the Public Domain. For jurisdictions that don't recognize releasing Public Domain software, there are unlicense-style fallback...
View ArticleHow to benchmark or use the UASTC encoder in the Basis Universal library
UASTC is a subset of LDR ASTC 4x4, 4x4 block size, always 8bpp, and very high quality. If your engine/product/benchmark supports BC7 or LDR ASTC 4x4, trying out our UASTC encoder/transcoder (without...
View ArticleRDO BC1-BC7 progress
I've been making progress on my first RDO BC7 encoder. I started working on RDO BC1-7 years ago, but I put this work on hold to open source Basis Universal. BasisU was way more important from a...
View ArticleMore RDO BC7 encoder progress
I finally sat down and added a simple LZ4-like simulator to my in-progress soon to be open source RDO BC7 encoder. You can add blocks in, query it to find the longest/nearest match, and give it some...
View ArticleSimple and fast ways to reduce BC7's output entropy (and increase LZ matches)
It's relatively easy to reduce the output entropy of BC7 by around 5-10%, without slowing down encoding or even speeding it up. I'll be adding this stuff to the bc7e ispc encoder soon. I've been...
View ArticleThe two types of RDO BC7 encoders
There are two main high-level categories of RDO BC7 encoders:1. The first type is optimized for highest PSNR per LZ compressed bit, but they are significantly slower vs. ispc_texcomp/bc7e.2. The second...
View ArticleBC7 DDS file entropy visualization
RDO GPU texture encoders increase the number/density of LZ matches in the encoded output texture. He's a file entropy visualization of kodim18.dds. The left image was non-RDO encoded, the right image...
View ArticleLagrangian multiplier based RDO encoding early outs
Some minor observations about Lagrangian multiplier based RDO (with BC7 RDO+Deflate or LZ4):We're optimizing to find lowest t (sometimes called j), given many hundreds/thousands of ways of encoding a...
View ArticleBC7 RDO rate distortion curves
I've been tuning the fixed Deflate model in bc7enc_rdo. In this test I varied the # of literal bits from 8 to 14. Higher values push the system to prefer matches vs. literals.The orange line was...
View ArticleMore RDO BC7 progress
I've optimized the bc7enc_rdo's RDO BC7 encoder a bunch over the past few days. I've also added multithreading via a OpenMP parallel for, which really helps.RDO BC7+Deflate (4KB replacement window...
View ArticleLow bitrate RDO BC7 with lzham_devel
RDO BC7+Deflate could also be described as "BC7 encoding with Deflate in-loop".Using the lzham_codec_devel repo (which is now perfectly stable, I just haven't updated the readme kinda on purpose), this...
View ArticleMore RDO BC7 encoding - new algorithm
I sat down and implemented another RDO BC7 algorithm, using what I learned from the previous one. Amazingly it's beating the way more complex one, except perhaps at really high quality levels (really...
View Articlebc7enc_rdo repo updated
I've updated it with my latest RDO BC1-7 and reduced entropy BC7 encoders: https://github.com/richgel999/bc7enc_rdo
View ArticleRDO texture encoding notes
A few things I've learned about RDO texture encoders:- If you've spent a lot of time working on lowest distortion based texture encoders, your instincts will probably lead you astray once you start...
View ArticleGraphing length of introduced matches in the BC7 ERT
I'm starting to graph what's going on with this awesome little lossy BC7 block data transform (in bc7enc_rdo). Lets look at some match length histograms:The window size was only 128 bytes (8 BC7...
View Articlebc7enc_rdo encoding examples
Compress kodim.png to kodim03.dds (with no mips) to two BC7 modes (1+6):Highest Quality Mode (uses Modes 1+6)This mode is like ispc_texcomp or bc7e's BC7 compressor. bc7enc_rdo currently only uses...
View ArticleEntropy Reduction Transform on BC1 texture data
Just got it working for BC1. Took about 15 minutes of copying & pasting the BC7 ERT, then modifying it to decode BC1 instead of BC7 blocks and have it ignore the decoded alpha. The ERT function is...
View Articlebc7enc_rdo now supports RDO for all BC1-7 texture formats
It now fully supports RDO BC1-7: https://github.com/richgel999/bc7enc_rdoI've also been cleaning up the tool and tuning all of the defaults. Note that if you build with MSVC you get OpenMP, which...
View ArticleWeighted/biased BC7 encoding for reduced output data entropy (with no slowdowns)
Previous BC7 encoders optimize for maximum quality and entirely ignore (more like externalize) the encoded data they output. Their encoded output is usually uncompressible noise to LZ coders. It's easy...
View ArticleDirac video codec authors on Rate-Distortion Optimization
"This description makes RDO sound like a science: in fact it isn't and the reader will be pleased to learn that there is plenty of scope for engineering ad-hoc-ery of all kinds. This is because there...
View Article