From ec559912fbcb51b713e1f33d4931af5fb52fd85b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 13 Feb 2019 16:58:54 +0100 Subject: Fix T61470: inconsistent HSV node results with saturation > 1.0. Values outside the 0..1 range produce negative colors, so now clamp to that range everywhere. Also fixes improper handling of hue > 2.0 in some places. --- source/blender/gpu/shaders/gpu_shader_material.glsl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'source/blender/gpu') diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index ab044fff100..970bbe641d4 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -881,12 +881,9 @@ void hue_sat(float hue, float sat, float value, float fac, vec4 col, out vec4 ou rgb_to_hsv(col, hsv); - hsv[0] += (hue - 0.5); - if (hsv[0] > 1.0) hsv[0] -= 1.0; else if (hsv[0] < 0.0) hsv[0] += 1.0; - hsv[1] *= sat; - if (hsv[1] > 1.0) hsv[1] = 1.0; else if (hsv[1] < 0.0) hsv[1] = 0.0; - hsv[2] *= value; - if (hsv[2] > 1.0) hsv[2] = 1.0; else if (hsv[2] < 0.0) hsv[2] = 0.0; + hsv[0] = fract(hsv[0] + hue + 0.5); + hsv[1] = hsv[1] * clamp(sat, 0.0, 1.0); + hsv[2] = hsv[2] * value; hsv_to_rgb(hsv, outcol); -- cgit v1.2.3