Basis universal GPU texture format examples
The .basis format is a lossy texture compression format roughly comparable to JPEG in size but designed specifically for GPU texture data. The format's main feature is that it can be efficiently...
View Articlexmen_1024 encoded to .basis at various bitrates
Here's xmen_1024 compressed at various bitrates to .basis. I show the output of two transcodes: ETC1 (which is the highest quality format in baseline .basis) and PVRTC (with clamp...
View ArticleBetter PVRTC encoding
I'm taking a quick break from RDO BC7. I've been working on it for too long and I need to mix things up.I've been experimenting with high-quality PVRTC encoding for several years, off and on. I've...
View ArticleHow to improve crunch's codebook generators
While writing Basis ETC I sat down and started to study the codebook generation process I used on crunch. crunch would create candidate representational vectors (for endpoints or selectors), clusterize...
View ArticleETC1S texture format encoding and how it's transcoded to BC1
I developed the ETC1S encoding method back in late 2016, and we talked about it publicly in our CppCon '16 presentation. It's good to see that this encoding is working well in crunch too (better...
View ArticleLookup table based real-time PVRTC encoding
I've found a table-based method of improving the output from a real-time PVRTC encoder. Fast real-time encoders first find the RGB(A) bounds of each 4x4 block to determine the block endpoints, then...
View ArticleReal-time PVRTC encoding for a universal GPU texture format system
Here's one way to support PVRTC in a universal GPU texture format system that transcodes from a block based format like ETC1S.First, study this PVRTC...
View ArticlePVRTC encoding examples
This is "testpat.png", which I got somewhere on the web. It's a surprisingly tricky image to encode to PVRTC. The gradients, various patterns, the transitions between these regions and even the...
View ArticleBasis status update
I sent this as a reply to someone by email, but it makes a good blog post too. Here's what Basis does today right now (i.e. this is what we ship for OSX/Windows/Linux):1. RDO BC1-5: Like crunch's,...
View ArticleA little ETC1S history
I've been talking about ETC1S for several years. I removed some of my earlier posts (to prevent others from stealing our work - which does happen) but they are...
View ArticleThis is why we're working on Basis.
Here's a very interesting graph of game install/on-device sizes from The Cost of Games:This is a *log* graph. Notice the overall trend. Most of this data is texture data.And so this is why our product...
View ArticleTypes of tech companies
Some tech company types I've encountered in the past. A company can be a blend of multiple types.1. Famous companies Massive subsidies from digital distributionLet them call you - *always*. Can be...
View ArticleExisting BC7 codecs don't handle textures with decorrelated alpha channels well
Developers aren't getting the alpha quality they could be getting if they had better BC7 codecs. I noticed while working on our new non-RDO BC7 codec that existing BC7 codecs don't handle textures with...
View ArticleDirect conversion of ETC1 to DXT1 texture data (originally published 9/11/16)
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 (originally...
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 ArticleDirect conversion of ETC1 to DXT1 texture data: 3rd experiment (originally...
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 ArticleDirect conversion of ETC1 to DXT1 texture data: 4th experiment (originally...
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 ArticleUniversal texture compression: 5th experiment (originally published 9/15/16)
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 ArticleFew more random thoughts on a "universal" GPU texture format (originally...
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 ArticleMore universal GPU texture format stuff (originally published 9/9/16)
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 Article