Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Pozo <pragma37>2020-07-20 14:56:29 +0300
committerBrecht Van Lommel <brecht@blender.org>2020-07-20 20:31:42 +0300
commit52543be9a6a4398a3cb5ec19df3659aa42a38727 (patch)
tree429ff41337ee08bf373082a26043abf8751d8130 /source/blender/render
parenta9644c812fc17b38503828d6edf7d259b6fe0e74 (diff)
Python API: option to use OpenGL context in RenderEngine.render
When bl_use_gpu_context is set, an OpenGL context will be available for OpenGL based render engines. Differential Revision: https://developer.blender.org/D8305
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_engine.h1
-rw-r--r--source/blender/render/intern/source/external_engine.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 77a60854616..51eb290b0b8 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -60,6 +60,7 @@ struct bNodeTree;
#define RE_USE_SHADING_NODES_CUSTOM 64
#define RE_USE_SPHERICAL_STEREO 128
#define RE_USE_STEREO_VIEWPORT 256
+#define RE_USE_GPU_CONTEXT 512
/* RenderEngine.flag */
#define RE_ENGINE_ANIMATION 1
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index e1fbf6d19de..633b9324d9f 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -863,8 +863,16 @@ int RE_engine_render(Render *re, int do_all)
re->draw_lock(re->dlh, 0);
}
+ if (engine->type->flag & RE_USE_GPU_CONTEXT) {
+ DRW_render_context_enable(engine->re);
+ }
+
type->render(engine, engine->depsgraph);
+ if (engine->type->flag & RE_USE_GPU_CONTEXT) {
+ DRW_render_context_disable(engine->re);
+ }
+
/* Grease pencil render over previous render result.
*
* NOTE: External engine might have been requested to free its