Skyrim Special Edition
0 of 0

File information

Last updated

Original upload

Created by

Shizof

Uploaded by

Shizof

Virus scan

Safe to use

About this mod

No more reprojections. No more framerate spikes when looking at certain directions. This mod changes ini settings automatically to keep your framerate at target levels.

Requirements
Permissions and credits
Changelogs
This is VR version. If you are looking for the SSE version, go HERE.



DESCRIPTION

This mod is an SKSE plugin that keeps your framerate at target levels by changing the ini settings between predefined 10 Levels from your config values. It prevents crazy framerate changes during game which was only caused by looking at some direction. It is especially useful for people that use Ultra Trees with DynDOLOD.

It also has a console command feature which runs a console command automatically when the game is loaded or opened.

Note that this is an advanced mod which requires knowledge in game ini settings, frametime etc. I suggest reading some guides first if you need info about ini settings.

You shouldn't blindly install this mod and expect it to give you more performance. This is just a tool. The config settings of this mod need to be adjusted for your mod list and setup.

I suggest using Steam VR/Developer/Advanced Frame Timing to check your frametime and decide which setting you want to use.

For those who want to know what is CPU Late Start, check this image.


It doesn't save ini changes to file at runtime but the game can modify them automatically. So I suggest setting your ini files to read-only if you don't want those settings to be changed.



REQUIREMENTS



COMPATIBILITY

AutoConfig feature is NOT compatible with OpenComposite. But you can still use it for commands and the new Location system which allows changing ini settings based on current player location.

If you are using EngineFixesVR, set TreeLODReferenceCaching back to true in EngineFixesVR.ini and use the new Location system.


INSTALLATION

This mod comes with a fomod installer. Install with a mod manager. It includes an skse plugin dll and a config file only which goes to "Data\Skse\Plugins".

You can choose one of the different configs for your headset refresh rate and mod intensity during installation.

It is a fomod installer, you just select the fps/hz and one of the high/medium/low inis. You don't need to know anything ini related if you use the default settings.

Load order doesn't matter. It can be installed and removed anytime during a save game. 


My recommendation while installing the mod is that you choose these settings in the FOMOD:

If you have OpenComposite:
1- Location System Quality Settings: Low - With Shadows and LOD
2- NO (I'm using Opencomposite or don't want Auto Config function)
Install.

