Quick answer: Either Build Lighting (Lighting Quality: Production), or enable Lumen Global Illumination. On the foliage type, enable Affect Distance Field Lighting.
You paint procedural grass, the editor shows it black. Static lighting wasn’t built and Lumen isn’t enabled. HISMs ride on top of the lighting system — they don’t bring their own.
The Symptom
Foliage instances render at zero brightness. Or built lighting only covers some clusters. Cluster boundaries flicker.
The Fix
Project Settings → Rendering:
Dynamic Global Illumination Method: Lumen
Reflection Method: Lumen
Generate Mesh Distance Fields: true
Foliage Type asset (FoliageType_*):
Affect Distance Field Lighting: true
Cast Shadow: true
Cast Dynamic Shadow: true
Light Map Resolution: 32 // if using static
Build menu → Build Lighting Only // if not using Lumen
Lumen handles foliage GI without a build step but needs the asset whitelisted into Distance Field. For static lighting, lightmap resolution per instance and a build pass.
Performance Notes
Hundreds of thousands of instances across HISMs are routine; pick LOD distances per foliage type and disable Cast Shadow on small grass blades to save shadow-pass cost.
Verifying
Lit View: foliage shades correctly. Show → Visualize → Distance Fields includes the asset silhouette. Lumen Scene visualization shows instances contributing.
“Lumen on, distance field on. Or build static. Foliage gets light.”
Related Issues
For BP replication condition, see replication. For Niagara collision event, see collision event.
Lumen or static. Distance field on. Foliage lit.