[Bf-blender-cvs] [ae0c36f82bc] blender2.8: Object Mode: Outline: Perf: Only do outlines detection if needed.

Clément Foucault noreply at git.blender.org
Mon Apr 16 22:48:26 CEST 2018


Commit: ae0c36f82bc4d574a043b9148745a0ba3130395c
Author: Clément Foucault
Date:   Mon Apr 16 22:55:02 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBae0c36f82bc4d574a043b9148745a0ba3130395c

Object Mode: Outline: Perf: Only do outlines detection if needed.

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

M	source/blender/draw/modes/object_mode.c

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

diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 4bdd1444898..efbd43f6aac 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -2072,16 +2072,18 @@ static void OBJECT_draw_scene(void *vedata)
 	DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
 	DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
 
+	int id_ct_select = g_data->id_ofs_select;
+	int id_ct_select_group = g_data->id_ofs_select_group;
+	int id_ct_active = g_data->id_ofs_active;
+	int id_ct_active_group = g_data->id_ofs_active_group;
+	int id_ct_transform = g_data->id_ofs_transform;
+	int outline_calls = id_ct_select + id_ct_select_group + id_ct_active + id_ct_active_group + id_ct_transform;
+
 	float clearcol[4] = {0.0f, 0.0f, 0.0f, 0.0f};
 
-	if (DRW_state_is_fbo()) {
+	if (DRW_state_is_fbo() && outline_calls > 0) {
 		DRW_stats_group_start("Outlines");
 
-		int id_ct_select = g_data->id_ofs_select;
-		int id_ct_select_group = g_data->id_ofs_select_group;
-		int id_ct_active = g_data->id_ofs_active;
-		int id_ct_active_group = g_data->id_ofs_active_group;
-
 		g_data->id_ofs_active = 1;
 		g_data->id_ofs_active_group = g_data->id_ofs_active + id_ct_active + 1;
 		g_data->id_ofs_select = g_data->id_ofs_active_group + id_ct_active_group + 1;
@@ -2137,7 +2139,9 @@ static void OBJECT_draw_scene(void *vedata)
 		}
 
 		/* Combine with scene buffer last */
-		DRW_draw_pass(psl->outlines_resolve);
+		if (outline_calls > 0) {
+			DRW_draw_pass(psl->outlines_resolve);
+		}
 	}
 
 	/* This has to be freed only after drawing empties! */



More information about the Bf-blender-cvs mailing list