28 #ifndef __GpuProgramParams_H_
29 #define __GpuProgramParams_H_
140 return isFloat(constType);
167 return isDouble(constType);
198 return isSampler(constType);
221 return isSubroutine(constType);
234 if (padToMultiplesOf4)
345 , physicalIndex((std::numeric_limits<size_t>::max)())
379 void generateConstantDefinitionArrayEntries(
const String& paramName,
383 static bool getGenerateAllConstantDefinitionArrayEntries();
391 static void setGenerateAllConstantDefinitionArrayEntries(
bool generateAll);
396 void save(
const String& filename)
const;
402 size_t calculateSize(
void)
const;
422 Endian endianMode = ENDIAN_NATIVE);
424 Endian endianMode = ENDIAN_NATIVE);
441 : physicalIndex(99999), currentSize(0), variability(
GPV_GLOBAL) {}
443 : physicalIndex(bufIdx), currentSize(curSz), variability(v) {}
526 void removeConstantDefinition(
const String& name);
530 void removeAllConstantDefinitions();
537 size_t calculateSize(
void)
const;
562 void setNamedConstant(
const String& name,
Real val);
564 void setNamedConstant(
const String& name,
int val);
566 void setNamedConstant(
const String& name,
const Vector4& vec);
568 void setNamedConstant(
const String& name,
const Vector3& vec);
570 void setNamedConstant(
const String& name,
const Vector2& vec);
574 void setNamedConstant(
const String& name,
const Matrix4* m,
size_t numEntries);
576 void setNamedConstant(
const String& name,
const float *val,
size_t count);
578 void setNamedConstant(
const String& name,
const double *val,
size_t count);
582 void setNamedConstant(
const String& name,
const int *val,
size_t count);
593 int*
getIntPointer(
size_t pos) { _markDirty();
return &mIntConstants[pos]; }
656 void _copySharedParamsToTargetParams();
1205 :acType(_acType), name(_name), elementCount(_elementCount),
1206 elementType(_elementType), dataType(_dataType)
1233 uint16 theVariability,
size_t theElemCount = 4)
1234 : paramType(theType), physicalIndex(theIndex), elementCount(theElemCount),
1235 data(theData), variability(theVariability) {}
1238 uint16 theVariability,
size_t theElemCount = 4)
1239 : paramType(theType), physicalIndex(theIndex), elementCount(theElemCount),
1240 fData(theData), variability(theVariability) {}
1286 GpuLogicalIndexUse* _getFloatConstantLogicalIndexUse(
size_t logicalIndex,
size_t requestedSize,
uint16 variability);
1289 GpuLogicalIndexUse* _getDoubleConstantLogicalIndexUse(
size_t logicalIndex,
size_t requestedSize,
uint16 variability);
1337 void setConstant(
size_t index,
const Vector4& vec);
1345 void setConstant(
size_t index,
Real val);
1353 void setConstant(
size_t index,
const Vector3& vec);
1361 void setConstant(
size_t index,
const Vector2& vec);
1368 void setConstant(
size_t index,
const Matrix4& m);
1376 void setConstant(
size_t index,
const Matrix4* m,
size_t numEntries);
1383 void setConstant(
size_t index,
const float *val,
size_t count);
1390 void setConstant(
size_t index,
const double *val,
size_t count);
1396 void setConstant(
size_t index,
const ColourValue& colour);
1412 void setConstant(
size_t index,
const int *val,
size_t count);
1420 void _writeRawConstants(
size_t physicalIndex,
const float* val,
size_t count);
1427 void _writeRawConstants(
size_t physicalIndex,
const double* val,
size_t count);
1434 void _writeRawConstants(
size_t physicalIndex,
const int* val,
size_t count);
1441 void _readRawConstants(
size_t physicalIndex,
size_t count,
float* dest);
1448 void _readRawConstants(
size_t physicalIndex,
size_t count,
int* dest);
1460 void _writeRawConstant(
size_t physicalIndex,
const Vector4& vec,
1469 void _writeRawConstant(
size_t physicalIndex,
Real val);
1477 void _writeRawConstant(
size_t physicalIndex,
Real val,
size_t count);
1485 void _writeRawConstant(
size_t physicalIndex,
int val);
1493 void _writeRawConstant(
size_t physicalIndex,
const Vector3& vec);
1501 void _writeRawConstant(
size_t physicalIndex,
const Vector2& vec);
1510 void _writeRawConstant(
size_t physicalIndex,
const Matrix4& m,
size_t elementCount);
1518 void _writeRawConstant(
size_t physicalIndex,
const Matrix4* m,
size_t numEntries);
1528 void _writeRawConstant(
size_t physicalIndex,
const ColourValue& colour,
1563 size_t getFloatLogicalIndexForPhysicalIndex(
size_t physicalIndex);
1581 size_t getDoubleLogicalIndexForPhysicalIndex(
size_t physicalIndex);
1587 size_t getIntLogicalIndexForPhysicalIndex(
size_t physicalIndex);
1629 void setAutoConstant(
size_t index, AutoConstantType acType,
size_t extraInfo = 0);
1630 void setAutoConstantReal(
size_t index, AutoConstantType acType,
Real rData);
1646 void setAutoConstant(
size_t index, AutoConstantType acType,
uint16 extraInfo1,
uint16 extraInfo2);
1651 void _setRawAutoConstant(
size_t physicalIndex, AutoConstantType acType,
size_t extraInfo,
1652 uint16 variability,
size_t elementSize = 4);
1656 void _setRawAutoConstantReal(
size_t physicalIndex, AutoConstantType acType,
Real rData,
1657 uint16 variability,
size_t elementSize = 4);
1661 void clearAutoConstant(
size_t index);
1667 void setConstantFromTime(
size_t index,
Real factor);
1670 void clearAutoConstants(
void);
1680 AutoConstantEntry* getAutoConstantEntry(
const size_t index);
1687 const AutoConstantEntry* findFloatAutoConstantEntry(
size_t logicalIndex);
1692 const AutoConstantEntry* findDoubleAutoConstantEntry(
size_t logicalIndex);
1697 const AutoConstantEntry* findIntAutoConstantEntry(
size_t logicalIndex);
1701 const AutoConstantEntry* findAutoConstantEntry(
const String& paramName);
1705 const AutoConstantEntry* _findRawAutoConstantEntryFloat(
size_t physicalIndex);
1709 const AutoConstantEntry* _findRawAutoConstantEntryDouble(
size_t physicalIndex);
1713 const AutoConstantEntry* _findRawAutoConstantEntryInt(
size_t physicalIndex);
1744 void setNamedConstant(
const String& name,
Real val);
1764 void setNamedConstant(
const String& name,
int val);
1769 void setNamedConstant(
const String& name,
const Vector4& vec);
1777 void setNamedConstant(
const String& name,
const Vector3& vec);
1782 void setNamedConstant(
const String& name,
const Vector2& vec);
1787 void setNamedConstant(
const String& name,
const Matrix4& m);
1795 void setNamedConstant(
const String& name,
const Matrix4* m,
size_t numEntries);
1812 void setNamedConstant(
const String& name,
const float *val,
size_t count,
1813 size_t multiple = 4);
1830 void setNamedConstant(
const String& name,
const double *val,
size_t count,
1831 size_t multiple = 4);
1854 void setNamedConstant(
const String& name,
const int *val,
size_t count,
1855 size_t multiple = 4);
1871 void setNamedAutoConstant(
const String& name, AutoConstantType acType,
size_t extraInfo = 0);
1872 void setNamedAutoConstantReal(
const String& name, AutoConstantType acType,
Real rData);
1889 void setNamedAutoConstant(
const String& name, AutoConstantType acType,
uint16 extraInfo1,
uint16 extraInfo2);
1898 void setNamedConstantFromTime(
const String& name,
Real factor);
1901 void clearNamedAutoConstant(
const String& name);
1913 const String& name,
bool throwExceptionIfMissing =
false)
const;
1920 size_t _getFloatConstantPhysicalIndex(
size_t logicalIndex,
size_t requestedSize,
uint16 variability);
1927 size_t _getDoubleConstantPhysicalIndex(
size_t logicalIndex,
size_t requestedSize,
uint16 variability);
1934 size_t _getIntConstantPhysicalIndex(
size_t logicalIndex,
size_t requestedSize,
uint16 variability);
1968 static const AutoConstantDefinition* getAutoConstantDefinition(
const String& name);
1973 static const AutoConstantDefinition* getAutoConstantDefinition(
const size_t idx);
1976 static size_t getNumAutoConstantDefinitions(
void);
1981 void incPassIterationNumber(
void);
1984 {
return mActivePassIterationIndex != (std::numeric_limits<size_t>::max)(); }
1987 {
return mActivePassIterationIndex; }
2004 void addSharedParameters(
const String& sharedParamsName);
2007 bool isUsingSharedParameters(
const String& sharedParamsName)
const;
2010 void removeSharedParameters(
const String& sharedParamsName);
2013 void removeAllSharedParameters();
2016 const GpuSharedParamUsageList& getSharedParameters()
const;
2030 void _copySharedParams();
2032 size_t calculateSize(
void)
const;
2036 void setNamedSubroutine(
const String& subroutineSlot,
const String& subroutine);
2040 void setSubroutine(
size_t index,
const String& subroutine);