I am a little bit confused about the various flavors of material layering in both online and offline rendering. I had naively assumed (after using the Mix Shader in Cycles and a few minutes in Substance Painter) that material layering was just a simple mask channel that blended between the final colors, sort of like texture splatting for terrain.

But reading this question I see that the actual shader inputs are interpolated, rather than the final colors:

Material Layering

Is this the same process for offline renderers? Reading the man page for RenderMan it seems like it is, as they specify only similar Bxdfs can be mixed:


Are there any papers that describe the basics? I found this from SIGGRAPH last month, but it confused the hell out of me:


Lastly, are there any contexts in which material layering is simulation of multiple physical interfaces? Or is that referred to something else, like nested dielectrics?


There is no single method of layering materials. Some implementations, as you have observed, simply interpolate shader input parameters. This helps especially in contexts where code divergence comes with performance penalties (GPUs for example), since all material layers use the same code path and only have different data. Other blend between the output of the individual shader layers.

More complex approaches take the interface between material layers into account, as well as layer thickness. A recent publication describing such a method is "A Comprehensive Framework for Rendering Layered Materials" by Jakob et al.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy