Depths, Banding and Normal Maps

according to this topic,
to fix banding and depth I need to bake in x normal with TIFF 16bit and it give clean mirror however the problem is that unreal doesn’t support TIFF
so is there away to achieve a good mirror view like TIFF16 ?

Proposed solution was to use 16bit TIFF as source asset. Then convert that with dithering to 8bit tga/png and import that to unreal engine. It would be handy that ue4 would support that TIFF and dithering natively but I think someone need to do that and send a pull request to Epic.

yeah but if you convert it to 8bit tga it become like in the image below.


it become noise effect, and not clean as Tiff 16bit

just wondering if there is a way to make it clean as Tiff16 , or people use this method and its fine?

It’s worth noting, this is really only an issue on very glossy and clean surfaces, and there’s going to be compression on the normal map after you import them into unreal. If having a mirror like surface is important, make sure the smoothing on your low poly matches your high poly as close as possible, there will be less artifacts, and give you a cleaner result. You can achieve that with either custom normals, or by adding extra edge loops.

yeah this case happen to me when the hi poly not match low poly and get bad effect.
so is it better I keep use 8bit with dither ? if for metal and not mirror

Dithering is always better than stepping/banding.

If you don’t mind opening and re-saving the file, then you should dither every normal map you bake. I’ve setup a Photoshop action to do it for me.

so I must have first TIFF then I convert it to TGA8bit , I cant make dither from TGA it self right?

and I always use dithering if there is no very glossy and mirror, like metals stuff etc…

thanks for reply and happy new year.

I believe 3ds Max dithers any texture it bakes, but Maya and xNormal always has stepping. And yes with xNormal, the easiest solution is to bake with a 16 bit tiff and saving it as a tga.

You just need to be aware of the limitations of normal maps in UE4 and know how to work around it when necessary. Most of the time you won’t need to worry about banding or dithering either way.

You can’t just dither 8-bit content. Dithering isn’t just noise. It’s high frequency pattern that try to mask discrete steps of limited precision.
As example this is how 1-bit dither looks.
You clearly see that this image could’t be produced from 1-bit non dithered source material.

Also remember that ue4 also use lossy compression for normal maps. BC5 has 8-bit endpoints but only 3-bits interpolation between those two extreme values. So this might also contribute to some artefacts.