If simulation and rendering run at different frequencies it can be useful to interpolate between two simulation steps during rendering for smooth animations.
For moving meshes I simply interpolate the transformation on the CPU before sending to the GPU.
For particles, which I simulate entirely on the CPU, I'm less sure about a good strategy.
Currently I keep the particle array from the previous simulation frame around and send both to the GPU where I do the interpolation. I figured doing this on the GPU is faster even though I'm sending twice the data over now. Does this make sense or would you do the interpolation on the CPU as well?
I have two arrays of particle structs. One for the previous and the other for the current frame. Before each simulation frame I just copy the array. I send them to the GPU as two separate buffers. Would it be smarter to store it as one interleaved array?
Particle rendering is currently not a bottleneck for the scenes I have (at least not the number of particles), but I would like to set it up somewhat sane. How would you handle this?