18 #ifndef PIC_GL_FILTERING_FILTER_CONV_1D_HPP 19 #define PIC_GL_FILTERING_FILTER_CONV_1D_HPP 21 #include "../../base.hpp" 22 #include "../../gl/filtering/filter_1d.hpp" 62 int halfKernelSize = 0;
66 halfKernelSize = kernelSize >> 1;
93 uniform sampler2D u_tex;
94 uniform sampler2D u_weights;
97 uniform
int halfKernelSize;
98 uniform
int kernelSize;
102 vec4 color = vec4(0.0);
103 ivec2 coordsFrag = ivec2(gl_FragCoord.xy);
107 for(
int i = 0; i < kernelSize; i++) {
109 int j = i - halfKernelSize;
110 ivec2 coords = ivec2(j * iX, j * iY);
112 tmpCol = texelFetch(u_tex, coordsFrag.xy + coords.xy, 0);
114 float tmp = texelFetch(u_weights, ivec2(i, 0), 0).x;
115 color += tmpCol * tmp;
119 f_color = vec4(color / weight);
125 uniform sampler3D u_tex;
126 uniform sampler2D u_weights;
131 uniform
int halfKernelSize;
132 uniform
int kernelSize;
136 vec4 color = vec4(0.0);
137 ivec3 coordsFrag = ivec3(ivec2(gl_FragCoord.xy),
slice);
141 for(
int i = 0; i < kernelSize; i++) {
143 int j = i - halfKernelSize;
144 ivec3 coords = coordsFrag.xyz + ivec3(j * iX, j * iY, j * iZ);
146 tmpCol = texelFetch(u_tex, coords.xyz, 0);
148 float tmp = texelFetch(u_weights, ivec2(i, 0), 0).x;
149 color += tmpCol * tmp;
153 f_color = vec4(color / weight);
158 case GL_TEXTURE_2D: {
163 case GL_TEXTURE_3D: {
TechniqueGL technique
Definition: display.hpp:45
ImageGL * weights
Definition: display.hpp:35
int slice
Definition: display.hpp:37
The FilterGL1D class.
Definition: filter_1d.hpp:32
virtual void initShaders()
initShaders
Definition: filter_1d.hpp:175
GLenum target
Definition: display.hpp:47
#define MAKE_STRING(input_string)
The ImageGL class.
Definition: image.hpp:42
The FilterGLConv1D class.
Definition: filter_conv_1d.hpp:29
#define PIC_INLINE
Definition: base.hpp:33
The ImageGL class.
Definition: display.hpp:42
int width
Definition: filter_radial_basis_function.hpp:80
void FragmentShader()
FragmentShader.
Definition: bilateral_separation.hpp:25
FilterGLConv1D()
FilterGLConv1D.
std::string fragment_source
Definition: display.hpp:57
The FilterGL1D class.
Definition: display.hpp:32
void setUniformAux()
setUniformAux
Definition: filter_conv_1d.hpp:59
void release()
release
Definition: display.hpp:85
void setUniform1i(const char *name_uniform, int value0)
SetUniform.
Definition: display.hpp:236