0 of 0

File information

Last updated

Original upload

Created by

Radac2008 paranoidnendoroid

Uploaded by

Radac2008

Virus scan

Safe to use

About this mod

An MWSE plugin that modifies View Distance at runtime based on framerate or user defined parameters.

Requirements
Permissions and credits
Changelogs
Dynamic FPS Optimization

Update 0.71: Now features "Automatic List Addition" - automatically add low-performing cells to the Whitelist. Also features the new "Gridlist", which records cells by their coordinates instead of their names. Made Smooth Mode compatible with White/Gridlisting.

Update 0.6: Now features "Smooth Mode" which adjusts your View Distance every frame.

Update 0.5: 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.

How it works

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.


Whitelisting (from FOE)

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.

Gridlist

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.


Disclaimer

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.

Thanks

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.