diff options
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 19 | ||||
-rw-r--r-- | source/blender/render/intern/source/render_result.c | 9 |
2 files changed, 18 insertions, 10 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index ff12a055361..f995582149a 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1803,6 +1803,20 @@ void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph DST.buffer_finish_called = false; } +/* Callback function for RE_engine_update_render_passes to ensure all + * render passes are registered. */ +static void draw_render_result_ensure_pass_cb(void *user_data, + struct Scene *UNUSED(scene), + struct ViewLayer *view_layer, + const char *name, + int channels, + const char *chanid, + eNodeSocketDatatype UNUSED(type)) +{ + RenderEngine *engine = user_data; + RE_engine_add_pass(engine, name, channels, chanid, view_layer->name); +} + void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) { Scene *scene = DEG_get_evaluated_scene(depsgraph); @@ -1851,6 +1865,10 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) /* set default viewport */ GPU_viewport(0, 0, size[0], size[1]); + /* Update the render passes. This needs to be done before acquiring the render result. */ + RE_engine_update_render_passes( + engine, scene, view_layer, draw_render_result_ensure_pass_cb, engine); + /* Init render result. */ RenderResult *render_result = RE_engine_begin_result(engine, 0, @@ -1859,7 +1877,6 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) size[1], view_layer->name, /* RR_ALL_VIEWS */ NULL); - RenderLayer *render_layer = render_result->layers.first; for (RenderView *render_view = render_result->views.first; render_view != NULL; render_view = render_view->next) { diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index d2f21ab035c..db75cb5cfed 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -444,15 +444,6 @@ RenderResult *render_result_new(Render *re, if (view_layer->passflag & SCE_PASS_SUBSURFACE_COLOR) { RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 3, RE_PASSNAME_SUBSURFACE_COLOR, view, "RGB"); } - if (view_layer->eevee.render_passes & EEVEE_RENDER_PASS_BLOOM) { - RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 3, RE_PASSNAME_BLOOM, view, "RGB"); - } - if (view_layer->eevee.render_passes & EEVEE_RENDER_PASS_VOLUME_SCATTER) { - RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 3, RE_PASSNAME_VOLUME_SCATTER, view, "RGB"); - } - if (view_layer->eevee.render_passes & EEVEE_RENDER_PASS_VOLUME_TRANSMITTANCE) { - RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 3, RE_PASSNAME_VOLUME_TRANSMITTANCE, view, "RGB"); - } #undef RENDER_LAYER_ADD_PASS_SAFE } } |