Soy nuevo aquí y sé que esta pregunta es específica para mi caso de uso, pero espero que esté bien.
Estoy desarrollando un visualizador de música en realidad virtual. Para eso, preproceso una FFT e instancia 250 filas de 32 objetos (8.000 en total) en un túnel, cada amplitud de cada frecuencia representada por la altura de un objeto en una fila. La razón por la que solo instancia 500 filas, no tantas como necesitaría toda la canción, es para aumentar el rendimiento.
Cada objeto en cada fila tiene 8 vértices, por lo que ya tengo 64.000 vértices y como también me gustaría agregar otros objetos a la escena, me gustaría mantener este número como máximo por motivos de rendimiento. Para seguir mostrando amplitudes de puntos en el tiempo de la canción, cambio la posición de los objetos en la fila más alejada y cambio su amplitud en consecuencia.
Pero en mi Oculus Quest no funciona en absoluto y es muy lento. Esto probablemente se deba a la gran cantidad de Draw Calls, como puede ver.
Así que tengo que reducir la cantidad de lotes para reducir la cantidad de sorteos por lo que he leído.
Esto es solo para aclarar de dónde proviene mi pregunta.
Por lo que sé, (no) tengo estas dos opciones:
Ahora mi problema es que no puedo simplemente hacer que estos objetos sean estáticos y usar el procesamiento por lotes estático , ¿verdad? Porque estoy transformando sus posiciones y vértices con bastante frecuencia.
Además, no usan la misma malla , por lo que la creación de instancias de GPU no funciona.
Tienen más de 300 vértices , por lo que el procesamiento por lotes dinámico está fuera de la mesa.
Entonces, ¿de qué otra manera puedo reducir la cantidad de sorteos?
¿Puedo usar "StaticBatchingUtility.Combine" o "Mesh.CombineMeshes" cada vez que cambio la última fila?
Y si es así, ¿eso incluso mejoraría mi rendimiento, ya que lo llamaría aproximadamente cada 0,3 segundos?