Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-08-22 03:50:10 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-08-22 04:12:56 +0400
commit9f029d3f90f1cff8ea49a8eebd935e820c1498d2 (patch)
tree93657a7376cceea8f09171d24b79fdee89c1bd6a /source/blender/blenkernel/intern/texture.c
parent847654ba52a6ba31c3271a7d6afe06ea062d34ff (diff)
ColorRamp: Use linear V for HSV/HSL blending
This matches RGB blending black/white for eg.
Diffstat (limited to 'source/blender/blenkernel/intern/texture.c')
-rw-r--r--source/blender/blenkernel/intern/texture.c10
1 files changed, 10 insertions, 0 deletions
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);