From e013d2eb4be9decd6d888f6d7fa9b329a4574287 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 3 May 2018 12:58:48 +0200 Subject: 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. --- source/blender/editors/render/render_preview.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/render') 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; -- cgit v1.2.3