- Ensure that optional geometry objects are properly removed. This provides a massive performance boost, at the cost of visuals. Benchmark on graphics 2 with lowest geometry level: bugged has 202 steady FPS, 230 mostly stable FPS, fixed has 427 steady FPS, 495 mostly stable FPS.
- Restrict the removal of objects based on geometry detail to the lowest geometry level. This ignore the different levels of geometry removal that track authors can set for objects, and which was mostly unused: all objects marked for removal at any level are either all removed or all kept.
This commit is contained in:
Alayan 2024-04-29 10:55:55 +02:00
parent 3f8b78dc41
commit 32a53827a8
No known key found for this signature in database
2 changed files with 5 additions and 4 deletions

View File

@ -72,9 +72,9 @@ void CustomVideoSettingsDialog::beforeAddingWidgets()
particles_effects->setValue(UserConfigParams::m_particles_effects);
SpinnerWidget* geometry_level = getWidget<SpinnerWidget>("geometry_detail");
//I18N: Geometry level disabled : lowest level, no details
//I18N: Geometry level disabled : lowest level, no details, Level-of-Details distances are low
geometry_level->addLabel(_("Very Low"));
//I18N: Geometry level low : few details are displayed
//I18N: Geometry level low : everything is displayed, Level-of-Details distances are low
geometry_level->addLabel(_("Low"));
//I18N: Geometry level medium : everything is displayed, Level-of-Details distances are medium
geometry_level->addLabel(_("Medium"));

View File

@ -2357,8 +2357,9 @@ void Track::loadObjects(const XMLNode* root, const std::string& path,
{
int geo_level = 0;
node->get("geometry-level", &geo_level);
if (UserConfigParams::m_geometry_level <= 2 &&
UserConfigParams::m_geometry_level + geo_level - 2 > 0 &&
// Only remove objects in the "very low" geometry detail level.
// Other levels are used for LoD distance
if (UserConfigParams::m_geometry_level == 2 && geo_level >= 0 &&
!NetworkConfig::get()->isNetworking())
continue;
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);