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;
|
RegionView3D *rv3d = ar->regiondata;
|
||||||
Mesh *me = ob->data;
|
Mesh *me = ob->data;
|
||||||
BMFace *efa_act = BM_mesh_active_face_get(em->bm, false, true); /* annoying but active faces is stored differently */
|
const bool use_occlude_wire = (dt > OB_WIRE) && (v3d->flag2 & V3D_OCCLUDE_WIRE);
|
||||||
BMEdge *eed_act = NULL;
|
bool use_depth_offset = false;
|
||||||
BMVert *eve_act = NULL;
|
|
||||||
bool use_occlude_wire = (v3d->flag2 & V3D_OCCLUDE_WIRE) && (dt > OB_WIRE);
|
|
||||||
|
|
||||||
glLineWidth(1);
|
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);
|
BM_mesh_elem_table_ensure(em->bm, BM_VERT | BM_EDGE | BM_FACE);
|
||||||
|
|
||||||
if (check_object_draw_editweight(me, finalDM)) {
|
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);
|
ED_view3d_polygon_offset(rv3d, 1.0);
|
||||||
glDepthMask(0);
|
glDepthMask(0);
|
||||||
|
use_depth_offset = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glEnable(GL_DEPTH_TEST);
|
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);
|
ED_view3d_polygon_offset(rv3d, 1.0);
|
||||||
glDepthMask(0);
|
glDepthMask(0);
|
||||||
|
use_depth_offset = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (cageDM != finalDM) {
|
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 */
|
if ((me->drawflag & ME_DRAWFACES) && (use_occlude_wire == false)) { /* transp faces */
|
||||||
unsigned char col1[4], col2[4], col3[4];
|
unsigned char col1[4], col2[4], col3[4];
|
||||||
#ifdef WITH_FREESTYLE
|
#ifdef WITH_FREESTYLE
|
||||||
@ -3901,8 +3910,9 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
|
|||||||
draw_em_indices(em);
|
draw_em_indices(em);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (dt > OB_WIRE) {
|
if (use_depth_offset) {
|
||||||
glDepthMask(1);
|
glDepthMask(1);
|
||||||
ED_view3d_polygon_offset(rv3d, 0.0);
|
ED_view3d_polygon_offset(rv3d, 0.0);
|
||||||
GPU_object_material_unbind();
|
GPU_object_material_unbind();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user