Realistic Industrial Environments Course: "Principled BSDF" Node's "Specular" Socket Input without Effect?

@theluthier In the node setup for the puddles the "Specular" socket input of the "Principled BSDF" node doesn't seem to have any effect on the shading:

1) With Connected "Specular" Socket

2) With Unconnected "Specular" Socket 


My explanation: 

1) The "Math Node" in the red frame which is set to "Multiply" has grey as first color which has the same value for R=G=B= 0.2 als the unconnected "Specular" socket of the "Principled BSDF" node. The second color of the mentioned "Math Node" is pure white (R=G=B= 1). 

2) The "Math Node" in "Multiply" mode calculates its output like this:

(with "color1" being the top socket and "color2" being the bottom socket; the following calculation has to be done for R, G and B of color1 and color2  separately; for the sake of simplicity, I didn't use any indices for these three base colors since they have the same values for pure white (1) and any tone of grey (0 < grey value < 1))

output = color1  * ((1-fac) + (fac*color2))

So, if fac is 0 (=black = no puddle) we get 0.2 as "Specular" value which is the same value as the unconnected "Specular" input socket of the "Principled BSDF" node. 

If fac is 1 (=white = 100% puddle), color2 (R=G=B= 1) is multiplied with color1 so that the new values for R=G=B is 0.2 * 1 = 0.2. Nothing change again compared with the unconnected "Specular" input socket of the "Principled BSDF" node.

Let's finally take a value in between like for example fac = 0.5:


output = color1 * ((1-0.5) + (0.5 * color2))

                = color1 * (0.5 + 0.5 * color2)

With R=G=B= 0.2 for color1 and R=G=B= 1 for color2, we get:

output = 0.2 * (0.5 + 0.5 *1)

                 = 0.2 * 1

                 = 0.2


So, in all three cases above, the connected  "Specular" input socket of the "Principled BSDF" node has the same value as the unconnected socket.


I think, the "Puddle Effect" comes only from the three other inputs:

1) A darker tone of grey for the "Base Color"

2) A "Roughness" value of 0 (= black)

3) A "Bump" value 0 (= black)


But the "Specularity" isn't raised at all.


  • spikeyxxx replied

    duerer you are absolutely correct, albeit taking the long way in your explanation ;)

    The short version:

    multiplying anything by 1, doesn't change anything, no matter what the factor is.

    In your calculation: color2 is 1, so: (fac*color2) is just fac and (1-fac) +fac is simply 1.

    So you can save yourself a Node :)

  • Ingmar Franz(duerer) replied

    Thanks, spikeyxxx 😀! And, of course, I knew that you would understand it with a shorter explanation, but I also think at people that aren't as familiar with how Blender works in detail as you are 😉!