¿Podría la interpolación de fotogramas como la utilizada por SmoothVideo Project ser una opción para aumentar la velocidad de fotogramas de los juegos sin un impacto tan grande en el rendimiento?

11

El Proyecto SmoothVideo utiliza la interpolación de cuadros para aumentar los fps de video de 24 a 60. Los resultados son bastante impresionantes . Me preguntaba si esto podría aplicarse y si se vería bien en los videojuegos.

Utiliza muchos menos recursos que renderizar todos los marcos, por lo que permitiría que los equipos de gama baja rindan con la calidad de equipos mucho mejores en algún nivel de compromiso. Sé que no será tan preciso y aumentaría ligeramente la latencia de entrada, ya que necesita conservar el marco más nuevo para poder generar e insertar el interpolado. Sin embargo, no es tan malo como un cuadro completo, según mi razonamiento, solo el retraso sería el tiempo de interpolación más la mitad del tiempo de actualización de fps original. Entonces, para 30 fps, sería 33 ms / 2 + tiempo de interpolación.

Tal vez este retraso lo haría inadecuado para los juegos rápidos en primera persona, pero dudo que sea un obstáculo en los juegos de ritmo más lento.

El retraso se vuelve más bajo a tasas de inicio más altas, por lo que creo que valdría la pena cuando se pasa de 60 fps a 100 + fps, lo que mejora la experiencia aunque sea cada vez más marginal, mientras que es extremadamente exigente para el sistema.

cybrbeast
fuente
En cierto sentido, esto ya se está haciendo con el desenfoque de movimiento. La falta de datos de movimiento derivados (descritos en algunas respuestas) se resuelve utilizando movimientos de objetos ya conocidos . La única diferencia es que, en lugar de interpolar sin problemas, los procesadores realizan varias interpolaciones y crean una mezcla de ellas. La interpolación como usted describió probablemente no se usa porque la oclusión cambia y crea un resultado indeseable.
transistor09

Respuestas:

6

Se ha utilizado un sistema en este sentido en The Force Unleashed . Sin embargo, no conozco otros títulos que lo hayan usado.

DMGregory
fuente
1
Gracias por la info. Encontré una publicación en él: dl.acm.org/citation.cfm?id=1837047 Parece exitoso, entonces ¿por qué no ha visto un uso más amplio?
cybrbeast
Principalmente por las razones descritas en la respuesta de Byte56: no está exento de inconvenientes y, en muchos casos, esos inconvenientes no valen la pena, dado que también hay otras formas de lograr velocidades de fotogramas más altas.
1
Según este artículo, mediante el uso de la interpolación predictiva, ¡ese método puede reducir la latencia! eurogamer.net/articles/… Así que parece mejor en todas las métricas. Pero debe faltar algo, ya que uno pensaría que se usaría en todas partes si esto fuera cierto.
cybrbeast
@David: el artículo significa que reduce la latencia aparente en comparación con la ejecución a 30 fps, para ciertos tipos de entrada. Correr a 60 fps de forma nativa sigue siendo preferible cuando sea posible (mejor latencia y sin artefactos de interpolación), por lo que muchos desarrolladores consideran que es su objetivo de primera opción. Cuando los juegos no alcanzan los 60 fps, no siempre queda suficiente tiempo o presupuesto para crear un sistema de interpolación para suavizar las brechas: este sistema es bastante complicado y, en el caso de TFU, es ayudado por algunas facetas de su canal de renderizado que no son universalmente compartido por todos los juegos.
DMGregory
Estaba tratando de decir mejor en todas las métricas en comparación con 30 fps sin mejorar, no procesado 60 fps
cybrbeast
9

Sí, es posible, pero no está exento de complicaciones.

Si bien la interpolación de cuadros puede funcionar en tiempo real en videos, ese no es necesariamente el caso con los videojuegos. Aunque esto se está procesando en tiempo real en videos, el software puede "mirar hacia adelante" al siguiente cuadro. Este es un componente bastante crítico de la interpolación. Aquí es donde entra en juego el problema con los juegos. La mayoría de las veces, el próximo fotograma siguiente aún no se ha procesado. Entonces el software no sabe el siguiente punto en la interpolación.

