From 6ef48b13186c2de003c8f9d86630e66c7e5406f3 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 7 May 2019 15:01:12 +0200 Subject: DrawManager/GreasePencil: Select Correct ViewLayer The DrawManager assumed that the first render layer was the render layer where GP needed to render on. In viewport this is always the case as we only have a single view layer. When rendering this can be multiple when multiple layers are rendered and composited in the compositor. In stead of the assumption that the first render layer is the render layer we need to draw on, we search for the render layer with the same name as the viewlayer. Reviewed By: fclem, brecht, antoniov Maniphest Tasks: T63099 Differential Revision: https://developer.blender.org/D4818 --- source/blender/draw/intern/draw_manager.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/draw/intern') diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 3bf3eaae4a2..0b8740ea982 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1883,9 +1883,9 @@ static void DRW_render_gpencil_to_image(RenderEngine *engine, void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph) { - /* This function is only valid for Cycles - * Eevee done all work in the Eevee render directly. - * Maybe it can be done equal for both engines? + /* This function is only valid for Cycles & Workbench + * Eevee does all work in the Eevee render directly. + * Maybe it can be done equal for all engines? */ if (STREQ(engine->type->name, "Eevee")) { return; @@ -1952,7 +1952,7 @@ void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph } RenderResult *render_result = RE_engine_get_result(engine); - RenderLayer *render_layer = render_result->layers.first; + RenderLayer *render_layer = RE_GetRenderLayer(render_result, view_layer->name); DRW_render_gpencil_to_image(engine, render_layer, &render_rect); -- cgit v1.2.3