diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-07-21 04:12:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-07-21 04:12:39 +0300 |
commit | 1d02d34de913e61698cf3d61d0538645140fcf87 (patch) | |
tree | 55f5c9fc22f23d042fbb926eeda922c411ddc018 /source/blender/editors | |
parent | ef950d69371e062d29b8f46f351171e89b5f4835 (diff) |
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.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 8 |
2 files changed, 13 insertions, 3 deletions
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) { |