18 #ifndef PIC_GL_FILTERING_FILTER_DURAND_TMO_HPP 19 #define PIC_GL_FILTERING_FILTER_DURAND_TMO_HPP 21 #include "../../base.hpp" 23 #include "../../gl/filtering/filter.hpp" 24 #include "../../gl/filtering/filter_luminance.hpp" 85 bool bGammaCorrection =
false):
FilterGL()
104 uniform sampler2D u_tex; \n
105 uniform sampler2D u_lum_log; \n
106 uniform sampler2D u_base; \n
113 ivec2 coords = ivec2(gl_FragCoord.xy);\n
114 vec3 color = texelFetch(u_tex, coords, 0).xyz;\n
115 float L = dot(vec3(0.213, 0.715, 0.072), color);\n
116 float L_log = texelFetch(u_lum_log, coords, 0).x;\n
117 float base = texelFetch(u_base, coords, 0).x;\n
118 float detail = L_log - base;\n
120 L_comp = pow(10.0, L_comp);\n
121 color = (color * L_comp / L);\n
122 __GAMMA__CORRECTION__ \n
123 f_color = vec4(color, 1.0);\n
TechniqueGL technique
Definition: display.hpp:45
void initShaders()
initShaders
void bind()
bind
Definition: display.hpp:189
PIC_INLINE float log10fPlusEpsilon(float x)
log10fPlusEpsilon
Definition: math.hpp:355
#define MAKE_STRING(input_string)
float compression_factor
Definition: filter_durand_tmo.hpp:34
bool bGammaCorrection
Definition: filter_durand_tmo.hpp:35
FilterGLDurandTMO()
FilterGLDurandTMO.
void setUniform1f(const char *name_uniform, float value0)
SetUniform1f.
Definition: display.hpp:247
The FilterGL class.
Definition: filter.hpp:35
float log_absolute
Definition: filter_durand_tmo.hpp:34
static std::string gammaCorrection(std::string fragment_source, bool bGammaCorrection)
gammaCorrection
Definition: display.hpp:182
void FragmentShader()
FragmentShader.
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
The FilterGLDurandTMO class.
Definition: filter_durand_tmo.hpp:31
void unbind()
unbind
Definition: display.hpp:197
std::string vertex_source
Definition: display.hpp:57
Definition: bilateral_separation.hpp:25
void update(float compression_factor, float log_absolute)
update
std::string fragment_source
Definition: display.hpp:57
void release()
release
Definition: display.hpp:85
void setUniform1i(const char *name_uniform, int value0)
SetUniform.
Definition: display.hpp:236