Quantcast
Channel: Richard Geldreich's Blog
Browsing all 302 articles
Browse latest View live

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 Article


Idea 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 Article


Image may be NSFW.
Clik here to view.

Unified 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 Article

ARM'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 Article

Parsing 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 Article


Universal 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 Article

UASTC 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 Article

ARM'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 Article


LDR 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 Article


UASTC 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 Article

Image may be NSFW.
Clik here to view.

BC1/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 Article

Image may be NSFW.
Clik here to view.

Lookup 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 Article

Image may be NSFW.
Clik here to view.

New 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 Article


Image may be NSFW.
Clik here to view.

CPU 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 Article

Image may be NSFW.
Clik here to view.

AMD 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 Article


BC1 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 Article


Image may be NSFW.
Clik here to view.

Yet 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 Article

Image may be NSFW.
Clik here to view.

This 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 Article

LZHAM 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
Browsing all 302 articles
Browse latest View live