OgreShaderGenerator.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org
6
7Copyright (c) 2000-2013 Torus Knot Software Ltd
8Permission is hereby granted, free of charge, to any person obtaining a copy
9of this software and associated documentation files (the "Software"), to deal
10in the Software without restriction, including without limitation the rights
11to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12copies of the Software, and to permit persons to whom the Software is
13furnished to do so, subject to the following conditions:
14
15The above copyright notice and this permission notice shall be included in
16all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24THE SOFTWARE.
25-----------------------------------------------------------------------------
26*/
27#ifndef _ShaderGenerator_
28#define _ShaderGenerator_
29
31#include "OgreSingleton.h"
32#include "OgreFileSystemLayer.h"
34#include "OgreSceneManager.h"
38
39
40namespace Ogre {
41namespace RTShader {
42
53class _OgreRTSSExport ShaderGenerator : public Singleton<ShaderGenerator>, public RTShaderSystemAlloc
54{
55// Interface.
56public:
57
62 static bool initialize();
63
67 static void destroy();
68
69
86
87
104
110
116
122
129
133 const String& getTargetLanguage() const { return mShaderLanguage; }
134
140
144 const String& getVertexShaderProfiles() const { return mVertexShaderProfiles; }
145
149 const StringVector& getVertexShaderProfilesList() const { return mVertexShaderProfilesList; }
150
151
157
161 const String& getFragmentShaderProfiles() const { return mFragmentShaderProfiles; }
162
166 const StringVector& getFragmentShaderProfilesList() const { return mFragmentShaderProfilesList; }
167
175
179 const String& getShaderCachePath() const { return mShaderCachePath; }
180
186
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
274
275
284
293 bool hasShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName) const;
294
305
316 bool createShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName, bool overProgrammable = false);
317
318
328
338 bool removeShaderBasedTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, const String& dstTechniqueSchemeName);
339
340
347 bool removeAllShaderBasedTechniques(const String& materialName, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
348
361
366
372
379
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
426
427
428
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
457
460 const String& getRTShaderScheme(size_t index) const;
461
464
465// Protected types.
466protected:
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:
514
517
520
523
524
527
529 Pass* getSrcPass() { return mSrcPass; }
530
532 Pass* getDstPass() { return mDstPass; }
533
536
538 RenderState* getCustomRenderState() { return mCustomRenderState; }
539
542
543 // Key name for associating with a Pass instance.
545
546 protected:
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:
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
602 bool hasRenderState(unsigned short passIndex);
603
604 // Key name for associating with a Technique instance.
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:
672
673
676 bool empty() const { return mTechniqueEntries.empty(); }
677
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
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.
738protected:
739
742 {
743 public:
745 {
746 mOwner = owner;
747 }
748
752 virtual void notifyRenderSingleObject(Renderable* rend, const Pass* pass,
753 const AutoParamDataSource* source,
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
783 {
784
785 }
786
788 {
789
790 }
791
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
845protected:
848
851
854
856 void _destroy();
857
859 Technique* findSourceTechnique(const String& materialName, const String& groupName, const String& srcTechniqueSchemeName, bool allowProgrammable);
860
863
866
869
872
875
885
895
903
910
912 size_t getNumTranslators() const;
913
916
917
924
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;
950protected:
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
1009private:
1010 friend class SGPass;
1011 friend class FFPRenderStateBuilder;
1015
1016};
1017
1021}
1022}
1023
1024#endif
1025
#define _OgreRTSSExport
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
This utility class is used to hold the information used to generate the matrices and other informatio...
A viewpoint from which the scene will be rendered.
Definition OgreCamera.h:87
Provides methods to find out where the Ogre config files are stored and where logs and settings files...
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
Definition OgreFrustum.h:86
Representation of a dynamic light source in the scene.
Definition OgreLight.h:74
Class for serializing Materials to / from a .material script.
Class defining a single pass of a Technique (of a Material), i.e.
Definition OgrePass.h:81
This abstract node represents a script property.
A singleton manager class that manages shader based programs.
This is a container class for sub render state class.
This class responsible for translating core features of the RT Shader System for Ogre material script...
This class responsible for translating core features of the RT Shader System for Ogre material script...
Shader generator material wrapper class.
const SGTechniqueList & getTechniqueList() const
Get the const techniques list of this material.
SGTechniqueList & getTechniqueList()
Get the techniques list of this material.
const String & getGroupName() const
Get the group name.
SGMaterial(const String &materialName, const String &groupName)
Class constructor.
const String & getMaterialName() const
Get the material name.
Shader generator pass wrapper class.
void setCustomRenderState(RenderState *customRenderState)
Set the custom render state of this pass.
Pass * getDstPass()
Get destination pass.
void buildTargetRenderState()
Build the render state.
SubRenderState * getCustomFFPSubState(int subStateOrder, const RenderState *renderState)
RenderState * getCustomRenderState()
Get custom render state of this pass.
SGPass(SGTechnique *parent, Pass *srcPass, Pass *dstPass)
void releasePrograms()
Release the CPU/GPU programs of this pass.
void notifyRenderSingleObject(Renderable *rend, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)
Called when a single object is about to be rendered.
SubRenderState * getCustomFFPSubState(int subStateOrder)
Get custom FPP sub state of this pass.
void acquirePrograms()
Acquire the CPU/GPU programs for this pass.
Shader generator RenderObjectListener sub class.
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.
virtual void shadowTextureReceiverPreViewProj(Light *light, Frustum *frustum)
This event occurs just before the view & projection matrices are set for re-rendering a shadow receiv...
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...
virtual void preFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Listener overridden function notify the shader generator when finding visible objects process started...
virtual void postFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Called after searching for visible objects in this SceneManager.
virtual void shadowTexturesUpdated(size_t numberOfShadowTextures)
Event raised after all shadow textures have been rendered into for all queues / targets but before an...
void invalidate()
Invalidate the whole scheme.
bool empty() const
Return true if this scheme dose not contains any techniques.
void addTechniqueEntry(SGTechnique *techEntry)
Add a technique to current techniques list.
bool validate(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Validate specific material.
void synchronizeWithLightSettings()
Synchronize the current light settings of this scheme with the current settings of the scene.
RenderState * getRenderState(const String &materialName, const String &groupName, unsigned short passIndex)
Get specific pass render state.
RenderState * getRenderState()
Get global render state of this scheme.
SGScheme(const String &schemeName)
void synchronizeWithFogSettings()
Synchronize the fog settings of this scheme with the current settings of the scene.
void validate()
Validate the whole scheme.
void invalidate(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Invalidate specific material.
void removeTechniqueEntry(SGTechnique *techEntry)
Remove a technique from the current techniques list.
Shader generator ScriptTranslatorManager sub class.
virtual size_t getNumTranslators() const
Returns the number of translators being managed.
virtual ScriptTranslator * getTranslator(const AbstractNodePtr &node)
Returns a manager for the given object abstract node, or null if it is not supported.
Shader generator technique wrapper class.
bool hasRenderState(unsigned short passIndex)
Tells if a custom render state exists for the given pass.
const SGMaterial * getParent() const
Get the parent SGMaterial.
void buildTargetRenderState()
Build the render state.
const String & getDestinationTechniqueSchemeName() const
Get the destination technique scheme name.
SGTechnique(SGMaterial *parent, Technique *srcTechnique, const String &dstTechniqueSchemeName)
Technique * getSourceTechnique()
Get the source technique.
Technique * getDestinationTechnique()
Get the destination technique.
RenderState * getRenderState(unsigned short passIndex)
Get render state of specific pass.
void acquirePrograms()
Acquire the CPU/GPU programs for this technique.
void setBuildDestinationTechnique(bool buildTechnique)
Tells the technique that it needs to generate shader code.
bool getBuildDestinationTechnique() const
Tells if the destination technique should be build.
void destroySGPasses()
Destroy the passes entries.
void releasePrograms()
Release the CPU/GPU programs of this technique.
void createSGPasses()
Create the passes entries.
Shader generator system main interface.
SGTechniqueList::const_iterator SGTechniqueConstIterator
SubRenderStateFactory * getSubRenderStateFactory(const String &type)
Returns a sub render state factory by name.
const String & getRTShaderScheme(size_t index) const
Returns the scheme name used in the for RT shader generation by index.
SceneManager * getActiveSceneManager()
Get the active scene manager that is doint the actual scene rendering.
RenderState * getRenderState(const String &schemeName, const String &materialName, const String &groupName, unsigned short passIndex)
Get render state of specific pass.
vector< SGPass * >::type SGPassList
const String & getTargetLanguage() const
Return the target shader language currently in use.
SubRenderStateFactoryMap::const_iterator SubRenderStateFactoryConstIterator
void removeSceneManager(SceneManager *sceneMgr)
Remove a scene manager from the shader generator scene managers list.
SGMaterialConstIterator findMaterialEntryIt(const String &materialName, const String &groupName) const
bool _initialize()
Initialize the shader generator instance.
void setVertexShaderProfiles(const String &vertexShaderProfiles)
Set the output vertex shader target profiles.
std::pair< SGScheme *, bool > SchemeCreateOrRetrieveResult
void setFragmentShaderProfiles(const String &fragmentShaderProfiles)
Set the output fragment shader target profiles.
map< String, SceneManager * >::type SceneManagerMap
bool removeShaderBasedTechnique(const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
Remove shader based technique from a given technique.
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...
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.
void flushShaderCache()
Flush the shader cache.
static void destroy()
Destroy the Shader Generator instance.
size_t getNumTranslators() const
Return number of script translators.
bool validateMaterial(const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Validate specific material scheme.
RenderState * getRenderState(const String &schemeName, const String &materialName, unsigned short passIndex)
Get render state of specific pass.
RenderState * getRenderState(const String &schemeName)
Return a global render state associated with the given scheme name.
size_t getFragmentShaderCount() const
Return the current number of generated fragment shaders.
void invalidateScheme(const String &schemeName)
Invalidate a given scheme.
void setTargetLanguage(const String &shaderLanguage)
Set the target shader language.
~ShaderGenerator()
Class destructor.
void createScheme(const String &schemeName)
Create a scheme.
map< String, SGScheme * >::type SGSchemeMap
void serializePassAttributes(MaterialSerializer *ser, SGPass *passEntry)
This method called by instance of SGMaterialSerializerListener and serialize a given pass entry attri...
void invalidateMaterial(const String &schemeName, const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Invalidate specific material scheme.
ProgramWriterManager * mProgramWriterManager
static String DEFAULT_SCHEME_NAME
Default material scheme of the shader generator.
bool hasRenderState(const String &schemeName) const
Tells if a given render state exists.
size_t getVertexShaderCount() const
Return the current number of generated vertex shaders.
SGSceneManagerListener * mSceneManagerListener
void destroySubRenderState(SubRenderState *subRenderState)
Destroy an instance of sub render state.
void addSceneManager(SceneManager *sceneMgr)
Add a scene manager to the shader generator scene managers list.
SubRenderStateFactoryMap mSubRenderStateExFactories
SGMaterialMap::const_iterator SGMaterialConstIterator
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.
bool validateScheme(const String &schemeName)
Validate a given scheme.
SGRenderObjectListener * mRenderObjectListener
ShaderGenerator()
Class default constructor.
bool getCreateShaderOverProgrammablePass() const
Returns whether shaders are created for passes with shaders.
SubRenderStateFactoryMap mSubRenderStateFactories
void setShaderCachePath(const String &cachePath)
Set the output shader cache path.
VSOutputCompactPolicy getVertexShaderOutputsCompactPolicy() const
Get the vertex shader outputs compaction policy.
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.
bool createShaderBasedTechnique(const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName, bool overProgrammable=false)
Create shader based technique from a given technique.
const String & getShaderCachePath() const
Get the output shader cache path.
SGMaterialSerializerListener * mMaterialSerializerListener
SceneManagerMap::iterator SceneManagerIterator
RenderStateCreateOrRetrieveResult createOrRetrieveRenderState(const String &schemeName)
Returns a requested render state.
const String & getFragmentShaderProfiles() const
Get the output fragment shader target profiles.
SceneManagerMap::const_iterator SceneManagerConstIterator
bool removeCustomScriptTranslator(const String &key)
Remove custom script translator.
void _destroy()
Destory the shader generator instance.
SGMaterialSerializerListener * getMaterialSerializerListener()
Return custom material Serializer of the shader generator.
ScriptTranslator * getTranslator(const AbstractNodePtr &node)
Return a matching script translator.
static ShaderGenerator * getSingletonPtr()
Override standard Singleton retrieval.
const StringVector & getFragmentShaderProfilesList() const
Get the output fragment shader target profiles as list of strings.
VSOutputCompactPolicy mVSOutputCompactPolicy
size_t getNumSubRenderStateFactories() const
Returns the number of existing factories.
bool removeAllShaderBasedTechniques(const String &materialName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Remove all shader based techniques of the given material.
void setCreateShaderOverProgrammablePass(bool value)
Sets whether shaders are created for passes with shaders.
bool getIsFinalizing() const
Used to check if finalizing.
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.
SubRenderState * createSubRenderState(const String &type)
Create an instance of sub render state from a given type.
SGMaterialMap::iterator SGMaterialIterator
map< String, SubRenderStateFactory * >::type SubRenderStateFactoryMap
SGMaterialIterator findMaterialEntryIt(const String &materialName, const String &groupName)
Finds an entry iterator in the mMaterialEntriesMap map.
bool cloneShaderBasedTechniques(const String &srcMaterialName, const String &srcGroupName, const String &dstMaterialName, const String &dstGroupName)
Clone all shader based techniques from one material to another.
SGScriptTranslatorMap::iterator SGScriptTranslatorIterator
SchemeCreateOrRetrieveResult createOrRetrieveScheme(const String &schemeName)
Returns a requested scheme.
vector< SGTechnique * >::type SGTechniqueList
SubRenderStateFactory * getSubRenderStateFactory(size_t index)
Returns a sub render state factory by index.
bool isProgrammable(Technique *tech) const
Checks if a given technique has passes with shaders.
bool removeShaderBasedTechnique(const String &materialName, const String &srcTechniqueSchemeName, const String &dstTechniqueSchemeName)
Remove shader based technique from a given technique.
void addSubRenderStateFactory(SubRenderStateFactory *factory)
Add sub render state factory.
SubRenderStateFactoryMap::iterator SubRenderStateFactoryIterator
bool addCustomScriptTranslator(const String &key, ScriptTranslator *translator)
Add custom script translator.
void setVertexShaderOutputsCompactPolicy(VSOutputCompactPolicy policy)
Set the vertex shader outputs compaction policy.
std::pair< RenderState *, bool > RenderStateCreateOrRetrieveResult
void serializeTextureUnitStateAttributes(MaterialSerializer *ser, SGPass *passEntry, const TextureUnitState *srcTextureUnit)
This method called by instance of SGMaterialSerializerListener and serialize a given textureUnitState...
Technique * findSourceTechnique(const String &materialName, const String &groupName, const String &srcTechniqueSchemeName, bool allowProgrammable)
Find source technique to generate shader based technique based on it.
SGSchemeMap::const_iterator SGSchemeConstIterator
static bool initialize()
Initialize the Shader Generator System.
SGTechniqueMap::iterator SGTechniqueMapIterator
SGTechniqueList::iterator SGTechniqueIterator
map< MatGroupPair, SGMaterial *, MatGroupPair_less >::type SGMaterialMap
void createSubRenderStateExFactories()
Create sub render state core extensions factories.
map< String, ScriptTranslator * >::type SGScriptTranslatorMap
void removeSubRenderStateFactory(SubRenderStateFactory *factory)
Remove sub render state factory.
FFPRenderStateBuilder * mFFPRenderStateBuilder
void removeAllShaderBasedTechniques()
Remove all shader based techniques that created by this shader generator.
std::pair< String, String > MatGroupPair
SGPassList::const_iterator SGPassConstIterator
const String & getVertexShaderProfiles() const
Get the output vertex shader target profiles.
void preFindVisibleObjects(SceneManager *source, SceneManager::IlluminationRenderStage irs, Viewport *v)
Called from the sub class of the SceneManager::Listener when finding visible object process starts.
map< SGTechnique *, SGTechnique * >::type SGTechniqueMap
SGScriptTranslatorMap::const_iterator SGScriptTranslatorConstIterator
void destroySubRenderStateExFactories()
Destroy sub render state core extensions factories.
static ShaderGenerator & getSingleton()
Override standard Singleton retrieval.
SGScriptTranslatorManager * mScriptTranslatorManager
SGScriptTranslatorMap mScriptTranslatorsMap
const StringVector & getVertexShaderProfilesList() const
Get the output vertex shader target profiles as list of strings.
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...
size_t getRTShaderSchemeCount() const
Returns the amount of schemes used in the for RT shader generation.
Abstract factory interface for creating SubRenderState implementation instances.
This class is the base interface of sub part from a shader based rendering pipeline.
This is the target render state.
Abstract interface which classes must implement if they wish to receive events from the scene manager...
Abstract class defining the interface all renderable objects must implement.
Class that allows listening in on the various stages of SceneManager processing, so that custom behav...
Manages the organisation and rendering of a 'scene' i.e.
IlluminationRenderStage
Describes the stage of rendering when performing complex illumination.
This is the main class for the compiler.
The ScriptTranslatorManager manages the lifetime and access to script translators.
This class translates script AST (abstract syntax tree) into Ogre resources.
Reference-counted shared pointer, used for objects where implicit destruction is required.
Template class for creating single-instance global classes.
Class representing an approach to rendering this particular Material.
Class representing the state of a single texture unit during a Pass of a Technique,...
An abstraction of a viewport, i.e.
FogMode
Fog modes.
Definition OgreCommon.h:122
_StringBase String
bool operator()(const MatGroupPair &p1, const MatGroupPair &p2) const
std::map< K, V, P, A > type
std::vector< T, A > type

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