L'interpolation d'images comme celle utilisée par SmoothVideo Project pourrait-elle être une option pour augmenter le framerate des jeux sans un impact aussi important sur les performances?

11

Le projet SmoothVideo utilise l'interpolation d'images pour augmenter le nombre d'images par seconde de 24 à 60. Les résultats sont assez impressionnants . Je me demandais si cela pouvait être appliqué et si cela aurait l'air bien dans les jeux vidéo?

Il utilise beaucoup moins de ressources que le rendu de toutes les images, ce qui permettrait aux plates-formes d'extrémité inférieure de restituer la qualité de plates-formes bien meilleures à un certain niveau de compromis. Je sais que ce ne sera pas aussi précis et augmenterait légèrement la latence d'entrée car il doit s'accrocher à la nouvelle image pour pouvoir générer et insérer celle interpolée. Ce n'est pas aussi mauvais qu'une image complète, selon mon raisonnement, seul le décalage serait le temps d'interpolation plus la moitié du temps de rafraîchissement d'origine. Donc, pour 30 fps, ce serait 33 ms / 2 + temps d'interpolation.

Peut-être que ce décalage le rendrait inapproprié pour les jeux à la première personne passés rapidement, mais je doute que ce soit un obstacle dans les jeux au rythme plus lent.

Le décalage devient plus faible à des taux de démarrage plus élevés, donc je pense que cela en vaudrait certainement la peine en passant de 60 images par seconde à 100 images par seconde, ce qui améliore l'expérience de manière de plus en plus marginale, tout en imposant une fiscalité extrême sur le système.

cybrbeast
la source
À certains égards, cela se fait déjà avec le flou de mouvement. Le manque de données de mouvement dérivées (décrites dans certaines réponses) est résolu en utilisant les mouvements d'objets déjà connus . La seule différence est qu'au lieu d'interpoler en douceur, les moteurs de rendu effectuent plusieurs interpolations et en créent un mélange. L'interpolation telle que vous l'avez décrite n'est probablement pas utilisée car l'occlusion change et elle crée un résultat indésirable.
transistor09

Réponses:

6

Un système dans ce sens a été utilisé dans The Force Unleashed . Je ne connais pas d'autres titres qui l'aient utilisé cependant.

