RenderMan presents the PxrSurface Material as a complete choice for shading most solid objects (hair and volumes have their own solutions). Layering is also possible and we simplify this approach with specialized nodes for layering PxrSurface.
Below is a simple exploration of each choice and how they are designed to be used. Note that we use the term "lobe" to describe each illumination lobe of the material. Diffuse is a lobe, as are Primary Specular, Clearcoat, and so on.
For a more technical exploration of the materials and usage at Pixar, take a look at our research paper. (PDF)
PxrSurface is the complete material package. It provides all of the available options and parameters for making just about anything. The user has the ability to combine any lobe and also layer them (using PxrLayerMixer) for simple to complex surfaces. This material choice is useful for many surfaces where artistic freedoms are more important than strict realism. The production materials in RenderMan are from this same family and despite having different options, their parameters are all related. As such, the PxrSurface parameters are your source for how to tweak and manipulate options for your desired look.
As the name suggests, PxrLayerSurface is designed for layering materials. You will notice this material node does not include anything that can be overridden by a PxrLayer pattern. This is so users aren't confused by seeing parameters seemingly fail to work because they changed them in a different (or Base) PxrLayer. Think of this node as your global material settings that are obeyed by all of your added layers. This eliminates the tedium of setting parameters to match in different places. This is your material of choice to begin layering looks.
The PxrLayer pattern node is used to create the actual material layers. These options all provide the ability to enable specific lobes for creating unique looks. These layers can then be connected to a PxrLayerMixer (or multiple) for endless combinations. One example would be a PxrLayer set to look like glass and another to look like a shiny plastic label. These are both connected to a PxrLayerMixer (using the glass as a base) and the result is a glass bottle labeled and ready to render!
PxrLayerMixer contains all the needed controls to decide the final order and masked result of the layers. It's an easy way to order and even re-order your layers. You can even connect other PxrLayerMixer nodes with useful networks making for easy reuse of asset libraries.