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:
Diffstat (limited to 'source/blender/render/intern/pipeline.c')
-rw-r--r--source/blender/render/intern/pipeline.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/render/intern/pipeline.c b/source/blender/render/intern/pipeline.c
index 320f8b8ed03..8567835f55c 100644
--- a/source/blender/render/intern/pipeline.c
+++ b/source/blender/render/intern/pipeline.c
@@ -2007,13 +2007,38 @@ void RE_RenderFrame(Render *re,
G.is_rendering = false;
}
+static void change_renderdata_engine(Render *re, const char *new_engine)
+{
+ if (!STREQ(re->r.engine, new_engine)) {
+ if (re->engine) {
+ RE_engine_free(re->engine);
+ re->engine = NULL;
+ }
+ BLI_strncpy(re->r.engine, new_engine, sizeof(re->r.engine));
+ }
+}
+
#ifdef WITH_FREESTYLE
+static bool use_eevee_for_freestyle_render(Render *re)
+{
+ RenderEngineType *type = RE_engines_find(re->r.engine);
+ return !(type->flag & RE_USE_CUSTOM_FREESTYLE);
+}
+
void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render)
{
re->result_ok = 0;
if (render_init_from_main(re, &scene->r, bmain, scene, NULL, NULL, 0, 0)) {
if (render) {
+ char scene_engine[32];
+ BLI_strncpy(scene_engine, re->r.engine, sizeof(scene_engine));
+ if (use_eevee_for_freestyle_render(re)) {
+ change_renderdata_engine(re, RE_engine_id_BLENDER_EEVEE);
+ }
+
do_render_3d(re);
+
+ change_renderdata_engine(re, scene_engine);
}
}
re->result_ok = 1;