ProcessedShaderMaterial Class Reference

#include <processedShaderMaterial.h>

Inheritance diagram for ProcessedShaderMaterial:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 ProcessedShaderMaterial ()
 ProcessedShaderMaterial (Material &mat)
 ~ProcessedShaderMaterial ()
virtual void dumpMaterialInfo ()
 Dump shader info, or FF texture info?
virtual void init (const GFXMaterialFeatureData::FeatureListHandle &features, GFXVertexFlags vertFlags)
 Creates the passes, generates our shaders, and all that other initialization stuff.
virtual bool setupPass (SceneState *, const SceneGraphData &sgData, U32 pass)
 Sets up the given pass for rendering.
virtual void cleanup (U32 pass)
 Cleans up the given pass (or will anyways).
virtual MaterialParametersallocMaterialParameters ()
 Returns a shader constant block.
virtual MaterialParametersgetDefaultMaterialParameters ()
virtual MaterialParameterHandlegetMaterialParameterHandle (const String &name)
virtual U32 getNumStages ()
 Gets the number of stages we're using (not to be confused with the number of passes!).
Render state setting
virtual void setTextureStages (SceneState *, const SceneGraphData &sgData, U32 pass)
 Binds all of the necessary textures for the given pass.
virtual void setTransforms (const MatrixF &world, const MatrixF &view, const MatrixF &projection, const U32 pass)
 Sets the transformation matrices.
virtual void setLightInfo (SceneState *, const SceneGraphData &sgData, U32 pass)
 Sets the light info for a given pass.
virtual void setEyePosition (MatrixF objTrans, Point3F position, U32 pass)
 Sets VC_EYE_POS in the current shader and additionally sets VC_CUBE_EYE_POS if we have a cubemaps.

Protected Member Functions

void _setPrimaryLightConst (const LightInfo *light, const MatrixF &objTrans, const U32 stageNum)
virtual GFXShaderConstBuffer_getShaderConstBuffer (const U32 pass)
 This is here to deal with the differences between ProcessedCustomMaterials and ProcessedShaderMaterials.
virtual ShaderConstHandles_getShaderConstHandles (const U32 pass)
virtual void _initMaterialParameters ()
void _setObjectXForm (MatrixF xform, U32 pass)
ShaderRenderPassData_getRPD (const U32 pass)
Internal functions
virtual void _addPass (ShaderRenderPassData &rpd, U32 &texIndex, GFXMaterialFeatureData &fd, U32 stageNum, const GFXMaterialFeatureData::FeatureListHandle &features)
 Adds a pass for the given stage.
virtual void _setPassBlendOp (ShaderFeature *sf, ShaderRenderPassData &passData, U32 &texIndex, GFXMaterialFeatureData &stageFeatures, U32 stageNum, const GFXMaterialFeatureData::FeatureListHandle &features)
 Chooses a blend op for the given pass.
virtual void _createPasses (GFXMaterialFeatureData &fd, U32 stageNum, const GFXMaterialFeatureData::FeatureListHandle &features)
 Creates passes for the given stage.
virtual void _determineFeatures (U32 stageNum, GFXMaterialFeatureData &fd, const GFXMaterialFeatureData::FeatureListHandle &features)
 Fills in the GFXMaterialFeatureData for the given stage.
virtual bool _hasCubemap (U32 pass)
 Do we have a cubemap on pass?
F32 _getWaveOffset (U32 stage)
 Used by setTextureTransforms.
virtual void _setStageData ()
 Loads textures and such for all of our stages.
virtual void _setTextureTransforms (const U32 pass)
 Sets texture transformation matrices for texture animations such as scale and wave.
virtual void _setShaderConstants (SceneState *, const SceneGraphData &sgData, U32 pass)
 Sets all of the necessary shader constants for the given pass.

Protected Attributes

Vector< GFXShaderConstDescmShaderConstDesc
MaterialParametersmDefaultParameters
Vector< ShaderMaterialParameterHandle * > mParameterHandles

Private Types

typedef ProcessedMaterial Parent

Member Typedef Documentation


Constructor & Destructor Documentation

ProcessedShaderMaterial::ProcessedShaderMaterial (  ) 

ProcessedShaderMaterial::ProcessedShaderMaterial ( Material mat  ) 

ProcessedShaderMaterial::~ProcessedShaderMaterial (  ) 


Member Function Documentation

virtual void ProcessedShaderMaterial::dumpMaterialInfo (  )  [virtual]

Dump shader info, or FF texture info?

Reimplemented from ProcessedMaterial.

virtual void ProcessedShaderMaterial::setTextureStages ( SceneState ,
const SceneGraphData sgData,
U32  pass 
) [virtual]

Binds all of the necessary textures for the given pass.

Implements ProcessedMaterial.

Reimplemented in ProcessedCustomMaterial.

virtual void ProcessedShaderMaterial::setTransforms ( const MatrixF world,
const MatrixF view,
const MatrixF projection,
const U32  pass 
) [virtual]

Sets the transformation matrices.

Implements ProcessedMaterial.

