Author Topic: bit depth: Normal Maps + Height from Substance Painter to Marmoset Toolbag  (Read 7416 times)

Hello,
I have a question about image bit depth for normal maps exported from Substance Painter to Marmoset Toolbag2.

When working in SubPainter, I have loaded my normal map (originally generated from Zbrush) along with my mesh.
Painting along just fine and added some details in the height channel, knowing that the height details will be blended with my base normal map on export.

So far, so good, and I exported the normal map at the default L32F bit depth.  (knowing this will be exported as linear colorspace). The maps blend perfectly, and all looks good. (as expected, a bit washed out due to the linear color space viewed on my RGB monitor)

Now, once in Toolbag2, I thought I should make sure that sRGB is Unchecked, since this is now a linear image.  Unfortunately, the results were not as I expected them to be, and the effect only matched the effect seen in SubPainter when the sRGB flag was checked.
Hmmmm.... :o
So, when I went back to SubPainter and changed the flag to sRGB16, I noticed that my height information did not show up in the exported map. In other words, only the original normal map exported without the height details.

So, I guess I have two questions:

Should I set the sRGB flag in Toolbag for all 32bit float Normal images exported from SubPainter?
(I wonder if I'm thinking about this in the reversed way, and Marmoset is converting the image to sRGB when checked)

Is it typical to lose the visual details of the height information when painting in less than L32F set for the Height material bit depth?

Thanks for reading, and thanks for any information you can give on this topic.

Joe

What file format are you using?

Toolbag2 can't read 16bit or greater TGAs.  And it does a bad job of Tiffs.  So if you want TB2 to utilize a bit depth higher than 8 you will have to export as .tiff.  Open that .tiff in photoshop and save as a .psd and load that .psd into TB2.  Could this fix your problem or did I misunderstand the problem?

Thanks! Using .tif format, and that seems to be fine with my other maps, but I'll run through using .psd to see if that helps.
 
I think my particular issue is more related to a workflow theory rather than a specific glitch. (Knowing when and if to check sRGB in Marmoset with L32F normal maps generated from Substance Painter, and the best map export settings from Subpainter to Toolbag)


Oops...I realized that I posted this to the Substance Designer forum area....sorry, Designers.  :-[
I'll see if the moderator will move it for me to right area in the forum



Joe

Just wanted to update my own post with a solution and a bit of basic information I came across on the Polycount Forum, just in case someone has a similar issue, or comes across this topic in the future:

Normal Maps: in linear space (sRGB should be off, un-checked)

Micro-surface Maps: Usually linear (but this may vary depending on your workflow. sRGB should be off, un-checked )
   Note: there is an option to invert the map if using a roughness map in this slot.
   Marmoset micro-surface expects maps values as:
White = On (glossy, sharp, tight spec highlight) 
Black = Off (rough, soft, wide spec highlight)

Albedo Maps: (This is called Color Base in Substance Painter)  sRGB should be checked on.

Specular Maps: usually gamma space as well so, sRGB should be checked on.

I haven't worked with a metalness workflow yet, but in general:
Gamma Space (8 -16bit):  sRGB should be checked on
Linear Space (32bit Float): sRGB should be off, un-checked

Hope this helps.

Joe

finally I found this list, thanks man!

and it also gives me perfect results for my Substance Designer maps :)


hi,

we got a similar topic here, 1 month ago (may add to the list):

http://forum.allegorithmic.com/index.php/topic,3368.msg15726.html#msg15726

For the metalness map in Toolbag, be sure you uncheck sRGB. Its on by default and this will cause issue. The other maps are interpreted correctly.

I posted two screen shots. The black background(image 01) is toolbag and the dark grey is SP (image 02). I can get pretty much an exact match with the roughness/metal.

Quote
Just to recap: Check this settings...

Be sure you are using the same background for skylight in both applications.

1. Normal map - Flip Y - sRGB color on
2. Gloss Map - Gloss 1.0 - Invert True - sRGB color off
3. Reflectivity - Metalness Map - Metalness 1.0 - sRGB color off
5. Reflection - mode is GGX

Cheers!

As a rule of thumbs you have to ask yourself "is this texture represent colors or data".
Diffuse map,Specular map albedo or base color map represent color. Most of the time colors you picked in a color picker because the "color looked good" through your screen display. This is sRGB.

However, most machine computed maps, like normal maps, height maps, ambient occlusion, etc... are in linear space, because they don't represent color, but data. (a direction for the normal map, an elevation value for the height map, etc...).

Also, on a side note, 32bit float for a normal map is way overkill. A Normal map pixel represents a normalized direction vector. Meaning the value never gets over 1.0. 8bit is usually enough because int values from 0 to 255 are mapped to 0 to 1 float values. meaning you have a 1/255 precision, which is usually enough.
However for a height map for example, you could need a wider range than 0 to 1 and a better precision, so 16 bit or 32 bit can be useful and eventually float textures.

1. Normal map - Flip Y - sRGB color on
IMHO this is wrong. Normal maps should be in linear space unless you explicitly specified otherwise when exporting them.
At least, I'm 100% sure normal maps generated by SP, Blender or Nvidia tools for photoshop are in linear color space.

"sRGB for normal map" refers to normals, generated in SD, AFAIR..


Hi,

thanks Nehon for this information, this makes a lot of sense.

I also believe, that normal should have sRGB off - at least that´s what works best for me. I get almost 100% matching results between marmoset and SD.

I am using these settings:

Albedo map: sRGB on
Normal map: sRGB off, flipped in Y
Metalness/Metallicity map: sRGB off
Roughness map: sRGB off, inverted
AmbientOcclusion map: sRGB off