PCG Graph Instance parameters set via Blueprint at runtime don't affect generation — only editing them in the Details panel works

I have a PCG Graph (PCG_TerrainNoise) with a Custom HLSL node that generates procedural terrain using a Seed graph parameter fed into a SeedParam pin. The goal is to change the Seed at runtime (e.g. on BeginPlay) so the terrain looks different each time I hit Play.

What I’ve tried in Blueprint:

Event BeginPlay
  → RandomIntegerInRange
  → Get Graph Instance (from PCGComponent)
  → Set Int32Parameter (Graph Interface, Name = "Seed", Value = random int)
  → Cleanup (PCGComponent)
  → Generate (PCGComponent, bForce = true)

  • Print String confirms the new random Seed value is being set correctly.
  • The “Generation Trigger” on the PCG component is set to Generate on Demand.
  • I’ve verified Set and Generate/Cleanup are targeting the same PCGComponent instance.

The problem: No matter what I do at runtime (including forcing generation), the terrain never changes. However, if I manually edit the Seed value in the PCG component’s Details panel in the editor, the terrain regenerates correctly with a different shape.

What I’m trying to understand:

  1. Why does editing a graph parameter override in the Details panel (editor) successfully trigger regeneration with the new value, while setting the same parameter via Set Int32Parameter on the Graph Instance at runtime does not?
  2. Is there a difference between how the editor’s property change (PostEditChangeProperty) propagates the override versus how SetGraphParameter/Generate does it at runtime?
  3. Is there a known issue or extra step required (e.g., regarding GPU/Compute Graph Custom HLSL nodes specifically) to make runtime parameter changes actually reach the shader/kernel, versus just updating the parameter storage?

Any insight into the internal difference between editor-time override application and runtime Generate() parameter propagation — especially for GPU Custom HLSL PCG nodes — would be appreciated.