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 <brechtvanlommel@gmail.com>2014-05-21 17:47:11 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2014-05-21 17:51:37 +0400
commit27cebb26517b9c5b336645dfd0de4ace32cc8912 (patch)
tree87e7494ff8a94a02a08b31b3e5ef7cae9046aa00 /source/blender/render
parentebbeb082d1bef78d1fa162822db2af44468e97cd (diff)
Fix T39711: cycles particle motion blur affected by viewport draw method.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_engine.h2
-rw-r--r--source/blender/render/intern/source/external_engine.c23
2 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 2c6492b5c5a..c76cf3406a1 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -147,6 +147,8 @@ int RE_engine_render(struct Render *re, int do_all);
bool RE_engine_is_external(struct Render *re);
+void RE_engine_frame_set(struct RenderEngine *engine, int frame, float subframe);
+
/* Engine Types */
void RE_engines_init(void);
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index e8751210540..6ba2c57a6fc 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -481,6 +481,29 @@ bool RE_bake_engine(
return true;
}
+void RE_engine_frame_set(RenderEngine *engine, int frame, float subframe)
+{
+ Render *re = engine->re;
+ Scene *scene = re->scene;
+ double cfra = (double)frame + (double)subframe;
+
+ CLAMP(cfra, MINAFRAME, MAXFRAME);
+ BKE_scene_frame_set(scene, cfra);
+
+#ifdef WITH_PYTHON
+ BPy_BEGIN_ALLOW_THREADS;
+#endif
+
+ /* It's possible that here we're including layers which were never visible before. */
+ BKE_scene_update_for_newframe_ex(re->eval_ctx, re->main, scene, (1 << 20) - 1, true);
+
+#ifdef WITH_PYTHON
+ BPy_END_ALLOW_THREADS;
+#endif
+
+ BKE_scene_camera_switch_update(scene);
+}
+
/* Render */
static bool render_layer_exclude_animated(Scene *scene, SceneRenderLayer *srl)