Pause Menu Lag Fix / Исправление лагов после открытия и закрытия меню
Исправляет баг, из-за которого открытие и закрытие меню вызывали скачок использования видеопамяти (VRAM) до 100%, что приводило к постоянным лагам в игре Starfield.
Суть проблемы:
Starfield определяет детализацию текстур и мешей с помощью стейт-машины под названием `ScreenSizeBasedLOD`. На каждом цикле она измеряет, какую площадь экрана занимает каждый материал, сверяет результат с доступным объемом видеопамяти (VRAM), после чего повышает или понижает уровень MIP-текстур, чтобы уложиться в память.
Эта стейт-машина не останавливается при открытии определенных игровых меню, когда ваша видеопамять внезапно освобождается. Функция `CheckBudget` делит нагрузку на VRAM на четыре уровня. На самом низком уровне нагрузки она выставляет внутренний флаг «обновить всё», что принудительно задает mip 0 (максимальное разрешение) для абсолютно каждого материала. Эта поставившаяся в очередь загрузка текстур высокого разрешения буквально перегружает доступную память в момент закрытия меню, когда VRAM снова резко оказывается под давлением, заставляя драйвер уходить в постоянный пробуксовку.
Решение:
Мод принудительно запрещает контроллеру выполнять любые состояния, увеличивающие уровень детализации, пока открыты меню. Он перенаправляет эти функции на внутренний сброс самого движка, гарантируя, что игра не будет подготавливать LOD-ы к повышению качества во время нахождения в меню.
Настройки в файле StarfieldPauseLODHold.ini
[Menus]
; 0 = нативный LOD, 1 = сброс после закрытия, 2 = заморозка во время открытия.
iAlmanacMenuLODMode = 0
iArmorCraftingMenuLODMode = 0
iBarterMenuLODMode = 0
iBookMenuLODMode = 0
iBSMissionMenuLODMode = 0
iBoundaryMenuLODMode = 0
iChargenMenuLODMode = 0
iConsoleLODMode = 0
iConsoleNativeUIMenuLODMode = 0
iContainerMenuLODMode = 0
iDataMenuLODMode = 1
iDataSlateMenuLODMode = 0
iDialogueMenuLODMode = 0
iDrugsCraftingMenuLODMode = 0
iFanfareMenuLODMode = 0
iFavoritesMenuLODMode = 1
iFoodCraftingMenuLODMode = 0
iGalaxyStarMapMenuLODMode = 0
iIndustrialCraftingMenuLODMode = 0
iInventoryMenuLODMode = 1
iMapMenuLODMode = 0
iMarketplaceMenuLODMode = 0
iMessageBoxMenuLODMode = 0
iMonocleMenuLODMode = 0
iPauseMenuLODMode = 2
iPhotoModeMenuLODMode = 0
iPickpocketMenuLODMode = 0
iPowersMenuLODMode = 0
iResearchMenuLODMode = 0
iScopeMenuLODMode = 0
iSitWaitMenuLODMode = 0
iSkillsMenuLODMode = 0
iSleepWaitMenuLODMode = 0
iShipCrewMenuLODMode = 0
iShipCrewAssignMenuLODMode = 0
iShipRefuelMenuLODMode = 0
iSpaceshipEditorMenuLODMode = 0
iStatusMenuLODMode = 0
iGenesisTerminalMenuLODMode = 0
iTextInputMenuLODMode = 0
iTakeoffMenuLODMode = 0
iWeaponGroupAssignmentMenuLODMode = 0
iWeaponsCraftingMenuLODMode = 0
iWorkshopBuilderMenuLODMode = 0
iWorkshop_BlueprintMenuLODMode = 0
iWorkshopMenuLODMode = 0
iWorkshopQuickMenuLODMode = 0
iWorkshopTargetMenuLODMode = 0
iShipDialogueMenuLODMode = 0
[Logging]
; Включает подробную диагностику меню, LOD, VRAM, фокуса и потребления ресурсов.
bVerboseLogging = 0
Требования:
Starfield
Starfield Script Extender (SFSE)
Инструкция по установке:
1. Установите с помощью вашего любимого мод-менеджера.
2. Наслаждайтесь отсутствием лагов.
Обновление:1.2.2
* Исправлен неверный адрес для AlmanacMenu.
* Ошибка обнаружения меню теперь отключает политику только для этого конкретного меню, а не для всего мода целиком.
Обновление:1.2.1
* Исправлена ошибка, из-за которой предметы в инвентаре могли выглядеть в низком разрешении.
* Добавлены настройки в INI-файл для всех игровых меню, позволяющие полностью отключить подгрузку LOD или сбрасывать её при закрытии меню.
Суть проблемы:
Starfield определяет детализацию текстур и мешей с помощью стейт-машины под названием `ScreenSizeBasedLOD`. На каждом цикле она измеряет, какую площадь экрана занимает каждый материал, сверяет результат с доступным объемом видеопамяти (VRAM), после чего повышает или понижает уровень MIP-текстур, чтобы уложиться в память.
Эта стейт-машина не останавливается при открытии определенных игровых меню, когда ваша видеопамять внезапно освобождается. Функция `CheckBudget` делит нагрузку на VRAM на четыре уровня. На самом низком уровне нагрузки она выставляет внутренний флаг «обновить всё», что принудительно задает mip 0 (максимальное разрешение) для абсолютно каждого материала. Эта поставившаяся в очередь загрузка текстур высокого разрешения буквально перегружает доступную память в момент закрытия меню, когда VRAM снова резко оказывается под давлением, заставляя драйвер уходить в постоянный пробуксовку.
Решение:
Мод принудительно запрещает контроллеру выполнять любые состояния, увеличивающие уровень детализации, пока открыты меню. Он перенаправляет эти функции на внутренний сброс самого движка, гарантируя, что игра не будет подготавливать LOD-ы к повышению качества во время нахождения в меню.
Настройки в файле StarfieldPauseLODHold.ini
[Menus]
; 0 = нативный LOD, 1 = сброс после закрытия, 2 = заморозка во время открытия.
iAlmanacMenuLODMode = 0
iArmorCraftingMenuLODMode = 0
iBarterMenuLODMode = 0
iBookMenuLODMode = 0
iBSMissionMenuLODMode = 0
iBoundaryMenuLODMode = 0
iChargenMenuLODMode = 0
iConsoleLODMode = 0
iConsoleNativeUIMenuLODMode = 0
iContainerMenuLODMode = 0
iDataMenuLODMode = 1
iDataSlateMenuLODMode = 0
iDialogueMenuLODMode = 0
iDrugsCraftingMenuLODMode = 0
iFanfareMenuLODMode = 0
iFavoritesMenuLODMode = 1
iFoodCraftingMenuLODMode = 0
iGalaxyStarMapMenuLODMode = 0
iIndustrialCraftingMenuLODMode = 0
iInventoryMenuLODMode = 1
iMapMenuLODMode = 0
iMarketplaceMenuLODMode = 0
iMessageBoxMenuLODMode = 0
iMonocleMenuLODMode = 0
iPauseMenuLODMode = 2
iPhotoModeMenuLODMode = 0
iPickpocketMenuLODMode = 0
iPowersMenuLODMode = 0
iResearchMenuLODMode = 0
iScopeMenuLODMode = 0
iSitWaitMenuLODMode = 0
iSkillsMenuLODMode = 0
iSleepWaitMenuLODMode = 0
iShipCrewMenuLODMode = 0
iShipCrewAssignMenuLODMode = 0
iShipRefuelMenuLODMode = 0
iSpaceshipEditorMenuLODMode = 0
iStatusMenuLODMode = 0
iGenesisTerminalMenuLODMode = 0
iTextInputMenuLODMode = 0
iTakeoffMenuLODMode = 0
iWeaponGroupAssignmentMenuLODMode = 0
iWeaponsCraftingMenuLODMode = 0
iWorkshopBuilderMenuLODMode = 0
iWorkshop_BlueprintMenuLODMode = 0
iWorkshopMenuLODMode = 0
iWorkshopQuickMenuLODMode = 0
iWorkshopTargetMenuLODMode = 0
iShipDialogueMenuLODMode = 0
[Logging]
; Включает подробную диагностику меню, LOD, VRAM, фокуса и потребления ресурсов.
bVerboseLogging = 0
Требования:
Starfield
Starfield Script Extender (SFSE)
Инструкция по установке:
1. Установите с помощью вашего любимого мод-менеджера.
2. Наслаждайтесь отсутствием лагов.
Обновление:1.2.2
* Исправлен неверный адрес для AlmanacMenu.
* Ошибка обнаружения меню теперь отключает политику только для этого конкретного меню, а не для всего мода целиком.
Обновление:1.2.1
* Исправлена ошибка, из-за которой предметы в инвентаре могли выглядеть в низком разрешении.
* Добавлены настройки в INI-файл для всех игровых меню, позволяющие полностью отключить подгрузку LOD или сбрасывать её при закрытии меню.
Основной архив (137 kb)Сервер №1





* Исправлен неверный адрес для AlmanacMenu.
* Ошибка обнаружения меню теперь отключает политику только для этого конкретного меню, а не для всего мода целиком.
* Исправлена ошибка, из-за которой предметы в инвентаре могли выглядеть в низком разрешении.
* Добавлены настройки в INI-файл для всех игровых меню, позволяющие полностью отключить подгрузку LOD или сбрасывать её при закрытии меню.