"Principled v2" feedback/discussion thread

I am personally a big fan of this, every step to letting artists use accurate real world values is a step in the right direction. Excuse me if this is slightly offtopic but i’ve always wanted a scale behind the normal distance, displacement distance, both in modifier and shader. rather than having some arbitrary value system

Additionally, I think having a simplified model enabled by default which simply uses a maximum scatter distance along with a scatter color would make a lot of artists very happy.
I know Corona render uses a system like this and I am very fond of it.

Also, i created a spreadsheet (idk if i’m allowed to link it but i think it gives a good idea of what I would consider the ideal way to structure the v2 shader
Spreadsheet

One note for that sheet is that I am not an expert, see it as a slightly more technical artists perspective.
Another might be that having dropdown menus/openable categories for the less frequently used parts like SSS, Sheen, Clearcoat and Anisotropy would be very nice. This would prevent new users from being overwhelmed and experienced users to have less clutter in most likely already complex nodegroups. I see it as a win win.

Not an experienced commenter on forums so please correct me if I said or did anything wrong, thanks
~ Max

4 Likes

I think there will be arch-glass option.

2 Likes

The current Subsurface Radius values are in meter units by default. If you change your Blender units to centimeters scene-wide, then I guess the values will become centimeter values, but I haven’t tested that. I usually leave the Blender units at the default meter units and use increments / decrements of 0.0x if I work in centimeters.

1 Like

Actually vector values like this has always been meters regardless, see Geometry Nodes:
Even with unit scale set to 0.01, X + 1 will still move 1 meter along the X axis.

EDIT:
Nevermind, it was my confusion. The 1 actually did get changed into centimenter, its just the relative scale is unchanged so no visual difference.

4 Likes

It keeps using meters in the unit-unlabelled input areas and won’t adapt to your unit settings.

3 Likes

Here’s a quick UI concept I made.

I don’t know that this v2 has to be too much more beastly than the v1, depending on how many additional inputs are yet be added. Thoughts?

Also, it would be nice to see both Metal and Specular PBR workflows supported. I noticed a comment about this on the development page, and I agree. It seems that being able to easily work with both is important to ensure interoperability with other 3D solutions and texture packs, so this part of my concept is a toggle switch. (unless everyone is clearly moving to a Metal workflow and away from Specular)

Lastly, this 3 minute video shows an interesting method for realistic skin that uses some non-typical values and the subsurface color. The results seem like an improvement over the typical values/method. Would this type of workflow still be possible with the subsurface color removed? I wonder if there is something here worth considering for the SSS components as a whole:

12 Likes

Apologies if this has already been discussed. I’m aware of the websites that give you the 200 or so IOR’s of every material out there. If you could hover over any IOR value and have a shortcut of f3 or shift-a (or some common search hotkey) and start typing and have Blender input the correct IOR for you that would be a big timesaver. Milk has IOR of 1.350 would be nice just to type “milk”.
It would encourage beginners not to just leave every IOR at the 1.45 default as well.


Could be useful for SSS radius amounts too. (not sure if there are websites listing every single subsurface radius though)

20 Likes

This is a great suggestion! Totally agree! Wish the shader part of Blender had more factory presets for IOR and common materials.

4 Likes

Since transmission, specular and SSS IOR sliders are being merged into one, maybe the same could be done to the SSS and metallic anisotropic sliders?

1 Like

hey @brecht i made this mockup to my friend who’s learning to code on blender, he’s starting with something simpler and he will try this later on

2 Likes

Looks cool but these mockups should also handle how it looks like if you have other nodes connected to the sockets of the Nodegroup. For collapsable sub-panels, this would be obvious:

(just an ugly sketch)

For your Tabs-Design - not so much.

2 Likes

sub panels doesn’t handle Boolean inputs, that’s why i went for drop down menu and tabs.
as you can see on the mockup Brecht posted, there’s a drop down menu for GGX etc inside the sub panels specular

Btw this discussion should have it’s proper topic

2 Likes

I agree with Alaska that the “Specular” attribute should be kept. Even though it can be calculated from IOR, here are a couple of uses of it:

In this paper about Frostbite engine’s PBR implementation, they define their use of a similar attribute called “Reflectance” to provide artist-friendly control over the fresnel reflectance. This is not just an inverted smoothness/glossiness map. This is used along side the smoothness/glossiness map and is only used for dielectrics.

“Reflectance” seems like a good name and there is precedence from EA in using this name. It might be worth considering changing the name to “Reflectance” so it is not confused with the Specular maps from the Specular PBR workflow.

If a major game studio like EA were to use Blender, they would need support for this type of attribute.

The simplified version is on pages 25, 27:

Here’s the full paper. See pages 13, 15:

Also, here is a practical use of this map from Pixar Renderman for human skin.

They have a “physical” option where it is calculated automatically or an “artistic” option for the following purpose:

(From the section titled “Specular”)

“Adjusting the specular under different lighting scenarios is crucial for aesthetic purposes, just like a make-up artist will powder an actor’s face to limit sweat or flatten unwanted skin features in a specific shot .”

3 Likes

Whatever the design, pls keep in mind to expose everything as node inputs. A lot of material nodes in Blender have attributes you can’t drive at all or need drivers to do so. I see the same thing in some of these mockups. When you can’t set something that is inside a node group from outside it, that’s bad. Thanks!

9 Likes

It make the node longer

1 Like

About the Specular,
Some renderers (corona) have a switch so you can choose if you want to set the relection amount using IOR or disney specular. I really like this aproach as it allows artists to plug in a specular map if they have one and otherwise they can look up an IOR value online.
I think doing the same here would be the best option

4 Likes

I like that design. One thing I would also like is to be able to connect anything to the correct input even if the sub-panels were collapsed.
This change to your mockup doesnt take away ability to connect things, easy to see at a glance how many inputs are collapsed and what type of inputs they are (vector, colour ,float etc). Downside is if there are more than 6 things collapsed it gets more visually cluttered.


You would be able to drag your wire onto each dot input to connect them like this
drag onto dots
And it would then connect to look like this.
after you have dragged onto dots

2 Likes

Regarding Specular input, Lukas explained in the design task that the plan is to have both an IOR input, and Specular input that can be used for typical specular maps, following glTF.

Regarding presets for Metal/IOR/SSS, I think we’re likely to focus on bundling assets for entire materials or the entire shader node, rather than adding a system for individual input presets. There is usually a dependency between multiple inputs to match real data.

That plan is to have a separate subsurface scale multiplier, that should get a unit. And then you get RGB radius that can be nearer to the 0…1 range.

“maximum scatter distance” doesn’t really make sense, a physically based model has no cutoff. Usually we are dealing with an average scatter distance. I don’t think we’ll turn the scattering radius into a color, but there will two separate inputs at least with similar purpose, as explained above.

Some quick points:

  • Base color is already the albedo of the base layer
  • The specular input is an alternative way to control IOR for dielectrics. For metal edge tinting a color is needed. I don’t think merging them is going to work well.
  • I don’t consider a “glossy” parameter to be more artist friendly, I think it’s mostly a matter of habit. The reason to offer it would be compatibility with other software, but I think a custom node group should do that instead of being built in.
  • Note sure what flipping channels refers to for the thin mode.

To be honest, to me this looks like a hacky/roundabout way of doing things without particularly realistic results. But you should still be able to do it with the new version.

These are entirely different things (directionality of volume scattering and microfacet orientations on the surface). It would make no sense to unify them.

11 Likes

currently when you shade an object without thickness (e.g a plane) your normalmap on the backface is flipped, what i mean by that is that if you have a normal with parts that make it look like there are bits pointing outward, the backface will look as if it had bits pointing inward. inverting the x and y (red and green) for the backfacing normal will fix this.
It would be super helpfull if the thin mode would do this automatically for when you make leaves for example, which usually consist of just a single face without thickness for performance reasons

Currently it looks like this: (left:top and right: bottom)

The thin shading option should flip the backface so it looks like its jutting out aswell

1 Like

I hope they will be mutually exclusive. Having specular and IOR both having effect at once would be a giant step back to how renderers worked in early 2000’s. Also, there’s a specular as in “multiplier of the reflection component of the material” and there’s also “PBR specular” as in 0-1 maps to something along the lines of IOR 1-2, with 0.5 being more or less 1.5 IOR value, which is pretty much average of dielectric materials.

So I am not sure which specular would it be. If the latter, we’d essentially have 2 IORs to drive reflection and if the former, we’d regress back in time.