Just a quick follow up to the github link from the meeting. Unfortunately, I never got around to adding much (any) documentation, so the repo code itself isn't that much use (unless you have an operable RenderMan 20 installation).
However, the material system concepts are listed here: https://github.com/LaikaStudios/shading-library/wiki/prman_20.Home
- A Material template is used to create a Material shader. It encapsulates all characteristics of a physical material (which includes displacement).
- Multiple Material shaders can be attached, as an ordered set of coshaders, to a given surface in order to layer multiple materials onto the object.
- The Material shader itself is composed of layered strata, each consisting of any number of illumination Responses. Individual Responses are added to a given Material shader as determined by the characteristics of the material and the shader author. The interaction of these responses with each other and to illumination is, by default, designed to be energy conserving and physically correct.
- Displacement in each Material Layer is influenced by the displacements of the materials under it in an automatic, but user-controllable way. In this manner, a Material shader represents a true physical material and not simply a set of illumination responses.
- The illumination produced by light sources can be influenced by specialized coshaders called Light Effectors, which can alter any characteristic of the illumination produced by the light. In this way, a small number of atomic light source shaders can be used to create an infinite variety of lights and lighting effects. These Light Effector effects can be associated with light sources, surfaces, or both.
- A powerful, efficient, and extensive Override mechanism. This allows any shader parameter's value to be easily overridden in highly specific and broadly configurable ways within the scene in order to tailor the rendered image as needed.