Angular Roughness - 1 Tip For Instantly Better Materials! (Chocofur Tutorial)

Hey!

I’ve been recently researching the angular roughness issue in Blender and it turned out not to be supported by the default Principled BSDF Shader.

Angular Roughness is a material property available in most state of the art rendering engines like Corona or Redshift - it simply shifts the roughness values to the mirror-like, depending on the viewing angle. It turns out it’s actually quite easy to re-create in Blender and I wanted to share a video tutorial on how to do this:

Together with my team I’m also working on an Addon that could “single click” the effect to any Principled BSDF shader present in the scene. It’s actually almost finished with the core features working like a charm. The addon will be available for free but if you’d like to help us testing it out, please drop a message at: [email protected]

Cheers!!

9 Likes

Layer weight!!.. omfg, I was trying to find the solution, as a side project, here and there in my limited spare time… As someone who heavily uses textures on roughness, and being a total freak about getting roughness right, I am thrilled with this!.. and will be waiting for the one-click with bated breath!! You rock bro! Thank you thank you!

2 Likes

I’m emailing you now. This is extremely helpful and I’d love to help test the one-click solution.

This is bad advice. Roughness is not view dependent. The implementation in the Principled BSDF is correct and does not need any external additions.

A fresnel roughness hack was necessary before the Principled BSDF came along and it worked the other way round. It did not manipulate roughness based on fresnel, but it did change the fresnel factor based on the surface roughness.

2 Likes

This solution is implemented in most state of the art rendering engines like Corona or Red Shift and the trick is commonly used in Vray.

I guess the implementation in Principled BSDF is not that correct or doesn’t work as it should as the effect is clearly not visible in the renderings.

Also “fresnel factor based on the surface roughness” is something completely different to what I’m showing in the video and is not a universal solution either - there are high roughness + high fresnel materials as well as low roughness + low fresnel ones. It shouldn’t be correlated.

Thankyou heaps for the information. Super helpful!

Do you have any references to this being implemented in other renderers?

You can read the Redshift material settings manual or watch any video tutorial explaining the process. I’m not sure if the “trick” it’s implemented in Vray as a shader setting, but using the curves for changing glosiness values is a common technique in that rendering engine.

The Redshift manual states, and I quote: “Most real-world materials exhibit an amount of reflection. The two most visible aspects of reflection are its blurriness (driven by material roughness) and its strength (driven by the Fresnel effect).”

I don’t see any indication in their documentation that they would change roughness based on the viewing angle.

If you look at you own video at for example 4m17s, you’re getting very unrealistic results. The reflection of the point light gets distorted to a cone. This does not happen in real life.

Thea renderer attempted something like that. That being said I do agree that shenanigans like this are mostly useless. In general it adds complexity to the setup process with no increase in quality/realism in return.

Can you point to a point in that video? I don’t have the time to sit through 20 minutes.

Roughly at 7:50

Sorry I’ve confused Redshift with fstorm rendering engine. In fstorm the setting is called Glossiness Fresnel and you can see it here:

I have no idea what the controls he’s using are supposed to do, and there isn’t much of an explanation.
But the reference image he’s showing exhibits a sharp and a more dull glossy lobe (as is explained later in that video), and he sharper lobe becomes more apparent at shallow angles.

That said, you still can’t change an objects roughness by looking at it from a different angle. Roughness remains constant.

Making surface parameters view dependent breaks reciprocity, a key requirement for materials in a physical renderer.

Yes, you probably did not ready my entire first post in this thread :slight_smile: I explicitly said I am not a fan of these shenanigans too. I also prefer roughness to just stay roughness, a single parameter with the entire microfacet approximation model correctly handled under the hood. You were just asking if there’s an example of a renderer implementing it, so I posted one. But that doesn’t mean I support it, let alone want it in Blender :wink:

Roughly at 6:20 it is shown the effect on the real picture.
There was a long debate on this thread about this issue, and cool nodegroups were created.

My suspect is that, as you said, we are seeing two different “lobes” as if the (any)material has two layers of coat. And the supposed “angular sharpness” is the more sharp and more faint layer that gets visible at low angles according to the well-known (and implemented) fresnel effect.

2 Likes

That just looks like a cheap hack to work around the lack of multiple specular lobes.

To you it’s cheap, to others it’s just practical and quick to apply in day to day work.

Nothing wrong with a cheap hack - I didn’t mean that in a derogatory way. Cheap hacks are what keep the the world running. However, this is not a way to create more “physical” or “realistic” materials since reality just doesn’t work that way. This is a trick in the way it was once fashionable to use a blue tint on skin specularity back when SSS wasn’t widespread and nobody cared about color management.

How is having to balance 3 interdependent values quicker and more practical than having just a single value which can often by mapped by a single, correctly captured and calibrated texture…?