Présentation de NVIDIA Reflex : des solutions d’optimisation et d’analyse de latence pour les jeux compétitifs

Par Seth Schneider on 1 septembre 2020 | Études de cas FramesWinGames GPU GeForce RTX Guides NVIDIA Reflex

Today, 73% of GeForce gamers play competitive multiplayer games, or esports. The most watched esport, League of Legends, drew over 100M viewers for its 2019 championship -- more than last year’s NFL Superbowl. With esports rivaling traditional sports in both viewership as well as playtime, it’s more important than ever for gamers to have their PC and graphics hardware tuned to allow them to play their best. This is why several years ago NVIDIA invested in an esports laboratory staffed by NVIDIA Research scientists, dedicated to understanding both player and hardware performance in esports. Today, we are excited to share with you the first major fruits of this research.

Alongside our new GeForce RTX 30 Series GPUs, we’re unveiling NVIDIA Reflex, a revolutionary suite of GPU, G-SYNC display, and software technologies that measure and reduce system latency in competitive games (a.k.a. click-to-display latency). Reducing system latency is critical for competitive gamers, because it allows the PC and display to respond faster to a user’s mouse and keyboard inputs, enabling players to acquire enemies faster and take shots with greater precision.

 

NVIDIA Reflex features two major new technologies:

NVIDIA Reflex SDK: A new set of APIs for game developers to reduce and measure rendering latency. By integrating directly with the game, Reflex Low Latency Mode aligns game engine work to complete just-in-time for rendering, eliminating the GPU render queue and reducing CPU back pressure in GPU intensive scenes. This delivers latency reductions above and beyond existing driver-only techniques, such as NVIDIA Ultra Low Latency Mode.

“NVIDIA Reflex technology arms developers with new features to minimize latency in their games. We’re seeing excellent responsiveness and player control with Fortnite running on the GeForce RTX 30 Series.” - Nick Penwarden, VP of Engineering, Epic Games.

“Valorant was designed from the beginning to be a precise, competitive FPS, and that means doing everything we can to ensure crisp, responsive gameplay. With GeForce RTX 30 Series and NVIDIA Reflex technology, we're able to serve players around the world with the lowest render latency possible.” - Dave Heironymus, Director of Technology - Valorant / Riot Games

NVIDIA Reflex will deliver latency improvements in GPU-intensive gaming scenarios on GeForce GTX 900 and higher NVIDIA graphics cards in top competitive games, including Fortnite, Valorant, Apex Legends, Call of Duty: Black Ops Cold War, Call of Duty: Modern Warfare - Warzone, and Destiny 2.

With popular mid-range cards, like the GTX 1660 Super, gamers can expect up to a 33% improvement in PC responsiveness with Reflex. Add in a RTX 3080 GPU and a 360Hz G-SYNC esports display, and gamers can play like the pros with the very lowest latency possible.

Analyseur de latence de NVIDIA Reflex : intégré aux nouveaux écrans de jeu G-SYNC (360 Hz) d’Acer, ASUS, MSI et Dell, et compatible avec les principaux périphériques d’esport d’ASUS, Logitech, SteelSeries et Razer, cet outil révolutionnaire permet d’analyser la latence système.

Il détecte les clics générés à partir de votre souris, puis calcule la durée nécessaire pour que les pixels correspondants (un coup de feu, par exemple) s’affichent à l’écran. Nécessitant plus de 6 000 € d’équipement (caméras haute vitesse et matériel spécialisé), ce type d’analyse était quasiment impossible pour les joueurs jusqu’à présent.

 

Whereas in the past gamers had to guess at their system’s responsiveness based on throughput metrics such as Frames Per Second (FPS), Reflex Latency Analyzer provides a much more complete and accurate understanding of mouse, PC, and display performance. Now with Reflex Latency Analyzer, competitive gamers can start a match with confidence, knowing their system is operating exactly as it should be.

 

In this article, we are going to provide a deep dive into system latency and NVIDIA Reflex technology -- so buckle up!

So What Is Latency Anyway?

Latency is a measure of time describing the delay between a desired action and the expected result. When we use a credit card to pay for something online or at the grocery store, the delay it takes for our purchase to be confirmed is latency.

Gamers primarily experience two kinds of latency: system latency and network latency.

Network latency is the round trip delay between the game client and the multiplayer server - more commonly known as “ping”.

 

This delay can affect our gameplay in a few different ways depending on how the game’s networking code handles network latency. Below are a few examples:

  • Delayed hit confirmations, like when your shot hits, but you don’t get the kill confirmation until much later. This can result in wasted ammo or delayed aiming transfers to your next target.
  • Delayed interactions with world objects, like opening doors or loot chests.
  • Delayed positions of opponents, which results in what is known as “peeker’s advantage” (more about this later)
 

Note that network latency is not the same as network instability issues, such as packet loss and out of order packets. Network instability can cause problems like rubberbanding and desync. Rubberbanding is when you move around in the game, only to be reset back to your location from a few seconds ago. Like a rubber band, you elastically snap back to your position as seen by the server. Desync is when you have packet loss, resulting in network stutter. This will look like enemies pausing for a second then teleporting forward into their correct position. Both of these common problems are not network latency issues, but typically happen when the packet has further to travel and thus are correlated with higher latency.

