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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-05 15:30:31 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-08 12:05:45 +0300
commit08aad00a5d58ebb388f37172b9d98a8b9b515960 (patch)
treeeb6e600a9f0b6e820a9d6e8def1cde51aaaac2b3 /source/blender/blenkernel/intern/image.c
parentf49692f4295b7e4f7f53a18204a907366c3612d6 (diff)
Fix wrong colors when creating a float normal map image in texture paint
Diffstat (limited to 'source/blender/blenkernel/intern/image.c')
-rw-r--r--source/blender/blenkernel/intern/image.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index f03ca46b34e..8e04ef2d3ca 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -617,6 +617,7 @@ static ImBuf *add_ibuf_size(unsigned int width,
ImBuf *ibuf;
unsigned char *rect = NULL;
float *rect_float = NULL;
+ float fill_color[4];
if (floatbuf) {
ibuf = IMB_allocImBuf(width, height, depth, IB_rectfloat);
@@ -632,6 +633,15 @@ static ImBuf *add_ibuf_size(unsigned int width,
rect_float = ibuf->rect_float;
IMB_colormanagement_check_is_data(ibuf, colorspace_settings->name);
}
+
+ if (IMB_colormanagement_space_name_is_data(colorspace_settings->name)) {
+ copy_v4_v4(fill_color, color);
+ }
+ else {
+ /* The input color here should ideally be linear already, but for now
+ * we just convert and postpone breaking the API for later. */
+ srgb_to_linearrgb_v4(fill_color, color);
+ }
}
else {
ibuf = IMB_allocImBuf(width, height, depth, IB_rect);
@@ -647,6 +657,8 @@ static ImBuf *add_ibuf_size(unsigned int width,
rect = (unsigned char *)ibuf->rect;
IMB_colormanagement_assign_rect_colorspace(ibuf, colorspace_settings->name);
}
+
+ copy_v4_v4(fill_color, color);
}
if (!ibuf) {
@@ -663,7 +675,7 @@ static ImBuf *add_ibuf_size(unsigned int width,
BKE_image_buf_fill_checker_color(rect, rect_float, width, height);
break;
default:
- BKE_image_buf_fill_color(rect, rect_float, width, height, color);
+ BKE_image_buf_fill_color(rect, rect_float, width, height, fill_color);
break;
}