OgreShaderExHardwareSkinningTechnique.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org
6
7Copyright (c) 2000-2013 Torus Knot Software Ltd
8Permission is hereby granted, free of charge, to any person obtaining a copy
9of this software and associated documentation files (the "Software"), to deal
10in the Software without restriction, including without limitation the rights
11to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12copies of the Software, and to permit persons to whom the Software is
13furnished to do so, subject to the following conditions:
14
15The above copyright notice and this permission notice shall be included in
16all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24THE 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"
37
38namespace Ogre {
39namespace RTShader {
40
41class HardwareSkinningFactory;
42
54class _OgreRTSSExport HardwareSkinningTechnique : public RTShaderSystemAlloc
55{
56// Interface.
57public:
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
116protected:
118 Operand::OpMask indexToMask (int index);
119
120// Attributes.
121protected:
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
#define _OgreRTSSExport
SharedPtr< Parameter > ParameterPtr
SharedPtr< UniformParameter > UniformParameterPtr
GeneralAllocatedObject RTShaderSystemAlloc
unsigned short ushort

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.