00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020 #ifndef SHUTIL_KERNELSURFACE_HPP
00021 #define SHUTIL_KERNELSURFACE_HPP
00022
00023 #include <string>
00024 #include "sh/ShMatrix.hpp"
00025 #include "sh/ShTexture.hpp"
00026 #include "sh/ShProgram.hpp"
00027
00036 namespace ShUtil {
00037
00038 using namespace SH;
00039
00040 class ShKernelSurface {
00041 private:
00042
00043 static std::string makeName(std::string prefix, int index);
00044
00045 public:
00058 template<typename T>
00059 static ShProgram diffuse();
00060
00075 template<typename T>
00076 static ShProgram specular();
00077
00093 template<typename T>
00094 static ShProgram phong();
00095
00108 template<typename T>
00109 static ShProgram gooch();
00110
00117 template<typename T>
00118 static ShProgram null();
00119 };
00120
00121 }
00122
00123 #include "ShKernelSurfaceImpl.hpp"
00124
00125 #endif