Quantcast
Channel: Richard Geldreich's Blog
Browsing all 302 articles
Browse latest View live

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 Article


How 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 Article


Image may be NSFW.
Clik here to view.

RDO 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 Article

Image may be NSFW.
Clik here to view.

More 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 Article

Simple 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 Article


The 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 Article

Image may be NSFW.
Clik here to view.

BC7 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 Article

Lagrangian 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 Article


Image may be NSFW.
Clik here to view.

BC7 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 Article


Image may be NSFW.
Clik here to view.

More 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 Article

Image may be NSFW.
Clik here to view.

Low 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 Article

Image may be NSFW.
Clik here to view.

More 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 Article

bc7enc_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 Article


RDO 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 Article

Image may be NSFW.
Clik here to view.

Graphing 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 Article


bc7enc_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 Article

Image may be NSFW.
Clik here to view.

Entropy 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 Article


bc7enc_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 Article

Image may be NSFW.
Clik here to view.

Weighted/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 Article

Dirac 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
Browsing all 302 articles
Browse latest View live