Ciertamente existe la posibilidad de ejecutar el juego un cuadro o dos atrás para darle a su software de interpolación los cuadros con los que necesita trabajar. Sin embargo, esto no funciona tan bien para los medios que son interactivos. Ahora lo que se muestra en la pantalla se retrasa desde la entrada que se recibe. Esto hace que las cosas sean más complicadas para procesar la entrada y proporcionar una buena respuesta al juego. Es como construir en un retraso de rendimiento artificial. Además, es poco probable que tenga soporte nativo en cualquiera de los principales motores de juego, lo que significa escribir el suyo propio.

MichaelHouse
fuente
¿Alguna reacción a este método de interpolación más inteligente mencionado a continuación, que pretende evitar cualquier aumento en la latencia? eurogamer.net/articles/…
cybrbeast
En ese caso, se aplica principalmente la oración final. No estoy seguro de cuánto su tecnología extrajo esa característica. Puede haber tomado mucho más trabajo no romper la interpolación, o podría haber "simplemente funcionado". Me imagino que si fuera el último, podríamos verlo aparecer en algunos de los principales motores (si no está patentado). No estoy seguro de que valga la pena crear y mantener esta característica por sí sola.
MichaelHouse
No estoy seguro de la afirmación de que ejecutar un marco detrás es un obstáculo importante para la interactividad. Cualquier juego multijugador que use un servidor autorizado con interpolación de (estado del juego) entre las dos últimas actualizaciones a menudo mostrará un retraso mayor, sin embargo, esto incluye algunos de los juegos de disparos de ritmo más rápido. Tampoco necesitamos necesariamente el siguiente cuadro para construir intermedios en los juegos, porque a diferencia del video, los juegos pueden generar máscaras de objetos de verdad y información de velocidad del espacio de pantalla (similar a los efectos de desenfoque de movimiento) que se pueden extrapolar.
DMGregory
2

Sí, esto no solo es posible, sino que está disponible ahora: conecte su PC / consola de juegos a un televisor que use interpolación de movimiento . Las opiniones varían, y esto es menos adecuado para juegos de contracción nerviosa como FPS debido al retraso de interpolación, pero para aumentar las velocidades de cuadro de 60 a 120Hz funciona bien.

En cuanto a si esto se puede hacer en el juego en sí, todavía no hay suficiente impulso, ya que la mayoría de los monitores no pueden emitir esas altas velocidades de cuadros. Los monitores de 120 + Hz para computadoras son menos comunes, aunque a juzgar por cómo van los televisores, esto puede suceder pronto. Tener un monitor de alta frecuencia de actualización tiene ventajas incluso si el juego no puede alcanzar esas velocidades de fotogramas: además de la interpolación de movimiento basada en TV antes mencionada, puede ofrecer fotogramas más suaves si se permite que el juego emita fotogramas ya que están listos, en lugar de sincronizados arriba ala v-sync. Una vez que los monitores de más de 120 Hz sean comunes, espero que los desarrolladores de juegos se pongan al día y comiencen a usar más trucos, incluida la interpolación de movimiento, para alcanzar esas altas velocidades de cuadros.

congusbongus
fuente
3
Mi experiencia ha sido que estos sistemas tienen una latencia de entrada tremenda , como 200 + ms (12+ cuadros a 60 fps). Esta es la razón por la cual esos televisores suelen tener un "modo de juego" que desactiva esa función.
BlueRaja - Danny Pflughoeft
0

El retraso entre el momento en que el usuario hace algo y el momento en que aparece el resultado en la pantalla nunca debe superar los 100 ms o el usuario puede notar el retraso.

El monitor del usuario puede tardar unos 30 ms en mostrar la imagen que recibe. Hay monitores mucho más rápidos disponibles, pero muchos usuarios promedio no los tienen. Si la tarjeta de video calcula 30 cuadros por segundo, se necesitan 33 ms para calcular un cuadro. Supongo que 30 fps porque no necesitamos interpolación de cuadros si el juego ya funciona a 60 fps. Si usamos triple buffering esto se duplica a 66 ms. Eso es 90 ms.

Creo que necesitamos triple búfer para que la interpolación de trama tenga sentido. Entonces, si usamos la interpolación de trama además de eso para obtener 60 fps, aumentamos el retraso en una trama de 60Hz, que es otro 17 ms + tiempo de interpolación X, lo que nos lleva a 107 ms + X. El problema no es la interpolación como tal, pero el hecho de que ya estamos cerca del punto donde la latencia es notable antes de introducir la interpolación.

Probablemente estaría bien para un juego que es principalmente una película virtual, pero en un FPS los usuarios notarían que algo está mal con el objetivo.

Peter
fuente