ACTU
L'attaque Tick des gens d'arme
par CBL,
email @CBL_Factor
Vous avez du noter que sur PC, malgré le fait que jeu tourne à 60 images par seconde en permanence (soit une image toutes les 16ms), vous avez l'impression qu'il saccade. Ce n'est pas qu'une impression. Le CPU et le GPU travaillent de manière asynchrone. Grosso modo le CPU balance ses ordres au GPU (rend ceci, affiche cela...) et le GPU les traite quand il a le temps. L'un des ordres est "ceci est le dernier ordre pour cette image". Cet ordre définit le delta temps mesuré.
Mais en fonction de votre occupation CPU, ce delta temps mesuré peut être plus ou moins long que 16ms. Pendant ce temps, le GPU a suffisament de patate pour calculer et afficher sans problème chaque image exactement tous les 16 ms. Et souvenez-vous : il y a quatre ans, je vous expliquais qu'afin de de conserver un comportement constant quelque soit le nombre d'images par seconde, il convient d'utiliser ce fameux delta temps dans les calculs via une fonction ayant généralement pour nom Tick, Step ou Update. Donc au final le comportement du jeu va être en retard ou en avance sur le rendu. Les micro-sacades sont le résultat.
Tout cela, le CTO de Croteam (The Talos Principle, Serious Sam) vous l'explique dans un bel article. La solution serait que l'AP graphique dise au jeu le moment exact où l'image est affichée à l'écran. Pour l'instant seul une extension de Vulkan semble proposer quelque chose dans ce genre et elle n'est pas accessible partout. Pire encore : les OS modernes utilisent ce qu'on appelle un compositeur. Cela permet entre autre des effets de transparence et de flou sur les fenêtres des applications. Cela permet aussi de faire alt-tab sur Windows 10 même dans un jeu en plein écran sans les soucis rencontrés avec XP et 7. Mais du coup, quand un jeu rend une image, cette dernière n'est pas affichée directement. Elle passe d'abord par le compositeur.
Mais en fonction de votre occupation CPU, ce delta temps mesuré peut être plus ou moins long que 16ms. Pendant ce temps, le GPU a suffisament de patate pour calculer et afficher sans problème chaque image exactement tous les 16 ms. Et souvenez-vous : il y a quatre ans, je vous expliquais qu'afin de de conserver un comportement constant quelque soit le nombre d'images par seconde, il convient d'utiliser ce fameux delta temps dans les calculs via une fonction ayant généralement pour nom Tick, Step ou Update. Donc au final le comportement du jeu va être en retard ou en avance sur le rendu. Les micro-sacades sont le résultat.
Tout cela, le CTO de Croteam (The Talos Principle, Serious Sam) vous l'explique dans un bel article. La solution serait que l'AP graphique dise au jeu le moment exact où l'image est affichée à l'écran. Pour l'instant seul une extension de Vulkan semble proposer quelque chose dans ce genre et elle n'est pas accessible partout. Pire encore : les OS modernes utilisent ce qu'on appelle un compositeur. Cela permet entre autre des effets de transparence et de flou sur les fenêtres des applications. Cela permet aussi de faire alt-tab sur Windows 10 même dans un jeu en plein écran sans les soucis rencontrés avec XP et 7. Mais du coup, quand un jeu rend une image, cette dernière n'est pas affichée directement. Elle passe d'abord par le compositeur.