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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-03 13:58:48 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-03 15:16:12 +0300
commite013d2eb4be9decd6d888f6d7fa9b329a4574287 (patch)
tree904e87aedac146142f0af86326411ee20dec47ce /source/blender/editors/render
parent181356edba042698ac44f002ee7093984c1b79ae (diff)
Render preview: Make it to preserve unkeyed animation
The idea is to re-use evaluated datablock from within current context. This relies on the following factors: - It expects scene to be fully evaluated before preview jobs starts. - It expects datablocks to be localized.
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r--source/blender/editors/render/render_preview.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 4afcc5f661e..ed800c2ff7c 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -80,6 +80,7 @@
#include "BKE_world.h"
#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
#include "DEG_depsgraph_build.h"
#include "IMB_imbuf.h"
@@ -155,6 +156,7 @@ typedef struct ShaderPreview {
short *stop, *do_update;
Scene *scene;
+ Depsgraph *depsgraph;
ID *id;
ID *parent;
MTex *slot;
@@ -679,6 +681,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs
char name[32];
int sizex;
Main *pr_main = sp->pr_main;
+ ID *id_eval = DEG_get_evaluated_id(sp->depsgraph, id);
/* in case of split preview, use border render */
if (split) {
@@ -698,7 +701,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs
}
/* get the stuff from the builtin preview dbase */
- sce = preview_prepare_scene(sp->bmain, sp->scene, id, idtype, sp);
+ sce = preview_prepare_scene(sp->bmain, sp->scene, id_eval, idtype, sp);
if (sce == NULL) return;
if (!split || first) sprintf(name, "Preview %p", sp->owner);
@@ -1216,6 +1219,7 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M
/* customdata for preview thread */
sp->scene = scene;
+ sp->depsgraph = CTX_data_depsgraph(C);
sp->owner = owner;
sp->sizex = sizex;
sp->sizey = sizey;