System latency is the delay between your mouse or keyboard actions and the resulting pixel changes on the display, say from a gun muzzle flash or character movement. This is also referred to as click-to-display or end-to-end system latency. This latency doesn’t involve the game server - just your peripherals, PC, and display.

 

This delay impacts gameplay in a number of different ways. Here are a few examples:

  • Delayed responsiveness, like when you move the mouse but your aim on screen lags behind.
  • Delayed shots, like when you shoot, but the bullet hole decals, bullet tracers, and weapon recoil lag behind the actual mouse click.
  • Delayed positions of opponents, known as “peeker’s advantage”. (yes, “peeker’s advantage” is also impacted by your system latency!)
 

At a high level, there are three main stages in system latency - the peripheral (such as a mouse), the PC, and the display. Unfortunately, this latency has been difficult to describe due to the use of the term “input latency” or “input lag” to describe different pieces of the system latency. 

For example, you can find “Input Latency” on the box of a mouse when talking about how long the mouse takes to process your click. You can also find it on the box of a monitor talking about how long the display takes to process the frame. And you can find it mentioned in games and software tools when they are really talking about how long the game takes to process your inputs. If all are named “input latency”, which is it then?

End to End System Latency

Let’s take a moment to dive one level deeper and define some terms that are more accurate than “Input lag”:

  • Peripheral Latency: The time it takes your input device to process your mechanical input and send those input events to the PC
  • Game Latency: The time it takes for the CPU to process input or changes to the world and submit a new frame to the GPU to be rendered
  • Render Latency: The time from when the frame gets in line to be rendered to when the GPU completely renders the frame
  • PC Latency: The time it takes a frame to travel through the PC. This includes both Game and Render Latency
  • Display Latency: The time it takes for the display to present a new image after the GPU has finished rendering the frame
  • System Latency:The time encompassing the whole end-to-end measurement - from the start of peripheral latency to the end of display latency

These are high level definitions that gloss over some of the details, though they do give us a great foundation to communicate about latency effectively. We will also go into more detail about each of the stages later in the article, so if you want to get more technical, skip ahead to the advanced section.

What’s The Difference Between FPS and System Latency?

In general, higher FPS correlates with lower system latency - however this relationship is far from 1-to-1. To better understand, let’s step back and think about how we can measure our interactions with our PC. First, there is the number of pictures our display can present to us per second. That number is a throughput rate called FPS (Frames Per Second). The second way is the time it takes for our actions to be reflected in one of those pictures -- a duration called System Latency.

If we have a PC that can render 1000 FPS, but it takes one second for our inputs to reach the display, that would be a poor experience. Conversely, if our actions are instantaneous but our framerate is 5 FPS, that won't be a great experience either.

So which one matters more? More than a year ago, we set out to answer this question and the findings are quite interesting. We published our full research at SIGGRAPH Asia, but in short, we found that system latency impacted subjects' ability to complete aiming tasks in an aim trainer much more than the rate of frames displayed on their monitor. But why is that?

Why Does System Latency Matter?

Let’s start to answer this question by looking at examples in real games:

 

First, let’s take a look at hit registration. Hit registration is a term gamers use when talking about how well the game registers their shots onto another player. We often blame hit registry when we KNOW we hit that shot. We have all been there. But is it really hit registration?

article-fpo

In this shot above, the mouse button was pressed when the crosshair was over the target, but we still missed. Due to system latency and the movement of the opponent, the game engine read that the position of your crosshair was actually behind the target. In fact, what you see on your display is behind the current state of the game engine. This is simply because it takes a while for the PC to process the information, render the frame, and present it to the display. In games where milliseconds matter, 30-40 extra ms of delay can mean missing that game winning frag.

Second, let’s cover “peeker's advantage”. At high levels of competitive play, you typically hold an angle when you have an extreme angle advantage (when you are further away from the corner than your opponent) to offset a characteristic of online games called “peeker’s advantage”.

Peeker’s advantage is the split second advantage the attacker gets when peeking around a corner at a player holding an angle. Because it takes time for the attacking player’s positional information to reach the defender over the network, the attacking player has an inherent advantage. To offset this, players will ‘jiggle peek’ the corner; quickly peeking and ducking back into cover, as it will allow them to see an enemy before they are seen, providing a split second advantage. This phenomena is often seen as a characteristic of the game networking code or network latency. However, system latency can play a large role in peeker’s advantage.

article-fpo

As you can see in the shot above, both players were equally distanced from the angle, and their pings were the same. The only difference was their system latencies.

Similar to the hit registration explanation, at higher system latency your view of the world is delayed - allowing for the target to see you before you see the target. If your system latency is much lower than your opponent, you can potentially mitigate peeker’s advantage completely. There are still the effects of the game networking at play here, but in general, lower system latency helps to both mitigate peeker’s advantage on defense and take advantage on attack.

