Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
Ogre::GpuProgramParameters Class Reference

Collects together the program parameters used for a GpuProgram. More...

#include <OgreGpuProgramParams.h>

Inheritance diagram for Ogre::GpuProgramParameters:
Inheritance graph
[legend]

Classes

struct  AutoConstantDefinition
 Structure defining an auto constant that's available for use in a parameters object. More...
 
class  AutoConstantEntry
 Structure recording the use of an automatic parameter. More...
 

Public Types

enum  ACDataType { ACDT_NONE, ACDT_INT, ACDT_REAL }
 Defines the type of the extra data item used by the auto constant. More...
 
typedef ConstVectorIterator
< AutoConstantList
AutoConstantIterator
 
typedef vector
< AutoConstantEntry >::type 
AutoConstantList
 
enum  AutoConstantType {
  ACT_WORLD_MATRIX, ACT_INVERSE_WORLD_MATRIX, ACT_TRANSPOSE_WORLD_MATRIX, ACT_INVERSE_TRANSPOSE_WORLD_MATRIX,
  ACT_WORLD_MATRIX_ARRAY_3x4, ACT_WORLD_MATRIX_ARRAY, ACT_WORLD_DUALQUATERNION_ARRAY_2x4, ACT_WORLD_SCALE_SHEAR_MATRIX_ARRAY_3x4,
  ACT_VIEW_MATRIX, ACT_INVERSE_VIEW_MATRIX, ACT_TRANSPOSE_VIEW_MATRIX, ACT_INVERSE_TRANSPOSE_VIEW_MATRIX,
  ACT_PROJECTION_MATRIX, ACT_INVERSE_PROJECTION_MATRIX, ACT_TRANSPOSE_PROJECTION_MATRIX, ACT_INVERSE_TRANSPOSE_PROJECTION_MATRIX,
  ACT_VIEWPROJ_MATRIX, ACT_INVERSE_VIEWPROJ_MATRIX, ACT_TRANSPOSE_VIEWPROJ_MATRIX, ACT_INVERSE_TRANSPOSE_VIEWPROJ_MATRIX,
  ACT_WORLDVIEW_MATRIX, ACT_INVERSE_WORLDVIEW_MATRIX, ACT_TRANSPOSE_WORLDVIEW_MATRIX, ACT_INVERSE_TRANSPOSE_WORLDVIEW_MATRIX,
  ACT_WORLDVIEWPROJ_MATRIX, ACT_INVERSE_WORLDVIEWPROJ_MATRIX, ACT_TRANSPOSE_WORLDVIEWPROJ_MATRIX, ACT_INVERSE_TRANSPOSE_WORLDVIEWPROJ_MATRIX,
  ACT_RENDER_TARGET_FLIPPING, ACT_VERTEX_WINDING, ACT_FOG_COLOUR, ACT_FOG_PARAMS,
  ACT_SURFACE_AMBIENT_COLOUR, ACT_SURFACE_DIFFUSE_COLOUR, ACT_SURFACE_SPECULAR_COLOUR, ACT_SURFACE_EMISSIVE_COLOUR,
  ACT_SURFACE_SHININESS, ACT_SURFACE_ALPHA_REJECTION_VALUE, ACT_LIGHT_COUNT, ACT_AMBIENT_LIGHT_COLOUR,
  ACT_LIGHT_DIFFUSE_COLOUR, ACT_LIGHT_SPECULAR_COLOUR, ACT_LIGHT_ATTENUATION, ACT_SPOTLIGHT_PARAMS,
  ACT_LIGHT_POSITION, ACT_LIGHT_POSITION_OBJECT_SPACE, ACT_LIGHT_POSITION_VIEW_SPACE, ACT_LIGHT_DIRECTION,
  ACT_LIGHT_DIRECTION_OBJECT_SPACE, ACT_LIGHT_DIRECTION_VIEW_SPACE, ACT_LIGHT_DISTANCE_OBJECT_SPACE, ACT_LIGHT_POWER_SCALE,
  ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED, ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED, ACT_LIGHT_DIFFUSE_COLOUR_ARRAY, ACT_LIGHT_SPECULAR_COLOUR_ARRAY,
  ACT_LIGHT_DIFFUSE_COLOUR_POWER_SCALED_ARRAY, ACT_LIGHT_SPECULAR_COLOUR_POWER_SCALED_ARRAY, ACT_LIGHT_ATTENUATION_ARRAY, ACT_LIGHT_POSITION_ARRAY,
  ACT_LIGHT_POSITION_OBJECT_SPACE_ARRAY, ACT_LIGHT_POSITION_VIEW_SPACE_ARRAY, ACT_LIGHT_DIRECTION_ARRAY, ACT_LIGHT_DIRECTION_OBJECT_SPACE_ARRAY,
  ACT_LIGHT_DIRECTION_VIEW_SPACE_ARRAY, ACT_LIGHT_DISTANCE_OBJECT_SPACE_ARRAY, ACT_LIGHT_POWER_SCALE_ARRAY, ACT_SPOTLIGHT_PARAMS_ARRAY,
  ACT_DERIVED_AMBIENT_LIGHT_COLOUR, ACT_DERIVED_SCENE_COLOUR, ACT_DERIVED_LIGHT_DIFFUSE_COLOUR, ACT_DERIVED_LIGHT_SPECULAR_COLOUR,
  ACT_DERIVED_LIGHT_DIFFUSE_COLOUR_ARRAY, ACT_DERIVED_LIGHT_SPECULAR_COLOUR_ARRAY, ACT_LIGHT_NUMBER, ACT_LIGHT_CASTS_SHADOWS,
  ACT_LIGHT_CASTS_SHADOWS_ARRAY, ACT_SHADOW_EXTRUSION_DISTANCE, ACT_CAMERA_POSITION, ACT_CAMERA_POSITION_OBJECT_SPACE,
  ACT_TEXTURE_VIEWPROJ_MATRIX, ACT_TEXTURE_VIEWPROJ_MATRIX_ARRAY, ACT_TEXTURE_WORLDVIEWPROJ_MATRIX, ACT_TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY,
  ACT_SPOTLIGHT_VIEWPROJ_MATRIX, ACT_SPOTLIGHT_VIEWPROJ_MATRIX_ARRAY, ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX, ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX_ARRAY,
  ACT_CUSTOM, ACT_TIME, ACT_TIME_0_X, ACT_COSTIME_0_X,
  ACT_SINTIME_0_X, ACT_TANTIME_0_X, ACT_TIME_0_X_PACKED, ACT_TIME_0_1,
  ACT_COSTIME_0_1, ACT_SINTIME_0_1, ACT_TANTIME_0_1, ACT_TIME_0_1_PACKED,
  ACT_TIME_0_2PI, ACT_COSTIME_0_2PI, ACT_SINTIME_0_2PI, ACT_TANTIME_0_2PI,
  ACT_TIME_0_2PI_PACKED, ACT_FRAME_TIME, ACT_FPS, ACT_VIEWPORT_WIDTH,
  ACT_VIEWPORT_HEIGHT, ACT_INVERSE_VIEWPORT_WIDTH, ACT_INVERSE_VIEWPORT_HEIGHT, ACT_VIEWPORT_SIZE,
  ACT_VIEW_DIRECTION, ACT_VIEW_SIDE_VECTOR, ACT_VIEW_UP_VECTOR, ACT_FOV,
  ACT_NEAR_CLIP_DISTANCE, ACT_FAR_CLIP_DISTANCE, ACT_PASS_NUMBER, ACT_PASS_ITERATION_NUMBER,
  ACT_ANIMATION_PARAMETRIC, ACT_TEXEL_OFFSETS, ACT_SCENE_DEPTH_RANGE, ACT_SHADOW_SCENE_DEPTH_RANGE,
  ACT_SHADOW_SCENE_DEPTH_RANGE_ARRAY, ACT_SHADOW_COLOUR, ACT_TEXTURE_SIZE, ACT_INVERSE_TEXTURE_SIZE,
  ACT_PACKED_TEXTURE_SIZE, ACT_TEXTURE_MATRIX, ACT_LOD_CAMERA_POSITION, ACT_LOD_CAMERA_POSITION_OBJECT_SPACE,
  ACT_LIGHT_CUSTOM, ACT_UNKNOWN = 999
}
 Defines the types of automatically updated values that may be bound to GpuProgram parameters, or used to modify parameters on a per-object basis. More...
 
