Hello. I’m trying to pack tangent-space normal maps. I’ve tried a lot of different combinations of options to toktx
utilitity but it still gives me weird results
Shortly, I want to check 3 cases: hardware has BC5, EAC RG11, or BC3 and transcode the texture in that format for later use with appropriate underlying GL or Vulkan format for that compression. I check these capabilities in that order and there’s a fallback RGBA32 if none of these formats are supported on the hardware
All testings of the output of compressed textures I make in RenderDoc
If I use BCMP (etc1s, right?):
- options
--t2 --2d --genmipmap --lower_left_maps_to_s0t0 --normal_map --target_type RG
gives me good results forBC5
andEAC RG11
.BC5
is swizzled asrrrg
- options
--t2 --2d --genmipmap --lower_left_maps_to_s0t0 --target_type RG
gives me the same result as the previous one - options
--t2 --2d --genmipmap --lower_left_maps_to_s0t0
gives me a good result forBC3
butBC5
andEAC R11
are swizzled asr101
(according to the RenderDoc output)
If I use ASTC as a primary compression scheme things become more interesting
There is no --normal_map
option available:
- options
--t2 --2d --genmipmap --lower_left_maps_to_s0t0 --target_type RG
gives me a good result for BC3 with swizzlerg00
which is fine for me but both BC5 and EAC RG11 are swizzled as r101 (according to the RenderDoc output again)
According to Basis Universal repo readme it says
ETC1S textures work best on images, photos, map data, or albedo/specular/etc. textures, but don’t work as well on normal maps.
but it doesn’t work also with ASTC for me
If I messed up some terminology then mention it, please. I’m a new to GPU compression and all its workflow