Finally, let’s discuss aiming accuracy. In particular, flick shots. Drilling flicks is probably the most important training you can do for competitive games like CS:GO or Valorant. In a split second you must acquire your target, flick to it, and click with incredible precision that requires millisecond accuracy. But do you ever feel like no matter what you do, your flicks aren’t consistent?

 
Lower system latency increases aiming accuracy and precision

Aiming involves a series of sub-movements - subconscious corrections based on the current position of the crosshair relative to the target’s location. At higher latencies, this feedback loop time is increased resulting in less precision. Additionally, at higher average latencies, the latency varies more, meaning that it’s harder for your body to predict and adapt to. The end result is pretty clear - high latency means less precision.

And that brings us to the results of our study we mentioned earlier. In the chart below, you can see how lower latency had a large impact when measuring flick shot accuracy.

In competitive games, higher FPS and refresh rates (Hz) reduce your latency, delivering more opportunities for your inputs to end up on screen. Even small reductions in latency have an impact on flicking performance. In our latest Esports Research blog, the NVIDIA Research team explored the ways in which different levels of system latency affect player performance.

NVIDIA Research has found that even minor differences in system latency -- 12ms vs. 20ms, can have a significant difference in aiming performance. In fact, the average difference in aiming task completion (the time it takes to acquire and shoot a target) between a 12ms and 20ms PCs was measured to be 182ms - that is about 22 times the system latency difference. To put that into perspective, given the same target difficulty, in a 128 tick Valorant or CS:GO server, your shots will land on target an average of 23 ticks earlier on the 12ms PC setup. Yet most gamers play on systems with 50-100ms of system latency!

So does this translate into actually being more successful in games? Being good at competitive shooters involves much more than just mechanical skill. A keen game sense and battle-hardened strategy can go a long way towards getting a chicken dinner or clutching the round. However, looking at our PUBG and Fortnite data, we see a similar correlation between higher FPS (lower latency) and K/D (kill to death) ratios.

By no means does correlation mean causation. But applying the above science to this correlation, we see a lot of evidence to support the claim that higher FPS and lower system latency lead to landing shots more frequently - boosting K/D ratios.

Reducing System Latency with NVIDIA Reflex

With the launch of NVIDIA Reflex, we set out to optimise every aspect of the rendering pipeline for latency using a combination of SDKs and driver optimizations. Some of these techniques can result in large latency savings, while others will have more modest benefits, depending on the situation. Regardless, NVIDIA Reflex is our commitment to delivering gamers and developers tools to optimise for system latency.

NVIDIA Reflex SDK

The Reflex SDK allows game developers to implement a low latency mode that aligns game engine work to complete just-in-time for rendering, eliminating the GPU render queue and reducing CPU back pressure in GPU-bound scenarios.

In the above image, we can see that the queue is filled with frames. The CPU is processing frames faster than the GPU can render them causing this backup, resulting in an increase of render latency. The Reflex SDK shares some similarities with the Ultra Low Latency Mode in the driver; however, by integrating directly into the game, we are able to control the amount of back-pressure the CPU receives from the render queue and other later stages of the pipeline. While the Ultra Low Latency mode can often reduce the render queue, it can not remove the increased back-pressure on the game and CPU side. Thus, the latency benefits from the Reflex SDK are generally much better than the Ultra Low Latency mode in the driver.

When developers integrate the Reflex SDK, they are able to effectively delay the sampling of input and game simulation by dynamically adjusting the submission timing of rendering work to the GPU so that they are processed just-in-time.

Additionally, the SDK also offers a feature called Low Latency Boost. This feature overrides the power saving features in the GPU to allow the GPU clocks to stay high when heavily CPU-bound. Even when the game is CPU-bound, longer rendering times add latency. Keeping the clocks higher can consume significantly more power, but can reduce latency slightly when the GPU is significantly underutilised and the CPU submits the final rendering work in a large batch. Note that if you do not want the power tradeoff, you can use Reflex Low Latency mode without the Boost enabled.

article-fpo

Competitive shooters are dynamic - changing back and forth between GPU and CPU boundedness. If there is an explosion with lots of particles and the game becomes GPU-bound, the Reflex SDK will keep the latency low by not letting the work for the GPU queue up. If the rendering is simple and the game is CPU bound, the Reflex SDK will keep latency low by maintaining high GPU clock frequencies. Regardless of the state of the rendering pipeline, the Reflex SDK intelligently reduces render latency for the given configuration. With the Reflex SDK, gamers can stay in the rendering latency sweet spot without having to turn all their settings to low.

At the time of the Reflex SDK announcement, the following games plan to support NVIDIA Reflex with our next Game Ready Driver on September 17th, 2020: Apex Legends, Fortnite, and Valorant. Additionally, the following games have announced support for NVIDIA Reflex coming soon: Call of Duty: Black Ops Cold War, Cuisine Royale, Destiny 2, Enlisted, Kovaak 2.0, and Mordhau.

