27 #ifndef _ShaderExDualQuaternionSkinning_ 28 #define _ShaderExDualQuaternionSkinning_ 32 #ifdef RTSHADER_SYSTEM_BUILD_EXT_SHADERS 48 #define SGX_LIB_DUAL_QUATERNION "SGXLib_DualQuaternion" 49 #define SGX_FUNC_BLEND_WEIGHT "SGX_BlendWeight" 50 #define SGX_FUNC_ANTIPODALITY_ADJUSTMENT "SGX_AntipodalityAdjustment" 51 #define SGX_FUNC_CALCULATE_BLEND_POSITION "SGX_CalculateBlendPosition" 52 #define SGX_FUNC_CALCULATE_BLEND_NORMAL "SGX_CalculateBlendNormal" 53 #define SGX_FUNC_NORMALIZE_DUAL_QUATERNION "SGX_NormalizeDualQuaternion" 54 #define SGX_FUNC_ADJOINT_TRANSPOSE_MATRIX "SGX_AdjointTransposeMatrix" 55 #define SGX_FUNC_BUILD_DUAL_QUATERNION_MATRIX "SGX_BuildDualQuaternionMatrix" 61 class _OgreRTSSExport DualQuaternionSkinning :
public HardwareSkinningTechnique
66 DualQuaternionSkinning();
71 virtual bool resolveParameters(ProgramSet* programSet);
76 virtual bool resolveDependencies(ProgramSet* programSet);
81 virtual bool addFunctionInvocations(ProgramSet* programSet);
86 void addPositionCalculations(Function* vsMain,
int& funcCounter);
89 void adjustForCorrectAntipodality(Function* vsMain,
int index,
int& funcCounter,
const ParameterPtr& pTempWorldMatrix);
95 void addIndexedPositionWeight(Function* vsMain,
int index,
ParameterPtr& pWorldMatrix,
99 void addNormalRelatedCalculations(Function* vsMain,
124 #endif // RTSHADER_SYSTEM_BUILD_EXT_SHADERS 125 #endif // _ShaderExDualQuaternionSkinning_ SharedPtr< UniformParameter > UniformParameterPtr
SharedPtr< Parameter > ParameterPtr