enum  ElementType { ET_INT, ET_REAL }
 Defines the base element type of the auto constant. More...
 
typedef vector
< GpuSharedParametersUsage >
::type 
GpuSharedParamUsageList
 
typedef HashMap< unsigned int,
String >::const_iterator 
SubroutineIterator
 
typedef HashMap< unsigned int,
String
SubroutineMap
 

Public Member Functions

 GpuProgramParameters ()
 
 GpuProgramParameters (const GpuProgramParameters &oth)
 Copy constructor. More...
 
 ~GpuProgramParameters ()
 
void _copySharedParams ()
 Update the parameters by copying the data from the shared parameters. More...
 
const GpuConstantDefinition_findNamedConstantDefinition (const String &name, bool throwExceptionIfMissing=false) const
 Find a constant definition for a named parameter. More...
 
const AutoConstantEntry_findRawAutoConstantEntryDouble (size_t physicalIndex)
 Finds an auto constant that's affecting a given physical position in the double-point buffer. More...
 
const AutoConstantEntry_findRawAutoConstantEntryFloat (size_t physicalIndex)
 Finds an auto constant that's affecting a given physical position in the floating-point buffer. More...
 
const AutoConstantEntry_findRawAutoConstantEntryInt (size_t physicalIndex)
 Finds an auto constant that's affecting a given physical position in the integer buffer. More...
 
size_t _getDoubleConstantPhysicalIndex (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the physical buffer index associated with a logical double constant index. More...
 
size_t _getFloatConstantPhysicalIndex (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the physical buffer index associated with a logical float constant index. More...
 
size_t _getIntConstantPhysicalIndex (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the physical buffer index associated with a logical int constant index. More...
 
const Any_getRenderSystemData () const
 Internal method that the RenderSystem might use to store optional data. More...
 
void _readRawConstants (size_t physicalIndex, size_t count, float *dest)
 Read a series of floating point values from the underlying float constant buffer at the given physical index. More...
 
void _readRawConstants (size_t physicalIndex, size_t count, int *dest)
 Read a series of integer values from the underlying integer constant buffer at the given physical index. More...
 
void _setLogicalIndexes (const GpuLogicalBufferStructPtr &floatIndexMap, const GpuLogicalBufferStructPtr &doubleIndexMap, const GpuLogicalBufferStructPtr &intIndexMap)
 Internal method for providing a link to a logical index->physical index map for parameters. More...
 
void _setNamedConstants (const GpuNamedConstantsPtr &constantmap)
 Internal method for providing a link to a name->definition map for parameters. More...
 
void _setRawAutoConstant (size_t physicalIndex, AutoConstantType acType, size_t extraInfo, uint16 variability, size_t elementSize=4)
 As setAutoConstant, but sets up the auto constant directly against a physical buffer index. More...
 
void _setRawAutoConstantReal (size_t physicalIndex, AutoConstantType acType, Real rData, uint16 variability, size_t elementSize=4)
 As setAutoConstantReal, but sets up the auto constant directly against a physical buffer index. More...
 
void _setRenderSystemData (const Any &data) const
 Internal method that the RenderSystem might use to store optional data. More...
 
void _updateAutoParams (const AutoParamDataSource *source, uint16 variabilityMask)
 Update automatic parameters. More...
 
void _writeRawConstant (size_t physicalIndex, const Vector4 &vec, size_t count=4)
 Write a 4-element floating-point parameter to the program directly to the underlying constants buffer. More...
 
void _writeRawConstant (size_t physicalIndex, Real val)
 Write a single floating-point parameter to the program. More...
 
void _writeRawConstant (size_t physicalIndex, Real val, size_t count)
 Write a variable number of floating-point parameters to the program. More...
 
void _writeRawConstant (size_t physicalIndex, int val)
 Write a single integer parameter to the program. More...
 
void _writeRawConstant (size_t physicalIndex, const Vector3 &vec)
 Write a 3-element floating-point parameter to the program via Vector3. More...
 
void _writeRawConstant (size_t physicalIndex, const Vector2 &vec)
 Write a 2-element floating-point parameter to the program via Vector2. More...
 
void _writeRawConstant (size_t physicalIndex, const Matrix4 &m, size_t elementCount)
 Write a Matrix4 parameter to the program. More...
 
void _writeRawConstant (size_t physicalIndex, const Matrix4 *m, size_t numEntries)
 Write a list of Matrix4 parameters to the program. More...
 
void _writeRawConstant (size_t physicalIndex, const ColourValue &colour, size_t count=4)
 Write a ColourValue parameter to the program. More...
 
void _writeRawConstants (size_t physicalIndex, const float *val, size_t count)
 Write a series of floating point values into the underlying float constant buffer at the given physical index. More...
 
void _writeRawConstants (size_t physicalIndex, const double *val, size_t count)
 Write a series of floating point values into the underlying float constant buffer at the given physical index. More...
 
void _writeRawConstants (size_t physicalIndex, const int *val, size_t count)
 Write a series of integer values into the underlying integer constant buffer at the given physical index. More...
 
void addSharedParameters (GpuSharedParametersPtr sharedParams)
 Use a set of shared parameters in this parameters object. More...
 
void addSharedParameters (const String &sharedParamsName)
 Use a set of shared parameters in this parameters object. More...
 
size_t calculateSize (void) const
 
void clearAutoConstant (size_t index)
 Unbind an auto constant so that the constant is manually controlled again. More...
 
void clearAutoConstants (void)
 Clears all the existing automatic constants. More...
 
void clearNamedAutoConstant (const String &name)
 Unbind an auto constant so that the constant is manually controlled again. More...
 
void copyConstantsFrom (const GpuProgramParameters &source)
 Copies the values of all constants (including auto constants) from another GpuProgramParameters object. More...
 
void copyMatchingNamedConstantsFrom (const GpuProgramParameters &source)
 Copies the values of all matching named constants (including auto constants) from another GpuProgramParameters object. More...
 
const AutoConstantEntryfindAutoConstantEntry (const String &paramName)
 Finds an auto constant that's affecting a given named parameter index. More...
 
const AutoConstantEntryfindDoubleAutoConstantEntry (size_t logicalIndex)
 Finds an auto constant that's affecting a given logical parameter index for double-point values. More...
 
const AutoConstantEntryfindFloatAutoConstantEntry (size_t logicalIndex)
 Finds an auto constant that's affecting a given logical parameter index for floating-point values. More...
 
const AutoConstantEntryfindIntAutoConstantEntry (size_t logicalIndex)
 Finds an auto constant that's affecting a given logical parameter index for integer values. More...
 
size_t getAutoConstantCount (void) const
 Gets the number of int constants that have been set. More...
 
AutoConstantEntrygetAutoConstantEntry (const size_t index)
 Gets a specific Auto Constant entry if index is in valid range otherwise returns a NULL. More...
 
AutoConstantIterator getAutoConstantIterator (void) const
 Gets an iterator over the automatic constant bindings currently in place. More...
 
const AutoConstantListgetAutoConstantList () const
 Get a reference to the list of auto constant bindings. More...
 
const GpuConstantDefinitiongetConstantDefinition (const String &name) const
 Get a specific GpuConstantDefinition for a named parameter. More...
 
GpuConstantDefinitionIterator getConstantDefinitionIterator (void) const
 Gets an iterator over the named GpuConstantDefinition instances as defined by the program for which these parameters exist. More...
 
const GpuNamedConstantsgetConstantDefinitions () const
 Get the full list of GpuConstantDefinition instances. More...
 
const DoubleConstantListgetDoubleConstantList () const
 Get a reference to the list of double constants. More...
 
const GpuLogicalBufferStructPtrgetDoubleLogicalBufferStruct () const
 Retrieves the logical index relating to a physical index in the int buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes). More...
 
size_t getDoubleLogicalIndexForPhysicalIndex (size_t physicalIndex)
 Retrieves the logical index relating to a physical index in the double buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes). More...
 
double * getDoublePointer (size_t pos)
 Get a pointer to the 'nth' item in the double buffer. More...
 
const double * getDoublePointer (size_t pos) const
 Get a pointer to the 'nth' item in the double buffer. More...
 
const FloatConstantListgetFloatConstantList () const
 Get a reference to the list of float constants. More...
 
const GpuLogicalBufferStructPtrgetFloatLogicalBufferStruct () const
 Get the current list of mappings from low-level logical param indexes to physical buffer locations in the float buffer. More...
 
size_t getFloatLogicalIndexForPhysicalIndex (size_t physicalIndex)
 Retrieves the logical index relating to a physical index in the float buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes). More...
 
