diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-12 22:08:50 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-12 22:37:41 +0300 |
commit | 21f19224f3f584f0fbf970ec3faa9cb62b7eb503 (patch) | |
tree | 0d31ec862c3bf6a0fc119dee1cae53df91de7d95 /source/blender | |
parent | f6abf9d0ba6f88d7eab07dfc66ac7029eeb3eab3 (diff) |
Fix part of T53080: don't use current scene world for icon previews.
This can be very slow if it contains a big texture, and it's not
necessarily setup in a useful way anyway, and materials can be used
in multiple scenes.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/render/render_preview.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 35d772afae7..9564e73c3e5 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -382,9 +382,18 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty } } else { - /* use current scene world to light sphere */ - if (mat->pr_type == MA_SPHERE_A) + if (mat->pr_type == MA_SPHERE_A && sp->pr_method == PR_BUTS_RENDER) { + /* Use current scene world to light sphere. */ sce->world = scene->world; + } + else if (sce->world) { + /* Use a default world color. Using the current + * scene world can be slow if it has big textures. */ + sce->world->use_nodes = false; + sce->world->horr = 0.5f; + sce->world->horg = 0.5f; + sce->world->horb = 0.5f; + } } if (sp->pr_method == PR_ICON_RENDER) { @@ -393,10 +402,6 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty } else { sce->lay = 1 << MA_SPHERE_A; - - /* same as above, use current scene world to light sphere */ - if (BKE_scene_use_new_shading_nodes(scene)) - sce->world = scene->world; } } else { @@ -494,6 +499,15 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty sce->camera = (Object *)BLI_findstring(&pr_main->object, "Camera", offsetof(ID, name) + 2); } } + else { + if (sce->world) { + /* Only use lighting from the lamp. */ + sce->world->use_nodes = false; + sce->world->horr = 0.0f; + sce->world->horg = 0.0f; + sce->world->horb = 0.0f; + } + } for (base = sce->base.first; base; base = base->next) { if (base->object->id.name[2] == 'p') { |