I've found the Achilles Heel of all available practical CPU/GPU BC7 encoders: uncorrelated alpha channels. That's one of the ways my encoders are going to stand out. BC7 can handle uncorrelated alpha much better than I thought.
I've found that encoders that only support unweighted squared RGBA distance (like ispc_texcomp) are at a large disadvantage here. Even ones that support custom RGBA weights (like my own non-RDO BC7 encoder, or AMD's) still have fidelity issues, even when you weight alpha highly.
-
-
I first noticed this issue while working on my first ispc BC7 codec, but I figured I was doing as good (or equally as bad) as ispc_texcomp so I didn't investigate it more.
-
This is easily reproduced: Just plug in two completely different, high quality images into RGB and alpha. Alpha tends to get really trashed. BC7 can do better; it's the encoders that are falling short.
-
Also, modes 4/5 support component rotation. This is being overused - sometimes A gets lumped with 2 of the color channels causing excessive A error. The way existing codecs are evaluating error in RGBA mode is causing too much error to be introduced into A.
-
My latest RDO BC7 codec favors mode 4 (with no rotation) and 6 for most blocks. Opaque mode uses modes 6 far mode than 1, and in alpha mode it uses mode 4 more than 6 and 7. Choosing between 6 vs. 1 in opaque mode is easy, but for the alpha blocks it's more complex.
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.