00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #ifndef SHUTIL_KERNELLIB_HPP
00025 #define SHUTIL_KERNELLIB_HPP
00026
00027 #include <string>
00028 #include "ShLib.hpp"
00029 #include "ShMatrix.hpp"
00030 #include "ShTexture.hpp"
00031 #include "ShProgram.hpp"
00032
00050 namespace ShUtil {
00051
00052 using namespace SH;
00053
00054 class ShKernelLib {
00055 private:
00056
00057 static std::string makeName(std::string prefix, int index);
00058
00059 public:
00061
00067 static ShProgram outputPass( const ShProgram &p );
00068
00075 static ShProgram inputPass( const ShProgram &p );
00076
00087 static ShProgram shChangeBasis(std::string name="vec",
00088 std::string b0Name="b0", std::string b1Name="b1", std::string b2Name="b2");
00089
00091
00092
00093
00131 template<int N, ShBindingType Binding, typename T>
00132 static ShProgram shVsh(const ShMatrix<N, N, Binding, T> &mv,
00133 const ShMatrix<N, N, Binding, T> &mvp,
00134 int numTangents = 0, int numLights = 1);
00135 };
00136
00137 }
00138
00139 #include "ShKernelLibImpl.hpp"
00140
00141 #endif