27 #ifndef _ShaderFunctionAtom_
28 #define _ShaderFunctionAtom_
59 int getGroupExecutionOrder()
const;
62 int getInternalExecutionOrder()
const;
65 virtual void writeSourceCode(std::ostream& os,
const String& targetLanguage)
const = 0;
68 virtual const String& getFunctionAtomType() = 0;
103 OPM_XY = OPM_X | OPM_Y,
104 OPM_XZ = OPM_X | OPM_Z,
105 OPM_XW = OPM_X | OPM_W,
106 OPM_YZ = OPM_Y | OPM_Z,
107 OPM_YW = OPM_Y | OPM_W,
108 OPM_ZW = OPM_Z | OPM_W,
109 OPM_XYZ = OPM_X | OPM_Y | OPM_Z,
110 OPM_XYW = OPM_X | OPM_Y | OPM_W,
111 OPM_XZW = OPM_X | OPM_Z | OPM_W,
112 OPM_YZW = OPM_Y | OPM_Z | OPM_W,
113 OPM_XYZW = OPM_X | OPM_Y | OPM_Z | OPM_W
138 bool hasFreeFields()
const {
return ((mMask & ~OPM_ALL) && ((mMask & ~OPM_X) || (mMask & ~OPM_Y) || (mMask & ~OPM_Z) || (mMask & ~OPM_W))); }
157 static String getMaskAsString(
int mask);
160 static int getFloatCount(
int mask);
198 virtual void writeSourceCode(std::ostream& os,
const String& targetLanguage)
const;