27#ifndef _ShaderProgram_
28#define _ShaderProgram_
AutoConstantType
Defines the types of automatically updated values that may be bound to GpuProgram parameters,...
A class that represents a shader based program function.
StringVector mDependencies
const UniformParameterList & getParameters() const
Get the list of uniform parameters of this program.
Program(GpuProgramType type)
Class constructor.
UniformParameterPtr resolveAutoParameterInt(GpuProgramParameters::AutoConstantType autoType, size_t data, size_t size=0)
Resolve uniform auto constant parameter with associated int data of this program.
~Program()
Class destructor.
void setEntryPointFunction(Function *function)
Set the entry point function.
void setSkeletalAnimationIncluded(bool value)
Sets whether a vertex program includes the required instructions to perform skeletal animation.
void destroyFunctions()
Destroy all functions of this program.
ShaderFunctionList mFunctions
UniformParameterPtr resolveParameter(GpuConstantType type, int index, uint16 variability, const String &suggestedName, size_t size=0)
Resolve uniform parameter of this program.
bool mColumnMajorMatrices
const ShaderFunctionList & getFunctions() const
Get the function list of this program.
Function * getEntryPointFunction()
Get the entry point function of this program.
void removeParameter(UniformParameterPtr parameter)
Remove parameter from this program.
GpuProgramType getType() const
Get the type of this program.
void addDependency(const String &libFileName)
Add dependency for this program.
const String & getDependency(unsigned int index) const
Get the library name of the given index dependency.
size_t getDependencyCount() const
Get the number of external libs this program depends on.
UniformParameterPtr getParameterByName(const String &name)
Get parameter by a given name.
Function * createFunction(const String &name, const String &desc, const Function::FunctionType functionType)
Create new function in this program.
void setUseColumnMajorMatrices(bool value)
Tells Ogre whether auto-bound matrices should be sent in column or row-major order.
void addParameter(UniformParameterPtr parameter)
Add parameter to this program.
Function * getFunctionByName(const String &name)
Get a function by a given name.
UniformParameterPtr getParameterByType(GpuConstantType type, int index)
Get parameter by a given type and index.
void destroyParameters()
Destroy all parameters of this program.
UniformParameterPtr resolveAutoParameterReal(GpuProgramParameters::AutoConstantType autoType, Real data, size_t size=0)
Resolve uniform auto constant parameter with associated real data of this program.
friend class ProgramManager
bool getSkeletalAnimationIncluded() const
Returns whether a vertex program includes the required instructions to perform skeletal animation.
Function * mEntryPointFunction
UniformParameterList mParameters
bool getUseColumnMajorMatrices() const
Returns whether Ogre will pass auto-bound matrices as column-major.
UniformParameterPtr getParameterByAutoType(GpuProgramParameters::AutoConstantType autoType)
Get parameter by a given auto constant type.
UniformParameterPtr resolveAutoParameterInt(GpuProgramParameters::AutoConstantType autoType, GpuConstantType type, size_t data, size_t size=0)
Resolve uniform auto constant parameter with associated int data of this program.
UniformParameterPtr resolveAutoParameterReal(GpuProgramParameters::AutoConstantType autoType, GpuConstantType type, Real data, size_t size=0)
Resolve uniform auto constant parameter with associated real data of this program.
vector< String >::type StringVector
GpuConstantType
Enumeration of the types of constant we may encounter in programs.
vector< UniformParameterPtr >::type UniformParameterList
vector< Function * >::type ShaderFunctionList
SharedPtr< UniformParameter > UniformParameterPtr
GpuProgramType
Enumerates the types of programs which can run on the GPU.
GeneralAllocatedObject RTShaderSystemAlloc
float Real
Software floating point type.