Skyrim Se Grass Mods
This is meant to give a condensed walkthrough for configuring grass LOD in SSE, rendering full grass only up to the uGridsToLoad distance (the fully loaded portion around the player character) with grass LOD stretching out from there up to the LOD4 distance (controlled by [TerrainManager] fBlockLevel0Distance INI setting). Grass LOD can tax performance on some systems and may carry as much as a 20fps penalty.
skyrim se grass mods
All of the following are optional, but taking a few minutes to implement them all will potentially cut grass pregeneration time by up to half the time it would take otherwise (cutting something like 10-60 minutes off the total, depending on the mod list and the system).
ENB adds an extra 10-30 seconds to game load time. During grass pregeneration, the game is loaded by the pregeneration process and usually crashes multiple times while it executes. This is normal, and the governing process gracefully restarts the game without user input. But having ENB enabled can add several minutes to the overall pregeneration time.
Lowering the game resolution while pregenerating grass is recommended to speed up the process a bit more, which can take 25 minutes to 3 hours otherwise (mileage may vary). Set game resolution to 800x600. Use SSE Display Tweaks if installed. Otherwise set this using BethINI, or set directly in skyrimprefs.ini.
This process can require 25 minutes to 1 hour to complete (longer if the previous step isn't done), depending on hardware and installed mods. The game will typically crash during grass generation. This is normal. There is no need to monitor or click 'OK' when restarts occur. Grab some lunch.
Use the most updated settings recommended for LOD generation by consulting the Step Guide LODGen instructions. This process applies to almost every SSE mod list, but do ignore any references to specific mods, patches, or mesh rules that may not apply.
No Grass In Objects is required to create the grass cache files necessary to generate the LOD for grass under SSE 1.5.97. NGIO should be disabled if using the grass cache in AE. In SSE 1.5.97, it also can stop grass from growing inside rocks and other objects, and it can increase the grass draw distance beyond the loaded cells.
This feature is the original feature that made this tool popular, and it is the reason for the name of the mod. RayCast is recommended to be enabled to utilize this feature to eliminate grass being drawn through stones and other objects that it should not grow through. RayCastIgnoreForms setting can be used to exclude base forms that you want grass to still grow through.
Super dense grass settings allow the game to produce significantly more grass without changing other settings. It is recommended not to use this feature if you can help it. Instead, it is recommended to decrease OverwriteMinGrassSize to produce dense grass if at all possible, or use a grass mod that is setup to allow for very dense grass in a more optimal manner.
ExtendGrassCount fixes an issue where if you have very dense grass, especially using SuperDenseGrass, grass will go over the 64kb gpu buffer limit and not be created. This fix checks after each patch of grass, that if 32kb is reached, it creates a separate mesh. Under most circumstances, this is only necessary if you set very large grass densities. It can significantly increase grass cache generation time, so it is recommended to be disabled if possible.
GlobalGrassScale allows you to set a multiplier to increase the size of grass. This can be raised to make grass taller, which may allow you to lower your grass density in OverwriteMinGrassSize to increase performance with similar visuals.
OnlyLoadFromCache means that the game will only display grass for which it has generated grass cache files. If you find a location that is missing grass, disabling this and loading up the location should cause the game to generate the necessary grass cache file for the location. Alternatively, if you are finding an issue with floating grass or other problems with the grass in the cell, you can delete the relevant grass cache file and regenerate it by setting this to False and loading the area. For normal gameplay, set this to True.
SkipPregenerateWorldSpaces allows you to set worldspaces where it will not attempt to make grass cache files. Conversely, OnlyPregenerateWorldSpaces can be used to limit grass cache generation to a specific set of worldspaces. Worldspaces with Grass SSEEdit Script for No Grass In Objects can be used to populate OnlyPregenerateWorldSpaces based on your load order.
In order to improve performance, it is highly recommended to pregenerate the grass cache. Mod Organizer users can simply use the provided plugin, which will handle this automatically. Other users will need to create a PrecacheGrass.txt file in the game directory and launch the game. Precaching can take hours in some cases, especially if using grass beyond the uGridsToLoad. Crashing during this operation is expected and normal behavior; however, if it continues to crash repeatedly at a location, a problem likely exists in the modded setup that will cause a crash at that area and the precaching process will not be able to complete. The user will have to identify and fix the problem before precaching can be successfully performed.
After the grass cache pregeneration process is finished, the game will display an error message that says the process completed successfully. Grass cache files will be created in a grass folder either in Overwrite for Mod Organizer users or in Data. Mod Organizer users can create a mod from the output and enable it to keep it organized. If, after the process is complete, there are no cache files, something likely is wrong with the settings utilized.
TexGen is included within the DynDOLOD installation and must be used to generate the grass LOD billboards. This can be done by simply ticking the Grass option in the TexGen GUI. The settings for "Direct" (light from the sun) and "Ambient" (general lighting) can be adjusted to affect the lighting on the rendered grass from which the flat billboard texture is created. The recommended settings are indicated below. Use the settings corresponding to rendered game resolution: 1080p = HD, 1440p = QHD, 2160p = 4k
DynDOLOD allows changing grass brightness settings for the object LOD texture atlas using brightness modifiers for the bottom and top of the textures in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_SSE.ini. The grass brightness modifiers can be modified to tint grass LOD to match the loaded grass in certain situations where post-processing mods like ENB or ReShade might be affecting color. RGB modifiers allow control of tints in both the top and base of the grass meshes to enhance the 3D appearance of distant grass. Adjust all values equally by a constant (0.05-0.10) to effectively alter brightness, and adjust each independently to control tint.
In most situations, it is suggested to control brightness using TexGen Ambient/Direct GUI settings and setting DynDOLOD's grass tints to a uniform 1.000 to keep things simple and repeatable. Barring specific post-processing effects impacting color in certain presets, this is the best way to match LOD grass to full grass whether or not using ENB Complex Grass.
To enable grass LOD generation, checkmark Grass LOD in the Expert GUI (to see the Expert GUI, change Expert=1 in ..\DynDOLOD\Edit Scripts\DynDOLOD\DynDOLOD_SSE.ini). The grass cache pregenerated by using NGIO as explained above is necessary for DynDOLOD to know where to place grass. DynDOLOD will analyze the grass cache and create LOD for it in object LOD level 4.
The Density setting works opposite the way OverwriteMinGrassSize (NGIO's iMinGrassSize equivalent) does to set the grass density of grass LODs. For instance, the higher OverwriteMinGrassSize is set, the less dense the grass is and the more performance friendly. Conversely, the lower Density for Grass LOD is set, the less dense the grass LOD is and the more performance friendly. Obviously, keeping this as low as possible is best for maximizing performance. In many cases, using a setting as low as 35 yields very good results at significant performance savings.
The Mode setting should correspond to the NGIO DynDOLODGrassMode setting. Mode 1 will cause grass LOD to start after uGridsToLoad. Mode 2 flags grass as large reference, so it will only show grass LOD after uLargeRefLODGridSize, and should be paired with DynDOLODGrassMode=2. It is much more performance friendly to only render full grass to uGridsToLoad distance, and since we will have grass in LODs, grass will still stretch as far as we can see. Therefore, it is recommended to leave Mode set to 1 and only render full grass up to the uGridsToLoad distance by using NGIO DynDOLODGrassMode=1.
Grass cache files are actually an unused feature of Skyrim, Skyrim Special Edition, and Fallout 4. Bethesda did have it working in original Skyrim using pre-generated grass cache files located in Skyrim - Misc.bsa, but they turned it off by default (INI setting bAllowLoadGrass:Grass) and instead forced the game to create grass every time the user loads the cell (INI setting bAllowCreateGrass:Grass). Grass cache can be generated via the CreateGrassAt console command presumably. Alternately, the grass cache can be generated by setting bGenerateGrassDataFiles:Grass to 1 in Skyrim.ini, which will create the grass cache files within a grass folder within the data directory.
Grass cache files are named like this: xy.gid. So if a grass cache file is named tamrielx-047y0038.gid, that means it applies to Tamriel . No Grass In Objects renames the file extension to .cgid in order to bypass the erroneous grass cache files in Skyrim - Misc.bsa.
Below is a hex file example of a grass cache file that has been stripped of the data required to populate the grass throughout the cell (essentially, it is a blank grass cache file in that it will not show any grass, despite specifying a grass. 350c69d7ab