diff options
-rw-r--r-- | source/blender/blenkernel/BKE_scene.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 5 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawmesh.c | 8 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_draw.c | 5 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 6 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeinput.c | 8 |
6 files changed, 12 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 023b7e85c40..c12e913be45 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -109,6 +109,7 @@ float get_render_aosss_error(struct RenderData *r, float error); int BKE_scene_use_new_shading_nodes(struct Scene *scene); void BKE_scene_disable_color_management(struct Scene *scene); +int BKE_scene_check_color_management_enabled(const struct Scene *scene); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 4a172ab4476..41d300a95de 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -1278,3 +1278,8 @@ void BKE_scene_disable_color_management(Scene *scene) BLI_strncpy(view_settings->view_transform, view, sizeof(view_settings->view_transform)); } } + +int BKE_scene_check_color_management_enabled(const Scene *scene) +{ + return strcmp(scene->display_settings.display_device, "None") != 0; +} diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index f05c78e8512..e4c21a9c2c8 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -373,13 +373,7 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, O Gtexdraw.ob = ob; Gtexdraw.is_tex = is_tex; - /* OCIO_TODO: for now assume OpenGL is always doing color management and working in sRGB space - * supporting for real display conversion could be nice here, but it's a bit challenging - * since all the shaders should be aware of such a transform - * perhaps this flag could be completely removed before release in separated commit and - * be re-implemented if real display transform would be needed - */ - Gtexdraw.color_profile = TRUE; + Gtexdraw.color_profile = BKE_scene_check_color_management_enabled(scene); memcpy(Gtexdraw.obcol, obcol, sizeof(obcol)); set_draw_settings_cached(1, NULL, NULL, Gtexdraw); diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 962bb0aed22..956c76aec20 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -1209,10 +1209,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O GPUBlendMode alphablend; int a; - /* OCIO_TODO: assume color management is always enabled. could be nice to support real display transform here, - * but that's not so important and could be done later - */ - int gamma = TRUE; + int gamma = BKE_scene_check_color_management_enabled(scene); int new_shading_nodes = BKE_scene_use_new_shading_nodes(scene); diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index dd92b561235..4732586b912 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -389,10 +389,8 @@ void gpu_material_add_node(GPUMaterial *material, GPUNode *node) int GPU_material_do_color_management(GPUMaterial *mat) { - /* OCIO_TODO: for now assume scene always does color management. probably could be - * improved in the future to support real display transform - * also probably we'll need to get rid ofgame engine's color management flag - */ + if (!BKE_scene_check_color_management_enabled(mat->scene)) + return FALSE; return !((mat->scene->gm.flag & GAME_GLSL_NO_COLOR_MANAGEMENT)); } diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 35ab06cc564..ff543b8ce06 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -44,6 +44,7 @@ #include "DNA_material_types.h" #include "BKE_colortools.h" +#include "BKE_scene.h" #include "BKE_node.h" @@ -1321,12 +1322,7 @@ void shade_input_initialize(ShadeInput *shi, RenderPart *pa, RenderLayer *rl, in shi->thread = pa->thread; shi->do_preview = (R.r.scemode & R_MATNODE_PREVIEW) != 0; - /* OCIO_TODO: for now assume color management is always enabled and vertes colors are in sRGB space - * probably would be nice to have this things configurable, but for now it should work - * also probably this flag could be removed (in separated commit) before the release - * since it's not actually meaningful anymore - */ - shi->do_manage = TRUE; + shi->do_manage = BKE_scene_check_color_management_enabled(R.scene); shi->lay = rl->lay; shi->layflag = rl->layflag; |