ShaderMan.h
Go to the documentation of this file.
00001 
00002 //      File:           ShaderMan.h
00003 //      Author:         Changchang Wu
00004 //      Description : interface for the ShaderMan class.
00005 //                      This is a class that manages all the shaders for SIFT
00006 //
00007 //
00008 //      Copyright (c) 2007 University of North Carolina at Chapel Hill
00009 //      All Rights Reserved
00010 //
00011 //      Permission to use, copy, modify and distribute this software and its
00012 //      documentation for educational, research and non-profit purposes, without
00013 //      fee, and without a written agreement is hereby granted, provided that the
00014 //      above copyright notice and the following paragraph appear in all copies.
00015 //      
00016 //      The University of North Carolina at Chapel Hill make no representations
00017 //      about the suitability of this software for any purpose. It is provided
00018 //      'as is' without express or implied warranty. 
00019 //
00020 //      Please send BUG REPORTS to ccwu@cs.unc.edu
00021 //
00023 
00024 
00025 
00026 #ifndef _SIFT_SHADER_MAN_H
00027 #define _SIFT_SHADER_MAN_H
00028 
00029 
00030 #include "ProgramGPU.h"
00031 #include "ProgramGLSL.h"
00033 //class ShaderMan
00034 //description:  pure static class
00035 //                              wrapper of shaders from different GPU languages
00037 class SiftParam;
00038 class FilterGLSL;
00039 
00040 class ShaderMan
00041 {
00042 public:
00043         static ShaderBag*   s_bag;
00044 public:
00045         static void SelectInitialSmoothingFilter(int octave_min, SiftParam&param); 
00046         static void UseShaderMarginCopy(int xmax, int ymax);
00047         static void UseShaderOrientation(int gtex, int width, int height, float sigma, int auxtex, float step, int keypoint_list);
00048         static void UseShaderDescriptor(int gtex, int otex, int dwidth, int fwidth, int width, int height, float sigma);
00049         static void UseShaderSimpleOrientation(int oTex, float sigma, float sigma_step);
00050         static void UseShaderCopyKeypoint();
00051         static void UseShaderGenVBO( float width, float fwidth,  float size);
00052         static void UseShaderDebug();
00053         static void UseShaderZeroPass();
00054         static void UseShaderGenListStart(float fw, int tex0);
00055         static void UseShaderGenListStep(int tex, int tex0);
00056         static void UseShaderGenListEnd(int ktex);
00057         static void UseShaderGenListHisto();
00058         static void UseShaderGenListInit(int w, int h, int tight = 1);
00059         static void UseShaderKeypoint(int texU, int texD);
00060         static void UseShaderGradientPass(int texP = 0);
00061         static void UseShaderDisplayKeypoints();
00062         static void UseShaderDisplayGrad();
00063         static void UseShaderRGB2Gray();
00064         static void UseShaderDisplayDOG();
00065         static void UseShaderDisplayGaussian();
00067     static void FilterInitialImage(GLTexImage* tex, GLTexImage* buf);
00068     static void FilterSampledImage(GLTexImage* tex, GLTexImage* buf);
00069     static void FilterImage(FilterProgram* filter, GLTexImage *dst, GLTexImage *src, GLTexImage*tmp);
00070         static void TextureCopy(GLTexImage*dst, GLTexImage*src);
00071         static void TextureDownSample(GLTexImage* dst, GLTexImage*src, int scale = 2);
00072         static void TextureUpSample(GLTexImage* dst, GLTexImage*src, int scale);
00074         static void InitShaderMan(SiftParam&param);
00075         static void DestroyShaders();
00076         static int  HaveShaderMan(){return s_bag != NULL;}
00077         static void UnloadProgram();
00078 };
00079 
00080 #endif 


siftgpu
Author(s): Changchang Wu
autogenerated on Wed Aug 26 2015 15:24:06