Public Member Functions | Public Attributes | Static Protected Member Functions

FBShader Class Reference

This reference page is linked to from the following overview topics: MotionBuilder 2014, MotionBuilder 2013, Your First Python Program, Scene Elements, FBModel - Transformation Data and the Scene Graph.


Search for all occurrences

Detailed Description

Shader class.

Definition at line 458 of file fbshader.h.

#include <fbshader.h>

Inheritance diagram for FBShader:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 FBShader (const char *pName, HIObject pObject=NULL)
 Protected constructor.
 IObject_Declare (K_IMPLEMENTATION)
virtual FBShaderModelInfoNewShaderModelInfo (HKModelRenderInfo pModelRenderInfo, int pSubRegionIndex)
 Create a new shader-model information object.
virtual void UpdateModelShaderInfo (FBRenderOptions *pOptions, FBShaderModelInfo *pInfo)
 Update shader-model information when model, material & texture mapping or shader setting change.
virtual void DestroyShaderModelInfo (FBRenderOptions *pOptions, FBShaderModelInfo *pInfo)
 Destroy shader-model information object callback.
virtual void ReplaceAll (FBModel *pModel)
 Replace all shader in pModel.
virtual void Append (FBModel *pModel)
 Append shader to pModel.
virtual bool ShaderNeedBeginRender ()
 Does the shader need a begin render call.
virtual void ShaderBeginRender (FBRenderOptions *pOptions, FBShaderModelInfo *pInfo)
 Pre-rendering of shaders that is called only one time for a shader instance.
virtual void ShadeModel (FBRenderOptions *pOptions, FBShaderModelInfo *pInfo, FBRenderingPass pPass)
 Real-time shading callback for shader without kFBShaderCapacityMaterialEffect.
virtual void ShadeModelShadow (FBRenderOptions *pRenderOptions, FBShaderModelInfo *pInfo)
 Draw custom shadow shape callback for shader with kFBShaderCapacityDrawShadow but without kFBShaderCapacityMaterialEffect.
virtual void CloneShaderParameter (FBShader *pNewShader)
 Clone shader.
virtual void DetachDisplayContext (FBRenderOptions *pOptions, FBShaderModelInfo *pInfo)
 Detach the display context from the shader.
virtual bool FbxStore (FBFbxObject *pFbxObject)
 Storage of information into the FBX file format.
virtual bool FbxRetrieve (FBFbxObject *pFbxObject, FBRenderer *pRenderer)
 Retrieval of information into the FBX file format.
void InvalidateShaderVersion ()
 Invalidate Shader version to trigger model-shader informaton to be updated.
int GetShaderVersion () const
 Return Shader Version.
FBShaderCapacity GetShaderCapacity () const
 Return Shader Capacity (bitwise value)
bool HasShaderCapacity (FBShaderCapacity pCapacity)
 Return true if shader has certain capacity.
void SetShaderCapacity (FBShaderCapacity pCapacity, bool pOn)
 Set Shader Capacity (bitwise value).
int GetDrawInstancedMaximumSize () const
 Get shader maximum size for draw instanced.
void SetDrawInstancedMaximumSize (int pMaxSize)
 Set shader maximum size for draw instanced.
virtual void UploadModelViewMatrixArrayForDrawInstanced (const double *pModelViewMatrixArray, int pCount)
 Callback for uploading the modelview array when draw instanced.
Real-time shading callbacks for kFBMaterialEffectShader.
virtual void ShaderPassTypeBegin (FBRenderOptions *pRenderOptions, FBRenderingPass pPass)
 For all the shader instances of the same type, to setup the common state for all this type of shaders.
virtual void ShaderPassTypeEnd (FBRenderOptions *pRenderOptions, FBRenderingPass pPass)
 For all the shader instances of the same type, to clean the common state for all this type of shaders.
virtual void ShaderPassInstanceBegin (FBRenderOptions *pRenderOptions, FBRenderingPass pPass)
 For all the models associated with this shader instance, to setup the common state for this shader instance.
virtual void ShaderPassInstanceEnd (FBRenderOptions *pRenderOptions, FBRenderingPass pPass)
 For all the models associated with this shader instance, to clean the common state for this shader instance.
virtual void ShaderPassMaterialBegin (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, FBShaderModelInfo *pInfo)
 For all the models mapped with this material and associated with this shader instance, to setup the common material state for this shader instance.
virtual void ShaderPassMaterialEnd (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, FBShaderModelInfo *pInfo)
 For all the models mapped with this material and associated with this shader instance, to clean the common material state for this shader instance.
virtual void ShaderPassGeometryBegin (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, FBShaderModelInfo *pInfo)
 For all the models instanced from the same geometry, to setup the common VBO state for this shader instance.
virtual void ShaderPassGeometryEnd (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, FBShaderModelInfo *pInfo)
 For all the models instanced from the same geometry, to clean the common VBO state for this shader instance.
