From 6d8b6028e2fa8cc840100da75712c5a4e8fe89ee Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Fri, 13 Feb 2026 07:36:43 -0800 Subject: [PATCH] Tweak default lighting and specularity for non-PBR scenes. Most "classic" objects looked washed out. To "revert" to the old look, you can add the following to your XML files: ``` ``` PiperOrigin-RevId: 869725829 Change-Id: Icab0cedaa27915400497745db886c393709c14b1 --- .../filament/filament/object_manager.h | 2 +- .../filament/filament/scene_view.cc | 24 +++++++++++-------- .../filament/filament/scene_view.h | 3 +++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/experimental/filament/filament/object_manager.h b/src/experimental/filament/filament/object_manager.h index fd37f526..d5734587 100644 --- a/src/experimental/filament/filament/object_manager.h +++ b/src/experimental/filament/filament/object_manager.h @@ -133,7 +133,7 @@ class ObjectManager { filament::Texture* fallback_normal_ = nullptr; filament::Texture* fallback_orm_ = nullptr; filament::IndirectLight* fallback_indirect_light_ = nullptr; - float specular_multiplier_ = 0.6f; + float specular_multiplier_ = 0.2f; float shininess_multiplier_ = 0.1f; float emissive_multiplier_ = 0.3f; }; diff --git a/src/experimental/filament/filament/scene_view.cc b/src/experimental/filament/filament/scene_view.cc index 41cb61ef..2fdd6d14 100644 --- a/src/experimental/filament/filament/scene_view.cc +++ b/src/experimental/filament/filament/scene_view.cc @@ -166,6 +166,16 @@ SceneView::SceneView(filament::Engine* engine, ObjectManager* object_mgr) m, "filament.fog.inScatteringSize", fog_opts.inScatteringSize); views_[kNormalIndex]->setFogOptions(fog_opts); + fallback_head_light_intensity_ = + ReadElement(m, "filament.fallback.head_light_intensity", + fallback_head_light_intensity_); + fallback_scene_light_intensity_ = + ReadElement(m, "filament.fallback.scene_light_intensity", + fallback_scene_light_intensity_); + fallback_environment_light_intensity_ = + ReadElement(m, "filament.fallback.environment_light_intensity", + fallback_environment_light_intensity_); + // Create an empty/black indirect light to ensure that the skybox is oriented // to respect mujoco's Z-up convention. scene_->setIndirectLight( @@ -313,18 +323,12 @@ void SceneView::PrepareLights() { // dealing with a "classic renderer" scene. In this case, let's add a // default environment light and set the light intensity ourselves. if (total_light_intensity == 0.0f) { - // Headlight is not required for Filament and often confusing, disable it by - // default. - constexpr float kHeadlightIntensityCandela = 0.f; - constexpr float kTotalSceneLightIntensityCandela = 100'000.f; - constexpr float kFallbackEnvironmentLightIntensityCandela = 10'000.f; - - SetFallbackEnvironmentLight(kFallbackEnvironmentLightIntensityCandela); - const float intensity = kTotalSceneLightIntensityCandela / lights_.size(); + SetFallbackEnvironmentLight(fallback_environment_light_intensity_); + const float intensity = fallback_scene_light_intensity_ / lights_.size(); for (auto& light : lights_) { if (light) { - light->SetIntensity(light->IsHeadlight() ? kHeadlightIntensityCandela - : intensity); + light->SetIntensity( + light->IsHeadlight() ? fallback_head_light_intensity_ : intensity); } } } diff --git a/src/experimental/filament/filament/scene_view.h b/src/experimental/filament/filament/scene_view.h index 223e4940..d805bcfd 100644 --- a/src/experimental/filament/filament/scene_view.h +++ b/src/experimental/filament/filament/scene_view.h @@ -100,6 +100,9 @@ class SceneView { ColorGradingOptions color_grading_options_; DrawMode active_mode_ = DrawMode::kNumDrawModes; float aspect_ratio_ = 1.0f; + float fallback_head_light_intensity_ = 0.f; + float fallback_scene_light_intensity_ = 80'000.f; + float fallback_environment_light_intensity_ = 5'000.f; }; } // namespace mujoco