OGRE  1.9
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
OgreShaderExHardwareSkinningTechnique.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org
6 
7 Copyright (c) 2000-2014 Torus Knot Software Ltd
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9 of this software and associated documentation files (the "Software"), to deal
10 in the Software without restriction, including without limitation the rights
11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the Software is
13 furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 THE SOFTWARE.
25 -----------------------------------------------------------------------------
26 */
27 #ifndef _ShaderExHardwareSkinningTechnique_
28 #define _ShaderExHardwareSkinningTechnique_
29 
31 
32 #ifdef RTSHADER_SYSTEM_BUILD_EXT_SHADERS
34 #include "OgreShaderParameter.h"
35 #include "OgreRenderSystem.h"
36 #include "OgreShaderFunctionAtom.h"
37 
38 namespace Ogre {
39 namespace RTShader {
40 
41 class HardwareSkinningFactory;
42 
54 class _OgreRTSSExport HardwareSkinningTechnique : public RTShaderSystemAlloc
55 {
56 // Interface.
57 public:
59  HardwareSkinningTechnique();
60 
61  virtual ~HardwareSkinningTechnique();
62 
66  virtual void copyFrom(const HardwareSkinningTechnique* hardSkin);
67 
71  void setHardwareSkinningParam(ushort boneCount, ushort weightCount, bool correctAntipodalityHandling = false, bool scalingShearingSupport = false);
72 
77  ushort getBoneCount();
78 
83  ushort getWeightCount();
84 
89  bool hasCorrectAntipodalityHandling();
90 
95  bool hasScalingShearingSupport();
96 
99  void setDoBoneCalculations(bool doBoneCalculations);
100 
104  virtual bool resolveParameters(ProgramSet* programSet) = 0;
105 
109  virtual bool resolveDependencies(ProgramSet* programSet) = 0;
110 
114  virtual bool addFunctionInvocations(ProgramSet* programSet) = 0;
115 
116 protected:
118  Operand::OpMask indexToMask (int index);
119 
120 // Attributes.
121 protected:
122  ushort mBoneCount;
123  ushort mWeightCount;
124 
125  bool mCorrectAntipodalityHandling;
126  bool mScalingShearingSupport;
127 
128  bool mDoBoneCalculations;
129 
130  ParameterPtr mParamInPosition;
131  ParameterPtr mParamInNormal;
132  ParameterPtr mParamInBiNormal;
133  ParameterPtr mParamInTangent;
134  ParameterPtr mParamInIndices;
135  ParameterPtr mParamInWeights;
136  UniformParameterPtr mParamInWorldMatrices;
137  UniformParameterPtr mParamInInvWorldMatrix;
138  UniformParameterPtr mParamInViewProjMatrix;
139  UniformParameterPtr mParamInWorldMatrix;
140  UniformParameterPtr mParamInWorldViewProjMatrix;
141 
142  ParameterPtr mParamTempFloat4;
143  ParameterPtr mParamTempFloat3;
144  ParameterPtr mParamLocalPositionWorld;
145  ParameterPtr mParamLocalNormalWorld;
146  ParameterPtr mParamLocalTangentWorld;
147  ParameterPtr mParamLocalBinormalWorld;
148  ParameterPtr mParamOutPositionProj;
149 };
150 
151 }
152 }
153 
154 #endif
155 #endif
156 
SharedPtr< Parameter > ParameterPtr
#define _OgreRTSSExport
unsigned short ushort
GeneralAllocatedObject RTShaderSystemAlloc
SharedPtr< UniformParameter > UniformParameterPtr