[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