[Bf-blender-cvs] [2c1b053] master: Fix T43697, grid drawing over wires and grease pencil. Props to Julian for figuring out a simple solution to that :)

Antony Riakiotakis noreply at git.blender.org
Tue Feb 17 11:37:30 CET 2015


Commit: 2c1b0536c9e89eb401c422bed78edd3c35fb8b01
Author: Antony Riakiotakis
Date:   Tue Feb 17 11:37:20 2015 +0100
Branches: master
https://developer.blender.org/rB2c1b0536c9e89eb401c422bed78edd3c35fb8b01

Fix T43697, grid drawing over wires and grease pencil. Props to Julian
for figuring out a simple solution to that :)

===================================================================

M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index ba031c8..f552d5c 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2656,8 +2656,6 @@ void ED_view3d_update_viewmat(Scene *scene, View3D *v3d, ARegion *ar, float view
 	}
 }
 
-
-
 /**
  * Shared by #ED_view3d_draw_offscreen and #view3d_main_area_draw_objects
  *
@@ -2673,8 +2671,10 @@ static void view3d_draw_objects(
 	RegionView3D *rv3d = ar->regiondata;
 	Base *base;
 	const bool do_camera_frame = !draw_offscreen;
-	const bool draw_floor = (rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO);
 	const bool draw_grids = !draw_offscreen && (v3d->flag2 & V3D_RENDER_OVERRIDE) == 0;
+	const bool draw_floor = (rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO);
+	/* only draw grids after in solid modes, else it hovers over mesh wires */
+	const bool draw_grids_after = draw_grids && draw_floor && (v3d->drawtype > OB_WIRE);
 	bool xrayclear = true;
 
 	if (!draw_offscreen) {
@@ -2722,6 +2722,9 @@ static void view3d_draw_objects(
 			glMatrixMode(GL_MODELVIEW);
 			glLoadMatrixf(rv3d->viewmat);
 		}
+		else {
+			drawfloor(scene, v3d, grid_unit);
+		}
 	}
 
 	/* important to do before clipping */
@@ -2796,6 +2799,11 @@ static void view3d_draw_objects(
 		}
 	}
 
+	/* perspective floor goes last to use scene depth and avoid writing to depth buffer */
+	if (draw_grids_after) {
+		drawfloor(scene, v3d, grid_unit);
+	}
+
 	/* must be before xray draw which clears the depth buffer */
 	if (v3d->flag2 & V3D_SHOW_GPENCIL) {
 		/* must be before xray draw which clears the depth buffer */
@@ -2804,11 +2812,6 @@ static void view3d_draw_objects(
 		if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
 	}
 
-	/* perspective floor goes last to use scene depth and avoid writing to depth buffer */
-	if (draw_grids && draw_floor) {
-		drawfloor(scene, v3d, grid_unit);
-	}
-
 	/* transp and X-ray afterdraw stuff */
 	if (v3d->afterdraw_transp.first)     view3d_draw_transp(scene, ar, v3d);
 	if (v3d->afterdraw_xray.first)       view3d_draw_xray(scene, ar, v3d, &xrayclear);




More information about the Bf-blender-cvs mailing list