OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::RTShader::ShaderGenerator Class Reference

Shader generator system main interface. More...

#include <OgreShaderGenerator.h>

+ Inheritance diagram for Ogre::RTShader::ShaderGenerator:
+ Collaboration diagram for Ogre::RTShader::ShaderGenerator:

Classes

struct  MatGroupPair_less
 
class  SGMaterial
 Shader generator material wrapper class. More...
 
class  SGPass
 Shader generator pass wrapper class. More...
 
class  SGRenderObjectListener
 Shader generator RenderObjectListener sub class. More...
 
class  SGSceneManagerListener
 Shader generator scene manager sub class. More...
 
class  SGScheme
 Shader generator scheme class. More...
 
class  SGScriptTranslatorManager
 Shader generator ScriptTranslatorManager sub class. More...
 
class  SGTechnique
 Shader generator technique wrapper class. More...
 

Public Types

typedef std::pair< RenderState
*, bool > 
RenderStateCreateOrRetrieveResult
 

Public Member Functions

void _setActiveSceneManager (SceneManager *sceneManager)
 Set the active scene manager against which new render states are compiled. More...
 
void addSceneManager (SceneManager *sceneMgr)
 Add a scene manager to the shader generator scene managers list. More...
 
void addSubRenderStateFactory (SubRenderStateFactory *factory)
 Add sub render state factory. More...
 
bool cloneShaderBasedTechniques (const String &srcMaterialName, const String &srcGroupName, const String &dstMaterialName, const String &dstGroupName)
 Clone all shader based techniques from one material to another. More...
 
RenderStateCreateOrRetrieveResult createOrRetrieveRenderState (const String &schemeName)
 Returns a requested render state. More...
 
void createScheme (const String &schemeName)
 Create a scheme. More...
 
bool createShaderBasedTechnique (const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName, bool overProgrammable=false)
 Create shader based technique from a given technique. More...
 
bool createShaderBasedTechnique (const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName, bool overProgrammable=false)
 Create shader based technique from a given technique. More...
 
SubRenderStatecreateSubRenderState (const String &type)
 Create an instance of sub render state from a given type. More...
 
void destroySubRenderState (SubRenderState *subRenderState)
 Destroy an instance of sub render state. More...
 
void flushShaderCache ()
 Flush the shader cache. More...
 
SceneManagergetActiveSceneManager ()
 Get the active scene manager that is doint the actual scene rendering. More...
 
bool getCreateShaderOverProgrammablePass () const
 Returns whether shaders are created for passes with shaders. More...
 
size_t getFragmentShaderCount () const
 Return the current number of generated fragment shaders. More...
 
const StringgetFragmentShaderProfiles () const
 Get the output fragment shader target profiles. More...
 
const StringVectorgetFragmentShaderProfilesList () const
 Get the output fragment shader target profiles as list of strings. More...
 
SGMaterialSerializerListenergetMaterialSerializerListener ()
 Return custom material Serializer of the shader generator. More...
 
size_t getNumSubRenderStateFactories () const
 Returns the number of existing factories. More...
 
RenderStategetRenderState (const String &schemeName)
 Return a global render state associated with the given scheme name. More...
 
RenderStategetRenderState (const String &schemeName, const String &materialName, unsigned short passIndex)
 Get render state of specific pass. More...
 
RenderStategetRenderState (const String &schemeName, const String &materialName, const String &groupName, unsigned short passIndex)
 Get render state of specific pass. More...
 
const StringgetRTShaderScheme (size_t index) const
 Returns the scheme name used in the for RT shader generation by index. More...
 
size_t getRTShaderSchemeCount () const
 Returns the amount of schemes used in the for RT shader generation. More...
 
const StringgetShaderCachePath () const
 Get the output shader cache path. More...
 
SubRenderStateFactorygetSubRenderStateFactory (size_t index)
 Returns a sub render state factory by index. More...
 
SubRenderStateFactorygetSubRenderStateFactory (const String &type)
 Returns a sub render state factory by name. More...
 
const StringgetTargetLanguage () const
 Return the target shader language currently in use. More...
 
float getTargetLanguageVersion () const
 Return the target shader language version currently in use. More...
 
size_t getVertexShaderCount () const
 Return the current number of generated vertex shaders. More...
 
VSOutputCompactPolicy getVertexShaderOutputsCompactPolicy () const
 Get the vertex shader outputs compaction policy. More...
 
const StringgetVertexShaderProfiles () const
 Get the output vertex shader target profiles. More...
 
const StringVectorgetVertexShaderProfilesList () const
 Get the output vertex shader target profiles as list of strings. More...
 
bool hasRenderState (const String &schemeName) const
 Tells if a given render state exists. More...
 
bool hasShaderBasedTechnique (const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName) const
 Checks if a shader based technique has been created for a given technique. More...
 
bool hasShaderBasedTechnique (const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName) const
 Checks if a shader based technique has been created for a given technique. More...
 
