18 #ifndef PIC_GL_FILTERING_GL_FILTER_WARP_2D_HPP 19 #define PIC_GL_FILTERING_GL_FILTER_WARP_2D_HPP 21 #include "../../base.hpp" 23 #include "../../util/gl/fbo.hpp" 25 #include "../../util/matrix_3_x_3.hpp" 26 #include "../../filtering/filter_warp_2d.hpp" 27 #include "../../gl/filtering/filter.hpp" 82 bmax[0] = imgIn[0]->width;
83 bmax[1] = imgIn[0]->height;
88 channels = imgIn[0]->channels;
89 frames = imgIn[0]->frames;
106 mid[0] = imgIn[0]->widthf * 0.5f;
107 mid[1] = imgIn[0]->heightf * 0.5f;
148 uniform sampler2D u_tex; \n
149 uniform mat3
h_inv; \n
151 uniform vec2 inv_tSize; \n
155 vec2 coords = gl_FragCoord.xy - mid;\n
156 vec3 point_proj =
h_inv * vec3(coords, 1.0);
157 point_proj /= point_proj.z;
158 point_proj.xy += mid;
159 point_proj.xy *= inv_tSize;
160 vec3 color = vec3(0.0);
161 if(point_proj.x >= 0.0 && point_proj.x <= 1.0 &&
162 point_proj.y >= 0.0 && point_proj.y <= 1.0) {
163 color = texture(u_tex, point_proj.xy).xyz;\n
165 f_color = vec4(color, 1.0); \n
float data[9]
Definition: matrix_3_x_3.hpp:37
TechniqueGL technique
Definition: display.hpp:45
void OutputSize(ImageGLVec imgIn, int &width, int &height, int &channels, int &frames)
OutputSize.
Definition: filter_warp_2d.hpp:74
bool bSameSize
Definition: filter_warp_2d.hpp:41
ImageGL * setupAux(ImageGLVec imgIn, ImageGL *imgOut)
setupAux
Definition: filter_warp_2d.hpp:98
Matrix3x3 h
Definition: filter_warp_2d.hpp:40
void setUniform2f(const char *name_uniform, float value0, float value1)
setUniform
Definition: display.hpp:259
ImageGL * allocateOutputMemory(ImageGLVec imgIn, ImageGL *imgOut, bool bDelete)
allocateOutputMemory
Definition: display.hpp:217
The Matrix3x3 class provides methods for managing a 3 by 3 matrix.
Definition: matrix_3_x_3.hpp:29
void bind()
bind
Definition: display.hpp:189
#define MAKE_STRING(input_string)
Matrix3x3 h_inv
Definition: filter_warp_2d.hpp:40
int bmin[2]
Definition: filter_warp_2d.hpp:38
The FilterGLWarp2D class.
Definition: filter_warp_2d.hpp:34
Matrix3x3 * inverse(Matrix3x3 *ret)
inverse computes the inverse of the matrix.
Definition: matrix_3_x_3.hpp:257
The ImageGL class.
Definition: image.hpp:42
FilterGLWarp2D()
FilterGLWarp2D.
void update(Matrix3x3 h, bool bSameSize, bool bCentroid)
update
The FilterGL class.
Definition: filter.hpp:35
void initShaders()
initShaders
The FilterGL class.
Definition: display.hpp:35
#define PIC_INLINE
Definition: base.hpp:33
bool initStandard(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source, std::string name)
initStandard
Definition: display.hpp:114
void unbind()
unbind
Definition: display.hpp:197
std::string vertex_source
Definition: display.hpp:57
Definition: bilateral_separation.hpp:25
static void computeBoundingBox(Matrix3x3 &h, bool bCentroid, float width, float height, int *bmin, int *bmax)
computeBoundingBox
Definition: filter_warp_2d.hpp:122
std::string fragment_source
Definition: display.hpp:57
The Matrix3x3 class provides methods for managing a 3 by 3 matrix.
Definition: display.hpp:30
void setUniform3x3(const char *name_uniform, const float *matrix, bool bTranspose)
setUniform3x3
Definition: display.hpp:304
bool bCentroid
Definition: filter_warp_2d.hpp:41
int bmax[2]
Definition: filter_warp_2d.hpp:38
std::vector< ImageGL * > ImageGLVec
ImageGLVec an std::vector of pic::ImageGL.
Definition: image_vec.hpp:32
void setUniform1i(const char *name_uniform, int value0)
SetUniform.
Definition: display.hpp:236