float * getFloatPointer (size_t pos)
 Get a pointer to the 'nth' item in the float buffer. More...
 
const float * getFloatPointer (size_t pos) const
 Get a pointer to the 'nth' item in the float buffer. More...
 
const IntConstantListgetIntConstantList () const
 Get a reference to the list of int constants. More...
 
const GpuLogicalBufferStructPtrgetIntLogicalBufferStruct () const
 Get the current list of mappings from low-level logical param indexes to physical buffer locations in the integer buffer. More...
 
size_t getIntLogicalIndexForPhysicalIndex (size_t physicalIndex)
 Retrieves the logical index relating to a physical index in the int buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes). More...
 
int * getIntPointer (size_t pos)
 Get a pointer to the 'nth' item in the int buffer. More...
 
const int * getIntPointer (size_t pos) const
 Get a pointer to the 'nth' item in the int buffer. More...
 
size_t getPassIterationNumberIndex () const
 Get the physical buffer index of the pass iteration number constant. More...
 
const GpuSharedParamUsageListgetSharedParameters () const
 Get the list of shared parameter sets. More...
 
const SubroutineMapgetSubroutineMap () const
 Get map with. More...
 
bool getTransposeMatrices (void) const
 Gets whether or not matrices are to be transposed when set. More...
 
bool hasAutoConstants (void) const
 Returns true if this instance has any automatic constants. More...
 
bool hasLogicalIndexedParameters () const
 Does this parameter set include logically indexed parameters? More...
 
bool hasNamedParameters () const
 Does this parameter set include named parameters? More...
 
bool hasPassIterationNumber () const
 Does this parameters object have a pass iteration number constant? More...
 
void incPassIterationNumber (void)
 increments the multipass number entry by 1 if it exists More...
 
bool isUsingSharedParameters (const String &sharedParamsName) const
 Returns whether this parameter set is using the named shared parameter set. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
GpuProgramParametersoperator= (const GpuProgramParameters &oth)
 Operator = overload. More...
 
void removeAllSharedParameters ()
 Stop using all shared parameter sets. More...
 
void removeSharedParameters (const String &sharedParamsName)
 Stop using the named shared parameter set. More...
 
void setAutoConstant (size_t index, AutoConstantType acType, size_t extraInfo=0)
 Sets up a constant which will automatically be updated by the system. More...
 
void setAutoConstant (size_t index, AutoConstantType acType, uint16 extraInfo1, uint16 extraInfo2)
 Sets up a constant which will automatically be updated by the system. More...
 
void setAutoConstantReal (size_t index, AutoConstantType acType, Real rData)
 
void setConstant (size_t index, const Vector4 &vec)
 Sets a 4-element floating-point parameter to the program. More...
 
void setConstant (size_t index, Real val)
 Sets a single floating-point parameter to the program. More...
 
void setConstant (size_t index, const Vector3 &vec)
 Sets a 4-element floating-point parameter to the program via Vector3. More...
 
void setConstant (size_t index, const Vector2 &vec)
 Sets a 4-element floating-point parameter to the program via Vector2. More...
 
void setConstant (size_t index, const Matrix4 &m)
 Sets a Matrix4 parameter to the program. More...
 
void setConstant (size_t index, const Matrix4 *m, size_t numEntries)
 Sets a list of Matrix4 parameters to the program. More...
 
void setConstant (size_t index, const float *val, size_t count)
 Sets a multiple value constant floating-point parameter to the program. More...
 
void setConstant (size_t index, const double *val, size_t count)
 Sets a multiple value constant floating-point parameter to the program. More...
 
void setConstant (size_t index, const ColourValue &colour)
 Sets a ColourValue parameter to the program. More...
 
void setConstant (size_t index, const int *val, size_t count)
 Sets a multiple value constant integer parameter to the program. More...
 
void setConstantFromTime (size_t index, Real factor)
 Sets a named parameter up to track a derivation of the current time. More...
 
void setIgnoreMissingParams (bool state)
 Tells the program whether to ignore missing parameters or not. More...
 
void setNamedAutoConstant (const String &name, AutoConstantType acType, size_t extraInfo=0)
 Sets up a constant which will automatically be updated by the system. More...
 
void setNamedAutoConstant (const String &name, AutoConstantType acType, uint16 extraInfo1, uint16 extraInfo2)
 Sets up a constant which will automatically be updated by the system. More...
 
void setNamedAutoConstantReal (const String &name, AutoConstantType acType, Real rData)
 
void setNamedConstant (const String &name, Real val)
 Sets a single value constant floating-point parameter to the program. More...
 
void setNamedConstant (const String &name, int val)
 Sets a single value constant integer parameter to the program. More...
 
void setNamedConstant (const String &name, const Vector4 &vec)
 Sets a Vector4 parameter to the program. More...
 
void setNamedConstant (const String &name, const Vector3 &vec)
 Sets a Vector3 parameter to the program. More...
 
void setNamedConstant (const String &name, const Vector2 &vec)
 Sets a Vector2 parameter to the program. More...
 
void setNamedConstant (const String &name, const Matrix4 &m)
 Sets a Matrix4 parameter to the program. More...
 
void setNamedConstant (const String &name, const Matrix4 *m, size_t numEntries)
 Sets a list of Matrix4 parameters to the program. More...
 
void setNamedConstant (const String &name, const float *val, size_t count, size_t multiple=4)
 Sets a multiple value constant floating-point parameter to the program. More...
 
void setNamedConstant (const String &name, const double *val, size_t count, size_t multiple=4)
 Sets a multiple value constant floating-point parameter to the program. More...
 
void setNamedConstant (const String &name, const ColourValue &colour)
 Sets a ColourValue parameter to the program. More...
 
void setNamedConstant (const String &name, const int *val, size_t count, size_t multiple=4)
 Sets a multiple value constant floating-point parameter to the program. More...
 
void setNamedConstantFromTime (const String &name, Real factor)
 Sets a named parameter up to track a derivation of the current time. More...
 
