File information
Created by
Radac2008 paranoidnendoroidUploaded by
Radac2008Virus scan
About this mod
An MWSE plugin that modifies View Distance at runtime based on framerate or user defined parameters.
- Requirements
- Permissions and credits
- Changelogs
Major Update: Now features "Smooth Mode" which adjusts your View Distance every frame.
Update: With permission and help from paranoidnendoroid the mod now includes the Whitelisting and static View Distance changing features from Foggy Old Ebonheart. This can be used to restrict the dynamic, framerate-based adjustment of View Distance to specific cells or emulate the behaviour of FOE entirely. Read further below on how to modify the Whitelist.
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. Incompatible with Whitelist. 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.
- 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 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.
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.