Fix T40764: Keyframed Render Layers Don't Work as Intended

This commit is contained in:
Sergey Sharybin 2014-06-23 14:25:52 +06:00
parent 8cea610e74
commit 3bd965bc03
4 changed files with 8 additions and 2 deletions

@ -34,11 +34,13 @@
#define __RENDERPIPELINE_H__ #define __RENDERPIPELINE_H__
struct Render; struct Render;
struct RenderData;
struct RenderLayer; struct RenderLayer;
struct RenderResult; struct RenderResult;
struct RenderLayer *render_get_active_layer(struct Render *re, struct RenderResult *rr); struct RenderLayer *render_get_active_layer(struct Render *re, struct RenderResult *rr);
float panorama_pixel_rot(struct Render *re); float panorama_pixel_rot(struct Render *re);
void render_update_anim_renderdata(struct Render *re, struct RenderData *rd);
#endif /* __RENDERPIPELINE_H__ */ #endif /* __RENDERPIPELINE_H__ */

@ -5146,8 +5146,10 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l
lay &= 0xFF000000; lay &= 0xFF000000;
/* applies changes fully */ /* 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); 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 no camera, viewmat should have been set! */
if (use_camera_view && camera) { if (use_camera_view && camera) {

@ -60,6 +60,7 @@
#include "RE_bake.h" #include "RE_bake.h"
#include "initrender.h" #include "initrender.h"
#include "renderpipeline.h"
#include "render_types.h" #include "render_types.h"
#include "render_result.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); BKE_scene_update_for_newframe(re->eval_ctx, re->main, re->scene, lay);
render_update_anim_renderdata(re, &re->scene->r);
} }
/* create render result */ /* create render result */

@ -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 /* update some variables that can be animated, and otherwise wouldn't be due to
* RenderData getting copied once at the start of animation render */ * 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 */ /* filter */
re->r.gauss = rd->gauss; re->r.gauss = rd->gauss;