diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-12-14 21:16:35 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-12-17 19:05:57 +0300 |
commit | 29877fb1a443e1daebf1466fa3a048ef5cefd807 (patch) | |
tree | 5ac180d6963df592bfeebd638b0a7386c2bc5a97 /source/blender/draw/engines/workbench/workbench_materials.c | |
parent | 0d511e05d38e47a610c304a7625f5f0da9c9a9d2 (diff) |
Workbench: Fix srgb texture not being color managed in texture color mode
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_materials.c')
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_materials.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c index c4ab39897f3..5360cf3683b 100644 --- a/source/blender/draw/engines/workbench/workbench_materials.c +++ b/source/blender/draw/engines/workbench/workbench_materials.c @@ -4,6 +4,8 @@ #include "BIF_gl.h" +#include "BKE_image.h" + #include "BLI_dynstr.h" #include "BLI_hash.h" @@ -189,8 +191,12 @@ void workbench_material_shgroup_uniform( } if (workbench_material_determine_color_type(wpd, material->ima, ob) == V3D_SHADING_TEXTURE_COLOR) { + ImBuf *ibuf = BKE_image_acquire_ibuf(material->ima, NULL, NULL); + const bool do_color_correction = (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) == 0); + BKE_image_release_ibuf(material->ima, ibuf, NULL); GPUTexture *tex = GPU_texture_from_blender(material->ima, NULL, GL_TEXTURE_2D, false, 0.0f); DRW_shgroup_uniform_texture(grp, "image", tex); + DRW_shgroup_uniform_bool_copy(grp, "imageSrgb", do_color_correction); } else { DRW_shgroup_uniform_vec3(grp, "materialDiffuseColor", (use_metallic) ? material->base_color : material->diffuse_color, 1); |