In addition to the default LOD meshes and textures this option adds a season identifier to the LOD meshes and textures filenames.
This feature is for powerofthrees's Seasons Of Skyrim which does the actual switching of assets for the different seasons in the game.
This feature is new and is expected to have bugs or limitations (Grass LOD relies on No Grass In Objects grass cache which not yet supports different seasons). Report issues and discuss on the official DynDOLOD support forum.
In addition to DynDOLOD generating object, tree and dynamic LOD for seasons, also use xLODGen to generate terrain LOD meshes and textures for the different seasons. Generate and install terrain LOD before generating with DynDOLOD.
Use the Seasons checkbox in the advanced mode of DynDOLOD to enable the feature. The checkbox is only available if swap data for a season has been found and loaded successfully.
Once the Seasons checkbox is checked, verify the worldspaces selection list top left for a [Seasons] being appended to an entry. For example Tamriel (Skyrim) - Skyrim esm [Seasons]. Double click an entry to enable or disable the [Seasons] status.
If the file ..\Seasons of Skyrim\SKSE\Plugins\po3_SeasonsOfSkyrim.ini exists in the load order, its Worldspace settings for every season will be used to automatically pre-select which worldspaces will have LOD files with [Seasons] identifiers generated. However, DynDOLOD will always generate all selected seasons for all selected worldspaces with the [Seasons] identifier.
DynDOLOD respects the po3_SeasonsOfSkyrim.ini the true/false setting for base record types (Activators, Furniture, Movable Statics, Statics or Trees) for each season in po3_SeasonsOfSkyrim.in. E.g if for example Movable Statics for a season is set to false, then those objects will have default LOD for that season. If such a setting is changed, LOD will need to be generated from scratch to take affect.
Use the Default button to reset the current options in case they have been loaded from a previous generation session.
Select the desired and available seasons in the drop down menu. A season in the drop down menu only becomes available if swap data for the season has been loaded successfully. The Default season should always be generated. It can only be deselected in expert mode.
Use the Snow checkbox to apply the snow LOD shaders to the non swapped objects in object LOD for the season WIN. Use this for
Season Type=1 in ..\Seasons of Skyrim\SKSE\Plugins\po3_SeasonsOfSkyrim.ini.
DynDOLOD reads and uses the snow shader blacklist defined in .\Data\Seasons\*_[NOSNOW|SNOW].ini to control application of the snow LOD shader.
By default the object LOD meshes for the default season of a worldspace are generated first, then the object LOD meshes for the different seasons. If there are no differences in the area an object LOD mesh covers, then it is copied from the default season object LOD mesh. Set
SeasonsCopy=0 in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini so all object LOD meshes are generated and none are copied.
By default the object LOD for all seasons (including the default) use the same object LOD atlas textures. Set
SeasonsCombineAtlas=0 in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini so every season uses its own set of object LOD atlas textures.
The feature requires season swap files in ..\Data\Seasons\*[SPR|SUM|AUT|WIN].ini.
The format for the swaps is
[Original base record]|[Swapped Base Record] separated by the pipe symbol (vertical line or bar).
The original and swap base records can be either be defined as
0x[Hex Form ID]~[Plugin FileName] or
The form IDs or EditorIDs need to match base records used by references in the current load order.
For each season LOD meshes and texture filenames will be changed to *.[SPR|SUM|AUT|WIN].[BTO|BTT|LST|DDS].
For dynamic LOD ..\Seasons\DynDOLOD_[SPR|SUM|AUT|WIN].INI will be created in the DynDOLOD output folder so that dynamic LOD objects switch with the seasons as well.
Grass and Grass LOD
While season switching does not support switching grass cache files (just use the default setting letting the engine create grass for each cell at load), grass LOD generation does support reading seasonal grass cache files.
A season can be forced with the
Season Type INI setting in ..\Seasons of Skyrim\SKSE\Plugins\po3_SeasonsOfSkyrim.ini.
After generating grass cache for a forced season, rename all *.CGID files to *.[SPR|SUM|AUT|WIN].CGID. For example on the Windows command prompt with
rename *.cgid *.WIN.cgid before moving the files from the MO2 Overwrite folder to the mod folder that will contain all grass cache files. Repeat for every season. In the end there should be default grass cache files plus the grass caches for the 4 seasons.
When LODGen generates object LOD, it will check if matching seasonal grass cache files exists and use them, otherwise the normal grass cache files will be used.
This is experimental and not well tested. Consult with the official DynDOLOD support forum in case of questions or problems.
If a map mod that ships with special terrain LOD or object LOD file is used, those files need to be manually copied to the seasonal filenames *.[SPR|SUM|AUT|WIN].[BTR|BTO], so that a version exits for every season. For example ..Data\Meshes\Terrain\Tamriel\Objects\Tamriel.32.0.0.WIN.BTO.
See Maps and Map Mods for more information.
Out of Memory errors
Generating 4 seasons in addition to the default season can spawn many long running LODGen processes at the same time which all can require several GB of memory.
In case this creates out of memory errors and/or high CPU usage, the number of simultaneously running LODGen processes per worldspace can be limited by setting MaxLODGenPerWorldspace=x in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini.
In case this creates out of memory errors and/or high CPU usage, the number of total simultaneously running LODGen processes can be limited by setting MaxLODGen=x in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini.
Use the LODGenThreadSplit setting ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_[GAME MODE].ini to control the number of main threads in case a LODGen process consumes large amounts of memory.