Skip to content

prman_20.Home

Mitch Prater edited this page Nov 3, 2021 · 37 revisions

Introduction

The prman_20 branch of Laika's Shading Library is the penultimate version based on the RenderMan 20 Physically Plausible Shading system and the RenderMan Shading Language. It makes extensive use of Co-shaders, and is founded on a few core concepts:

  • A Material template is used to create a Material shader. It encapsulates all characteristics of a physical material, including 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 a layered set of illumination Responses. Any number of 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.

Material

The RenderMan shader authoring tool Slim is used to create networks of shading nodes (a.k.a. templates, define the shader network's end-user parameter interface, and build the network into a shader.

Clone this wiki locally