"Principled v2" feedback/discussion thread

This was my assumption as well. Now what would be the better option:

  • Clamp Sheen and Coat to 1.0 max.?
  • Just avoid / clamp negative values in the result and allow artists to bend physics beyond anything that can happen in the “real world”?

Ah, then I kind of misread the post above. I thought the picture showed the AD Standard Surface (while it shows the Cycles Principled). Now I’m seeing that they use Emission kind of in parallel and don’t layer it under Sheen and Coat! That explains a lot.

EDIT: Made another experiment with Karma / MaterialX Standard Surface and they also clamp Sheen / Coat to 1.0 and emission isn’t affected by it.
I wonder what will happen once OpenPBR’s Standard Surface (or what it will be called) finds its way to MaterialX.

This is incredibly useful to see laid out in this manner! Would be great to see this in the official Cycles doc, once it is finalised as a permanent reference.

3 Likes

More changes have landed in 4.0 now, these are probably the last besides bug fixes.

  • Add dielectric specular tint as color instead of float, for more artistic control.
  • Add metal edge tint, based on the F82 model to simulate complex IOR.
  • New IOR Level input that replaces the old Specular input, see Lukas’ comment above.
  • More clamping of inputs to valid ranges.
  • Various improvements to the panel layout, some renaming.

A quick overview of the main changes in Principled v2 is here:
https://wiki.blender.org/wiki/Reference/Release_Notes/4.0/Rendering#Principled_BSDF

23 Likes

So many great changes. I’ve been experimenting with the coating tint on car paint types of application and it provides a really great artistic look. Left is white coat, right is with a slight pink-purple applied. The absorption property sitting under the uncolorized reflections of the coat is so cool… It’s kind of a ‘pinch of salt’ type thing, you don’t want too much color and don’t want that color to be too dark, almost as though you’re just applying a very light pastel color to the tint, otherwise it overwhelms the base color. It’s quite cool.

13 Likes

For Subsurface Radius, would it make sense to put RGB labels in each field for clarity?

@brecht
" * New IOR Level input that replaces the old Specular input, see [Lukas’ comment]above."
I’m not seeing a change in the build downloaded today. If I set Spec to 0, I still get edge reflectance if the IOR is say 1.52. Perhaps I’m misunderstanding something here.

1 Like

The build was not yet updated when I wrote my comment. It is there now.

Ah ok, got it. I’ve done some initial testing and seems to work pretty predictably. It solves the issues of a user opening a file with Spec (now IOR Level) set to zero and still have reflections at glancing angles.
So if I understand, 0.5 as the default value just leaves the Fresnel curve exactly as-is, as configured by the IOR (say 1.52), so they would have F0 reflections at about 4.25%, and decreasing IOR Level internally is lower the IOR value progressively until it reaches 1.0 for a diffuse only surface. I’m curious though as a very low IOR like 1.1 would still drive F90 to 100% (a very thin sliver of it), does it just then jump F90 to zero by specifying IOR level to 0? Most users probably won’t about this but I’m just curious how that jump happens.

Glad to finally see this mostly completed after a year!

I know this is diving into feature requests, but with the emphasis on tinting with PV2, how about a way to tint the coat highlight/specular?

Technically F90 is always 1.0, the range in which it gets hit just gets narrower.

Here’s a plot of dielectric Fresnel reflectivity for various IORs (note the nonlinear X axis):

They all go to 1.0 eventually, but for low IORs you need a VERY shallow angle.

And since I already have Gnuplot set up, here’s the same graph using the Schlick Fresnel approximation, which is very widely used, especially in realtime engines:

Note how it works well for “normal” IORs, and gets the same F0, but the behavior at high angles is completely wrong at low IORs (as you might e.g. get for nested dielectrics, or when putting the IOR adjust near zero of course). Therefore, a renderer that parametrizes purely in terms of F0 and F90 won’t get the smooth transition to diffuse.

Hm, it could be done, but the main difference between the main specular layer and the coat already is that the main specular layer gets tinted by the coat. Making the coat also tintable seems somewhat redundant. Of course there will be cases where it is useful, but that could be said for many options.

5 Likes

I just want to remember that only metallic surfaces can reflect colors.Dielectrics as usally coating is,can only reflect white color.
The only reason for a tinting color would be the absorbing color in a coating layer as example,but not the reflecting color.

2 Likes

All these new features and changes make the new Principled better and better every day. I love it!

The one thing that still bugs me is that none of the values have a proper default set. So if I want to quickly reset something by pressing the backspace key, I get 0.0 or black (which is useless).
While the whole interface of the Principled is getting a revamp, I hope that this gets fixed too.

12 Likes

Reality is one thing, artistic rendering is another

That is a known issue for all node editors in general. Defaults are not working there

Sure,but what if you want to tint the clear coat a bit yellow like a thick old clearcoat layer?Then the absorption tint makes the most sence with the correct white reflection.

Otherwise you would tint the reflection as well,thats NPR.

The specular layer is already tintable, which you said is a property of metals. Since we’re already in NPR territory, why not let the user tint the clearcoat reflection as well ? it sounds like it could be useful.

I know (it’s a problem all over Blender) and now that the UI gets an overhaul I hoped that this could get fixed at least for the most complex shader that everybody uses most of the time.
I would even be willing to volunteer to enter the default values in all the source files, if I only knew where.
This should be low hanging fruit even for a non-coder like me.

I noticed that 3rd party addons like e.g. Octane have proper defaults, so it can’t be a problem that can’t be solved.

3 Likes

I agree. It always happens to me that when adding a bump node, for example, the default values are so high that they are unusable (Strength: 1, Distance: 1). It would be a good change and would save time.

2 Likes

Hi there, I am maintaining the io_scene_3ds addon and have a question regarding specularity. In 3ds the definition is specular color but this was not available in principled bsdf so I choosed specular as channel for the specular color texture. Now since specular tint is a color my question is, if it will also support mapping textures like the specular IOR level. the 3ds IO uses node_shader_utils, will specular tint texture be included in future?

2 Likes

I added it now:

2 Likes

Thanks for the quick commit, the 3ds script now also got the update:
io_scene_3ds: Moved specular color texture to specular tint