Table of Contents |
---|
Introduction
RixShadingPlugin
is the base class for RixBxdfFactory
, RixDisplacementFactory
, RixDisplayFilter
, RixIntegrator
, RixLightFilter
, RixLightFactory
, RixPattern
, RixProjection
, and RixSampleFilter
. These are plugins that implement services for the renderer.
Here, it is important to distinguish between two types of plugins: ones that need to create many short-lived lightweight instances over during the course of a render, and ones that do not. RixBxdf
, RixDisplacement
, and RixLight
represent lightweight instances that may be created many times during the course of a single render, and therefore are not directly subclasses of RixShadingPlugin
. Instead, instancees of those classes are returned by the appropriate Factory (e.g. RixBxdfFactory
), with the Factory itself being the subclass of RixShadingPlugin
.
...
All shading plugins are expected to return a description of their input and output parameters via the GetParamTable()
method. This returns a pointer to an array of RixSCParamInfo
, containing one entry for each input and output parameter, as well as an extra empty entry to mark the end of the table. This parameter table is used by the renderer to ensure proper type checking and validate the connections of upstream and downstream nodes. As such, each entry in the table should set a name, a type (RixSCType
enumeration), detail (varying vs uniform, RixSCDetail
enumeration), and access (input vs output, RixSCAccess
enumeration). These declarations also need to be kept in sync with the associated .args file.
For an example of usage, consider a pattern plugin which returns a color. The resultC output parameter is a color, so it is defined in the parameter table as:
...
CreateInstanceData()
may be called in multiple threads, and so its implementation should be re-entrant and thread-safe.
...
Anchor | ||||
---|---|---|---|---|
|
RenderMan will search for shading plugins on demand, under the rixplugin
searchpath. Custom shading plugins can be installed in a directory that can either be appended to the /rixpluginpath
settings in Rendermn.ini; or the directory can be appended to the rixplugin
search path which is emitted by the bridge.
Anchor | ||||
---|---|---|---|---|
|
If you would like RenderMan for Maya or RenderMan for Katana to recognize your plugin and provide a user interface for changing input parameters and connecting output parameters to other nodes, then you will need to create an args file for your shading plugin. The args file defines the input and output parameters in XML so that tools like RMS or Katana can easily read them, discover their type, default values, and other information used while creating the user interface for the pattern node. Please consult the Args File Reference for more information.