Large Reference Bugs Workarounds

DynDOLOD Advanced Options Window

DynDOLOD includes experimental workarounds to counter texture flicker caused by large reference bugs directly in the game that so far could not be addressed while generating the LOD patch. There should be no more need for manual workarounds like flagging plugins as ESM etc. Simply install plugins known to contain overwritten large references, initially disabled large reference etc. and then generate LOD as usual.

For the Large reference bugs workarounds check box and options to become available on the advanced mode window, the DynDOLOD DLL NG and Scripts must be installed and every plugin containing deleted references needs to be cleaned. Ignore misinformation that there are no vanilla deleted large references, cleaning any plugins is not needed, does not do anything or causes problems. While ITMs are irrelevant in this context, see There are no intentional ITMs. See the Prerequisites section of the Generation Instructions for more.

When DynDOLOD is started, a log message will notify if the large reference bugs workarounds are enabled, for example:

Large reference bugs workarounds: enabled (DynDOLOD.DLL: NG, Scripts: NG, Deleted references: no)

In case a deleted large reference is found and the log and the Large reference bugs workarounds requirements not met error message report Deleted references: yes, the message will contain a line that mentions the plugin that requires cleaning like this:

Deleted reference Update.esm [REFR:000C8701] (places TreeDeadShrub [TREE:000A731C] in GRUP Cell Temporary Children of FrostflowLighthouseExterior01 [CELL:00008F29] (in Tamriel "Skyrim" [WRLD:0000003C] at 15,21))>

The example message above reports that Update.esm contains at least one deleted reference. It needs to be cleaned with xEdit.

NG means Next Generation and means the DynDOLOD DLL NG and Scripts work for Skyrim SE/Skyrim AE 1.5.x/1.6.x and Skyrim VR 1.4.15. This is all thanks to everyone involved around CommonLib/CommonLibSSE-NG and SkyrimSE RE.

Requirements

DynDOLOD plugins need to be generated with DynDOLOD 3 Alpha-129 or newer. Always use the latest version.

The papyrus scripts need to overwrite DynDOLOD Resources SE.

PapyrusUtil can still be installed for other mods. It will not be used as long as the papyrus scripts in DynDOLOD Resources are being overwritten by the DynDOLOD NG DLL papyrus scripts. Do not install older versions of DynDOLOD DLL or their papyrus scripts.

Every plugin containing deleted references needs to be cleaned. See the Prerequisites section of the Generation Instructions for more.

Settings

Check the Large reference bugs workarounds checkbox to enable the workarounds.

This will generate DynDOLOD plugins and data files with the version 3.0 (3.07 for DynDOLOD DLL NG and Scripts Alpha-7) instead of version 2.45. Since the large reference bugs workarounds require the use of DynDOLOD DLL NG and Scripts, no data files for PapyrusUtil are generated and it is not possible to switch.

The advanced mode has a new checkbox Downgrade FarGrid references to NearGrid. Since that setting is necessary without the workarounds, the checkbox is disabled and checked by default in case the Large reference bugs workarounds checkbox is not checked.

With the workarounds enabled, it is now possible again to have non large reference show in the FarGrid. Uncheck the box for better visuals as originally intended by the mesh mask rules.

Child worlds that use the parent world for LOD (e.g. the walled cities) do not properly duplicate parent world large references for the areas outside the city walls. Overlapping childworld cells that do not have any large references do not unload object LOD for large references. This can either cause the typical large reference bugs (with grass LOD for mode 2 example) or cell wide gabs devoid of objects. For proper visuals, check the Parent > child checkbox. This can mean a noticeable performance impact when in childworlds, as many more full models are now properly shown past the walls. The DynDOLOD SkyU MCM Main Page offers a checkbox to automatically disable large references in childworlds. See Child/Parent Worldspace Copies for more.

In case Ultra is checked to generate ultra tree LOD, the Large checkbox can be checked to make the full model trees large references - if they are added by ESM flagged plugins. Use the TreeLargeRefSize setting in the ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini to the size threshold, e.g. if smaller trees should be large references, lower the value. Also, references that are overwritten by non ESM flagged plugins, have enable parents or are initially disabled are skipped as well for now. In case the tree base records have locational swaps, like cells, locations or regions, they are skipped as well.

Testing

DynDOLOD 3 is still in an alpha test and these workarounds are experimental. Keep a backup of the save.

For testing purposes it is suggested to not do any manual workarounds like flagging plugins as ESM etc. Simply install plugins known to contain overwritten large references, initially disabled large reference etc. and then generate LOD as usual.

Instead of the typical warning messages like overwritten large reference or initially disabled large reference, the log will print a line for each affected cell.

Use the cell coordinates from the log messages to test if obvious texture flicker caused by large reference bugs stops happening and there are no side-effects. After loading the large references in the distance, it can take a brief moment for the texture flicker to stop. It depends on the number of large references in that cell.

Remember, the large reference bugs are not always obvious as the texture flickers depends on the triangles of the full model and LOD model to very closely occupy the same 3D space, which is not always the case.

In case texture flicker still happens, test with the large reference system turned off (uLargeRefLODGridSize=5) to make sure the issue is large reference related.

Enable and check the c:\Users\[USERNAME]\Documents\My Games\Skyrim Special Edition\Logs\Script\Papyrus.0.log for error messages from the SHESON_DynDOLOD_* scripts in case anything does not work or unforeseen things happen. To enable papyrus logging add/edit these line in the Skyrim.ini
[Papyrus]
bEnableLogging=1
bEnableTrace=1
bLoadDebugInformation = 1

To test if trees are large references, open console and toggle LOD off/on with tll. See How LOD works and Large References.

Use the official DynDOLOD support forum to report problems and to provide feedback.

If there are any problems with the DynDOLOD DLL NG and Scripts in the game, check c:\Users\[USERNAME]\Documents\My Games\[Skyrim Special Edition|Skyrim VR]\SKSE\DynDOLOD.log for hints. Upload this log with the other logs when making a post to the official DynDOLOD support forum.

If not sure if something is related to the large references workarounds, compare same load order with LOD generated without the workarounds. Make a backup of the log and debug from the generation with the workarounds enabled in order to be able to provide both sets of logs including the papyrus log(s) when reporting to the official DynDOLOD support forum.