void setNamedSubroutine (const String &subroutineSlot, const String &subroutine)
 Set subroutine name by slot name. More...
 
void setSubroutine (size_t index, const String &subroutine)
 Set subroutine name by slot index. More...
 
void setTransposeMatrices (bool val)
 Sets whether or not we need to transpose the matrices passed in from the rest of OGRE. More...
 

Static Public Member Functions

static const
AutoConstantDefinition
getAutoConstantDefinition (const String &name)
 gets the auto constant definition associated with name if found else returns NULL More...
 
static const
AutoConstantDefinition
getAutoConstantDefinition (const size_t idx)
 gets the auto constant definition using an index into the auto constant definition array. More...
 
static size_t getNumAutoConstantDefinitions (void)
 Returns the number of auto constant definitions. More...
 

Protected Member Functions

GpuLogicalIndexUse_getDoubleConstantLogicalIndexUse (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the low-level structure for a logical index. More...
 
GpuLogicalIndexUse_getFloatConstantLogicalIndexUse (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the low-level structure for a logical index. More...
 
GpuLogicalIndexUse_getIntConstantLogicalIndexUse (size_t logicalIndex, size_t requestedSize, uint16 variability)
 Gets the physical buffer index associated with a logical int constant index. More...
 
void copySharedParamSetUsage (const GpuSharedParamUsageList &srcList)
 
uint16 deriveVariability (AutoConstantType act)
 Return the variability for an auto constant. More...
 

Protected Attributes

size_t mActivePassIterationIndex
 physical index for active pass iteration parameter real constant entry; More...
 
AutoConstantList mAutoConstants
 List of automatically updated parameters. More...
 
uint16 mCombinedVariability
 The combined variability masks of all parameters. More...
 
DoubleConstantList mDoubleConstants
 Packed list of double-point constants (physical indexing) More...
 
GpuLogicalBufferStructPtr mDoubleLogicalToPhysical
 Logical index to physical index map - for low-level programs or high-level programs which pass params this way. More...
 
FloatConstantList mFloatConstants
 Packed list of floating-point constants (physical indexing) More...
 
GpuLogicalBufferStructPtr mFloatLogicalToPhysical
 Logical index to physical index map - for low-level programs or high-level programs which pass params this way. More...
 
bool mIgnoreMissingParams
 flag to indicate if names not found will be ignored More...
 
IntConstantList mIntConstants
 Packed list of integer constants (physical indexing) More...
 
GpuLogicalBufferStructPtr mIntLogicalToPhysical
 Logical index to physical index map - for low-level programs or high-level programs which pass params this way. More...
 
GpuNamedConstantsPtr mNamedConstants
 Mapping from parameter names to def - high-level programs are expected to populate this. More...
 
Any mRenderSystemData
 
GpuSharedParamUsageList mSharedParamSets
 
SubroutineMap mSubroutineMap
 
bool mTransposeMatrices
 Do we need to transpose matrices? More...
 

Static Protected Attributes

static AutoConstantDefinition AutoConstantDictionary []
 

Detailed Description

Collects together the program parameters used for a GpuProgram.

Remarks
Gpu program state includes constant parameters used by the program, and bindings to render system state which is propagated into the constants by the engine automatically if requested.
GpuProgramParameters objects should be created through the GpuProgram and may be shared between multiple Pass instances. For this reason they are managed using a shared pointer, which will ensure they are automatically deleted when no Pass is using them anymore.
High-level programs use named parameters (uniforms), low-level programs use indexed constants. This class supports both, but you can tell whether named constants are supported by calling hasNamedParameters(). There are references in the documentation below to 'logical' and 'physical' indexes; logical indexes are the indexes used by low-level programs and represent indexes into an array of float4's, some of which may be settable, some of which may be predefined constants in the program. We only store those constants which have actually been set, therefore our buffer could have gaps if we used the logical indexes in our own buffers. So instead we map these logical indexes to physical indexes in our buffer. When using high-level programs, logical indexes don't necessarily exist, although they might if the high-level program has a direct, exposed mapping from parameter names to logical indexes. In addition, high-level languages may or may not pack arrays of elements that are smaller than float4 (e.g. float2/vec2) contiguously. This kind of information is held in the ConstantDefinition structure which is only populated for high-level programs. You don't have to worry about any of this unless you intend to read parameters back from this structure rather than just setting them.

Definition at line 702 of file OgreGpuProgramParams.h.

Member Typedef Documentation

Definition at line 1673 of file OgreGpuProgramParams.h.

Definition at line 1246 of file OgreGpuProgramParams.h.

Definition at line 1248 of file OgreGpuProgramParams.h.

typedef HashMap<unsigned int, String>::const_iterator Ogre::GpuProgramParameters::SubroutineIterator

Definition at line 1252 of file OgreGpuProgramParams.h.

Definition at line 1251 of file OgreGpuProgramParams.h.

Constructor & Destructor Documentation

Ogre::GpuProgramParameters::GpuProgramParameters ( )
Ogre::GpuProgramParameters::~GpuProgramParameters ( )

Definition at line 1310 of file OgreGpuProgramParams.h.

Ogre::GpuProgramParameters::GpuProgramParameters ( const GpuProgramParameters oth)

Copy constructor.

Member Function Documentation

void Ogre::GpuProgramParameters::_copySharedParams ( )

Update the parameters by copying the data from the shared parameters.

Note
This method may not actually be called if the RenderSystem supports using shared parameters directly in their own shared buffer; in which case the values should not be copied out of the shared area into the individual parameter set, but bound separately.
const GpuConstantDefinition* Ogre::GpuProgramParameters::_findNamedConstantDefinition ( const String name,
bool  throwExceptionIfMissing = false 
) const

Find a constant definition for a named parameter.

Remarks
This method returns null if the named parameter did not exist, unlike getConstantDefinition which is more strict; unless you set the last parameter to true.
Parameters
nameThe name to look up
throwExceptionIfMissingIf set to true, failure to find an entry will throw an exception.
const AutoConstantEntry* Ogre::GpuProgramParameters::_findRawAutoConstantEntryDouble ( size_t  physicalIndex)

Finds an auto constant that's affecting a given physical position in the double-point buffer.

const AutoConstantEntry* Ogre::GpuProgramParameters::_findRawAutoConstantEntryFloat ( size_t  physicalIndex)

Finds an auto constant that's affecting a given physical position in the floating-point buffer.

const AutoConstantEntry* Ogre::GpuProgramParameters::_findRawAutoConstantEntryInt ( size_t  physicalIndex)

Finds an auto constant that's affecting a given physical position in the integer buffer.

GpuLogicalIndexUse* Ogre::GpuProgramParameters::_getDoubleConstantLogicalIndexUse ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)
protected

Gets the low-level structure for a logical index.

size_t Ogre::GpuProgramParameters::_getDoubleConstantPhysicalIndex ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)

Gets the physical buffer index associated with a logical double constant index.

Note
Only applicable to low-level programs.
Parameters
logicalIndexThe logical parameter index
requestedSizeThe requested size - pass 0 to ignore missing entries and return std::numeric_limits<size_t>::max()
GpuLogicalIndexUse* Ogre::GpuProgramParameters::_getFloatConstantLogicalIndexUse ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)
protected

Gets the low-level structure for a logical index.

size_t Ogre::GpuProgramParameters::_getFloatConstantPhysicalIndex ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)

Gets the physical buffer index associated with a logical float constant index.

Note
Only applicable to low-level programs.
Parameters
logicalIndexThe logical parameter index
requestedSizeThe requested size - pass 0 to ignore missing entries and return std::numeric_limits<size_t>::max()
GpuLogicalIndexUse* Ogre::GpuProgramParameters::_getIntConstantLogicalIndexUse ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)
protected

