Trees LOD and Objects LOD generator for Skyrim
Installed a mod that moves or changes trees but they remain unchanged when far way, or you can’t see new farm houses from a new shiney villages overhaul when a top of the mountain? Then you need this tool.
Make sure to install TES5LODGen outside of Program files folder, somewhere with write access rights, or run as Administrator.
Run TES5LODGen.exe, wait for it to load your plugins, then select worldspaces to generate LOD (by default only Tamriel worldspace is selected), and click Generate. Wait for it to complete, you can watch progress and check possible errors in messages list. When finished, close the program manually.
Mod organizer users: Install TES5LODGen in a directory of your choice. Add TES5LODGen.exe to MO executable list by clicking the gears button and then browse for TES5LODGen.exe to fill the “Binary” field. Add a dedicated output directory by adding -o:”C:\TES5LODGenOutput” to the “Arguments” field. Once LOD generation has completed copy/move files from the dedicated output directory to the game data directory or into a custom mod (recommended for load order management) in MO.
TES5LODGen has several options when building LOD, please read technical details below to understand what they do.
How LOD works in Skyrim
LOD in general is what you see in the distance, beyond the infamous uGridsToLoad setting value. It can be increased to lessen popins of objects and there are mods to help with stability when doing so, but there is still a memory/CPU limit of how much you can force the game to render environment in full quality. Skyrim uses static LOD which means that LOD information is prebuilt and doesn’t change when mods modify objects in game. Some mods include updated LOD files to address this issue, but they are usually incompatible with each other and require compatibility patches of their own. Those LOD files are generated with Creation Kit which is quite complex procedure unaccessible by majority of users. TES5LODGen tries to address this issue by providing a simple one-click automated LOD files generation for the current load order of user, taking in account all mods that have content visible from distance.
Skyrim LOD is divided into 3 parts:
Terrain (landscape) LOD – the shape of landscape in the distance (files in Meshes\Terrain\\.*.*.*.BTR and Textures\Terrain\\.*.*.*.DDS where is the name of worldspace). Those files are rarely updated since mods almost never change terrain shape or changes are minimal and would be hardly noticable when far away. Terrain LOD files are generated by OScape, TES5LODGen doesn’t create them.
Objects LOD – any static object except trees: houses, forts, rocks, mountain slabs, castles, etc (files in Meshes\Terrain\\Objects\.*.*.*.BTO and Textures\Terrain\\Objects\*.DDS). Both BTR files for terrain LOD and BTO for objects are actually large nif macromeshes that can be opened with NifScope (change their extenson to nif or just associate NifScope with those extensions in your system). TES5LODGen generates BTO files from separate small lod meshes for each static object in game that have them, they are attached to statics in Creation Kit when editing static forms.
Trees LOD – covers trees only (files in Meshes\Terrain\\Trees\.*.*.*.BTT and .LST, and a single atlas texture file Textures\Terrain\\Trees\TreeLod.dds). Unlike previous LODs, BTT files are not meshes, but just a binary data that tells the game what tree type, where to display, and with what scale. File with LST extension defines tree types: width and height in game, and position of a particular tree LOD image on atlas texture. “Atlas” means that there are several separate images located inside a single image. Trees in the distance are just flat images of trees displayed from atlas texture. The usage of single texture in Skyrim for all trees is performace friendly, but unfortunately very problematic for mods that change tree models or add new ones. To update LOD images, even if it is only a single tree, the mod must include the whole atlas texture along with images for all other trees even if they are unchanged.
Conflict between trees LOD atlas texture and LST file from different mods is the main reason of cut trees in the distance – LST file points to the areas in the atlas texture which are invalid for atlas texture from another mod which changes position of individual tree images on it. This can be addressed by creating LOD compatibillity patches, but the amount of required patches increases with the number of tree changing mods, and there are quite a few of them already.
TES5LODGen tries to solve that problem by generating BTT files, LST file and atlas texture together from separate LOD images of each tree (billboards) used in a worldspace. Billboards for vanilla trees and most popular mods are provided in downloads (or included with tree mods), install them in the same order as tree mods are installed, so they properly overwrite each other. Consult with mod authors if their mods are packaged with billboards for TES5LODGen. You MUST install at least billboards for vanilla Skyrim trees, otherwise generation of trees LOD won’t work properly.
To mod authors – this link provides information on how billboards work in TES5LODGen. If you released a version of your mod with included billboards, or just simply don’t want your mod to work with TES5LODGen for some reason, please PM or leave a comment to remove billboards for your mod from downloads. They are provided only for users convinience.
TES5LODGen generates LOD only for worldspaces that have existing file LODSettings\.lod, it is created when building terrain LOD either in OScape or in CK. It containes the cell coordinates of the south west corner of worldspace and they are needed to properly name generated LOD files to align with terrain LOD files.
You can select individually what LOD types to generate, but in most common uses both should be checked.
Objects LOD: Build Atlas – when building objects LOD, all separate textures for objects will be combined on a single atlas texture for performance.
Objects LOD: Atlas size – size of generated atlas texture in pixels. If all used textures won’t fit, several atlases will be made with 00, 01, 02, … suffixes.
Objects LOD: Max texture size – the maximum size of texture in pixels to be included on atlas, larger ones will remain separate and generated LOD files will use them directly.
Objects LOD: UV Range – the maximum UV sets range for texture to be included on atlas, since textures on atlas can’t be tiled. Textures will larger UVs will remain separate and generated LOD files will use them directly.
Objects LOD: No vertex colors / No tangents – do not include vertex colors or tangents in generated LOD files, reduces the size of LOD files and less demanding memory wise, at the expense of quality. Only recommended for custom worldspaces without snow shader in LOD.
Trees LOD: LOD brightness – adjust the brightness of generated trees LOD atlas texture. Positive – brighter, negative – darker. For example some ENB configs require darker tree LODs to look properly.
Trees LOD: Generate as Objects – trees will be generated as Objects LOD if lod meshes are present. Level 0 uses the same named mesh as the full tree model but with _lod_0.nif suffix, Level 1 uses _lod_1.nif. If meshes are missing billboards will be used instead on a flat mesh “Edit Scripts\LODGen_flat_lod.nif”. Empty *.lst file will be created to disable original Tree LOD if it exists in BSA archives.
Uninstalling generated LOD
Just delete files mentioned above for objects and trees LOD, no other changes are made during LOD generation.
Please check DynDoLOD by Sheson for more options when building LOD. It uses the same LODGen process as TES5LODGen, but provides extra meshes for more detailed LOD, dynamic scripted LOD patch for animated meshes, and gives more general control of what and how to include in LOD.