Les images par seconde, expliquées
Aujourd’hui, nous abordons l’une des questions les plus fréquentes que nous voyons sur le jeu sur PC : combien d’images par seconde avez-vous besoin ? Devriez-vous fonctionner au même taux d’images que le taux de rafraîchissement maximal de vos moniteurs, disons 60 FPS sur un moniteur 60 Hz, ou y a-t-il un avantage à exécuter des jeux à un taux d’images beaucoup plus élevé que ce que votre moniteur peut afficher, comme disons 500 FPS ?
Pour répondre à cette question, nous devons parler un peu de la façon dont un GPU et un écran travaillent ensemble pour envoyer des images dans vos globes oculaires, et comment des technologies comme Vsync fonctionnent.
Mais l’essentiel est que l’exécution de jeux à des fréquences d’images extrêmement élevées, bien au-dessus de la fréquence de rafraîchissement de votre moniteur, conduira à une expérience de jeu plus réactive avec une latence d’entrée perçue plus faible. C’est la réponse à la question pour ceux qui ne veulent pas attendre la fin. Maintenant, parlons du pourquoi.
Note de la rédaction : Cette fonctionnalité a été initialement publiée le 2 août 2018. Il est tout aussi pertinent et actuel aujourd’hui qu’il l’était alors, alors nous l’avons remonté dans le cadre de notre initiative #ThrowbackThursday.
Partons du principe que nous avons un moniteur avec un taux de rafraîchissement fixe de 60 Hz. En d’autres termes, le moniteur met à jour son affichage tous les 1/60e de seconde, ou tous les 16,7ms. Lors de l’exécution d’un jeu, il n’est pas garanti que le GPU soit capable d’effectuer le rendu de chaque image en 16,7 millisecondes exactement. Parfois, cela peut prendre 20 ms, parfois 15 ms, parfois 8 ms. C’est la nature variable du rendu d’un jeu sur un GPU.
Avec ce taux de rendu variable, il y a un choix de la façon dont chaque image rendue est transmise au moniteur. Il peut transmettre la nouvelle trame à l’écran dès qu’elle est complètement rendue, ce qui est communément appelé exécuter le jeu avec « Vsync » ou synchronisation verticale désactivée, ou il peut attendre que l’écran soit prêt à se rafraîchir avant d’envoyer la nouvelle trame, ce qui est appelé « Vsync on ».
Vsync off
L’utilisation de la première méthode, Vsync off, provoque des déchirures. C’est parce qu’un écran ne peut pas mettre à jour l’image entière instantanément, au lieu de cela, il met à jour ligne par ligne, généralement du haut de l’écran vers le bas. Au cours de ce processus, une nouvelle image peut être prête pour le GPU, et comme nous n’utilisons pas Vsync, l’image est envoyée à l’écran immédiatement. Le résultat est qu’au milieu d’un rafraîchissement, le moniteur reçoit de nouvelles données et met à jour le reste des lignes de l’écran avec ces nouvelles données. Vous vous retrouvez alors avec une image où la moitié supérieure de l’écran provient de la trame précédente et la moitié inférieure de la nouvelle trame fraîchement disponible.
Tearing
Selon le contenu affiché, cette scission entre les nouvelles et les anciennes trames dans le seul rafraîchissement se présente comme une déchirure, ou une ligne visible entre les anciennes et les nouvelles trames. Habituellement, c’est plus perceptible dans les scènes en mouvement rapide où il y a une grande différence entre une image et la suivante.
Bien que la Vsync désactivée entraîne un déchirement, elle a l’avantage d’envoyer une image à l’écran dès qu’elle a fini d’être rendue, pour une faible latence entre le GPU et l’écran. Gardez cela en tête pour plus tard.
Vsync on
L’autre façon d’afficher une image est avec Vsync on. Ici, au lieu que le GPU envoie la nouvelle image immédiatement à l’écran, il mélange chaque image rendue dans un tampon. Le premier tampon est utilisé pour stocker l’image en cours de traitement, et le second tampon est utilisé pour stocker l’image que l’écran affiche actuellement. À aucun moment pendant le rafraîchissement, le second tampon n’est mis à jour, de sorte que l’affichage ne montre que les données d’une seule image entièrement rendue, et par conséquent, vous n’obtenez pas de déchirement à partir d’une mise à jour au milieu du rafraîchissement.
Vsync on, a closer look
Le seul moment où le second tampon est mis à jour est entre les rafraîchissements. Pour s’assurer que cela se produise, le GPU attend après avoir terminé le rendu d’une image, jusqu’à ce que l’affichage soit sur le point de se rafraîchir. Il mélange alors les tampons, commence le rendu d’une nouvelle image, et le processus se répète. Parfois, le processus pourrait impliquer plusieurs tampons avant qu’une trame n’atteigne l’écran, mais c’est l’essentiel de la façon dont Vsync fonctionne.
Quand votre GPU est trop lent pour rendre une trame… le bégaiement se produit
Il y a deux problèmes avec Vsync. Tout d’abord, si le taux de rendu de votre GPU est trop lent pour suivre le taux de rafraîchissement de l’écran – disons qu’il est seulement capable d’effectuer un rendu à 40 FPS sur un écran de 60 Hz – alors le GPU ne rendra pas une image complète à temps pour répondre au début du rafraîchissement de l’écran, donc une image est répétée. Cela provoque des bégaiements, car certaines images ne sont affichées qu’une fois, tandis que d’autres sont affichées deux fois.
Vsync on : Affichage 60Hz, 200 FPS
Le deuxième problème survient lorsque votre GPU est très rapide et qu’il est facilement capable de rendre une image dans l’intervalle du taux de rafraîchissement. Disons qu’il peut effectuer un rendu à 200 FPS, produisant une nouvelle trame toutes les 5ms, sauf que vous utilisez un écran 60 Hz avec une fenêtre de rafraîchissement de 16,7ms.
Avec Vsync activé, votre GPU terminera la prochaine trame à afficher en 5ms, puis il attendra 11,7 ms avant d’envoyer la trame vers le second tampon à afficher sur le moniteur et de commencer la trame suivante. C’est pourquoi, avec Vsync activé, le taux d’images le plus élevé que vous obtiendrez correspond au taux de rafraîchissement de votre moniteur, car le GPU est essentiellement « verrouillé » dans le rendu pas plus rapide que le taux de rafraîchissement.
Maintenant, c’est à ce point qu’il y a beaucoup de confusion.
On entend souvent des choses comme « verrouiller le GPU sur le rafraîchissement de mon moniteur en utilisant Vsync est génial, parce que si le rendu est plus rapide que le taux de rafraîchissement, ces images sont gaspillées parce que le moniteur ne peut pas les montrer, et tout ce que j’obtiens c’est du tearing ». Beaucoup de gens mettent en avant les économies d’énergie liées à l’utilisation de Vsync ; votre GPU n’a pas besoin de travailler aussi dur, il n’y a aucun avantage à fonctionner à des fréquences d’images supérieures à la fréquence de rafraîchissement du moniteur, alors exécutez à un FPS verrouillé et économisez de l’énergie.
Nous pouvons voir pourquoi les gens en arrivent à cette conclusion et il y a quelques morceaux de vérité là, mais ce n’est pas exact en général. Et la raison en est que vous ne tenez pas compte du temps auquel les entrées sont traitées, et du temps qu’il faut à ces entrées pour se matérialiser sur l’écran.
Vsync on incluant l’entrée
Pour expliquer pourquoi c’est le cas, regardons le diagramme Vsync on, mais superposons le diagramme avec l’entrée de votre souris et de votre clavier, qui est généralement recueillie toutes les 1ms. Utilisons également le même exemple où nous avons un GPU capable d’effectuer un rendu à 200 FPS avec un écran de 60 Hz.
Avec Vsync et un système de tampon simple, dans cette explication simplifiée, le GPU commence à effectuer le rendu d’une image correspondant à votre entrée souris dès qu’il reçoit cette entrée, au temps 0. Il prend ensuite 5ms pour effectuer le rendu de la trame, et il attend encore 11,7ms avant de l’envoyer au tampon de l’affichage.
L’affichage prend alors un certain temps pour recevoir la trame à rendre et mettre physiquement à jour l’affichage ligne par ligne avec cette information.
Vsync sur inclusion de l’entrée
Même dans le meilleur des cas, nous envisageons un délai d’au moins 16,7ms entre votre entrée et le moment où l’affichage peut commencer à vous montrer les résultats de cette entrée.
En tenant compte du décalage de l’entrée de l’écran, du temps de traitement du CPU et ainsi de suite, la latence entre l’entrée et le rafraîchissement de l’écran pourrait facilement dépasser les 50 ms.
Vsync off incluant l’entrée, écran 60Hz, 200 FPS
Maintenant, regardons le diagramme Vsync off. Le GPU effectue un rendu continu quel que soit le moment où l’écran se rafraîchit, prenant 5ms pour transformer votre entrée en une image complète. L’écran peut alors commencer à afficher cette nouvelle image immédiatement, même s’il ne s’agit que d’une partie de cette image. Le résultat est que la latence entre votre entrée dans le jeu et le moment où l’écran peut commencer à afficher les résultats de cette entrée est réduite de 16,7 ms à seulement 5 ms. Et il n’y aura pas de tampons supplémentaires dans les implémentations du monde réel ; c’est aussi rapide que cela, plus le retard d’entrée de votre moniteur.
Et c’est là que vous obtenez l’avantage. Dans cet exemple, l’exécution à 200 FPS avec Vsync désactivé sur un moniteur 60 Hz réduit la latence d’entrée à 5 ms, alors qu’avec Vsync activé, cette latence est d’au moins 16,7 ms, sinon plus.
Même si l’écran n’est pas capable de montrer les 200 images par seconde dans leur intégralité, ce que l’écran montre tous les 1/60e de seconde est produit à partir d’une entrée beaucoup plus proche dans le temps de cette image.
Ce phénomène, bien sûr, s’applique également avec les moniteurs à haute fréquence de rafraîchissement. À 144 Hz, par exemple, vous serez en mesure de voir beaucoup plus d’images chaque seconde, de sorte que vous obtiendrez une expérience plus fluide et plus réactive dans l’ensemble. Mais fonctionner à 200 FPS avec Vsync désactivé plutôt qu’à 144 FPS avec Vsync activé vous donnera toujours une différence entre 5ms et plus de 7ms de latence d’entrée.
Maintenant que nous parlons de différences en millisecondes, vous vous demandez probablement si vous pouvez réellement remarquer cette différence dans les jeux.
Selon le type de jeu auquel vous jouez, la différence peut aller de très perceptible, à aucune différence du tout. Un jeu au rythme rapide comme CS : GO fonctionnant à 400 FPS sur un moniteur 60 Hz, avec une latence d’entrée au mieux autour de 2,5ms, se sentira significativement plus réactif aux mouvements de votre souris que si vous exécutez le même jeu à 60 FPS avec 16,7ms de latence (ou plus).
Dans les deux cas, l’écran ne vous montre une nouvelle image que 60 fois par seconde, donc la sensation ne sera pas aussi fluide que sur un écran 144 Hz ou 240 Hz. Mais la différence de latence d’entrée est énorme ; fonctionner à 400 FPS vous permet d’obtenir vos entrées à l’écran près de 7 fois plus rapidement, si ce n’est plus. Essayez par vous-même et vous sentirez certainement la différence de réactivité.
Et nous n’avons pas sorti cette explication de nulle part, en fait Nvidia connaît les limites de Vsync en termes de latence d’entrée, c’est pourquoi ils fournissent une alternative appelée Fast Sync (l’alternative d’AMD est appelée Enhanced Sync). Cette technique de synchronisation de l’affichage est comme une combinaison de Vsync on et Vsync off, produisant le meilleur des deux mondes.
Fast Sync fonctionne en introduisant un tampon supplémentaire dans le pipeline Vsync on appelé le dernier tampon rendu. Cela permet au GPU de continuer à rendre de nouvelles images dans le tampon arrière, en faisant la transition vers le dernier tampon rendu une fois terminé. Ensuite, lors d’un rafraîchissement de l’affichage, le dernier tampon rendu est poussé vers le tampon avant auquel l’affichage accède.
Synchronisation rapide / Synchronisation améliorée
L’avantage que cela crée est que le GPU n’attend plus après avoir terminé une image que le rafraîchissement de l’affichage se produise, comme c’est le cas avec Vsync on. Au lieu de cela, le GPU continue à rendre les trames, de sorte que lorsque l’affichage va accéder à une trame au début de la période de rafraîchissement, cette trame a été rendue plus près de la fenêtre de rafraîchissement. Cela réduit la latence d’entrée. Cependant, contrairement à ce qui se passe lorsque Vsync est désactivé, Fast Sync fournit une trame complète à l’écran au début de chaque rafraîchissement, plutôt que de simplement pousser la trame à l’écran immédiatement, et c’est cette technique qui élimine le tearing.
Fast Sync n’est fonctionnel que lorsque le taux de trame est supérieur au taux de rafraîchissement de l’écran, mais il réussit à fournir une expérience de jeu plus réactive sans tearing. Et bien sûr, AMD a un équivalent appelé Enhanced Sync.
J’espère que cet explicatif aura répondu à certaines de vos questions sur la raison pour laquelle l’exécution d’un jeu au-dessus de la fréquence de rafraîchissement maximale de votre moniteur offre effectivement une expérience de jeu plus réactive, et pourquoi la possibilité d’exécuter des jeux à des fréquences d’images plus élevées est toujours un avantage, même s’il peut sembler que votre moniteur ne peut pas en tirer parti.
Une dernière remarque : nous n’avons pas abordé ici les technologies de synchronisation adaptative comme G-Sync et FreeSync, et c’est parce que nous avons surtout parlé de l’exécution de jeux au-dessus du taux de rafraîchissement maximal, où la synchronisation adaptative ne s’applique pas. Il y a beaucoup de méthodes de synchronisation différentes là-bas, mais la synchronisation adaptative est très différente de Vsync et Fast Sync dont nous avons parlé, et au moins pour cette discussion, n’est pas vraiment pertinente.
Lecture complémentaire
- Les meilleurs moniteurs de jeu
- FreeSync 2 expliqué
- Les meilleures cartes graphiques 2018
Raccourcis d’achat
- Radeon RX 570 sur Amazon, Newegg
- Radeon RX 580 sur Amazon, Newegg
- GeForce GTX 1060 6GB sur Amazon
- GeForce GTX 1070 Ti sur Amazon, Newegg
- GeForce RTX 2070 sur Amazon, Newegg
- GeForce RTX 2080 sur Amazon, Newegg
- GeForce RTX 2080 Ti sur Amazon, Newegg
Crédit tête de mât : Photo par Jakob Owens