Cycles Development Updates

My variations:

  • Principled-Stockner BSDF;
  • Disney-Stockner BSDF;
  • Stockner-based BSDF;
  • PLS BSDF (Principled Lukas Stockner).

Stockner Syndrome BDSF

Just kidding, I came willingly. Looking forward to trying this thing out.


We should call it the “Principled Surface BSDF” shader instead of just calling it Principled BSDF. That way the name is more in line with the Principled Volume and Principled Hair shaders. This is the uber shader for the object’s surface, so the name should reflect that.


The thing is, it’s not only going be a surface thing:

  • the idea here is to implement basic volume controls (homogenous absorption, maybe also scattering) in the main Principled BSDF.

He is planning to add a volume output in the Principled BSDF shader. And he is even considering auto-connect the volume when the socket is empty:

  • Not sure how to handle this on the UI side without requiring the user to connect to the Volume output as well. Maybe auto-connect internally if the Volume output is empty, otherwise let the “real” volume shader override this?

Principled v2: battered and stocknered


As easy as it can be: Blender Principled BSDF

1 Like

Are some “micro roughness” reflection glossiness controls planned?

I mean, something like this:

or in fstorm called “glossy fresnel”


Might be missing something but that seems doomed to fail as soon as you have more than one principled shader in there

I guess the rule could be that it only does this is it is connected to the surface sucker socket, but that would be annoying if you don’t actually want any volume options.

Perhaps some visual indicator on the node itself, that settings are currently unused because they don’t matter for all currently connected outputs could work.
In fact it would be nice if somehow node groups could also do this.
Maybe have collapsible panels inside bigger nodes or, user -definable, in groups too.
For instance, if it’s a single principled shader that does it all, there could be like four subpanels:
General settings, Surface settings, Volume settings, Hair settings

Or something like that. And each of those panels could like partially grey out if unused

Yep - I would like to see something like this implemented too - and not just in the principled node, but in the glossy shader as well.


might be better to have an explicit volume output in the principled_v2 node. Nothing done “internally”, hidden to the eye of the user. So if I set something volumetric, then I have to connect the volume socket to the output.

Tested the build and found an issue with Bump + Displacement nodes are doesnt works properly as they are works with GGX model:

And the fresnel node could have a switch for “double sided” to force identical fresnel output for the backside face, as well as a roughness (and microroughness) control for easier manual rough fresnel. As well as complex fresnel for conductors. As well… Oh well… :smiley:


The point I was making was, if something was implemented affecting glossy for principled (like microroughness), it would be sensible to add it to the standard glossy node too - for consistency.

We have seen what happens when features in principled become misaligned with the features in standard shader nodes - we end up with large projects like Principled V2.

To ease things, a new roughness node could solve this problem. You’d have a dedicated microroughness to apply to any other bsdf node.
Oh well, that’s already what we (can) do with the layer weight trick…

I guess it depends how accurate layer weight trick is and how easy we want to make it for users.

Most of the stuff in the principled node can also be achieved using a combination of mix shaders and layer weight etc - so that in itself doesn’t seem to be a barrier to a function or feature being incorporated ‘out of the box’.

Why ? You are probably using an Add or Mix shader node to combine two principled shaders.
You can use same nodes to combine volume shader nodes.

You would have choice to :
_ just mix surfaces outputs and obtain an internal automatic mix of volumes ones.
_ mix surfaces outputs and plug one volume output ( potentially from an Holdout shader) in Material Output node.
_ mix surfaces outputs and mix , manually, differently, volume outputs and plug outputs of Mix Shader nodes in 2 sockets of Material Output node.

It would be realy helpfull to have a roughness scale in micrometer as example.Thea engine working like this.
This way you can set industrial values from interiors like in house,or car to get the perfect haptic.

Here a example of a industrial roughness comparison scale chart,click on it its 4k to get a impression.

Roughness in Blender isn’t really related to the actual physical roughness of the surface though - it’s more a measure of how diffuse the surface looks - so it may be difficult to relate the current implementation of “roughness” in blender to a physical reference like you are posted.

Some semi-glossy surfaces in real life can display high levels of “roughness”, but without displaying actual rough surface details as shown in the reference photo above.

Perhaps “roughness” as defined within blender is a bit of a misnomer? Should it actually be called “diffuse-ness”

1 Like

Ehm yes kind of.Its the microfacet model.With a normal map you a redirecting the facets.

The point is,its difficult to get the right roughness optic out of the box without a right scale.You can do ofc many procedural looks with noise textures.However its not that easy to adjust the right gloss.It should look more like a microdisplacement with the right scale,if that makes sence.
Like the Thea examples.

1 Like

On the other hand, it is worth noting a sensible setup to mix two surface shaders is a lot more straightforward and flexible to setup (e.g. a uv-mapped bitmap as ‘factor’-input), than it is for volumes.

greetings, Kologe