Public Member Functions | Public Attributes | Static Protected Member Functions

FBShader Class Reference

This reference page is linked to from the following overview topics: 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 448 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 (Implementation)
virtual HFBShaderModelInfo  NewShaderModelInfo (HKModelRenderInfo pModelRenderInfo, int pSubRegionIndex)
  Create a new shader-model information object.
virtual void  UpdateModelShaderInfo (FBRenderOptions *pOptions, HFBShaderModelInfo pInfo)
  Update shader-model information when model, material & texture mapping or shader setting change.
virtual void  DestroyShaderModelInfo (FBRenderOptions *pOptions, HFBShaderModelInfo 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, HFBShaderModelInfo pInfo)
  Pre-rendering of shaders that is called only one time for a shader instance.
virtual void  ShadeModel (FBRenderOptions *pOptions, HFBShaderModelInfo pInfo, FBRenderingPass pPass)
  Real-time shading callback for shader without kFBShaderCapacityMaterialEffect.
virtual void  ShadeModelShadow (FBRenderOptions *pRenderOptions, HFBShaderModelInfo pInfo)
  Draw custom shadow shape callback for shader with kFBShaderCapacityDrawShadow but without kFBShaderCapacityMaterialEffect.
virtual void  CloneShaderParameter (HFBShader pNewShader)
  Clone shader.
virtual void  DetachDisplayContext (FBRenderOptions *pOptions, HFBShaderModelInfo 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, HFBRenderer 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, HFBShaderModelInfo 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, HFBShaderModelInfo 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, HFBShaderModelInfo 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, HFBShaderModelInfo 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< HFBShaderModelInfo > &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, HFBShaderModelInfo 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:
pName Shader name.
pObject Internal parent object to own shader(default=NULL).

Member Function Documentation

IObject_Declare ( Implementation  )

Reimplemented from FBBox.

virtual HFBShaderModelInfo NewShaderModelInfo ( HKModelRenderInfo  pModelRenderInfo,
int  pSubRegionIndex 
) [virtual]

Create a new shader-model information object.

Parameters:
pOptions Render options.
pModelRenderInfo Internal Model Render Info.
Returns:
Newly allocated shader-model information object.
virtual void UpdateModelShaderInfo ( FBRenderOptions pOptions,
HFBShaderModelInfo  pInfo 
) [virtual]

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

Parameters:
pOptions Render options.
pInfo Shader-model information object to be updated.
virtual void DestroyShaderModelInfo ( FBRenderOptions pOptions,
HFBShaderModelInfo  pInfo 
) [virtual]

Destroy shader-model information object callback.

Parameters:
pOptions Render options.
pInfo Shader-model information object to destroy.
virtual void ReplaceAll ( FBModel pModel ) [virtual]

Replace all shader in pModel.

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

Append shader to pModel.

Parameters:
pModel Model 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,
HFBShaderModelInfo  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,
HFBShaderModelInfo  pInfo,
FBRenderingPass  pPass 
) [virtual]

Real-time shading callback for shader without kFBShaderCapacityMaterialEffect.

This is called after all the calls to ShaderBeginRender.

Parameters:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShadeModelShadow ( FBRenderOptions pRenderOptions,
HFBShaderModelInfo  pInfo 
) [virtual]

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

Parameters:
pOptions Render options.
pInfo Shader-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:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
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:
pOptions Render options.
pPass Rendering 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:
pOptions Render options.
pPass Rendering 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:
pOptions Render options.
pPass Rendering pass.
virtual void ShaderPassMaterialBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
HFBShaderModelInfo  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:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShaderPassMaterialEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
HFBShaderModelInfo  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:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShaderPassGeometryBegin ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
HFBShaderModelInfo  pInfo 
) [virtual]

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

Parameters:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShaderPassGeometryEnd ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
HFBShaderModelInfo  pInfo 
) [virtual]

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

Parameters:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShaderPassModelsDraw ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
const FBArrayTemplate< HFBShaderModelInfo > &  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:
pOptions Render options.
pPass Rendering pass.
pInfoArray An array of Shader-model information to be displayed.
virtual void ShaderPassModelDraw ( FBRenderOptions pRenderOptions,
FBRenderingPass  pPass,
HFBShaderModelInfo  pInfo 
) [virtual]

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

Parameters:
pOptions Render options.
pPass Rendering pass.
pInfo Shader-model information.
virtual void ShaderPassDrawShadowBegin ( FBRenderOptions pRenderOptions ) [virtual]

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

Parameters:
pOptions Render options.
pPass Rendering pass.
virtual void ShaderPassDrawShadowEnd ( FBRenderOptions pRenderOptions ) [virtual]

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

Parameters:
pOptions Render options.
FBShaderPassActionCallback GetShaderPassActionCallback ( ) const

Get Shader Pass Action Callback registration;.

void SetShaderPassActionCallback ( FBShaderPassActionCallback  pCallback )

Set Shader Pass Action Callback registration;.

virtual void CloneShaderParameter ( HFBShader  pNewShader ) [virtual]

Clone shader.

Parameters:
pNewShader Shader to copy data to.
virtual void DetachDisplayContext ( FBRenderOptions pOptions,
HFBShaderModelInfo  pInfo 
) [virtual]

Detach the display context from the shader.

Parameters:
pOptions Render options.
pInfo Shader-model information object.
virtual bool FbxStore ( FBFbxObject pFbxObject ) [virtual]

Storage of information into the FBX file format.

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

Retrieval of information into the FBX file format.

Parameters:
pFbxObject Object to interface with FBX file format.
pRenderer Renderer 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:
pModelViewMatrixArray pointer of 4x4 column major modelview matrix array, length is 4*4*pCount;
pCount number 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:
pTransparency Transparency type.
Returns:
a mask of all rendering passes needed for DrawGeometry() to work correctly.

Member Data Documentation

const char* ShaderDescription

Description.

Definition at line 630 of file fbshader.h.

Read Write Property: Is the shader Enabled

Definition at line 665 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 672 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