void invalidateMaterial (const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
 Invalidate specific material scheme. More...
 
void invalidateScheme (const String &schemeName)
 Invalidate a given scheme. More...
 
bool IsHlsl4 () const
 Return if hlsl 4.0 shading language is currently in use. More...
 
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 *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
bool removeAllShaderBasedTechniques (const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
 Remove all shader based techniques of the given material. More...
 
void removeAllShaderBasedTechniques ()
 Remove all shader based techniques that created by this shader generator. More...
 
void removeSceneManager (SceneManager *sceneMgr)
 Remove a scene manager from the shader generator scene managers list. More...
 
bool removeShaderBasedTechnique (const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
 Remove shader based technique from a given technique. More...
 
bool removeShaderBasedTechnique (const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
 Remove shader based technique from a given technique. More...
 
void removeSubRenderStateFactory (SubRenderStateFactory *factory)
 Remove sub render state factory. More...
 
void setCreateShaderOverProgrammablePass (bool value)
 Sets whether shaders are created for passes with shaders. More...
 
void setFragmentShaderProfiles (const String &fragmentShaderProfiles)
 Set the output fragment shader target profiles. More...
 
void setShaderCachePath (const String &cachePath)
 Set the output shader cache path. More...
 
void setTargetLanguage (const String &shaderLanguage, const float version=1.0)
 Set the target shader language. More...
 
void setVertexShaderOutputsCompactPolicy (VSOutputCompactPolicy policy)
 Set the vertex shader outputs compaction policy. More...
 
void setVertexShaderProfiles (const String &vertexShaderProfiles)
 Set the output vertex shader target profiles. More...
 
bool validateMaterial (const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
 Validate specific material scheme. More...
 
bool validateScheme (const String &schemeName)
 Validate a given scheme. More...
 

Static Public Member Functions

static void destroy ()
 Destroy the Shader Generator instance. More...
 
static ShaderGeneratorgetSingleton ()
 Override standard Singleton retrieval. More...
 
static ShaderGeneratorgetSingletonPtr ()
 Override standard Singleton retrieval. More...
 
static bool initialize ()
 Initialize the Shader Generator System. More...
 

Static Public Attributes

static String DEFAULT_SCHEME_NAME
 Default material scheme of the shader generator. More...
 

Protected Types

typedef std::pair< String, StringMatGroupPair
 
typedef
SceneManagerMap::const_iterator 
SceneManagerConstIterator
 
typedef SceneManagerMap::iterator SceneManagerIterator
 
typedef map< String,
SceneManager * >::type 
SceneManagerMap
 
typedef std::pair< SGScheme
*, bool > 
SchemeCreateOrRetrieveResult
 
typedef
SGMaterialMap::const_iterator 
SGMaterialConstIterator
 
typedef SGMaterialMap::iterator SGMaterialIterator
 
typedef map< MatGroupPair,
SGMaterial
*, MatGroupPair_less >::type 
SGMaterialMap
 
typedef SGPassList::const_iterator SGPassConstIterator
 
typedef SGPassList::iterator SGPassIterator
 
typedef vector< SGPass * >::type SGPassList
 
typedef SGSchemeMap::const_iterator SGSchemeConstIterator
 
typedef SGSchemeMap::iterator SGSchemeIterator
 
typedef map< String, SGScheme * >
::type 
SGSchemeMap
 
typedef
SGScriptTranslatorMap::const_iterator 
SGScriptTranslatorConstIterator
 
typedef
SGScriptTranslatorMap::iterator 
SGScriptTranslatorIterator
 
typedef map< String,
ScriptTranslator * >::type 
SGScriptTranslatorMap
 
typedef
SGTechniqueList::const_iterator 
SGTechniqueConstIterator
 
typedef SGTechniqueList::iterator SGTechniqueIterator
 
typedef vector< SGTechnique * >
::type 
SGTechniqueList
 
typedef map< SGTechnique
*, SGTechnique * >::type 
SGTechniqueMap
 
typedef SGTechniqueMap::iterator SGTechniqueMapIterator
 
typedef
SubRenderStateFactoryMap::const_iterator 
SubRenderStateFactoryConstIterator
 
typedef
SubRenderStateFactoryMap::iterator 
SubRenderStateFactoryIterator
 
typedef map< String,
SubRenderStateFactory * >
::type 
SubRenderStateFactoryMap
 

Protected Member Functions

 ShaderGenerator ()
 Class default constructor. More...
 
 ~ShaderGenerator ()
 Class destructor. More...
 
void _destroy ()
 Destory the shader generator instance. More...
 
bool _initialize ()
 Initialize the shader generator instance. More...
 
bool addCustomScriptTranslator (const String &key, ScriptTranslator *translator)
 Add custom script translator. More...
 
SchemeCreateOrRetrieveResult createOrRetrieveScheme (const String &schemeName)
 Returns a requested scheme. More...
 
SubRenderStatecreateSubRenderState (ScriptCompiler *compiler, PropertyAbstractNode *prop, Pass *pass, SGScriptTranslator *translator)
 Create an instance of the SubRenderState based on script properties using the current sub render state factories. More...
 
SubRenderStatecreateSubRenderState (ScriptCompiler *compiler, PropertyAbstractNode *prop, TextureUnitState *texState, SGScriptTranslator *translator)
 Create an instance of the SubRenderState based on script properties using the current sub render state factories. More...
 
void createSubRenderStateExFactories ()
 Create sub render state core extensions factories. More...
 
void destroySubRenderStateExFactories ()
 Destroy sub render state core extensions factories. More...
 
SGMaterialIterator findMaterialEntryIt (const String &materialName, const String &groupName)
 Finds an entry iterator in the mMaterialEntriesMap map. More...
 
SGMaterialConstIterator findMaterialEntryIt (const String &materialName, const String &groupName) const
 
TechniquefindSourceTechnique (const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, bool allowProgrammable)
 Find source technique to generate shader based technique based on it. More...
 
bool getIsFinalizing () const
 Used to check if finalizing. More...
 
size_t getNumTranslators () const
 Return number of script translators. More...
 
ScriptTranslatorgetTranslator (const AbstractNodePtr &node)
 Return a matching script translator. More...
 
bool isProgrammable (Technique *tech) const
 Checks if a given technique has passes with shaders. More...
 
void notifyRenderSingleObject (Renderable *rend, const Pass *pass, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)
 Called from the sub class of the RenderObjectLister when single object is rendered. More...
 
void preFindVisibleObjects (SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
 Called from the sub class of the SceneManager::Listener when finding visible object process starts. More...
 
bool removeCustomScriptTranslator (const String &key)
 Remove custom script translator. More...
 
void serializePassAttributes (MaterialSerializer *ser, SGPass *passEntry)
 This method called by instance of SGMaterialSerializerListener and serialize a given pass entry attributes. More...
 
void serializeTextureUnitStateAttributes (MaterialSerializer *ser, SGPass *passEntry, const TextureUnitState *srcTextureUnit)
 This method called by instance of SGMaterialSerializerListener and serialize a given textureUnitState entry attributes. More...
 

Protected Attributes

SceneManagermActiveSceneMgr
 
bool mActiveViewportValid
 
SGScriptTranslator mCoreScriptTranslator
 
bool mCreateShaderOverProgrammablePass
 
FFPRenderStateBuildermFFPRenderStateBuilder
 
String mFragmentShaderProfiles
 
StringVector mFragmentShaderProfilesList
 
FileSystemLayermFSLayer
 
bool mIsFinalizing
 
int mLightCount [3]
 
SGMaterialMap mMaterialEntriesMap
 
SGMaterialSerializerListenermMaterialSerializerListener
 
ProgramManagermProgramManager
 
ProgramWriterManagermProgramWriterManager
 
SGRenderObjectListenermRenderObjectListener
 
SGSceneManagerListenermSceneManagerListener
 
SceneManagerMap mSceneManagerMap
 
SGSchemeMap mSchemeEntriesMap
 
SGScriptTranslatorManagermScriptTranslatorManager
 
SGScriptTranslatorMap mScriptTranslatorsMap
 
String mShaderCachePath
 
String mShaderLanguage
 
float mShaderLanguageVersion
 
SubRenderStateFactoryMap mSubRenderStateExFactories
 
SubRenderStateFactoryMap mSubRenderStateFactories
 
SGTechniqueMap mTechniqueEntriesMap
 
String mVertexShaderProfiles
 
StringVector mVertexShaderProfilesList
 
VSOutputCompactPolicy mVSOutputCompactPolicy
 
 OGRE_AUTO_MUTEX
 

Static Protected Attributes

static ShaderGeneratormsSingleton
 

Friends

class FFPRenderStateBuilder
 
class SGMaterialSerializerListener
 
class SGPass
 
class SGScriptTranslator
 
class SGScriptTranslatorManager
 

Detailed Description

Shader generator system main interface.

This singleton based class enables automatic generation of shader code based on existing material techniques.

Definition at line 55 of file OgreShaderGenerator.h.

Member Typedef Documentation

Definition at line 489 of file OgreShaderGenerator.h.

typedef SceneManagerMap::const_iterator Ogre::RTShader::ShaderGenerator::SceneManagerConstIterator
protected

Definition at line 862 of file OgreShaderGenerator.h.

typedef SceneManagerMap::iterator Ogre::RTShader::ShaderGenerator::SceneManagerIterator
protected

Definition at line 861 of file OgreShaderGenerator.h.

Definition at line 860 of file OgreShaderGenerator.h.

Definition at line 960 of file OgreShaderGenerator.h.

typedef SGMaterialMap::const_iterator Ogre::RTShader::ShaderGenerator::SGMaterialConstIterator
protected

Definition at line 515 of file OgreShaderGenerator.h.

typedef SGMaterialMap::iterator Ogre::RTShader::ShaderGenerator::SGMaterialIterator
protected

Definition at line 514 of file OgreShaderGenerator.h.

typedef SGPassList::const_iterator Ogre::RTShader::ShaderGenerator::SGPassConstIterator
protected

Definition at line 504 of file OgreShaderGenerator.h.

typedef SGPassList::iterator Ogre::RTShader::ShaderGenerator::SGPassIterator
protected

Definition at line 503 of file OgreShaderGenerator.h.

Definition at line 502 of file OgreShaderGenerator.h.

typedef SGSchemeMap::const_iterator Ogre::RTShader::ShaderGenerator::SGSchemeConstIterator
protected

Definition at line 519 of file OgreShaderGenerator.h.

typedef SGSchemeMap::iterator Ogre::RTShader::ShaderGenerator::SGSchemeIterator
protected

Definition at line 518 of file OgreShaderGenerator.h.

Definition at line 517 of file OgreShaderGenerator.h.

typedef SGScriptTranslatorMap::const_iterator Ogre::RTShader::ShaderGenerator::SGScriptTranslatorConstIterator
protected

Definition at line 523 of file OgreShaderGenerator.h.

typedef SGScriptTranslatorMap::iterator Ogre::RTShader::ShaderGenerator::SGScriptTranslatorIterator
protected

Definition at line 522 of file OgreShaderGenerator.h.

typedef SGTechniqueList::const_iterator Ogre::RTShader::ShaderGenerator::SGTechniqueConstIterator
protected

Definition at line 508 of file OgreShaderGenerator.h.

typedef SGTechniqueList::iterator Ogre::RTShader::ShaderGenerator::SGTechniqueIterator
protected

Definition at line 507 of file OgreShaderGenerator.h.

Definition at line 506 of file OgreShaderGenerator.h.

typedef SGTechniqueMap::iterator Ogre::RTShader::ShaderGenerator::SGTechniqueMapIterator
protected

Definition at line 511 of file OgreShaderGenerator.h.

typedef SubRenderStateFactoryMap::const_iterator Ogre::RTShader::ShaderGenerator::SubRenderStateFactoryConstIterator
protected

Definition at line 857 of file OgreShaderGenerator.h.

typedef SubRenderStateFactoryMap::iterator Ogre::RTShader::ShaderGenerator::SubRenderStateFactoryIterator
protected

Definition at line 856 of file OgreShaderGenerator.h.

Constructor & Destructor Documentation

Ogre::RTShader::ShaderGenerator::ShaderGenerator ( )
protected

Class default constructor.

Ogre::RTShader::ShaderGenerator::~ShaderGenerator ( )
protected

Class destructor.

Member Function Documentation

void Ogre::RTShader::ShaderGenerator::_destroy ( )
protected

Destory the shader generator instance.

bool Ogre::RTShader::ShaderGenerator::_initialize ( )
protected

Initialize the shader generator instance.

void Ogre::RTShader::ShaderGenerator::_setActiveSceneManager ( SceneManager sceneManager)

Set the active scene manager against which new render states are compiled.

Note that normally the setting of the active scene manager is updated through the preFindVisibleObjects method.

bool Ogre::RTShader::ShaderGenerator::addCustomScriptTranslator ( const String key,
ScriptTranslator translator 
)
protected

Add custom script translator.

Return true upon success.

Parameters
keyThe key name of the given translator.
translatorThe translator to associate with the given key.
void Ogre::RTShader::ShaderGenerator::addSceneManager ( SceneManager sceneMgr)

Add a scene manager to the shader generator scene managers list.

Parameters
sceneMgrThe scene manager to add to the list.
void Ogre::RTShader::ShaderGenerator::addSubRenderStateFactory ( SubRenderStateFactory factory)

Add sub render state factory.

Plugins or 3d party applications may implement sub classes of SubRenderState interface. Add the matching factory will allow the application to create instances of these sub classes.

Parameters
factoryThe factory to add.
bool Ogre::RTShader::ShaderGenerator::cloneShaderBasedTechniques ( const String srcMaterialName,
const String srcGroupName,
const String dstMaterialName,
const String dstGroupName 
)

Clone all shader based techniques from one material to another.

This function can be used in conjunction with the Material::clone() function to copy both material properties and RTSS state from one material to another.

Parameters
srcMaterialNameThe source material name.
srcGroupNameThe source group name.
dstMaterialNameThe destination material name.
dstGroupNameThe destination group name.
Returns
True if successful
RenderStateCreateOrRetrieveResult Ogre::RTShader::ShaderGenerator::createOrRetrieveRenderState ( const String schemeName)

Returns a requested render state.

If the render state does not exist this function creates it.

Parameters
schemeNameThe scheme name to retrieve.
SchemeCreateOrRetrieveResult Ogre::RTShader::ShaderGenerator::createOrRetrieveScheme ( const String schemeName)
protected

Returns a requested scheme.

If the scheme does not exist this function creates it.

Parameters
schemeNameThe scheme name to retrieve.
void Ogre::RTShader::ShaderGenerator::createScheme ( const String schemeName)

Create a scheme.

Parameters
schemeNameThe scheme name to create.
bool Ogre::RTShader::ShaderGenerator::createShaderBasedTechnique ( const String materialName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName,
bool  overProgrammable = false 
)

Create shader based technique from a given technique.

Return true upon success. Failure may occur if the source technique is not FFP pure, or different source technique is mapped to the requested destination scheme.

Parameters
materialNameThe source material name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
overProgrammableIf true a shader will be created even if the material has shaders
bool Ogre::RTShader::ShaderGenerator::createShaderBasedTechnique ( const String materialName,
const String groupName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName,
bool  overProgrammable = false 
)

Create shader based technique from a given technique.

Return true upon success. Failure may occur if the source technique is not FFP pure, or different source technique is mapped to the requested destination scheme.

Parameters
materialNameThe source material name.
groupNameThe source group name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
overProgrammableIf true a shader will be created even if the material has shaders
SubRenderState* Ogre::RTShader::ShaderGenerator::createSubRenderState ( const String type)

Create an instance of sub render state from a given type.

Parameters
typeThe type of sub render state to create.
SubRenderState* Ogre::RTShader::ShaderGenerator::createSubRenderState ( ScriptCompiler compiler,
PropertyAbstractNode prop,
Pass pass,
SGScriptTranslator translator 
)
protected

Create an instance of the SubRenderState based on script properties using the current sub render state factories.

See also
SubRenderStateFactory::createInstance
Parameters
compilerThe compiler instance.
propThe abstract property node.
passThe pass that is the parent context of this node.
translatorThe translator for the specific SubRenderState
SubRenderState* Ogre::RTShader::ShaderGenerator::createSubRenderState ( ScriptCompiler compiler,
PropertyAbstractNode prop,
TextureUnitState texState,
SGScriptTranslator translator 
)
protected

Create an instance of the SubRenderState based on script properties using the current sub render state factories.

See also
SubRenderStateFactory::createInstance
Parameters
compilerThe compiler instance.
propThe abstract property node.
texStateThe texture unit state that is the parent context of this node.
translatorThe translator for the specific SubRenderState
void Ogre::RTShader::ShaderGenerator::createSubRenderStateExFactories ( )
protected

Create sub render state core extensions factories.

static void Ogre::RTShader::ShaderGenerator::destroy ( )
static

Destroy the Shader Generator instance.

void Ogre::RTShader::ShaderGenerator::destroySubRenderState ( SubRenderState subRenderState)

Destroy an instance of sub render state.

Parameters
subRenderStateThe instance to destroy.
void Ogre::RTShader::ShaderGenerator::destroySubRenderStateExFactories ( )
protected

Destroy sub render state core extensions factories.

SGMaterialIterator Ogre::RTShader::ShaderGenerator::findMaterialEntryIt ( const String materialName,
const String groupName 
)
protected

Finds an entry iterator in the mMaterialEntriesMap map.

This function is able to find materials with group specified as AUTODETECT_RESOURCE_GROUP_NAME

SGMaterialConstIterator Ogre::RTShader::ShaderGenerator::findMaterialEntryIt ( const String materialName,
const String groupName 
) const
protected
Technique* Ogre::RTShader::ShaderGenerator::findSourceTechnique ( const String materialName,
const String groupName,
const String srcTechniqueSchemeName,
bool  allowProgrammable 
)
protected

Find source technique to generate shader based technique based on it.

void Ogre::RTShader::ShaderGenerator::flushShaderCache ( )

Flush the shader cache.

This operation will cause all active sachems to be invalidated and will destroy any CPU/GPU program that created by this shader generator.

SceneManager* Ogre::RTShader::ShaderGenerator::getActiveSceneManager ( )

Get the active scene manager that is doint the actual scene rendering.

This attribute will be update on the call to preFindVisibleObjects.

bool Ogre::RTShader::ShaderGenerator::getCreateShaderOverProgrammablePass ( ) const
inline

Returns whether shaders are created for passes with shaders.

See also
setCreateShaderOverProgrammablePass().

Definition at line 470 of file OgreShaderGenerator.h.

size_t Ogre::RTShader::ShaderGenerator::getFragmentShaderCount ( ) const

Return the current number of generated fragment shaders.

const String& Ogre::RTShader::ShaderGenerator::getFragmentShaderProfiles ( ) const
inline

Get the output fragment shader target profiles.

Definition at line 180 of file OgreShaderGenerator.h.

const StringVector& Ogre::RTShader::ShaderGenerator::getFragmentShaderProfilesList ( ) const
inline

Get the output fragment shader target profiles as list of strings.

Definition at line 185 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::getIsFinalizing ( ) const
protected

Used to check if finalizing.

SGMaterialSerializerListener* Ogre::RTShader::ShaderGenerator::getMaterialSerializerListener ( )

Return custom material Serializer of the shader generator.

This is useful when you'd like to export certain material that contains shader generator effects. I.E - when writing an exporter you may want mark your material as shader generated material so in the next time you will load it by your application it will automatically generate shaders with custom attributes you wanted. To do it you'll have to do the following steps:

  1. Create shader based technique for you material via the createShaderBasedTechnique() method.
  2. Create MaterialSerializer instance.
  3. Add the return instance of serializer listener to the MaterialSerializer.
  4. Call one of the export methods of MaterialSerializer.
size_t Ogre::RTShader::ShaderGenerator::getNumSubRenderStateFactories ( ) const

Returns the number of existing factories.

size_t Ogre::RTShader::ShaderGenerator::getNumTranslators ( ) const
protected

Return number of script translators.

RenderState* Ogre::RTShader::ShaderGenerator::getRenderState ( const String schemeName)

Return a global render state associated with the given scheme name.

Modifying this render state will affect all techniques that belongs to that scheme. This is the best way to apply global changes to all techniques. After altering the render state one should call invalidateScheme method in order to regenerate shaders.

Parameters
schemeNameThe destination scheme name.
RenderState* Ogre::RTShader::ShaderGenerator::getRenderState ( const String schemeName,
const String materialName,
unsigned short  passIndex 
)

Get render state of specific pass.

Using this method allows the user to customize the behavior of a specific pass.

Parameters
schemeNameThe destination scheme name.
materialNameThe specific material name.
passIndexThe pass index.
RenderState* Ogre::RTShader::ShaderGenerator::getRenderState ( const String schemeName,
const String materialName,
const String groupName,
unsigned short  passIndex 
)

Get render state of specific pass.

Using this method allows the user to customize the behavior of a specific pass.

Parameters
schemeNameThe destination scheme name.
materialNameThe specific material name.
groupNameThe specific material name.
passIndexThe pass index.
const String& Ogre::RTShader::ShaderGenerator::getRTShaderScheme ( size_t  index) const

Returns the scheme name used in the for RT shader generation by index.

size_t Ogre::RTShader::ShaderGenerator::getRTShaderSchemeCount ( ) const

Returns the amount of schemes used in the for RT shader generation.

const String& Ogre::RTShader::ShaderGenerator::getShaderCachePath ( ) const
inline

Get the output shader cache path.

Definition at line 198 of file OgreShaderGenerator.h.

static ShaderGenerator& Ogre::RTShader::ShaderGenerator::getSingleton ( )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.
static ShaderGenerator* Ogre::RTShader::ShaderGenerator::getSingletonPtr ( )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.
SubRenderStateFactory* Ogre::RTShader::ShaderGenerator::getSubRenderStateFactory ( size_t  index)

Returns a sub render state factory by index.

Note
index must be lower than the value returned by getNumSubRenderStateFactories()
SubRenderStateFactory* Ogre::RTShader::ShaderGenerator::getSubRenderStateFactory ( const String type)

Returns a sub render state factory by name.

const String& Ogre::RTShader::ShaderGenerator::getTargetLanguage ( ) const
inline

Return the target shader language currently in use.

Definition at line 147 of file OgreShaderGenerator.h.

float Ogre::RTShader::ShaderGenerator::getTargetLanguageVersion ( ) const
inline

Return the target shader language version currently in use.

Definition at line 152 of file OgreShaderGenerator.h.

ScriptTranslator* Ogre::RTShader::ShaderGenerator::getTranslator ( const AbstractNodePtr node)
protected

Return a matching script translator.

size_t Ogre::RTShader::ShaderGenerator::getVertexShaderCount ( ) const

Return the current number of generated vertex shaders.

VSOutputCompactPolicy Ogre::RTShader::ShaderGenerator::getVertexShaderOutputsCompactPolicy ( ) const
inline

Get the vertex shader outputs compaction policy.

See also
VSOutputCompactPolicy.

Definition at line 457 of file OgreShaderGenerator.h.

const String& Ogre::RTShader::ShaderGenerator::getVertexShaderProfiles ( ) const
inline

Get the output vertex shader target profiles.

Definition at line 163 of file OgreShaderGenerator.h.

const StringVector& Ogre::RTShader::ShaderGenerator::getVertexShaderProfilesList ( ) const
inline

Get the output vertex shader target profiles as list of strings.

Definition at line 168 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::hasRenderState ( const String schemeName) const

Tells if a given render state exists.

Parameters
schemeNameThe scheme name to check.
bool Ogre::RTShader::ShaderGenerator::hasShaderBasedTechnique ( const String materialName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName 
) const

Checks if a shader based technique has been created for a given technique.

Return true if exist. False if not.

Parameters
materialNameThe source material name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
bool Ogre::RTShader::ShaderGenerator::hasShaderBasedTechnique ( const String materialName,
const String groupName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName 
) const

Checks if a shader based technique has been created for a given technique.

Return true if exist. False if not.

Parameters
materialNameThe source material name.
groupNameThe source group name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
static bool Ogre::RTShader::ShaderGenerator::initialize ( )
static

Initialize the Shader Generator System.

Return true upon success.

void Ogre::RTShader::ShaderGenerator::invalidateMaterial ( const String schemeName,
const String materialName,
const String groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME 
)

Invalidate specific material scheme.

This action will lead to shader regeneration of the technique belongs to the given scheme name.

Parameters
schemeNameThe scheme to invalidate.
materialNameThe material to invalidate.
groupNameThe source group name.
void Ogre::RTShader::ShaderGenerator::invalidateScheme ( const String schemeName)

Invalidate a given scheme.

This action will lead to shader regeneration of all techniques belongs to the given scheme name.

Parameters
schemeNameThe scheme to invalidate.
bool Ogre::RTShader::ShaderGenerator::IsHlsl4 ( ) const
inline

Return if hlsl 4.0 shading language is currently in use.

Definition at line 143 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::isProgrammable ( Technique tech) const
protected

Checks if a given technique has passes with shaders.

void Ogre::RTShader::ShaderGenerator::notifyRenderSingleObject ( Renderable rend,
const Pass pass,
const AutoParamDataSource source,
const LightList pLightList,
bool  suppressRenderStateChanges 
)
protected

Called from the sub class of the RenderObjectLister when single object is rendered.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

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

Definition at line 102 of file OgreMemoryAllocatedObject.h.

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

Definition at line 108 of file OgreMemoryAllocatedObject.h.

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

Definition at line 113 of file OgreMemoryAllocatedObject.h.

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

Definition at line 119 of file OgreMemoryAllocatedObject.h.

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

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

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

Definition at line 73 of file OgreMemoryAllocatedObject.h.

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

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

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

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

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

Definition at line 91 of file OgreMemoryAllocatedObject.h.

void Ogre::RTShader::ShaderGenerator::preFindVisibleObjects ( SceneManager source,
SceneManager::IlluminationRenderStage  irs,
Viewport v 
)
protected

Called from the sub class of the SceneManager::Listener when finding visible object process starts.

bool Ogre::RTShader::ShaderGenerator::removeAllShaderBasedTechniques ( const String materialName,
const String groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME 
)

Remove all shader based techniques of the given material.

Return true upon success.

Parameters
materialNameThe source material name.
groupNameThe source group name.
void Ogre::RTShader::ShaderGenerator::removeAllShaderBasedTechniques ( )

Remove all shader based techniques that created by this shader generator.

bool Ogre::RTShader::ShaderGenerator::removeCustomScriptTranslator ( const String key)
protected

Remove custom script translator.

Return true upon success.

Parameters
keyThe key name of the translator to remove.
void Ogre::RTShader::ShaderGenerator::removeSceneManager ( SceneManager sceneMgr)

Remove a scene manager from the shader generator scene managers list.

Parameters
sceneMgrThe scene manager to remove from the list.
bool Ogre::RTShader::ShaderGenerator::removeShaderBasedTechnique ( const String materialName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName 
)

Remove shader based technique from a given technique.

Return true upon success. Failure may occur if the given source technique was not previously registered successfully using the createShaderBasedTechnique method.

Parameters
materialNameThe source material name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
bool Ogre::RTShader::ShaderGenerator::removeShaderBasedTechnique ( const String materialName,
const String groupName,
const String srcTechniqueSchemeName,
const String dstTechniqueSchemeName 
)

Remove shader based technique from a given technique.

Return true upon success. Failure may occur if the given source technique was not previously registered successfully using the createShaderBasedTechnique method.

Parameters
materialNameThe source material name.
groupNameThe source group name.
srcTechniqueSchemeNameThe source technique scheme name.
dstTechniqueSchemeNameThe destination shader based technique scheme name.
void Ogre::RTShader::ShaderGenerator::removeSubRenderStateFactory ( SubRenderStateFactory factory)

Remove sub render state factory.

Parameters
factoryThe factory to remove.
void Ogre::RTShader::ShaderGenerator::serializePassAttributes ( MaterialSerializer ser,
SGPass passEntry 
)
protected

This method called by instance of SGMaterialSerializerListener and serialize a given pass entry attributes.

Parameters
serThe material serializer.
passEntryThe SGPass instance.
void Ogre::RTShader::ShaderGenerator::serializeTextureUnitStateAttributes ( MaterialSerializer ser,
SGPass passEntry,
const TextureUnitState srcTextureUnit 
)
protected

This method called by instance of SGMaterialSerializerListener and serialize a given textureUnitState entry attributes.

Parameters
serThe material serializer.
passEntryThe SGPass instance.
srcTextureUnitThe TextureUnitState being serialized.
void Ogre::RTShader::ShaderGenerator::setCreateShaderOverProgrammablePass ( bool  value)
inline

Sets whether shaders are created for passes with shaders.

Note that this only refers to when the system parses the materials itself. Not for when calling the createShaderBasedTechnique() function directly

Parameters
valueThe value to set this attribute pass.

Definition at line 465 of file OgreShaderGenerator.h.

void Ogre::RTShader::ShaderGenerator::setFragmentShaderProfiles ( const String fragmentShaderProfiles)

Set the output fragment shader target profiles.

Parameters
fragmentShaderProfilesThe target profiles for the fragment shader.
void Ogre::RTShader::ShaderGenerator::setShaderCachePath ( const String cachePath)

Set the output shader cache path.

Generated shader code will be written to this path. In case of empty cache path shaders will be generated directly from system memory.

Parameters
cachePathThe cache path of the shader. The default is empty cache path.
void Ogre::RTShader::ShaderGenerator::setTargetLanguage ( const String shaderLanguage,
const float  version = 1.0 
)

Set the target shader language.

Parameters
shaderLanguageThe output shader language to use.
Remarks
The default shader language is cg.
void Ogre::RTShader::ShaderGenerator::setVertexShaderOutputsCompactPolicy ( VSOutputCompactPolicy  policy)
inline

Set the vertex shader outputs compaction policy.

See also
VSOutputCompactPolicy.
Parameters
policyThe policy to set.

Definition at line 452 of file OgreShaderGenerator.h.

void Ogre::RTShader::ShaderGenerator::setVertexShaderProfiles ( const String vertexShaderProfiles)

Set the output vertex shader target profiles.

Parameters
vertexShaderProfilesThe target profiles for the vertex shader.
bool Ogre::RTShader::ShaderGenerator::validateMaterial ( const String schemeName,
const String materialName,
const String groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME 
)

Validate specific material scheme.

This action will generate shader programs for the technique of the given scheme name.

Parameters
schemeNameThe scheme to validate.
materialNameThe material to validate.
groupNameThe source group name.
bool Ogre::RTShader::ShaderGenerator::validateScheme ( const String schemeName)

Validate a given scheme.

This action will generate shader programs for all techniques of the given scheme name.

Parameters
schemeNameThe scheme to validate.

Friends And Related Function Documentation

friend class FFPRenderStateBuilder
friend

Definition at line 1032 of file OgreShaderGenerator.h.

friend class SGMaterialSerializerListener
friend

Definition at line 1035 of file OgreShaderGenerator.h.

friend class SGPass
friend

Definition at line 1031 of file OgreShaderGenerator.h.

friend class SGScriptTranslator
friend

Definition at line 1034 of file OgreShaderGenerator.h.

friend class SGScriptTranslatorManager
friend

Definition at line 1033 of file OgreShaderGenerator.h.

Member Data Documentation

String Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME
static

Default material scheme of the shader generator.

Definition at line 482 of file OgreShaderGenerator.h.

SceneManager* Ogre::RTShader::ShaderGenerator::mActiveSceneMgr
protected

Definition at line 973 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::mActiveViewportValid
protected

Definition at line 1021 of file OgreShaderGenerator.h.

SGScriptTranslator Ogre::RTShader::ShaderGenerator::mCoreScriptTranslator
protected

Definition at line 987 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::mCreateShaderOverProgrammablePass
protected

Definition at line 1027 of file OgreShaderGenerator.h.

FFPRenderStateBuilder* Ogre::RTShader::ShaderGenerator::mFFPRenderStateBuilder
protected

Definition at line 1009 of file OgreShaderGenerator.h.

String Ogre::RTShader::ShaderGenerator::mFragmentShaderProfiles
protected

Definition at line 997 of file OgreShaderGenerator.h.

StringVector Ogre::RTShader::ShaderGenerator::mFragmentShaderProfilesList
protected

Definition at line 999 of file OgreShaderGenerator.h.

FileSystemLayer* Ogre::RTShader::ShaderGenerator::mFSLayer
protected

Definition at line 1007 of file OgreShaderGenerator.h.

bool Ogre::RTShader::ShaderGenerator::mIsFinalizing
protected

Definition at line 1029 of file OgreShaderGenerator.h.

int Ogre::RTShader::ShaderGenerator::mLightCount[3]
protected

Definition at line 1023 of file OgreShaderGenerator.h.

SGMaterialMap Ogre::RTShader::ShaderGenerator::mMaterialEntriesMap
protected

Definition at line 1011 of file OgreShaderGenerator.h.

SGMaterialSerializerListener* Ogre::RTShader::ShaderGenerator::mMaterialSerializerListener
protected

Definition at line 983 of file OgreShaderGenerator.h.

ProgramManager* Ogre::RTShader::ShaderGenerator::mProgramManager
protected

Definition at line 1003 of file OgreShaderGenerator.h.

ProgramWriterManager* Ogre::RTShader::ShaderGenerator::mProgramWriterManager
protected

Definition at line 1005 of file OgreShaderGenerator.h.

SGRenderObjectListener* Ogre::RTShader::ShaderGenerator::mRenderObjectListener
protected

Definition at line 977 of file OgreShaderGenerator.h.

SGSceneManagerListener* Ogre::RTShader::ShaderGenerator::mSceneManagerListener
protected

Definition at line 979 of file OgreShaderGenerator.h.

SceneManagerMap Ogre::RTShader::ShaderGenerator::mSceneManagerMap
protected

Definition at line 975 of file OgreShaderGenerator.h.

SGSchemeMap Ogre::RTShader::ShaderGenerator::mSchemeEntriesMap
protected

Definition at line 1013 of file OgreShaderGenerator.h.

SGScriptTranslatorManager* Ogre::RTShader::ShaderGenerator::mScriptTranslatorManager
protected

Definition at line 981 of file OgreShaderGenerator.h.

SGScriptTranslatorMap Ogre::RTShader::ShaderGenerator::mScriptTranslatorsMap
protected

Definition at line 985 of file OgreShaderGenerator.h.

String Ogre::RTShader::ShaderGenerator::mShaderCachePath
protected

Definition at line 1001 of file OgreShaderGenerator.h.

String Ogre::RTShader::ShaderGenerator::mShaderLanguage
protected

Definition at line 989 of file OgreShaderGenerator.h.

float Ogre::RTShader::ShaderGenerator::mShaderLanguageVersion
protected

Definition at line 991 of file OgreShaderGenerator.h.

ShaderGenerator * Ogre::Singleton< ShaderGenerator >::msSingleton
staticprotectedinherited

Definition at line 75 of file OgreSingleton.h.

SubRenderStateFactoryMap Ogre::RTShader::ShaderGenerator::mSubRenderStateExFactories
protected

Definition at line 1019 of file OgreShaderGenerator.h.

SubRenderStateFactoryMap Ogre::RTShader::ShaderGenerator::mSubRenderStateFactories
protected

Definition at line 1017 of file OgreShaderGenerator.h.

SGTechniqueMap Ogre::RTShader::ShaderGenerator::mTechniqueEntriesMap
protected

Definition at line 1015 of file OgreShaderGenerator.h.

String Ogre::RTShader::ShaderGenerator::mVertexShaderProfiles
protected

Definition at line 993 of file OgreShaderGenerator.h.

StringVector Ogre::RTShader::ShaderGenerator::mVertexShaderProfilesList
protected

Definition at line 995 of file OgreShaderGenerator.h.

VSOutputCompactPolicy Ogre::RTShader::ShaderGenerator::mVSOutputCompactPolicy
protected

Definition at line 1025 of file OgreShaderGenerator.h.

Ogre::RTShader::ShaderGenerator::OGRE_AUTO_MUTEX
protected

Definition at line 971 of file OgreShaderGenerator.h.


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