diff options
author | Ton Roosendaal <ton@blender.org> | 2010-12-19 14:39:55 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2010-12-19 14:39:55 +0300 |
commit | 7507a5f959211ab8eb52fe098103d63f5b5d67e1 (patch) | |
tree | 8e23ab086eff3e24abfa52927fbbee5619b0e3e8 /source/blender/editors/render | |
parent | 3bcde46dfae04f4659975d44a1e6837197a2fb18 (diff) |
Bugfix #25288
SSS preview render didn't happy.
Was caused by using a Material copy for preview renders (to prevent
crashing in other cases). There were actually 2 errors:
- material copy should be added to preview-main database
- the render was invoked using wrong main database even!
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_preview.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index af210f49553..61fb9305a83 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -350,6 +350,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre mat= copy_material((Material *)id); sp->matcopy= mat; BLI_remlink(&G.main->mat, mat); + BLI_addtail(&pr_main->mat, mat); init_render_material(mat, 0, NULL); /* call that retrieves mode_l */ end_render_material(mat); @@ -409,6 +410,8 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre else { sce->r.mode &= ~(R_OSA|R_RAYTRACE|R_SSS); + /* get rid of copied material */ + BLI_remlink(&pr_main->mat, sp->matcopy); free_material(sp->matcopy); MEM_freeN(sp->matcopy); sp->matcopy= NULL; @@ -982,7 +985,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs ((Camera *)sce->camera->data)->lens *= (float)sp->sizey/(float)sizex; /* entire cycle for render engine */ - RE_PreviewRender(re, G.main, sce); + RE_PreviewRender(re, pr_main, sce); ((Camera *)sce->camera->data)->lens= oldlens; |