Ogre::RTShader::ProgramProcessor Class Reference
[RTShader]

A class that provides extra processing services on CPU based programs. More...

#include <OgreShaderProgramProcessor.h>

Inheritance diagram for Ogre::RTShader::ProgramProcessor:
Inheritance graph
[legend]

List of all members.

Classes

struct  MergeCombination
class  MergeParameter

Public Member Functions

 ProgramProcessor ()
 Class constructor.
virtual ~ProgramProcessor ()
 Class destructor.
virtual const StringgetTargetLanguage () const =0
 Return the target language of this processor.
virtual bool preCreateGpuPrograms (ProgramSet *programSet)=0
 Called before creation of the GPU programs.
virtual bool postCreateGpuPrograms (ProgramSet *programSet)=0
 Called after creation of the GPU programs.
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
void * operator new (size_t sz)
void * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr, const char *, int, const char *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, const char *, int, const char *)

Protected Types

typedef vector< MergeParameter >
::type 
MergeParameterList
typedef vector
< MergeCombination >::type 
MergeCombinationList
typedef vector< Operand * >::type OperandPtrVector
typedef map< Parameter
*, OperandPtrVector >::type 
ParameterOperandMap
typedef map< Parameter
*, ParameterPtr >::type 
LocalParameterMap

Protected Member Functions

void buildMergeCombinations ()
 Build parameter merging combinations.
virtual bool compactVsOutputs (Function *vsMain, Function *fsMain)
 Compact the vertex shader output registers.
void countVsTexcoordOutputs (Function *vsMain, int &outTexCoordSlots, int &outTexCoordFloats)
 Internal method that counts vertex shader texcoord output slots and output floats.
void buildTexcoordTable (const ShaderParameterList &paramList, ShaderParameterList outParamsTable[4])
 Internal function that builds parameters table.
void mergeParameters (ShaderParameterList paramsTable[4], MergeParameterList &mergedParams, ShaderParameterList &splitParams)
 Merge the parameters from the given table.
void mergeParametersByPredefinedCombinations (ShaderParameterList paramsTable[4], MergeParameterList &mergedParams)
 Internal function that creates merged parameter using pre defined combinations.
bool mergeParametersByCombination (const MergeCombination &combination, ShaderParameterList paramsTable[4], MergeParameter *mergedParameter)
 Internal function that creates merged parameter from given combination.
void mergeParametersReminders (ShaderParameterList paramsTable[4], MergeParameterList &mergedParams, ShaderParameterList &splitParams)
 Merge reminders parameters that could not be merged into one slot using the predefined combinations.
void generateLocalSplitParameters (Function *func, GpuProgramType progType, MergeParameterList &mergedParams, ShaderParameterList &splitParams, LocalParameterMap &localParamsMap)
 Generates local parameters for the split parameters and perform packing/unpacking operation using them.
void rebuildParameterList (Function *func, int paramsUsage, MergeParameterList &mergedParams)
 Rebuild the given parameters list using the merged parameters.
void rebuildFunctionInvocations (FunctionAtomInstanceList &funcAtomList, MergeParameterList &mergedParams, LocalParameterMap &localParamsMap)
 Rebuild function invocations by replacing references to old source parameters with the matching merged parameters components.
void buildParameterReferenceMap (FunctionAtomInstanceList &funcAtomList, ParameterOperandMap &paramsRefMap)
 Builds a map between parameter and all the references to it.
void replaceParametersReferences (MergeParameterList &mergedParams, ParameterOperandMap &paramsRefMap)
 Replace references to old parameters with the new merged parameters.
void replaceSplitParametersReferences (LocalParameterMap &localParamsMap, ParameterOperandMap &paramsRefMap)
 Replace references to old parameters that have been split with the new local parameters that represents them.
void bindAutoParameters (Program *pCpuProgram, GpuProgramPtr pGpuProgram)
 Bind the auto parameters for a given CPU and GPU program set.

Static Protected Member Functions

static int getParameterFloatCount (GpuConstantType type)
 Return number of floats needed by the given type.
