Quick answer: Godot MultiMesh shows only the original count of instances even after setting instance_count higher? Two values must move together: instance_count (buffer size) and visible_instance_count (how many to draw).

Growing a particle system from 100 to 500 only renders 100. The visible cap stayed at 100 while the buffer grew.

Two Counts

instance_count is the array size. visible_instance_count defaults to −1 (all). If you set it to a specific number once, growing instance_count later doesn’t auto-expand the visible cap.

Reset to All

multimesh.instance_count = new_count
multimesh.visible_instance_count = -1  # render all

The −1 sentinel means “render every instance”. Resetting both makes growth transparent.

Per-Instance Data

After resize, the new instances start with default transform/color. Set their data immediately via set_instance_transform to avoid stacked default cubes at origin.

Transform Format

Set transform_format = TRANSFORM_3D (or 2D) at creation. Switching format requires a full rebuild.

Verifying

Growing instance count renders the new instances correctly. No invisible “capped” instances.

“Two counts: buffer size and visible cap. Keep them in sync.”

Pre-allocate the largest size you’ll need at startup — resizing isn’t cheap and avoiding it simplifies the visible_instance_count dance.