Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2020-06-02 19:44:43 +0300
committerBrecht Van Lommel <brecht@blender.org>2020-06-02 20:44:12 +0300
commit52cc412e0f56f249d932e1025ea191939c1a6edb (patch)
tree2a1b261ca86d2868f4a9bf4ce7e5969c58f301db /intern
parenteba3aa1837e40bf168528b1e3588540a7f241e1e (diff)
Revert "Fix T63588: Cycles unnecessarily updates background importance sampling map"
This reverts commit 33ce0cb5a1edea4b5aaa7d37f6ad74b3b35b95f8. Fix T77273: crash enabling portal lights. The optimization for background updates can be added back later for 2.90 and 2.83.1.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/render/light.cpp22
-rw-r--r--intern/cycles/render/light.h5
-rw-r--r--intern/cycles/render/shader.cpp8
3 files changed, 11 insertions, 24 deletions
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp
index cd19b03ac53..9adf8e5341a 100644
--- a/intern/cycles/render/light.cpp
+++ b/intern/cycles/render/light.cpp
@@ -181,7 +181,6 @@ bool Light::has_contribution(Scene *scene)
LightManager::LightManager()
{
need_update = true;
- need_update_background = true;
use_light_visibility = false;
}
@@ -902,7 +901,7 @@ void LightManager::device_update(Device *device,
VLOG(1) << "Total " << scene->lights.size() << " lights.";
- device_free(device, dscene, need_update_background);
+ device_free(device, dscene);
use_light_visibility = false;
@@ -916,11 +915,9 @@ void LightManager::device_update(Device *device,
if (progress.get_cancel())
return;
- if (need_update_background) {
- device_update_background(device, dscene, scene, progress);
- if (progress.get_cancel())
- return;
- }
+ device_update_background(device, dscene, scene, progress);
+ if (progress.get_cancel())
+ return;
device_update_ies(dscene);
if (progress.get_cancel())
@@ -932,17 +929,14 @@ void LightManager::device_update(Device *device,
}
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->lights.free();
- if (free_background) {
- dscene->light_background_marginal_cdf.free();
- dscene->light_background_conditional_cdf.free();
- }
+ dscene->light_background_marginal_cdf.free();
+ dscene->light_background_conditional_cdf.free();
dscene->ies_lights.free();
}
@@ -995,7 +989,6 @@ int LightManager::add_ies(const string &content)
ies_slots[slot]->hash = hash;
need_update = true;
- need_update_background = true;
return slot;
}
@@ -1014,7 +1007,6 @@ void LightManager::remove_ies(int slot)
/* If the slot has no more users, update the device to remove it. */
need_update |= (ies_slots[slot]->users == 0);
- need_update_background |= need_update;
}
void LightManager::device_update_ies(DeviceScene *dscene)
diff --git a/intern/cycles/render/light.h b/intern/cycles/render/light.h
index 1a99b2b76ae..4f3048c1f32 100644
--- a/intern/cycles/render/light.h
+++ b/intern/cycles/render/light.h
@@ -88,9 +88,6 @@ class LightManager {
bool use_light_visibility;
bool need_update;
- /* Need to update background (including multiple importance map) */
- bool need_update_background;
-
LightManager();
~LightManager();
@@ -100,7 +97,7 @@ class LightManager {
void remove_ies(int slot);
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);
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 39ba45a751a..8403a636e1c 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -318,11 +318,9 @@ void Shader::tag_update(Scene *scene)
* has use_mis set to false. We are quite close to release now, so
* better to be safe.
*/
- if (this == scene->background->get_shader(scene)) {
- scene->light_manager->need_update_background = true;
- if (scene->light_manager->has_background_light(scene)) {
- scene->light_manager->need_update = true;
- }
+ if (this == scene->background->get_shader(scene) &&
+ scene->light_manager->has_background_light(scene)) {
+ scene->light_manager->need_update = true;
}
/* quick detection of which kind of shaders we have to avoid loading