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);
182 mSubRenderStateInstancesSet.insert(subRenderState);
191 if (itFind != mSubRenderStateInstancesSet.end())
193 mSubRenderStateInstancesSet.erase(itFind);
242 virtual const String& getType ()
const = 0;
264 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.
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.
virtual bool preAddToRenderState(RenderState *renderState, Pass *srcPass, Pass *dstPass)
Called before adding this sub render state to the given render state.
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, Pass *pass)
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.
SubRenderStateAccessorPtr mThisAccessor
void removeSubRenderStateInstance(SubRenderState *subRenderState) const
Remove SubRenderState instance to this accessor.
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...