virtual void ShaderPassModelsDraw (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, const FBArrayTemplate< FBShaderModelInfo * > &pInfoArray)
 For all the models with the same material/geometry mappings, inside this functions, we only need to setup modelview matrix, and draw the meshes.
virtual void ShaderPassModelDraw (FBRenderOptions *pRenderOptions, FBRenderingPass pPass, FBShaderModelInfo *pInfo)
 Callback for Cg/CgFx shader to setup WorldMaitrx/WorldMatrixIT parameters.
virtual void ShaderPassDrawShadowBegin (FBRenderOptions *pRenderOptions)
 Shadow draw pass begin notify for shader with kFBShaderCapacityMaterialEffect and kFBShaderCapacityDrawShow.
virtual void ShaderPassDrawShadowEnd (FBRenderOptions *pRenderOptions)
 Shadow draw pass end notify for shader with kFBShaderCapacityMaterialEffect and kFBShaderCapacityDrawShow.
FBShaderPassActionCallback GetShaderPassActionCallback () const
 Get Shader Pass Action Callback registration;.
void SetShaderPassActionCallback (FBShaderPassActionCallback pCallback)
 Set Shader Pass Action Callback registration;.

Public Attributes

const char * ShaderDescription
 Description.
FBPropertyBool Enable
 Read Write Property: Is the shader Enabled
FBPropertyRenderingPass RenderingPass
 Read Write Property: Rendering pass object are shaded in.

Static Protected Member Functions

static FBRenderingPass GetRenderingPassNeededForAlpha (FBAlphaSource pTransparency)
 In order to be called at the right passes, a shader must set the result of GetRenderingPassNeededForAlpha() to RenderingPass for a given transparency type.

Constructor & Destructor Documentation

FBShader ( const char *  pName,
HIObject  pObject = NULL 
)

Protected constructor.

Parameters:
pNameShader name.
pObjectInternal parent object to own shader(default=NULL).

Member Function Documentation

IObject_Declare ( K_IMPLEMENTATION  )

Reimplemented from FBBox.

virtual FBShaderModelInfo* NewShaderModelInfo ( HKModelRenderInfo  pModelRenderInfo,
int  pSubRegionIndex 
) [virtual]

Create a new shader-model information object.

Parameters:
pModelRenderInfoInternal Model Render Info.
pSubRegionIndex
Returns:
Newly allocated shader-model information object.
virtual void UpdateModelShaderInfo ( FBRenderOptions pOptions,
FBShaderModelInfo pInfo 
) [virtual]

Update shader-model information when model, material & texture mapping or shader setting change.

Parameters:
pOptionsRender options.
pInfoShader-model information object to be updated.
virtual void DestroyShaderModelInfo ( FBRenderOptions pOptions,
FBShaderModelInfo pInfo 
) [virtual]

Destroy shader-model information object callback.

Parameters:
pOptionsRender options.
pInfoShader-model information object to destroy.
virtual void ReplaceAll ( FBModel pModel) [virtual]

Replace all shader in pModel.

Parameters:
pModelModel to replace all shader to.
virtual void Append ( FBModel pModel) [virtual]

Append shader to pModel.

Parameters:
pModelModel to append shader to.
virtual bool ShaderNeedBeginRender ( ) [virtual]

Does the shader need a begin render call.

Remarks:
Re-implement this function and return true if you need it. This method is called once per shader on each render pass.
virtual void ShaderBeginRender ( FBRenderOptions pOptions,
FBShaderModelInfo pInfo 
) [virtual]

Pre-rendering of shaders that is called only one time for a shader instance.

Remarks:
ShaderBeginRender is called as many times as the number of models affected by the instance of the shader in a given render pass. (ShaderNeedBeginRender must return true for this function to be called).
virtual void ShadeModel ( FBRenderOptions pOptions,
FBShaderModelInfo pInfo,
FBRenderingPass  pPass 
) [virtual]

Real-time shading callback for shader without kFBShaderCapacityMaterialEffect.

This is called after all the calls to ShaderBeginRender.

Parameters:
pOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShadeModelShadow ( FBRenderOptions pRenderOptions,
FBShaderModelInfo pInfo 
) [virtual]

Draw custom shadow shape callback for shader with kFBShaderCapacityDrawShadow but without kFBShaderCapacityMaterialEffect.

Parameters:
pRenderOptionsRender options.
pInfoShader-model information.
virtual void ShaderPassTypeBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass 
) [virtual]

For all the shader instances of the same type, to setup the common state for all this type of shaders.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
virtual void ShaderPassTypeEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass 
) [virtual]

For all the shader instances of the same type, to clean the common state for all this type of shaders.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
virtual void ShaderPassInstanceBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass 
) [virtual]

For all the models associated with this shader instance, to setup the common state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
virtual void ShaderPassInstanceEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass 
) [virtual]

For all the models associated with this shader instance, to clean the common state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
virtual void ShaderPassMaterialBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
FBShaderModelInfo pInfo 
) [virtual]

For all the models mapped with this material and associated with this shader instance, to setup the common material state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShaderPassMaterialEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
FBShaderModelInfo pInfo 
) [virtual]

For all the models mapped with this material and associated with this shader instance, to clean the common material state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShaderPassGeometryBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
FBShaderModelInfo pInfo 
) [virtual]

For all the models instanced from the same geometry, to setup the common VBO state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShaderPassGeometryEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
FBShaderModelInfo pInfo 
) [virtual]

For all the models instanced from the same geometry, to clean the common VBO state for this shader instance.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShaderPassModelsDraw ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
const FBArrayTemplate< FBShaderModelInfo * > &  pInfoArray 
) [virtual]

For all the models with the same material/geometry mappings, inside this functions, we only need to setup modelview matrix, and draw the meshes.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoArrayAn array of Shader-model information to be displayed.
virtual void ShaderPassModelDraw ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
FBShaderModelInfo pInfo 
) [virtual]

Callback for Cg/CgFx shader to setup WorldMaitrx/WorldMatrixIT parameters.

Parameters:
pRenderOptionsRender options.
pPassRendering pass.
pInfoShader-model information.
virtual void ShaderPassDrawShadowBegin ( FBRenderOptions pRenderOptions) [virtual]

Shadow draw pass begin notify for shader with kFBShaderCapacityMaterialEffect and kFBShaderCapacityDrawShow.

Parameters:
pRenderOptionsRender options.
virtual void ShaderPassDrawShadowEnd ( FBRenderOptions pRenderOptions) [virtual]

Shadow draw pass end notify for shader with kFBShaderCapacityMaterialEffect and kFBShaderCapacityDrawShow.

Parameters:
pRenderOptionsRender options.
FBShaderPassActionCallback GetShaderPassActionCallback ( ) const

Get Shader Pass Action Callback registration;.

void SetShaderPassActionCallback ( FBShaderPassActionCallback  pCallback)

Set Shader Pass Action Callback registration;.

virtual void CloneShaderParameter ( FBShader pNewShader) [virtual]

Clone shader.

Parameters:
pNewShaderShader to copy data to.
virtual void DetachDisplayContext ( FBRenderOptions pOptions,
FBShaderModelInfo pInfo 
) [virtual]

Detach the display context from the shader.

Parameters:
pOptionsRender options.
pInfoShader-model information object.
virtual bool FbxStore ( FBFbxObject pFbxObject) [virtual]

Storage of information into the FBX file format.

Parameters:
pFbxObjectObject to interface with FBX file format.
Returns:
true if successful, false otherwise.
virtual bool FbxRetrieve ( FBFbxObject pFbxObject,
FBRenderer pRenderer 
) [virtual]

Retrieval of information into the FBX file format.

Parameters:
pFbxObjectObject to interface with FBX file format.
pRendererRenderer being restored.
Returns:
true if successful, false otherwise.
void InvalidateShaderVersion ( )

Invalidate Shader version to trigger model-shader informaton to be updated.

int GetShaderVersion ( ) const

Return Shader Version.

FBShaderCapacity GetShaderCapacity ( ) const

Return Shader Capacity (bitwise value)

bool HasShaderCapacity ( FBShaderCapacity  pCapacity)

Return true if shader has certain capacity.

void SetShaderCapacity ( FBShaderCapacity  pCapacity,
bool  pOn 
)

Set Shader Capacity (bitwise value).

Only when the shader is not connected to any model, this function will take effect. otherwise, it will be ignored.

int GetDrawInstancedMaximumSize ( ) const

Get shader maximum size for draw instanced.

void SetDrawInstancedMaximumSize ( int  pMaxSize)

Set shader maximum size for draw instanced.

virtual void UploadModelViewMatrixArrayForDrawInstanced ( const double *  pModelViewMatrixArray,
int  pCount 
) [virtual]

Callback for uploading the modelview array when draw instanced.

Parameters:
pModelViewMatrixArraypointer of 4x4 column major modelview matrix array, length is 4*4*pCount;
pCountnumber of modelview matrixs in the array.
static FBRenderingPass GetRenderingPassNeededForAlpha ( FBAlphaSource  pTransparency) [static, protected]

In order to be called at the right passes, a shader must set the result of GetRenderingPassNeededForAlpha() to RenderingPass for a given transparency type.

It should not be called at rendering time.

Parameters:
pTransparencyTransparency type.
Returns:
a mask of all rendering passes needed for DrawGeometry() to work correctly.

Member Data Documentation

const char* ShaderDescription

Description.

Definition at line 638 of file fbshader.h.

Read Write Property: Is the shader Enabled

Definition at line 673 of file fbshader.h.

FBPropertyRenderingPass RenderingPass

Read Write Property: Rendering pass object are shaded in.

Set the property to kFBPassFlat if you want to be called at the first pass, kFBPassPostRender at the second pass, kFBPassFlat | kFBPassPostRender at both. The current pass will be the third argument of ShadeModel()

Definition at line 680 of file fbshader.h.


The documentation for this class was generated from the following file:

FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader
FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader FBShader