18 #ifndef PIC_GL_FILTERING_FILTER_HPP 19 #define PIC_GL_FILTERING_FILTER_HPP 21 #include "../../base.hpp" 22 #include "../../util/array.hpp" 23 #include "../../util/std_util.hpp" 24 #include "../../gl/image.hpp" 25 #include "../../gl/image_vec.hpp" 26 #include "../../util/array.hpp" 27 #include "../../util/gl/technique.hpp" 28 #include "../../util/gl/quad.hpp" 111 this->bFboOwn =
false;
133 width = imgIn[0]->width;
134 height = imgIn[0]->height;
135 channels = imgIn[0]->channels;
136 frames = imgIn[0]->frames;
150 for(
unsigned int i = 0; i < flt->
filters.size(); i++) {
183 bool bGammaCorrection)
185 size_t processing_found =
fragment_source.find(
"__GAMMA__CORRECTION__");
187 if(processing_found != std::string::npos) {
188 if(bGammaCorrection) {
190 " color = pow(color, vec3(1.0 / 2.2)); ");
225 bool bSame = imgOut->
width == w &&
264 if(imgIn[0] == NULL) {
284 glViewport(0, 0, (GLsizei)imgIn[0]->width, (GLsizei)imgIn[0]->height);
290 int n = int(imgIn.size());
291 for(
auto i = 0; i < n; i++) {
292 glActiveTexture(GL_TEXTURE0 + i);
293 imgIn[i]->bindTexture();
297 int m = int(
param.size());
298 for(
auto i = 0; i < m; i++) {
299 glActiveTexture(GL_TEXTURE0 + n + i);
300 param[i]->bindTexture();
313 for(
auto i = 0; i< n; i++) {
314 glActiveTexture(GL_TEXTURE0 + i);
315 imgIn[i]->unBindTexture();
318 for(
auto i = 0; i < m; i++) {
319 glActiveTexture(GL_TEXTURE0 + n + i);
320 param[i]->unBindTexture();
int channels
Definition: filter_radial_basis_function.hpp:80
int frames
Definition: filter_radial_basis_function.hpp:80
void setTarget(GLenum target)
setTarget
Definition: filter.hpp:162
T * delete_s(T *data)
delete_s
Definition: std_util.hpp:123
GLenum target
Definition: filter.hpp:47
void unbind()
unbind
Definition: technique.hpp:197
The Fbo class.
Definition: fbo.hpp:32
void insertFilter(FilterGL *flt)
insertFilter
Definition: filter.hpp:143
virtual void releaseAux()
releaseAux
Definition: filter.hpp:99
bool bFboOwn
Definition: filter.hpp:51
bool bDelete
Definition: filter.hpp:54
virtual Fbo * getFbo()
getFbo
Definition: filter.hpp:118
std::vector< FilterGL *> filters
Definition: filter.hpp:55
TechniqueGL technique
Definition: filter.hpp:45
The ImageGL class.
Definition: image.hpp:42
void release()
release
Definition: filter.hpp:85
The TechniqueGL class.
Definition: technique.hpp:31
ImageGLVec param
Definition: filter.hpp:49
static std::string getVertexProgramV3()
getVertexProgramV3 creates a simple vertex program.
Definition: quad.hpp:216
The QuadGL class.
Definition: quad.hpp:30
virtual ImageGL * setupAux(ImageGLVec imgIn, ImageGL *imgOut)
setupAux
Definition: filter.hpp:205
The FilterGL class.
Definition: filter.hpp:35
QuadGL * quad
Definition: filter.hpp:42
static std::string gammaCorrection(std::string fragment_source, bool bGammaCorrection)
gammaCorrection
Definition: filter.hpp:182
bool create(int width, int height, bool bDepth)
create
int width
Definition: filter_radial_basis_function.hpp:80
void Render()
Render draws a quad on screen.
Definition: quad.hpp:140
std::string fragment_source
Definition: filter.hpp:57
std::string vertex_source
Definition: filter.hpp:57
virtual ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut)
Process.
Definition: filter.hpp:258
ImageGL * allocateOutputMemory(ImageGLVec imgIn, ImageGL *imgOut, bool bDelete)
allocateOutputMemory
Definition: filter.hpp:217
~FilterGL()
Definition: filter.hpp:77
virtual void bindTechnique()
Definition: filter.hpp:242
Fbo * fbo
Definition: filter.hpp:39
FilterGL()
FilterGL.
Definition: filter.hpp:62
GLuint getTexture() const
getTexture
Definition: image.hpp:369
void setFbo(Fbo *fbo)
setFbo
Definition: filter.hpp:108
Definition: bilateral_separation.hpp:25
std::string geometry_source
Definition: filter.hpp:57
virtual void changePass(int pass, int tPass)
changePass
Definition: filter.hpp:172
virtual void unbindTechnique()
Definition: filter.hpp:247
void bind()
bind
Definition: technique.hpp:189
std::vector< ImageGL * > ImageGLVec
ImageGLVec an std::vector of pic::ImageGL.
Definition: image_vec.hpp:32
int height
Definition: filter_radial_basis_function.hpp:80
virtual void OutputSize(ImageGLVec imgIn, int &width, int &height, int &channels, int &frames)
OutputSize.
Definition: filter.hpp:131