diff options
-rw-r--r-- | video/csputils.c | 5 | ||||
-rw-r--r-- | video/csputils.h | 7 | ||||
-rw-r--r-- | video/out/gl_video.c | 6 | ||||
-rw-r--r-- | video/out/gl_video_shaders.glsl | 4 |
4 files changed, 7 insertions, 15 deletions
diff --git a/video/csputils.c b/video/csputils.c index 00e6d32cd2..835f06bcd9 100644 --- a/video/csputils.c +++ b/video/csputils.c @@ -633,10 +633,7 @@ void mp_csp_copy_equalizer_values(struct mp_csp_params *params, params->contrast = (eq->values[MP_CSP_EQ_CONTRAST] + 100) / 100.0; params->hue = eq->values[MP_CSP_EQ_HUE] / 100.0 * M_PI; params->saturation = (eq->values[MP_CSP_EQ_SATURATION] + 100) / 100.0; - float gamma = exp(log(8.0) * eq->values[MP_CSP_EQ_GAMMA] / 100.0); - params->rgamma = gamma; - params->ggamma = gamma; - params->bgamma = gamma; + params->gamma = exp(log(8.0) * eq->values[MP_CSP_EQ_GAMMA] / 100.0); } static int find_eq(int capabilities, const char *name) diff --git a/video/csputils.h b/video/csputils.h index 4f0a09da6e..029b3213e4 100644 --- a/video/csputils.h +++ b/video/csputils.h @@ -114,9 +114,7 @@ struct mp_csp_params { float contrast; float hue; float saturation; - float rgamma; - float ggamma; - float bgamma; + float gamma; // discard U/V components bool gray; // texture_bits/input_bits is for rescaling fixed point input to range [0,1] @@ -132,8 +130,7 @@ struct mp_csp_params { .levels_in = MP_CSP_LEVELS_TV, \ .levels_out = MP_CSP_LEVELS_PC, \ .brightness = 0, .contrast = 1, .hue = 0, .saturation = 1, \ - .rgamma = 1, .ggamma = 1, .bgamma = 1, \ - .texture_bits = 8, .input_bits = 8} + .gamma = 1, .texture_bits = 8, .input_bits = 8} struct mp_image_params; void mp_csp_set_image_params(struct mp_csp_params *params, diff --git a/video/out/gl_video.c b/video/out/gl_video.c index 5ad935bd70..f965a4abd9 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -567,10 +567,8 @@ static void update_uniforms(struct gl_video *p, GLuint program) gl->Uniform1f(gl->GetUniformLocation(program, "sig_offset"), sig_offset); float gamma = p->opts.gamma ? p->opts.gamma : 1.0; - gl->Uniform3f(gl->GetUniformLocation(program, "inv_gamma"), - 1.0 / (cparams.rgamma * gamma), - 1.0 / (cparams.ggamma * gamma), - 1.0 / (cparams.bgamma * gamma)); + gl->Uniform1f(gl->GetUniformLocation(program, "inv_gamma"), + 1.0 / (cparams.gamma * gamma)); for (int n = 0; n < p->plane_count; n++) { char textures_n[32]; diff --git a/video/out/gl_video_shaders.glsl b/video/out/gl_video_shaders.glsl index b13d518e6c..032248516d 100644 --- a/video/out/gl_video_shaders.glsl +++ b/video/out/gl_video_shaders.glsl @@ -178,7 +178,7 @@ uniform mat3 colormatrix; uniform vec3 colormatrix_c; uniform mat3 cms_matrix; uniform mat2 dither_trafo; -uniform vec3 inv_gamma; +uniform float inv_gamma; uniform float input_gamma; uniform float conv_gamma; uniform float sig_center; @@ -495,7 +495,7 @@ void main() { color = clamp(color, 0.0, 1.0); #ifdef USE_GAMMA_POW // User-defined gamma correction factor (via the gamma sub-option) - color = pow(color, inv_gamma); + color = pow(color, vec3(inv_gamma)); #endif #ifdef USE_3DLUT // For the 3DLUT we are arbitrarily using 2.4 as input gamma to reduce |