¿Mostrar una colisión en cámara lenta es computacionalmente relajante?

11

En muchos juegos de carreras ( Burnout Paradise , por ejemplo) cuando está a punto de ocurrir una colisión, el juego cambia automáticamente a cámara lenta y continúa en secuencia lenta hasta que se completa la colisión.

Siempre pensé que esto era por los efectos. ¡No querrás perderte ninguna parte de la colisión! Pero uno de mis amigos sugirió recientemente que esto se hace para asegurarse de que no se requiera una tasa abrumadora de procesamiento cuando se produce una colisión.

Ahora creo que en realidad es al revés. Cuando ocurre una colisión, se muestran tantos detalles en cámara lenta, estoy seguro de que hay una sobrecarga en la tubería de procesamiento y procesamiento.

¿Que es correcto?

¿Una escena en cámara lenta aumenta el uso de CPU / GPU, o lo disminuye?

Lazer
fuente

Respuestas:

4

Si está ejecutando su simulación física con un paso de tiempo fijo (como debería), entonces una cámara lenta pondrá menos carga en la simulación física, ya que habrá que hacer menos cálculos por cuadro.

Supongamos que está ejecutando su física con 200 actualizaciones por segundo. P.ej. Una actualización cada 0.005segundo de tiempo de simulación. Cuando se ejecuta el juego con 50 actualizaciones por segundo, eso daría como resultado 4 actualizaciones físicas por actualización de render. Ahora ejecutarías el juego en cámara lenta, eso significa que estás ralentizando el tiempo de simulación. Entonces, si el juego todavía funciona a 50 actualizaciones por segundo ( 0.02segundos de tiempo de simulación), pero estás mostrando el mundo en cámara lenta (digamos la mitad de la velocidad), entonces un cuadro sería equivalente a 0.01segundos de tiempo de simulación. Así que solo 2 actualizaciones de física por cuadro renderizado. Significa menos cálculos físicos por fotograma renderizado.

Entonces, si lo mira desde la perspectiva del uso de la CPU por fotograma renderizado, la cámara lenta es menos pesada para la CPU (a menos que elija aumentar su tasa de simulación física durante la cámara lenta). La carga de GPU por cuadro es, por supuesto, bastante constante.

Si está preguntando acerca de la carga acumulada de CPU / GPU durante la duración de una colisión , entonces obviamente la simulación física es la misma, ya sea en cámara lenta o en velocidad normal. La carga de la GPU será mayor, ya que renderizas más cuadros.

bummzack
fuente
Su primer párrafo habla de que la carga de la GPU es mayor. Esperaría que la carga en la GPU sea relativamente constante, o mejor dicho, directamente relacionada con la velocidad de fotogramas (suponiendo que el contenido de la escena no cambie).
notlesh
Dijo que era mayor por colisión , pero eso es solo porque la colisión dura más. Como dice la última oración del primer párrafo.
MichaelHouse
Creo que, en el caso promedio, todas las cargas deberían permanecer casi iguales: el código se ejecutará a través de los mismos pasajes de cualquier manera y, por lo tanto, tendrá aproximadamente la misma carga. En casos especiales, creo que la carga en la CPU en realidad será mayor en el caso de cámara lenta cuando se observa durante toda la colisión, ya que su resolución de colisión probablemente funcionará con algún tipo de factor de tiempo que va a ser mucho más pequeño (haciendo traducciones resultantes más pequeños) en cámara lenta, aumentando la posibilidad de que se detecten colisiones por cuadro, lo que resulta en la resolución
TravisG
No estoy agregando eso como respuesta porque eso es justo lo que puedo pensar en este momento y no tengo datos o experiencia real con sistemas de cámara lenta para respaldarlo: P
TravisG
2
@ Byte56 La pregunta es "¿Una escena en cámara lenta aumenta el uso de CPU / GPU?" Esto [casi] ciertamente implica el uso por tiempo, no por colisión. Entonces, creo que la respuesta, en lo que respecta a GPU, es que permanece sin cambios. Solo menciono esto porque no está claro qué intenta transmitir el primer párrafo.
notlesh
3

Es posible que este sea el caso. A menos que esté haciendo física para la colisión en la GPU, significa ponerse en cuclillas para eso. Pero en términos de la física misma ... es posible.

Si estás simulando el movimiento de varios cuerpos, tienden a moverse de una manera muy predecible. Las fuerzas y los campos de fuerza (es decir, la gravedad) son fácilmente predecibles. Donde se mueven las cosas se calcula rápidamente.

Justo hasta que una cosa golpea a otra. Mira, en física, tienes lo que se llama una división temporal; Esta es la cantidad de tiempo que cubre la ejecución del sistema de física. Si su intervalo de tiempo cubre 1/30 de segundo (30 fps para la actualización de física), entonces cada actualización de física mueve objetos 33.3 milisegundos hacia el futuro.

Cuando los objetos no colisionan, puedes moverlos desde el principio de esos 33,3 ms hasta el final. La física para hacerlo es simple y ha sido conocida por siglos. Simplemente determine la aceleración a partir de las fuerzas netas, aplique esa aceleración para el segmento de tiempo al objeto y muévala a su nueva velocidad (nota: esto puede ser más complejo si desea una mayor precisión).

El problema es cuando los objetos chocan. De repente, ahora tienes que procesar las fuerzas físicas dentro de un intervalo de tiempo, en lugar de solo una vez al principio. Si un objeto colisiona dos o tres veces dentro de un marco físico, entonces hay más cálculos físicos que tienes que rehacer.

Si tiene muchas colisiones dentro de un intervalo de tiempo, realmente puede matar su velocidad de cuadros. Sin embargo, la posibilidad de colisiones múltiples dentro de un segmento de tiempo disminuye a medida que disminuye el tamaño del segmento de tiempo. Sims de carreras de alta gama como Forza y ​​Gran Turismo ejecutan sus sistemas de física a velocidades de cuadro increíbles. Creo que uno de ellos obtiene hasta 300 + fps en su actualización de física.

La cámara lenta es el equivalente efectivo de eso. Al disminuir el intervalo de tiempo de la física sin aumentar también la velocidad de fotogramas de representación para compensar, el mundo parece más lento. Y, por lo tanto, es mucho menos probable que obtenga múltiples colisiones dentro de un intervalo de tiempo.

Dicho esto, dudo que sea por eso que juegos como este entran en cámara lenta. En general, es más por su estilo visual y presentación dramática. Esos sistemas físicos generalmente pueden manejarlo, en cuanto al rendimiento.

Nicol Bolas
fuente
1

En primer lugar, esto se hace por el efecto visual, no por razones de rendimiento.

La forma estándar de lidiar con el rendimiento en los juegos pesados ​​de física es escalar el número de objetos, escalar la complejidad de los objetos y jugar con la configuración del motor para escalar entre la precisión de la simulación y el rendimiento. Si hay problemas, abandonaría lo que considera que son las características menos significativas.

Sin embargo, recuerde que la industria ha hecho juegos de autos bastante realistas durante los últimos ~ 15 años, con las computadoras modernas no es como si tuvieran que volver a escalar a 3 ruedas para que las cosas funcionen.

El problema:
es cierto que una colisión puede causar trabajo adicional, cuánto depende mucho de las características específicas del juego, un motor de física más detallado tendrá muchas pequeñas colisiones entre diferentes partes que pueden constituir un aumento significativo en el cálculo requerido . Pero eso debe tenerse en cuenta cuando la física se escala, no es un problema obtener una buena física que aún pueda manejar algunas colisiones.

Si simplemente ejecuta la simulación física más lentamente para obtener movimiento lento, la carga caerá proporcionalmente. Sin embargo, uno debe tener en cuenta que los requisitos para la cámara lenta y la física en tiempo real son diferentes, puede permitirse tener una precisión más baja cuando las cosas suceden a la velocidad de la carrera. Mientras el jugador no note que el motor de física está mal, no es un gran problema, la cámara lenta hace que los resbalones sean mucho más fáciles de atrapar, por lo tanto, la cámara lenta tiene un requisito de mayor precisión.

Uno puede optar por usar la misma física, escalada para cumplir con ambos conjuntos de requisitos. Esta solución requerirá algo de potencia de procesamiento adicional, pero es fácil de implementar y da a las computadoras modernas perfectamente viables.

Cambiar la configuración física es más complicado, pero potencialmente puede dar lugar a algunas colisiones magníficas, no solo se puede aumentar la precisión, sino que también es posible cambiar los modelos físicos de los automóviles por otros más detallados que se rompan de una manera más realista. Este modo debería terminar usando aproximadamente la misma cantidad de tiempo de CPU para la física que el modo normal, simplemente porque ambos están escalados para ejecutarse en la misma configuración de minespecificación.

Una forma intermedia es utilizar un motor de física de pasos variables, que en general aumentará la precisión cuando disminuya la velocidad de la simulación, resolviendo así al menos parte del problema. Hay otras razones para no usar la física de paso variable, pero el paso variable sigue siendo bastante común en la industria.

aaaaaaaaaaaa
fuente