Unity 5 shaders low quality

Hi,

I exported some model from substance painter, testing two modes :standard metallic and standard specular. But the two standard PBR shaders within Unity don’t produce exactly the same look.
It is related to Unity shaders that are lacking PBR quality ?

Can you show the differences you are seeing ?

The textures exported are 4096*4096
Unity standard PBR shader

Substance painter
[](http://)

Did you check your import settings and made sure of your current quality in the project settings ? (it looks low res)
Also some map seems to be missing on your helmet, is it possible some other for the metal / roughtness / normal could be missing too ?

I exported from Substance painter to Unity standard metallic format, i checked textures and format, channels in Substance painter, all is ok and following Unity 5 conventions.

The imported textures have values that don’t match as good with Unity 5 PBR shader, something would need ot be adjusted within Substance Export or within Unity shader system to have them matching.
Specular is a bit too strong or roughness is a bit too low and color is somewhat brighter when used in Unity 5.

I changed Unity 5 quality texture to full format, but still the quality difference is big.

If someone uses Substance Painter, their feedback could be usefull :slight_smile:


[

Seems to me it’s the ambient lighting, go into the lighting tab and mess around with reflection and ambient lighting sliders.](http://)

did you check the Quality settings for max texture quality?

Best way to compare is to use the same skyboxes.
But the main issue I believe is the smoothness map. You need to remap the smoothness values for Unity, as Unity uses a mapping similar to Marmoset Toolbag, while both Substance Painter and Designer are uncalibrated.

Don’t forget that as well as the Quality Settings being set to max texture res, you should also check the import size your textures are set to - I think it’s 1024 by default so if your textures are larger than that you should increase it.

1 Like

Here’s the post from Wes from Allegorithmic, where he says that the substance tools don’t remap the roughness values. Here’s a very good video (01:14:28) where he explains how to readjust your roughness values in substance designer before exporting textures to Unity.

If the video doesn’t help (it should), here’s my thread from the beta where I had issues with the shader looking weird, maybe you can find something that you omitted like I did, that will make it look right.

1 Like

I put Max res for textures. the problem is diffuse looks more bright as some black colors in substance looks grey on Unity.

The problem that bothers me is more from the metalness that is too high and not corresponding to subtance visual look.

Thanks i will try.
Using Substance and seeing Unity 5 metallic and specular shaders i thaught you just needed to export textures to one of these formats and it’s done, without any tweak needed (like simple normal map and specular workflows).

Well if substance painter isn’t doing the right export then it shouldn’t provide an export option called Unity until it does. Because it isn’t exporting correctly to Unity. Both parties should remedy this. A friend also had this problem recently, and couldn’t find a solution (this thread is too invisible) and now is using UE4, which worked out of the box. It’s the little things all over the place that make people shy from Unity when they don’t have to.

1 Like

Yeah, I don’t know why Unity can’t collaborate with Allegorithmic, to come up with either a shader that will work inside Substance Designer/Painter, or proper export options for both spec/gloss and metal/roughness workflows.
That’s in the interest of both parties. It shouldn’t be the artists job to guess the right values.

Now in Substance Painter you can even create any custom export format using any texture or any RGBA channels. What is the UT5 export value if it don’t works as good as UE4 (without needing any tweaks)?
It seems UE4 PBR has a bettre quality to handle metallic and roughness, while Unity is too strong on metallic or roughness not pushed enought, it’s like UT5 shader don’t have a good range PBR values.
Anyway if Unity and Substance could work together and determine where is the work to be done : UT5 PBR to adjust shader and vlaues or Allegorithmic to change the export to adapt to Unity specific PBR values ?

I’m suprised that not so much people complained more about unity PBR quality.

Yes, i think we hope metallic and roughness to stay the same between some painting app and the 3D engine.
This is not the first time that i see some people working with UT5 and saying their work PBR, but it looks wrong and not as precise as UE4 PBR. So it is to Unity to change something and make adjustments perhaps to have the righ rendering out of the box ?

For now i stay with UE4 for PBR work and game idea , even if Unity can have faster speed i prefer to loose some speed and have a good PBR rendering instead of some approximative not looking as good.

Substance uses “roughness” for its surface definition.
Meaning that in Substance Painter 0 = not rough (smooth), 1 = rough.
Unity uses “smoothness” where 0 = not smooth (rough), 1 = smooth.

If you’re using maps straight out of painter with default settings, then you’ll have to flip the roughness channel which in Unity means your Metallic texture’s alpha channel. I’m not sure if this can be automated in painter somehow. I just flip it manually when I move it to my metallic’s alpha.

Another important settings is your color space. You should pretty much always use linear color space if you’re using physically based shaders. The math screws up if you don’t… and you lose the whole point of using them in the first place.

The setting can be found here:
File > Build Settings > Player Settings > Color Space == “Linear”

On the image below the right most version is correctly using flipped roughness. I didn’t try to match the lighting perfectly but they are definitely very similar.

Thanks for the info ; i 'll post the tests tomorrow night.
Your example is not very representative as it don’t show different levels of roughness and levels of metalness :smile:, it’s very metallic everywhere.

But again , can’t Unity correct their shader that is not standard PBR as used by painting programs ?
They should really look at what Unreal 4 has done in that side, with Unreal 4 you drop your PBR textures and that’s it :roll_eyes: : it’s as simple as working with normal/specular old way, no tweak needed.
A big advantage and you don’t have to make more work because Unity don’t follow the right way.

I have no idea why Unity went hipster with this against the entire industry, but there you go. Roughness is as close to a standard as one would care to get, but it’s a trivial fix. It just needs louder explanation and documentation.

I’m not sure there’s a globally accepted right way. Everyone has pros and cons to their implementations.

I hope you are aware that there is no actual standard regarding PBR.

1 Like

The problem being that exactly there is no standard…

If I’m not mistaken, Marmoset uses a Smoothness setting (0 = rough 1 = smooth). I think quixel use that too. Yet other tools & engine use Roughness setting (0 = smooth, 1 = rough)

Some artist think that it’s more natural to paint black part that will be rough, other the other way around. Sadly nobody settled for a thing yet.

Substance Painter seems to have something call Glossiness that would generate the map properly : Adobe Community (their Unity5 preset should have taken care of that though, curious to see what’s the preset is made of, no Substance Painter on that computer)

Substance , 3D coat uses roughness and metalness maps.
Marmoset is not a standard, they braught one implementation Unity just followed when they went into PBR.
But all other software just don’t use that implemenation and use Rought/metal instead ,and these are more easy to understand and better to work with.

Anyway will Unity make changes in it’s shaders or propose a new one using the most used standards ? :roll_eyes:

About DDO i don’t know if they have some Unity 5 preset that works well ?
What people uses to make PBR assets ? 3D coat or Substance ? Both are not compatible right away with Unity 5, while ready for Unreal 4 :slight_smile: