27#ifndef _ShaderSubRenderState_
28#define _ShaderSubRenderState_
184 mSubRenderStateInstancesSet.insert(subRenderState);
193 if (itFind != mSubRenderStateInstancesSet.end())
195 mSubRenderStateInstancesSet.erase(itFind);
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...
Class for serializing Materials to / from a .material script.
Class defining a single pass of a Technique (of a Material), i.e.
This abstract node represents a script property.
Container class for 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 uses as accessor from a template SubRenderState to all of its instances that created based...
void addSubRenderStateInstance(SubRenderState *subRenderState) const
Add SubRenderState instance to this accessor.
SubRenderStateSet & getSubRenderStateInstanceSet()
Return a set of all instances of the template SubRenderState.
const SubRenderStateSet & getSubRenderStateInstanceSet() const
Return a set of all instances of the template SubRenderState.
SubRenderStateAccessor(const SubRenderState *templateSubRenderState)
Construct SubRenderState accessor based on the given template SubRenderState.
const SubRenderState * mTemplateSubRenderState
void removeSubRenderStateInstance(SubRenderState *subRenderState) const
Remove SubRenderState instance to this accessor.
SubRenderStateSet mSubRenderStateInstancesSet
Abstract factory interface for creating SubRenderState implementation instances.
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 destroyInstance(SubRenderState *subRenderState)
Destroy the given instance.
virtual SubRenderState * createOrRetrieveInstance(SGScriptTranslator *translator)
Retrieve the previous instance the SRS in the script translator or create a new instance if not found...
SubRenderStateSet mSubRenderStateList
virtual SubRenderState * createInstance(ScriptCompiler *compiler, PropertyAbstractNode *prop, TextureUnitState *texState, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties.
virtual ~SubRenderStateFactory()
virtual void destroyAllInstances()
Destroy all the instances that created by this factory.
virtual const String & getType() const =0
Get the type of this sub render state factory.
virtual SubRenderState * createInstance(ScriptCompiler *compiler, PropertyAbstractNode *prop, Pass *pass, SGScriptTranslator *translator)
Create an instance of the SubRenderState based on script properties.
virtual void writeInstance(MaterialSerializer *ser, SubRenderState *subRenderState, Pass *srcPass, Pass *dstPass)
Write the given sub-render state instance using the material serializer.
virtual SubRenderState * createInstance()
Create an instance of the SubRenderState sub class it suppose to create.
virtual SubRenderState * createInstanceImpl()=0
Create instance implementation method.
This class is the base interface of sub part from a shader based rendering pipeline.
SubRenderStateAccessorPtr mOtherAccessor
virtual bool resolveDependencies(ProgramSet *programSet)
Resolve dependencies that this sub render state requires.
virtual const String & getType() const =0
Get the type of this sub render state.
virtual bool createCpuSubPrograms(ProgramSet *programSet)
Create sub programs that represents this sub render state as part of a program set.
virtual void updateGpuProgramsParams(Renderable *rend, Pass *pass, const AutoParamDataSource *source, const LightList *pLightList)
Update GPU programs parameters before a rendering operation occurs.
SubRenderState()
Class default constructor.
virtual void copyFrom(const SubRenderState &rhs)=0
Copy details from a given sub render state to this one.
virtual bool addFunctionInvocations(ProgramSet *programSet)
Add function invocation that this sub render state requires.
SubRenderStateAccessorPtr getAccessor() const
Return the accessor object to this sub render state.
SubRenderStateAccessorPtr getAccessor()
Return the accessor object to this sub render state.
virtual bool resolveParameters(ProgramSet *programSet)
Resolve parameters that this sub render state requires.
virtual int getExecutionOrder() const =0
Get the execution order of this sub render state.
virtual ~SubRenderState()
Class destructor.
SubRenderStateAccessorPtr mThisAccessor
virtual bool preAddToRenderState(const RenderState *renderState, Pass *srcPass, Pass *dstPass)
Called before adding this sub render state to the given render state.
Abstract class defining the interface all renderable objects must implement.
This is the main class for the compiler.
Class representing the state of a single texture unit during a Pass of a Technique,...
SubRenderStateSet::const_iterator SubRenderStateSetConstIterator
vector< SubRenderState * >::type SubRenderStateList
SubRenderStateList::const_iterator SubRenderStateListConstIterator
set< SubRenderState * >::type SubRenderStateSet
SubRenderStateList::iterator SubRenderStateListIterator
SubRenderStateSet::iterator SubRenderStateSetIterator
SharedPtr< SubRenderStateAccessor > SubRenderStateAccessorPtr