Few 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 ArticleIdea for next texture compression experiment (originally published 9/11/16)
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 ArticleUnified texture encoder for BC7 and ASTC 4x4
So far, it looks possible to unify a very strong subset of BC7 and ASTC 4x4. Such an encoder would be very useful, even if it didn't support rate distortion optimization. I've been looking at this...
View ArticleARM's ASTC encoder patents - is it safe to write encoders for this format?
I put this on Twitter earlier. I found this very disturbing comment in the Arm ASTC Encoder:/** * @brief Functions for finding dominant direction of a set of colors. * * Uses Arm patent pending method....
View ArticleParsing ASTC's overly restrictive end user license
We've been reviewing the licensing situation for all the GPU texture formats Basis Universal supports. (This is basically every LDR GPU format in existence, so this isn't easy.) Most formats are...
View ArticleUniversal ASTC (UASTC) Tech Details
We have reached an exciting milestone: We now have a working HQ universal encoder that supports both ASTC and BC7 for RGB/RGBA textures. It's currently a bit slow and it doesn't support RDO yet, but it...
View ArticleUASTC block format encoding
UASTC is a 15 mode 4x4 pixel LDR-only subset of the ASTC specification with a simpler 128-bit block format. It can be losslessly transcoded to the standard ASTC block format, quickly transcoded to BC7...
View ArticleARM's ASTC encoder now uses the Apache 2.0 license
This is good news:https://twitter.com/mostlypablo/status/1227228387657293827Link to license:https://github.com/ARM-software/astc-encoder/blob/master/LICENSE.txt
View ArticleLDR ASTC mode list (all CEM's the same)
ASTC is a very complex format. There are 407 valid 4x4 LDR ASTC encodings (or configurations?) that meet the following criteria:- LDR only, 4x4 block size- Planes: 1 or 2- Subsets: 1-4 (one plane) or...
View ArticleUASTC benchmark
RGB PSNR over a 1,048,576 4x4 block compression torture test (random blocks from 81 test textures): Near-opt BC7 (BC7E slower): 41.743 astcenc_thorough:...
View ArticleBC1/BC7/ASTC encoding notes
There are probably only a dozen or so developers interested in this level of detail about high quality texture encoding, but here you go. I've been spending a lot of time exploring fast BC1 encoding...
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 ArticleNew BC1 benchmark
Optimizing BC1 encoding is still useful and interesting because the same core algorithms are used in BC7 and ASTC/UASTC encoders. Most improvements made to BC1 encoding carry over nicely to the 2-bit...
View ArticleCPU BC1 Encoding Pareto Frontier
rgbcx.h now defines the BC1 Pareto Frontier for high quality CPU BC1 encoding (i.e. it's stronger than all other available practical high quality CPU encoders for both performance and quality):Data:I...
View ArticleAMD GPU BC1 decoding lookup tables
Here are the lookup tables you can use to determine how AMD GPU's decode BC1 textures: https://pastebin.com/raw/LSgn0entThese tables were gathered straight from a Radeon RX 580 by using a small D3D9...
View ArticleBC1 encoding initial endpoint determination benchmark
Benchmark of BC1 encoders using different methods to determine the initial endpoints: stb_dxt.h PCA: 35.754 dB, .551 us/block rgbcx.h PCA: 35.794, .651 rgbcx.h PCA+inset: 35.925, .640 rgbcx.h 2D...
View Article.basis file format specification
[This is a work in progress. It will be copied & pasted into the Basis Universal wiki.]The Basis Universal GPU texture codec supports reading and writing ".basis" files. Currently the file format...
View ArticleYet another BC1 encoder benchmark
stb_dxt v1.09, icbc, rgbcx v1.12, original crunch, and Unity's optimized variant of crunch. Both 4 and 3 color blocks can be used, but transparent texels are not utilized to get black/dark texels in...
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 ArticleLZHAM and "crunch" IP will be placed into the Public Domain on 9/15/2020
As the owner of the "LZHAM" and "crunch" software IP, I have decided to place these two works into the Public Domain in the United States, expressly waiving copyright protection. The upload placing...
View Article