The NVIDIA Reflex SDK supports GPUs all the way back to 2014’s GeForce GTX 900 Series products. However, the Low Latency Boost on GeForce RTX 30 Series GPUs will maintain a slightly higher clock rate to further reduce latency.

For those of you who really want to dig into how the SDK works, we will cover the rendering pipeline, CPU/GPU-boundedness, and how latency is reduced in more detail in the advanced section.

Enhanced Control Panel Options for Latency

Ultra Low Latency Mode

If a game doesn't support the Reflex SDK, you can still get partial latency improvements by enabling NVIDIA Ultra Low Latency mode from the NVIDIA Control Panel. Simply open the control panel and navigate to Manage 3D Settings, then Low Latency Mode, and select the Ultra option. As mentioned earlier in the article, this will help reduce the rendering latency, but without full control of the pipeline.

If a game supports the NVIDIA Reflex Low Latency mode, we recommend using that mode over the Ultra Low Latency mode in the driver. However, if you leave both on, the Reflex Low Latency mode will take higher priority automatically for you.

Reflex SDK reduces system latency beyond the Ultra Low Latency mode in 3D Settings

Prefer Maximum Performance

The NVIDIA graphics driver has long shipped with an option called “Power Management Mode”. This option allows gamers to choose how the GPU operates in CPU-bound scenarios. When the GPU is saturated with work, it will always run at maximum performance. However, when the GPU is not saturated with work there is an opportunity to save power by reducing GPU clocks while maintaining FPS.

Similar to the Low Latency Boost feature in the Reflex SDK, the Prefer Maximum Performance mode overrides the power savings features in the GPU and allows the GPU to always run at higher clocks. These higher clocks can reduce latency in CPU-bound instances at a tradeoff of higher power consumption. This mode is designed for gamers who want to squeeze every last microsecond of latency out of the pipeline regardless of power.

With GeForce RTX 30 Series GPUs, we are able to set this clock value higher than before, allowing the GPU to target the absolute lowest render latency possible when CPU-bound. Users with older GPUs can still turn on Prefer Maximum Performance and hold clocks to base frequencies.

Automatic Tuning in GeForce Experience

With the release of a new GeForce Experience update coming in September, there’ll be a new beta feature in the In-game overlay performance panel that allows gamers to tune their GPU for lower render latency with a single click.

This advanced automatic tuner scans your GPU for the maximum frequency bump at each voltage point on the curve. Once it has found and applied the perfect settings for your GPU, it also retests and maintains your tuning over time - keeping your tune stable.

Stay tuned to GeForce.com for further details and a how-to for this exciting new feature.

Analyse de la latence système avec NVIDIA Reflex

La latence système était jusque-là difficile à analyser. C’est pour cette raison, entre autres, qu’elle n’avait jamais été abordée de façon aussi étendue. Afin d’analyser la latence, votre appareil de mesure doit être capable d’identifier précisément les points de début et de fin.

L’analyse de la latence système n’est généralement effectuée qu’avec des caméras haute vitesse et des équipements techniques coûteux et complexes, ainsi qu’avec une souris modifiée et un système LED permettant de suivre les clics de la souris. Grâce à une caméra haute vitesse (1 000 FPS), vous pouvez mesurer un temps de latence minimal de 1 ms. Cependant, le prix de l’équipement de base pour une configuration de ce type ne démarre pas à moins de 6 000 €. Quand bien même vous disposeriez de cet équipement, chaque mesure prendrait environ 3 minutes, une durée bien trop longue pour 99,9 % des joueurs.

Analyseur de latence de NVIDIA Reflex

Lancés cet automne, les écrans G-SYNC (360 Hz) compatibles prendront en charge une nouvelle fonctionnalité : l’analyseur de latence de NVIDIA Reflex. Grâce à cet outil révolutionnaire, les joueurs pourront mesurer la réactivité de leur système, ce qui leur permettra de comprendre parfaitement et de modifier les performances de leurs PC avant de démarrer une nouvelle partie.

 

Pour accéder à cette fonctionnalité, il vous suffira de brancher votre souris au port USB de l’analyseur de latence sur un écran G-SYNC (360 Hz). Le port USB Reflex de l’écran constitue un simple relais vers le PC qui surveille les clics de la souris sans augmenter la latence.

L’analyseur de latence de NVIDIA Reflex détecte les clics provenant de la souris et mesure la durée nécessaire au changement des pixels correspondants à l’écran (un coup de feu, par exemple) afin de calculer la latence système totale.

La nouvelle interface de performance de GeForce Experience indique les mesures de latence en temps réel. Pour les consulter, vous devrez activer le paramètre Mesures de latence dans les options Interface de performance lors de sa sortie en septembre.

L’analyseur de latence de NVIDIA Reflex décompose la latence système en plusieurs phases : souris, PC + écran et système.

Vous pouvez utiliser n’importe quelle souris avec l’analyseur de latence de NVIDIA Reflex afin d’obtenir la latence PC + écran (à l’exception des souris Bluetooth). Cependant, l’utilisation d’une souris compatible Logitech, Razer ou ASUS vous permettra de mesurer la latence du périphérique et d’obtenir la latence système de bout en bout.

