27 #ifndef _ShaderSubRenderState_
28 #define _ShaderSubRenderState_
73 virtual const String& getType()
const = 0;
81 virtual int getExecutionOrder()
const = 0;
100 virtual bool createCpuSubPrograms(
ProgramSet* programSet);
125 SubRenderStateAccessorPtr getAccessor();
130 SubRenderStateAccessorPtr getAccessor()
const;
139 virtual bool resolveParameters(
ProgramSet* programSet);
145 virtual bool resolveDependencies(
ProgramSet* programSet);
151 virtual bool addFunctionInvocations(
ProgramSet* programSet);
184 mSubRenderStateInstancesSet.insert(subRenderState);
191 SubRenderStateSetIterator itFind = mSubRenderStateInstancesSet.find(subRenderState);
193 if (itFind != mSubRenderStateInstancesSet.end())
195 mSubRenderStateInstancesSet.erase(itFind);
244 virtual const String& getType()
const = 0;
283 virtual void destroyAllInstances();
virtual SubRenderState * createInstance(ScriptCompiler *compiler, PropertyAbstractNode *prop, TextureUnitState *texState, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties.
const SubRenderStateSet & getSubRenderStateInstanceSet() const
Return a set of all instances of the template SubRenderState.
Abstract class defining the interface all renderable objects must implement.
Class for serializing Materials to / from a .material script.
Class defining a single pass of a Technique (of a Material), i.e.
set< SubRenderState * >::type SubRenderStateSet
This class is the base interface of sub part from a shader based rendering pipeline.
SubRenderStateList::const_iterator SubRenderStateListConstIterator
virtual SubRenderState * createInstance(ScriptCompiler *compiler, PropertyAbstractNode *prop, Pass *pass, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties.
vector< SubRenderState * >::type SubRenderStateList
void removeSubRenderStateInstance(SubRenderState *subRenderState) const
Remove SubRenderState instance to this accessor.
SubRenderStateSet & getSubRenderStateInstanceSet()
Return a set of all instances of the template SubRenderState.
SubRenderStateSet::iterator SubRenderStateSetIterator
SubRenderStateSet mSubRenderStateList
SharedPtr< SubRenderStateAccessor > SubRenderStateAccessorPtr
const SubRenderState * mTemplateSubRenderState
Container class for shader based programs.
SubRenderStateSet::const_iterator SubRenderStateSetConstIterator
Class representing the state of a single texture unit during a Pass of a Technique, of a Material.
virtual bool preAddToRenderState(const RenderState *renderState, Pass *srcPass, Pass *dstPass)
Called before adding this sub render state to the given render state.
This is a container class for sub render state class.
virtual void writeInstance(MaterialSerializer *ser, SubRenderState *subRenderState, Pass *srcPass, Pass *dstPass)
Write the given sub-render state instance using the material serializer.
This class responsible for translating core features of the RT Shader System for Ogre material script...
SubRenderStateAccessorPtr mOtherAccessor
This abstract node represents a script property.
virtual void writeInstance(MaterialSerializer *ser, SubRenderState *subRenderState, const TextureUnitState *srcTextureUnit, const TextureUnitState *dstTextureUnit)
Write the given sub-render state instance using the material serializer.
virtual void updateGpuProgramsParams(Renderable *rend, Pass *pass, const AutoParamDataSource *source, const LightList *pLightList)
Update GPU programs parameters before a rendering operation occurs.
SubRenderStateAccessor(const SubRenderState *templateSubRenderState)
Construct SubRenderState accessor based on the given template SubRenderState.
SubRenderStateSet mSubRenderStateInstancesSet
Abstract factory interface for creating SubRenderState implementation instances.
SubRenderStateList::iterator SubRenderStateListIterator
This class uses as accessor from a template SubRenderState to all of its instances that created based...
SubRenderStateAccessorPtr mThisAccessor
void addSubRenderStateInstance(SubRenderState *subRenderState) const
Add SubRenderState instance to this accessor.
This utility class is used to hold the information used to generate the matrices and other informatio...
This is the main class for the compiler.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...