[Bf-blender-cvs] [625d72ed48d] blender2.8: Manipulator: draw 2d manipulators over view border

Campbell Barton noreply at git.blender.org
Sat Dec 16 09:03:38 CET 2017


Commit: 625d72ed48dfe16efcf3ac62ba66cc367539dc15
Author: Campbell Barton
Date:   Sat Dec 16 18:55:42 2017 +1100
Branches: blender2.8
https://developer.blender.org/rB625d72ed48dfe16efcf3ac62ba66cc367539dc15

Manipulator: draw 2d manipulators over view border

Needed so passepartout doesn't cover 2d manipulators.

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

M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/intern/draw_view.c
M	source/blender/draw/intern/draw_view.h
M	source/blender/editors/space_view3d/view3d_draw_legacy.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index cb5d4a4414e..e17aef34d47 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3456,10 +3456,14 @@ void DRW_draw_render_loop_ex(
 	if (DST.draw_ctx.evil_C) {
 		/* needed so manipulator isn't obscured */
 		glDisable(GL_DEPTH_TEST);
-		DRW_draw_manipulator();
-		glEnable(GL_DEPTH_TEST);
+		DRW_draw_manipulator_3d();
 
 		DRW_draw_region_info();
+
+		/* Draw 2D after region info so we can draw on top of the camera passepartout overlay.
+		 * 'DRW_draw_region_info' sets the projection in pixel-space. */
+		DRW_draw_manipulator_2d();
+		glEnable(GL_DEPTH_TEST);
 	}
 
 	DRW_stats_reset();
diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c
index 474d6ac8769..391c29e511f 100644
--- a/source/blender/draw/intern/draw_view.c
+++ b/source/blender/draw/intern/draw_view.c
@@ -715,16 +715,13 @@ void DRW_draw_cursor(void)
 
 /* **************************** 3D Manipulator ******************************** */
 
-void DRW_draw_manipulator(void)
+void DRW_draw_manipulator_3d(void)
 {
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 	View3D *v3d = draw_ctx->v3d;
 	v3d->zbuf = false;
 	ARegion *ar = draw_ctx->ar;
 
-
-	/* TODO, only draws 3D manipulators right now, need to see how 2D drawing will work in new viewport */
-
 	/* draw depth culled manipulators - manipulators need to be updated *after* view matrix was set up */
 	/* TODO depth culling manipulators is not yet supported, just drawing _3D here, should
 	 * later become _IN_SCENE (and draw _3D separate) */
@@ -732,25 +729,18 @@ void DRW_draw_manipulator(void)
 	        ar->manipulator_map, draw_ctx->evil_C,
 	        WM_MANIPULATORMAP_DRAWSTEP_3D);
 
-	/* We may want to split this into a separate pass.
-	 * or maintain a stage in the draw manager where all pixel-space drawing happens. */
-	{
-		float original_proj[4][4];
-		gpuGetProjectionMatrix(original_proj);
-		wmOrtho2_region_pixelspace(ar);
-
-		gpuPushMatrix();
-		gpuLoadIdentity();
-
-		glDepthMask(GL_FALSE);
+}
 
-		WM_manipulatormap_draw(
-		        ar->manipulator_map, draw_ctx->evil_C,
-		        WM_MANIPULATORMAP_DRAWSTEP_2D);
+void DRW_draw_manipulator_2d(void)
+{
+	const DRWContextState *draw_ctx = DRW_context_state_get();
+	View3D *v3d = draw_ctx->v3d;
+	v3d->zbuf = false;
+	ARegion *ar = draw_ctx->ar;
 
-		glDepthMask(GL_TRUE);
+	WM_manipulatormap_draw(
+	        ar->manipulator_map, draw_ctx->evil_C,
+	        WM_MANIPULATORMAP_DRAWSTEP_2D);
 
-		gpuPopMatrix();
-		gpuLoadProjectionMatrix(original_proj);
-	}
+	glDepthMask(GL_TRUE);
 }
diff --git a/source/blender/draw/intern/draw_view.h b/source/blender/draw/intern/draw_view.h
index b400ceeffa2..203420483a7 100644
--- a/source/blender/draw/intern/draw_view.h
+++ b/source/blender/draw/intern/draw_view.h
@@ -30,6 +30,7 @@ void DRW_draw_grid(void);
 void DRW_draw_region_info(void);
 void DRW_draw_background(void);
 void DRW_draw_cursor(void);
-void DRW_draw_manipulator(void);
+void DRW_draw_manipulator_3d(void);
+void DRW_draw_manipulator_2d(void);
 
-#endif /* __DRAW_VIEW_H__ */
\ No newline at end of file
+#endif /* __DRAW_VIEW_H__ */
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index 84f0f96fe0b..fa09ca169fe 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -2007,11 +2007,6 @@ static void view3d_main_region_draw_objects(const bContext *C, Scene *scene, Vie
 	/* main drawing call */
 	view3d_draw_objects(C, &eval_ctx, scene, v3d, ar, grid_unit, true, false, do_compositing ? rv3d->compositor : NULL);
 
-	/* draw depth culled manipulators - manipulators need to be updated *after* view matrix was set up */
-	/* TODO depth culling manipulators is not yet supported, just drawing _3D here, should
-	 * later become _IN_SCENE (and draw _3D separate) */
-	WM_manipulatormap_draw(ar->manipulator_map, C, WM_MANIPULATORMAP_DRAWSTEP_3D);
-
 	/* post process */
 	if (do_compositing) {
 		GPU_fx_do_composite_pass(rv3d->compositor, rv3d->winmat, rv3d->is_persp, scene, NULL);
@@ -2141,12 +2136,14 @@ void view3d_main_region_draw_legacy(const bContext *C, ARegion *ar)
 	VP_legacy_view3d_main_region_setup_view(&eval_ctx, scene, v3d, ar, NULL, NULL);
 	glClear(GL_DEPTH_BUFFER_BIT);
 
-	ED_region_pixelspace(ar);
+	WM_manipulatormap_draw(ar->manipulator_map, C, WM_MANIPULATORMAP_DRAWSTEP_3D);
 
-	WM_manipulatormap_draw(ar->manipulator_map, C, WM_MANIPULATORMAP_DRAWSTEP_2D);
+	ED_region_pixelspace(ar);
 
 	view3d_main_region_draw_info(C, scene, ar, v3d, grid_unit, render_border);
 
+	WM_manipulatormap_draw(ar->manipulator_map, C, WM_MANIPULATORMAP_DRAWSTEP_2D);
+
 	gpuPopProjectionMatrix();
 	gpuPopMatrix();



More information about the Bf-blender-cvs mailing list