static int getParameterMaskByType (GpuConstantType type)
 Return the parameter mask of by the given parameter type (I.E: X|Y for FLOAT2 etc.
static int getParameterMaskByFloatCount (int floatCount)
 Return the parameter mask of by the float count type (I.E: X|Y for 2 etc.

Protected Attributes

MergeCombinationList mParamMergeCombinations
int mMaxTexCoordSlots
int mMaxTexCoordFloats
std::map< Function *, String * > mFunctionMap

Detailed Description

A class that provides extra processing services on CPU based programs.

The base class perform only the generic processing. In order to provide target language specific services and optimization one should derive from this class and register its factory via the ProgramManager instance.

Definition at line 49 of file OgreShaderProgramProcessor.h.


Member Typedef Documentation

Definition at line 162 of file OgreShaderProgramProcessor.h.

Definition at line 157 of file OgreShaderProgramProcessor.h.

Definition at line 130 of file OgreShaderProgramProcessor.h.

Definition at line 160 of file OgreShaderProgramProcessor.h.

Definition at line 161 of file OgreShaderProgramProcessor.h.


Constructor & Destructor Documentation

Ogre::RTShader::ProgramProcessor::ProgramProcessor (  ) 

Class constructor.

Parameters:
type The type of this program.
virtual Ogre::RTShader::ProgramProcessor::~ProgramProcessor (  )  [virtual]

Class destructor.


Member Function Documentation

void Ogre::RTShader::ProgramProcessor::bindAutoParameters ( Program pCpuProgram,
GpuProgramPtr  pGpuProgram 
) [protected]

Bind the auto parameters for a given CPU and GPU program set.

void Ogre::RTShader::ProgramProcessor::buildMergeCombinations (  )  [protected]

Build parameter merging combinations.

void Ogre::RTShader::ProgramProcessor::buildParameterReferenceMap ( FunctionAtomInstanceList funcAtomList,
ParameterOperandMap paramsRefMap 
) [protected]

Builds a map between parameter and all the references to it.

void Ogre::RTShader::ProgramProcessor::buildTexcoordTable ( const ShaderParameterList paramList,
ShaderParameterList  outParamsTable[4] 
) [protected]

Internal function that builds parameters table.

Parameters:
paramList The parameter list.
outParamsTable Will hold the texcoord params sorted by types in each row.
virtual bool Ogre::RTShader::ProgramProcessor::compactVsOutputs ( Function vsMain,
Function fsMain 
) [protected, virtual]

Compact the vertex shader output registers.

Parameters:
vsMain The vertex shader entry function.
fsMain The fragment shader entry function. Return true on success.
void Ogre::RTShader::ProgramProcessor::countVsTexcoordOutputs ( Function vsMain,
int &  outTexCoordSlots,
int &  outTexCoordFloats 
) [protected]

Internal method that counts vertex shader texcoord output slots and output floats.

Parameters:
vsMain The vertex shader entry function.
outTexCoordSlots Will hold the number of used output texcoord slots.
outTexCoordFloats Will hold the total number of floats used by output texcoord slots.
void Ogre::RTShader::ProgramProcessor::generateLocalSplitParameters ( Function func,
GpuProgramType  progType,
MergeParameterList mergedParams,
ShaderParameterList splitParams,
LocalParameterMap localParamsMap 
) [protected]

Generates local parameters for the split parameters and perform packing/unpacking operation using them.

static int Ogre::RTShader::ProgramProcessor::getParameterFloatCount ( GpuConstantType  type  )  [static, protected]

Return number of floats needed by the given type.

static int Ogre::RTShader::ProgramProcessor::getParameterMaskByFloatCount ( int  floatCount  )  [static, protected]

Return the parameter mask of by the float count type (I.E: X|Y for 2 etc.

.)

static int Ogre::RTShader::ProgramProcessor::getParameterMaskByType ( GpuConstantType  type  )  [static, protected]

Return the parameter mask of by the given parameter type (I.E: X|Y for FLOAT2 etc.

.)

virtual const String& Ogre::RTShader::ProgramProcessor::getTargetLanguage (  )  const [pure virtual]
void Ogre::RTShader::ProgramProcessor::mergeParameters ( ShaderParameterList  paramsTable[4],
MergeParameterList mergedParams,
ShaderParameterList splitParams 
) [protected]

Merge the parameters from the given table.

Parameters:
paramsTable Source parameters table.
mergedParams Will hold the merged parameters list.
bool Ogre::RTShader::ProgramProcessor::mergeParametersByCombination ( const MergeCombination combination,
ShaderParameterList  paramsTable[4],
MergeParameter mergedParameter 
) [protected]

Internal function that creates merged parameter from given combination.

Parameters:
combination The merge combination to try.
paramsTable The params table sorted by types in each row.
mergedParameter Will hold the merged parameter.
void Ogre::RTShader::ProgramProcessor::mergeParametersByPredefinedCombinations ( ShaderParameterList  paramsTable[4],
MergeParameterList mergedParams 
) [protected]

Internal function that creates merged parameter using pre defined combinations.

Parameters:
paramsTable Source parameters table.
mergedParams The merged parameters list.
void Ogre::RTShader::ProgramProcessor::mergeParametersReminders ( ShaderParameterList  paramsTable[4],
MergeParameterList mergedParams,
ShaderParameterList splitParams 
) [protected]

Merge reminders parameters that could not be merged into one slot using the predefined combinations.

Parameters:
paramsTable The params table sorted by types in each row.
mergedParams The merged parameters list.
splitParams The split parameters list.
template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 107 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
) [inherited]

Definition at line 101 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr  )  [inherited]

