RIS Developers' Guide
RIS Developers' Guide
The RIS Developers' Guide is intended as a resource for authors of RIS plugins.
PRMan's new rendering mode is built upon the Rix Integration Subsystem (RIS). RIS is a radical departure from the traditional RenderMan approach, in that it eschews the use of RenderMan Shading Language (RSL) for characterizing material shading and light path integration. In RIS these responsibilities have been separated into three new plugin types: Integrator, Bxdf, and Pattern. We provide several plugins to ensure that, out-of-the-box, RPS19/RIS can produce film-quality imagery with no programming, but we've also carefully designed the plugin API to make it easy to develop custom plugins as production requirements dictate. The factory-provided RIS plugins service a variety of needs, from shot debugging to final quality light simulation.
The PxrPathTracer integrator implements the forward path tracing algorithm to produce global illumination effects. The simplicity of the algorithm makes for fast renders of outdoor scenes but may not be the best choice for indoor scenes involving indirect diffuse illumination.
The PxrVCM integrator implements bidirectional path tracing (BPT) to produce high quality global illumination effects, including more difficult caustic light paths and glassy-to-diffuse interactions. The latest "vertex merging" technology combines the power of photon mapping with bidirectional path tracing to more quickly converge to a noise-free solution and to extend even further the variety of supported light paths. PxrVCM can be operated in a uni-directional mode so might be thought of as the "one integrator to rule them all".
In addition to an assortment of basic materials, we provide an implementation of Disney's "Principled Shading" material, which can capture a wide range of materials with a small number of artist-friendly controls. These characteristics make PxrDisney a reasonable foundation for a material layering scheme that relies on upstream composition of material properties.
In RIS, materials (Bxdfs) are parameterized by Pattern plugins and we provide a range of Patterns to support the most common pattern generation sources in modern pipelines. In addition to basic texturing patterns, we provide the PxrSeExpr plugin to combine or layer patterns procedurally.
Additional services are provided by the renderer in RIS mode, including:
- RixLightingServices is the core lighting engine. It is responsible for maintaining the lighting database and for delivering light samples (and handling other forms of light-surface interaction) service of the integrator. Our implementation of RixLightingServices requires the use of geometric area lights and implements the light-to-object expressivity required by the most sophisticated cinematic lighting pipelines.
- Incremental Integration Scheduler is the engine that drives the plugin integrators and implements an efficient multithreaded load-balancing scheme. It supports incremental and progressive rendering with per-pixel adaptive sampling, on-the-fly pixel filtering, optional noise suppression, and custom projection plugins. The incremental rendering mode offers image checkpointing, updating the image on disk as it converges and this opens up the possibility of scheduling renders by time rather than by sample counts.
- RixDisplayServices is the means by which integrators deliver pixel results to RenderMan display drivers. A new "Light Path Expression" (LPE) engine is available for characterizing AOVs and it opens the door to incredible expressivity to compositing pipeline designers.
- Volume and Interior Integration are provided out-of-box with our plugins. The renderer supports progressive volume rendering by sampling the geometric properties of the volume and importance-sampling the underlying density and light fields. The latest advancements in subsurface scattering are supported via our PxrSkin and PxrSubsurface plugins. Improvements in speed, quality and support for progressive rendering are enabled by RIS mode rendering.
- Pattern Graph Execution Engine supports a powerful, efficient and expressive means to produce procedural and textural patterns. Pattern subnets are executed lazily and the results are cached for reuse by other network nodes. Plugins can construct mutable shading contexts to trigger repeated subgraph executions. Dataflow through pattern graphs can be expressed through both atomic parameter connections as well as via parameter bundles, implemented in an efficient struct-of-array (SOA) form.