Hazy Reflections

Reflection hazying is actually an artifact. It happens due to micro imperfections which widen the actual reflection lobe making reflections appear less vivid and radiant, more milky and less contrasted. Hazing generally is due to poor industrial processes so that metals and other reflective surfaces have an inferior finish quality because of bad drying or baking, poor coating and polishing. The product of hazing is generally an halo around the reflection highlights.

Being an artifact it means also that generally it's what separates a computer graphics reflection from a real reflection. Glossy reflection models like GGX or Beckmann model a perfectly finished surface. Real life reflections have instead almost always a certain degree of hazing. Generally surfaces that don't exihibit hazing are treated ad-hoc and remain somehow a niche product for specialized use. For example we may find general usage mirrors exhibiting some degree of hazing while we won't find that degree in our reflex camera mirror.

With a dedicated reflection haze node (Reflect Hazy) we introduce in Arnold an easy and fast way to give your reflections that extra bit of realism they may lack.

That's not a matter of changing or mapping glossiness or roughness, those remain almost the same. That's a matter that our reflection will dim less abruptly and will extend more diffusely introducing a kind of visual halo around the original reflection highlight. We can see the effect on the silencer enlongated highlight for example. On the left no hazing, on the right Hazy set to 0.5 with Haze Extent set to 2.5.

Because we still have all the PBR slots like reflection color, roughness, normals etc. we can still approach any material that comes from PBR applications like Painter Mari etc. and from there we can tweak further extending our modelling with hazy and haze extent params. Here for example we're using the same roughness maps with just a different AiRange node that gives us an ad-hoc input for the haziness slot to approach an oxidised metal. 

We said that almost all surfaces which are not treated specifically exhibit some kind of haze. However hazing sometimes is introduced on purpose in the manufacturer process to give reflections a certain look. For example for paint finishes, micro-flakes and other impurities are introduced to produce a more hazing paint. In the same way we can use this shader to give our reflections a nice characteristic appearance.

For example when we deal with the classic diffuse+specular interfaces we treat them ideally so that we are not even introducing a real layering because we assume the specular interface on top is infinitesimally thick and perfectly transparent. We can use hazing to give the surface a bit more thickness. Meaning, we're saying that the surface on top is not purely specular and that its imperfections will haze the reflection itself.. ie. they will make it scatters light in a more diffuse way.. giving a sense of increased deepness.. ie. simulating light scattering into the coating layer. 

Below we're layering an orange diffuse contribution with a specular layer. The first image has the haziness param set to 0. The second one has the haziness param set to 1 where it shows some more deepness.

All in all, the Haziness and Haze Extent are a couple of very usefull params to vary our reflections while keeping the same overall roughness and allow us to better match some materials that typically exhibits reflection hazing because of how they are done or because of external factors. It can be used together with roughness maps to vary reflections and give them a more natural feeling.

Leave a Reply