26 #ifndef _PROGRAM_GLSL_H
27 #define _PROGRAM_GLSL_H
39 static int ReadShaderFile(
const char * source,
char *& code);
40 void CheckCompileLog();
42 void PrintCompileLog(ostream & os );
43 int inline IsValidShaderObject(){
return _shaderID && _compiled;}
44 int IsValidVertexShader();
45 int IsValidFragmentShader();
46 GLuint GetShaderID(){
return _shaderID;}
48 ShaderObject(
int shadertype,
const char * source,
int filesource =0);
56 void AttachShaderObject(ShaderObject& shader);
57 void DetachShaderObject(ShaderObject& shader);
176 GLint _param_dog_texu;
177 GLint _param_dog_texd;
178 GLint _param_ftex_width;
179 GLint _param_genlist_start_tex0;
180 GLint _param_genlist_step_tex0;
181 GLint _param_genvbo_size;
182 GLint _param_orientation_gtex;
183 GLint _param_orientation_size;
184 GLint _param_orientation_stex;
185 GLint _param_margin_copy_truncate;
186 GLint _param_genlist_init_bbox;
187 GLint _param_descriptor_gtex;
188 GLint _param_descriptor_size;
189 GLint _param_descriptor_dsize;
217 GLint _param_dog_texu;
218 GLint _param_dog_texd;
219 GLint _param_dog_texi;
220 GLint _param_margin_copy_truncate;
221 GLint _param_grad_pass_texp;
222 GLint _param_genlist_init_bbox;
223 GLint _param_genlist_start_tex0;
224 GLint _param_ftex_width;
225 GLint _param_genlist_step_tex0;
226 GLint _param_genlist_end_ktex;
227 GLint _param_genvbo_size;
228 GLint _param_orientation_gtex;
229 GLint _param_orientation_otex;
230 GLint _param_orientation_size;
231 GLint _param_descriptor_gtex;
232 GLint _param_descriptor_otex;
233 GLint _param_descriptor_size;
234 GLint _param_descriptor_dsize;
void MakeFilterProgram(float kernel[], int width)
virtual void * GetProgramID()
void PrintLinkLog(std::ostream &os)
virtual void LoadGenListShader(int ndoglev, int nlev)
virtual void SetMarginCopyParam(int xmax, int ymax)
virtual void LoadKeypointShader(float threshold, float edgeTrheshold)
void LoadDescriptorShaderF2()
virtual void SetGenListStepParam(int tex, int tex0)
virtual void SetDogTexParam(int texU, int texD)
virtual void SetGenListStartParam(float width, int tex0)
void LoadOrientationShader()
virtual void SetGenListInitParam(int w, int h)
virtual void LoadDisplayShaders()
virtual void UnloadProgram()
virtual void LoadFixedShaders()
virtual void SetGenVBOParam(float width, float fwidth, float size)
void SetSimpleOrientationInput(int oTex, float sigma, float sigma_step)
static void WriteOrientationCodeToStream(ostream &out)
virtual void LoadDescriptorShader()
virtual void SetFeatureDescirptorParam(int gtex, int otex, float dwidth, float fwidth, float width, float height, float sigma)
static ProgramGLSL * LoadGenListStepShader(int start, int step)
virtual void SetFeatureOrientationParam(int gtex, int width, int height, float sigma, int stex=0, float step=1.0f)
virtual void UnloadProgram()
virtual void SetGenListEndParam(int ktex)
virtual void SetGenListStartParam(float width, int tex0)
virtual void SetSimpleOrientationInput(int oTex, float sigma, float sigma_step)
static ProgramGLSL * LoadDescriptorProgramRECT()
static ProgramGLSL * LoadDescriptorProgramPKSL()
virtual void SetGenListStepParam(int tex, int tex0)
virtual void LoadOrientationShader()
virtual void LoadDescriptorShader()
virtual void LoadDescriptorShaderF2()
virtual void SetDogTexParam(int texU, int texD)
virtual void LoadDisplayShaders()
virtual void SetMarginCopyParam(int xmax, int ymax)
virtual void LoadFixedShaders()
virtual void SetGenVBOParam(float width, float fwidth, float size)
virtual void LoadKeypointShader(float threshold, float edgeTrheshold)
virtual void SetFeatureDescirptorParam(int gtex, int otex, float dwidth, float fwidth, float width, float height, float sigma)
virtual void SetGenListInitParam(int w, int h)
virtual void LoadGenListShader(int ndoglev, int nlev)
virtual void SetGradPassParam(int texP)
virtual void SetFeatureOrientationParam(int gtex, int width, int height, float sigma, int stex, float step)
virtual void LoadGenListShader(int ndoglev, int nlev)=0
FilterProgram * f_gaussian_skip1
virtual void LoadFixedShaders()=0
virtual void LoadOrientationShader()=0
virtual void SetGenListStepParam(int tex, int tex0)=0
ProgramGPU * s_seperate_sp
ProgramGPU * s_display_gaussian
ProgramGPU * s_display_grad
ProgramGPU * s_genlist_histo
virtual void SetSimpleOrientationInput(int oTex, float sigma, float sigma_step)
virtual void SetGenVBOParam(float width, float fwidth, float size)=0
ProgramGPU * s_genlist_step
ProgramGPU * s_genlist_end
ProgramGPU * s_descriptor_fp
ProgramGPU * s_orientation
virtual void LoadDescriptorShader()
vector< FilterProgram * > f_gaussian_skip0_v
virtual void SetGradPassParam(int texP=0)
ProgramGPU * s_genlist_init_ex
void CreateGaussianFilters(SiftParam ¶m)
virtual void SetGenListInitParam(int w, int h)
virtual void SetMarginCopyParam(int xmax, int ymax)
ProgramGPU * s_display_dog
virtual void LoadKeypointShader(float threshold, float edgeTrheshold)=0
FilterProgram * f_gaussian_skip0
ProgramGPU * s_margin_copy
virtual void SetDogTexParam(int texU, int texD)=0
virtual void SetFeatureOrientationParam(int gtex, int width, int height, float sigma, int stex, float step)
virtual void SetGenListEndParam(int ktex)
virtual void UnloadProgram()=0
void LoadDynamicShaders(SiftParam ¶m)
ProgramGPU * s_genlist_start
ProgramGPU * s_vertex_list
FilterProgram ** f_gaussian_step
void SelectInitialSmoothingFilter(int octave_min, SiftParam ¶m)
ProgramGPU * s_genlist_init_tight
ProgramGPU * s_display_keys
virtual void SetGenListStartParam(float width, int tex0)=0
virtual void LoadDisplayShaders()=0
virtual void SetFeatureDescirptorParam(int gtex, int otex, float dwidth, float fwidth, float width, float height, float sigma)