Fix #120421: Animated "Burn metadata into image" ignored during render
Seems like scene `RenderData` only gets synched once from `Scene` to `BaseRender` in `RE_InitState` . Animation on it is only evaluating on the scene, so the the `BaseRender` `RenderData` is not properly updated here. However `R_STAMP_DRAW` is part of that and it is the `BaseRender` `RenderData` that is checked in `do_render_full_pipeline` (not the `Scene` one) to determine if we want to stamp. Later calls to `BKE_render_result_stamp_info` / `renderresult_stampinfo` / `stampdata` always get passed the scene, so individual animation stamp details (such as Render Time) work properly. So to resolve, use the `Scene` `RenderData` (rather than the `BaseRender` one) for proper animation update. NOTE: this (not updating animation of members of `RenderData`) might actually be a problem elsewhere, too -- havent checked on this in detail though Pull Request: https://projects.blender.org/blender/blender/pulls/120429
This commit is contained in:
committed by
Philipp Oeser
parent
d049cd1dbf
commit
605de2f094
@@ -1358,7 +1358,7 @@ static void renderresult_stampinfo(Render *re)
|
||||
Object *ob_camera_eval = DEG_get_evaluated_object(re->pipeline_depsgraph, RE_GetCamera(re));
|
||||
BKE_image_stamp_buf(re->scene,
|
||||
ob_camera_eval,
|
||||
(re->r.stamp & R_STAMP_STRIPMETA) ? rres.stamp_data : nullptr,
|
||||
(re->scene->r.stamp & R_STAMP_STRIPMETA) ? rres.stamp_data : nullptr,
|
||||
rres.ibuf->byte_buffer.data,
|
||||
rres.ibuf->float_buffer.data,
|
||||
rres.rectx,
|
||||
@@ -1456,7 +1456,7 @@ static void do_render_sequencer(Render *re)
|
||||
/* copy ibuf into combined pixel rect */
|
||||
RE_render_result_rect_from_ibuf(rr, ibuf_arr[view_id], view_id);
|
||||
|
||||
if (ibuf_arr[view_id]->metadata && (re->r.stamp & R_STAMP_STRIPMETA)) {
|
||||
if (ibuf_arr[view_id]->metadata && (re->scene->r.stamp & R_STAMP_STRIPMETA)) {
|
||||
/* ensure render stamp info first */
|
||||
BKE_render_result_stamp_info(nullptr, nullptr, rr, true);
|
||||
BKE_stamp_info_from_imbuf(rr, ibuf_arr[view_id]);
|
||||
@@ -1537,7 +1537,7 @@ static void do_render_full_pipeline(Render *re)
|
||||
/* save render result stamp if needed */
|
||||
if (re->result != nullptr) {
|
||||
/* sequence rendering should have taken care of that already */
|
||||
if (!(render_seq && (re->r.stamp & R_STAMP_STRIPMETA))) {
|
||||
if (!(render_seq && (re->scene->r.stamp & R_STAMP_STRIPMETA))) {
|
||||
Object *ob_camera_eval = DEG_get_evaluated_object(re->pipeline_depsgraph, RE_GetCamera(re));
|
||||
BKE_render_result_stamp_info(re->scene, ob_camera_eval, re->result, false);
|
||||
}
|
||||
@@ -1545,7 +1545,7 @@ static void do_render_full_pipeline(Render *re)
|
||||
renderresult_set_passes_metadata(re);
|
||||
|
||||
/* stamp image info here */
|
||||
if ((re->r.stamp & R_STAMP_ALL) && (re->r.stamp & R_STAMP_DRAW)) {
|
||||
if ((re->scene->r.stamp & R_STAMP_ALL) && (re->scene->r.stamp & R_STAMP_DRAW)) {
|
||||
renderresult_stampinfo(re);
|
||||
re->display_update(re->result, nullptr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user