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:
authorBrecht Van Lommel <brecht@blender.org>2022-03-14 19:10:29 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-03-15 18:12:13 +0300
commit19bff8eb51f2d462f665a559c0f6934fbe154c1a (patch)
tree5eb5c5d9664779229208cf2e878f88a1cf4f415c /source/blender/render
parent2613a2552dec7d236032f2b4a1dd367be9214df5 (diff)
Fix T96263: command line rendering affected by current scene subframe
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/RE_pipeline.h3
-rw-r--r--source/blender/render/intern/pipeline.c12
2 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/render/RE_pipeline.h b/source/blender/render/RE_pipeline.h
index f532c705534..21be690a56e 100644
--- a/source/blender/render/RE_pipeline.h
+++ b/source/blender/render/RE_pipeline.h
@@ -335,7 +335,8 @@ void RE_RenderFrame(struct Render *re,
struct Scene *scene,
struct ViewLayer *single_layer,
struct Object *camera_override,
- int frame,
+ const int frame,
+ const float subframe,
bool write_still);
/**
* A version of #RE_RenderFrame that saves images to disk.
diff --git a/source/blender/render/intern/pipeline.c b/source/blender/render/intern/pipeline.c
index aa006713755..913a4d3857b 100644
--- a/source/blender/render/intern/pipeline.c
+++ b/source/blender/render/intern/pipeline.c
@@ -1844,7 +1844,8 @@ void RE_RenderFrame(Render *re,
Scene *scene,
ViewLayer *single_layer,
Object *camera_override,
- int frame,
+ const int frame,
+ const float subframe,
const bool write_still)
{
render_callback_exec_id(re, re->main, &scene->id, BKE_CB_EVT_RENDER_INIT);
@@ -1854,6 +1855,7 @@ void RE_RenderFrame(Render *re,
G.is_rendering = true;
scene->r.cfra = frame;
+ scene->r.subframe = subframe;
if (render_init_from_main(re, &scene->r, bmain, scene, single_layer, camera_override, 0, 0)) {
const RenderData rd = scene->r;
@@ -2305,7 +2307,8 @@ void RE_RenderAnim(Render *re,
const RenderData rd = scene->r;
bMovieHandle *mh = NULL;
- const int cfrao = rd.cfra;
+ const int cfra_old = rd.cfra;
+ const float subframe_old = rd.subframe;
int nfra, totrendered = 0, totskipped = 0;
const int totvideos = BKE_scene_multiview_num_videos_get(&rd);
const bool is_movie = BKE_imtype_is_movie(rd.im_format.imtype);
@@ -2373,6 +2376,7 @@ void RE_RenderAnim(Render *re,
re->flag |= R_ANIMATION;
{
+ scene->r.subframe = 0.0f;
for (nfra = sfra, scene->r.cfra = sfra; scene->r.cfra <= efra; scene->r.cfra++) {
char name[FILE_MAX];
@@ -2481,6 +2485,7 @@ void RE_RenderAnim(Render *re,
}
re->r.cfra = scene->r.cfra; /* weak.... */
+ re->r.subframe = scene->r.subframe;
/* run callbacks before rendering, before the scene is updated */
render_callback_exec_id(re, re->main, &scene->id, BKE_CB_EVT_RENDER_PRE);
@@ -2549,7 +2554,8 @@ void RE_RenderAnim(Render *re,
BKE_report(re->reports, RPT_INFO, "No frames rendered, skipped to not overwrite");
}
- scene->r.cfra = cfrao;
+ scene->r.cfra = cfra_old;
+ scene->r.subframe = subframe_old;
re->flag &= ~R_ANIMATION;