An experiement based on Adam Pearce's awesome block to compare using persistent regl.buffers
vs. passing static data via an arrow callback each time.
Result: Passing buffers doubles the framerate!
Caveat: But for this case, it doesn't seem to matter until you get up to a ridiculous number of particles (~1M?). Things like antialiasing probably vastly outweigh the manner in which the buffer was passed. Nevertheless, it's a bit more efficient.
Reasoning: Generally speaking for dynamic regl props, buffers are more efficient than arrays because it doesn't have to check whether a buffer has changed. Since a dynamic array may have changed, it has no choice but to update the buffer data on the GPU on every frame.