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.