Shader
DesignAuthoring Shaders Interactively
Different Tools for Different Pipelines
Slim Networks vs. Compiled Shaders
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.
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:
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
|