[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50978] trunk/blender/source/blender: Fix #32695: Can't disable color management for 3D view

Sergey Sharybin sergey.vfx at gmail.com
Mon Oct 1 13:14:02 CEST 2012


Revision: 50978
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50978
Author:   nazgul
Date:     2012-10-01 11:14:02 +0000 (Mon, 01 Oct 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_scene.h
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/editors/space_view3d/drawmesh.c
    trunk/blender/source/blender/gpu/intern/gpu_draw.c
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/render/intern/source/shadeinput.c

Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h	2012-10-01 11:14:02 UTC (rev 50978)
@@ -109,6 +109,7 @@
 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
 }

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2012-10-01 11:14:02 UTC (rev 50978)
@@ -1278,3 +1278,8 @@
 		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;
+}

Modified: trunk/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawmesh.c	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/editors/space_view3d/drawmesh.c	2012-10-01 11:14:02 UTC (rev 50978)
@@ -373,13 +373,7 @@
 	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);

Modified: trunk/blender/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_draw.c	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/gpu/intern/gpu_draw.c	2012-10-01 11:14:02 UTC (rev 50978)
@@ -1209,10 +1209,7 @@
 	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);
 	

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2012-10-01 11:14:02 UTC (rev 50978)
@@ -389,10 +389,8 @@
 
 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));
 }

Modified: trunk/blender/source/blender/render/intern/source/shadeinput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeinput.c	2012-10-01 11:12:49 UTC (rev 50977)
+++ trunk/blender/source/blender/render/intern/source/shadeinput.c	2012-10-01 11:14:02 UTC (rev 50978)
@@ -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 @@
 	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;




More information about the Bf-blender-cvs mailing list