summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-01-18 08:43:06 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-01-18 08:43:06 +0100
commite514e3732a9588b650776cc962a9e4d8e6ded058 (patch)
tree98654fe5e6cd0f3bc2aa72ba1b021f7607949573
parent0461f753870e1173aeef6704b38f2d174640984d (diff)
parentb2a31a3bbfe3a51864222e925ab82b38669211cc (diff)
Merge pull request #71584 from clayjohn/SDFGI-error
Remove light from dynamic light list when removing scenario
-rw-r--r--servers/rendering/renderer_scene_cull.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 2ea813aab0..218bb7b736 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -748,6 +748,10 @@ void RendererSceneCull::instance_set_scenario(RID p_instance, RID p_scenario) {
switch (instance->base_type) {
case RS::INSTANCE_LIGHT: {
InstanceLightData *light = static_cast<InstanceLightData *>(instance->base_data);
+ if (instance->visible && RSG::light_storage->light_get_type(instance->base) != RS::LIGHT_DIRECTIONAL && light->bake_mode == RS::LIGHT_BAKE_DYNAMIC) {
+ instance->scenario->dynamic_lights.erase(light->instance);
+ }
+
#ifdef DEBUG_ENABLED
if (light->geometries.size()) {
ERR_PRINT("BUG, indexing did not unpair geometries from light.");