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 MRenderItem *renderItem) |
Pre-draw callback function
pointer. |
|
Public Member Functions |
|
~MShaderInstance () | |
Destructor. |
|
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. |
|
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. |
|
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 |
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 |
const char * className | ( | ) | [static] |