Rendering Passes

Rendering Passes

PRMan can render images using passes to deal with complexity. Just about any scene can be broken down into multiple passes to render: a shadow pass for shadows (deep or not), a txmake pass for textures, and so on, all leading to the final pass for your fully rendered image. Most of these passes are pre-defined and happen "behind the scenes" without requiring you to do anything - you set up your scene and RenderMan does the rest - but you can also take advantage of passes by creating them yourself.

RenderMan for Maya provides sophisticated machinery for creating and managing passes. During a render job, pre-defined passes can be generated to compute data before the final image is rendered. This data can be referenced during the rendering of the final image, and it can be cached to use in subsequent renders, if you so desire. Pre-computed passes can be used to create everything from depth maps to reference images to occlusion passes.

Users should note, a new shading system introduced in RMS 4 supports a workflow that does not require multiple passes. Significant improvements to PRMan's ray tracing capabilities, including a new physically plausible shading framework and a new radiosity cache make it possible to do just about anything you'd want to in a single pass. That said, the RMS 4 system is also compatible with a pass-based workflow.


Creating Passes

Passes are created either explicitly or implicitly. Explicit passes are created purposefully by the user and can be used for computing all sorts of calculations before the rendering of the final frame. The generation of reference image passes may be one of the most common and useful pre-computed passes.

Implicit Passes

Implicit passes are pre-existing and are used by RenderMan for Maya as the need arises. For example, when creating a subsurface scattering effect, RenderMan for Maya uses a default sequence of passes to generate the effect: a pass for generating a point cloud, another for filtering the point cloud, and a pass to make the brickmap so it can be used in the beauty (Final) pass.

images/sss_passes.jpg

The Default Subsurface Scattering Passes

Notice that implicit passes in the Pass menu are tagged with a Defaults label.

Explicit Passes

The most basic way to create a pass explicitly, is from the Passes Tab of the Render Globals. Via the pull-down menu next to the Passes field, select the type of pass to be created:

Pass Menu: Create Pass-> Pass Type

This new explicit pass can then be referenced by other RenderMan nodes in Maya. Virtually any type of pass can be created, for use at any point in the pass graph. Note that certain types of passes create associated dependent passes, e.g. Create Pass > SSMakeBrickmap creates an rmanSSMakeBrickmapPass, an rmanSSDiffusePass, and an rmanSSRenderPass (explicit passes all begin with the rman prefix).

Explicit passes may also be created directly from RenderMan nodes. If, for example, you have added Subsurface Scattering attributes to a Maya material, or added a Slim appearance with a Subsurface Scattering component to your Maya scene, right clicking in the Scattering Map field allows you to create a new explicit pass or select an existing explicit pass. (If you do not create or select a pass, the default, implicit pass will be used.)

For a more detailed example, please consult the Subsurface Scattering tutorial.

RenderMan Passes Table

The table below enumerates and describes the passes that are available via RenderMan for Maya. Note that the "Slim Bake" passes (which start with SB) are only pertinent to RenderMan for Maya users.

Name Description
Final A final beauty render.
Shadow Renders a shadow map.
DeepShadow Renders a deep shadow.
MinMax Shadow Renders maps for soft shadows from area lights.
TxMake Converts an input image file into a Pixar texture.
RenderRadiosity Renders radiosity data into a point cloud.
RenderApproxGlobalDiffuse Generates a point cloud containing global illumination data from a point cloud containing radiosity data. This pass is automatically run as part of an implicit MakeApproxGlobalDiffuse, or can be created explicitly. This pass is dependent upon RenderRadiosity.
MakeApproxGlobalDiffuse Converts a point cloud containing point-based data into a brick map. This pass is dependent upon RenderRadiosity and RenderApproxGlobalDiffuse, which are automatically created when this pass is created.
FilterApproxGlobalDiffuse Much like RenderApproxGlobalDiffuse, this pass generates a point cloud containing global illumination data from a point cloud containing radiosity data, using ptfilter. Unlike RenderApproxGlobalDiffuse, it supports multi-bounce global illumination, but it cannot be converted into a brick map. This pass is also dependent upon RenderRadiosity.
RenderGlobalDiffuse3d Renders arbitrary data (usually occlusion or color bleeding) into a point cloud. This pass is created automatically when you create a MakeGlobalDiffuse3d pass.
MakeGlobalDiffuse3d Generates a brick map from point cloud data. Typically used for baking global illumination data.
SSRender This pass generates a point cloud containing subsurface scattering data.
SSDiffuse A subpass of SSMakeBrickmap, this pass filters the point cloud generated by SSRender.
SSOrganize Turns a regular point cloud into an organized point cloud.
SSMakeBrickmap This pass converts the point cloud generated by SSRender, filtered by SSDiffuse, and organized by SSOrganize into a brick map.
RenderCaustic Generates a photon map for rendering caustics.
Reference Generates a texture map from the results of a ReferenceRender.
ReferenceRender An automatic sub-pass of Reference, it generates an image that the Reference pass turns into a texture, via txmake.
SBRender The equivalent of a Bake pass, for data generated by Slim.
SBPtRender From a Slim bake, generates a .tex file via ptrender.
SBMakePtCloud Generates a point cloud from a Slim node via ptfilter.
SBMakeBrickMap Bakes a point cloud generated by SBMakePtCloud into a brick map.
Bake/BakeRender Created automatically when baking lighting from the Lighting menu.