Par ailleurs, nous publierons une base de données ouverte regroupant les latences de souris moyennes et qui pourra être complétée si votre souris est reconnue par GeForce Experience. La communauté pourra prochainement ajouter des souris à cette base de données. Nous en reparlerons ultérieurement.

Pour l’heure, trois fabricants de souris partenaires ont annoncé prendre en charge l’analyseur de latence de NVIDIA Reflex : ASUS, Logitech et Razer. Consultez régulièrement leurs sites web et comptes de réseaux sociaux pour en savoir davantage sur la compatibilité de l’analyseur de latence de NVIDIA Reflex. Dès cet automne, vous pourrez également profiter des écrans G-Sync (360 Hz) d’ASUS, ACER, Dell et MSI, qui intègreront l’analyseur de latence de NVIDIA Reflex.

Mesures logicielles de NVIDIA Reflex

Si vous souhaitez analyser votre latence avant même de passer à un écran 360 Hz, c’est possible. Pour tout jeu intégrant le kit de développement de NVIDIA Reflex, vous pouvez ajouter les latences de jeu et de rendu à vos statistiques en jeu. Si cette mesure ne représente pas la latence totale, elle constitue un excellent point de départ pour l’optimisation de ce facteur.

GeForce Experience propose également une interface de performance qui vous permet de suivre la latence de rendu immédiate dans n’importe quel jeu. La latence de rendu immédiate suit l’appel actuel via la file d’attente de rendu et le rendu du GPU. Dans la mesure où il s’agit de l’appel final d’une image, la latence de rendu immédiate sera légèrement inférieure à la latence de rendu mesurée avec le kit de développement de NVIDIA Reflex. Toutefois, elle devrait vous donner une idée assez précise de cette valeur. Dans une prochaine mise à jour, nous ajouterons la latence de rendu à GeForce Experience.

Vous devrez simplement passer aux dernières versions du pilote Game Ready de GeForce et de GeForce Experience plus tard dans le mois. Vous devrez alors accéder au menu Performances, avant de sélectionner Mesures de latence et d’activer Interface de performance.

Amélioration de votre qualité de tir avec une latence réduite

Outre les outils d’analyse de la latence, nous nous sommes associés à The Meta, développeur de KovaaK 2.0, afin de proposer le nouveau mode NVIDIA Experiments dans une future mise à jour client, qui permettra aux joueurs d’améliorer leurs performances ainsi que leurs compétences.

Vous pouvez passer en mode NVIDIA Experiments depuis le bac à sable ou l’outil d’amélioration de la qualité de tir (aim trainer). Une fois le mode NVIDIA Experiments activé, vous pourrez sélectionner le test de votre choix. Nous avons par ailleurs intégré le kit de développement de NVIDIA Reflex à KovaaK 2.0. Celui-ci s’ajoute à d’autres technologies qui apportent une nette différence pour les joueurs entre une latence élevée et une latence faible.

En effectuant ces tests, vous pouvez non seulement améliorer votre qualité de tir mais également contribuer à d’éminentes recherches concernant l’esport. Notre partenariat avec The Meta dans le cadre de KovaaK 2.0 nous permet de réaliser des tests et de mettre fin à certaines idées reçues dans le domaine des jeux compétitifs. Par exemple, l’un de nos premiers tests vise à fournir une explication scientifique quant au choix de la couleur de cible, en fonction des discussions des joueurs à ce sujet dans Valorant.

Consultez dès maintenant la page Steam de KovaaK 2.0 pour ne pas manquer la sortie du mode NVIDIA Experiments.

Prochain niveau : Latence système – Mode expert

Nous allons désormais rentrer un peu plus dans les détails de la latence système. Cette section aborde la façon dont vos clics de souris sont vraiment restitués sur les pixels de votre écran, le concept du pipeline de jeu et de rendu, l’impact des états CPU/GPU bound sur la latence, les superpositions dans le pipeline de rendu ainsi que quelques outils qui vous permettront de visualiser ce qui se passe sur votre système.

Restitution de vos actions à l’écran étape par étape

Comment vos clics sont-ils vraiment restitués à l’écran ? Le tableau ci-dessous décompose les différentes phases de ce pipeline. Si celles-ci se superposent, elles commencent à gauche et se terminent à droite.

