Normal map stepping artifacts (map from substance designer)

Hello,

I recently exported a Normal map from substance designer with 16bit. When I exported it to Unreal it shows me this stepping jagged effect that I can’t seem to get rid off even when changing the output format from 16 to 8. The maps are png and I have to keep them png for my work pipeline:
image from SD:

image from UE4:

For the life of me I can’t find the solution if someone can help guide me through the solution it would be much appreciated

Banding in textures, including normal maps, is indeed a result of bit depths.
If a 16 bit normal still appears banded, you might consider dithering.
https://cgcookie.com/posts/bit-depth-how-compression-affects-normal-maps

the wierd thing is the SD default parameters are correct. but it syill shows this banding artifact:


can you dither in SD? Is there a node ?

As I recall 16bit normals are dithered by default when imported and compressed as 8bit in Unreal. Might be misremembering though…

Worth mentioning that normalmap compression in Unreal is 8bit (technically less? idk), meaning if you set a 16bit normal map to normalmap compression you’ll only get an 8bit map out of it. You need to use one of the 16bit compression methods, and then you’ll need to adjust the output in your material so that it is going from -1 to 1 instead of 0-1

Hello, can you elaborate more on how to do that please ?

You should not be doing this unless you have tons of VRAM to spare. A 4k 16bit normal map will consume ~174 MB of texture memory. If you plan for other people to run this on their own computers then they’re going to have a terrible time.

I’m trying to understand how to do this:


Can I do this in designer or not ?

Read the whole thread…

Edit: To answer directly, no you don’t do this in substance. The only thing you do in substance is export your normal map as 16 bit which it looks like you’re already doing. Then you import it to Unreal choosing a 16 bit texture format in the texture asset properties, then you set up your material as shown at the end of that thread.

ok that’s a solution I think. But based on what you said this will cost a lot of vram. I’m sure that there is something I’m missing because:
this is SD:

and this UE4:

I’m sure that there is an option I’m forgetting because it can’t be the rendering of the normal map is vastly different in both softwares.

Thank you for your guidance. I’ll keep looking

Another option here may be to procedurally generate the wobbly surface detail normal in engine instead of in substance.

1 Like