OgreShaderGenerator.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org
6 
7 Copyright (c) 2000-2013 Torus Knot Software Ltd
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9 of this software and associated documentation files (the "Software"), to deal
10 in the Software without restriction, including without limitation the rights
11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the Software is
13 furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 THE SOFTWARE.
25 -----------------------------------------------------------------------------
26 */
27 #ifndef _ShaderGenerator_
28 #define _ShaderGenerator_
29 
31 #include "OgreSingleton.h"
32 #include "OgreFileSystemLayer.h"
34 #include "OgreSceneManager.h"
35 #include "OgreShaderRenderState.h"
36 #include "OgreScriptTranslator.h"
38 
39 
40 namespace Ogre {
41 namespace RTShader {
42 
53 class _OgreRTSSExport ShaderGenerator : public Singleton<ShaderGenerator>, public RTShaderSystemAlloc
54 {
55 // Interface.
56 public:
57 
62  static bool initialize();
63 
67  static void destroy();
68 
69 
86 
87 
104 
109  void addSceneManager(SceneManager* sceneMgr);
110 
116 
122 
128  void setTargetLanguage(const String& shaderLanguage);
129 
133  const String& getTargetLanguage() const { return mShaderLanguage; }
134 
139  void setVertexShaderProfiles(const String& vertexShaderProfiles);
140 
144  const String& getVertexShaderProfiles() const { return mVertexShaderProfiles; }
145 
149  const StringVector& getVertexShaderProfilesList() const { return mVertexShaderProfilesList; }
150 
151 
156  void setFragmentShaderProfiles(const String& fragmentShaderProfiles);
157 
161  const String& getFragmentShaderProfiles() const { return mFragmentShaderProfiles; }
162 
166  const StringVector& getFragmentShaderProfilesList() const { return mFragmentShaderProfilesList; }
167 
174  void setShaderCachePath(const String& cachePath);
175 
179  const String& getShaderCachePath() const { return mShaderCachePath; }
180 
186 
195  RenderState* getRenderState(const String& schemeName);
196 
197 
198  typedef std::pair<RenderState*, bool> RenderStateCreateOrRetrieveResult;
204 
205 
210  bool hasRenderState(const String& schemeName) const;
211 
212 
220  RenderState* getRenderState(const String& schemeName, const String& materialName, unsigned short passIndex);
221 
230  RenderState* getRenderState(const String& schemeName, const String& materialName, const String& groupName, unsigned short passIndex);
231 
239 
244 
250 
255 
261 
267 
268 
273  void destroySubRenderState(SubRenderState* subRenderState);
274 
275 
283  bool hasShaderBasedTechnique(const String& materialName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName) const;
284 
293  bool hasShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName) const;
294 
304  bool createShaderBasedTechnique(const String& materialName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName, bool overProgrammable = false);
305 
316  bool createShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName, bool overProgrammable = false);
317 
318 
327  bool removeShaderBasedTechnique(const String& materialName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName);
328 
338  bool removeShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName);
339 
340 
348 
359  bool cloneShaderBasedTechniques(const String& srcMaterialName,
360  const String& srcGroupName, const String& dstMaterialName, const String& dstGroupName);
361 
366 
371  void createScheme(const String& schemeName);
372 
378  void invalidateScheme(const String& schemeName);
379 
385  bool validateScheme(const String& schemeName);
386 
394  void invalidateMaterial(const String& schemeName, const String& materialName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
395 
403  bool validateMaterial(const String& schemeName, const String& materialName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
404 
405 
418 
419 
421  size_t getVertexShaderCount() const;
422 
423 
425  size_t getFragmentShaderCount() const;
426 
427 
428 
433  void setVertexShaderOutputsCompactPolicy(VSOutputCompactPolicy policy) { mVSOutputCompactPolicy = policy; }
434 
438  VSOutputCompactPolicy getVertexShaderOutputsCompactPolicy() const { return mVSOutputCompactPolicy; }
439 
440 
446  void setCreateShaderOverProgrammablePass(bool value) { mCreateShaderOverProgrammablePass = value; }
447 
451  bool getCreateShaderOverProgrammablePass() const { return mCreateShaderOverProgrammablePass; }
452 
453 
456  size_t getRTShaderSchemeCount() const;
457 
460  const String& getRTShaderScheme(size_t index) const;
461 
464 
465 // Protected types.
466 protected:
467  class SGPass;
468  class SGTechnique;
469  class SGMaterial;
470  class SGScheme;
471 
472  typedef std::pair<String,String> MatGroupPair;
474  {
475  // ensure we arrange the list first by material name then by group name
476  bool operator()(const MatGroupPair& p1, const MatGroupPair& p2) const
477  {
478  int cmpVal = strcmp(p1.first.c_str(),p2.first.c_str());
479  return (cmpVal < 0) || ((cmpVal == 0) && (strcmp(p1.second.c_str(),p2.second.c_str()) < 0));
480  }
481  };
482 
484  typedef SGPassList::iterator SGPassIterator;
485  typedef SGPassList::const_iterator SGPassConstIterator;
486 
488  typedef SGTechniqueList::iterator SGTechniqueIterator;
489  typedef SGTechniqueList::const_iterator SGTechniqueConstIterator;
490 
492  typedef SGTechniqueMap::iterator SGTechniqueMapIterator;
493 
495  typedef SGMaterialMap::iterator SGMaterialIterator;
496  typedef SGMaterialMap::const_iterator SGMaterialConstIterator;
497 
499  typedef SGSchemeMap::iterator SGSchemeIterator;
500  typedef SGSchemeMap::const_iterator SGSchemeConstIterator;
501 
503  typedef SGScriptTranslatorMap::iterator SGScriptTranslatorIterator;
504  typedef SGScriptTranslatorMap::const_iterator SGScriptTranslatorConstIterator;
505 
506 
507 
510  {
511  public:
512  SGPass(SGTechnique* parent, Pass* srcPass, Pass* dstPass);
514 
517 
520 
523 
524 
526  void notifyRenderSingleObject(Renderable* rend, const AutoParamDataSource* source, const LightList* pLightList, bool suppressRenderStateChanges);
527 
529  Pass* getSrcPass() { return mSrcPass; }
530 
532  Pass* getDstPass() { return mDstPass; }
533 
536 
538  RenderState* getCustomRenderState() { return mCustomRenderState; }
539 
541  void setCustomRenderState(RenderState* customRenderState) { mCustomRenderState = customRenderState; }
542 
543  // Key name for associating with a Pass instance.
544  static String UserKey;
545 
546  protected:
547  SubRenderState* getCustomFFPSubState(int subStateOrder, const RenderState* renderState);
548 
549  protected:
550  // Parent technique.
552  // Source pass.
554  // Destination pass.
556  // Custom render state.
558  // The compiled render state.
560  };
561 
562 
565  {
566  public:
567  SGTechnique(SGMaterial* parent, Technique* srcTechnique, const String& dstTechniqueSchemeName);
569 
571  const SGMaterial* getParent() const { return mParent; }
572 
574  Technique* getSourceTechnique() { return mSrcTechnique; }
575 
577  Technique* getDestinationTechnique() { return mDstTechnique; }
578 
580  const String& getDestinationTechniqueSchemeName() const { return mDstTechniqueSchemeName; }
581 
584 
587 
590 
592  void setBuildDestinationTechnique(bool buildTechnique) { mBuildDstTechnique = buildTechnique; }
593 
595  bool getBuildDestinationTechnique() const { return mBuildDstTechnique; }
596 
600  RenderState* getRenderState(unsigned short passIndex);
602  bool hasRenderState(unsigned short passIndex);
603 
604  // Key name for associating with a Technique instance.
605  static String UserKey;
606 
607  protected:
608 
611 
614 
615  protected:
616  // Parent material.
618  // Source technique.
620  // Destination technique.
622  // All passes entries.
624  // The custom render states of all passes.
626  // Flag that tells if destination technique should be build.
628  // Scheme name of destination technique.
630  };
631 
632 
635  {
636 
637  public:
639  SGMaterial(const String& materialName, const String& groupName) : mName(materialName), mGroup(groupName)
640  {
641 
642  }
643 
645  const String& getMaterialName() const { return mName; }
646 
648  const String& getGroupName() const { return mGroup; }
649 
651  const SGTechniqueList& getTechniqueList() const { return mTechniqueEntries; }
652 
654  SGTechniqueList& getTechniqueList() { return mTechniqueEntries; }
655 
656  protected:
657  // The material name.
659  // The group name.
661  // All passes entries.
663  };
664 
665 
668  {
669  public:
670  SGScheme(const String& schemeName);
672 
673 
676  bool empty() const { return mTechniqueEntries.empty(); }
677 
681  void invalidate();
682 
686  void validate();
687 
691  void invalidate(const String& materialName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
692 
696  bool validate(const String& materialName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
697 
699  void addTechniqueEntry(SGTechnique* techEntry);
700 
703 
704 
709 
713  RenderState* getRenderState(const String& materialName, const String& groupName, unsigned short passIndex);
714 
715  protected:
718 
721 
722 
723  protected:
724  // Scheme name.
726  // Technique entries.
728  // Tells if this scheme is out of date.
730  // The global render state of this scheme.
732  // Current fog mode.
734  };
735 
736 
737 // Protected types.
738 protected:
739 
742  {
743  public:
745  {
746  mOwner = owner;
747  }
748 
752  virtual void notifyRenderSingleObject(Renderable* rend, const Pass* pass,
753  const AutoParamDataSource* source,
754  const LightList* pLightList, bool suppressRenderStateChanges)
755  {
756  mOwner->notifyRenderSingleObject(rend, pass, source, pLightList, suppressRenderStateChanges);
757  }
758 
759  protected:
761  };
762 
765  {
766  public:
768  {
769  mOwner = owner;
770  }
771 
775  virtual void preFindVisibleObjects(SceneManager* source,
777  {
778  mOwner->preFindVisibleObjects(source, irs, v);
779  }
780 
781  virtual void postFindVisibleObjects(SceneManager* source,
783  {
784 
785  }
786 
787  virtual void shadowTexturesUpdated(size_t numberOfShadowTextures)
788  {
789 
790  }
791 
792  virtual void shadowTextureCasterPreViewProj(Light* light,
793  Camera* camera, size_t iteration)
794  {
795 
796  }
797 
799  Frustum* frustum)
800  {
801 
802  }
803 
804  protected:
805  // The shader generator instance.
807  };
808 
811  {
812  public:
814  {
815  mOwner = owner;
816  }
817 
819  virtual size_t getNumTranslators() const
820  {
821  return mOwner->getNumTranslators();
822  }
823 
826  {
827  return mOwner->getTranslator(node);
828  }
829 
830  protected:
831  // The shader generator instance.
833  };
834 
835  //-----------------------------------------------------------------------------
837  typedef SubRenderStateFactoryMap::iterator SubRenderStateFactoryIterator;
838  typedef SubRenderStateFactoryMap::const_iterator SubRenderStateFactoryConstIterator;
839 
840  //-----------------------------------------------------------------------------
842  typedef SceneManagerMap::iterator SceneManagerIterator;
843  typedef SceneManagerMap::const_iterator SceneManagerConstIterator;
844 
845 protected:
848 
851 
853  bool _initialize();
854 
856  void _destroy();
857 
859  Technique* findSourceTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, bool allowProgrammable);
860 
862  bool isProgrammable(Technique* tech) const;
863 
865  void notifyRenderSingleObject(Renderable* rend, const Pass* pass, const AutoParamDataSource* source, const LightList* pLightList, bool suppressRenderStateChanges);
866 
869 
872 
875 
885 
895 
902  bool addCustomScriptTranslator(const String& key, ScriptTranslator* translator);
903 
910 
912  size_t getNumTranslators() const;
913 
916 
917 
924 
931  void serializeTextureUnitStateAttributes(MaterialSerializer* ser, SGPass* passEntry, const TextureUnitState* srcTextureUnit);
932 
937  SGMaterialIterator findMaterialEntryIt(const String& materialName, const String& groupName);
938  SGMaterialConstIterator findMaterialEntryIt(const String& materialName, const String& groupName) const;
939 
940 
941  typedef std::pair<SGScheme*, bool> SchemeCreateOrRetrieveResult;
947 
949  bool getIsFinalizing() const;
950 protected:
951  // Auto mutex.
953  // The active scene manager.
955  // A map of all scene managers this generator is bound to.
957  // Render object listener.
959  // Scene manager listener.
961  // Script translator manager.
963  // Custom material Serializer listener - allows exporting material that contains shader generated techniques.
965  // A map of the registered custom script translators.
967  // The core translator of the RT Shader System.
969  // The target shader language (currently only cg supported).
971  // The target vertex shader profile. Will be used as argument for program compilation.
973  // List of target vertex shader profiles.
975  // The target fragment shader profile. Will be used as argument for program compilation.
977  // List of target fragment shader profiles..
979  // Path for caching the generated shaders.
981  // Shader program manager.
983  // Shader program writer manager.
985  // File system layer manager.
987  // Fixed Function Render state builder.
988  FFPRenderStateBuilder* mFFPRenderStateBuilder;
989  // Material entries map.
991  // Scheme entries map.
993  // All technique entries map.
995  // Sub render state registered factories.
997  // Sub render state core extension factories.
999  // True if active view port use a valid SGScheme.
1001  // Light count per light type.
1002  int mLightCount[3];
1003  // Vertex shader outputs compact policy.
1005  // Tells whether shaders are created for passes with shaders
1007  // a flag to indicate finalizing
1009 private:
1010  friend class SGPass;
1011  friend class FFPRenderStateBuilder;
1013  friend class SGScriptTranslator;
1015 
1016 };
1017 
1021 }
1022 }
1023 
1024 #endif
1025 
Ogre::RTShader::ShaderGenerator::getFragmentShaderProfiles
const String & getFragmentShaderProfiles() const
Get the output fragment shader target profiles.
Definition: OgreShaderGenerator.h:161
Ogre::HashedVector< Light * >
Ogre::RTShader::ShaderGenerator::SGTechnique::mDstTechnique
Technique * mDstTechnique
Definition: OgreShaderGenerator.h:621
Ogre::RTShader::ShaderGenerator::findSourceTechnique
Technique * findSourceTechnique(const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, bool allowProgrammable)
Find source technique to generate shader based technique based on it.
Ogre::RTShader::ShaderGenerator::SGMaterial::mTechniqueEntries
SGTechniqueList mTechniqueEntries
Definition: OgreShaderGenerator.h:662
Ogre::RTShader::ShaderGenerator::createSubRenderState
SubRenderState * createSubRenderState(const String &type)
Create an instance of sub render state from a given type.
Ogre::RTShader::ShaderGenerator::mCreateShaderOverProgrammablePass
bool mCreateShaderOverProgrammablePass
Definition: OgreShaderGenerator.h:1006
Ogre::AutoParamDataSource
This utility class is used to hold the information used to generate the matrices and other informatio...
Definition: OgreAutoParamDataSource.h:61
Ogre::RTShader::ShaderGenerator::mFSLayer
FileSystemLayer * mFSLayer
Definition: OgreShaderGenerator.h:986
Ogre::TextureUnitState
Class representing the state of a single texture unit during a Pass of a Technique,...
Definition: OgreTextureUnitState.h:63
Ogre::RTShader::ShaderGenerator::removeSubRenderStateFactory
void removeSubRenderStateFactory(SubRenderStateFactory *factory)
Remove sub render state factory.
Ogre::RTShader::ShaderGenerator::SGMaterial::getGroupName
const String & getGroupName() const
Get the group name.
Definition: OgreShaderGenerator.h:648
Ogre::RTShader::ShaderGenerator::hasShaderBasedTechnique
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.
Ogre::RTShader::ShaderGenerator::SGScheme::mTechniqueEntries
SGTechniqueList mTechniqueEntries
Definition: OgreShaderGenerator.h:727
Ogre::RTShader::ShaderGenerator::SGTechnique::getDestinationTechniqueSchemeName
const String & getDestinationTechniqueSchemeName() const
Get the destination technique scheme name.
Definition: OgreShaderGenerator.h:580
Ogre::RTShader::ShaderGenerator::SGTechniqueMap
map< SGTechnique *, SGTechnique * >::type SGTechniqueMap
Definition: OgreShaderGenerator.h:491
Ogre::AllocatedObject
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Definition: OgreMemoryAllocatedObject.h:59
Ogre::SceneManager::IlluminationRenderStage
IlluminationRenderStage
Describes the stage of rendering when performing complex illumination.
Definition: OgreSceneManager.h:174
Ogre
Definition: OgreAndroidLogListener.h:35
Ogre::RTShader::ShaderGenerator::createOrRetrieveRenderState
RenderStateCreateOrRetrieveResult createOrRetrieveRenderState(const String &schemeName)
Returns a requested render state.
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorIterator
SGScriptTranslatorMap::iterator SGScriptTranslatorIterator
Definition: OgreShaderGenerator.h:503
Ogre::ScriptTranslator
This class translates script AST (abstract syntax tree) into Ogre resources.
Definition: OgreScriptTranslator.h:49
Ogre::RTShader::ShaderGenerator::mActiveSceneMgr
SceneManager * mActiveSceneMgr
Definition: OgreShaderGenerator.h:954
Ogre::RTShader::ShaderGenerator::SGSchemeMap
map< String, SGScheme * >::type SGSchemeMap
Definition: OgreShaderGenerator.h:498
Ogre::RTShader::ShaderGenerator::mSceneManagerListener
SGSceneManagerListener * mSceneManagerListener
Definition: OgreShaderGenerator.h:960
Ogre::RTShader::ShaderGenerator::getSingleton
static ShaderGenerator & getSingleton()
Override standard Singleton retrieval.
Ogre::RTShader::ShaderGenerator::SGPass::UserKey
static String UserKey
Definition: OgreShaderGenerator.h:544
Ogre::SceneManager::Listener
Class that allows listening in on the various stages of SceneManager processing, so that custom behav...
Definition: OgreSceneManager.h:223
Ogre::RTShader::ShaderGenerator::SGPassIterator
SGPassList::iterator SGPassIterator
Definition: OgreShaderGenerator.h:484
Ogre::RTShader::SubRenderState
This class is the base interface of sub part from a shader based rendering pipeline.
Definition: OgreShaderSubRenderState.h:57
Ogre::RTShader::ShaderGenerator::mScriptTranslatorsMap
SGScriptTranslatorMap mScriptTranslatorsMap
Definition: OgreShaderGenerator.h:966
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorManager::SGScriptTranslatorManager
SGScriptTranslatorManager(ShaderGenerator *owner)
Definition: OgreShaderGenerator.h:813
Ogre::RTShader::ShaderGenerator::SGPass::buildTargetRenderState
void buildTargetRenderState()
Build the render state.
Ogre::RTShader::ShaderGenerator::SGMaterial::getMaterialName
const String & getMaterialName() const
Get the material name.
Definition: OgreShaderGenerator.h:645
Ogre::map
Definition: OgrePrerequisites.h:534
OgreSingleton.h
Ogre::RTShader::ShaderGenerator::SGPass::SGPass
SGPass(SGTechnique *parent, Pass *srcPass, Pass *dstPass)
Ogre::RTShader::ShaderGenerator::addSceneManager
void addSceneManager(SceneManager *sceneMgr)
Add a scene manager to the shader generator scene managers list.
Ogre::RTShader::ShaderGenerator::RenderStateCreateOrRetrieveResult
std::pair< RenderState *, bool > RenderStateCreateOrRetrieveResult
Definition: OgreShaderGenerator.h:198
Ogre::Camera
A viewpoint from which the scene will be rendered.
Definition: OgreCamera.h:87
OgreSceneManager.h
Ogre::RTShader::ShaderGenerator::mShaderCachePath
String mShaderCachePath
Definition: OgreShaderGenerator.h:980
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorMap
map< String, ScriptTranslator * >::type SGScriptTranslatorMap
Definition: OgreShaderGenerator.h:502
Ogre::RTShader::ShaderGenerator::_initialize
bool _initialize()
Initialize the shader generator instance.
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::SGSceneManagerListener
SGSceneManagerListener(ShaderGenerator *owner)
Definition: OgreShaderGenerator.h:767
Ogre::RTShader::ShaderGenerator::setVertexShaderProfiles
void setVertexShaderProfiles(const String &vertexShaderProfiles)
Set the output vertex shader target profiles.
Ogre::RTShader::ShaderGenerator::SGTechnique::~SGTechnique
~SGTechnique()
Ogre::RTShader::ShaderGenerator::getSubRenderStateFactory
SubRenderStateFactory * getSubRenderStateFactory(const String &type)
Returns a sub render state factory by name.
Ogre::RTShader::ShaderGenerator::removeShaderBasedTechnique
bool removeShaderBasedTechnique(const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
Remove shader based technique from a given technique.
Ogre::RTShader::ShaderGenerator::SGPass::releasePrograms
void releasePrograms()
Release the CPU/GPU programs of this pass.
Ogre::StringVector
vector< String >::type StringVector
Definition: OgreStringVector.h:45
Ogre::RTShader::ShaderGenerator::getVertexShaderProfilesList
const StringVector & getVertexShaderProfilesList() const
Get the output vertex shader target profiles as list of strings.
Definition: OgreShaderGenerator.h:149
Ogre::RTShader::ShaderGenerator::createSubRenderStateExFactories
void createSubRenderStateExFactories()
Create sub render state core extensions factories.
Ogre::RTShader::ShaderGenerator::SGScheme::invalidate
void invalidate()
Invalidate the whole scheme.
Ogre::RTShader::ShaderGenerator::mMaterialSerializerListener
SGMaterialSerializerListener * mMaterialSerializerListener
Definition: OgreShaderGenerator.h:964
OgreFileSystemLayer.h
Ogre::RTShader::ShaderGenerator::SGTechnique
Shader generator technique wrapper class.
Definition: OgreShaderGenerator.h:565
Ogre::RTShader::ShaderGenerator::mProgramManager
ProgramManager * mProgramManager
Definition: OgreShaderGenerator.h:982
Ogre::RTShader::ShaderGenerator::mSubRenderStateFactories
SubRenderStateFactoryMap mSubRenderStateFactories
Definition: OgreShaderGenerator.h:996
Ogre::RTShader::ShaderGenerator::SubRenderStateFactoryConstIterator
SubRenderStateFactoryMap::const_iterator SubRenderStateFactoryConstIterator
Definition: OgreShaderGenerator.h:838
Ogre::Light
Representation of a dynamic light source in the scene.
Definition: OgreLight.h:74
Ogre::RTShader::ShaderGenerator::SGPass::getCustomFFPSubState
SubRenderState * getCustomFFPSubState(int subStateOrder, const RenderState *renderState)
Ogre::RTShader::ShaderGenerator::validateMaterial
bool validateMaterial(const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Validate specific material scheme.
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorManager::getNumTranslators
virtual size_t getNumTranslators() const
Returns the number of translators being managed.
Definition: OgreShaderGenerator.h:819
Ogre::FogMode
FogMode
Fog modes.
Definition: OgreCommon.h:122
Ogre::RTShader::ShaderGenerator::getFragmentShaderProfilesList
const StringVector & getFragmentShaderProfilesList() const
Get the output fragment shader target profiles as list of strings.
Definition: OgreShaderGenerator.h:166
Ogre::RTShader::ShaderGenerator::SGTechnique::mCustomRenderStates
RenderStateList mCustomRenderStates
Definition: OgreShaderGenerator.h:625
Ogre::RTShader::ShaderGenerator::SGTechnique::buildTargetRenderState
void buildTargetRenderState()
Build the render state.
Ogre::RTShader::ShaderGenerator::SGScheme::mFogMode
FogMode mFogMode
Definition: OgreShaderGenerator.h:733
Ogre::RTShader::ShaderGenerator::SGTechnique::releasePrograms
void releasePrograms()
Release the CPU/GPU programs of this technique.
Ogre::RTShader::ShaderGenerator::SGMaterial::getTechniqueList
SGTechniqueList & getTechniqueList()
Get the techniques list of this material.
Definition: OgreShaderGenerator.h:654
Ogre::RTShader::ShaderGenerator::SGMaterial::SGMaterial
SGMaterial(const String &materialName, const String &groupName)
Class constructor.
Definition: OgreShaderGenerator.h:639
Ogre::RTShader::ShaderGenerator::getRenderState
RenderState * getRenderState(const String &schemeName, const String &materialName, const String &groupName, unsigned short passIndex)
Get render state of specific pass.
Ogre::RTShader::ShaderGenerator::addSubRenderStateFactory
void addSubRenderStateFactory(SubRenderStateFactory *factory)
Add sub render state factory.
Ogre::RTShader::ShaderGenerator::mFragmentShaderProfiles
String mFragmentShaderProfiles
Definition: OgreShaderGenerator.h:976
Ogre::RTShader::ShaderGenerator::createSubRenderState
SubRenderState * createSubRenderState(ScriptCompiler *compiler, PropertyAbstractNode *prop, TextureUnitState *texState, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties using the current sub render stat...
Ogre::RTShader::ShaderGenerator::SGScheme::~SGScheme
~SGScheme()
Ogre::RTShader::ShaderGenerator::SGPassConstIterator
SGPassList::const_iterator SGPassConstIterator
Definition: OgreShaderGenerator.h:485
Ogre::RTShader::ShaderGenerator::SGTechnique::mSrcTechnique
Technique * mSrcTechnique
Definition: OgreShaderGenerator.h:619
Ogre::RTShader::ShaderGenerator::SGPass::getDstPass
Pass * getDstPass()
Get destination pass.
Definition: OgreShaderGenerator.h:532
Ogre::RTShader::ShaderGenerator::hasRenderState
bool hasRenderState(const String &schemeName) const
Tells if a given render state exists.
Ogre::RTShader::ShaderGenerator::destroy
static void destroy()
Destroy the Shader Generator instance.
Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME
static String AUTODETECT_RESOURCE_GROUP_NAME
Special resource group name which causes resource group to be automatically determined based on searc...
Definition: OgreResourceGroupManager.h:270
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::mOwner
ShaderGenerator * mOwner
Definition: OgreShaderGenerator.h:806
Ogre::RTShader::ShaderGenerator::SGMaterialMap
map< MatGroupPair, SGMaterial *, MatGroupPair_less >::type SGMaterialMap
Definition: OgreShaderGenerator.h:494
Ogre::RTShader::ShaderGenerator::invalidateScheme
void invalidateScheme(const String &schemeName)
Invalidate a given scheme.
Ogre::RTShader::ShaderGenerator::mSchemeEntriesMap
SGSchemeMap mSchemeEntriesMap
Definition: OgreShaderGenerator.h:992
Ogre::RTShader::ShaderGenerator::destroySubRenderStateExFactories
void destroySubRenderStateExFactories()
Destroy sub render state core extensions factories.
Ogre::RTShader::ShaderGenerator::SGTechnique::createSGPasses
void createSGPasses()
Create the passes entries.
OgreRenderObjectListener.h
Ogre::RTShader::ShaderGenerator::SGMaterial::getTechniqueList
const SGTechniqueList & getTechniqueList() const
Get the const techniques list of this material.
Definition: OgreShaderGenerator.h:651
Ogre::RTShader::ShaderGenerator::createOrRetrieveScheme
SchemeCreateOrRetrieveResult createOrRetrieveScheme(const String &schemeName)
Returns a requested scheme.
Ogre::RTShader::SubRenderStateFactory
Abstract factory interface for creating SubRenderState implementation instances.
Definition: OgreShaderSubRenderState.h:233
Ogre::String
_StringBase String
Definition: OgrePrerequisites.h:439
Ogre::RTShader::ShaderGenerator::SGTechnique::getBuildDestinationTechnique
bool getBuildDestinationTechnique() const
Tells if the destination technique should be build.
Definition: OgreShaderGenerator.h:595
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorConstIterator
SGScriptTranslatorMap::const_iterator SGScriptTranslatorConstIterator
Definition: OgreShaderGenerator.h:504
Ogre::RTShader::ShaderGenerator::getIsFinalizing
bool getIsFinalizing() const
Used to check if finalizing.
Ogre::Pass
Class defining a single pass of a Technique (of a Material), i.e.
Definition: OgrePass.h:81
Ogre::Technique
Class representing an approach to rendering this particular Material.
Definition: OgreTechnique.h:54
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorManager::getTranslator
virtual ScriptTranslator * getTranslator(const AbstractNodePtr &node)
Returns a manager for the given object abstract node, or null if it is not supported.
Definition: OgreShaderGenerator.h:825
Ogre::RTShader::ShaderGenerator::~ShaderGenerator
~ShaderGenerator()
Class destructor.
OgreShaderPrerequisites.h
Ogre::RTShader::ShaderGenerator::SGPass::mTargetRenderState
TargetRenderState * mTargetRenderState
Definition: OgreShaderGenerator.h:559
Ogre::RTShader::ShaderGenerator::SGScheme::getRenderState
RenderState * getRenderState()
Get global render state of this scheme.
Ogre::RTShader::ShaderGenerator::getCreateShaderOverProgrammablePass
bool getCreateShaderOverProgrammablePass() const
Returns whether shaders are created for passes with shaders.
Definition: OgreShaderGenerator.h:451
Ogre::RTShader::ShaderGenerator::getShaderCachePath
const String & getShaderCachePath() const
Get the output shader cache path.
Definition: OgreShaderGenerator.h:179
Ogre::RTShader::ShaderGenerator::hasShaderBasedTechnique
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.
Ogre::RTShader::ShaderGenerator::createShaderBasedTechnique
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.
Ogre::RTShader::ShaderGenerator::mCoreScriptTranslator
SGScriptTranslator mCoreScriptTranslator
Definition: OgreShaderGenerator.h:968
Ogre::RTShader::ShaderGenerator::mProgramWriterManager
ProgramWriterManager * mProgramWriterManager
Definition: OgreShaderGenerator.h:984
Ogre::RenderObjectListener
Abstract interface which classes must implement if they wish to receive events from the scene manager...
Definition: OgreRenderObjectListener.h:44
Ogre::RTShader::ShaderGenerator::mFragmentShaderProfilesList
StringVector mFragmentShaderProfilesList
Definition: OgreShaderGenerator.h:978
Ogre::RTShader::ShaderGenerator::isProgrammable
bool isProgrammable(Technique *tech) const
Checks if a given technique has passes with shaders.
Ogre::RTShader::ShaderGenerator::findMaterialEntryIt
SGMaterialIterator findMaterialEntryIt(const String &materialName, const String &groupName)
Finds an entry iterator in the mMaterialEntriesMap map.
Ogre::RTShader::ShaderGenerator::removeCustomScriptTranslator
bool removeCustomScriptTranslator(const String &key)
Remove custom script translator.
Ogre::RTShader::ShaderGenerator::SGRenderObjectListener::notifyRenderSingleObject
virtual void notifyRenderSingleObject(Renderable *rend, const Pass *pass, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)
Listener overridden function notify the shader generator when rendering single object.
Definition: OgreShaderGenerator.h:752
Ogre::RTShader::ShaderGenerator::SGTechnique::acquirePrograms
void acquirePrograms()
Acquire the CPU/GPU programs for this technique.
Ogre::RTShader::ShaderGenerator::SGSchemeConstIterator
SGSchemeMap::const_iterator SGSchemeConstIterator
Definition: OgreShaderGenerator.h:500
Ogre::RTShader::ShaderGenerator::SGTechnique::mBuildDstTechnique
bool mBuildDstTechnique
Definition: OgreShaderGenerator.h:627
Ogre::RTShader::ShaderGenerator::mIsFinalizing
bool mIsFinalizing
Definition: OgreShaderGenerator.h:1008
Ogre::RTShader::ShaderGenerator::SGScheme::mName
String mName
Definition: OgreShaderGenerator.h:725
Ogre::RTShader::ShaderGenerator::getSubRenderStateFactory
SubRenderStateFactory * getSubRenderStateFactory(size_t index)
Returns a sub render state factory by index.
Ogre::RTShader::ShaderGenerator::SGPassList
vector< SGPass * >::type SGPassList
Definition: OgreShaderGenerator.h:483
Ogre::RTShader::ShaderGenerator::SGPass::notifyRenderSingleObject
void notifyRenderSingleObject(Renderable *rend, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)
Called when a single object is about to be rendered.
Ogre::RTShader::ShaderGenerator::SGScheme::empty
bool empty() const
Return true if this scheme dose not contains any techniques.
Definition: OgreShaderGenerator.h:676
Ogre::RTShader::ShaderGenerator::SGPass::getCustomRenderState
RenderState * getCustomRenderState()
Get custom render state of this pass.
Definition: OgreShaderGenerator.h:538
Ogre::RTShader::ShaderGenerator::getRenderState
RenderState * getRenderState(const String &schemeName)
Return a global render state associated with the given scheme name.
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener
Shader generator scene manager sub class.
Definition: OgreShaderGenerator.h:765
Ogre::RTShader::ShaderGenerator::createShaderBasedTechnique
bool createShaderBasedTechnique(const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName, bool overProgrammable=false)
Create shader based technique from a given technique.
Ogre::RTShader::ShaderGenerator::SGScheme::validate
bool validate(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Validate specific material.
Ogre::RTShader::ShaderGenerator::SGPass::mDstPass
Pass * mDstPass
Definition: OgreShaderGenerator.h:555
Ogre::RTShader::ShaderGenerator::getTranslator
ScriptTranslator * getTranslator(const AbstractNodePtr &node)
Return a matching script translator.
Ogre::SceneManager
Manages the organisation and rendering of a 'scene' i.e.
Definition: OgreSceneManager.h:144
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::shadowTexturesUpdated
virtual void shadowTexturesUpdated(size_t numberOfShadowTextures)
Event raised after all shadow textures have been rendered into for all queues / targets but before an...
Definition: OgreShaderGenerator.h:787
Ogre::RTShader::ShaderGenerator::invalidateMaterial
void invalidateMaterial(const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Invalidate specific material scheme.
Ogre::Viewport
An abstraction of a viewport, i.e.
Definition: OgreViewport.h:58
Ogre::RTShader::ShaderGenerator::SGTechnique::mParent
SGMaterial * mParent
Definition: OgreShaderGenerator.h:617
Ogre::RTShader::ShaderGenerator::getSingletonPtr
static ShaderGenerator * getSingletonPtr()
Override standard Singleton retrieval.
Ogre::RTShader::ShaderGenerator::setTargetLanguage
void setTargetLanguage(const String &shaderLanguage)
Set the target shader language.
Ogre::RTShader::ShaderGenerator::SGTechnique::SGTechnique
SGTechnique(SGMaterial *parent, Technique *srcTechnique, const String &dstTechniqueSchemeName)
Ogre::ScriptCompiler
This is the main class for the compiler.
Definition: OgreScriptCompiler.h:189
Ogre::RTShader::ShaderGenerator::SGPass::~SGPass
~SGPass()
Ogre::RTShader::ShaderGenerator::mRenderObjectListener
SGRenderObjectListener * mRenderObjectListener
Definition: OgreShaderGenerator.h:958
Ogre::RTShader::ShaderGenerator::findMaterialEntryIt
SGMaterialConstIterator findMaterialEntryIt(const String &materialName, const String &groupName) const
Ogre::ScriptTranslatorManager
The ScriptTranslatorManager manages the lifetime and access to script translators.
Definition: OgreScriptTranslator.h:102
Ogre::RTShader::RenderState
This is a container class for sub render state class.
Definition: OgreShaderRenderState.h:50
Ogre::RTShader::ShaderGenerator::SGTechnique::getDestinationTechnique
Technique * getDestinationTechnique()
Get the destination technique.
Definition: OgreShaderGenerator.h:577
Ogre::RTShader::ShaderGenerator::OGRE_AUTO_MUTEX
OGRE_AUTO_MUTEX
Definition: OgreShaderGenerator.h:952
Ogre::RTShader::ShaderGenerator::mVertexShaderProfilesList
StringVector mVertexShaderProfilesList
Definition: OgreShaderGenerator.h:974
Ogre::MaterialSerializer
Class for serializing Materials to / from a .material script.
Definition: OgreMaterialSerializer.h:107
Ogre::RTShader::ShaderGenerator::SGTechnique::mDstTechniqueSchemeName
String mDstTechniqueSchemeName
Definition: OgreShaderGenerator.h:629
Ogre::Singleton
Template class for creating single-instance global classes.
Definition: OgreSingleton.h:65
Ogre::RTShader::ShaderGenerator::SGMaterial::mName
String mName
Definition: OgreShaderGenerator.h:658
Ogre::RTShader::ShaderGenerator::setFragmentShaderProfiles
void setFragmentShaderProfiles(const String &fragmentShaderProfiles)
Set the output fragment shader target profiles.
Ogre::RTShader::ShaderGenerator::SGScheme::synchronizeWithFogSettings
void synchronizeWithFogSettings()
Synchronize the fog settings of this scheme with the current settings of the scene.
Ogre::RTShader::ShaderGenerator::SGTechnique::getRenderState
RenderState * getRenderState(unsigned short passIndex)
Get render state of specific pass.
Ogre::RTShader::ShaderGenerator::SGScheme::getRenderState
RenderState * getRenderState(const String &materialName, const String &groupName, unsigned short passIndex)
Get specific pass render state.
Ogre::RTShader::ShaderGenerator::SGSchemeIterator
SGSchemeMap::iterator SGSchemeIterator
Definition: OgreShaderGenerator.h:499
Ogre::RTShader::ShaderGenerator::SGScheme::invalidate
void invalidate(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Invalidate specific material.
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::shadowTextureCasterPreViewProj
virtual void shadowTextureCasterPreViewProj(Light *light, Camera *camera, size_t iteration)
This event occurs just before the view & projection matrices are set for rendering into a shadow text...
Definition: OgreShaderGenerator.h:792
Ogre::RTShader::ShaderGenerator::SGPass::getCustomFFPSubState
SubRenderState * getCustomFFPSubState(int subStateOrder)
Get custom FPP sub state of this pass.
Ogre::RTShader::ShaderGenerator::SGTechnique::getParent
const SGMaterial * getParent() const
Get the parent SGMaterial.
Definition: OgreShaderGenerator.h:571
Ogre::RTShader::ProgramWriterManager
Definition: OgreShaderProgramWriterManager.h:61
Ogre::RTShader::ShaderGenerator::mSceneManagerMap
SceneManagerMap mSceneManagerMap
Definition: OgreShaderGenerator.h:956
Ogre::RTShader::ShaderGenerator::mActiveViewportValid
bool mActiveViewportValid
Definition: OgreShaderGenerator.h:1000
OgreShaderRenderState.h
Ogre::RTShader::ShaderGenerator::validateScheme
bool validateScheme(const String &schemeName)
Validate a given scheme.
Ogre::RTShader::ShaderGenerator::removeShaderBasedTechnique
bool removeShaderBasedTechnique(const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
Remove shader based technique from a given technique.
Ogre::RTShader::ShaderGenerator::SGTechnique::setBuildDestinationTechnique
void setBuildDestinationTechnique(bool buildTechnique)
Tells the technique that it needs to generate shader code.
Definition: OgreShaderGenerator.h:592
Ogre::RTShader::ShaderGenerator::mShaderLanguage
String mShaderLanguage
Definition: OgreShaderGenerator.h:970
Ogre::RTShader::ShaderGenerator::initialize
static bool initialize()
Initialize the Shader Generator System.
Ogre::RTShader::ShaderGenerator::SGScheme::synchronizeWithLightSettings
void synchronizeWithLightSettings()
Synchronize the current light settings of this scheme with the current settings of the scene.
Ogre::RTShader::ShaderGenerator::setCreateShaderOverProgrammablePass
void setCreateShaderOverProgrammablePass(bool value)
Sets whether shaders are created for passes with shaders.
Definition: OgreShaderGenerator.h:446
Ogre::RTShader::ShaderGenerator::getRTShaderScheme
const String & getRTShaderScheme(size_t index) const
Returns the scheme name used in the for RT shader generation by index.
Ogre::Frustum
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
Definition: OgreFrustum.h:86
Ogre::RTShader::ShaderGenerator::setShaderCachePath
void setShaderCachePath(const String &cachePath)
Set the output shader cache path.
Ogre::RTShader::ShaderGenerator::SGRenderObjectListener
Shader generator RenderObjectListener sub class.
Definition: OgreShaderGenerator.h:742
Ogre::RTShader::ShaderGenerator::SGTechnique::destroySGPasses
void destroySGPasses()
Destroy the passes entries.
Ogre::RTShader::ShaderGenerator::SGTechnique::UserKey
static String UserKey
Definition: OgreShaderGenerator.h:605
Ogre::RTShader::ShaderGenerator::SchemeCreateOrRetrieveResult
std::pair< SGScheme *, bool > SchemeCreateOrRetrieveResult
Definition: OgreShaderGenerator.h:941
OgreShaderScriptTranslator.h
Ogre::RTShader::ShaderGenerator::cloneShaderBasedTechniques
bool cloneShaderBasedTechniques(const String &srcMaterialName, const String &srcGroupName, const String &dstMaterialName, const String &dstGroupName)
Clone all shader based techniques from one material to another.
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorManager::mOwner
ShaderGenerator * mOwner
Definition: OgreShaderGenerator.h:832
Ogre::RTShader::ShaderGenerator::setVertexShaderOutputsCompactPolicy
void setVertexShaderOutputsCompactPolicy(VSOutputCompactPolicy policy)
Set the vertex shader outputs compaction policy.
Definition: OgreShaderGenerator.h:433
Ogre::SharedPtr
Reference-counted shared pointer, used for objects where implicit destruction is required.
Definition: OgreSharedPtr.h:112
Ogre::RTShader::ShaderGenerator::SGRenderObjectListener::mOwner
ShaderGenerator * mOwner
Definition: OgreShaderGenerator.h:760
Ogre::RTShader::ShaderGenerator::SGPass::setCustomRenderState
void setCustomRenderState(RenderState *customRenderState)
Set the custom render state of this pass.
Definition: OgreShaderGenerator.h:541
Ogre::RTShader::ShaderGenerator::SGTechniqueIterator
SGTechniqueList::iterator SGTechniqueIterator
Definition: OgreShaderGenerator.h:488
Ogre::RTShader::ShaderGenerator::SGTechniqueMapIterator
SGTechniqueMap::iterator SGTechniqueMapIterator
Definition: OgreShaderGenerator.h:492
Ogre::RTShader::ShaderGenerator::SGScheme
Shader generator scheme class.
Definition: OgreShaderGenerator.h:668
Ogre::RTShader::ShaderGenerator::SGScriptTranslatorManager
Shader generator ScriptTranslatorManager sub class.
Definition: OgreShaderGenerator.h:811
Ogre::RTShader::ShaderGenerator::getVertexShaderProfiles
const String & getVertexShaderProfiles() const
Get the output vertex shader target profiles.
Definition: OgreShaderGenerator.h:144
Ogre::RTShader::ShaderGenerator::preFindVisibleObjects
void preFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Called from the sub class of the SceneManager::Listener when finding visible object process starts.
Ogre::RTShader::ShaderGenerator::SGPass::acquirePrograms
void acquirePrograms()
Acquire the CPU/GPU programs for this pass.
Ogre::RTShader::ProgramManager
A singleton manager class that manages shader based programs.
Definition: OgreShaderProgramManager.h:47
Ogre::RTShader::ShaderGenerator::SGMaterialConstIterator
SGMaterialMap::const_iterator SGMaterialConstIterator
Definition: OgreShaderGenerator.h:496
Ogre::RTShader::ShaderGenerator::SGScheme::validate
void validate()
Validate the whole scheme.
Ogre::RTShader::ShaderGenerator::SGMaterialIterator
SGMaterialMap::iterator SGMaterialIterator
Definition: OgreShaderGenerator.h:495
OgreScriptTranslator.h
Ogre::RTShader::ShaderGenerator::addCustomScriptTranslator
bool addCustomScriptTranslator(const String &key, ScriptTranslator *translator)
Add custom script translator.
Ogre::RTShader::ShaderGenerator::getVertexShaderOutputsCompactPolicy
VSOutputCompactPolicy getVertexShaderOutputsCompactPolicy() const
Get the vertex shader outputs compaction policy.
Definition: OgreShaderGenerator.h:438
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::preFindVisibleObjects
virtual void preFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Listener overridden function notify the shader generator when finding visible objects process started...
Definition: OgreShaderGenerator.h:775
Ogre::RTShader::ShaderGenerator::SGScheme::SGScheme
SGScheme(const String &schemeName)
Ogre::RTShader::ShaderGenerator::getVertexShaderCount
size_t getVertexShaderCount() const
Return the current number of generated vertex shaders.
Ogre::RTShader::ShaderGenerator::serializePassAttributes
void serializePassAttributes(MaterialSerializer *ser, SGPass *passEntry)
This method called by instance of SGMaterialSerializerListener and serialize a given pass entry attri...
Ogre::RTShader::ShaderGenerator::SubRenderStateFactoryIterator
SubRenderStateFactoryMap::iterator SubRenderStateFactoryIterator
Definition: OgreShaderGenerator.h:837
Ogre::RTShader::ShaderGenerator::mVertexShaderProfiles
String mVertexShaderProfiles
Definition: OgreShaderGenerator.h:972
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::postFindVisibleObjects
virtual void postFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Called after searching for visible objects in this SceneManager.
Definition: OgreShaderGenerator.h:781
Ogre::RTShader::ShaderGenerator::SGPass
Shader generator pass wrapper class.
Definition: OgreShaderGenerator.h:510
Ogre::RTShader::ShaderGenerator::mTechniqueEntriesMap
SGTechniqueMap mTechniqueEntriesMap
Definition: OgreShaderGenerator.h:994
Ogre::Renderable
Abstract class defining the interface all renderable objects must implement.
Definition: OgreRenderable.h:64
Ogre::RTShader::ShaderGenerator::getTargetLanguage
const String & getTargetLanguage() const
Return the target shader language currently in use.
Definition: OgreShaderGenerator.h:133
Ogre::FileSystemLayer
Provides methods to find out where the Ogre config files are stored and where logs and settings files...
Definition: OgreFileSystemLayer.h:50
Ogre::RTShader::TargetRenderState
This is the target render state.
Definition: OgreShaderRenderState.h:139
Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME
static String DEFAULT_SCHEME_NAME
Default material scheme of the shader generator.
Definition: OgreShaderGenerator.h:463
Ogre::RTShader::ShaderGenerator::SGMaterial::mGroup
String mGroup
Definition: OgreShaderGenerator.h:660
Ogre::RTShader::ShaderGenerator::SceneManagerMap
map< String, SceneManager * >::type SceneManagerMap
Definition: OgreShaderGenerator.h:841
Ogre::RTShader::ShaderGenerator::SGTechniqueConstIterator
SGTechniqueList::const_iterator SGTechniqueConstIterator
Definition: OgreShaderGenerator.h:489
Ogre::RTShader::ShaderGenerator::SGRenderObjectListener::SGRenderObjectListener
SGRenderObjectListener(ShaderGenerator *owner)
Definition: OgreShaderGenerator.h:744
Ogre::RTShader::ShaderGenerator::SGTechniqueList
vector< SGTechnique * >::type SGTechniqueList
Definition: OgreShaderGenerator.h:487
Ogre::RTShader::ShaderGenerator::serializeTextureUnitStateAttributes
void serializeTextureUnitStateAttributes(MaterialSerializer *ser, SGPass *passEntry, const TextureUnitState *srcTextureUnit)
This method called by instance of SGMaterialSerializerListener and serialize a given textureUnitState...
Ogre::RTShader::ShaderGenerator::getNumSubRenderStateFactories
size_t getNumSubRenderStateFactories() const
Returns the number of existing factories.
Ogre::RTShader::ShaderGenerator::SGMaterial
Shader generator material wrapper class.
Definition: OgreShaderGenerator.h:635
Ogre::RTShader::ShaderGenerator::SGPass::mCustomRenderState
RenderState * mCustomRenderState
Definition: OgreShaderGenerator.h:557
Ogre::RTShader::ShaderGenerator::mVSOutputCompactPolicy
VSOutputCompactPolicy mVSOutputCompactPolicy
Definition: OgreShaderGenerator.h:1004
Ogre::RTShader::ShaderGenerator::SGScheme::mOutOfDate
bool mOutOfDate
Definition: OgreShaderGenerator.h:729
Ogre::RTShader::ShaderGenerator::SGTechnique::mPassEntries
SGPassList mPassEntries
Definition: OgreShaderGenerator.h:623
Ogre::PropertyAbstractNode
This abstract node represents a script property.
Definition: OgreScriptCompiler.h:148
Ogre::RTShader::ShaderGenerator::SGSceneManagerListener::shadowTextureReceiverPreViewProj
virtual void shadowTextureReceiverPreViewProj(Light *light, Frustum *frustum)
This event occurs just before the view & projection matrices are set for re-rendering a shadow receiv...
Definition: OgreShaderGenerator.h:798
Ogre::RTShader::ShaderGenerator::getMaterialSerializerListener
SGMaterialSerializerListener * getMaterialSerializerListener()
Return custom material Serializer of the shader generator.
Ogre::RTShader::ShaderGenerator::removeAllShaderBasedTechniques
bool removeAllShaderBasedTechniques(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Remove all shader based techniques of the given material.
Ogre::RTShader::ShaderGenerator::SGTechnique::getSourceTechnique
Technique * getSourceTechnique()
Get the source technique.
Definition: OgreShaderGenerator.h:574
Ogre::RTShader::ShaderGenerator::removeAllShaderBasedTechniques
void removeAllShaderBasedTechniques()
Remove all shader based techniques that created by this shader generator.
Ogre::RTShader::ShaderGenerator::createSubRenderState
SubRenderState * createSubRenderState(ScriptCompiler *compiler, PropertyAbstractNode *prop, Pass *pass, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties using the current sub render stat...
Ogre::RTShader::ShaderGenerator::getRenderState
RenderState * getRenderState(const String &schemeName, const String &materialName, unsigned short passIndex)
Get render state of specific pass.
Ogre::RTShader::RenderStateList
vector< RenderState * >::type RenderStateList
Definition: OgreShaderRenderState.h:129
Ogre::RTShader::ShaderGenerator::getNumTranslators
size_t getNumTranslators() const
Return number of script translators.
Ogre::RTShader::ShaderGenerator::SGPass::mSrcPass
Pass * mSrcPass
Definition: OgreShaderGenerator.h:553
Ogre::vector
Definition: OgrePrerequisites.h:492
Ogre::RTShader::ShaderGenerator::MatGroupPair_less
Definition: OgreShaderGenerator.h:474
Ogre::RTShader::ShaderGenerator::destroySubRenderState
void destroySubRenderState(SubRenderState *subRenderState)
Destroy an instance of sub render state.
Ogre::RTShader::VSOutputCompactPolicy
VSOutputCompactPolicy
Definition: OgreShaderPrerequisites.h:82
Ogre::RTShader::ShaderGenerator::getFragmentShaderCount
size_t getFragmentShaderCount() const
Return the current number of generated fragment shaders.
Ogre::RTShader::ShaderGenerator::getRTShaderSchemeCount
size_t getRTShaderSchemeCount() const
Returns the amount of schemes used in the for RT shader generation.
Ogre::RTShader::ShaderGenerator::SGScheme::removeTechniqueEntry
void removeTechniqueEntry(SGTechnique *techEntry)
Remove a technique from the current techniques list.
Ogre::RTShader::SGMaterialSerializerListener
This class responsible for translating core features of the RT Shader System for Ogre material script...
Definition: OgreShaderMaterialSerializerListener.h:48
Ogre::RTShader::SGScriptTranslator
This class responsible for translating core features of the RT Shader System for Ogre material script...
Definition: OgreShaderScriptTranslator.h:48
Ogre::RTShader::ShaderGenerator
Shader generator system main interface.
Definition: OgreShaderGenerator.h:54
Ogre::RTShader::ShaderGenerator::mMaterialEntriesMap
SGMaterialMap mMaterialEntriesMap
Definition: OgreShaderGenerator.h:990
Ogre::RTShader::ShaderGenerator::mFFPRenderStateBuilder
FFPRenderStateBuilder * mFFPRenderStateBuilder
Definition: OgreShaderGenerator.h:988
Ogre::RTShader::ShaderGenerator::createScheme
void createScheme(const String &schemeName)
Create a scheme.
Ogre::RTShader::ShaderGenerator::SGPass::mParent
SGTechnique * mParent
Definition: OgreShaderGenerator.h:551
Ogre::RTShader::ShaderGenerator::ShaderGenerator
ShaderGenerator()
Class default constructor.
Ogre::RTShader::ShaderGenerator::SGTechnique::hasRenderState
bool hasRenderState(unsigned short passIndex)
Tells if a custom render state exists for the given pass.
Ogre::RTShader::ShaderGenerator::removeSceneManager
void removeSceneManager(SceneManager *sceneMgr)
Remove a scene manager from the shader generator scene managers list.
Ogre::RTShader::ShaderGenerator::SGScheme::addTechniqueEntry
void addTechniqueEntry(SGTechnique *techEntry)
Add a technique to current techniques list.
Ogre::RTShader::ShaderGenerator::SubRenderStateFactoryMap
map< String, SubRenderStateFactory * >::type SubRenderStateFactoryMap
Definition: OgreShaderGenerator.h:836
Ogre::RTShader::ShaderGenerator::MatGroupPair
std::pair< String, String > MatGroupPair
Definition: OgreShaderGenerator.h:470
Ogre::RTShader::ShaderGenerator::SceneManagerIterator
SceneManagerMap::iterator SceneManagerIterator
Definition: OgreShaderGenerator.h:842
Ogre::RTShader::ShaderGenerator::SGScheme::mRenderState
RenderState * mRenderState
Definition: OgreShaderGenerator.h:731
Ogre::RTShader::ShaderGenerator::SceneManagerConstIterator
SceneManagerMap::const_iterator SceneManagerConstIterator
Definition: OgreShaderGenerator.h:843
Ogre::RTShader::ShaderGenerator::notifyRenderSingleObject
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.
Ogre::RTShader::ShaderGenerator::flushShaderCache
void flushShaderCache()
Flush the shader cache.
Ogre::RTShader::ShaderGenerator::_destroy
void _destroy()
Destory the shader generator instance.
Ogre::RTShader::ShaderGenerator::SGPass::getSrcPass
Pass * getSrcPass()
Get source pass.
Definition: OgreShaderGenerator.h:529
Ogre::RTShader::ShaderGenerator::mSubRenderStateExFactories
SubRenderStateFactoryMap mSubRenderStateExFactories
Definition: OgreShaderGenerator.h:998
Ogre::RTShader::ShaderGenerator::MatGroupPair_less::operator()
bool operator()(const MatGroupPair &p1, const MatGroupPair &p2) const
Definition: OgreShaderGenerator.h:476
Ogre::RTShader::ShaderGenerator::getActiveSceneManager
SceneManager * getActiveSceneManager()
Get the active scene manager that is doint the actual scene rendering.
_OgreRTSSExport
#define _OgreRTSSExport
Definition: OgreShaderPrerequisites.h:108
Ogre::RTShader::ShaderGenerator::mScriptTranslatorManager
SGScriptTranslatorManager * mScriptTranslatorManager
Definition: OgreShaderGenerator.h:962

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.