Gets the physical buffer index associated with a logical int constant index.

size_t Ogre::GpuProgramParameters::_getIntConstantPhysicalIndex ( size_t  logicalIndex,
size_t  requestedSize,
uint16  variability 
)

Gets the physical buffer index associated with a logical int constant index.

Note
Only applicable to low-level programs.
Parameters
logicalIndexThe logical parameter index
requestedSizeThe requested size - pass 0 to ignore missing entries and return std::numeric_limits<size_t>::max()
const Any& Ogre::GpuProgramParameters::_getRenderSystemData ( ) const

Internal method that the RenderSystem might use to store optional data.

Definition at line 2023 of file OgreGpuProgramParams.h.

void Ogre::GpuProgramParameters::_readRawConstants ( size_t  physicalIndex,
size_t  count,
float *  dest 
)

Read a series of floating point values from the underlying float constant buffer at the given physical index.

Parameters
physicalIndexThe buffer position to start reading
countThe number of floats to read
destPointer to a buffer to receive the values
void Ogre::GpuProgramParameters::_readRawConstants ( size_t  physicalIndex,
size_t  count,
int *  dest 
)

Read a series of integer values from the underlying integer constant buffer at the given physical index.

Parameters
physicalIndexThe buffer position to start reading
countThe number of ints to read
destPointer to a buffer to receive the values
void Ogre::GpuProgramParameters::_setLogicalIndexes ( const GpuLogicalBufferStructPtr floatIndexMap,
const GpuLogicalBufferStructPtr doubleIndexMap,
const GpuLogicalBufferStructPtr intIndexMap 
)

Internal method for providing a link to a logical index->physical index map for parameters.

void Ogre::GpuProgramParameters::_setNamedConstants ( const GpuNamedConstantsPtr constantmap)

Internal method for providing a link to a name->definition map for parameters.

void Ogre::GpuProgramParameters::_setRawAutoConstant ( size_t  physicalIndex,
AutoConstantType  acType,
size_t  extraInfo,
uint16  variability,
size_t  elementSize = 4 
)

As setAutoConstant, but sets up the auto constant directly against a physical buffer index.

void Ogre::GpuProgramParameters::_setRawAutoConstantReal ( size_t  physicalIndex,
AutoConstantType  acType,
Real  rData,
uint16  variability,
size_t  elementSize = 4 
)

As setAutoConstantReal, but sets up the auto constant directly against a physical buffer index.

void Ogre::GpuProgramParameters::_setRenderSystemData ( const Any data) const

Internal method that the RenderSystem might use to store optional data.

Definition at line 2021 of file OgreGpuProgramParams.h.

void Ogre::GpuProgramParameters::_updateAutoParams ( const AutoParamDataSource source,
uint16  variabilityMask 
)

Update automatic parameters.

Parameters
sourceThe source of the parameters
variabilityMaskA mask of GpuParamVariability which identifies which autos will need updating
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const Vector4 vec,
size_t  count = 4 
)

Write a 4-element floating-point parameter to the program directly to the underlying constants buffer.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
vecThe value to set
countThe number of floats to write; if for example the uniform constant 'slot' is smaller than a Vector4

Referenced by Ogre::Renderable::_updateCustomGpuParameter().

void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
Real  val 
)

Write a single floating-point parameter to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
valThe value to set
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
Real  val,
size_t  count 
)

Write a variable number of floating-point parameters to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
valThe value to set
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
int  val 
)

Write a single integer parameter to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
valThe value to set
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const Vector3 vec 
)

Write a 3-element floating-point parameter to the program via Vector3.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
vecThe value to set
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const Vector2 vec 
)

Write a 2-element floating-point parameter to the program via Vector2.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
vecThe value to set
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const Matrix4 m,
size_t  elementCount 
)

Write a Matrix4 parameter to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
mThe value to set
elementCountactual element count used with shader
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const Matrix4 m,
size_t  numEntries 
)

Write a list of Matrix4 parameters to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
numEntriesNumber of Matrix4 entries
void Ogre::GpuProgramParameters::_writeRawConstant ( size_t  physicalIndex,
const ColourValue colour,
size_t  count = 4 
)

Write a ColourValue parameter to the program.

Note
You can use these methods if you have already derived the physical constant buffer location, for a slight speed improvement over using the named / logical index versions.
Parameters
physicalIndexThe physical buffer index at which to place the parameter
colourThe value to set
countThe number of floats to write; if for example the uniform constant 'slot' is smaller than a Vector4
void Ogre::GpuProgramParameters::_writeRawConstants ( size_t  physicalIndex,
const float *  val,
size_t  count 
)

Write a series of floating point values into the underlying float constant buffer at the given physical index.

Parameters
physicalIndexThe buffer position to start writing
valPointer to a list of values to write
countThe number of floats to write
void Ogre::GpuProgramParameters::_writeRawConstants ( size_t  physicalIndex,
const double *  val,
size_t  count 
)

Write a series of floating point values into the underlying float constant buffer at the given physical index.

Parameters
physicalIndexThe buffer position to start writing
valPointer to a list of values to write
countThe number of floats to write
void Ogre::GpuProgramParameters::_writeRawConstants ( size_t  physicalIndex,
const int *  val,
size_t  count 
)

Write a series of integer values into the underlying integer constant buffer at the given physical index.

Parameters
physicalIndexThe buffer position to start writing
valPointer to a list of values to write
countThe number of ints to write
void Ogre::GpuProgramParameters::addSharedParameters ( GpuSharedParametersPtr  sharedParams)

Use a set of shared parameters in this parameters object.

Remarks
Allows you to use a set of shared parameters to automatically update this parameter set.
void Ogre::GpuProgramParameters::addSharedParameters ( const String sharedParamsName)

Use a set of shared parameters in this parameters object.

Remarks
Allows you to use a set of shared parameters to automatically update this parameter set.
Parameters
sharedParamsNameThe name of a shared parameter set as defined in GpuProgramManager
size_t Ogre::GpuProgramParameters::calculateSize ( void  ) const
void Ogre::GpuProgramParameters::clearAutoConstant ( size_t  index)

Unbind an auto constant so that the constant is manually controlled again.

void Ogre::GpuProgramParameters::clearAutoConstants ( void  )

Clears all the existing automatic constants.

void Ogre::GpuProgramParameters::clearNamedAutoConstant ( const String name)

Unbind an auto constant so that the constant is manually controlled again.

void Ogre::GpuProgramParameters::copyConstantsFrom ( const GpuProgramParameters source)

Copies the values of all constants (including auto constants) from another GpuProgramParameters object.

Note
This copes the internal storage of the paarameters object and therefore can only be used for parameters objects created from the same GpuProgram. To merge parameters that match from different programs, use copyMatchingNamedConstantsFrom.
void Ogre::GpuProgramParameters::copyMatchingNamedConstantsFrom ( const GpuProgramParameters source)

Copies the values of all matching named constants (including auto constants) from another GpuProgramParameters object.

Remarks
This method iterates over the named constants in another parameters object and copies across the values where they match. This method is safe to use when the 2 parameters objects came from different programs, but only works for named parameters.
void Ogre::GpuProgramParameters::copySharedParamSetUsage ( const GpuSharedParamUsageList srcList)
protected
uint16 Ogre::GpuProgramParameters::deriveVariability ( AutoConstantType  act)
protected

Return the variability for an auto constant.

const AutoConstantEntry* Ogre::GpuProgramParameters::findAutoConstantEntry ( const String paramName)

Finds an auto constant that's affecting a given named parameter index.

