3
$\begingroup$

I am applying a roughness map to a simple principled BSDF.

I am having trouble understanding why my image output is significantly different based on whether my roughness map's image texture is set to sRGB or non-color. My understanding is that - either way, the image input is going to be black and white, and thus no differences should be present in the render.

There is a BSE discussion here which describes the options as something you can toggle to skip extra mathematical "conversions". However, it does not discuss how toggling the setting will change the look of the render.

Here are two screenshots of the issue - one with sRGB and one with Non Color

SRGB enter image description here NON COLOR enter image description here NODES enter image description here

$\endgroup$
1
  • 2
    $\begingroup$ I don't know the precise mathematics that go on under the hood, but from a practical sense, I know how to use these colour spaces. Whenever the colours from your image texture are being used directly in the base colour of an object, it should be sRGB (as per default), but if it is being used as a way to influence other aspects (like a map or mask), then it should be 'Non-Color', else it won't work correctly. $\endgroup$
    – Onyx
    Commented Mar 25, 2022 at 9:54

1 Answer 1

2
$\begingroup$

A Color Space, as Wikipedia says, is "a specific organization of colors." Color spaces are used in combination with color profiles as a way of making sure that the same numeric value is displayed as the same color on different media.

Color Management, as the Blender Manual says, " is used both to ensure all parts of the pipeline interpret colors correctly, and to make artistic changes like exposure and color grading."

Color management is the process of applying a color profile to a color space so that the resulting displayed color matches the intent of the color space designer.

Internally, Blender works in a linear color space, but image files may be stored in a different color space, such as sRGB. The Image Texture node converts the image from its stored color space to the linear color space according to various formulas that depend on how the image was created.

But image format files are also used to store data that's not actual color data, because the data needs a one-entry-per-pixel format. So Blender needs to be told that an image texture file isn't really an image so that Blender doesn't try to convert it.

The reason why you can sometimes get away with forgetting to set the space to Non-Color is that actual color spaces have regions that overlap each other, so converting from a color space to linear might give a result that is very close to what not converting would give. This works often for non-color data that's actually stored in a gray scale format. It doesn't work as well for non-color data, let normals, that is stored in a format that uses all three values.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .