Are vertices of each LOD version always loaded into VRAM?
I know many game engines have a LOD feature for mesh vertices and textures.
I'm just wondering if all vertices and textures of all(each) LOD versions are always loaded in VRAM or are they loaded at the time each LOD version is selected.
1 Answer
Many game engines have texture streaming, which means that not all mip levels of each texture are loaded at all times. The game engine will track which textures are in view and how close up they are seen, and will dynamically load and unload mip levels in an attempt to provide enough detail for the current view, while staying within a fixed VRAM budget.
This is done because typically with AAA game content on a consumer GPU, there is not enough VRAM to load all mips of all textures at once. Usually, the highest few mip levels (low resolutions) of all textures are loaded all the time, and the lower mips (high resolutions) are streamed.
Some game engines also have mesh LOD streaming, though it is less common. Mesh data (vertices and indices) typically takes up much less VRAM than textures, so there is less impetus to do mesh LOD streaming. Still, with highly detailed meshes, the most detailed LODs can be a substantial size and it can make sense to stream those. This can be done analogously to how texture mip levels are streamed.
There is also UE5 Nanite which uses a cluster-based LOD system and streams trees of clusters instead of whole mesh LODs.