Note
Only applicable to high-level programs.
const AutoConstantEntry* Ogre::GpuProgramParameters::findDoubleAutoConstantEntry ( size_t  logicalIndex)

Finds an auto constant that's affecting a given logical parameter index for double-point values.

Note
Only applicable for low-level programs.
const AutoConstantEntry* Ogre::GpuProgramParameters::findFloatAutoConstantEntry ( size_t  logicalIndex)

Finds an auto constant that's affecting a given logical parameter index for floating-point values.

Note
Only applicable for low-level programs.
const AutoConstantEntry* Ogre::GpuProgramParameters::findIntAutoConstantEntry ( size_t  logicalIndex)

Finds an auto constant that's affecting a given logical parameter index for integer values.

Note
Only applicable for low-level programs.
size_t Ogre::GpuProgramParameters::getAutoConstantCount ( void  ) const

Gets the number of int constants that have been set.

Definition at line 1677 of file OgreGpuProgramParams.h.

static const AutoConstantDefinition* Ogre::GpuProgramParameters::getAutoConstantDefinition ( const String name)
static

gets the auto constant definition associated with name if found else returns NULL

Parameters
nameThe name of the auto constant
static const AutoConstantDefinition* Ogre::GpuProgramParameters::getAutoConstantDefinition ( const size_t  idx)
static

gets the auto constant definition using an index into the auto constant definition array.

If the index is out of bounds then NULL is returned;

Parameters
idxThe auto constant index
AutoConstantEntry* Ogre::GpuProgramParameters::getAutoConstantEntry ( const size_t  index)

Gets a specific Auto Constant entry if index is in valid range otherwise returns a NULL.

Parameters
indexwhich entry is to be retrieved
AutoConstantIterator Ogre::GpuProgramParameters::getAutoConstantIterator ( void  ) const

Gets an iterator over the automatic constant bindings currently in place.

const AutoConstantList& Ogre::GpuProgramParameters::getAutoConstantList ( ) const

Get a reference to the list of auto constant bindings.

Definition at line 1616 of file OgreGpuProgramParams.h.

const GpuConstantDefinition& Ogre::GpuProgramParameters::getConstantDefinition ( const String name) const

Get a specific GpuConstantDefinition for a named parameter.

Note
Only available if this parameters object has named parameters.
GpuConstantDefinitionIterator Ogre::GpuProgramParameters::getConstantDefinitionIterator ( void  ) const

Gets an iterator over the named GpuConstantDefinition instances as defined by the program for which these parameters exist.

Note
Only available if this parameters object has named parameters.
const GpuNamedConstants& Ogre::GpuProgramParameters::getConstantDefinitions ( ) const

Get the full list of GpuConstantDefinition instances.

Note
Only available if this parameters object has named parameters.
const DoubleConstantList& Ogre::GpuProgramParameters::getDoubleConstantList ( ) const

Get a reference to the list of double constants.

Definition at line 1604 of file OgreGpuProgramParams.h.

const GpuLogicalBufferStructPtr& Ogre::GpuProgramParameters::getDoubleLogicalBufferStruct ( ) const

Retrieves the logical index relating to a physical index in the int buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes).

Returns
std::numeric_limits<size_t>::max() if not found Get the current list of mappings from low-level logical param indexes to physical buffer locations in the double buffer.
Note
Only applicable to low-level programs.

Definition at line 1576 of file OgreGpuProgramParams.h.

size_t Ogre::GpuProgramParameters::getDoubleLogicalIndexForPhysicalIndex ( size_t  physicalIndex)

Retrieves the logical index relating to a physical index in the double buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes).

Returns
std::numeric_limits<size_t>::max() if not found
double* Ogre::GpuProgramParameters::getDoublePointer ( size_t  pos)

Get a pointer to the 'nth' item in the double buffer.

Definition at line 1606 of file OgreGpuProgramParams.h.

const double* Ogre::GpuProgramParameters::getDoublePointer ( size_t  pos) const

Get a pointer to the 'nth' item in the double buffer.

Definition at line 1608 of file OgreGpuProgramParams.h.

const FloatConstantList& Ogre::GpuProgramParameters::getFloatConstantList ( ) const

Get a reference to the list of float constants.

Definition at line 1598 of file OgreGpuProgramParams.h.

const GpuLogicalBufferStructPtr& Ogre::GpuProgramParameters::getFloatLogicalBufferStruct ( ) const

Get the current list of mappings from low-level logical param indexes to physical buffer locations in the float buffer.

Note
Only applicable to low-level programs.

Definition at line 1558 of file OgreGpuProgramParams.h.

size_t Ogre::GpuProgramParameters::getFloatLogicalIndexForPhysicalIndex ( size_t  physicalIndex)

Retrieves the logical index relating to a physical index in the float buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes).

Returns
std::numeric_limits<size_t>::max() if not found
float* Ogre::GpuProgramParameters::getFloatPointer ( size_t  pos)

Get a pointer to the 'nth' item in the float buffer.

Definition at line 1600 of file OgreGpuProgramParams.h.

const float* Ogre::GpuProgramParameters::getFloatPointer ( size_t  pos) const

Get a pointer to the 'nth' item in the float buffer.

Definition at line 1602 of file OgreGpuProgramParams.h.

const IntConstantList& Ogre::GpuProgramParameters::getIntConstantList ( ) const

Get a reference to the list of int constants.

Definition at line 1610 of file OgreGpuProgramParams.h.

const GpuLogicalBufferStructPtr& Ogre::GpuProgramParameters::getIntLogicalBufferStruct ( ) const

Get the current list of mappings from low-level logical param indexes to physical buffer locations in the integer buffer.

Note
Only applicable to low-level programs.

Definition at line 1596 of file OgreGpuProgramParams.h.

size_t Ogre::GpuProgramParameters::getIntLogicalIndexForPhysicalIndex ( size_t  physicalIndex)

Retrieves the logical index relating to a physical index in the int buffer, for programs which support that (low-level programs and high-level programs which use logical parameter indexes).

Returns
std::numeric_limits<size_t>::max() if not found
int* Ogre::GpuProgramParameters::getIntPointer ( size_t  pos)

Get a pointer to the 'nth' item in the int buffer.

Definition at line 1612 of file OgreGpuProgramParams.h.

const int* Ogre::GpuProgramParameters::getIntPointer ( size_t  pos) const

Get a pointer to the 'nth' item in the int buffer.

Definition at line 1614 of file OgreGpuProgramParams.h.

static size_t Ogre::GpuProgramParameters::getNumAutoConstantDefinitions ( void  )
static

Returns the number of auto constant definitions.

size_t Ogre::GpuProgramParameters::getPassIterationNumberIndex ( ) const

Get the physical buffer index of the pass iteration number constant.

Definition at line 1988 of file OgreGpuProgramParams.h.

const GpuSharedParamUsageList& Ogre::GpuProgramParameters::getSharedParameters ( ) const

Get the list of shared parameter sets.

const SubroutineMap& Ogre::GpuProgramParameters::getSubroutineMap ( ) const

Get map with.

Definition at line 2046 of file OgreGpuProgramParams.h.

bool Ogre::GpuProgramParameters::getTransposeMatrices ( void  ) const

Gets whether or not matrices are to be transposed when set.

Definition at line 1947 of file OgreGpuProgramParams.h.

bool Ogre::GpuProgramParameters::hasAutoConstants ( void  ) const

Returns true if this instance has any automatic constants.

Definition at line 1684 of file OgreGpuProgramParams.h.

bool Ogre::GpuProgramParameters::hasLogicalIndexedParameters ( ) const

Does this parameter set include logically indexed parameters?