virtual void ProcessedShaderMaterial::setLightInfo ( SceneState ,
const SceneGraphData sgData,
U32  pass 
) [virtual]

Sets the light info for a given pass.

Implements ProcessedMaterial.

virtual void ProcessedShaderMaterial::setEyePosition ( MatrixF  objTrans,
Point3F  position,
U32  pass 
) [virtual]

Sets VC_EYE_POS in the current shader and additionally sets VC_CUBE_EYE_POS if we have a cubemaps.

Implements ProcessedMaterial.

virtual void ProcessedShaderMaterial::init ( const GFXMaterialFeatureData::FeatureListHandle features,
GFXVertexFlags  vertFlags 
) [virtual]

Creates the passes, generates our shaders, and all that other initialization stuff.

Implements ProcessedMaterial.

Reimplemented in ProcessedCustomMaterial.

virtual bool ProcessedShaderMaterial::setupPass ( SceneState ,
const SceneGraphData sgData,
U32  pass 
) [virtual]

Sets up the given pass for rendering.

Implements ProcessedMaterial.

Reimplemented in ProcessedCustomMaterial.

virtual void ProcessedShaderMaterial::cleanup ( U32  pass  )  [virtual]

Cleans up the given pass (or will anyways).

Reimplemented from ProcessedMaterial.

Reimplemented in ProcessedCustomMaterial.

virtual MaterialParameters* ProcessedShaderMaterial::allocMaterialParameters (  )  [virtual]

Returns a shader constant block.

Implements ProcessedMaterial.

Reimplemented in ProcessedCustomMaterial.

virtual MaterialParameters* ProcessedShaderMaterial::getDefaultMaterialParameters (  )  [inline, virtual]

Implements ProcessedMaterial.

virtual MaterialParameterHandle* ProcessedShaderMaterial::getMaterialParameterHandle ( const String name  )  [virtual]

Implements ProcessedMaterial.

virtual U32 ProcessedShaderMaterial::getNumStages (  )  [virtual]

Gets the number of stages we're using (not to be confused with the number of passes!).

Implements ProcessedMaterial.

virtual void ProcessedShaderMaterial::_addPass ( ShaderRenderPassData rpd,
U32 texIndex,
GFXMaterialFeatureData fd,
U32  stageNum,
const GFXMaterialFeatureData::FeatureListHandle features 
) [protected, virtual]

Adds a pass for the given stage.

virtual void ProcessedShaderMaterial::_setPassBlendOp ( ShaderFeature sf,
ShaderRenderPassData passData,
U32 texIndex,
GFXMaterialFeatureData stageFeatures,
U32  stageNum,
const GFXMaterialFeatureData::FeatureListHandle features 
) [protected, virtual]

Chooses a blend op for the given pass.

virtual void ProcessedShaderMaterial::_createPasses ( GFXMaterialFeatureData fd,
U32  stageNum,
const GFXMaterialFeatureData::FeatureListHandle features 
) [protected, virtual]

Creates passes for the given stage.

virtual void ProcessedShaderMaterial::_determineFeatures ( U32  stageNum,
GFXMaterialFeatureData fd,
const GFXMaterialFeatureData::FeatureListHandle features 
) [protected, virtual]

Fills in the GFXMaterialFeatureData for the given stage.

Reimplemented in ProcessedDynamicLightMaterial.

virtual bool ProcessedShaderMaterial::_hasCubemap ( U32  pass  )  [protected, virtual]

Do we have a cubemap on pass?

Reimplemented in ProcessedCustomMaterial.

F32 ProcessedShaderMaterial::_getWaveOffset ( U32  stage  )  [protected]

Used by setTextureTransforms.

virtual void ProcessedShaderMaterial::_setStageData (  )  [protected, virtual]

Loads textures and such for all of our stages.

Reimplemented in ProcessedCustomMaterial.

virtual void ProcessedShaderMaterial::_setTextureTransforms ( const U32  pass  )  [protected, virtual]

Sets texture transformation matrices for texture animations such as scale and wave.

virtual void ProcessedShaderMaterial::_setShaderConstants ( SceneState ,
const SceneGraphData sgData,
U32  pass 
) [protected, virtual]

Sets all of the necessary shader constants for the given pass.

void ProcessedShaderMaterial::_setPrimaryLightConst ( const LightInfo light,
const MatrixF objTrans,
const U32  stageNum 
) [protected]

virtual GFXShaderConstBuffer* ProcessedShaderMaterial::_getShaderConstBuffer ( const U32  pass  )  [protected, virtual]

This is here to deal with the differences between ProcessedCustomMaterials and ProcessedShaderMaterials.

virtual ShaderConstHandles* ProcessedShaderMaterial::_getShaderConstHandles ( const U32  pass  )  [protected, virtual]

virtual void ProcessedShaderMaterial::_initMaterialParameters (  )  [protected, virtual]

void ProcessedShaderMaterial::_setObjectXForm ( MatrixF  xform,
U32  pass 
) [protected]

ShaderRenderPassData* ProcessedShaderMaterial::_getRPD ( const U32  pass  )  [inline, protected]


Member Data Documentation