DMGregory
la source
1
Merci pour l'info. J'ai trouvé une publication à ce sujet: dl.acm.org/citation.cfm?id=1837047 Cela semble réussi, alors pourquoi n'a-t-il pas été utilisé plus largement?
cybrbeast
Surtout pour les raisons décrites dans la réponse de Byte56: ce n'est pas sans inconvénients et dans de nombreux cas, ces inconvénients n'en valent pas la peine, étant donné qu'il existe d'autres façons d'obtenir des fréquences d'images plus élevées également.
1
Selon cet article, en utilisant l'interpolation prédictive, cette méthode peut réellement réduire la latence! eurogamer.net/articles/… Il semble donc préférable dans toutes les mesures. Mais quelque chose doit manquer car vous penseriez qu'il serait utilisé partout si c'était vrai.
cybrbeast
@David: l'article signifie qu'il réduit la latence apparente par rapport à 30 fps, pour certains types d'entrée. L'exécution à 60 images par seconde en mode natif est toujours préférable lorsque cela est possible (meilleure latence et aucun artefact d'interpolation), de nombreux développeurs considèrent que leur cible de premier choix. Lorsque les jeux ne parviennent pas à 60 images par seconde, ce n'est pas toujours avec suffisamment de temps ou de budget pour créer un système d'interpolation pour lisser les écarts - ce système est assez compliqué et, dans le cas de TFU, est aidé par certaines facettes de leur pipeline de rendu qui ne sont pas universellement partagé par tous les jeux.
DMGregory
J'essayais de dire mieux dans toutes les métriques par rapport à 30 ips non amélioré, pas rendu 60 ips
Cybrbeast
9

Oui c'est possible, mais ce n'est pas sans complications.

Bien que l'interpolation d'images puisse fonctionner en temps réel sur des vidéos, ce n'est pas nécessairement le cas avec les jeux vidéo. Même s'il s'agit d'un traitement en temps réel sur des vidéos, le logiciel est en mesure de "regarder vers l'avant" jusqu'à l'image suivante. Il s'agit d'un composant assez critique de l'interpolation. C'est là que le problème entre en jeu avec les jeux. La plupart du temps, la prochaine image suivante n'a pas encore été rendue! Le logiciel ne connaît donc pas le point suivant de l'interpolation.

Il y a certainement la possibilité de lancer le jeu une ou deux images derrière pour donner à votre logiciel d'interpolation les images avec lesquelles il doit travailler. Cependant, cela ne fonctionne pas aussi bien pour les médias interactifs. Maintenant, ce qui est affiché à l'écran est retardé de l'entrée reçue. Cela rend les choses plus difficiles à traiter et à fournir une bonne réactivité au jeu. C'est comme créer un retard de performance artificiel. De plus, il est peu probable d'avoir un support natif dans l'un des principaux moteurs de jeu, ce qui signifie écrire le vôtre.

MichaelHouse
la source
Toute réaction à cette méthode d'interpolation plus intelligente mentionnée ci-dessous, qui prétend empêcher toute augmentation de la latence? eurogamer.net/articles/…
cybrbeast
Dans ce cas, c'est principalement la dernière phrase qui s'applique. Je ne sais pas combien leur technologie a retiré cette fonctionnalité. Il a peut-être fallu beaucoup plus de travail pour ne pas rompre l'interpolation, ou il aurait pu "simplement fonctionner". J'imagine que si c'était ce dernier, nous pourrions le voir apparaître dans certains des principaux moteurs (s'il n'est pas breveté). Je ne suis pas sûr que cette fonctionnalité mérite à elle seule la création et la maintenance de votre propre moteur.
MichaelHouse
Incertain quant à l'affirmation selon laquelle le passage d'un cadre derrière est un obstacle majeur à l'interactivité. Tous les jeux multijoueurs utilisant un serveur faisant autorité avec une interpolation (état du jeu) entre les deux dernières mises à jour présentent souvent un décalage plus important, mais cela inclut certains des jeux de tir les plus rapides. Nous n'avons pas non plus nécessairement besoin de la prochaine image pour construire des intermédiaires dans les jeux, car contrairement à la vidéo, les jeux peuvent générer des masques d'objet vérités et des informations sur la vitesse de l'espace d'écran (similaires aux effets de flou de mouvement) qui peuvent être extrapolés.
DMGregory
2

Oui, ce n'est pas seulement possible, mais disponible maintenant: branchez votre PC / console de jeu à un téléviseur qui utilise l'interpolation de mouvement . Les opinions varient, ce qui est moins adapté aux jeux de twitch comme FPS en raison du retard d'interpolation, mais pour les taux de rafraîchissement de 60 à 120 Hz, cela fonctionne très bien.

Quant à savoir si cela peut être fait dans le jeu lui-même, il n'y a pas encore assez d'impulsion, dans la mesure où la plupart des moniteurs ne peuvent pas produire ces fréquences d'images élevées. Les moniteurs 120 + Hz pour ordinateurs sont moins courants, mais à en juger par la façon dont les téléviseurs fonctionnent, cela peut arriver bientôt. Avoir un moniteur à taux de rafraîchissement élevé présente des avantages même si le jeu ne peut pas atteindre ces fréquences d'images: en plus de l'interpolation de mouvement basée sur la télévision susmentionnée, il peut offrir des images plus fluides si le jeu est autorisé à produire des images lorsqu'elles sont prêtes, au lieu d'être synchronisées jusqu'à ala v-sync. Une fois que les moniteurs 120 + Hz sont monnaie courante, je m'attends à ce que les développeurs de jeux rattrapent leur retard et commencent à utiliser plus d'astuces, y compris l'interpolation de mouvement, pour atteindre ces fréquences d'images élevées.

congusbongus
la source
3
D'après mon expérience, ces systèmes ont une latence d'entrée énorme , comme 200 + ms (12+ trames à 60 images par seconde). C'est la raison pour laquelle ces téléviseurs ont généralement un "mode de jeu" qui désactive cette fonctionnalité.
BlueRaja - Danny Pflughoeft
0

Le décalage entre le moment où l'utilisateur fait quelque chose et le moment où le résultat apparaît à l'écran ne doit jamais dépasser 100 ms, sinon l'utilisateur peut remarquer le retard.

Le moniteur de l'utilisateur peut prendre environ 30 ms pour afficher l'image qu'il reçoit. Des moniteurs beaucoup plus rapides sont disponibles, mais de nombreux utilisateurs moyens n'en ont pas. Si la carte vidéo calcule 30 images par seconde, il faut 33 ms pour calculer une image. Je suppose 30 fps car nous n'avons pas besoin d'interpolation de trame si le jeu tourne déjà à 60 fps. Si nous utilisons une triple mise en mémoire tampon, cela passe à 66 ms. C'est 90 ms.

Je pense que nous avons besoin d'un triple tampon pour l'interpolation de trame pour avoir du sens. Donc, si nous utilisons l'interpolation de trames en plus pour obtenir 60 ips, nous augmentons le retard d'une trame de 60 Hz, ce qui correspond à 17 ms + temps d'interpolation X, ce qui nous amène à 107 ms + X. Le problème n'est pas l'interpolation comme tel, mais le fait que nous sommes déjà proches du point où la latence est perceptible avant d'introduire l'interpolation.

Ce serait probablement bien pour un jeu qui est principalement un film virtuel, mais dans un FPS, les utilisateurs remarqueraient que quelque chose ne va pas dans le but.

Peter
la source