From 3bd965bc03500c552e043ad7e0eb55853e2b0755 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 23 Jun 2014 14:25:52 +0600 Subject: [PATCH] Fix T40764: Keyframed Render Layers Don't Work as Intended --- source/blender/render/intern/include/renderpipeline.h | 2 ++ source/blender/render/intern/source/convertblender.c | 4 +++- source/blender/render/intern/source/external_engine.c | 2 ++ source/blender/render/intern/source/pipeline.c | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/blender/render/intern/include/renderpipeline.h b/source/blender/render/intern/include/renderpipeline.h index e713d4880d6..a831ab3c29c 100644 --- a/source/blender/render/intern/include/renderpipeline.h +++ b/source/blender/render/intern/include/renderpipeline.h @@ -34,11 +34,13 @@ #define __RENDERPIPELINE_H__ struct Render; +struct RenderData; struct RenderLayer; struct RenderResult; struct RenderLayer *render_get_active_layer(struct Render *re, struct RenderResult *rr); float panorama_pixel_rot(struct Render *re); +void render_update_anim_renderdata(struct Render *re, struct RenderData *rd); #endif /* __RENDERPIPELINE_H__ */ diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index b28d1debfec..3e72ef06a67 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -5146,8 +5146,10 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l lay &= 0xFF000000; /* applies changes fully */ - if ((re->r.scemode & (R_NO_FRAME_UPDATE|R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW))==0) + if ((re->r.scemode & (R_NO_FRAME_UPDATE|R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW))==0) { BKE_scene_update_for_newframe(re->eval_ctx, re->main, re->scene, lay); + render_update_anim_renderdata(re, &re->scene->r); + } /* if no camera, viewmat should have been set! */ if (use_camera_view && camera) { diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 9017e7ff92a..1df701c48eb 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -60,6 +60,7 @@ #include "RE_bake.h" #include "initrender.h" +#include "renderpipeline.h" #include "render_types.h" #include "render_result.h" @@ -575,6 +576,7 @@ int RE_engine_render(Render *re, int do_all) } BKE_scene_update_for_newframe(re->eval_ctx, re->main, re->scene, lay); + render_update_anim_renderdata(re, &re->scene->r); } /* create render result */ diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index d4f089d7c3b..bdd911df33b 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -730,7 +730,7 @@ void RE_ChangeResolution(Render *re, int winx, int winy, rcti *disprect) /* update some variables that can be animated, and otherwise wouldn't be due to * RenderData getting copied once at the start of animation render */ -static void render_update_anim_renderdata(Render *re, RenderData *rd) +void render_update_anim_renderdata(Render *re, RenderData *rd) { /* filter */ re->r.gauss = rd->gauss;