Large References

Left large reference off. Right large references grid size 11.

The large reference grid is a feature of Skyrim Special Edition and Skyrim VR to show a pre-select list of full models outside the loaded exterior cells.

This pushes the distance of the transition from LOD to full model further away from the player.

For dynamic LOD to work correctly with the large reference system, the Large References Fix setting in the DynDOLOD SkyUI MCM Main page needs to be checked or unchecked depending on the large reference distance setting. See DynDOLOD SkyUI MCM for details.

As explained below, the large reference system requires records in ESM flagged plugins. Hence a DynDOLOD.esm is required in addition to the DynDOLOD.esp.

In case the large reference system is not used and stays disabled for good, a single DynDOLOD.esp can be generated. Set IgnoreLargeReferences=1 in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_SSE.ini before generating LOD from scratch.

Large Reference Bugs

TL;DR: The large reference system is FUBAR if used with mods that are making (a lot of) changes to large references. Test the experimental large reference bugs workarounds.

The quick run down:

  • Large references bugs exist in the vanilla Skyrim Special Edition, Skyrim Anniversary Edition and Skyrim VR if the large reference system is used.
  • In addition they are mostly caused by non master plugins overwriting large reference records. Proficient mod authors avoid causing the bugs.
  • DynDOLOD reports plugins and records triggering the bugs since 2016.
  • The bugs become more obvious and prevalent the more plugins are installed that are causing them.
  • DynDOLOD always tries to fix them as much as possible. The large reference bugs workarounds are finally a simple fix-it-all.

Large reference bugs describe the issue that the object LOD for all large references of a cell is not disabled when the full models for the large references are loaded. Their LOD stays enabled as usual until the active exterior cells attach and all LOD is disabled. Again, the entire cell is affected, regardless of the model used by the large reference or its type. Another result of the large reference bugs can be that the full model does not load at all anymore.

In the "best" case scenario the full model and LOD do not occupy the same 3D space. If the LOD model is larger then LOD just seems to transition to the full model as close to the player as ever - the increased resource usage and performance requirements of these full models being loaded further are wasted for no visual gain. If the LOD model is smaller, then everything appears to be working normally (this is the case for a handful vanilla bugs) - LOD not unloading further away when it could just wastes a bit of performance.

In the worst case scenario the full model and LOD model occupy the same 3D space very closely and thus their textures start to flicker (z-fight).

In case large reference data is not properly generated it can cause the full model to not be visible at all.

On some occasions, the large reference does not behave like a large reference anymore, e.g. the full model loads/unloads at the usual uGridsToLoad distance, while the object LOD for it loads/unloads at the uLargeRefLODGridSize distance. That means, between those two distances there is neither a full model nor a LOD model loaded, the object seems to disappear for a while.

Below is a (incomplete) list of common conditions that trigger large reference bugs:

  • A large reference or its enable parent that has the Initially Disabled flag can trigger the bugs. The type of plugin does not matter. It is the cause for the example shown in the video above - the problematic large reference is defined in Skyrim.esm. DynDOLOD can create workarounds for some occurrences, including the vanilla one shown in the video. For all others, a warning message Initially disabled large reference is written to the message log.
  • A plugin that is not flagged as ESM overwrites a large reference record always triggers the bugs. The overwritten large reference itself will not load past the active cells anymore, while all other large references in the same cell will still load normally and flicker because their LOD is now not unloaded anymore. It is the cause for the example shown video below - one or more large references are being overwritten by a ESP. A warning message Overwritten large reference is written to the message log.
  • A plugin initially made with old form version < 44 overwrites a MSTT base records with form version 44 that sets the hidden (in CK) 0x4 flag. This happen when plugins made for Skyrim are not properly converted to Skyrim Special Edition. Such base records are automatically updated by DynDOLOD. A log message notice Fixed missing MSTT large reference flag DATA - Flags 0x4 is written to the message log.
  • The base record not being of the type STAT or MSTT. For example if the base record is changed by a plugin or base object swapper for a large reference, even if the plugin is an ESM. A warning message Base Record Type Not STAT or MSTT For Large Reference is written to the message log.

As mentioned in the above list, DynDOLOD tries to fix a couple cases automatically. However the most common problem that large references are overwritten by plugins can not be fixed without modifying the actual plugin triggering the large reference bugs:

A solution is to flag the plugin as ESM. However, that is not always trivial to do with larger mods or because of the required priority of plugins and patches. In those cases creating a dedicated ESM+ESL flagged plugin containing the overwrites only while removing these overwrites from the ESP might be a solution.

Alternatively, all large references of an affected cell could be moved underground out of view and new references replacing them could be added. These new reference wouldn't be large references. This is also a solution for large reference bugs triggered by the Initially Disabled flag in case it can not be removed.

As is apparent from above explanations, working around the bug is not that simple, especially for users. The quickest solution to not have texture flickering caused by large references bugs is to simply turn the large reference system off as explained below.

Settings

Skyrim Special Edition Launcher - Large Object Distance Slider

The size of the large reference grid can be changed in the game launcher Options / Advanced / View Distance / Large Object Distance or in the Prefs INI.

The Large Object Distance slider settings are 5, 7, 9, 11 of the INI setting explained below. If the slider is moved to the very left, the large reference system is turned off.

[General]
uLargeRefLODGridSize=odd number of cells

For Skyrim VR the setting is added in the [VR] section in the Skyrim.ini.

A setting of 5 (if it matches the uGridsToLoad value) turns the large reference system off.

Technical Details

A large reference is a reference that has an entry in the RNAM list on the worldspace record in the same ESM flagged master plugin that adds the reference.

The system only works for references with base records of the type STAT and MSTT.

MSTT base records require a hidden flag (0x4) to be set.

The object bounds volume on the base record and scale of the reference must be larger than the fLargeRefMinSize global.