From 1d02d34de913e61698cf3d61d0538645140fcf87 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 21 Jul 2015 11:12:39 +1000 Subject: Fix T45434: GPencil on editmode surface fails Z-offset use for drawing & picking was problematic for extracting locations from depth values. Use flag to optionally disable. --- source/blender/editors/space_view3d/view3d_draw.c | 8 ++++++-- source/blender/editors/space_view3d/view3d_view.c | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/space_view3d') diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index d13dd31576d..3e5374f7d31 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2397,7 +2397,9 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover if (rv3d->rflag & RV3D_CLIPPING) { ED_view3d_clipping_set(rv3d); } - + /* get surface depth without bias */ + rv3d->rflag |= RV3D_ZOFFSET_DISABLED; + v3d->zbuf = true; glEnable(GL_DEPTH_TEST); @@ -2482,8 +2484,10 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover glDepthMask(mask_orig); } - if (rv3d->rflag & RV3D_CLIPPING) + if (rv3d->rflag & RV3D_CLIPPING) { ED_view3d_clipping_disable(); + } + rv3d->rflag &= ~RV3D_ZOFFSET_DISABLED; v3d->zbuf = zbuf; if (!v3d->zbuf) glDisable(GL_DEPTH_TEST); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 9e16dc030b5..e111a473fdf 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -785,7 +785,13 @@ bool ED_view3d_viewplane_get( */ void ED_view3d_polygon_offset(const RegionView3D *rv3d, const float dist) { - float viewdist = rv3d->dist; + float viewdist; + + if (rv3d->rflag & RV3D_ZOFFSET_DISABLED) { + return; + } + + viewdist = rv3d->dist; /* special exception for ortho camera (viewdist isnt used for perspective cameras) */ if (dist != 0.0f) { -- cgit v1.2.3