LodePNG
So far this is a nice looking library, and I've heard it reliably handles 16-bit/component .PNG's :http://lodev.org/lodepng/
View Articlelibsquish's DXT1 "Cluster Fit" method applied to ETC1
libsquish (a popular DXT encoding library) internally uses a total ordering based method to find high-quality DXT endpoints. This method can also be applied to ETC1 encoding, using the equations in...
View ArticleETC1 block flip estimation
ETC1's block includes a "flip" bit, which describes how the subblocks are oriented in each block. When this bit is set the two subblocks are oriented horizontally in a 4x4 pixel block like...
View ArticleMore ETC1 cluster fit data
Ignore the SSIM stats, this is a corpus test image with random 4x4 blocks chosen from many other images.This was on a 20 core Xeon workstation, with multithreading enabled in basislib and etc2comp (40...
View ArticleETC1 encoder performance on kodim18 at various quality/effort levels
I'm trying to get a handle on how the available ETC1 compressors perform, using their public API's, at their various quality or effort levels. This is only for a single image (kodim18 - my usual for...
View ArticleVisualization of random ETC2 Planar Mode blocks
For fun I've been poking around at the planar mode in ETC2. From this presentation:Okay, they are intended for use on smoothly varying blocks. I'm intrigued by planar mode because the colors are stored...
View ArticleETC2 texture compression using exclusively planar blocks
The usual explanation given for planar blocks is that they are intended for smoothly varying blocks (see my previous post on planar blocks). So it seems natural to model the block's pixels as three...
View ArticleETC2 planar block only output created with etcpak
Bartosz Taudul (etcpak author) sent these ETC2 planar block only encodings in a reply to my previous post. For planar-only they look amazing!Note: I've verified these images myself by hacking etcpak's...
View ArticleETC1 optimization notes
I've been optimizing this function:std::pair<etc1_bits, error> = ETC1Encode(pixels, options).Which actually gives me a really fast way of accurately computing this:error = ETC1Distance(pixelsA,...
View ArticleETC1 block color clusterization progress
I've got block color ("endpoint") clusterization working pretty well with the full ETC1 format. (Not just a subset, like in last month's endpoint clusterization experiment.)Here are some quick...
View ArticleRDO ETC1 texture compression prototype
I've now got a basic ETC1 RDO compressor working. Clusterization is now used on both the block colors/intensity table indices and selectors. This compressor supports the entire ETC1 format: 2 subblocks...
View ArticleRDO ETC1 texture compression tool output
Here's what my current experimental compression tool outputs to stdout while compressing a single image. I've begun to experiment with different perceptual metrics, such as PSNR-HVS and PSNR-HVSM. (I'm...
View Article2D Haar Wavelet Transform on GPU texture selector indices
I've been very busy refining my new ETC1 compressor, so I haven't been posting much recently. Today I decided to do something different, so I've been playing around with the 2D Haar 4x4 and 8x8...
View ArticleGST: GPU-decodable Supercompressed Textures
This is amazingly well done:http://gamma.cs.unc.edu/GST/Code:https://github.com/GammaUNC/GSTPaper:http://gamma.cs.unc.edu/GST/gst.pdf
View ArticleExample code: 4x4 Haar transform on ETC1 selectors
Someone asked me for the code that implements the selector frequency domain filtering experiment I did on one of my previous posts. Here you go. The linear algebra and utility code is all very similar...
View ArticleIn-app charting/graphing using pplot
pplot is a nice little graphing library:http://pplot.sourceforge.net/pplot is device and platform independent, which I really liked. I hooked it up to my generic image class, which supports things like...
View Articlestatus of basis ETC1 support
I've "upgraded" my 2D-only prototype to a full-blown class now, instead of it living in my experimental framework as a huge function.Next up are things like macroblock support, more endpoint/selector...
View ArticleRate distortion performance of Basis ETC1 RDO+LZMA on the Kodak test set
At 3 quality levels, using REC709 perceptual colorspace metrics. This compares plain ETC1 (with no lossless compression), basislib highest quality ETC1+LZMA, and basislib RDO+LZMA."S" = selectors, "E"...
View ArticleEffect of ETC1 endpoint quantization on Luma SSIM/PSNR
In this test on the 24 kodak images I quantized the ETC1 block colors/intensity tables (or what I've been calling "endpoints", from DXT1/BC1 terminology) to 128 clusters, but the selectors were not...
View ArticleEffect of ETC1 selector quantization on Luma SSIM/PSNR
This is like the previous post, except this time only the selectors are quantized while the endpoints are left alone. kodak test images, perceptual colorspace metrics:Stats for non-RDO ETC1...
View Article