Note
Not mutually exclusive with hasNamedParameters since some high-level programs still use logical indexes to set the parameters on the rendersystem.

Definition at line 1332 of file OgreGpuProgramParams.h.

References Ogre::SharedPtr< T >::isNull().

bool Ogre::GpuProgramParameters::hasNamedParameters ( ) const

Does this parameter set include named parameters?

Definition at line 1326 of file OgreGpuProgramParams.h.

References Ogre::SharedPtr< T >::isNull().

bool Ogre::GpuProgramParameters::hasPassIterationNumber ( ) const

Does this parameters object have a pass iteration number constant?

Definition at line 1985 of file OgreGpuProgramParams.h.

void Ogre::GpuProgramParameters::incPassIterationNumber ( void  )

increments the multipass number entry by 1 if it exists

bool Ogre::GpuProgramParameters::isUsingSharedParameters ( const String sharedParamsName) const

Returns whether this parameter set is using the named shared parameter set.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

GpuProgramParameters& Ogre::GpuProgramParameters::operator= ( const GpuProgramParameters oth)

Operator = overload.

void Ogre::GpuProgramParameters::removeAllSharedParameters ( )

Stop using all shared parameter sets.

void Ogre::GpuProgramParameters::removeSharedParameters ( const String sharedParamsName)

Stop using the named shared parameter set.

void Ogre::GpuProgramParameters::setAutoConstant ( size_t  index,
AutoConstantType  acType,
size_t  extraInfo = 0 
)

Sets up a constant which will automatically be updated by the system.

Remarks
Vertex and fragment programs often need parameters which are to do with the current render state, or particular values which may very well change over time, and often between objects which are being rendered. This feature allows you to set up a certain number of predefined parameter mappings that are kept up to date for you.
Parameters
indexThe location in the constant list to place this updated constant every time it is changed. Note that because of the nature of the types, we know how big the parameter details will be so you don't need to set that like you do for manual constants.
acTypeThe type of automatic constant to set
extraInfoIf the constant type needs more information (like a light index) put it here.
void Ogre::GpuProgramParameters::setAutoConstant ( size_t  index,
AutoConstantType  acType,
uint16  extraInfo1,
uint16  extraInfo2 
)

Sets up a constant which will automatically be updated by the system.

Remarks
Vertex and fragment programs often need parameters which are to do with the current render state, or particular values which may very well change over time, and often between objects which are being rendered. This feature allows you to set up a certain number of predefined parameter mappings that are kept up to date for you.
Parameters
indexThe location in the constant list to place this updated constant every time it is changed. Note that because of the nature of the types, we know how big the parameter details will be so you don't need to set that like you do for manual constants.
acTypeThe type of automatic constant to set
extraInfo1The first extra parameter required by the auto constant type
extraInfo2The first extra parameter required by the auto constant type
void Ogre::GpuProgramParameters::setAutoConstantReal ( size_t  index,
AutoConstantType  acType,
Real  rData 
)
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const Vector4 vec 
)

Sets a 4-element floating-point parameter to the program.

Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float)
vecThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
Real  val 
)

Sets a single floating-point parameter to the program.

Note
This is actually equivalent to calling setConstant(index Vector4(val, 0, 0, 0)) since all constants are 4D.
Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float)
valThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const Vector3 vec 
)

Sets a 4-element floating-point parameter to the program via Vector3.

Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float). Note that since you're passing a Vector3, the last element of the 4-element value will be set to 1 (a homogeneous vector)
vecThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const Vector2 vec 
)

Sets a 4-element floating-point parameter to the program via Vector2.

Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float). Note that since you're passing a Vector2, the last 2 elements of the 4-element value will be set to 1 (a homogeneous vector)
vecThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const Matrix4 m 
)

Sets a Matrix4 parameter to the program.

Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float). NB since a Matrix4 is 16 floats long, this parameter will take up 4 indexes.
mThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const Matrix4 m,
size_t  numEntries 
)

Sets a list of Matrix4 parameters to the program.

Parameters
indexThe logical constant index at which to start placing the parameter (each constant is a 4D float). NB since a Matrix4 is 16 floats long, so each entry will take up 4 indexes.
mPointer to an array of matrices to set
numEntriesNumber of Matrix4 entries
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const float *  val,
size_t  count 
)

Sets a multiple value constant floating-point parameter to the program.

Parameters
indexThe logical constant index at which to start placing parameters (each constant is a 4D float)
valPointer to the values to write, must contain 4*count floats
countThe number of groups of 4 floats to write
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const double *  val,
size_t  count 
)

Sets a multiple value constant floating-point parameter to the program.

Parameters
indexThe logical constant index at which to start placing parameters (each constant is a 4D float)
valPointer to the values to write, must contain 4*count floats
countThe number of groups of 4 floats to write
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const ColourValue colour 
)

Sets a ColourValue parameter to the program.

Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D float)
colourThe value to set
void Ogre::GpuProgramParameters::setConstant ( size_t  index,
const int *  val,
size_t  count 
)

Sets a multiple value constant integer parameter to the program.

Remarks
Different types of GPU programs support different types of constant parameters. For example, it's relatively common to find that vertex programs only support floating point constants, and that fragment programs only support integer (fixed point) parameters. This can vary depending on the program version supported by the graphics card being used. You should consult the documentation for the type of low level program you are using, or alternatively use the methods provided on RenderSystemCapabilities to determine the options.
Parameters
indexThe logical constant index at which to place the parameter (each constant is a 4D integer)
valPointer to the values to write, must contain 4*count ints
countThe number of groups of 4 ints to write
void Ogre::GpuProgramParameters::setConstantFromTime ( size_t  index,
Real  factor 
)

Sets a named parameter up to track a derivation of the current time.

Parameters
indexThe index of the parameter
factorThe amount by which to scale the time value
void Ogre::GpuProgramParameters::setIgnoreMissingParams ( bool  state)

Tells the program whether to ignore missing parameters or not.

Definition at line 1725 of file OgreGpuProgramParams.h.

void Ogre::GpuProgramParameters::setNamedAutoConstant ( const String name,
AutoConstantType  acType,
size_t  extraInfo = 0 
)

Sets up a constant which will automatically be updated by the system.

Remarks
Vertex and fragment programs often need parameters which are to do with the current render state, or particular values which may very well change over time, and often between objects which are being rendered. This feature allows you to set up a certain number of predefined parameter mappings that are kept up to date for you.
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
acTypeThe type of automatic constant to set
extraInfoIf the constant type needs more information (like a light index) put it here.
void Ogre::GpuProgramParameters::setNamedAutoConstant ( const String name,
AutoConstantType  acType,
uint16  extraInfo1,
uint16  extraInfo2 
)

Sets up a constant which will automatically be updated by the system.

Remarks
Vertex and fragment programs often need parameters which are to do with the current render state, or particular values which may very well change over time, and often between objects which are being rendered. This feature allows you to set up a certain number of predefined parameter mappings that are kept up to date for you.
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
acTypeThe type of automatic constant to set
extraInfo1The first extra info required by this auto constant type
extraInfo2The first extra info required by this auto constant type
void Ogre::GpuProgramParameters::setNamedAutoConstantReal ( const String name,
AutoConstantType  acType,
Real  rData 
)
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
Real  val 
)

Sets a single value constant floating-point parameter to the program.

Remarks
Different types of GPU programs support different types of constant parameters. For example, it's relatively common to find that vertex programs only support floating point constants, and that fragment programs only support integer (fixed point) parameters. This can vary depending on the program version supported by the graphics card being used. You should consult the documentation for the type of low level program you are using, or alternatively use the methods provided on RenderSystemCapabilities to determine the options.
Another possible limitation is that some systems only allow constants to be set on certain boundaries, e.g. in sets of 4 values for example. Again, see RenderSystemCapabilities for full details.
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
valThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
int  val 
)

