From b9f83265b60ca1c235be9c3f82d90f7f3c8b19a7 Mon Sep 17 00:00:00 2001 From: Matthijs Velsink Date: Wed, 30 Oct 2024 23:13:29 +0100 Subject: [PATCH] gsk: Fix wrong bt709_oetf And use the format from `gdkcolordefs.h` for good measure. --- gsk/gpu/shaders/gskgpuconvertcicp.glsl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gsk/gpu/shaders/gskgpuconvertcicp.glsl b/gsk/gpu/shaders/gskgpuconvertcicp.glsl index 35045564f0..09c6cff922 100644 --- a/gsk/gpu/shaders/gskgpuconvertcicp.glsl +++ b/gsk/gpu/shaders/gskgpuconvertcicp.glsl @@ -161,19 +161,25 @@ run (out vec2 pos) float bt709_eotf (float v) { - if (abs (v) < 0.081) + const float a = 1.099; + const float d = 0.0812; + + if (abs (v) < d) return v / 4.5; else - return sign (v) * pow ((abs (v) + 0.099) / 1.099, 1.0/0.45); + return sign (v) * pow ((abs (v) + (a - 1.0)) / a, 1.0 / 0.45); } float bt709_oetf (float v) { - if (abs (v) < 0.081) + const float a = 1.099; + const float b = 0.018; + + if (abs (v) < b) return v * 4.5; else - return 1.099 * sign (v) * (pow (abs (v), 0.45) - 0.099); + return sign (v) * (a * pow (abs (v), 0.45) - (a - 1.0)); } float