Nous allons décomposer chaque case de la deuxième ligne du schéma ci-dessus. Veuillez noter que les cases ne sont pas à l’échelle. Pour des raisons de simplicité, nous allons nous concentrer sur la souris. Cependant, le même raisonnement s’applique à tout autre périphérique USB connecté au PC.

  • Souris (matériel) – Il s’agit du premier contact électrique, lorsque la souris est prête à envoyer l’événement dans le câble. Certaines caractéristiques de la souris (telles que le délai anti-rebond) augmentent la latence lors de l’enfoncement du bouton. La fonction anti-rebond empêche tout clic indésirable de la souris. Ces clics supplémentaires sont généralement appelés doubles clics, lorsque deux clics sont envoyés au lieu d’un seul en raison d’une pression trop élevée. La latence n’est donc pas le seul facteur de performance clé de votre souris.
  • Port USB de la souris (matériel) – Une fois le délai anti-rebond passé, la souris doit attendre la prochaine interrogation avant d’envoyer les paquets dans le câble. Ce délai intervient au niveau du port USB (matériel).
  • Port USB de la souris (logiciel) – Le délai au niveau du port USB de la souris (logiciel) correspond à la durée nécessaire au système d’exploitation et au pilote de la souris pour traiter le paquet USB.
  • Échantillonnage – Les clics sont transmis dans le système d’exploitation en fonction de la fréquence d’interrogation de la souris. Ils devront alors attendre la prochaine phase d’échantillonnage du jeu. Ce délai d’attente est appelé « latence d’échantillonnage ». Cette latence peut augmenter ou diminuer selon la fréquence d’images du CPU.
  • Simulation – Les jeux doivent constamment mettre à jour l’état de l’environnement. Cette mise à jour est généralement appelée « simulation ». La simulation inclut notamment la mise à jour d’animations, de l’état du jeu et des changements induits par les actions des joueurs. Les entrées de la souris sont appliquées à l’état du jeu lors de la simulation.
  • Envoi du rendu – Alors que la simulation détermine où placer les éléments dans l’image suivante, elle commence à envoyer les tâches de rendu à l’environnement d’exécution de l’API graphique. L’environnement d’exécution transmet à son tour les commandes de rendu au pilote graphique.
  • Pilote graphique – Le pilote graphique est chargé de communiquer avec le GPU et de lui envoyer des regroupements de commandes. En fonction de l’API graphique, le pilote peut effectuer ce regroupement pour le développeur, lequel devra regrouper les tâches de rendu dans le cas contraire.
  • File d’attente de rendu – Une fois les tâches envoyées le pilote au GPU, celles-ci sont ajoutées à la file d’attente de rendu. La file d’attente de rendu permet d’alimenter constamment le GPU en mettant en mémoire tampon des tâches à exécuter. Cela permet de maximiser la fréquence d’images (FPS) mais peut entraîner des latences. 
  • Rendu – Il s’agit du temps nécessaire au GPU pour restituer toutes les tâches associées à une image. 
  • Composition – Selon votre mode d’affichage (plein écran, sans bordure, avec fenêtres), le gestionnaire des fenêtres du bureau dans le système d’exploitation doit soumettre des tâches de rendu supplémentaires afin d’assembler le reste du bureau selon une image spécifique. Cette opération peut augmenter la latence. Nous vous recommandons de toujours utiliser le mode plein écran afin de minimiser la latence de composition !
  • Balayage – Une fois la composition terminée, la mémoire tampon finale est prête à être affichée. Le GPU signale alors que la mémoire tampon est prête à être affichée et modifie la mémoire tampon à balayer. Si la synchronisation verticale est activée, ce basculement de mémoire tampon peut être bloqué en raison du délai d’attente de la synchronisation verticale de l’écran. Lorsque le GPU est prêt, l’image suivante s’affiche à l’écran, ligne par ligne, en fonction de la fréquence d’actualisation (Hz) de l’écran. Le balayage étant une fonction de la fréquence d’actualisation, nous l’incluons dans la latence d’affichage.
  • Traitement de l’écran – Le traitement de l’écran est le temps requis par l’écran pour traiter l’image entrante (lignes de balayage) et déclencher la réponse des pixels.
  • Réponse des pixels – Il s’agit de la durée nécessaire à un pixel pour passer d’une couleur à une autre. Dans la mesure où les pixels sont des cristaux liquides réels, leur modification prend du temps. Les temps de réponse des pixels peuvent varier selon l’intensité des changements requis ainsi que la technologie de la dalle.

Pipeline de latence (GPU bound)

Maintenant que nous savons comment un clic est restitué à l’écran, parlons performances. Lors du profilage des jeux, nous essayons généralement de déterminer les performances dans les états GPU bound ou CPU bound. Cette méthode s’avère très utile pour comprendre les performances du système. Mais en réalité, les jeux passent souvent d’un état à l’autre.

Commençons par l’état GPU bound lorsque la synchronisation verticale est désactivée.

Dans cet exemple, nous avons simplifié le pipeline en cinq grandes phases : périphérique, CPU, file d’attente de rendu, GPU et écran.

