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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-10-01 15:14:02 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-10-01 15:14:02 +0400
commit1d7bf727ff50a9dc21de3c002311eb670fc680b4 (patch)
tree049fcb0c54369a739badc8d994390377c915a815
parentc9c76a9a68ff9f0c32c6a1f77d386349ca5abaca (diff)
Fix #32695: Can't disable color management for 3D view
Made it so viewport will disable color management if display device set to None. This solves couple of regressions, mainly related on old BGE files and made None display behave exactly as old color management disabled.
-rw-r--r--source/blender/blenkernel/BKE_scene.h1
-rw-r--r--source/blender/blenkernel/intern/scene.c5
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c8
-rw-r--r--source/blender/gpu/intern/gpu_draw.c5
-rw-r--r--source/blender/gpu/intern/gpu_material.c6
-rw-r--r--source/blender/render/intern/source/shadeinput.c8
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;