Fix T47891: Edges throw shadow in edit mode
This commit is contained in:
parent
4ee5ba41bb
commit
81a477f4dc
@ -3678,30 +3678,11 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
||||
{
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
Mesh *me = ob->data;
|
||||
BMFace *efa_act = BM_mesh_active_face_get(em->bm, false, true); /* annoying but active faces is stored differently */
|
||||
BMEdge *eed_act = NULL;
|
||||
BMVert *eve_act = NULL;
|
||||
bool use_occlude_wire = (v3d->flag2 & V3D_OCCLUDE_WIRE) && (dt > OB_WIRE);
|
||||
const bool use_occlude_wire = (dt > OB_WIRE) && (v3d->flag2 & V3D_OCCLUDE_WIRE);
|
||||
bool use_depth_offset = false;
|
||||
|
||||
glLineWidth(1);
|
||||
|
||||
if (em->bm->selected.last) {
|
||||
BMEditSelection *ese = em->bm->selected.last;
|
||||
/* face is handled above */
|
||||
#if 0
|
||||
if (ese->type == BM_FACE) {
|
||||
efa_act = (BMFace *)ese->data;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (ese->htype == BM_EDGE) {
|
||||
eed_act = (BMEdge *)ese->ele;
|
||||
}
|
||||
else if (ese->htype == BM_VERT) {
|
||||
eve_act = (BMVert *)ese->ele;
|
||||
}
|
||||
}
|
||||
|
||||
BM_mesh_elem_table_ensure(em->bm, BM_VERT | BM_EDGE | BM_FACE);
|
||||
|
||||
if (check_object_draw_editweight(me, finalDM)) {
|
||||
@ -3710,6 +3691,7 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
||||
|
||||
ED_view3d_polygon_offset(rv3d, 1.0);
|
||||
glDepthMask(0);
|
||||
use_depth_offset = true;
|
||||
}
|
||||
else {
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -3756,6 +3738,7 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
||||
|
||||
ED_view3d_polygon_offset(rv3d, 1.0);
|
||||
glDepthMask(0);
|
||||
use_depth_offset = true;
|
||||
}
|
||||
else {
|
||||
if (cageDM != finalDM) {
|
||||
@ -3764,6 +3747,32 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
||||
}
|
||||
}
|
||||
|
||||
if ((dt > OB_WIRE) && (v3d->flag2 & V3D_RENDER_SHADOW)) {
|
||||
/* pass */
|
||||
}
|
||||
else {
|
||||
/* annoying but active faces is stored differently */
|
||||
BMFace *efa_act = BM_mesh_active_face_get(em->bm, false, true);
|
||||
BMEdge *eed_act = NULL;
|
||||
BMVert *eve_act = NULL;
|
||||
|
||||
if (em->bm->selected.last) {
|
||||
BMEditSelection *ese = em->bm->selected.last;
|
||||
/* face is handled above */
|
||||
#if 0
|
||||
if (ese->type == BM_FACE) {
|
||||
efa_act = (BMFace *)ese->data;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (ese->htype == BM_EDGE) {
|
||||
eed_act = (BMEdge *)ese->ele;
|
||||
}
|
||||
else if (ese->htype == BM_VERT) {
|
||||
eve_act = (BMVert *)ese->ele;
|
||||
}
|
||||
}
|
||||
|
||||
if ((me->drawflag & ME_DRAWFACES) && (use_occlude_wire == false)) { /* transp faces */
|
||||
unsigned char col1[4], col2[4], col3[4];
|
||||
#ifdef WITH_FREESTYLE
|
||||
@ -3901,8 +3910,9 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
||||
draw_em_indices(em);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dt > OB_WIRE) {
|
||||
if (use_depth_offset) {
|
||||
glDepthMask(1);
|
||||
ED_view3d_polygon_offset(rv3d, 0.0);
|
||||
GPU_object_material_unbind();
|
||||
|
Loading…
x
Reference in New Issue
Block a user