"Principled v2" feedback/discussion thread

@JulianPerez and @Christopher_Tyler

Both of you have talked about how you need to delete the mix node to make the material look right. Just confirming, which mix node do you need to delete?


The single mix node? In 3.6 and/or 4.0?


Or the double mix node? (In both 3.6 and 4.0)


Double mix node is where I seem to have seen a problem. I’ve done some more tests with the single node with factor set to 0 and that seems ok.

But if the tint is unused in the old file (it’s white, with no connection) - why does 4.0 need to add a White Mix node, and connect it to a node earlier in the chain, which produces exactly the same result if i just delete this newly added mix node connection?

Like, in this case it’s literally adding complexity to a shader and doing nothing.

Thanks. This is expected. In the double mix node situation, you will need to delete at least one mix node to get the “correct” results.

This is simply because when you open a 3.6 file in 4.0, save it, then open it in 3.6 again, the reverse versioning isn’t applied (As explained earlier, reverse versioning may not exist due to the complexity of knowing if the reverse versioning should even be applied or not), resulting in the render now being different, and when you open the file back in 4.0, versioning is applied again, resulting in incorrect results.

1 Like

The versioning to add mix nodes was setup by Weizhen Huang, all I can do is speculate on why they may of made certain decisions.


In the case that the Specular Tint is 0 in 3.6, and you have an input connected to the Base Color, then a mix node will be added when you open it in 4.0. This is the behaviour we see, and this is how the versioning code is setup, there are no bugs.

Should Blender be doing this? As in, should it be adding a mix node in the Specular Tint = 0 in 3.6 case? That’s up for debate. But I can speculate on why Weizhen may of done it this way:

  1. Code simplicity - Adding a mix node even if Specular Tint = 0 in 3.6 is a simpler piece of code to write.
  2. It lets people know that the Specular tint now behaves differently because extra nodes were added.
  3. Maybe just an oversight?
  4. Maybe Weizhen just didn’t see that specific case as something that might be controversial.

Obviously the versioning code can be adjusted to achieve the result various people seem to want. (Don’t add a mix node if the specular tint is 0 in 3.6)


For materials without nodes connected to the Base Color (or Specular Tint) input, a mix node isn’t added. I assume this is because it makes things more complex than they need to be (E.G. In an ideal situation, it would add a RGB and a Mix node). Although it does introduce it’s own issues (E.G. If a person had a orange material, with a high specular tint, opened it in 4.0, then changed the base color to blue, they may not be able to figure out why the reflections are still orange).

I can understand the reasoning. But yes, if I have materials that made no use of specular or tint at all (which means a lot of my materials), then adding mix nodes to all of these - which does nothing - i don’t think necessarily “lets people know that the Specular tint now behaves differently because extra nodes were added”.

In my case, I saw this and wondered what was going on. Then I rendered a material from 3.6, pulled into photoshop. Opened that scene in 4.0, and rendered (with the extra nodes). Then deleted those nodes, and rendered.

Finally, had all 3 of those layers in Photoshop and started flipping between them, trying to see what the difference was - which, there was no difference. TLDR: my impression as a user wasn’t just “spec tint is different now”, but also “why is this even here?” Given that BSDF2 does require tweaks to maintain the old look, one might already be gun shy without having the extra mix nodes.

2 Likes

Due to people having semi-strong opinions about this matter, I’ve made a pull request to try and rectify the issue. It can be found here: #113893 - Versioning: Don't add unnecessary mix nodes to Specular Tint - blender - Blender Projects

The final decision on whether or not a special case should be added for when Specular Tint = 0 goes to the Blender/Cycles developers.


The versioning code to add the mix node is simple and “generic”. It adds a mix node if an input is connected to the Base Color, and/or the Specular Tint input. It doesn’t check what the actual values are.

Generic code like this is done for the sake of simplicity, reducing bugs, issues, and the possibility for uncaught edge cases.

If it ends up doing nothing useful in some situations, then that’s just how it is.


This was just speculation on one of the reasons Weizhen may of written the versioning code the way they did. It’s likely they didn’t even think about this.

4 Likes

Oh, understood. Your thoughts on this made sense to me, so I hope my reply didn’t seem confrontational. :slight_smile:

Isn’t using a volume shader the same as other engines using a medium and thus a translucent material? Lots of other engines use a refraction color, then the material stays clear. Using this volume your are getting scttering and absorption which basically is sss

I know that effect. My old renderer Thea Render has this, it was called micro roughnees. It could alter the reflections based on the viewing angle. Here is an example: Understanding Micro Roughness in Thea Render - Lesterbanks

Sorry but these render was not a crappy renderer, the interface was. But this is a full spectral renderer and renders physically correct. Used it for years and still produces amazing images

@Christopher_Tyler and @thorn-neverwake the change has been merged in Blender 4.0 and 4.1. A mix node won’t be added when converting files from <4.0 to 4.0+ if the Specular Tint is 0 and no nodes are connected to the Specular Tint input.

Commit in 4.0: Fix unnecessary mix nodes for Principled BSDF specular tint · 37ab9bb1ed - blender - Blender Projects

13 Likes

Thanks so much for your work on that. :slight_smile:

It was a relatively simple change, and Brecht proposed a simpler method. So thanks to Brecht.

1 Like

The UI for the Principled BSDF node could benefit from additional refinement. For instance, when connecting an image texture node to a collapsed panel, it would be more user-friendly to have a highlighting or indicating feature, or perhaps a pop-up menu, that allows users to easily select the specific socket they want to connect to. This would streamline the workflow by eliminating the need to consistently expand panels, such as the specular panel, just to make a node connect

I believe the design behind the panels system was that you only open the panels you need.

So if you use the Specular panel a lot, but never use Coat, Sheen, or Emission settings, then you can open only the Specular panel and leave it open while you work (don’t close and re-open it every time you interact with it). And the Principled BSDF node will be smaller than it was in 3.6.

If you’ve finalized a node and don’t plan on changing it in the future, then you can close all the panels to save space while you work with other nodes around it.

2 Likes

Thank you. I think this small change will avert consternation in users.

Might be worth posting here :slight_smile:

1 Like

What’s the best way to work around this limitation introduced by the new principled BSDF?

I have a fully saturated blue skinned creature that has red veins under the surface of the skin. In 3.6 I could specify a different colour for SSS than the base colour, which allowed me to set SSS colour to gray so that all ray colours would affect SSS, and the base colour to Blue for the skin surface.

In 4.0, because the base colour is now used as the SSS colour, the blue base colour prevents red rays from inclusion in the SSS colour.

I can’t plug the veins into the base colour, otherwise they’ll appear to be on the skins surface. To get any red contribution, I have to lower the saturation of the Blue quite considerably to get a fast result, because the higher the saturation, the less red and the noisier the result, whereas when it was separate I could get a fast result using sss colour of grey.

2 Likes

In 3.6, it would mix the base color and subsurface color based on the subsurface weight, and then use the resulting color for both the diffuse BSDF and subsurface scattering. The same thing can still be done in 4.0.

Also to be clear, there is no layering between the diffuse BSDF and subsurface scattering. It’s just mixing between the two. It’s not like one is the surface and the other is the volume below that.