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.
This commit is contained in:
parent
37ce77ba06
commit
b37dff9239
Notes:
blender-bot
2023-05-03 10:14:48 +02:00
Referenced by issue #53683, 2.79a release
|
@ -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') {
|
||||
|
|
Loading…
Reference in New Issue