[Bf-blender-cvs] [692704543ba] greasepencil-object: Check exist grease pencil objects before render

Antonio Vazquez noreply at git.blender.org
Sat Feb 10 11:45:28 CET 2018


Commit: 692704543baf7903cab8f256186ed2755f3fdd53
Author: Antonio Vazquez
Date:   Sat Feb 10 11:26:40 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB692704543baf7903cab8f256186ed2755f3fdd53

Check exist grease pencil objects before render

If the scene has not grease pencil objects, it's not required to call grease pencil rendr functions.

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

M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 9bb7c99537e..3f57709810e 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3640,6 +3640,20 @@ void DRW_draw_render_loop_offscreen(
 	GPU_offscreen_bind(ofs, false);
 }
 
+/* helper to check if exit object type to render */
+static bool DRW_render_check_object_type(struct Depsgraph *depsgraph, short obtype)
+{
+	DEG_OBJECT_ITER_FOR_RENDER_ENGINE(depsgraph, ob, DRW_iterator_mode_get())
+	{
+		if ((ob->type == obtype) && (DRW_check_object_visible_within_active_context(ob))) {
+			return true;
+		}
+	}
+	DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END
+
+	return false;
+}
+
 void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
 {
 	Scene *scene = DEG_get_evaluated_scene(depsgraph);
@@ -3687,10 +3701,11 @@ void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
 		engine_type->draw_engine->render_to_image(data, re, depsgraph);
 	}
 
-	/* TODO grease pencil */
-	/* enabled only in debug mode */
-	if (G.debug_value >= 663) {
-		if (draw_engine_gpencil_type.render_to_image) {
+	/* grease pencil 
+	 * the grease pencil render result is merged in the previous render result.
+	 */
+	if (draw_engine_gpencil_type.render_to_image) {
+		if (DRW_render_check_object_type(depsgraph, OB_GPENCIL)) {
 			ViewportEngineData *gpdata = DRW_viewport_engine_data_ensure(&draw_engine_gpencil_type);
 			draw_engine_gpencil_type.render_to_image(gpdata, re, depsgraph);
 		}



More information about the Bf-blender-cvs mailing list