Commit: 242715b843367aa4bf86a964acd22819fbccf23c Author: Clément Foucault Date: Tue Jan 31 17:27:19 2017 +0100 Branches: clay-engine https://developer.blender.org/rB242715b843367aa4bf86a964acd22819fbccf23c
Code cleanup =================================================================== M source/blender/draw/intern/draw_manager.c M source/blender/draw/intern/draw_mode_pass.c =================================================================== diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 3fff977bc9..bc927a4e96 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -336,8 +336,6 @@ DRWShadingGroup *DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass) shgroup->dyntype = 0; shgroup->dyngeom = NULL; - BLI_listbase_clear(&shgroup->interface->uniforms); - BLI_addtail(&pass->shgroups, shgroup); return shgroup; @@ -559,6 +557,8 @@ DRWPass *DRW_pass_create(const char *name, DRWState state) DRWPass *pass = MEM_callocN(sizeof(DRWPass), name); pass->state = state; + BLI_listbase_clear(&pass->shgroups); + return pass; } diff --git a/source/blender/draw/intern/draw_mode_pass.c b/source/blender/draw/intern/draw_mode_pass.c index 41b119e35c..71a9582e70 100644 --- a/source/blender/draw/intern/draw_mode_pass.c +++ b/source/blender/draw/intern/draw_mode_pass.c @@ -68,6 +68,22 @@ static DRWShadingGroup *shgroup_instance_uniform_color(DRWPass *pass, float colo * The passes are populated by the rendering engine using the DRW_shgroup_* functions. */ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPass **non_meshes, DRWPass **ob_center) { + static float colorWire[4], colorWireEdit[4]; + static float colorActive[4], colorSelect[4], colorTransform[4], colorGroup[4], colorGroupActive[4]; + static float colorEmpty[4], colorLamp[4], colorCamera[4], colorSpeaker[4]; + + UI_GetThemeColor4fv(TH_WIRE, colorWire); + UI_GetThemeColor4fv(TH_WIRE_EDIT, colorWireEdit); + UI_GetThemeColor4fv(TH_ACTIVE, colorActive); + UI_GetThemeColor4fv(TH_SELECT, colorSelect); + UI_GetThemeColor4fv(TH_TRANSFORM, colorTransform); + UI_GetThemeColor4fv(TH_GROUP_ACTIVE, colorGroupActive); + UI_GetThemeColor4fv(TH_GROUP, colorGroup); + UI_GetThemeColor4fv(OB_LAMP, colorLamp); + UI_GetThemeColor4fv(OB_SPEAKER, colorSpeaker); + UI_GetThemeColor4fv(OB_CAMERA, colorCamera); + UI_GetThemeColor4fv(OB_EMPTY, colorEmpty); + if (wire_overlay) { /* This pass can draw mesh edges top of Shaded Meshes without any Z fighting */ DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_EQUAL | DRW_STATE_BLEND; @@ -83,22 +99,6 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa } if (non_meshes) { - static float colorWire[4], colorWireEdit[4]; - static float colorActive[4], colorSelect[4], colorTransform[4], colorGroup[4], colorGroupActive[4]; - static float colorEmpty[4], colorLamp[4], colorCamera[4], colorSpeaker[4]; - - UI_GetThemeColor4fv(TH_WIRE, colorWire); - UI_GetThemeColor4fv(TH_WIRE_EDIT, colorWireEdit); - UI_GetThemeColor4fv(TH_ACTIVE, colorActive); - UI_GetThemeColor4fv(TH_SELECT, colorSelect); - UI_GetThemeColor4fv(TH_TRANSFORM, colorTransform); - UI_GetThemeColor4fv(TH_GROUP_ACTIVE, colorGroupActive); - UI_GetThemeColor4fv(TH_GROUP, colorGroup); - UI_GetThemeColor4fv(OB_LAMP, colorLamp); - UI_GetThemeColor4fv(OB_SPEAKER, colorSpeaker); - UI_GetThemeColor4fv(OB_CAMERA, colorCamera); - UI_GetThemeColor4fv(OB_EMPTY, colorEmpty); - /* Non Meshes Pass (Camera, empties, lamps ...) */ DRWShadingGroup *grp; @@ -145,7 +145,7 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa if (ob_center) { /* Object Center pass grouped by State */ DRWShadingGroup *grp; - static float colorActive[4], colorSelect[4], colorDeselect[4], outlineColor[4]; + static float colorDeselect[4], outlineColor[4]; static float outlineWidth, size; DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND | DRW_STATE_POINT; @@ -153,8 +153,8 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa outlineWidth = 1.0f * U.pixelsize; size = U.obcenter_dia * U.pixelsize + outlineWidth; - UI_GetThemeColorShadeAlpha4fv(TH_ACTIVE, 0, -80, colorActive); - UI_GetThemeColorShadeAlpha4fv(TH_SELECT, 0, -80, colorSelect); + //UI_GetThemeColorShadeAlpha4fv(TH_ACTIVE, 0, -80, colorActive); + //UI_GetThemeColorShadeAlpha4fv(TH_SELECT, 0, -80, colorSelect); UI_GetThemeColorShadeAlpha4fv(TH_TRANSFORM, 0, -80, colorDeselect); UI_GetThemeColorShadeAlpha4fv(TH_WIRE, 0, -30, outlineColor); @@ -185,6 +185,55 @@ void DRW_pass_setup_common(DRWPass **wire_overlay, DRWPass **wire_outline, DRWPa /* ******************************************** WIRES *********************************************** */ +/* TODO FINISH */ +static int draw_object_wire_theme(Object *ob) +{ + const bool is_edit = (ob->mode & OB_MODE_EDIT) != 0; + /* confusing logic here, there are 2 methods of setting the color + * 'colortab[colindex]' and 'theme_id', colindex overrides theme_id. + * + * note: no theme yet for 'colindex' */ + int theme_id = is_edit ? TH_WIRE_EDIT : TH_WIRE; + + if (//(scene->obedit == NULL) && + ((G.moving & G_TRANSFORM_OBJ) != 0) && + ((ob->base_flag & BASE_SELECTED) != 0)) + { + theme_id = TH_TRANSFORM; + } + else { + /* 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 (scene->basact != base) { + // theme_shade = -16; + // } + } + else { + theme_id = TH_GROUP; + } + } + else { + if ((ob->base_flag & BASE_SELECTED) != 0) { + theme_id = //scene->basact == base ? 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; + /* fallback to TH_WIRE */ + } + } + } + + return theme_id; +} + void DRW_shgroup_wire_overlay(DRWPass *wire_overlay, Object *ob) { struct Batch *geom = DRW_cache_wire_outline_get(ob); @@ -236,10 +285,8 @@ void DRW_shgroup_wire_outline(DRWPass *wire_outline, Object *ob, DRW_shgroup_uniform_vec4(grp, "frontColor", frontcol, 1); DRW_shgroup_uniform_vec4(grp, "backColor", backcol, 1); DRW_shgroup_uniform_bool(grp, "drawFront", bFront, 1); - DRW_shgroup_uniform_bool(grp, "drawFront", bBack, 1); - DRW_shgroup_uniform_bool(grp, "drawBack", &bFalse, 1); + DRW_shgroup_uniform_bool(grp, "drawBack", bBack, 1); DRW_shgroup_uniform_bool(grp, "drawSilhouette", &bFalse, 1); - DRW_shgroup_call_add(grp, geom, ob->obmat); } @@ -268,56 +315,7 @@ void DRW_shgroup_wire_outline(DRWPass *wire_outline, Object *ob, /* ***************************** NON MESHES ********************** */ -/* TODO FINISH */ -static int draw_object_wire_theme(Object *ob) -{ - const bool is_edit = (ob->mode & OB_MODE_EDIT) != 0; - /* confusing logic here, there are 2 methods of setting the color - * 'colortab[colindex]' and 'theme_id', colindex overrides theme_id. - * - * note: no theme yet for 'colindex' */ - int theme_id = is_edit ? TH_WIRE_EDIT : TH_WIRE; - - if (//(scene->obedit == NULL) && - ((G.moving & G_TRANSFORM_OBJ) != 0) && - ((ob->base_flag & BASE_SELECTED) != 0)) - { - theme_id = TH_TRANSFORM; - } - else { - /* 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 (scene->basact != base) { - // theme_shade = -16; - // } - } - else { - theme_id = TH_GROUP; - } - } - else { - if ((ob->base_flag & BASE_SELECTED) != 0) { - theme_id = //scene->basact == base ? 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; - /* fallback to TH_WIRE */ - } - } - } - - return theme_id; -} - -static void DRW_draw_lamp(DRWPass *non_meshes, Object *ob) +static void DRW_draw_lamp(Object *UNUSED(ob)) { /* TODO */ } @@ -354,6 +352,7 @@ void DRW_shgroup_non_meshes(DRWPass *UNUSED(non_meshes), Object *ob) switch (ob->type) { case OB_LAMP: + DRW_draw_lamp(ob); case OB_CAMERA: case OB_EMPTY: DRW_draw_empty(ob); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs