diff --git a/src/render/filament/support/light_manager.cc b/src/render/filament/support/light_manager.cc index 8cefc6ee..10952b2a 100644 --- a/src/render/filament/support/light_manager.cc +++ b/src/render/filament/support/light_manager.cc @@ -78,8 +78,6 @@ LightManager::LightManager(mjrfContext* ctx, mjrfScene* scene, const mjModel* model = model_objects->GetModel(); default_shadow_map_size_ = ReadElement( model, "filament.shadows.map_size", default_shadow_map_size_); - default_vsm_blur_width_ = ReadElement( - model, "filament.shadows.vsm_blur_width", default_vsm_blur_width_); fallback_head_light_intensity_ = ReadElement(model, "filament.fallback.head_light_intensity", fallback_head_light_intensity_); @@ -129,11 +127,13 @@ void LightManager::Prepare() { params.color[2] = model->light_diffuse[2]; params.type = (mjtLightType)model->light_type[i]; params.cast_shadows = model->light_castshadow[i]; + // The bulb_radius is only used by DPCF or PCSS shadows. For VSM shadows, + // we use light_bulbradius to control the blur width. params.bulb_radius = model->light_bulbradius[i]; + params.vsm_blur_width = model->light_bulbradius[i]; params.range = model->light_range[i]; params.intensity = model->light_intensity[i]; params.shadow_map_size = default_shadow_map_size_; - params.vsm_blur_width = default_vsm_blur_width_; if (params.type == mjLIGHT_SPOT) { params.spot_cone_angle = model->light_cutoff[i]; } diff --git a/src/render/filament/support/light_manager.h b/src/render/filament/support/light_manager.h index 6a843334..a25c3b81 100644 --- a/src/render/filament/support/light_manager.h +++ b/src/render/filament/support/light_manager.h @@ -51,7 +51,6 @@ class LightManager { UniquePtr fallback_ibl_texture_{nullptr, nullptr}; std::vector> lights_; int default_shadow_map_size_ = 2048; - float default_vsm_blur_width_ = 0.0f; float fallback_head_light_intensity_ = 0.f; float fallback_scene_light_intensity_ = 80'000.f; float fallback_environment_light_intensity_ = 5'000.f;