FasTC library
This library, which supports a bunch of common (ETC1, DXT, PVRTC, etc.) formats (not all for encoding yet though) looks great:https://github.com/GammaUNC/FasTC
View ArticleETC1 texture format visualizations
I've been thinking about how to improve my ETC1 block encoder's quality. What little curiosities lie inside this seemingly simple format?Hmm: Out of all possible ETC1 subblock colors in 5:5:5...
View ArticleVisualizing ETC1 block encoding error as a 4D function
Given a particular 4x4 pixel block, what does the error of all possible ETC1 5:5:5 base color+3-bit intensity encodings look like? The resulting 4D visualization could inspire better optimization...
View ArticleETC1 with 3D/4D random-restart hill climbing
For fun, I implemented a full ETC1 block encoder using random-restart hill climbing, to see how it behaves compared to my current custom optimizer (the one in rg_etc1). This method works surprisingly...
View ArticleQuick etcpak quality test
etcpak is a useful and really fast ETC1 (and some of 2) texture compressor. There is no such thing as a free lunch however, and there are some tradeoffs involved here. Quick example:Original...
View ArticleOn 30Hz console games
That framerate feels incredibly low to me now. I've worked on 60Hz and 30Hz console titles, and the optimization efforts required felt very different. Keeping a smooth, hypnotic 60Hz was sometimes...
View ArticleLet's evaluate the current state of ETC1/2 compression libraries
For regular block encoders (not RDO or crunch-style systems), I think what I need to do is to plot this like I would a lossless Pareto Frontier, with the Y axis being some measure of quality and the X...
View ArticleETC1 compressor quality comparison on 1,572 textures
Here's a quick quality comparison of etc2comp, etcpak, and my ETC1 encoder (which is directly derived from rg_etc1 but modified to support perceptual colorspace metrics).etc2comp was limited to ETC1...
View ArticleComparison of three ETC1 and ETC2 block encoders
Update 9/19: John Brooks at Blue Shift (BSI) and I investigated this on a single image (kodim24.png), and after a bunch of back and forth email debugging I noticed the "effort" parameter the benchmark...
View ArticleHow to compute PSNR (from an old Berkeley course)
This was part of Berkeley's CS294 Fall '97 courseware on "Multimedia Systems and Applications", but it got moved and disappeared. It was a useful little page so I'm duplicating it here for reference...
View ArticleImportant note about PSNR
Yes, I know PSNR (and RMSE, etc.) is not an ideal quality metric for image and video compression. Keep in mind there is a large diversity of data stored as textures in modern games and applications:...
View ArticleLet's try DXT1 vs. ETC1/2 benchmarks
John Brooks at Blue Shift brought up this idea earlier. I think it's a great idea! I love good old DXT1 (or "BC1" as some call it). Let's see how ETC2 in particular compares against my old favorite.
View ArticleETC1/2 vs. DXT1 texture compression benchmark
I'm using the same testing tool, dataset and methodology explained in my ETC1/2 benchmark. In this benchmark, I've added in my vanilla (non-RDO/CRN) DXT1 block encoder (really, its DXT1 endpoint...
View ArticleAbout the HW1 codebase having "too many globals"
First off, this project was a death march. What Paul Bettner (formerly Ensemble, now at Playful Corp) publicly said years ago is true: Ensemble Studios was addicted to crunching. I lived, breathed, and...
View ArticleSSIM
Alright, I'm implementing SSIM. There are like 30 different implementations on the web, and most either rely on huge dependencies like OpenCV or have crappy licenses. So which one do I compare mine...
View ArticleHere's a useful PCA paper I found while writing HW1's renderer
I used this technique in a real-time GPU DXT1 encoder I wrote around 10 years ago:"Candid Covariance-Free Incremental Principal Component...
View ArticleImage error metrics
While developing and refining crunch I used a matrix of statistics like this:RGB Total Error: Max: 73, Mean: 17.404, MSE: 176.834, RMSE: 13.298, PSNR: 25.655, SSIM: 0.000000RGB Average Error: Max:...
View ArticleMore on SSIM
This paper is referenced in the SSIM article on Wikipedia:"A comprehensive assessment of the structural similarity index"http://link.springer.com/article/10.1007/s11760-009-0144-1"In this paper, it is...
View ArticleHow to use crunch's GPU block encoder test vector generator
This option selects a different mode of operation from crunch's usual texture file conversion role. It causes the tool to crawl through a directory and load every .PNG file there. It will then randomly...
View ArticleAn interesting ETC1/2 encoding test vector
Here's the 4x4 test vector image (zoomed in 32X for ease of visibility), provided to me by John Brooks and Victor Reynolds at Blue Shift:Red pixel: 255,0,0Blue pixel: 0,0,255Seems simple enough, right?...
View Article