diff options
Diffstat (limited to 'source/blender/blenkernel/intern/brush.c')
-rw-r--r-- | source/blender/blenkernel/intern/brush.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 33c6f3eb7c0..de81ef179d7 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -45,6 +45,7 @@ #include "BKE_texture.h" #include "BKE_icons.h" +#include "IMB_colormanagement.h" #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" @@ -639,6 +640,16 @@ float BKE_brush_sample_tex_3D(const Scene *scene, Brush *br, rgba[2] = intensity; rgba[3] = 1.0f; } + else { + if (br->mtex.tex->type == TEX_IMAGE && br->mtex.tex->ima) { + ImBuf *tex_ibuf = BKE_image_pool_acquire_ibuf(br->mtex.tex->ima, &br->mtex.tex->iuser, pool); + /* For consistency, sampling always returns color in linear space */ + if (tex_ibuf->rect_float == NULL) { + IMB_colormanagement_colorspace_to_scene_linear_v3(rgba, tex_ibuf->rect_colorspace); + } + BKE_image_pool_release_ibuf(br->mtex.tex->ima, tex_ibuf, pool); + } + } return intensity; } |