I'm new here and I know this question is specific to my use case, but I hope that is okay.
I'm developing a music visualizer in VR. For that I pre-process an FFT and instantiate 250 rows a 32 objects (8.000 in total) in a tunnel, every amplitude of each frequency represented by the height of one object in a row. The reason why I only instantiate 500 rows, not as many as the whole song would need is to increase perfomance.
Every object in each row has 8 vertices, so I'm already at 64.000 vertices and as I'd like to add other objects into the scene as well, I'd like to keep this nmber as a maximum for performance reasons. To still display amplitudes of points in time of the song, I change the position of the objects in the row furthest away and change their amplitude accordingly.
But on my Oculus Quest it's not working at all and really laggy. This is probably because of the high amount of Draw Calls as you can see.
So I have to reduce the amount of batches to reduce the amount of draw calls from what I've read.
This is just to clarify where my question stems from.
As far as I know I (dont') have these couple of options:
Now my problem is that I can't just make these objects static and use static batching, right? Because I'm transforming their positions and vertices quite frequently.
Also their not using the same mesh, so GPU instancing doesn't work.
They have more than 300 vertices, so dynamic batching is off the table.
So how else can I reduce the amount of draw calls?
Can I use the "StaticBatchingUtility.Combine" or "Mesh.CombineMeshes" after every time I reposition the last row?
And if so, would that even improve my performance as I'd call this roughly every 0.3 seconds?