"Principled v2" feedback/discussion thread

One thing the material system doesn’t do is alter roughness with incidence. Many materials reflect more sharply at higher incidence angles. TheaRender takes this into account as an option on a per-material basis. We can do this in Blender with a node setup, but would be nice to have it as a native behavior.

What would be the node setup for this?

Incidence is the dot product of view vector and surface normal, it is was the fresnel node gives you, except that one is remapped to be more linear I think. I’d have to check. You can use the fresnel node, remap it and pipe it into the roughness input of your shader

Sorry for the delay in responding. You attach an RGB Curves node to the roughness channel, and use a Layer Weight node to drive either the Color or Fac inputs. The left side of the curve represents F0 and the right F90.

1 Like

Hey guys, I just got my computer back up and running, sorry to have to ask but where are we getting the latest builds for this from? I’d like to start testing

Hi, as fas as I know the latest is from late November:

Cheers, mib

1 Like

Ah I see, I downloaded the October build thinking that was it, gotta scroll further haha.
Thanks !

1 Like

Yep - we discussed that at length over on Blenderartists a few years back and I (with valuable input from other contributors - particularly MartinZ) created a node group to do just that.

It would be nice if Blender supported this out of the box though - like Thea does.

We found that it also reduced the fresnel halo effect you get when pushing roughness to high values. I believe principled does this by attenuating the reflection energy at glancing angles, however we found that you don’t actually need to do this if the roughness decreases at shallow angles of incidence. The halo effect is naturally countered as part of the roughness decrease.

3 Likes

Principled v2 does this by calculating the reflectivity based on the sampled angle.
Basically, GCX is a statistical model where, at sample time, a surface is imagined to have a certain normal at the sample point as drawn from a random distribution, and the calculation happens according to that.
This is more accurate than what you can do with a Diffuse and Glossy shader mixed with a fresnel weight, as the Mix node does not have access to this distribution and therefore can’t take into account the roughness correctly. - Glossy reflections will be too bright as a result.

You can fake/approximate that roughness-related brightness falloff with a slightly more elaborate node setup where you mix together the Normal and Incoming vectors weighed by the Roughness (0 Roughness would mean take the Normal, 1 Roughness means take Incoming) and plug that into the Fresnel node, but the exact result you can get by a combined Diffuse/Glossy pass like Principled v2 does can not be accomplished outside nodes right now.

I guess you’d have to be able to pass along the roughness model that you intend to use, passing it through the Fresnel node so it can take that into account. That is currently impossible.

4 Likes

Still I didn’t see/read anywhere how accurate or physically plausible this is. Papers?
The most convincing argument was a school corridor sample, where the effect semms evident, but I also saw the same effect explained in other terms.
Is there any render engine that features this “microroughness” other than Thea?

2 Likes

Can you explain what you do you mean by “physically plausible”? If you mean observable in the real world - both myself and MartinZ did post photos and a brief video of this phenomenon in real life in the blenderartists discussion - although you can observe this behaviour on many other real world materials (A4 printer paper, matte plastic, carboard, wood etc). In fact, most materials I observe seem to show this effect to a greater or lesser degree.

I referenced to a paper in the first post of the thread I posted above too.

I also uploaded a video to youtube showing this effect on the back on an iPhone.

1 Like

It’s possible in principle to split up Roughness into several scales of Roughness.
Right now we got

  • Normal – the macroscopic(ish) normal of the surface. If it is noisy, it effectively acts a bit like a high roughness
  • Roughness - the distribution of normals at a microscopic(ish) scale

But you could split this up further into a mesoscopic scale (which presumably would be this sort of “microroughness?”), and I also have seen a paper at some point talking about even finer structures at the scale of wavelengths. Could call it “Nanoscopic” I guess? - At that scale, roughness may introduce refractive effects, so you may get a subtle spectral color bleed. It’s somewhat similar but not identical to thinfilm effects. I can’t find that paper again though

Apparently this nanometer scale roughness would be relevant to car paint among other materials:

Yeh - something like that was also discussed on the blenderartists thread I posted - later on when it changed to discussion iridescence.

yes, this is something that shows up a lot when you know to look for it. Here is one example I shot a few months back. The specular layer is fairly rough at low glancing angles and nearly mirror like at high. Having the energy conservation code really helps to make this work properly with a simple node setup but it would be most useful to have it as an integrated function at some point.

12 Likes

Wow, that’s a great example of this effect.

2 Likes

Yep this is exactly what i’m talking about. Some materials transition from diffuse to glossy at much steeper angles than others.

Based on the experiments done in the Blenderartists thread, this is likely due to the specifics of the geometry of the micro surface (shape, heights etc). We found that by varying these parameters, the roughness falloff could vary significantly - but it appears it could be described by a single parameter.

I think the VShade material addon has that build in. But it would be great in the native shader indeed.

Purple cube is the VShade material, orange cube is Pricipled BSDF.

2 Likes

Fwiw,I found this gloss calculator and made some tests with its math on the outer gloss layer.

the paper meantioned at the gloss calculator page.
http://web.phys.ntnu.no/~ingves/Downloads/MyPapers/PhysStatusSolidiB_242_2995_2005.pdf

another interesting paper about Matt polyurethane Coating

I made a test with the normal “principled shader” in the current 3.4 version.

I got the feeling even on transmission 1 with complete white, glas is getting darker.

Here is a comparison of Blender and another renderengine.
(First picture is Blender, second one another application + another renderengine) i tried to transfer the settings as close as possible (Transmission 100% and pure white + roughness 0)


4 Likes

When you say “the normal Principled”, do you mean v1?