This reference page is linked to from the following overview topics: Autodesk Maya 2014, Extension for Autodesk Maya 2013, Framework Classes, 2.3 Shader Instances, 2.4 Texture creation and texture manager, 3.3 Geometry Overrides, 3.5 Shading Node Overrides, 3.8 Render Loop Overrides, 4.2 Lighting Interfaces, 4.4 Effects interfaces, 4.5 Handling custom renderables for object overrides, Shader semantics supported by Viewport 2.0.
An instance of a shader that may be used with Viewport 2.0.
This class represents a shader that may be used with the MRenderItem class for rendering in Viewport 2.0.
#include <MShaderManager.h>
Public Types | |
| enum | ParameterType { kInvalid, kBoolean, kInteger, kFloat, kFloat2, kFloat3, kFloat4, kFloat4x4Row, kFloat4x4Col, kTexture1, kTexture2, kTexture3, kTextureCube, kSampler } |
Specifies parameter types. More... | |
| typedef void(* | DrawCallback )(MDrawContext &context, const MRenderItemList &renderItemList, MShaderInstance *shaderInstance) |
| Definition for pre/post draw callback functions. | |
Public Member Functions | |
| DrawCallback | preDrawCallback () const |
| Access the pre-draw callback function pointer set for the this shader instance. | |
| DrawCallback | postDrawCallback () const |
| Access the post-draw callback function pointer set for the this shader instance. | |
| void | parameterList (MStringArray &list) const |
| Get the names of all parameters that are settable on this shader instance. | |
| ParameterType | parameterType (const MString ¶meterName) const |
| Get the type of the named parameter, returns kInvalid if parameter is not found. | |
| bool | isArrayParameter (const MString ¶meterName) const |
| Determine whether the named parameter is an array. | |
| MString | semantic (const MString ¶meterName) const |
| Return the semantic for a named parameter. | |
| MStatus | setParameter (const MString ¶meterName, bool value) |
| Set a named, boolean parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, int value) |
| Set a named, integer parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, float value) |
| Set a named, float parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, const float *value) |
| Set a named, float2, float3 or float4 parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, const MMatrix &value) |
| Set a named, matrix parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, MTextureAssignment &textureAssignment) |
| Set a texture parameter on the shader instance. | |
| MStatus | setParameter (const MString ¶meterName, MRenderTargetAssignment &targetAssignment) |
| Set a named, texture parameter on the shader instance to a render target. | |
| MStatus | setParameter (const MString ¶meterName, const MSamplerState &sampler) |
| Set a sampler parameter on the shader instance. | |
| MStatus | setArrayParameter (const MString ¶meterName, const bool *values, unsigned int count) |
| Set a named, bool array parameter on the shader instance. | |
| MStatus | setArrayParameter (const MString ¶meterName, const int *values, unsigned int count) |
| Set a named, integer array parameter on the shader instance. | |
| MStatus | setArrayParameter (const MString ¶meterName, const float *values, unsigned int count) |
| Set a named, float array parameter on the shader instance. | |
| MStatus | setArrayParameter (const MString ¶meterName, const MMatrix *values, unsigned int count) |
| Set a named, matrix array parameter on the shader instance. | |
| MStatus | bind (const MDrawContext &context) const |
| Binds the shader instance to the draw context, so that it is the active shader. | |
| unsigned int | getPassCount (const MDrawContext &context, MStatus *status=NULL) const |
| Returns the number of draw passes defined by the shader. | |
| MStatus | activatePass (const MDrawContext &context, unsigned int pass) const |
| Activates the given pass of the shader. | |
| MStatus | unbind (const MDrawContext &context) const |
| Unbinds the shader instance from the draw context. | |
| MStatus | updateParameters (const MDrawContext &context) const |
| Updates the bound shader instance with the current parameter data. | |
| bool | isTransparent () const |
| Return whether the shader will render with transparency. | |
| MStatus | setIsTransparent (bool value) |
| Set whether the shader will render with transparency. | |
| MShaderInstance * | clone () const |
| Clone the shader. | |
Static Public Member Functions | |
| static const char * | className () |
| Returns the name of this class. | |
| enum ParameterType |
Specifies parameter types.
| MShaderInstance::DrawCallback preDrawCallback | ( | ) | const |
Access the pre-draw callback function pointer set for the this shader instance.
| MShaderInstance::DrawCallback postDrawCallback | ( | ) | const |
Access the post-draw callback function pointer set for the this shader instance.
| void parameterList | ( | MStringArray & | list | ) | const |
Get the names of all parameters that are settable on this shader instance.
| [out] | list | The list to populate parameter names |
| MShaderInstance::ParameterType parameterType | ( | const MString & | parameterName | ) | const |
Get the type of the named parameter, returns kInvalid if parameter is not found.
| [in] | parameterName | Name of the parameter to query |
| bool isArrayParameter | ( | const MString & | parameterName | ) | const |
Determine whether the named parameter is an array.
| [in] | parameterName | Name of the parameter to query |
Return the semantic for a named parameter.
| [in] | parameterName | Name of the parameter to query |
Set a named, boolean parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | value | Value of the parameter |
Set a named, integer parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | value | Value of the parameter |
Set a named, float parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | value | Value of the parameter |
Set a named, float2, float3 or float4 parameter on the shader instance.
The floating point data stored in "value" will be interpreted based on the type of the named parameter. For example, for a parameter of type kFloat3, the data will be assumed to be an array containing three floats.
| [in] | parameterName | Name of the parameter to set |
| [in] | value | Value of the parameter |
Set a named, matrix parameter on the shader instance.
Note that this method does not alter the matrix and it is up to the caller to set the values correctly depending on whether the parameter is row-major or column-major.
| [in] | parameterName | Name of the parameter to set |
| [in] | value | Value of the parameter |
| MStatus setParameter | ( | const MString & | parameterName, |
| MTextureAssignment & | textureAssignment | ||
| ) |
Set a texture parameter on the shader instance.
If the texture assignment contains a NULL value for texture then the shader parameter will be set to NULL.
| [in] | parameterName | Name of the parameter to set |
| [in] | textureAssignment | Texture to assign |
| MStatus setParameter | ( | const MString & | parameterName, |
| MRenderTargetAssignment & | targetAssignment | ||
| ) |
Set a named, texture parameter on the shader instance to a render target.
If the render target assignment contains a NULL value then the shader parameter will be set to NULL.
Note, there is a significant performance penalty when binding MSAA targets (i.e. targets where multiSampleCount > 1).
| [in] | parameterName | Name of the parameter to set |
| [in] | targetAssignment | Render target to assign |
| MStatus setParameter | ( | const MString & | parameterName, |
| const MSamplerState & | sampler | ||
| ) |
Set a sampler parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | sampler | Sampler state to assign |
| MStatus setArrayParameter | ( | const MString & | parameterName, |
| const bool * | values, | ||
| unsigned int | count | ||
| ) |
Set a named, bool array parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | values | The array of values to set |
| [in] | count | The number of values in the array |
Set a named, integer array parameter on the shader instance.
| [in] | parameterName | Name of the parameter to set |
| [in] | values | The array of values to set |
| [in] | count | The number of values in the array |
| MStatus setArrayParameter | ( | const MString & | parameterName, |
| const float * | values, | ||
| unsigned int | count | ||
| ) |
Set a named, float array parameter on the shader instance.
This method is used for setting not just float arrays but float2, float3 and float4 array parameters as well. The floating point data stored in "values" will be interpreted based on the type of the named parameter. For example, for a parameter of type kFloat3, the data will be assumed to be a list of float-triples containing a total of "count" float-triples. So if "count" in this example is 5, that means the total number of raw floats is 3*5=15.
| [in] | parameterName | Name of the parameter to set |
| [in] | values | The array of values to set |
| [in] | count | The number of floats stored in the array divided by the dimension of the data |
| MStatus setArrayParameter | ( | const MString & | parameterName, |
| const MMatrix * | values, | ||
| unsigned int | count | ||
| ) |
Set a named, matrix array parameter on the shader instance.
Note that this method does not alter the matrices and it is up to the caller to set the values correctly depending on whether the parameter is row-major or column-major.
| [in] | parameterName | Name of the parameter to set |
| [in] | values | The array of values to set |
| [in] | count | The number of values in the array |
| MStatus bind | ( | const MDrawContext & | context | ) | const |
Binds the shader instance to the draw context, so that it is the active shader.
The typical call sequence is
bind() getPassCount() activatePass( 0 ) do drawing activatePass( 1 ) do drawing ... unbind()
Note that it is the plug-in author's responsibility to call unbind() at the appropriate time. Failing to do so may corrupt subsequent drawing.
| [in] | context | The current draw context |
| unsigned int getPassCount | ( | const MDrawContext & | context, |
| MStatus * | status = NULL |
||
| ) | const |
Returns the number of draw passes defined by the shader.
| [in] | context | The current draw context |
| [out] | status | Status code |
| MStatus activatePass | ( | const MDrawContext & | context, |
| unsigned int | pass | ||
| ) | const |
Activates the given pass of the shader.
Must be called between calls to bind() and unbind().
| [in] | context | The current draw context |
| [in] | pass | The index of the pass to activate |
| MStatus unbind | ( | const MDrawContext & | context | ) | const |
Unbinds the shader instance from the draw context.
| [in] | context | The current draw context |
| MStatus updateParameters | ( | const MDrawContext & | context | ) | const |
Updates the bound shader instance with the current parameter data.
This is useful in cases where the same shader instance is reusable but with different input parameters.
Must be called between calls to bind() and unbind().
Calling this method will invalidate any currently active pass. Must invoke activatePass() after calling this method.
| [in] | context | The current draw context |
| bool isTransparent | ( | ) | const |
Return whether the shader will render with transparency.
| MStatus setIsTransparent | ( | bool | value | ) |
Set whether the shader will render with transparency.
| [in] | value | Value to set |
| MShaderInstance * clone | ( | ) | const |
Clone the shader.
This will return a new MShaderInstance object which is identical to the existing shader. The new shader is completely independent of the original. Setting parameter values on either shader after calling clone will have no effect on the other.
Using clone can improve performance when many copies of the same shader are needed. When requesting MShaderInstance objects from MShaderManager the shader is recompiled for each request. The clone() method does not cause a recompilation.
| const char * className | ( | ) | [static] |