Merge branch 'blender-v2.83-release'

This commit is contained in:
Brecht Van Lommel
2020-06-02 19:48:45 +02:00
3 changed files with 11 additions and 24 deletions

View File

@@ -182,7 +182,6 @@ bool Light::has_contribution(Scene *scene)
LightManager::LightManager() LightManager::LightManager()
{ {
need_update = true; need_update = true;
need_update_background = true;
use_light_visibility = false; use_light_visibility = false;
} }
@@ -903,7 +902,7 @@ void LightManager::device_update(Device *device,
VLOG(1) << "Total " << scene->lights.size() << " lights."; VLOG(1) << "Total " << scene->lights.size() << " lights.";
device_free(device, dscene, need_update_background); device_free(device, dscene);
use_light_visibility = false; use_light_visibility = false;
@@ -917,11 +916,9 @@ void LightManager::device_update(Device *device,
if (progress.get_cancel()) if (progress.get_cancel())
return; return;
if (need_update_background) { device_update_background(device, dscene, scene, progress);
device_update_background(device, dscene, scene, progress); if (progress.get_cancel())
if (progress.get_cancel()) return;
return;
}
device_update_ies(dscene); device_update_ies(dscene);
if (progress.get_cancel()) if (progress.get_cancel())
@@ -933,17 +930,14 @@ void LightManager::device_update(Device *device,
} }
need_update = false; need_update = false;
need_update_background = false;
} }
void LightManager::device_free(Device *, DeviceScene *dscene, const bool free_background) void LightManager::device_free(Device *, DeviceScene *dscene)
{ {
dscene->light_distribution.free(); dscene->light_distribution.free();
dscene->lights.free(); dscene->lights.free();
if (free_background) { dscene->light_background_marginal_cdf.free();
dscene->light_background_marginal_cdf.free(); dscene->light_background_conditional_cdf.free();
dscene->light_background_conditional_cdf.free();
}
dscene->ies_lights.free(); dscene->ies_lights.free();
} }
@@ -996,7 +990,6 @@ int LightManager::add_ies(const string &content)
ies_slots[slot]->hash = hash; ies_slots[slot]->hash = hash;
need_update = true; need_update = true;
need_update_background = true;
return slot; return slot;
} }
@@ -1015,7 +1008,6 @@ void LightManager::remove_ies(int slot)
/* If the slot has no more users, update the device to remove it. */ /* If the slot has no more users, update the device to remove it. */
need_update |= (ies_slots[slot]->users == 0); need_update |= (ies_slots[slot]->users == 0);
need_update_background |= need_update;
} }
void LightManager::device_update_ies(DeviceScene *dscene) void LightManager::device_update_ies(DeviceScene *dscene)

View File

@@ -88,9 +88,6 @@ class LightManager {
bool use_light_visibility; bool use_light_visibility;
bool need_update; bool need_update;
/* Need to update background (including multiple importance map) */
bool need_update_background;
LightManager(); LightManager();
~LightManager(); ~LightManager();
@@ -100,7 +97,7 @@ class LightManager {
void remove_ies(int slot); void remove_ies(int slot);
void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress); void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress);
void device_free(Device *device, DeviceScene *dscene, const bool free_background = true); void device_free(Device *device, DeviceScene *dscene);
void tag_update(Scene *scene); void tag_update(Scene *scene);

View File

@@ -318,11 +318,9 @@ void Shader::tag_update(Scene *scene)
* has use_mis set to false. We are quite close to release now, so * has use_mis set to false. We are quite close to release now, so
* better to be safe. * better to be safe.
*/ */
if (this == scene->background->get_shader(scene)) { if (this == scene->background->get_shader(scene) &&
scene->light_manager->need_update_background = true; scene->light_manager->has_background_light(scene)) {
if (scene->light_manager->has_background_light(scene)) { scene->light_manager->need_update = true;
scene->light_manager->need_update = true;
}
} }
/* quick detection of which kind of shaders we have to avoid loading /* quick detection of which kind of shaders we have to avoid loading