From 521f8a11d8d2e0686301d93fcab9821b1eea9608 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 17 Sep 2023 06:26:16 +0200 Subject: [PATCH] gl: gradients should transition in unpremultiplied space So make the gradient shaders do that. --- gsk/gl/resources/conic_gradient.glsl | 6 +++--- gsk/gl/resources/linear_gradient.glsl | 6 +++--- gsk/gl/resources/radial_gradient.glsl | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gsk/gl/resources/conic_gradient.glsl b/gsk/gl/resources/conic_gradient.glsl index f1d33cd6a7..eaa04aa3ad 100644 --- a/gsk/gl/resources/conic_gradient.glsl +++ b/gsk/gl/resources/conic_gradient.glsl @@ -75,10 +75,10 @@ void main() { if (offset < next_offset) { float f = (offset - curr_offset) / (next_offset - curr_offset); - vec4 curr_color = gsk_premultiply(get_color(i)); - vec4 next_color = gsk_premultiply(get_color(i + 1)); + vec4 curr_color = get_color(i); + vec4 next_color = get_color(i + 1); vec4 color = mix(curr_color, next_color, f); - gskSetScaledOutputColor(color, u_alpha); + gskSetScaledOutputColor(gsk_premultiply(color), u_alpha); return; } } diff --git a/gsk/gl/resources/linear_gradient.glsl b/gsk/gl/resources/linear_gradient.glsl index fa130be4cb..8a7a557f8e 100644 --- a/gsk/gl/resources/linear_gradient.glsl +++ b/gsk/gl/resources/linear_gradient.glsl @@ -97,10 +97,10 @@ void main() { if (offset < next_offset) { float f = (offset - curr_offset) / (next_offset - curr_offset); - vec4 curr_color = gsk_premultiply(get_color(i)); - vec4 next_color = gsk_premultiply(get_color(i + 1)); + vec4 curr_color = get_color(i); + vec4 next_color = get_color(i + 1); vec4 color = mix(curr_color, next_color, f); - gskSetScaledOutputColor(color, u_alpha); + gskSetScaledOutputColor(gsk_premultiply (color), u_alpha); return; } } diff --git a/gsk/gl/resources/radial_gradient.glsl b/gsk/gl/resources/radial_gradient.glsl index 59fad00290..d03ca96b8c 100644 --- a/gsk/gl/resources/radial_gradient.glsl +++ b/gsk/gl/resources/radial_gradient.glsl @@ -77,10 +77,10 @@ void main() { if (offset < next_offset) { float f = (offset - curr_offset) / (next_offset - curr_offset); - vec4 curr_color = gsk_premultiply(get_color(i)); - vec4 next_color = gsk_premultiply(get_color(i + 1)); + vec4 curr_color = get_color(i); + vec4 next_color = get_color(i + 1); vec4 color = mix(curr_color, next_color, f); - gskSetScaledOutputColor(color, u_alpha); + gskSetScaledOutputColor(gsk_premultiply(color), u_alpha); return; } } -- 2.30.2