[Bf-blender-cvs] [e013d2eb4be] blender2.8: Render preview: Make it to preserve unkeyed animation

Sergey Sharybin noreply at git.blender.org
Thu May 3 14:16:20 CEST 2018


Commit: e013d2eb4be9decd6d888f6d7fa9b329a4574287
Author: Sergey Sharybin
Date:   Thu May 3 12:58:48 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBe013d2eb4be9decd6d888f6d7fa9b329a4574287

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.

===================================================================

M	source/blender/editors/render/render_preview.c

===================================================================

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;



More information about the Bf-blender-cvs mailing list