Few notes about the previous post
This rant is mostly directed at the commenters that claimed I hobbled the open source codecs (including my own!) by not selecting the "proper" settings:Please look closely at the red dots. Those...
View ArticleBrotli levels 0-10 vs. Oodle Kraken
For codec version info, compiler settings, etc. see this previous post.This graph demonstrates that varying Brotli's compression level from 0 to 10 noticeably impacts its decompression throughput....
View ArticleGood article: Why software patents are evil
I have been attacked (at a time in my life when the last thing I needed was more stress!) by a patent holder before, so hey I hate software...
View ArticleETC1 block color clusterization experiment
IntroETC1Â is a well thought out, elegant little GPU format. In my experience a few years ago writing a production quality block ETC1 encoder, I found it to be far less fiddly than DXT1. Both use...
View ArticleVisualizing ETC1 texture compression
The ETC1 format consists of two block colors, two intensity table selectors, two mode bits ("diff" and "flip"), and 16 2-bit selectors. Here are some simple visualizations of what this encoded data...
View ArticleMore thoughts on a universal GPU texture interchange format
Just some random thoughts:I still think the idea of a universal GPU texture compression standard is fascinating and useful. Something that can be efficiently transcoded to 2 or more major vendor...
View ArticleDirect conversion of ETC1 to DXT1 texture data
In this experiment, I limited my ETC1 encoder to only use a subset of the full format: differential mode, no flipping, with the diff color always set to (0,0,0). So all we use in the ETC1 format is the...
View ArticleDirect conversion of ETC1 to DXT1 texture data: 2nd experiment
I lowered the ETC1 encoder's quality setting, so it doesn't try varying the block color so much during endpoint optimization. The DXT1 artifacts in my first experiment are definitely improved, although...
View ArticleETC1->DXT1 encoding table error visualization
Here's are two visualizations of the overall DXT1 encoding error due to using this table, assuming each selector is used equally (which is not always true). This is the lookup table referred to in my...
View ArticleDirect conversion of ETC1 to DXT1 texture data: 3rd experiment
I've changed the lookup table used to convert to DXT1. Each cell in the 256K entry table (32*32*32*8, for each 5:5:5 base color and 3-bit intensity table entry in my ETC1 subset format) now contains 10...
View ArticleMore universal GPU texture format stuff
Some BC7 format references:https://msdn.microsoft.com/en-us/library/hh308954(v=vs.85).aspxhttps://msdn.microsoft.com/en-us/library/hh308953.aspxSource to CPU and shader BC7 (and other format)...
View ArticleSome memories
I remember a few years ago at one company, I was explaining and showing one of my early graphics API tracing/replaying demos (on a really cool 1st person game made by some company in Europe) to a...
View ArticleFew more random thoughts on a "universal" GPU texture format
In my experiments, a simple but usable subset of ETC1 can be easily converted to DXT1, BC7, and ATC. And after studying the standard, it very much looks like the full ETC1 format can be converted into...
View ArticleHierarchical clustering
One of the key algorithms in crunch is determining how to group together block endpoints into clusters. Crunch uses a bottom up clustering approach at the 8x8 pixel (or 2x2 DXTn block) "macroblock"...
View ArticleDirect conversion of ETC1 to DXT1 texture data: 4th experiment
In this experiment, I've worked on reducing the size of the lookup table used to quickly convert a subset of ETC1 texture data (using only a single 5:5:5 base color, one 3-bit intensity table index,...
View ArticleIdea for next texture compression experiment
Right now, I've got a GPU texture in a simple ETC1 subset that is easily converted to most other GPU formats:Base color: 15-bits, 5:5:5 RGBIntensity table index: 3-bitsSelectors: 2-bits/texelMost...
View Articleetcpak
etcpak is a very fast, but low quality ETC1 (and a little bit of ETC2) compressor:https://bitbucket.org/wolfpld/etcpak/wiki/HomeIt's the fastest open source ETC1 encoder that I'm aware of.Notice the...
View ArticleETC1 principle axis optimization
One possible potential (probably minor) optimization to ETC1 encoding: determine the principle axis of the entire texture, rotate the texture's RGB pixels (by treating them as 3D vectors) so this axis...
View ArticleUniversal texture compression: 5th experiment
I outlined a plan for my next texture compression experiment in a previous post, here. I modified my ETC1 packer so it accepts an optional parameter which forces the encoder to use a set of...
View ArticleGoogle's new ETC2 codec looks awesome
I've worked with many of the authors of this at one time or another:Building a blazing fast ETC2 compressorRepo:https://github.com/google/etc2comp(I can't believe the Mali encoder was only single...
View Article