SkyrimSE:Grass LOD Guide

From Step Mods | Change The Game
Delta c.png

Skyrim Special Edition Grass LOD Guide

A guide to grass LOD for Skyrim Special Edition

by: The Step Team

Guide scope

This guide intends to explain the process by which grass LOD can be generated via the grass cache files for Skyrim Special Edition. It may include some general recommendations for optimizing appearance and performance, as well as technical information that may prove useful for troubleshooting.

No Grass In Objects

No Grass In Objects is required to create the grass cache files necessary to generate the LOD for grass. This section will cover the different settings and make suggestions on usage.

DynDOLOD

DynDOLOD is required to generate grass billboards and grass LOD. This section will cover the different settings and make suggestions on usage.

Grass cache files

Info-Logo.png
NOTE:
The information presented here is technical information that is not necessary to understand to successfully use the grass cache and grass LODs. It is provided for informative purposes only.

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.

Naming convention

Grass cache files are named like this: <worldspace>x<x cell coordinates padded to 4 characters with 0>y<y cell coordinates padded to 4 characters with 0>.gid. So if a grass cache file is named tamrielx-047y0038.gid, that means it applies to Tamriel <-47, 38>. No Grass In Objects renames the file extension to .cgid in order to bypass the erroneous grass cache files in Skyrim - Misc.bsa.

Hex file structure

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.

01 00 00 00
18 00 00 00
6c 61 6e 64 73 63 61 70 65 5c 47 72 61 73 73 5c 49 76 79 2e 6e 69 66
00 00 00 5c 43 d0 bd d1 8b 00 74
01 01 00
00 00 00 00

01 00 00 00
This is the start of the file. The initial byte (01) tells the hexadecimal number of grass textures/meshes within the cell (1 in this case).

18 00 00 00
The byte at position 4 (18) tells the hexadecimal number of characters that make up the string identifying the grass mesh file location. It always includes an extra byte in its calculation. 18 translates to 24 bytes, so the string will be 23 bytes long.

6c 61 6e 64 73 63 61 70 65 5c 47 72 61 73 73 5c 49 76 79 2e 6e 69 66
This is the string identifying the grass mesh file location (landscape\Grass\Ivy.nif). As noted above, the string is 23 bytes long.

00 00 00 5c 43 d0 bd d1 8b 00 74
This seems to be unique information that relates in some way to describing the grass. It is currently unknown what it means specifically, but it seems to be tied somehow to the name and order within the file.

01 01 00
These bytes are iterated near the beginning of each grass texture/mesh identification prior to the data that tells where to place grass. They seem to serve as a kind of padding.

00 00 00 00
The first byte here needs to be 00 if there is no grass for the mesh/texture. Any other value seems to indicate that there is data following these bytes that tells the game where to place the grass. If, for example, you had it set to 01 with no data following, it will crash the game.