Question about metallic texture input

Hi

I’m writing my own shader using shader graph (Unity 2020.3.14)

I want to support albedo / normals / metallic / roughness / occlusion / emission / opacity

I got everything to work, but :

I know that the common practice is to read the red channel of the metallic texture. Right now I’m doing it this way :

But while reading this very interesting documentation about substance software (https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-2) I felt on this :


which lead me to think that I should use all 3 channels of the texture and not only one

But while trying to do it, here is what happens :

So I’m kind of confuse about what is really happening at the end. Is there a way to somehow change this metallic input in the fragment shader ? As it seems to take only one value as an input and not a rgba vector.

Am I misanderstanding the substace documentation ? Or shader graph ? Or both

Metallic textures simply describe how “metallic” a pixel is, as the name suggests. White pixels are metallic and black pixels are not metallic. Ok, seems fairly obvious, but what does that mean?

It has to do with the color of the specular highlights of a fragment. If a fragment is metallic, then the color of its specular highlight will be identical to the base color. If it isn’t, then the color of the specular highlights will be white. There’s a bit more to it than that, but that’s the basic idea.

So the metallic texture doesn’t describe a color or anything. You should instead think of the values in the metallic texture more as booleans. The color instead comes from the base color.