[Bf-blender-cvs] [016790b3b05] blender2.8: Object Engine: Fix Selected Group Objects color.

Clément Foucault noreply at git.blender.org
Mon Apr 10 22:23:56 CEST 2017


Commit: 016790b3b05d6c045d2e992caa7de72740a21b5a
Author: Clément Foucault
Date:   Mon Apr 10 22:23:33 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB016790b3b05d6c045d2e992caa7de72740a21b5a

Object Engine: Fix Selected Group Objects color.

===================================================================

M	source/blender/draw/intern/draw_common.c
M	source/blender/draw/intern/draw_common.h
M	source/blender/draw/modes/shaders/common_globals_lib.glsl

===================================================================

diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c
index e463956c9b2..8d9012afa50 100644
--- a/source/blender/draw/intern/draw_common.c
+++ b/source/blender/draw/intern/draw_common.c
@@ -45,6 +45,7 @@ void DRW_globals_update(void)
 	UI_GetThemeColor4fv(TH_SELECT, ts.colorSelect);
 	UI_GetThemeColor4fv(TH_TRANSFORM, ts.colorTransform);
 	UI_GetThemeColor4fv(TH_GROUP_ACTIVE, ts.colorGroupActive);
+	UI_GetThemeColorShade4fv(TH_GROUP_ACTIVE, -25, ts.colorGroupSelect);
 	UI_GetThemeColor4fv(TH_GROUP, ts.colorGroup);
 	UI_GetThemeColor4fv(TH_LAMP, ts.colorLamp);
 	UI_GetThemeColor4fv(TH_SPEAKER, ts.colorSpeaker);
@@ -282,7 +283,7 @@ DRWShadingGroup *shgroup_spot_instance(DRWPass *pass, struct Batch *geom)
 	return grp;
 }
 
-/* ******************************************** WIRES *********************************************** */
+/* ******************************************** COLOR UTILS *********************************************** */
 
 /* TODO FINISH */
 /* Get the wire color theme_id of an object based on it's state
@@ -290,6 +291,7 @@ DRWShadingGroup *shgroup_spot_instance(DRWPass *pass, struct Batch *geom)
 int DRW_object_wire_theme_get(Object *ob, SceneLayer *sl, float **color)
 {
 	const bool is_edit = (ob->mode & OB_MODE_EDIT) != 0;
+	const bool active = (sl->basact && sl->basact->object == ob);
 	/* confusing logic here, there are 2 methods of setting the color
 	 * 'colortab[colindex]' and 'theme_id', colindex overrides theme_id.
 	 *
@@ -306,12 +308,7 @@ int DRW_object_wire_theme_get(Object *ob, SceneLayer *sl, float **color)
 		/* Sets the 'theme_id' or fallback to wire */
 		if ((ob->flag & OB_FROMGROUP) != 0) {
 			if ((ob->base_flag & BASE_SELECTED) != 0) {
-				/* uses darker active color for non-active + selected */
 				theme_id = TH_GROUP_ACTIVE;
-
-				// if (sl->basact->object != ob) {
-				// 	theme_shade = -16;
-				// }
 			}
 			else {
 				theme_id = TH_GROUP;
@@ -319,7 +316,7 @@ int DRW_object_wire_theme_get(Object *ob, SceneLayer *sl, float **color)
 		}
 		else {
 			if ((ob->base_flag & BASE_SELECTED) != 0) {
-				theme_id = (sl->basact && sl->basact->object == ob) ? TH_ACTIVE : TH_SELECT;
+				theme_id = (active) ? TH_ACTIVE : TH_SELECT;
 			}
 			else {
 				if (ob->type == OB_LAMP) theme_id = TH_LAMP;
@@ -345,6 +342,11 @@ int DRW_object_wire_theme_get(Object *ob, SceneLayer *sl, float **color)
 			case OB_LAMP:         *color = ts.colorLamp; break;
 			default:              *color = ts.colorWire; break;
 		}
+
+		/* uses darker active color for non-active + selected */
+		if ((theme_id == TH_GROUP_ACTIVE) && !active) {
+			*color = ts.colorGroupSelect;
+		}
 	}
 
 	return theme_id;
diff --git a/source/blender/draw/intern/draw_common.h b/source/blender/draw/intern/draw_common.h
index be41103f907..ad8f312825a 100644
--- a/source/blender/draw/intern/draw_common.h
+++ b/source/blender/draw/intern/draw_common.h
@@ -43,6 +43,7 @@ typedef struct GlobalsUboStorage {
 	float colorSelect[4];
 	float colorTransform[4];
 	float colorGroupActive[4];
+	float colorGroupSelect[4];
 	float colorGroup[4];
 	float colorLamp[4];
 	float colorSpeaker[4];
diff --git a/source/blender/draw/modes/shaders/common_globals_lib.glsl b/source/blender/draw/modes/shaders/common_globals_lib.glsl
index 579a5f5089b..099093363a9 100644
--- a/source/blender/draw/modes/shaders/common_globals_lib.glsl
+++ b/source/blender/draw/modes/shaders/common_globals_lib.glsl
@@ -7,6 +7,7 @@ layout(std140) uniform globalsBlock {
 	vec4 colorSelect;
 	vec4 colorTransform;
 	vec4 colorGroupActive;
+	vec4 colorGroupSelect;
 	vec4 colorGroup;
 	vec4 colorLamp;
 	vec4 colorSpeaker;




More information about the Bf-blender-cvs mailing list