Author Topic: In which color space are textures exported?  (Read 3750 times)

I want to load textures generated from Substance Designer into Keyshot. I read in PBR guide that if I export output as bitmap I need to take care of gamma correction by myself. As far as I know I need to have all maps in linear space with exception of albedo and specular maps (that should be in sRGB).

However I am not sure in which color space is each map exported from Substance Designer. Are they all in sRGB? Or just grayscale maps are in linear?

Thank you.

Hey Braffe,

Substance Painter and Designer will both export all maps in Linear Colour Space, excpet the Base Colour/Diffuse and Specular Map.
I think all other colour maps (emissive for instance) will be exported in sRGB colour space, too.


Best Regards
Environment Artist - Twitter

I want to load textures generated from Substance Designer into Keyshot. I read in PBR guide that if I export output as bitmap I need to take care of gamma correction by myself. As far as I know I need to have all maps in linear space with exception of albedo and specular maps (that should be in sRGB).

However I am not sure in which color space is each map exported from Substance Designer. Are they all in sRGB? Or just grayscale maps are in linear?

Thank you.

HI Braffe,

The maps exported from SD and SP are in sRGB or gamma-encoded space. They are not exported as linear. The key is how the maps are interpreted by the shader you will be using. You are correct that all maps are to be interpreted as linear except for base color, diffuse and specular.

Applications will handle this in different ways. For example, in Unity, you don't have to do anything. Maps that are placed in the metallic/smoothness, ambient occlusion are treated as linear by the shader and maps in the albedo are treated as sRGB. What the shader does for the albedo and specular is "linearize" the maps. It removes the gamma-encoded values from the map in the shader code by applying an inverse gamma to it of 0.4545. In the Unity workflow, this is done automatically and you don't need to flag the images as sRGB.

However, other implementations will need you to specify if an image is sRGB. For example, I attached an image of the UE4 texture settings. The image is for roughness and even though its technically exported in sRGB space, the data it represents is linear. We never author textures in linear space. The values we would choose would never be correct. So for this texture, its to be interpreted as linear, so I make sure that sRGB is unchecked. This means that UE4 will not remove the gamma values by applying an inverse gamma. Marmoset Toolbag works the same way. For images that are not color, then you need to uncheck sRGB.

I'm not sure how keyshot works, but you will need to see if there is a setting for how a map is interpreted. The simplest way to look at it is that if its color we see, then its to be treated as sRGB and the gamma needs to be removed. This is albedo, diffuse, base color, specular. Everything else is interpreted as linear.

I hope that helps : ) Let me know if you have any questions.

Cheers,
Wes

 
Integrations Product Manager / Training
wes.mcdermott@allegorithmic.com
Twitter: The3DNinja

Awesome! Thank you very much for your answers.   
I searched through Keyshot manual, all options and forums and found nothing about linear space, so I guess that its handled automatically.

Thank you once again

The general idea is what is represent colour, and in fact it is a reflection, is sRGB (diffuse reflection/colour , specular reflection/colour) and what is practically a mask used for calculations (normal map, roughness, metallic, ambient occlusion etc.) is linear.
I wonder what is going on with emissive. I think that is sRGB (because it is a colour) but not sure.

The general idea is what is represent colour, and in fact it is a reflection, is sRGB (diffuse reflection/colour , specular reflection/colour) and what is practically a mask used for calculations (normal map, roughness, metallic, ambient occlusion etc.) is linear.
I wonder what is going on with emissive. I think that is sRGB (because it is a colour) but not sure.

Yes, emissive should be sRGB. A good way to look at is like this...

If it's a color that you see then it's sRGB. Everything else is linear. Basecolor contains diffuse reflected color and metal reflectance values. Both represent light rays bouncing back and picked up by our eyes. Emissive is the same.

Maps like AO, metallic and roughness represent data. All of the grayscale map need to be interpreted as linear. When we choose colors on our monitor, it's in a gamma-encoded space (sRGB) this is why we need to have sRGB checked so the shader knows that this maps needs to have the gamma encoded value removed.

Cheers,
Wes
Integrations Product Manager / Training
wes.mcdermott@allegorithmic.com
Twitter: The3DNinja

Thank you very much,

I suspected that was something like that, I just had to ask for verification...

cheers

George