@samevision, the question about texture compression isn’t straight forward as there are many different considerations you need to entertain to choose the correct format. Through our internal testing of KTX, we have determined that for color data using the ETC1s gives the best combination of file size with an acceptable level of artifacts, mostly in areas of hard color transition. For non-color data UASTC does a good job of eliminating the artifacts you will see in ETC1s at the cost of a larger size in memory. But from our tests, using ETC1s for non-color data like a normal map produces very poor results so the smaller footprint in memory isn’t actually worth it.
Of the basis formats, PVRTC1 and ETC1/ETC2 will perform similarly to ETC1s in that you will have a lot of artifacts to deal with in non-color data. The remaining option is BCn which has a couple of options. BC5 is designed for normal maps, but only takes two channels as greyscale. They are compressed separately from one another, so you can use RG normal maps and calculate the B channel in your shader. The drawback here is that we have not implemented support for 2-channel normal textures in our standard materials yet as there has not been a lot of call for it. You can, however, create your own shader with node material to support this kind of normal texture format.
That format wouldn’t work for a three or four channel data-pack, however so there is only one other BCn format that may work. The BC7 (mode 6) option, while meant for HDRI compression, could be used for non-color data that needs more than 2 channels. The reason is that most of the BCn methods will use a single color space line per block to determine what colors are represented by each pixel as a position along the line defined by two end points in the block. This is problematic when there are hard shifts in color within the block, i.e. if you have more than 2 color hues represented within the block that don’t fit on the color space line, they will be changed to colors that appear on the line. This happens commonly in normal textures, so any format that only supports one color space line per block is a non-starter for normal textures.
BC7, however, supports multiple color space lines per block, so it can support widely changing color pixels within the same block. however, the drawback is that mode 6 of BC7 links the color channels and alpha channel so there will be some cross-talk, but the support of multiple color space lines per block will reduce some of the artifacts that will be present with cross talk. However, specifically for normal maps, BC5 compression of a 2 channel normal texture (or another 2-channel data packed texture) will be best as both channels are compressed separately. But you will need to create custom shaders to handle them.
There is one last consideration, however, and that is compatibility. BCn requires Direct3D 11 support and on the Mac is only available in devices that support Metal. The other Basis formats are native to most Apple products, but aren’t great for non-color data. So you really do need to look at several levers when choosing which compression scheme to implement and do a lot of testing on target devices to know what is best for your application. Hope this helps.