If you don't have OpenComposite:
1- Location System Quality Settings: Low - With Shadows and LOD
2- YES Without Levels (I don't want Levels but I want CPU stuff)
Install.

NOTE THAT THIS IS NOT ENOUGH, ALSO:

After, open VRFpsStabilizer.ini file and adjust LOD fade settings for CPU late start stuff (If you don't have opencomposite).
And, open VRFpsStabilizerLocation.ini file and adjust the settings for different locations if you need to.



CONFIGURATION

This mod comes with an ini file: VRFpsStabilizer.ini

It has many parameters. So let's go over them:

[Settings] Section

EnableLog parameter is used to enable or disable logging. Level changes will be printed in the log. The log file is located here:"My Documents\My Games\Skyrim VR\SKSE\VRFpsStabilizerPlugin.log". I suggest a program like mTail to view your log in game. But don't leave this parameter 1 for normal playing because it may cause performance drops.

AutoConfigEnabled parameter enables/disables Fps Stabilizer part of mod. If you only wish to use the console command feature, you can set this to 0.

CheckSleepDuration parameter is the duration between frametime checks. I suggest setting this higher than your max frametime. For example 12 for 90hz, 14 for 80hz.

MinTargetFrameTime and MaxTargetFrameTime parameters are the target frametime values this mod will try to achieve. I suggest leaving at least approximately 1ms between them. Max value should be lower than your max frametime at current hz. You can find your max frametime by this calculation: (1000/HMD refresh rate). Suggested values for 90hz: 8.5-9.5 and for 80hz: 10.0-11.0

FrameTimeChangeThreshold parameter is the frametime change required for checking if another level is more suitable. Suggested value is 0.25. 

LevelChangeBackDownWait and LevelChangeBackUpWait parameters are the wait durations for changing the level in the opposite direction (Lower if it was recently raised, or higher if it is recently decreased). Default is 80 which corresponds to ~5 seconds. Formula: (CheckSleepDuration*5*LevelChangeBackWait)/1000)

LevelChangeBackUpAngle parameter is the the player heading angle change required for changing the level back to higher quality values to prevent flickering lods. Suggested value is 30 degrees. If you still have flickering lods while you are looking at a direction but you are looking around too much, you may want to increase it to 45 or 60.


AdjustActorLODFade parameter enables adjusting fLODFadeOutMultActors setting automatically according to cpu late starts. MinfLODFadeOutMultActors and MaxfLODFadeOutMultActors settings are used to set minimum and maximum values that setting can have.

AdjustObjectLODFade parameter enables adjusting fLODFadeOutMultObjects setting automatically according to cpu late starts. MinfLODFadeOutMultObjects and MaxfLODFadeOutMultObjectsettings are used to set minimum and maximum values that setting can have.

You should set fLODFadeOutMultItems setting lower yourself in your game inis.


RiftenLODFadeOutModifierActors parameter is a value that's added to to Min/MaxfLODFadeoutMultActors settings to apply for Riften city.

RiftenLODFadeOutModifierObjects parameter is a value that's added to to Min/MaxfLODFadeoutMultObjects settings to apply for Riften city.

OtherCitiesLODFadeOutModifierActors parameter is a value that's added to to Min/MaxfLODFadeoutMultActors settings to apply for cities other than Riften.

OtherCitiesLODFadeOutModifierObjects parameter is a value that's added to to Min/MaxfLODFadeoutMultObjects settings to apply for cities other than Riften.


GrassChange parameter enables auto grass toggle when player enters Cities or Interiors. Since there are no grasses in cities, it creates an unnecessary performance drop when grass is enabled, disabling it automatically gets you a lot of performance back (1-2ms in Whiterun in my tests). Default is 1 as in enabled.

LODcitychange parameter toggles LODs off inside city walls. Default is 0 (disabled).

LODinteriorchange parameter toggles LODs off when in interior cells if there are any. Default is 0 (disabled).



[DataLoaded], [PostLoadGame], [AfterLoadGame], and [NewGame] Sections

In these sections, you can define console commands you want to run when you first open the game, or load the game (For example taa settings etc.).

There are already defined TAA settings in DataLoaded section. Make sure to remove Comment Character (#) to enable those lines if you want to use them.


[Conditional] Section

In this section, you can define commands to be run in Interiors/Exteriors at specific time periods. Or InCombat/OutOfCombat combat states.

Usages:
Space|HourStart|HourEnd|Command: Interior|4|16|taa hf 000.1  or  Exterior|2.5|9.5|taa hf 0.10
Space|Command: Interior|taa hf 0.10
CombatState|Command: InCombat|command   and  OutOfCombat|command

It can also be used to change ini settings as well using INI> tag like:

Examples:
Interior|INI>iShadowMapResolution:Display = 4096
Exterior|INI>iShadowMapResolution:Display = 1024

Just make sure you don't have the same ini settings in [Level#] sections.

It can also be used to apply ImageSpaceModifiers using IMOD> tag:

Usages:
Space|IMOD>espname-formid = strength
Space|HourStart|HourEnd|IMOD>espname-formid = strength

Examples:
Exterior|IMOD>Imaginator BETA.esp-009A49 = 0 #Brightness
Interior|IMOD>Imaginator BETA.esp-009A49 = 5 #Brightness
Exterior|IMOD>Imaginator BETA.esp-009A4F = 5 #Saturation
Interior|IMOD>Imaginator BETA.esp-009A4F = 0 #Saturation




[Level#] Sections

In these sections
, you define the config values you want the mod to switch to. Unfortunately not all config settings are changeable in-game, I found 3 of them that are changeable and also impact performance (Added more in version 1.3.0)

You can add more levels by using the same format [Level10] and so on. Levels are loaded automatically from config.

You enter Config setting and the section of it in the ini separated with a colon (:) like this:

[Level0]
fBlockLevel0Distance:TerrainManager = 100000
fBlockLevel1Distance:TerrainManager = 180500
fTreeLoadDistance:TerrainManager = 180500


I provided levels from 0 to 9 in the ini file. You may need to modify the values for your purposes according to your performance. Make sure you use a linear change between levels.


ENB Support:
You can change enb settings in these levels too. Usage: ENB>filename:category:parameter=value. For example if you want to have SunRays set to true in levels 0-4 but you want to disable them in levels 5-9, you enter:
  • ENB>enbseries.ini:EFFECT:EnableSunRays=true    under each level 0-4
  • ENB>enbseries.ini:EFFECT:EnableSunRays=false   under each level 5-9


Console Commands:
You can run console commands in the levels too. You enter your command like this:
  • CONSOLE>command


Toggle Commands:
You can use toggle console commands in the levels too. Only use these on one level so it will be off for levels 0 to # and on for levels # to 9. You enter them like this:
  • TOGGLE>command   for example TOGGLE>tg  Note: Don't use "TOGGLE>tg" at the same time with GrassChange=1


Mod comes with a fomod installer so you can choose one of the different configs for your headset refresh rate and mod intensity.


This mod comes with another ini file: VRFpsStabilizerLocation.ini

In this ini file, Locations are defined under Best, Good, Default, Bad, Worst categories. When player changes locations, INI/ENB/Console settings are applied automatically for that area. This feature can be used alongside OpenComposite and since it doesn't apply LOD settings constantly, you can use it alongside EngineFixesVR's TreeLODReferenceCaching setting.


You can send me your config files if you make any good ones.


CREDITS
  • Cangar for testing.
  • Rallyeator for testing.


FUTURE

  • Let me know if you have any other ideas for the future.