Home

Awesome

ICBC - A High Quality SIMD BC1 Encoder

This is the BC1 texture block encoder used by NVTT, extracted as an easy to use single header file library.

Since its initial release I've improved quality and performance. I've added support for multiple quality levels that allow reducing compression time at the cost of some quality, and I've vectorized some of the algorithms to take advantage of the vector units in modern CPUs.

<img src="doc/vector-scaling.png" alt="vector-scaling" title="Vector Scaling." />

This work was inspired by Rich Geldreich's RGBCX, which is a close competitor and most likely a better choice if you are looking for a well supported and actively developed library.

Results

The following chart shows the average PSNR of different BC1 compressors and different configurations on the Kodim and Waterloo image sets plotted against the time it took to encode them:

<img src="doc/kodim-chart.png" alt="kodim-chart" title="PSNR vs Time on Kodim+Waterloo image sets." />

References

ICBC implements several algorithms: