If you are writing your own custom shader for DirectX 11 in Viewport 2.0, the following are the semantics and annotations
supported.
Supported parameter annotations
The dx11ShaderNode class looks for the following annotations on parameters and forwards relevant information to the MUniformParameter
class at creation time:
Name
|
Type
|
Description
|
UIOrder |
int |
Allows reordering of parameters in the , especially useful since the parameter order returned by the compiler does not always follow the order of declaration in
the FX file. The parameter with the smallest UIOrder is laid out at the top of the AE, and the other parameters are added
following increasing UIOrder.
|
UVEditorOrder |
int |
Allows reordering of textures in the . The texture parameter with the lowest UVEditorOrder appears first under the menu.
|
UIGroup |
string |
All parameters with the same UIGroup attribute are laid out in a separate collapsible panel, the label of which is the UIGroup
value. The panels are inserted at the position of the group parameter with the lowest UIOrder.
|
Object |
string |
Allows defining of all parameters for a light. At the parameter layout level, this acts exactly as a UIGroup annotation, except that the panel is collapsed by default. A drop-down
menu is created for each distinct Object allowing easy connections to existing Maya scene lights.
|
UIName |
string |
Allows renaming of a parameter for the UI. By default, the variable name is shown. |
SasUiVisible UIType UIWidget
|
bool string string
|
Controls the visibility of the variable in the UI. For the two string annotations, a value of “None” hides the variable, and
this is the only value currently recognized for the UIType annotation.
|
SasUiMin UIMin uimin
|
float/int (same as Parameter)
|
Minimum range value.
|
SasUiMax UIMax uimax
|
float/int (same as Parameter)
|
Maximum range value.
|
UISoftMin uisoftmin
|
float/int (same as Parameter)
|
Minimum slider value for a range. Values smaller than UISoftMin (but larger than UIMin if specified) can be entered in the
numeric input of the parameter.
|
UISoftMax uisoftmax
|
float/int (same as Parameter)
|
Maximum slider value for a range. Values greater than UISoftMax (but smaller than UIMax if specified) can be entered in the
numeric input of the parameter.
|
UIFieldNames |
int |
Creates a drop-down menu for the int parameter using the strings found in the attribute value. The format is the same as the MEL command `attributeQuery -listEnum`, which is a string of colon ":" delimited field names
which can specify an index value separated by an equal sign "=". The indexing starts at zero, and the index value of an item,
when it is not explicitly specified, is the index of the previous item (if any) incremented by one.
Example: "Shaded:Wireframe=8:Bounding Box" defines 3 items with values 0, 8, and 9.
|
ResourceName SasResourceAddress
|
string |
Default texture file name. The plug-in automatically loads and connects the texture when setting the effect.
|
TextureType ResourceType
|
string |
If the variable is described as an under-specified texture instead of a texture[1D|2D|3D|Cube], then this annotation allows
you to specify the texture type. Valid values are “1D”, “2D”, “3D”, and “Cube”.
|
Space |
string |
Allows specifying of the default space for position and direction semantics. Valid values are “Object”, “World”, “View”, and
“Camera”.
|
Light specific semantics
In addition to all the semantics currently supported by the MUniformParameter class, the dx11ShaderNode adds extra light specific
annotations. When a light is driven by Maya, the values of all supported parameters are written using light information from
the draw context. Unsupported parameters are left at the value found in the shader. This means that connecting a point light
drives the position parameter, but not the direction.
Semantic
|
Type
|
Maya light parameter
|
Description
|
LightColor, Color, LightDiffuseColor, Diffuse, LightAmbientColor, Ambient, LightSpecularColor, Specular
|
float3 |
Color |
Values are not premultiplied by the light intensity. |
LightIntensity |
float |
Intensity |
|
LightEnable |
bool |
Illuminate by default |
Follows the visibility of the light, including global light settings. When true, the Maya light is active and visible. |
LightType |
int |
Type |
Allows writing of generic lighting code that can react correctly when connected to any light type. Valid values are: 2- Spot 3- Point 4- Directional 5- Ambient 6- Volume 7- Area
|
Position |
float3 |
|
Position for point, spot, area and volume lights. Reference space can be specified with an annotation. |
Direction |
float3 |
|
Direction for directional and spot lights. Reference space can be specified with an annotation. |
Hotspot |
float |
Cone Angle/ Penumbra Angle |
For spot lights, half angle, in radians. The Hotspot is computed as the minimum of ConeAngle and (ConeAngle+PenumbraAngle).
|
LightFalloff Falloff
|
float |
Cone Angle/ Penumbra Angle |
For spot lights, half angle, in radians. The Falloff is computed as the maximum of ConeAngle and (ConeAngle+PenumbraAngle).
|
DecayRate |
float |
Decay Rate |
For spot, point, area, and volume lights, expressed as an exponent. Maya provides the following values: 0.0 – No Decay 1.0 – Linear 2.0 – Quadratic 3.0 – Cubic
|
ShadowFlag |
bool |
Various |
When true, the light casts a shadow that the surface can receive. This value is true only when global Shadows are enabled, the light Use Depth Map Shadows is on, and the surface Receive Shadows is on.
|
ShadowColor |
float3 |
Shadow Color |
|
ShadowMap |
Texture2D |
|
Contains the depth map shadow texture as computed by Maya. |
ShadowMapBias |
float |
dmapBias |
|
ShadowMapMatrix ShadowMapXForm
|
float4x4 |
|
View transformation matrix of the light |
Supported technique annotations
Name
|
Type
|
Description
|
index_buffer_type |
string |
Allows specifying of custom primitive types via index buffer generator and mutator plug-ins. The dx11Shader project contains
a mutator that can generate Point-Normal Triangles using Adjacent Edge Normals (PN AEN) index buffers when the the following
values are used: “PNAEN9”: triangle and adjacent edges, “PNAEN18”: triangle, adjacent edges, dominant edges, and dominant
vertices.
|
texture_mipmaplevels
|
int |
Specifies the mip map levels to generate/load the textures when using this technique. A value of 0 means to load all possible levels.
|
isTransparent |
int |
Specifies the opacity of the effect, allowing Maya to use proper passes and culling. Supported values are: 0: Technique is always opaque 1: Technique is always transparent 2: Opacity of the technique is tied to a float parameter that has the "Opacity" semantics and is transparent if the opacity
value is lower than 1.0.
|
Texture specific annotations
Name
|
Type
|
Description
|
mipmaplevels |
int |
Specifies the mip map levels to generate/load a designed texture. This value takes precedence over the value set for a technique.
|
Supported pass annotations
The effect can request that some of the passes in the technique be activated in a specialized context, such as when drawing
depth maps for shadows. This is done by adding a string annotation named "drawContext" specifying the context in which the
pass can be activated.
The following context are supported: "colorPass", "shadowPass", "depthPass", and "normalDepthPass".
Global semantic
Name
|
Type
|
Description
|
MayaSwatchRender |
bool |
Identifies when the current rendering process is to draw the swatch. Allows the user to handle a specific path when drawing the swatch.
|