Micro Roughness Material (Cycles)

  • March 15, 2018
  • 1,445 Downloads
  • 38 Likes
  • Blender 2.7x
  • Render: Cycles
  • Creator: Moony
  • License: CC-0
You must be logged in to download.

Description:

It's well known that glossy surfaces have what is known as the Fresnel effect - whereby reflections get stronger at glancing angles. Another lesser known effect however is that reflections can also get sharper at glancing angles if the surface is made up of micro roughness (also known as micro facets). If you search google for "floor" images and look at the reflections from doors/windows - you can clearly see this effect in action.

In order to correctly simulate glossy surfaces like rubber, plastic, floor tiles, polished wood etc correctly, you need to take both effects into account. Cycles glossy shader doesn't account for this effect by default and neither does the new Principled shader in 2.79 (although it does correct for Fresnel bloom)

A description of this effect is given in the video below related to Thea renderer. It is this effect my node group is designed to mimick.

https://www.youtube.com/watch?v=Z01biJCEiKY

This effect is also described in this Siggraph 97 paper (although my node group is an eyeballed attempt to recreated the effect and isn't based on the maths found in this paper)

http://www.graphics.cornell.edu/pubs/1997/LFTG97.pdf

This node group simulates micro roughness in an approximate way by making the roughness fall off as the viewing angle becomes shallow. It has the following advantages:

  1. It increases the sharpness of reflections at glancing angles - which makes those reflections look much more realistic, especially on large flat surfaces like floors.

  2. It also appears to eliminate the energy conservation issue encountered with high roughness materials in the default glossy shader (i.e. when you get bright halos around objects with high roughness values).

There are three properties to this node group.

Roughness - controls the facing roughness value - and works in much the same way as the glossy roughness value - use any value between 0 and 1.

Softness - this defines the glancing angle roughness. Keep this very low (zero for most glossy or semi glossy cases), otherwise you'll start getting fresnel bloom on the edges. Only up it if you have quite a matte material. If you feel that your edges are too glossy - you are better upping the falloff parameter below.

Falloff - This controls the falloff between facing and glancing roughness. Zero will use the glancing falloff across the whole model, while greater values will use more of the facing roughness. Values between 1 and 5 seem to work for most cases - but you can go as high as 10 and still get a benefit. The higher you go - the shallower the final glancing angle roughness will be. Avoid using very high values of this if your roughness is also high (i.e. for roughness =1, the falloff should also be around 1). Higher values of falloff work best on more glossy materials.

Just plug the output of the microfacet nodegroup into the roughness slot of the glossy, anisotropic, glass or Principled shader and you are good to go.

You can also use this node group in PBR material setups. By pluging an image or procedural texture texture into the roughness slot of the nodegroup, you can have texture controlled roughness with micro roughness effects. Similarly you can do the same with the softness input to allow some texture control over the softness/fall off too.

The coloured chess images show the same scene rendered both with and without micro roughness turned on - it should be obvious which is which. In all cases - the only difference is one has microroughness, the other doesn't. The actual roughness values are the same.

In the second set of chess images - the roughness values are 0.1, 0.25 and 0.5 for the three chess pieces. First image has microroughness with a falloff = 1. The second images has microroughness with a falloff = 5. Third image has no microroughness (i.e. just a plain glossy with roughness).

The development of this shader came about due to this thread on Blenderartists (special mention to MartinZ who had considerable input into it's development). If you want follow the thought process and justification behind it.

https://blenderartists.org/forum/showthread.php?433309-Micro-angle-dependent-Roughness-amp-Iridescence/page5

Comments:

  • robwesseling profile picture
    robwesseling

    Hi, this is great and definitely one of my "hero-shaders". I noticed though; Principled shader's roughness behaves differently. And I tried to implement my other hero's: IORFlip by Gregzaal, Modbump by Ace Dragon and Reflection by Cynicat Pro. That works, but on the other side of the material this Micro-roughness node doesn't have effect. Not sure why. Micro-roughness node is ok though.

    Written March 16, 2018
  • Moony profile picture
    Moony

    Principled shader uses the square of the roughness value. Therefore 0.5 roughness in principled is equivalent to a roughness of 0.25 in the glossy shader. I believe this will become the norm for all shaders with glossy components in Blender 2.8 (e.g. glass, aniso, glossy etc).

    It doesn't really matter as far as the microroughness node group is concerned since we are simply mixing between two roughness values with a variable falloff. The microroughness node group is compatible with principled - you just need to adjust your roughness value(s) based on current difference between glossy and principled.

    Written March 18, 2018
  • MiguelNacero profile picture
    MiguelNacero

    Excelente material.

    Written May 13, 2018
  • oliiix profile picture
    oliiix

    BTW: ALL materials have a fresnel effect except for metals ;)

    Written December 05, 2018
  • Bicuk profile picture
    Bicuk

    Thanks for you work dude

    Written August 12, 2021