diff options
Diffstat (limited to 'source/blender/draw/engines/eevee_next/eevee_engine.cc')
-rw-r--r-- | source/blender/draw/engines/eevee_next/eevee_engine.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee_next/eevee_engine.cc b/source/blender/draw/engines/eevee_next/eevee_engine.cc index be0adfad568..37b4bde324e 100644 --- a/source/blender/draw/engines/eevee_next/eevee_engine.cc +++ b/source/blender/draw/engines/eevee_next/eevee_engine.cc @@ -12,6 +12,8 @@ #include "DRW_render.h" +#include "RE_pipeline.h" + #include "eevee_engine.h" /* Own include. */ #include "eevee_instance.hh" @@ -97,6 +99,8 @@ static void eevee_draw_scene(void *vedata) DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); ved->instance->draw_viewport(dfbl); STRNCPY(ved->info, ved->instance->info.c_str()); + /* Reset view for other following engines. */ + DRW_view_set_active(nullptr); } static void eevee_cache_init(void *vedata) @@ -144,7 +148,23 @@ static void eevee_render_to_image(void *UNUSED(vedata), if (!GPU_shader_storage_buffer_objects_support()) { return; } - UNUSED_VARS(engine, layer); + + eevee::Instance *instance = new eevee::Instance(); + + Render *render = engine->re; + Depsgraph *depsgraph = DRW_context_state_get()->depsgraph; + Object *camera_original_ob = RE_GetCamera(engine->re); + const char *viewname = RE_GetActiveRenderView(engine->re); + int size[2] = {engine->resolution_x, engine->resolution_y}; + + rctf view_rect; + rcti rect; + RE_GetViewPlane(render, &view_rect, &rect); + + instance->init(size, &rect, engine, depsgraph, nullptr, camera_original_ob, layer); + instance->render_frame(layer, viewname); + + delete instance; } static void eevee_render_update_passes(RenderEngine *engine, Scene *scene, ViewLayer *view_layer) |