Managing Passes

All passes can be configured independently of other passes. Each pass has its own custom settings that override the settings in the Render Globals. Any individual pass can have its own quality settings, its own pass-specific camera, or many other kinds of independent behaviors as defined in the pass tab.

All passes (whether explicit and implicit) can be controlled via the Passes tab of the Render Globals. The Settings sub-tab provides controls for the pass that is currently selected. Additional attributes may be added to passes to provide more control.


Secondary Outputs

With RenderMan for Maya any pass in a render job can output its own secondary outputs, created during the primary pass. RenderMan for Maya has a flexible advanced system for constructing passes and secondary outputs. The most common use of secondary outputs is the creation of additional image elements for compositing, like specular, beauty, diffuse, etc. For more information about secondary outputs refer to the Secondary Outputs document.


Strategies

There are several strategies for computing pre-passes. Proper setup of pre-passes can have a substantial impact on render speeds. The most important pass settings are described below.

Caching Behavior

It is important to set the caching behavior for the shot. There are three types of caching behavior: compute, reuse, and disable.

Compute - Causes the pass to be computed every time the frame is rendered, whether or not a pass has previously been rendered.

Reuse - Causes previously cached data to be used again. No additional calculations are peformed in reuse mode, but the cached data must exist on disk.

Disable - Simply disables the pass, causing the entire pass to be ignored.

When tweaking shaders during iterative renderings, the caching behavior of shadow maps can often be set to reuse. By reusing shadow maps, the shadows only have to be calculated once and are reused for each iterative rendering. No more waiting for shadow map calculations.

Phase

Most passes have a Phase parameter that determines how often a pass is calculated. The choices are: Once Per Job and Every Frame.

Once Per Job - Calculates the pass for the first frame of an animated sequence.

Every Frame - Calculates a pass for each frame of an animation.

For single frames, both settings have the same effect. When rendering animated sequences is where the Once Per Job setting can be advantageous.

How often a pass needs to be computed is dependent on the shot. For shots where the elements in a pass are not moving from frame to frame, Once Per Job would be the right setting. However, in cases where objects in passes are moving and deforming during a shot, each frame would require a new calculation. In those cases Every Frame would be the correct setting.

  • Tip

    It is common to use the Once Per Job setting with shadow maps. For instance if the elements in a shadow pass are not moving during a shot (like 3D models of skyscrapers) then only one shadow map needs to be computed for the entire shot. By using the Once Per Job setting (as opposed to the Every Frame setting), the scene will render much faster, more efficiently, and require significantly less disk resources.

Sets

Controlling the membership of objects rendered in pre-passes can provide additional optimizations. Unnecessary calculations can be avoided by selecting only those objects that are required to participate in the pre-computed pass.

To control this set behavior, create a Maya set that only includes the appropriate geometry and enter the name of the Maya set in the Set parameter of the pass.

  • Tip

    Images that aren't moving in a shot can be put into one Maya set and that pre-pass can be calculated Once Per Job. Moving objects can be stuck into their own Maya set.

2D Textures vs. 3D Point Clouds

RenderMan for Maya is capable of caching pre-pass data as 2D textures or as 3D point cloud (or brick map) files. Whether a pre-computed pass is 2D or 3D is largely transparent, but it does have some impact on workflow.

2D Texture Passes

Most pre-computed passes are cached into 2D textures. Some 2D textures, like shadow maps, also contain depth values, but are fundamentally 2D textures.

3D Point Clouds/Brick Maps

Pixar has developed the technology of "3D textures", which are basically point clouds (color data stored in x, y, and z). RenderMan for Maya automatically bakes certain types of computations into 3D point clouds (which may subsequently be converted into brick maps). Subsurface scattering is an example of this. Other calculations, like occlusion, can be baked into either format. By default, occlusion is baked into 3D point clouds, but it can be baked into 2D camera projected textures instead. For instance, 3D point clouds can occasionally consume much more disk space that 2D textures would, and in that case 2D textures would be preferable.

For more information about point clouds and brick maps, please consult the Baking 3D Textures application note.