BC7 has a weakness: There’s only a single alpha mode that supports 2 subsets (mode 7). And it assumes alpha is correlated with RGB. The other alpha modes are only 1 subset modes, so they can’t handle complex RGB blocks well.
-
-
What's actually happening is the alpha signals developers are using with BC7 are either relatively simple or are highly correlated vs. RGB. If you stray too far then either RGB or alpha quality suffers. I found this while exhaustively testing and benchmarking existing encoders.
-
games I'm familiar with moved on from the concept of rgb vs alpha in textures years ago, and treat them as a bag of channels.
-
Yea, I hear you, but BC7 and the encoders don't look at texture data that way. There are tons of assumptions made. BC7 unfortunately doesn't support 3-4 separate encoding planes. If you ignore this and just jam in whatever something's going to get trashed.
-
If you do treat your textures as a bag of channels, you should try to intelligently reorder the channels. Try to ensure that RGB is correlated and that each block's RGB vectors lie along 1-2 lines, etc.
-
If you pack some fully independent data to alpha channel and need consistent high quality result for that data, you choose BC3. This is where I would still choose BC3 over BC7. Not a problem since all GPUs supporting BC7 support BC3 as well. No shader/codee changes needed.
-
Yes, exactly. Except now your RGB data only has a single subset (leading to blocky artifacts). But at least your alpha channel doesn't get mangled.
-
Other options: Configure your BC7 encoder to only use modes 4,5, which may give you higher quality (due to component rotation). Or, modify your BC7 encoder to favor modes 4,5 more often.
-
have done that and it's ok but BC7 can't encode any single channel as well as BC3 encodes alpha.
- 16 more replies
New conversation -
-
-
Ultimately, you can ignore this information and continue along as things have been. Developers using stronger BC7 codecs that factor this knowledge in will be able to ship BC7 textures containing more complex/decorrelated alpha data vs. developers who don't.
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
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.