diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-03 13:58:48 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-03 15:16:12 +0300 |
commit | e013d2eb4be9decd6d888f6d7fa9b329a4574287 (patch) | |
tree | 904e87aedac146142f0af86326411ee20dec47ce /source | |
parent | 181356edba042698ac44f002ee7093984c1b79ae (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')
-rw-r--r-- | source/blender/editors/render/render_preview.c | 6 |
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; |