Tips: Performance

Custom Shaders Custom Groundcover Portable Install Navmeshtool Register BSAs Merging Objects Cleaning Plugins File Renames Atlased Meshes INI Importer OPENMW_PHYSICS_FPS

Making a twenty-plus year-old game look like a modern one while still having good performance can be tricky. Thankfully, OpenMW offers many different settings options for managing performance in various ways.

This page will discuss specific strategies for gaining those precious FPS.

Table Of Contents

How To Test Performance

It's good to establish a testing pattern that you can repeat in order to quickly change and test settings values. Something like this:

  1. Edit your settings as desired. Do not edit the settings file with the OpenMW-Launcher running.
  2. Run OpenMW-Launcher.
  3. Under the "Advanced" tab, click "Testing".
  4. Check the box next to where it says "Skip menu and generate default character".
  5. Pick a busy scene to test against (Balmora and Ebonheart both have spots that are very demanding). Type the cell name into the box next to where it says "Start default character at".
  6. Create a file in the root of your base mods folder and call it openmw-test.txt. Type this into that file:
    tgm
    tcl
    player->setspeed 400  ; Or a higher value as desired
    • This will enable godmode, disable clipping, and set your player speed to something high so you can fly around very quickly when the game loads.
  7. Back to the launcher, where it says "Run script after startup:", click the button labeled "Browse..." next to the input box and select the openmw-test.txt file you created before.
  8. Click "Play" in the launcher, and the game will load with your chosen scene.
  9. Repeat this process as you try different values.

After a bit of testing it's possible to arrive at settings that run well for your system, it just takes some patience.

Async Physics

Set async num threads under the [Physics] section from 0 to 1.

Advanced tip: If you know you've got multi-threading built into your bullet (this may require compiling it yourself), then you can go ahead and set that to 2. When setting this higher than 1, it's good to do some benchmarks to make sure you benefit from the change.

To do a quick benchmark:

Field Of View

Personally, I love using a wide FOV in games that allow it. But I've found the performance cost can be significant, and actually nowadays just play with the default FOV.

If you've got a widened FOV, and want to get more performance out of your setup, then do try using the default FOV.

Groundcover

On this website, I suggest somewhat conservative values for groundcover settings but it may be possible to push that a bit further. For example: I've noticed that rendering distance = 12288.0 doesn't have too much of an impact on most scenes, and the pop-in is greatly reduced.

On a powerful machine, you can try to set density and min chunk size to 1.0 for more dense groundcover.

Mods

There are several modding projects that are dedicated to improving the performance of the vanilla Morrowind assets. These include Morrowind Optimization Patch and Project Atlas. These can especially help on lower-end systems.

Object Paging

OpenMW's object paging system is very powerful, highly configurable, and very well-documented. It gives you fine-grained control over how much distant stuff you see in-game. In order to maximize performance with it, you need to find the right amount of distant objects your system can handle.

The most powerful option for controlling this is object paging min size (it goes under the [Terrain] section), which sets the size of things that will get paged (and thus, rendered in the distance). On my system with a powerful GPU, I set this to 0.023, but you could raise it higher for more serious gains (at the cost of more pop-in, and less distant objects overall).

Shadows

I've had the most success with maximum shadow map distance for getting performance out of shadows. I play with 4096, which is half the default value. It's worth tweaking this one for potential gains.

Viewing Distance

The viewing distance setting will have a major impact on your performance (combined with object paging).

I've found that a value of 71680, or just under 10 cells, is about as far I can go without having major drops in the busier scenes. If you have a less powerful GPU, experiment with 7 cells or lower, and a higher value for object paging min size.

Water

Water settings can have a huge impact on performance without it being very obvious. Some things that can affect performance:

OS/GPU-Specific Tips

If you're using a modern AMD GPU on a modern Linux system (e.g., I've got a Polaris 10 card on a rolling release distro), it might be a good idea to try running OpenMW with the OSG_VERTEX_BUFFER_HINT=VERTEX_BUFFER_OBJECT environment variable. On my own setup, this doubled my average FPS with very high settings.

This is known to not make any difference with Nvidia GPUs (and may have a negative impact on performance), but it is unknown to me if it makes a difference with AMD GPUs on Windows.

Steam Deck Tips

It's possible to run any of the mod lists featured on this website using Valve's Steam Deck, but some considerations will need to be made because of the device's limitations.

The Total Overhaul mod list on Steam Deck.

Performance Data

A collection of benchmarks I've done, with visuals provided by Flightless Mango and the excellent mangohud software.

Custom Shaders Custom Groundcover Portable Install Navmeshtool Register BSAs Merging Objects Cleaning Plugins File Renames Atlased Meshes INI Importer OPENMW_PHYSICS_FPS

Getting Started Tips Mod List Changelogs Website Changelog CFG Generator Name Generator About FAQ Resources Users' Guide Developers' Guide Subscribe Issue Tracker MOMW On Discord #momw On IRC MOMW On GitLab
Settings
GPLv3 logo