From fcdacd0690654970c9a011664595648456e564ab Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Fri, 5 Dec 2025 06:07:13 -0800 Subject: [PATCH] Fix crash when using image-based textures. Image lights are not normal lights, so use nullptr as a placeholder. Add checks for nullness when iterating over the lights. PiperOrigin-RevId: 840695579 Change-Id: I092515ae814523e85f4f5ce87b2bac2241f4ea35 --- src/experimental/filament/filament/scene_view.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/experimental/filament/filament/scene_view.cc b/src/experimental/filament/filament/scene_view.cc index 35911dc6..a954f6da 100644 --- a/src/experimental/filament/filament/scene_view.cc +++ b/src/experimental/filament/filament/scene_view.cc @@ -327,8 +327,10 @@ void SceneView::PrepareLights() { SetFallbackEnvironmentLight(kFallbackEnvironmentLightIntensityCandela); const float intensity = kTotalSceneLightIntensityCandela / lights_.size(); for (auto& light : lights_) { - light->SetIntensity(light->IsHeadlight() ? kHeadlightIntensityCandela - : intensity); + if (light) { + light->SetIntensity(light->IsHeadlight() ? kHeadlightIntensityCandela + : intensity); + } } } } @@ -381,9 +383,11 @@ void SceneView::UpdateScene(const mjrContext* context, const mjvScene* scene) { continue; } else if (scene_light.id < lights_.size() - 1) { std::unique_ptr& light = lights_[scene_light.id]; - light->SetColor(ReadFloat3(scene_light.diffuse)); - light->SetTransform(ReadFloat3(scene_light.pos), - ReadFloat3(scene_light.dir)); + if (light) { + light->SetColor(ReadFloat3(scene_light.diffuse)); + light->SetTransform(ReadFloat3(scene_light.pos), + ReadFloat3(scene_light.dir)); + } } else { mju_error("Unexpected light id: %d", scene_light.id); }