[Request] Normal Map compression with Alpha Channel

Pretty much as the title says. Could we get option for compressing normal maps with Alpha Channel like DXT5 ?
Current 3Dc while giving nice normal map results is somwhat wastefull for other things. I’d like to compress Detail maps with diffrent algorithm, so I could pack more textures into single file (like RG - normal map, B - Detail map, A - metallic/Roughness/Spec map, depends on setup).

Hi Lukasz,

Thank you for your request. I have created a report for normal map compression with alpha channels and entered it into out feedback database. If there is anything else that you would like to see in a future build of Rocket, please let us know.

Thank you,

Alexander

After longer thinking about I think I add this request prematurly, as the DXT5 (BC3) compression is avaiable (for color with Alpha channel) and it can be mixed with normal map in maaterial editor. Never the less it would be cool to have access to more advanced compression like BC6 or BC7, so the details in such combined map could be preseved better.

I have updated the request with you new feedback. Let me know if anything else needs to be added or changed.

Thanks,

Alexander

Hey

It’s not really something new but I believe I should post my reasoning why adding BC6 and BC7 compression would prove useful:

  1. DXT5 compression is not suited for normal data information. Just to much of it is lost.
  2. We only need two channels to recostruct normal map. So with current (BC5) compression, we just waste two channels, which actually can be used for something.
  3. I’ve recently experimented with DXT5 and normal map recostruction, and it can prove very usefull, for example. Packing unique normal map, Roughness mask, and AO or cavity map.
  4. Other example is detail map. We pack normal detail, color detail, and roughness mask (or any other map).
  5. In both cases we just saved up two texture slots!
  6. This also proves very useful, for landscape material, when we are severly limited on how many textures we can use per single component.
  7. Of course output on BC6 and BC7 is larger than BC5 but I think it is worth trade off, for higher quality textures and saving up two texture slots. It’s also dependant on DX11 hardware, but that shouldn’t be really a problem for non-mobile games (and mobiles games can still use old compression).
1 Like

From what I have seen through a few talks, BC7 produce rather bad artefacts on normal maps and although it is immensely better for diffuse or other textures, it may actually be worse on most normal maps than DXT.

Hi Lukasz,

[1] Agreed that BC3/DXT5 are not suited for normal maps, that’s why UE4 uses BC5.

[2] No channels are wasted, BC5 is a two channel format. It uses the same number of bits as BC3/DXT5 to reconstruct the contents of a normal map at a higher quality.

[3] If you want to pack textures together you can do so manually. Use TC_Default to get a color compressed image (DXT5 if you have an alpha channel) and then un-check SRGB. You will have to reconstruct the normal manually and the quality of the reconstructed normal map will be lower quality as content in the blue channel will influence the results of the compressed red and green channels.

[7] Actually, BC6h, BC7, and BC5 are all the same size: 16 bytes per 4x4 block.

1 Like