Analysons l’image 4 et regardons ce qui se passe pour chaque phase :

  • Périphérique – L’entrée de la souris ou du clavier peut être générée à tout moment par l’utilisateur. Dans cet exemple, l’utilisateur a cliqué sur la souris avant que le CPU ne soit en mesure d’accepter l’entrée. Par conséquent, l’événement d’entrée est en attente, de la même manière qu’une personne attend le prochain train à la gare.
  • CPU – Le début du travail du CPU (simulation) débute généralement après ce que l’on appelle le bloc présent. Dans le cas d’un état GPU bound, le CPU exécute son travail plus rapidement, prenant ainsi de l’avance sur le GPU. Cependant, pour la plupart des API graphiques (DX11, DX12, Vulkan, etc.), le nombre d’images pouvant être exécutées en avance par le segment d’envoi de rendu du CPU est limité. Dans le cas ci-dessus, le CPU est autorisé à exécuter deux images en avance. La phase relative au CPU se termine lorsque le pilote a terminé d’envoyer les tâches au GPU. En réalité, elle se superpose avec la phase concernant la file d’attente de rendu, mais nous en reparlerons plus tard.
  • File d’attente de rendu – Il s’agit tout simplement d’une file d’attente. Le premier élément de la file est le premier à en sortir. Si le GPU travaille encore sur l’image précédente lorsque le CPU envoie d’autres tâches, celui-ci place ce travail de rendu dans la file d’attente de rendu. Cette file d’attente peut s’avérer utile afin de garantir une alimentation permanente du GPU et de contribuer à la fluidité des images, mais au détriment d’une latence parfois considérablement accrue.
  • GPU – Il s’agit du rendu réel de l’image par le GPU. Dans le cas d’un état GPU bound, les tâches arrivent les unes après les autres, car le GPU constitue le goulot d’étranglement du pipeline.
  • Écran – Ce cas s’applique lorsque la synchronisation verticale est désactivée. Une fois le rendu du GPU terminé, la nouvelle mémoire tampon est immédiatement balayée, peu importe où en est l’écran dans le processus de balayage. Cela génère un déchirement de l’image, qui reste toutefois privilégié par les joueurs, car il implique une plus faible latence. Un article sera bientôt disponible sur la synchronisation verticale et la technologie G-SYNC.

Maintenant que nous avons compris tout ce qui se passait, nous pouvons constater que le GPU constitue le goulot d’étranglement du pipeline, provoquant ainsi une accumulation des tâches dans la file d’attente de rendu et un fonctionnement en avance du CPU. Dans l’image ci-dessus, nous pouvons constater que la durée d’image sert d’indicateur de fréquence. Dans ce cas, un GPU plus rapide générera une fréquence d’images plus élevée.

De plus, nous pouvons observer la latence système, qui débute dès le premier clic de la souris et se termine à la fin de l’affichage. La latence est généralement plus élevée lorsque les performances sont limitées par le GPU (GPU bound), en raison de la file d’attente de rendu et de l’avance dans l’exécution du jeu par rapport au bloc présent, ce qui génère de nouvelles images dont l’envoi sera retardé.

Pipeline de latence avec le kit de développement de NVIDIA Reflex

Nous allons maintenant jeter un œil aux effets du kit de développement de NVIDIA Reflex sur le pipeline dans le cas d’un état GPU bound :

Comme vous pouvez le constater, la file d’attente de rendu a pratiquement disparu. Le kit de développement de NVIDIA Reflex ne la désactive pas, mais la vide simplement. Comment cela fonctionne-t-il ?

Pour l’essentiel, le jeu est capable d’améliorer le rythme du CPU de manière à ce qu’il ne puisse pas s’exécuter en avance. Il est par ailleurs possible de soumettre les tâches au GPU selon la méthode juste-à-temps afin que le processus de traitement se déroule sans interruption. Par ailleurs, en retardant le travail du CPU, vous pouvez échantillonner des données d’entrée à la milliseconde près, ce qui permet de réduire la latence.

De plus, lorsque la file d’attente de rendu est réduite grâce au kit de développement, la latence de jeu commence également à diminuer. Ces baisses s’expliquent par la réduction de la contre-pression générée par la file d’attente de rendu lorsque les performances sont limitées par le GPU.

Si vous avez déjà optimisé votre latence, cela revient à utiliser un puissant limiteur de fréquence d’images en jeu afin de réduire la latence. Un limiteur de fréquence d’images en jeu efficace bloquera le jeu au bon endroit, contribuant ainsi à la diminution de la latence et de la contre-pression du CPU.

La plateforme NVIDIA Reflex agit différemment et permet d’augmenter votre fréquence d’images au-delà de votre limite, réduisant ainsi davantage votre latence. Vous pouvez considérer cet outil comme un limiteur de fréquence « dynamique », qui garantit une latence optimale à tout moment.

Pipeline de latence (CPU bound)

Lors de l’utilisation du mode à faible latence de NVIDIA Reflex dans le cas d’un état GPU bound, le pipeline agit comme s’il s’agissait d’un état CPU bound, même si le GPU est totalement saturé et utilisé. Penchons-nous sur un pipeline concret dans le cas d’un état CPU bound.

Comme vous pouvez le constater dans ce tableau, la fréquence d’images est limitée par le CPU. Dans la mesure où le CPU ne peut pas s’exécuter en avance par rapport au GPU, il n’y a pas de file d’attente de rendu dans ce cas. En règle générale, l’état CPU bound génère une latence plus faible que l’état GPU bound.