Sets a single value constant integer parameter to the program.

Remarks
Different types of GPU programs support different types of constant parameters. For example, it's relatively common to find that vertex programs only support floating point constants, and that fragment programs only support integer (fixed point) parameters. This can vary depending on the program version supported by the graphics card being used. You should consult the documentation for the type of low level program you are using, or alternatively use the methods provided on RenderSystemCapabilities to determine the options.
Another possible limitation is that some systems only allow constants to be set on certain boundaries, e.g. in sets of 4 values for example. Again, see RenderSystemCapabilities for full details.
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
valThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const Vector4 vec 
)

Sets a Vector4 parameter to the program.

Parameters
nameThe name of the parameter
vecThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const Vector3 vec 
)

Sets a Vector3 parameter to the program.

Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
vecThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const Vector2 vec 
)

Sets a Vector2 parameter to the program.

Parameters
nameThe name of the parameter
vecThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const Matrix4 m 
)

Sets a Matrix4 parameter to the program.

Parameters
nameThe name of the parameter
mThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const Matrix4 m,
size_t  numEntries 
)

Sets a list of Matrix4 parameters to the program.

Parameters
nameThe name of the parameter; this must be the first index of an array, for examples 'matrices[0]' NB since a Matrix4 is 16 floats long, so each entry will take up 4 indexes.
mPointer to an array of matrices to set
numEntriesNumber of Matrix4 entries
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const float *  val,
size_t  count,
size_t  multiple = 4 
)

Sets a multiple value constant floating-point parameter to the program.

Some systems only allow constants to be set on certain boundaries, e.g. in sets of 4 values for example. The 'multiple' parameter allows you to control that although you should only change it if you know your chosen language supports that (at the time of writing, only GLSL allows constants which are not a multiple of 4).
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
valPointer to the values to write
countThe number of 'multiples' of floats to write
multipleThe number of raw entries in each element to write, the default is 4 so count = 1 would write 4 floats.
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const double *  val,
size_t  count,
size_t  multiple = 4 
)

Sets a multiple value constant floating-point parameter to the program.

Some systems only allow constants to be set on certain boundaries, e.g. in sets of 4 values for example. The 'multiple' parameter allows you to control that although you should only change it if you know your chosen language supports that (at the time of writing, only GLSL allows constants which are not a multiple of 4).
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
valPointer to the values to write
countThe number of 'multiples' of floats to write
multipleThe number of raw entries in each element to write, the default is 4 so count = 1 would write 4 floats.
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const ColourValue colour 
)

Sets a ColourValue parameter to the program.

Parameters
nameThe name of the parameter
colourThe value to set
void Ogre::GpuProgramParameters::setNamedConstant ( const String name,
const int *  val,
size_t  count,
size_t  multiple = 4 
)

Sets a multiple value constant floating-point parameter to the program.

Some systems only allow constants to be set on certain boundaries, e.g. in sets of 4 values for example. The 'multiple' parameter allows you to control that although you should only change it if you know your chosen language supports that (at the time of writing, only GLSL allows constants which are not a multiple of 4).
Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
valPointer to the values to write
countThe number of 'multiples' of floats to write
multipleThe number of raw entries in each element to write, the default is 4 so count = 1 would write 4 floats.
void Ogre::GpuProgramParameters::setNamedConstantFromTime ( const String name,
Real  factor 
)

Sets a named parameter up to track a derivation of the current time.

Note
This named option will only work if you are using a parameters object created from a high-level program (HighLevelGpuProgram).
Parameters
nameThe name of the parameter
factorThe amount by which to scale the time value
void Ogre::GpuProgramParameters::setNamedSubroutine ( const String subroutineSlot,
const String subroutine 
)

Set subroutine name by slot name.

void Ogre::GpuProgramParameters::setSubroutine ( size_t  index,
const String subroutine 
)

Set subroutine name by slot index.

void Ogre::GpuProgramParameters::setTransposeMatrices ( bool  val)

Sets whether or not we need to transpose the matrices passed in from the rest of OGRE.

Remarks
D3D uses transposed matrices compared to GL and OGRE; this is not important when you use programs which are written to process row-major matrices, such as those generated by Cg, but if you use a program written to D3D's matrix layout you will need to enable this flag.

Definition at line 1945 of file OgreGpuProgramParams.h.

Member Data Documentation

AutoConstantDefinition Ogre::GpuProgramParameters::AutoConstantDictionary[]
staticprotected

Definition at line 1257 of file OgreGpuProgramParams.h.

size_t Ogre::GpuProgramParameters::mActivePassIterationIndex
protected

physical index for active pass iteration parameter real constant entry;

Definition at line 1284 of file OgreGpuProgramParams.h.

AutoConstantList Ogre::GpuProgramParameters::mAutoConstants
protected

List of automatically updated parameters.

Definition at line 1276 of file OgreGpuProgramParams.h.

uint16 Ogre::GpuProgramParameters::mCombinedVariability
protected

The combined variability masks of all parameters.

Definition at line 1278 of file OgreGpuProgramParams.h.

DoubleConstantList Ogre::GpuProgramParameters::mDoubleConstants
protected

Packed list of double-point constants (physical indexing)

Definition at line 1261 of file OgreGpuProgramParams.h.

GpuLogicalBufferStructPtr Ogre::GpuProgramParameters::mDoubleLogicalToPhysical
protected

Logical index to physical index map - for low-level programs or high-level programs which pass params this way.

Definition at line 1269 of file OgreGpuProgramParams.h.

FloatConstantList Ogre::GpuProgramParameters::mFloatConstants
protected

Packed list of floating-point constants (physical indexing)

Definition at line 1259 of file OgreGpuProgramParams.h.

GpuLogicalBufferStructPtr Ogre::GpuProgramParameters::mFloatLogicalToPhysical
protected

Logical index to physical index map - for low-level programs or high-level programs which pass params this way.

Definition at line 1266 of file OgreGpuProgramParams.h.

bool Ogre::GpuProgramParameters::mIgnoreMissingParams
protected

flag to indicate if names not found will be ignored

Definition at line 1282 of file OgreGpuProgramParams.h.

IntConstantList Ogre::GpuProgramParameters::mIntConstants
protected

Packed list of integer constants (physical indexing)

Definition at line 1263 of file OgreGpuProgramParams.h.

GpuLogicalBufferStructPtr Ogre::GpuProgramParameters::mIntLogicalToPhysical
protected

Logical index to physical index map - for low-level programs or high-level programs which pass params this way.

Definition at line 1272 of file OgreGpuProgramParams.h.

GpuNamedConstantsPtr Ogre::GpuProgramParameters::mNamedConstants
protected

Mapping from parameter names to def - high-level programs are expected to populate this.

Definition at line 1274 of file OgreGpuProgramParams.h.

Any Ogre::GpuProgramParameters::mRenderSystemData
mutableprotected

Definition at line 1304 of file OgreGpuProgramParams.h.

GpuSharedParamUsageList Ogre::GpuProgramParameters::mSharedParamSets
protected

Definition at line 1301 of file OgreGpuProgramParams.h.

SubroutineMap Ogre::GpuProgramParameters::mSubroutineMap
protected

Definition at line 1255 of file OgreGpuProgramParams.h.

bool Ogre::GpuProgramParameters::mTransposeMatrices
protected

Do we need to transpose matrices?

Definition at line 1280 of file OgreGpuProgramParams.h.


The documentation for this class was generated from the following file:

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Sat Oct 25 2014 14:52:06