I’m getting terrible compression artifacts with the default texture compression settings (DXT1). It seems like the textures with the little color variation suffer the most from texture compression artifacts (or ones with a lot of fine detail) and for them I would like to make the quality of the texture compression higher for those textures, but not uncompressed because that can make them occupy too much space in texture memory .
I read that maybe BC7 was a better method of texture compression, but for some reason it occupies the same amount of texture memory as vector displacement (uncompressed), or about 1.3 MB for a 512x512 texture. Whereas with default it’s 171 KB.
So how can I properly use BC7 texture compression? Do I have to format my texture in a different way?
Not sure what you mean “adjust the texture to use the entire 0-255 value range and modify it in the material editor to be the correct values”. How would I do this or what to look up?
Also, do you not know how to use BC7 compression in Unreal properly? I think it’s worth at least trying since I’ve read it’s a better format than DXT1.
what means is that you should adjust your texture so it occupies the full Range of each channel (i.e. going from full black to full white in every channel).
You can then remap this to your desired range in the material by using lerp.
I recommend staying at DXT1, as it compresses pretty well for the cost of (imo) minor compression artifacts if your textures are optimized for that.
Okay, what should I search for or articles to look at to learn how to do this? Is this handled in the material editor or texture editor in Unreal?
Or is this handled using other external software? (I’m using" Mari" for texture painting and Photoshop to create textures)
Well, when creating Spec/Roughness/Whatever maps, just make sure they use the full range instead of only whites or only blacks.
In your material you can then do something like this:
In order to enable BC7 you need to disable SM4 in Editor->Project Settings->Platforms->Windows->Targeted RHIs. Then look at the FORMAT field inside texture viewer - it should say BC7/BC.
One little inconvenience with BC7 in UE4 that I’ve ran into is that if you import a texture with something in alpha channel, you cannot remove that alpha channel in texture editor, as you normally would do with BC1/3, forcing inappropriate compression mode for blocks.