diff options
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/render/extern/include/RE_pipeline.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/include/render_result.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/include/render_types.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 9 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 18 |
6 files changed, 22 insertions, 12 deletions
diff --git a/source/blender/render/CMakeLists.txt b/source/blender/render/CMakeLists.txt index d3fef51e9e9..8f921d7850a 100644 --- a/source/blender/render/CMakeLists.txt +++ b/source/blender/render/CMakeLists.txt @@ -37,6 +37,7 @@ set(INC ../nodes ../physics ../draw + ../gpu ../../../intern/atomic ../../../intern/guardedalloc ../../../intern/mikktspace diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index cb32efb0b0f..df8953857ee 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -315,7 +315,7 @@ void RE_current_scene_update_cb(struct Render *re, void *handle, void (*f)(void void RE_gl_context_create(Render *re); void RE_gl_context_destroy(Render *re); void *RE_gl_context_get(Render *re); -void *RE_gwn_context_get(Render *re); +void *RE_gpu_context_get(Render *re); /* should move to kernel once... still unsure on how/where */ float RE_filter_value(int type, float x); diff --git a/source/blender/render/intern/include/render_result.h b/source/blender/render/intern/include/render_result.h index 3096949b49f..ab7eee128f0 100644 --- a/source/blender/render/intern/include/render_result.h +++ b/source/blender/render/intern/include/render_result.h @@ -123,7 +123,7 @@ bool render_result_has_views(struct RenderResult *rr); iter_ != NULL; \ iter_ = iter_->next, nr_++) \ { \ - if ((re_)->r.scemode & R_SINGLE_LAYER) { \ + if (!G.background && (re_)->r.scemode & R_SINGLE_LAYER) { \ if (nr_ != re->active_view_layer) { \ continue; \ } \ diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 117b82570e7..5d5d12f028a 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -160,7 +160,7 @@ struct Render { /* TODO replace by a whole draw manager. */ void *gl_context; - void *gwn_context; + void *gpu_context; }; /* **************** defines ********************* */ diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 5c3f510ffca..09ab3e39d5f 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -739,7 +739,16 @@ int RE_engine_render(Render *re, int do_all) type->render(engine, engine->depsgraph); + /* grease pencil render over previous render result */ + if (!RE_engine_test_break(engine)) { + DRW_render_gpencil(engine, engine->depsgraph); + } + engine_depsgraph_free(engine); + + if (RE_engine_test_break(engine)) { + break; + } } FOREACH_VIEW_LAYER_TO_RENDER_END; } diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 82595527d30..510a4aa4685 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -97,7 +97,7 @@ #include "../../../windowmanager/WM_api.h" /* XXX */ #include "../../../windowmanager/wm_window.h" /* XXX */ -#include "../../../intern/gawain/gawain/gwn_context.h" +#include "GPU_context.h" #ifdef WITH_FREESTYLE # include "FRS_freestyle.h" @@ -1043,10 +1043,10 @@ void RE_gl_context_create(Render *re) void RE_gl_context_destroy(Render *re) { /* Needs to be called from the thread which used the ogl context for rendering. */ - if (re->gwn_context) { - GWN_context_active_set(re->gwn_context); - GWN_context_discard(re->gwn_context); - re->gwn_context = NULL; + if (re->gpu_context) { + GPU_context_active_set(re->gpu_context); + GPU_context_discard(re->gpu_context); + re->gpu_context = NULL; } if (re->gl_context) { WM_opengl_context_dispose(re->gl_context); @@ -1059,12 +1059,12 @@ void *RE_gl_context_get(Render *re) return re->gl_context; } -void *RE_gwn_context_get(Render *re) +void *RE_gpu_context_get(Render *re) { - if (re->gwn_context == NULL) { - re->gwn_context = GWN_context_create(); + if (re->gpu_context == NULL) { + re->gpu_context = GPU_context_create(); } - return re->gwn_context; + return re->gpu_context; } /* ********* add object data (later) ******** */ |