File information
Created by
Radac2008 paranoidnendoroidUploaded by
Radac2008Virus scan
About this mod
An MWSE / OMW plugin that modifies View Distance at runtime based on framerate or user defined parameters.
- Requirements
- Permissions and credits
- Changelogs
OMW Version 0.32: Added Grid List and Automatic Grid List Addition. These features are now enabled together by default and the Grid List is not accessible outside of the game. See below for more information.
DFPSO is an MWSE plugin inspired by Foggy Old Ebonheart and Simple FPS Optimizer as well as the older Morrowind FPs Optimizer that dynamically changes View Distance at runtime in order to alleviate the performance cost of heavily draw-call-bound areas like Old Ebonheart. DFPSO is entirely script-based and does not modify game data, does incremental changes to View Distance and works across the entire game. It also features an MCM with several options to set for users.
In DFPSO, a script checks the current frame's frametime (the length of time it took to render) at regular intervals. The frametime value is compared to a target framerate (with some leeway) - if it's higher than expected, View Distance is reduced, if it's lower, it is increased.
MCM Values:
- Smooth Mode: Toggles smooth, per-frame adjustment of View Distance. Requires reload to enable or disable.
- Smooth Aggression: Determines how aggressively the Smooth Mode adjustment changes View Distance. Does nothing without Smooth Mode.
- Target Framerate: This determines the framerate the script will try to reach. Default is 60, recommended to set slightly lower than your average framerate in non-stressed areas.
- Tolerance: Determines upper and lower bounds for the frametime in which no changes to View Distance will be made. Given as percentage value above and below the Target Framerate, computed from frametime.
- Aggression: Determines how many increments of downward or upward change are made to the View Distance per change instance. Increasing this risks overshoot but may help in very heavily stressed setups.
- Checkrate: This setting controls how often the current frametime is measured and how often View Distance can be changed, given as checks per second. Only updates when reloading a save.
- Prediction: This feature will compare the frametimes measured during the last two checks to detect lowered performance before it exceeds the tolerance bounds and adjust View Distance down to compensate. Enabling this may prevent framerate drops but lead to overly aggressive View Distance lowering.
- Prediction Tolerance: Determines how large the drop in performance can be before triggering the Prediction View Distance change, given in percentage of Tolerance. Has no effect without Prediction.
- Delta Awareness: Automatically increases the magnitude of View Distance change based on the difference between the current and last checked frametime. Essentially increases Aggression when performance is significantly higher or lower than expected. Only use with low Aggression values.
- Whitelist: This option enables or disables the Whitelist. If enabled, the mod will only apply to cells listed in the Whitelist.JSON file in MWSE's config folder. Use together with Static Adjustment to emulate FOE behaviour.
- Gridlist: This option enables or disables the Gridlist. If enabled, the mod will only apply to cells listed in the Gridlist.JSON file in MWSE's config folder. Overrides Whitelist if both are enabled.
- Automatic List Addition: Enables automatic addition of low performing cells to the Whitelist/Gridlist. Will add any current cells if performance is below the List Threshold for 3 seconds. Requires reloading to enable.
- List Threshold: Determines the FPS threshold for automatic list addition. If performance is below this FPS value for more than 3 seconds, the current cell is added to White/Gridlist if Automatic List Addition is enabled.
- Default View Distance: This value determines the default View Distance for non-whitelisted cells. If you have Whitelist enabled and enter a non-whitelisted cell, the mod will set your View Distance to this value. Has no effect without Whitelist.
- Static Adjustment: Switches the function from dynamic, framerate-based View Distance adjustment to static View Distance adjustment. Requires Whitelist. If enabled, will set the View Distance to the value specified in Static View Distance upon entering a whitelisted cell.
- Static View Distance: This value is used to set the View Distance in whitelisted cells when Static Adjustment is enabled. Requires both Whitelist and Static Adjustment.
Install like any other MWSE plugin. Can be uninstalled at any time and should not affect your save.
You can define additional cells to reduce the render distance by editing the whitelist.json file in MWSE/config.
Configuration
Using the default settings, whitelist.json should look like this:
{
"cells": [
"Old Ebonheart",
"Old Ebonheart, Docks"
]
}
If you wanted to add Balmora to this, simply change it to:
{
"cells": [
"Old Ebonheart",
"Old Ebonheart, Docks",
"Balmora"
]
}
Make sure you place a comma after each item except the last.The newly added "Gridlist" works like the Whitelist, but records cell coordinates instead of names. This allows more granular control at the cost of more demanding cell transitions. The Gridlist can be edited in the same way as the Whitelist by emulating the form of existing cell records.
Install by adding the extracted "DFPSO OMW" folder to your "Data Directories" in the OMW launcher, then activate "DFPSO.omwscripts" in your content files. The OMW version includes a script settings menu that can be accessed while ingame. All settings update immediately. The OpenMW implementation currently features the per-frame smooth mode exclusively and the Grid List, which is enabled by default. Be aware that DFPSO will override your view distance, so make sure to set it correctly in the mod's script menu as detailed below.
- Target Framerate: This setting determines the target framerate the script will try to keep you at. Recommended to set slightly lower than your average framerate during normal gameplay.
- Tolerance: Determines a tolerance around your target framerate, value is used as percentage modifier for target framerate.
- Delta Awareness: Increases the change per frame based on difference between target and current frametime.
- Change per Frame: The maximum amount of View Distance change that can occur in one frame. Low values are recommended to avoid unstable visuals.
- Maximum View Distance: The maximum View Distance value DFPSO will set to. This and the minimum VD values are given in exact units instead of OpenMWs cell multiplier. To convert, multiply your cell draw distance by 7168.
- Minimum View Distance: The minimum View Distance value DFPSO will set to.
- Use Grid List: Whether to restrict the functionality to a list of cell grids. This list is automatically populated with cells that perform worse than the "Gridlist Threshold" for more than 3 seconds. Press Shift+U to manually clear the list. Unlike the MWSE version, this list is not accessible out of game.
- Gridlist Threshold: The framerate below which cells will be considered low performing.
The mod menu uses numerical values for View Distance instead of OpenMW's cell multiplier value. To convert between the two, multiply your "cell viewing distance" value by 7168 to get the corresponding value for DFPSO.
The OpenMW version will be receiving updates to increase feature parity in the future. Some features (timer-based change, cell name list) I consider legacy functionality that remain in the MWSE version for compatibility reasons, unless there is explicit demand to have these on OpenMW (let me know in the Posts section) I do not plan on including them.
The disclaimers from Simple FPS Optimizer apply to this mod as well: You will notice pop-in in heavy areas. You need to have good quality distant land generated to compensate for this. If your game's performance is not actually limited by View Distance, this mod will decrease your visual quality with no gain to performance. If you don't use Prediction, this is a naive approach that takes current frametime only, without considering past frames. That means that if your performance dips for other reasons, for example if you have loading stutter, the script may catch stray long frames and overcompensate.
Using either Whitelist or Gridlist will perform a cell list comparison on every cell change. Depending on how long your white/gridlist is, this may incur a noticeable performance cost when transitioning.
OpenMW Disclaimers: Since OpenMW uses the same View Distance for both immediate cell draw and distant land, DFPSO OpenMW will have a more drastic impact on your image than the MGEXE version. Depending on your quality settings, the performance impact may differ from comparable MGEXE settings. Make sure to tweak minimum and maximum distance values as well as the "change per frame" option to find values that work for your needs. Note also that OpenMW may incur stutter when first paging distant object for new cells, so you may experience instability when first loading into a new area.
Thanks korootz for their mod and the shoutout on their page.
Thanks to rfuzzo, Hrnchamd and C3pa on the Morrowind Modding Discord for help.
Special thanks to paranoidnendoroid for the shoutout on FOE's page as well as help and permission to update the mod with features from FOE.