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