From 9f029d3f90f1cff8ea49a8eebd935e820c1498d2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 22 Aug 2014 09:50:10 +1000 Subject: ColorRamp: Use linear V for HSV/HSL blending This matches RGB blending black/white for eg. --- source/blender/blenkernel/intern/texture.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/blender/blenkernel/intern') diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 50aed50fa8a..76233a4ed77 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -437,11 +437,16 @@ bool do_colorband(const ColorBand *coba, float in, float out[4]) rgb_to_hsv_v(col1, col1); rgb_to_hsv_v(col2, col2); + col1[2] = srgb_to_linearrgb(col1[2]); + col2[2] = srgb_to_linearrgb(col2[2]); + out[0] = colorband_hue_interp(coba->ipotype_hue, mfac, fac, col1[0], col2[0]); out[1] = mfac * col1[1] + fac * col2[1]; out[2] = mfac * col1[2] + fac * col2[2]; out[3] = mfac * cbd1->a + fac * cbd2->a; + out[2] = linearrgb_to_srgb(out[2]); + hsv_to_rgb_v(out, out); srgb_to_linearrgb_v3_v3(out, out); @@ -452,6 +457,9 @@ bool do_colorband(const ColorBand *coba, float in, float out[4]) linearrgb_to_srgb_v3_v3(col1, &cbd1->r); linearrgb_to_srgb_v3_v3(col2, &cbd2->r); + col1[2] = srgb_to_linearrgb(col1[2]); + col2[2] = srgb_to_linearrgb(col2[2]); + rgb_to_hsl_v(col1, col1); rgb_to_hsl_v(col2, col2); @@ -460,6 +468,8 @@ bool do_colorband(const ColorBand *coba, float in, float out[4]) out[2] = mfac * col1[2] + fac * col2[2]; out[3] = mfac * cbd1->a + fac * cbd2->a; + out[2] = linearrgb_to_srgb(out[2]); + hsl_to_rgb_v(out, out); srgb_to_linearrgb_v3_v3(out, out); -- cgit v1.2.3