Groups: remove drawing group objects in a different color.

With the upcoming unification of groups and collections this will make
no sense anymore, as all objects will be in a collection.
This commit is contained in:
Brecht Van Lommel
2018-05-04 11:36:50 +02:00
parent d979f1fc62
commit 309e9521f8
6 changed files with 15 additions and 129 deletions

View File

@@ -54,9 +54,6 @@ void DRW_globals_update(void)
UI_GetThemeColor4fv(TH_ACTIVE, ts.colorActive);
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_COLOR_RGBA_FROM_U8(0x88, 0xFF, 0xFF, 155, ts.colorLibrarySelect);
UI_COLOR_RGBA_FROM_U8(0x55, 0xCC, 0xCC, 155, ts.colorLibrary);
UI_GetThemeColor4fv(TH_LAMP, ts.colorLamp);
@@ -613,26 +610,16 @@ int DRW_object_wire_theme_get(Object *ob, ViewLayer *view_layer, float **r_color
}
else {
/* Sets the 'theme_id' or fallback to wire */
if ((ob->flag & OB_FROMGROUP) != 0) {
if ((ob->base_flag & BASE_SELECTED) != 0) {
theme_id = TH_GROUP_ACTIVE;
}
else {
theme_id = TH_GROUP;
}
if ((ob->base_flag & BASE_SELECTED) != 0) {
theme_id = (active) ? TH_ACTIVE : TH_SELECT;
}
else {
if ((ob->base_flag & BASE_SELECTED) != 0) {
theme_id = (active) ? TH_ACTIVE : TH_SELECT;
}
else {
if (ob->type == OB_LAMP) theme_id = TH_LAMP;
else if (ob->type == OB_SPEAKER) theme_id = TH_SPEAKER;
else if (ob->type == OB_CAMERA) theme_id = TH_CAMERA;
else if (ob->type == OB_EMPTY) theme_id = TH_EMPTY;
else if (ob->type == OB_LIGHTPROBE) theme_id = TH_EMPTY; /* TODO add lightprobe color */
/* fallback to TH_WIRE */
}
if (ob->type == OB_LAMP) theme_id = TH_LAMP;
else if (ob->type == OB_SPEAKER) theme_id = TH_SPEAKER;
else if (ob->type == OB_CAMERA) theme_id = TH_CAMERA;
else if (ob->type == OB_EMPTY) theme_id = TH_EMPTY;
else if (ob->type == OB_LIGHTPROBE) theme_id = TH_EMPTY; /* TODO add lightprobe color */
/* fallback to TH_WIRE */
}
}
@@ -641,8 +628,6 @@ int DRW_object_wire_theme_get(Object *ob, ViewLayer *view_layer, float **r_color
case TH_WIRE_EDIT: *r_color = ts.colorWireEdit; break;
case TH_ACTIVE: *r_color = ts.colorActive; break;
case TH_SELECT: *r_color = ts.colorSelect; break;
case TH_GROUP: *r_color = ts.colorGroup; break;
case TH_GROUP_ACTIVE: *r_color = ts.colorGroupActive; break;
case TH_TRANSFORM: *r_color = ts.colorTransform; break;
case OB_SPEAKER: *r_color = ts.colorSpeaker; break;
case OB_CAMERA: *r_color = ts.colorCamera; break;
@@ -650,11 +635,6 @@ int DRW_object_wire_theme_get(Object *ob, ViewLayer *view_layer, float **r_color
case OB_LAMP: *r_color = ts.colorLamp; break;
default: *r_color = ts.colorWire; break;
}
/* uses darker active color for non-active + selected */
if ((theme_id == TH_GROUP_ACTIVE) && !active) {
*r_color = ts.colorGroupSelect;
}
}
return theme_id;
@@ -670,8 +650,6 @@ float *DRW_color_background_blend_get(int theme_id)
case TH_WIRE_EDIT: ret = colors[0]; break;
case TH_ACTIVE: ret = colors[1]; break;
case TH_SELECT: ret = colors[2]; break;
case TH_GROUP: ret = colors[3]; break;
case TH_GROUP_ACTIVE: ret = colors[4]; break;
case TH_TRANSFORM: ret = colors[5]; break;
case OB_SPEAKER: ret = colors[6]; break;
case OB_CAMERA: ret = colors[7]; break;

View File

@@ -41,9 +41,6 @@ typedef struct GlobalsUboStorage {
float colorActive[4];
float colorSelect[4];
float colorTransform[4];
float colorGroupActive[4];
float colorGroupSelect[4];
float colorGroup[4];
float colorLibrarySelect[4];
float colorLibrary[4];
float colorLamp[4];

View File

@@ -166,7 +166,6 @@ typedef struct OBJECT_PrivateData {
/* Lamps */
DRWShadingGroup *lamp_center;
DRWShadingGroup *lamp_center_group;
DRWShadingGroup *lamp_groundpoint;
DRWShadingGroup *lamp_groundline;
DRWShadingGroup *lamp_circle;
@@ -204,50 +203,36 @@ typedef struct OBJECT_PrivateData {
/* Outlines */
DRWShadingGroup *outlines_active;
DRWShadingGroup *outlines_active_group;
DRWShadingGroup *outlines_select;
DRWShadingGroup *outlines_select_group;
DRWShadingGroup *outlines_transform;
/* Lightprobes */
DRWShadingGroup *lightprobes_cube_select;
DRWShadingGroup *lightprobes_cube_select_group;
DRWShadingGroup *lightprobes_cube_active;
DRWShadingGroup *lightprobes_cube_active_group;
DRWShadingGroup *lightprobes_cube_transform;
DRWShadingGroup *lightprobes_planar_select;
DRWShadingGroup *lightprobes_planar_select_group;
DRWShadingGroup *lightprobes_planar_active;
DRWShadingGroup *lightprobes_planar_active_group;
DRWShadingGroup *lightprobes_planar_transform;
/* Wire */
DRWShadingGroup *wire;
DRWShadingGroup *wire_active;
DRWShadingGroup *wire_active_group;
DRWShadingGroup *wire_select;
DRWShadingGroup *wire_select_group;
DRWShadingGroup *wire_transform;
/* Points */
DRWShadingGroup *points;
DRWShadingGroup *points_active;
DRWShadingGroup *points_active_group;
DRWShadingGroup *points_select;
DRWShadingGroup *points_select_group;
DRWShadingGroup *points_transform;
/* Outlines id offset */
int id_ofs_active;
int id_ofs_active_group;
int id_ofs_select;
int id_ofs_select_group;
int id_ofs_transform;
int id_ofs_prb_active;
int id_ofs_prb_active_group;
int id_ofs_prb_select;
int id_ofs_prb_select_group;
int id_ofs_prb_transform;
} OBJECT_PrivateData; /* Transient data */
@@ -632,10 +617,6 @@ static int *shgroup_theme_id_to_probe_outline_counter(
return &stl->g_data->id_ofs_prb_active;
case TH_SELECT:
return &stl->g_data->id_ofs_prb_select;
case TH_GROUP:
return &stl->g_data->id_ofs_prb_select_group;
case TH_GROUP_ACTIVE:
return &stl->g_data->id_ofs_prb_active_group;
case TH_TRANSFORM:
default:
return &stl->g_data->id_ofs_prb_transform;
@@ -650,10 +631,6 @@ static int *shgroup_theme_id_to_outline_counter(
return &stl->g_data->id_ofs_active;
case TH_SELECT:
return &stl->g_data->id_ofs_select;
case TH_GROUP:
return &stl->g_data->id_ofs_select_group;
case TH_GROUP_ACTIVE:
return &stl->g_data->id_ofs_active_group;
case TH_TRANSFORM:
default:
return &stl->g_data->id_ofs_transform;
@@ -669,10 +646,6 @@ static DRWShadingGroup *shgroup_theme_id_to_probe_planar_outline_shgrp(
return stl->g_data->lightprobes_planar_active;
case TH_SELECT:
return stl->g_data->lightprobes_planar_select;
case TH_GROUP:
return stl->g_data->lightprobes_planar_select_group;
case TH_GROUP_ACTIVE:
return stl->g_data->lightprobes_planar_active_group;
case TH_TRANSFORM:
default:
return stl->g_data->lightprobes_planar_transform;
@@ -688,10 +661,6 @@ static DRWShadingGroup *shgroup_theme_id_to_probe_cube_outline_shgrp(
return stl->g_data->lightprobes_cube_active;
case TH_SELECT:
return stl->g_data->lightprobes_cube_select;
case TH_GROUP:
return stl->g_data->lightprobes_cube_select_group;
case TH_GROUP_ACTIVE:
return stl->g_data->lightprobes_cube_active_group;
case TH_TRANSFORM:
default:
return stl->g_data->lightprobes_cube_transform;
@@ -709,10 +678,6 @@ static DRWShadingGroup *shgroup_theme_id_to_outline_or(
return stl->g_data->outlines_active;
case TH_SELECT:
return stl->g_data->outlines_select;
case TH_GROUP:
return stl->g_data->outlines_select_group;
case TH_GROUP_ACTIVE:
return stl->g_data->outlines_active_group;
case TH_TRANSFORM:
return stl->g_data->outlines_transform;
default:
@@ -728,10 +693,6 @@ static DRWShadingGroup *shgroup_theme_id_to_wire_or(
return stl->g_data->wire_active;
case TH_SELECT:
return stl->g_data->wire_select;
case TH_GROUP:
return stl->g_data->wire_select_group;
case TH_GROUP_ACTIVE:
return stl->g_data->wire_active_group;
case TH_TRANSFORM:
return stl->g_data->wire_transform;
default:
@@ -747,10 +708,6 @@ static DRWShadingGroup *shgroup_theme_id_to_point_or(
return stl->g_data->points_active;
case TH_SELECT:
return stl->g_data->points_select;
case TH_GROUP:
return stl->g_data->points_select_group;
case TH_GROUP_ACTIVE:
return stl->g_data->points_active_group;
case TH_TRANSFORM:
return stl->g_data->points_transform;
default:
@@ -905,19 +862,15 @@ static void OBJECT_cache_init(void *vedata)
/* Select */
g_data->outlines_select = shgroup_outline(psl->outlines, &g_data->id_ofs_select, sh);
g_data->outlines_select_group = shgroup_outline(psl->outlines, &g_data->id_ofs_select_group, sh);
/* Transform */
g_data->outlines_transform = shgroup_outline(psl->outlines, &g_data->id_ofs_transform, sh);
/* Active */
g_data->outlines_active = shgroup_outline(psl->outlines, &g_data->id_ofs_active, sh);
g_data->outlines_active_group = shgroup_outline(psl->outlines, &g_data->id_ofs_active_group, sh);
g_data->id_ofs_select = 0;
g_data->id_ofs_select_group = 0;
g_data->id_ofs_active = 0;
g_data->id_ofs_active_group = 0;
g_data->id_ofs_transform = 0;
}
@@ -929,22 +882,16 @@ static void OBJECT_cache_init(void *vedata)
/* Cubemap */
g_data->lightprobes_cube_select = shgroup_instance_outline(pass, sphere, &g_data->id_ofs_prb_select);
g_data->lightprobes_cube_select_group = shgroup_instance_outline(pass, sphere, &g_data->id_ofs_prb_select_group);
g_data->lightprobes_cube_active = shgroup_instance_outline(pass, sphere, &g_data->id_ofs_prb_active);
g_data->lightprobes_cube_active_group = shgroup_instance_outline(pass, sphere, &g_data->id_ofs_prb_active_group);
g_data->lightprobes_cube_transform = shgroup_instance_outline(pass, sphere, &g_data->id_ofs_prb_transform);
/* Planar */
g_data->lightprobes_planar_select = shgroup_instance_outline(pass, quad, &g_data->id_ofs_prb_select);
g_data->lightprobes_planar_select_group = shgroup_instance_outline(pass, quad, &g_data->id_ofs_prb_select_group);
g_data->lightprobes_planar_active = shgroup_instance_outline(pass, quad, &g_data->id_ofs_prb_active);
g_data->lightprobes_planar_active_group = shgroup_instance_outline(pass, quad, &g_data->id_ofs_prb_active_group);
g_data->lightprobes_planar_transform = shgroup_instance_outline(pass, quad, &g_data->id_ofs_prb_transform);
g_data->id_ofs_prb_select = 0;
g_data->id_ofs_prb_select_group = 0;
g_data->id_ofs_prb_active = 0;
g_data->id_ofs_prb_active_group = 0;
g_data->id_ofs_prb_transform = 0;
}
@@ -964,7 +911,7 @@ static void OBJECT_cache_init(void *vedata)
DRW_shgroup_uniform_texture_ref(grp, "sceneDepth", &dtxl->depth);
DRW_shgroup_uniform_block(grp, "globalsBlock", globals_ubo);
DRW_shgroup_uniform_float(grp, "alphaOcclu", &alphaOcclu, 1);
DRW_shgroup_uniform_int(grp, "idOffsets", &stl->g_data->id_ofs_active, 5);
DRW_shgroup_uniform_int(grp, "idOffsets", &stl->g_data->id_ofs_active, 3);
DRW_shgroup_call_add(grp, quad, NULL);
psl->outlines_expand = DRW_pass_create("Outlines Expand Pass", state);
@@ -1157,14 +1104,12 @@ static void OBJECT_cache_init(void *vedata)
/* Select */
stl->g_data->wire_select = shgroup_wire(psl->non_meshes, ts.colorSelect, sh);
stl->g_data->wire_select_group = shgroup_wire(psl->non_meshes, ts.colorGroupActive, sh);
/* Transform */
stl->g_data->wire_transform = shgroup_wire(psl->non_meshes, ts.colorTransform, sh);
/* Active */
stl->g_data->wire_active = shgroup_wire(psl->non_meshes, ts.colorActive, sh);
stl->g_data->wire_active_group = shgroup_wire(psl->non_meshes, ts.colorGroupActive, sh);
}
@@ -1176,14 +1121,12 @@ static void OBJECT_cache_init(void *vedata)
/* Select */
stl->g_data->points_select = shgroup_points(psl->non_meshes, ts.colorSelect, sh);
stl->g_data->points_select_group = shgroup_points(psl->non_meshes, ts.colorGroupActive, sh);
/* Transform */
stl->g_data->points_transform = shgroup_points(psl->non_meshes, ts.colorTransform, sh);
/* Active */
stl->g_data->points_active = shgroup_points(psl->non_meshes, ts.colorActive, sh);
stl->g_data->points_active_group = shgroup_points(psl->non_meshes, ts.colorGroupActive, sh);
}
{
@@ -1203,7 +1146,6 @@ static void OBJECT_cache_init(void *vedata)
stl->g_data->lamp_buflimit = shgroup_distance_lines_instance(psl->non_meshes, geom);
stl->g_data->lamp_center = shgroup_dynpoints_uniform_color(psl->non_meshes, ts.colorLampNoAlpha, &ts.sizeLampCenter);
stl->g_data->lamp_center_group = shgroup_dynpoints_uniform_color(psl->non_meshes, ts.colorGroup, &ts.sizeLampCenter);
geom = DRW_cache_lamp_get();
stl->g_data->lamp_circle = shgroup_instance_screenspace(psl->non_meshes, geom, &ts.sizeLampCircle);
@@ -1380,9 +1322,7 @@ static void DRW_shgroup_lamp(OBJECT_StorageList *stl, Object *ob, ViewLayer *vie
float (*spotblendmat)[4] = lamp_engine_data->spot_blend_mat;
/* Don't draw the center if it's selected or active */
if (theme_id == TH_GROUP)
DRW_shgroup_call_dynamic_add(stl->g_data->lamp_center_group, ob->obmat[3]);
else if (theme_id == TH_LAMP)
if (theme_id == TH_LAMP)
DRW_shgroup_call_dynamic_add(stl->g_data->lamp_center, ob->obmat[3]);
/* First circle */
@@ -2211,19 +2151,15 @@ static void OBJECT_draw_scene(void *vedata)
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
int id_ct_select = g_data->id_ofs_select;
int id_ct_select_group = g_data->id_ofs_select_group;
int id_ct_active = g_data->id_ofs_active;
int id_ct_active_group = g_data->id_ofs_active_group;
int id_ct_transform = g_data->id_ofs_transform;
int id_ct_prb_select = g_data->id_ofs_prb_select;
int id_ct_prb_select_group = g_data->id_ofs_prb_select_group;
int id_ct_prb_active = g_data->id_ofs_prb_active;
int id_ct_prb_active_group = g_data->id_ofs_prb_active_group;
int id_ct_prb_transform = g_data->id_ofs_prb_transform;
int outline_calls = id_ct_select + id_ct_select_group + id_ct_active + id_ct_active_group + id_ct_transform;
outline_calls += id_ct_prb_select + id_ct_prb_select_group + id_ct_prb_active + id_ct_prb_active_group + id_ct_prb_transform;
int outline_calls = id_ct_select + id_ct_active + id_ct_transform;
outline_calls += id_ct_prb_select + id_ct_prb_active + id_ct_prb_transform;
float clearcol[4] = {0.0f, 0.0f, 0.0f, 0.0f};
@@ -2245,15 +2181,11 @@ static void OBJECT_draw_scene(void *vedata)
DRW_stats_group_start("Outlines");
g_data->id_ofs_active = 1;
g_data->id_ofs_active_group = g_data->id_ofs_active + id_ct_active + id_ct_prb_active + 1;
g_data->id_ofs_select = g_data->id_ofs_active_group + id_ct_active_group + id_ct_prb_active_group + 1;
g_data->id_ofs_select_group = g_data->id_ofs_select + id_ct_select + id_ct_prb_select + 1;
g_data->id_ofs_transform = g_data->id_ofs_select_group + id_ct_select_group + id_ct_prb_select_group + 1;
g_data->id_ofs_select = g_data->id_ofs_active + id_ct_active + id_ct_prb_active + 1;
g_data->id_ofs_transform = g_data->id_ofs_select + id_ct_select + id_ct_prb_select + 1;
g_data->id_ofs_prb_active = g_data->id_ofs_active + id_ct_active;
g_data->id_ofs_prb_active_group = g_data->id_ofs_active_group + id_ct_active_group;
g_data->id_ofs_prb_select = g_data->id_ofs_select + id_ct_select;
g_data->id_ofs_prb_select_group = g_data->id_ofs_select_group + id_ct_select_group;
g_data->id_ofs_prb_transform = g_data->id_ofs_transform + id_ct_transform;
/* Render filled polygon on a separate framebuffer */

View File

@@ -6,9 +6,6 @@ layout(std140) uniform globalsBlock {
vec4 colorActive;
vec4 colorSelect;
vec4 colorTransform;
vec4 colorGroupActive;
vec4 colorGroupSelect;
vec4 colorGroup;
vec4 colorLibrarySelect;
vec4 colorLibrary;
vec4 colorLamp;

View File

@@ -7,7 +7,7 @@ uniform usampler2D outlineId;
uniform sampler2D outlineDepth;
uniform sampler2D sceneDepth;
uniform int idOffsets[5];
uniform int idOffsets[3];
uniform float alphaOcclu;
uniform vec2 viewportSize;
@@ -21,14 +21,8 @@ vec4 convert_id_to_color(int id)
return colorActive;
}
else if (id < idOffsets[2]) {
return colorGroupActive;
}
else if (id < idOffsets[3]) {
return colorSelect;
}
else if (id < idOffsets[4]) {
return colorGroup;
}
else {
return colorTransform;
}

View File

@@ -1654,18 +1654,6 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active Object", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "object_grouped", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "group");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Object Grouped", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "object_grouped_active", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "group_active");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Object Grouped Active", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "text_keyframe", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "time_keyframe");
RNA_def_property_array(prop, 3);