/* QGLView Copyright (C) 2020 Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef TONEMAPPING_PROC_H #define TONEMAPPING_PROC_H #include "glframebuffer_mipmap.h" #include class TonemappingProc: public QThread { friend class Renderer; friend class QGLView; public: TonemappingProc(Renderer * rend); virtual ~TonemappingProc(); void init(); void resize(); void prepareSum(); void renderSum(Framebuffer & fbo_src, int index); bool process(); float frameMax(); protected: void timerEvent(QTimerEvent * e); void run() override; float calcHistogram(const QVector & data); private: Renderer * r; QMutex mutex; QVector last_data; QVector last_max; float frame_max, cur_max; bool need_render_sum, enabled; volatile bool exit_; int timer_tone, timer_delim; Framebuffer fbo_1x1; FramebufferMipmap fbomm; QOpenGLShaderProgram * shader_sum; Buffer buffer_vbo; GLenum vbo_vao; }; #endif // RENDERER_H