Shader Design


Table of Contents

The Shader Design Process

Authoring Shaders Interactively

Founded Upon the RSL

Deceptively Simple

Authoring & Deployment

Different Tools for Different Pipelines

Deployment Strategies

Slim Networks vs. Compiled Shaders


 

The Shader Design Process

Authoring Shaders Interactively
Slim gives you the ability to author RenderMan Shaders interactively, through Slim's Appearance Editor or Graph Editor. Slim can generate RenderMan shaders as a stand-alone application or, more powerfully, in conjunction with MTOR. Slim, when used with MTOR, provides support for higher level shading concepts, such as Ensembles and Adaptors. MTOR interprets these unique concepts and provides tidy comprehensible RIB for PRMan. In both cases Slim offers a powerful interface for authoring RenderMan shaders.

Founded Upon RSL
Slim generates actual RenderMan shaders, "authored" in the RenderMan Shading Language (RSL) as defined in the RenderMan Interface Specification. Slim's interface does not attempt to hide the fact that its interactive shader design is based on the RSL. Instead, Slim embraces the programming terminology central to the RSL, for instance retaining RSL concepts like color and float. Slim brings a user interface to the process of writing RenderMan shaders, but the underlying process of creating shaders hasn't changed. The strategic management of RenderMan shaders has always been important. With Slim, it is essential to use similarly sound strategies.

Deceptively Simple
Slim replaces a rather baroque shader development pipeline with a simple "all-in-one" solution, bringing many aspects of shader development under the one roof of the Slim palette. Shader development has traditionally been the domain of several different production departments: shading, lighting, etc. Now with Slim, a single user can take a shader from conception to connection. This is an unprecedented level of integration, but the convenience of this process can be deceptively simple. The shaders which Slim generates are assets which are stored and managed on disk, and this requires that a strategy for shader management is adopted, especially for large productions.


Authoring & Deployment

Different Tools for Different Pipelines

Different productions and different studios may have different pipelines and different types of users who author shaders and use them. To accomodate these varied environments, Slim provides several tools for developimg and deploying shaders, and allows you to choose the ones that best fit your studio's needs:

Deployment Strategies

Below are three of the many possible strategies for using these tools. In these strategies we divide the task of shading into development -- creating shaders (or shader building blocks) to be used within a production -- and application -- applying the shaders to an actual model, and adjusting them appropriately.

Development Shader developers combine funtions into networks, creating the shaders used for a production. These networks are flattened for deployment and made accessible in Slim's "Import Appearance" menu. Shader developers author templates encapsulating the shading techniques particular to a production. These templates are made accessible in Slim's "Create Appearance" menu. Shader developers author RSL shaders by writing .sl files and compiling them into shaders, optionally creating an accompanying .slim file. These shaders are made accessible in Slim's "Import Appearance" menu.
Application End users import flattened shaders into Slim and adjust their parameters for application to objects in a scene. End users create functions using these templates and combine them into networks and instances for application to their scene. End users import compiled shaders into Slim and adjust their parameters for application.

Slim offers you the flexibility to decide which strategy matches the needs of your production and the skills of your users.

Slim Networks vs. Compiled Shaders

As you can see in the table above, the shaders that are applied to objects in a scene can be Slim networks or compiled shaders, created manually or as the result of flattening a network. This table explains some of the advantages and disadvantages of each of these entities:

  Slim Networks Compiled Shaders
Compilation Shaders created with Slim networks are compiled as they are needed for rendering. This can cause a delay before rendering, though the compiled shaders are saved for subsequent renders. Compiled shaders are, by definition, already compiled.
Size A Slim network may contain a large number of nodes, each with several parameters. Palettes containing many large networks may take longer to load into Slim. Compiled shaders typically have a smaller number of parameters and can quickly be loaded in Slim.
Flexibility Networks give an end-user a great amount of flexibility. They can change the way functions are connected, and, if desired completely alter a shader. With a compiled shader, an end-user can only changes values for the parameters that have been exposed.
Simplicty An end-user may find themselves overwhelmed when first confronted with a network, as they must understand how the functions within a network interact. (Though with RAT 6.5, a network can have a simplified interface by using Bundles) With a compiled shader, only a small subset of parameters are exposed, yielding a much simpler interface.
Portability Networks are only understood by Slim, and are used to generate compiled shaders that are used by PRMan. Compiled shaders can be used directly by PRMan.
Asset Management Slim networks contain all of the information necessary to create a shader within a palette. A compiled shader is a separate, on disk asset that must be present in an expected location when it is used.
Code Management The RSL code used by the functions in a network is contained within template definitions. These template definitions are typically in a global location. If you find a bug within a template's RSL code, you can change it once in the template, and shaders will pick up the change the next time they are generated. If a bug is found in the source for a compiled shader, you must regenerate that shader and replace any existing copies.

You can decide how you want to deploy and apply shaders by choosing which of the advantages and disadvantages are applicable to your production. For example, if end users wish to be able completely customize their shaders, they may prefer to apply whole slim networks (and instances thereof). If end users desire simplicity, quick loading and rendering, they may prefer to use compiled shaders. Of course, nothing prevents you from using both networks and compiled shaders in your productions.


 

Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.