Definition at line 95 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 118 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr  )  [inherited]

Definition at line 112 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
) [inherited]

placement operator new

Definition at line 78 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz  )  [inherited]

Definition at line 72 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

operator new, with debug line info

Definition at line 67 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz  )  [inherited]

Definition at line 90 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

array operator new, with debug line info

Definition at line 85 of file OgreMemoryAllocatedObject.h.

virtual bool Ogre::RTShader::ProgramProcessor::postCreateGpuPrograms ( ProgramSet programSet  )  [pure virtual]

Called after creation of the GPU programs.

Parameters:
programSet The program set container. Return true on success.

Implemented in Ogre::RTShader::CGProgramProcessor, Ogre::RTShader::GLSLESProgramProcessor, Ogre::RTShader::GLSLProgramProcessor, and Ogre::RTShader::HLSLProgramProcessor.

virtual bool Ogre::RTShader::ProgramProcessor::preCreateGpuPrograms ( ProgramSet programSet  )  [pure virtual]

Called before creation of the GPU programs.

Do several preparation operation such as validation, register compaction and specific target language optimizations.

Parameters:
programSet The program set container. Return true on success.

Implemented in Ogre::RTShader::CGProgramProcessor, Ogre::RTShader::GLSLESProgramProcessor, Ogre::RTShader::GLSLProgramProcessor, and Ogre::RTShader::HLSLProgramProcessor.

void Ogre::RTShader::ProgramProcessor::rebuildFunctionInvocations ( FunctionAtomInstanceList funcAtomList,
MergeParameterList mergedParams,
LocalParameterMap localParamsMap 
) [protected]

Rebuild function invocations by replacing references to old source parameters with the matching merged parameters components.

void Ogre::RTShader::ProgramProcessor::rebuildParameterList ( Function func,
int  paramsUsage,
MergeParameterList mergedParams 
) [protected]

Rebuild the given parameters list using the merged parameters.

void Ogre::RTShader::ProgramProcessor::replaceParametersReferences ( MergeParameterList mergedParams,
ParameterOperandMap paramsRefMap 
) [protected]

Replace references to old parameters with the new merged parameters.

void Ogre::RTShader::ProgramProcessor::replaceSplitParametersReferences ( LocalParameterMap localParamsMap,
ParameterOperandMap paramsRefMap 
) [protected]

Replace references to old parameters that have been split with the new local parameters that represents them.


Member Data Documentation

Definition at line 254 of file OgreShaderProgramProcessor.h.

Definition at line 253 of file OgreShaderProgramProcessor.h.

Definition at line 252 of file OgreShaderProgramProcessor.h.

Definition at line 251 of file OgreShaderProgramProcessor.h.


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

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Fri May 25 23:43:07 2012