Cycles - Microfaceted surfaces and roughness calculation algorithm.

I just want to know, what surfaces Roughness algorithm creates.

For example, here is microfaceted surface

When i set up Rougness to 0.150 (i believe it is micrometers, isn’t it?), does Cycles calculate irregular surface, somewhat similar to surface from picture?

My understanding is that the roughness is more like a blur. For a glossy shader, a roughness of 0 indicates perfectly smooth, whereas a roughness of 1 is diffuse. The surface, in itself, does not change.

the source code has the references from where the algorithms were taken…
check here, and search for the referenced pdf’s (I think they are all available online)

Thank you. I’m not programmer, so i doubt i can understand source code. I just wanted to know what exactly Roughness is in Cycles.
It seems that BiggR is right and it is just shading mode of some kind. What is measuring units of Roughness then? Micrometers or just some abstract values?

Cycles uses the Microfacet model, which is quite common in CG.
Essentially, the idea is: If light is reflected from one direction into another, there must be a microfacet that is oriented so that there two directions correspond to perfect mirroring on it (because microfacets are assumed to be perfect mirrors). Therefore, the amount of reflected light between these two directions depends on how likely that “half-vector” (needed orientation of the mucrofacet) is.
Instead of modeling the facets directly, a statistical distribution is used that describes the facet distribution, such as Beckmann or GGX. This distribution’s width what’s specified by the roughness.

For more details, see this paper.

It’s probably basically how much it blurs from 0 blur to a full 180 degree blur, or something similar to that. Something to note is that cycles has 4 algorithms for glossy materials, each behaving differently but with the same roughness range. Basically, it should probably be treated as an abstract value.

Thank you for answers. Talking about PRB materials, i thought that roughness is measured in micrometers, so we can set it up directly, according to physical values of different surfaces roughness. Now i understand that i better regulate it manually until i get visually persuading result.

Yeah, it’s arbitrary, even to the point of not matching same values of other renderers. Meaning you can’t pick roughness values from a PBR cheatsheet for i.e. Unity. Also, the reduction of reflectiveness by means of higher roughness is also not accounted for in Cycles (unless it has been updated lately - I’m into Fallout4 atm :D). Read up on PBR approaches for Cycles if you want to account for this (although in an approximate manner). It’s basically “reduce the brightness of the edge fresnel reflection by a factor of roughness” to avoid glowing edges phenomenon. At full roughness, the edge would have same brightness as facing/minimum/F-0 reflection.

Unity uses GGX as well, I believe. It should match. Some apps pre-square the roughness value though, Cycles does not, so you need to square it with a math node. Also watch out for gamma. Cheat sheet values may be gamma encoded, and so might your roughness map. Make sure everything is on the same page.