About RIS

About RIS

RenderMan's RIS is a new rendering mode that is designed to be fast and easy to use while generating production-quality renders. Global illumination works out of the box and interactive rendering provides rapid iteration for artists. The new mode supports many of the same features as traditional RenderMan but introduces a wholly new shading pipeline. Understanding what's new as well as what old techniques still apply is key to getting the most out of RIS. The following is a high level overview of how it works.

Renderer

images/ovRenderer.png

The renderer drives the entire process by sampling points on the screen and constructing an image from the results. It selects the pixels to sample and generates subpixel samples for these pixels. It might make many passes over the pixels taking one sample at a time to give rapid interactive results that it refines incrementally, or it might do all the samples in a pixel at once for higher throughput for batch renders.

Regardless of how they're selected, each screen sample will be processed by the rest of the pipeline and shaded results will be returned to the renderer. From these, the renderer can eliminate spurious samples and pixel filter the rest to construct the images and deliver them to the various display drivers. These might show the image on the screen for interactive rendering or save them to a file for final rendering. The renderer may generate multiple images at the same time to show various geometric quantities or particular types of light paths.

As this proceeds, the renderer's adaptive sampler can save time by looking at the images to estimate which pixels have converged and therefore are finished. For batch renders, the renderer can also write periodically checkpoint images that can be viewed to see how the image is converging. If the renderer gets interrupted these can be used to recover the render near where it left off. On completion, an XML file can be written with statistics to help diagnose the render performance. Or, if interactive rendering (IPR) is being used, quick updates to the scene and settings can be made and the rendering immediately started again.

Camera

images/ovCamera.png

Once the 2D positions on the screen have been chosen to sample, the camera projection turns them into 3D rays in the camera space. Traditional RenderMan has supported two different projections: perspective and orthographic. With the former, one could specify depth of field settings for defocus, aperture settings for bokeh, and shutter times for advanced motion blur effects. These are still fully supported in RIS.

With the move to fully ray traced rendering, however, new projections become possible. Sphere, cylinder, and torus projections can be used to render environment maps and panoramic images. User-created projections can also be defined using plugins; rolling shutters, lens abberations, and theater dome projections are just some of the possibilities this enables.

Integrator

images/ovIntegrator.png

Integrators take the camera rays from the projection and return shaded results to the renderer. For the main integrators these are estimates of the radiance from the surfaces seen from the outside along the rays. They are responsible for computing the overall light transport. Interior integrators assist in specialized cases by handling the light within surfaces or volumes. We provide two main production quality integrators, though users can substitute their own.

PxrPathTracer implements a unidirectional path tracer. This combines information from the materials at the hit points with light samples to estimate direct lighting and shadowing, then spawns additional rays to handle indirect lighting. This works well with environment lights, and large direct light sources.

PxrVCM extends this with bidirectional path tracing. In addition to the paths from the camera, it traces paths from the light sources and tries to connect them. It can resolve complicated indirect paths that may be slow to converge with PxrPathTracer.

Geometry

images/ovGeometry.png

Each traced ray is checked for intersection against the geometry in the scene. All of the classic primitives from REYES are supported: subdivision surfaces, patches, curves, volumetrics, quadrics, points, and blobbies.

Procedurals can generate geometry on the fly or be used to reduce memory by deferring the loading of parts of the scene until they're actually used. Instancing also helps reduce memory by allowing cheap clones of complex objects.

Detail can be added to any surface using displacements or blurred away again by motion. Complex motion blur is fully supported, whether it comes from camera motion, object motion, or object deformations.

Materials

images/ovMaterialsStub.png

Each piece of geometry has a single attached Bxdf. Roughly speaking this determines its gross material type by computing which directions it most strongly reflects or refracts light in. The Bxdfs also provide the integrator with proposed directions for new rays to sampling indirect illumination.

We include a general purpose, production-ready LM Material, as well as an implementation of Disney's principled BRDF, and specialized materials for skin, glass, and hair.

Patterns

images/ovPatterns.png

While material Bxdfs control the gross appearance of an object, patterns control the detail by varying the parameters of the Bxdfs across a surface. Patterns plug into Bxdfs and to each other to build up complex shading networks.

Patterns can produce their outputs by nearly any means, from texture maps (including atlases and Ptextures), to simple expressions, to a complete shading language like OSL.

Lights

images/ovLights.png

Lighting in RIS mode is done via the geometric area light system, which provides the integrator with relevant direct light samples to evaluate against the Bxdfs in order to shade the rays. These samples come from one of two types of sources, either emissive surfaces (with arbitrary geometry) or environment lights surrounding the scene. Whatever the sources, the system automatically balances a sample budget across all of them.

It also supports a wide variety of sophisticated lighting shaping effects such as gobos, blockers, and IES profiles. Lights can be turned off per-object, or just turned off for certain types of shading, like specular highlights.