Different drawing for object centers.
authorAntony Riakiotakis <kalast@gmail.com>
Mon, 4 May 2015 11:53:07 +0000 (13:53 +0200)
committerAntony Riakiotakis <kalast@gmail.com>
Mon, 4 May 2015 11:53:23 +0000 (13:53 +0200)
Code here did depth test always and depth range 0.0.

There is no real reason for object centers to write and get tested
against depth buffer in this case, just disable the depth test instead
;)

Helps with blurry object centers in depth of field mode too (centers
wrote depth 0 and were always blurry)

source/blender/editors/space_view3d/drawobject.c

index 5b2ac50216a25e634a11f216373a3aadc38cbe83..de2b5a39313ab1cb327d4ba9540375e1d0733871 100644 (file)
@@ -735,11 +735,7 @@ static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, const float co[3],
        const float size = ED_view3d_pixel_size(rv3d, co) * (float)U.obcenter_dia * 0.5f;
        float verts[CIRCLE_RESOL][3];
 
-       /* using gldepthfunc guarantees that it does write z values,
-        * but not checks for it, so centers remain visible independent order of drawing */
-       if (v3d->zbuf) glDepthFunc(GL_ALWAYS);
-       /* write to near buffer always */
-       glDepthRange(0.0, 0.0);
+       if (v3d->zbuf) glDisable(GL_DEPTH_TEST);
        glEnable(GL_BLEND);
        
        if (special_color) {
@@ -769,10 +765,9 @@ static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, const float co[3],
        /* finish up */
        glDisableClientState(GL_VERTEX_ARRAY);
 
-       glDepthRange(0.0, 1.0);
        glDisable(GL_BLEND);
 
-       if (v3d->zbuf) glDepthFunc(GL_LEQUAL);
+       if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
 }
 
 /* *********** text drawing for object/particles/armature ************* */