summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/csputils.c5
-rw-r--r--video/csputils.h7
-rw-r--r--video/out/gl_video.c6
-rw-r--r--video/out/gl_video_shaders.glsl4
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