Quick answer: Set InstanceStartCullDistance & InstanceEndCullDistance with hysteresis (start cull ~3000, end cull ~5000). Avoids per-frame flicker at fixed boundary.

A grass field uses HISM with cull distance. At a specific camera distance, individual instances flicker on/off as the camera nudges. Cull cutoff is binary at one distance.

Hysteresis Cull Distances

HISMComponent->InstanceStartCullDistance = 3000;   // fade-out begins
HISMComponent->InstanceEndCullDistance = 5000;     // fully invisible

Instances smoothly fade between these distances. No sharp pop at one threshold.

Per-Instance Bounds

HISM uses the mesh’s bounds for culling. If bounds are too tight, instances at boundary flicker. Expand bounds:

BodyInstance.UpdateBoundsBodySetup();

Or in the static mesh asset, set Custom Bounds Override slightly larger than visual extent.

LOD Per Instance

For HISM, LOD changes per instance based on distance. Sharp LOD transitions look like flicker. Enable dithered LOD transitions:

r.LODFadeTime 0.5   // 500ms cross-fade

Verifying

Walk past grass field. Smooth fade-out at distance. No instances popping in/out individually. GPU cost reasonable.

“Hysteresis (two thresholds) replaces flicker (one threshold). Cheap fix, big perceptual win.”

For VR especially, any flicker is nauseating. Cull distances should be generous and transitions softened.