Quick answer: Use UpdateMeshSection for same-vertex-count animation. CreateMeshSection reallocates buffers; calling it per frame flickers. Avoid Clear-then-Create; reuse sections.
Here is how to fix Unreal ProceduralMeshComponent visibly flickering when you regenerate geometry every frame. The culprit is recreating sections instead of updating in place.
The Symptom
Per-frame procedural mesh (cloth, water, voxel chunk) flickers with each update.
What Causes This
Create reallocates. CreateMeshSection destroys the old section, allocates new buffers; the gap shows as flicker.
Clear before recreate. Same issue; avoid the empty intermediate state.
The Fix
Step 1: Use UpdateMeshSection.
ProcMesh->UpdateMeshSection(/*sectionIndex*/ 0,
Vertices, Normals, UVs, VertexColors, Tangents);
Reuses GPU buffers; no reallocation gap.
Step 2: Reserve max size up front. If vertex count varies a little, allocate a larger buffer once and update slices. Avoids periodic Create calls.
Step 3: For changing topology, double-buffer. Maintain two ProceduralMesh actors; create on the inactive one, swap visibility. No flicker visible to player.
Step 4: For voxel chunks, batch updates. Update many sections in one Tick rather than per-chunk per-frame. Reduces buffer churn.
Step 5: Confirm with stat profile. ProceduralMesh sections are in the GPU mesh stats. Watch for spikes that align with flicker.
“Update for same-count. Pre-size buffers. Double-buffer for topology change. Flicker disappears.”
Related Issues
For ISM collision update, see ISM Collision. For Niagara mesh color, see Niagara Mesh Color.
UpdateMeshSection. Pre-size. Double-buffer. Smooth procedural anim.