Excerpt |
---|
Shader MetadataThe |
...
shader metadata must be provided between the shader name and its parameter list. For instance:
|
...
|
...
Specifies the string to use for the shader name in the user interface, when possible.
|
...
An array of n strings defining tags for the shader. The supported tags are:
The shader will be considered |
...
a surface shader or a displacement shader, respectively. Tagging a shader with one of these values will have 3Delight for Katana create a Network Shader node along with the surface shader or displacement shader, and connect it appropriately. The tag will also allow the shader to be listed as surface material or displacement material in a Material node. texture/3d The shader will be considered a 3D texture. 3D texture will have a 3D placement matrix added automatically in all plug-ins.
The shader will be considered as a 2D texture.
The shader will be considered as a utility node.
The shader will not be listed in the shading node menu. Shader Parameter MetadataShader parameter metadata is provided between a parameter's default value and the comma that ends its declaration. For instance:
Attribute specification MetadataThe following metadata provides details that are used when generating the attribute of the shading node that corresponds to a given shader parameter.
Specifies the name of the attribute that corresponds to this parameter. There are many reasons to use these attribute - parameter mapping: because the software or OSL imposes restrictions (e.g. an attribute named "color" in Maya, which is a reserved word in OSL), because the shader has different parameter naming conventions than what is expected in the software, or because the required attribute in the software is part of a complex attribute structure that does not have an OSL counterpart. When this metadata are provided, the parameter name is used directly to define the attribute name. The
Specifies the name of a shader to be connected to this shader parameter when no connection exists. The only supported value is
Maya-specific int skip_init Setting this metadatato 1 will will prevent the attribute value from being passed as a shader parameter value when rendering. Only incoming connections to this attribute will be defined when rendering. This allows passing implicit values to shader parameters, such as:
|
Info |
---|
Using |
string lock_op
string lock_left
string lock_right
Katana-specific
Define a lock operator, its left operand and its right operand, respectively. Lock operations allow the gadget to become insensitive or locked when the operator returns true. The various operators are listed here. lock_left
should be set to an attribute name, and lock_right
to a value appropriate for the chosen operator. For example, this would make the gadget of an attribute insensitive when a barnDoor
attribute would not be set to 1:
string lock_left = "barnDoors", string lock_op="notEqualTo", int lock_right=1
float min, float max
int min, int max
Define the minimum and maximum values of a numeric parameter, respectively. When both are defined, the attribute gadget will be made of a numeric field and a slider. In Maya, this configures the attribute with the specified hard minimum and / or maximum value. In Katana, there is no way to enforce minimum or maximum values on attributes. Nevertheless, having a slider shown helps providing information about the parameter's useful range of values. Providing only min
or only max
has no effect in Katana.
string niceName
Specifies the attribute name to use in the user interface, when possible.
string options
This metadata provides extra options for specific widget types. See widget
for details.
string page
Specifies the name of a collapsable section that is used to group together related attributes. Nested pages can be defined by setting this metadata to a string containing the path to the given page. For instance:
string page = "Parent Page.Child Page"
float slidermin,
float slidermaxint slidermin,
int slidermax
Specifies the range of of the slider widget that controls the attribute.
int texturefile
This meta-data should be set to 1 for parameters that specify a texture file name.
string widget
Specifies the type of gadget that will show the attribute's value(s). By default, a gadget appropriate for the attribute type is generated. In Maya, matrix attributes are not shown in the Attribute Editor. The following values are supported when it is required to override the default gadget:
checkBox
A check box widget. Implies a boolean attribute type.
filename
A combination of widgets suitable for a filename. This usually consists of a text field and with a browse button that produces a file browser dialog when clicked.
mapper
An option menu with a list of items that have an associated numeric value. The list of item labels and values are defined using the options
metadata. In Maya, this widget implies an enum attribute. The enumeration list and values is expected to be defined using the options
metadata. Set options to a string containing one or more <label>:<value>
, separated by |
. For example:
string options = "No Operation:0|Multiply:1|Divide:2|Power:3"
navigation
Maya-specific
A combination of widgets suitable to handle a connection from another node. The attribute is shown as a text field displaying the name of the connected node and a "map" button that brings up a windows allowing the user to select the type of a new node to create
...
string maya_typeID
Only supported in Maya
and connect to this attribute.
Katana-specific
No widget will be created for this attribute. Note that the attribute will still be defined.
The string shader parameter will be presented as an option menu with predefined menu items. The menu items are specified by the string options = "clamp|black|mirror|periodic" floatRamp The ramp widgets require more than one shader parameters and are explained in a dedicated section. Getting the texture coordinatesBecause retrieving the
Ramp widgets
The ramp widgets in Maya and Katana both require 3 different attributes. They also have diverging expectations and features. Note that The triplet of shader parameters required to present a Maya-style float ramp can be declared as follows:
Maya-SpecificMaya requirues both a typeID and a template file. The following meta-data allow you to to automatically take car of these.
Specifies the type ID used for the node registration. This is a integer that Maya uses to identify the node type, most notably when saving a scene in the Maya Binary format. Each OSL shader that defines a given shading node type should be assigned a unique type ID. You can chose a value between The IDs from You may use any ID between |
...
string maya_classification
Only supported in Maya
Specifies the Maya shading node classification. The classification affects where the node is presented in the Hypershade tree lister and menus. Some classification types will also change the node creation mechanism to automatically create and connect related nodes - for instance, creating a surface shader will also create and connect a shading group.
The classification string will be prepended with the standard 3Delight shader node classification string so that the nodes are correctly identified as supported shading nodes when the scene is output to the renderer. The classification string can be set to any value, but using one of the following will list the shader in the specified 3Delight category in the HyperShade:
surface
The shading node will be classified as a surface shader and will be listed under 3Delight → Surface in the HyperShade. Upon creation, Maya will create a new shading group and connect this surface shader's outColor
attribute to it. The shader must provide an output color closure parameter that is either named outColor
or mapped to that attribute name using the attribute
or maya_attribute
metadata.
texture/2d
The shading node will be classified as a 2D Texture node and will be listed under 3Delight → 2D Textures in the HypersShade. Upon creation, Maya will automatically create and connect a place2DTexture node to the shader's uvCoord parameter. See UV Coordinate parameter below for details on how to declare such parameter.
texture/3d
...
. |
...
The shading node will be classified as a Utility node and will be listed under 3Delight → Utilities.
Setting this to 0 allows providing a complete custom template using a MEL file, just like any other node. Setting this metadata to 1 (or not specifying it at all) will have 3Delight for Maya |
...
generate an Attribute Editor template automatically based on the shader parameters' metadata |
...
Parameter metadata
Parameter annotations are provided between a parameter's default value and the comma that ends its declaration. For instance:
...
. |
...
The supported parameter annotations are:
string maya_type
Specifies the type of the Maya attribute related to the shader parameter. For now, only bool
is supported to display an integer parameter as a checkbox.
string maya_name
Specifies the name of the Maya attribute related to the shader parameter.
string maya_label
Specifies the label to use for the Maya attribute in the various Maya editors (Attribute Editor, Node Editor, Channel Box, etc.).
string maya_group
Specifies the label of a Frame Layout into which the Maya attribute will be displayed in the Attribute Editor.
float maya_min
Specifies the soft minimum value for the Maya attribute attribute related to the shader parameter.
float maya_max
Specifies the soft maximum value for the Maya attribute attribute related to the shader parameter.
int maya_hidden
When set to 1, the Maya attribute will not be shown in the Attribute Editor. It will still be visible in the other Maya editors (Node Editor, Channel Box, etc.).
...