PBR: Reflection roughness at grazing angle

Hi!

A basic question regarding physically based shading:

From observation of real life materials (plastic) and Grant Warwicks “Mastering VRay Materials” course I gather that the reflection not only increases in strength towards the grazing angles (fresnel) but also decreases in roughness, the reflections get sharper.

Am I correct that the usual PBR nodes (cynicat) model the first behaviour but not the second, so the roughness of the glossy shader stays the same regardless of angle of incidence?

Grant models the fresnel effect with a curve based on the refractiveindex site. But he also blends between different roughness using a second curve, different from fresnel and “eyballed” from reference.

Has sombody implemented this?

I’ve watched several presentations on building PBR shaders as well as building a few of my own, and according to those who even mention this, the difference between a curved roughness falloff and a by-guess-and-by-gosh one are almost impossible to detect in a side-by-side comparison. Nor do they add enough extra realism to make them worth the time taken to build them. Some suggest that building a shader that accurate will (to paraphrase) give you hives and a nervous disposition and run you smack into Cycles’ wall of limitations. And after all that trouble, no one will even notice.

There was a thread about this a few months back - but I can’t find it now.

However it would be easy to implement in any node group that includes a glossy shader (node group is for the ground plane material)


Is this the reason why IOR is hard-coded in these custom fresnel nodes? If you look at the reflection data for dielectrics on the refractiveindex website the difference is indeed hard to perceive, much more so in metallics.

Thanks for the setup moony, I am somehow wondering why this effect hasn’t been implemented or discussed as prominently as the roughness/fresnel coupling.

Anyway, seeing somebody using cumbersome workarounds in VRay makes me appreciate how basic (in a good way) cycles implementation of shading nodes is. I’d rather build the complex stuff from bottom up than to hack abstract high-level ubershaders.

You could expose it in a custom Fresnel node if you want, naturally, but from what I’ve read, even IoR makes only a minute difference. It gets especially tricky when dealing with metals where the IoR is often less than ‘1.’ Apparently, Cycles doesn’t deal well with an IoR that low (below ‘1’) so it’s suggested that it either be left at the default or adjusted by eye.

If you need a PBR shader that you can just plonk into a scene and use for a large number of cases, the newest Blender builds have a feature-complete Principled shader node that does all of the calculations for you.

Of course, it doesn’t come with certain things like dispersion and micro-roughness (for that you either need to supplement the shader with extra nodes or rely on your own setup instead).