Artifacts in normal and roughness maps from substance painter


I’ve been trying to figure out why my model looks completely different inside of substance painter vs unreal. Here’s what I’ve done so far:

Here’s what it looks like in substance painter:

Here’s what it looks like inside of unreal. Mesh with only normal maps (Roughness disabled)

The one on the right is using the substance plugin(with resolution set to 2048) to import sbsar file from substance designer. This sbsar file has pngs (16bit) as the source files.
The one the left is not using the substance plugin and the source files were manually plugged inside of unreal. I am using tga (8bit) files for this one.

I made sure that the normal maps are using the normal compression method and sRGB is turned off in both cases.

Here is the same scene with both normal and roughness enabled. This has some nasty artifacts, even more compared to the one with only normal maps.

I made sure that the roughness maps have sRGB turned off and I tried setting them to both Linear Color and Linear Grayscale. Both show the same result.
For the material that was imported using the substance plugin (the one on the right) I have the roughness, metallic and ao maps all packed into one single texture file and labeled as “material_mask” for it show up in unreal.

I am really not sure what am I doing wrong. I’ve spent the entire night trying to figure this and my brain is about to give up. If you have any ideas, any help is greatly appreciated!

P.S. I am indeed using the “Import Normal” option when importing the mesh into unreal. And I did check the “Compute tanget space per fragment” for the normal map settings inside of substance painter’s Project Configuration.

-could you show a pic of the material? :slight_smile:
-flip the green channel of your normal map (in the texture settings)
-make sure that you use the right compression in the material node and the texture settings

I am also testing the mesh inside of the sun temple demo on production lighting as we speak. The mesh looks much better but the colors are way too dark compared to substance painter. I’ll report back on how it turns out and post those images.

Here’s the material:

I haven’t flipped the normal map, the system is building the lighting. As soon as that is done i’ll check with the green channel flipped. Could you please let me know the correct compression settings for the gray scale maps (Metallic, Roughness and AO)? I am using the Grayscale (R8, RGB8, sRGB) compression right now.

Off the top of my head there are a few things that need to be changed / checked.

  • First of all your Metallic input can be dropped if it has nothing going into it. Also you want to use a Constant instead of a 3 channel Vector.
  • On your Roughness Texture make sure you disable SRGB to make sure the textures are not gamma corrected. (You stated you did this but please double check to be sure)
  • I would set all the Textures back to their normal compression modes and see what everything looks like. Then once you know that re-apply the various compression modes to see if what you did made your problems better or worse.

This is what it looks like with the production lighting inside of the sun temple demo. As I mentioned the meshes look a lot better but still there are visible artifacts in the normal maps. Texture looks way too dark compared to substance painter. And the entire texture seems a little blurry. Not sure where that might be creeping in from:


I have too a few ideas:

  • Can you try to turn off mipmaps of the normal texture - Double click on the normal texture > on level detail tab there is a setting “Mip gen settings” > choose nomipmaps and see if there is some difference just for test.
  • There is a setting in project settings > rendering > lighting > Use normal maps for static lighting > off, if its off by default to turn it on and build the light (thought I am not sure what light types the sun temple is using)
  • And lastly I am 100% sure that you have checked it but to be sure check if there is some visual difference on the normal texture after import with the original texture outside UE4.