Update v1.3

With v1.3 update, we've refined rombo reflection shaders :

  • added a new bump mode to romboReflectGeneralized we called 'Symmetrical'
  • previous 'Analitycal' bump mode has been renamed 'Tangent'
  • added a new param 'Rough IOR' to romboReflectGeneralized
  • fixed some rare NANs with romboReflect shaders
  • sped up some internal computations

Added a new utility node, romboWIFLoader.

Added romboTonemapper, a shader graph node that works like a tonemap operator.

Fixed romboReflectGlints node bug for Glints Depth < Global Specular Depth.

Added new demo scenes to test updated features and metals/reflections in general.

Rombotools v1.3 has been compiled with latest Arnold SDK
It will work with MtoA5.3.1, C4D4.6.1, MAXtoA5.6.1, HtoA6.2.1, KtoA and up.

To download the update, first log-in and then access your download page.
To install it, simply remove previous rtoa folder and replace it with the new one.
Demo scenes are available here upon log-in. Keep scrolling below for an overview. 


Symmetrical Bump

Our latest dedication to metals did bring a new bump mode to rombotools that we called 'Symmetrical'. Microfacet, fully energy conserving especially good for low poly models (like the gun here where all the detail is normalmapped) and animations. You gonna find it on both ReflectGeneralized and ReflectMultiscatter.

Compared to default Arnold bump we're way better dealing with normal mapped metals. See how unnatural is the upper rim at grazing angles (that grey flat patch on the right sphere), looks like Arnold devs are injecting some lambertian BRDF to obey energy conservation for normals that go brrr but that's not a practical solution by any means. You can also see that rombo materials are perceptually equivalent to stdmaterial while parameters also match std ones, there's nothing one needs to learn to achive the same basic look, rombo shaders can easily replace a stdmat for the better.

Variable Roughness

There's an optical phenomenon that none of the current render engines can natively model.

It is due to low viewing angles where at almost tangent viewing the roughness goes specular (ie. mirror like). It is not due to a glossy dielectric layer on top of a material as the photo below shows being a full conductor material with high roughness alone... see how the cube is almost specularly reflected while it's getting diffused with increasing view angle.

It is a function of both roughness and viewing angle and with rombotools we supply both a true 3D (geometric attenuation) factor and an approximation that can be even used with a std material.

First picture is without, second is with, note the nice 'contact mirror reflections' when you toggle between the twos.

With this new parameter, that can be found on romboReflectGeneralized, we can match real life reflections way better than with traditional reflection BRDFs like those that come with Standard Material that doesn't account for this phenomenon. 

Take care this phenomenon has nothing to do with the classic Fresnel effect where with narrow viewing angles we get more reflections and less transmissions for example. It's another thing that you can experience directly by looking through grazing angle viewing any conductor with a certain rough finish like iphones computer cases etc. it depends how roughness has been created (sand blasting etc.) It still works great also for dielectrics like leathers where it enhances realism just because it realistically varies roughness depending on the viewing angle.

WIF Loader

Because sometimes we may want to use external nodes to further model things with our romboFabricWoven, we've added a romboWIFLoader utility that matches romboFabricWoven patterns for increased flexibility in modeling bumps and displacements. It can also be used standalone for pattern modelling and general WIF (Weaving Information Files) files loading.

It supports two modes: plain color and specular. Specular is actually also a mini fabric shader with fewer params than FabricWovens and can be used for when we want to model fabrics with external nodes while still relying on the powerful shading model used for fabrics and cloths appearances. For example down below we're using an iridescent shader to further model cloth color shifting (here from green to magenta with a touch of sheen).


We implemented various tonemap operators in the shader graph so they can be used for color correction or any other task that involves colors, textures and procedurals where they can be applied selectively to single image textures or a bunch of procedural nodes. They work great with HDR inputs like sunsky and environment maps and can be put inbetween them and Arnold skylight for example.

We have :

  • ACES,
  • Filmic,
  • Reinhard,
  • Lottes,
  • Uchimura
  • Unreal engine 

tonemap operators. Plus there's the option to first convert a linear input to sRGB and eventually back to linear once the tonemapper has been applied. Following is the original EXR image and then respectively ACES, Filmic, Reinhard, Lottes and Uchimura.

New Scenes

For Maya :

For Cinema4D :

For Houdini : 

Leave a Reply