Linear Vs Gamma For Textures Of Unity Standard Material

Albedo should be sRGB, not linear. It should be noted that for the most part it's not how they're saved but how they're created eventually read. The image formats themselves don't usually have a concept of if they data they hold should be considered sRGB or linear. However it's usually pretty easy to know which is going to be wanted / needed. If the image is holding a color or some value you're going to be seeing directly (like albedo or specular color, or even occlusion) then it should be sRGB, if it holds data that is going to be interpreted then most likely it should be linear. Metallic is an odd one because it's technically "data", but but for ease of use they expect sRGB textures, that and what "halfway between dielectric and metal" looks like is kind of arbitrary; in the real world things are 100% one or the other.

Albedo, metallic, specular and occlusion are sRGB. Normals and smoothness are linear.

(The alpha component of textures are always linear regardless of the settings on the texture, sRGB only applies to the RGB channels.)


For metallic textures the assumption they're making is that you're authoring these in a graphics program that's using an 8 bpc sRGB, but you can do these in linear if you want. It's kind of irrelevant as it's just data. However specular color does need to be sRGB as it's a color and uses the same slot as metallic and Unity's default behavior is to treat all textures as sRGB so they just assume that's what you're going to do. The slider for metallic in the standard shader when you don't have a texture is in sRGB / gamma space so that "0.5" is the equivalent of 127/255 in sRGB (~0.2) and not 127/255 in linear because of this.