Dans ce cas, un GPU plus rapide n’offrira pas une meilleure fréquence d’images mais réduira votre latence. Lorsque la synchronisation verticale est désactivée ou que la technologie G-SYNC est utilisée, un GPU plus rapide permet d’envoyer plus rapidement l’image rendue à l’écran.

C’est pour cette raison que le jeu devient plus réactif si vous abaissez les niveaux de vos paramètres. La diminution des paramètres peut souvent générer un état CPU bound (absence de file d’attente) et raccourcir simultanément la durée de rendu du GPU, abaissant davantage la latence.

Grâce au mode à faible latence de NVIDIA Reflex, les joueurs n’ont pas besoin d’ajuster leurs paramètres par défaut au niveau le plus bas. Comme il est possible de réduire efficacement la file d’attente de rendu, les tâches de rendu supplémentaires augmentent uniquement la durée de rendu du GPU.

De plus, même dans le cas d’un état CPU bound, le mode à faible latence de NVIDIA Reflex propose le paramètre Low Latency Boost, qui désactive les fonctionnalités d’économie d’énergie au profit d’une latence légèrement plus faible. Dans le cas d’un état CPU bound où l’utilisation du GPU est faible, les horloges du GPU conservent une fréquence élevée afin d’accélérer le traitement et de pouvoir restituer une image à l’écran le plus rapidement possible. En règle générale, si le paramètre Low Latency Boost offre un avantage très limité, il permet d’éliminer la moindre milliseconde de latence du pipeline.

Latence du PC et superposition

Prêt à passer à la vitesse supérieure ? Analysons maintenant une seule image, mais cette fois-ci avec toutes les superpositions dans le pipeline.

Comme vous pouvez le constater, la majeure partie de la superposition se trouve au niveau de la latence du PC, entre la simulation et la finalisation du rendu du GPU. Pourquoi une telle superposition ?

Les images sont rendues sous formes de petites tâches, appelées drawcalls. Puis, ces appels sont regroupés en paquets de travail. Ces paquets de travail sont ensuite envoyés par le pilote graphique au GPU pour leur restitution. Ainsi, chaque phase peut débuter avant la fin de la phase précédente, ce qui fractionne l’image en plusieurs morceaux.

Au fur et à mesure que les tâches parcourent le pipeline, elles sont stockées dans la mémoire tampon. Ce processus se poursuit jusqu’à ce que l’image soit entièrement rendue. Une fois le rendu terminé, la mémoire tampon précédente est remplacée par une autre mémoire tampon disponible dans la chaîne d’échange et envoyée pour balayage.

Cet aspect est très important pour la compréhension des latences de rendu et de jeu. En règle générale, ces deux latences se superposent. Autrement dit, la latence totale ne correspond pas à la somme de celles-ci.

Conclusion

La latence système constitue non seulement l’évaluation quantitative du comportement de votre jeu mais également le facteur clé qui influe sur la précision de tir des joueurs dans le cas de jeux de tir à la première personne. Grâce à NVIDIA Reflex, les développeurs et joueurs peuvent optimiser leur latence système et, pour la première fois, mesurer facilement cette valeur.

En résumé, NVIDIA Reflex offre une suite complète de technologies d’optimisation de la latence :

  • Technologies de réduction de la latence :
    • Kit de développement de NVIDIA Reflex – Kit de développement utilisé pour activer le mode à faible latence de NVIDIA Reflex dans le cas d’une utilisation intensive du GPU
    • Amélioration des options du panneau de configuration du pilote pour la latence – Option Privilégier des performances maximales améliorée et mode à ultra-faible latence
    • GeForce Experience : optimisation des performances – Optimisation automatique pour le surcadençage du GPU (1-Click)
  • Outils d’analyse de la latence :
    • Indicateurs du kit de développement de NVIDIA Reflex – Marqueurs de la latence de jeu et de rendu permettant aux développeurs d’afficher des mesures de latence en jeu
    • Analyseur de latence de NVIDIA Reflex – Nouvelle fonctionnalité des écrans G-SYNC (360 Hz) permettant, pour la première fois, de mesurer la latence système de bout en bout
    • GeForce Experience : surveillance des performances – Barre latérale et interface en jeu affichant des mesures de performance en temps réel, y compris la latence

Nous sommes heureux de vous proposer NVIDIA Reflex, pour une expérience de jeu encore plus réactive. La réduction de la latence est une priorité absolue chez NVIDIA. En ce sens, nous continuerons de perfectionner la plateforme NVIDIA Reflex et de développer notre écosystème de partenaires.

Nous sommes impatients de connaître votre avis ! Rendez-vous sur le forum de la communauté Reflex afin d’aborder des sujets relatifs à la latence et de trouver des réponses à vos questions concernant la plateforme NVIDIA Reflex.

Le mode à faible latence de NVIDIA Reflex sera pris en charge par le pilote Game Ready, qui sera disponible le 17 septembre. De plus, notre plateforme sera progressivement prise en charge par les jeux de nos partenaires cette année. Des écrans de jeu G-SYNC (360 Hz) seront proposés dès cet automne par ACER, ASUS, Dell et MSI.

Comments