Problem with textures from Substance Painter - Unity3D - Needle Engine

I’m currently trying to transfer my models that I would otherwise display in WebGL to the Needle Engine. But now I always have a problem with the materials / textures. The channels do not seem to be displayed correctly. According to the Needle documentation the following materials should work automatically

Materials that can be converted out-of-the-box:

BiRP/Standard
BiRP/Autodesk Interactive
BiRP/Unlit
URP/Lit
URP/Unlit

I am in the UnityEngine 2021.3.10f1 Universal Rendering Pipeline (URP) and use the materials “URP/Lit” here. The textures also correspond to the format output by Substance Painter for the Unity URP (MetallicSmoothness). However, the MetallicSmoothness channel is displayed incorrectly. What could be the reason for this?

Original Post on Discord

by user 260813948499132416

Hey could you try if the same happens if you use the UnityGLTF/PBRGraph shader?

I have already tried to get a result with this. the end result is exactly the same, only that with the UnityGLTF/PBRGraph the problem is already visible in the UnityEditor, in the export within the Needle Engine both look pretty much identical.

by user 260813948499132416

Ah ok you use a metallic-smoothness workflow? Looks like expected is a Roughness map tho - I think i newer Editor versions you can flip individual channels for a texture tho

yeah in the texture importer there is this option now (at least in 2022 not sure when it was introduced)

Yes I am inside the URP where a MetallicSmoothness Map is required by the URP Lit material. I did a test export yesterday with a Roughness map that I exported from Substance Painter. It looked weird here too. Let me reconstruct this quickly.

by user 260813948499132416

I’m not sure how the Roughness-Mettallic Map is required by the UnityGLTF/PBRGraph and it doesn’t match any format which is directly output in SubstancePainter. I have prepared a custom export template and assigned Roughness to the Green channel and Metallic to the Blue channel. Is this the correct way or how should the texture be split?

by user 260813948499132416

Green is roughness and Blue is metallic so yes it looks right to me

same result :neutral_face:

by user 260813948499132416

I think the metallic and roughness sliders should stay at 1 too

They are multiplied with your texture values in the shader removing e.g. all metallicness again

unknown.png

I have already tried, is then a little closer to what I want to have, but is still wrong. It is particularly noticeable on the base of wood that it has not the slightest roughness influence, it is absolutely high gloss, which it is not in the URP material and also not in substance painter.

by user 260813948499132416

by user 260813948499132416

i think that makes it very clear where the difference is

by user 260813948499132416

left is how it should look and right how it look in the needle engine

by user 260813948499132416

Now it looks like there is no roughness at all anymore :thinking:

Yeah, are you sure that the channels are correct? unfortunately there is no tooltip on the roughness metallic map in the UnityGLTF/PBRGraph Shader Inspector that explains the channels.

by user 260813948499132416

@herbst​:cactus: maybe you could have a look at this :slightly_smiling_face:

Hey @VALENTIN - mind sending me the model so I can take a look? I can guarantee 100% that when it looks correct with UnityGLTF/PBRGraph inside Unity it will look identical in every glTF viewer. Looks like there may have been a regression in automatic conversion of URL/Lit, that’s what I’d like to check (as it should work)