Home Tests Dossiers <b>Half-Life 2, AA et GeForce FX : explications et détails</b>

<b>Half-Life 2, AA et GeForce FX : explications et détails</b>

Imprimer Envoyer
Écrit par Pascal Thevenier   
Dimanche, 20 Juillet 2003 23:01
Half-Life qui n'a été dévoilé qu'il n'y a peu de temps fait maintenant autant parler de lui que Doom III. Grossièrement, Doom III serait l'ami des GeForce FX alors qu'Half-Life 2 aurait plus d'affinités avec les Radeon DX9 d'ATI. Simple action de co-marketing de la part d'ATI et de NVIDIA ou réalité technique ? Probablement un peu des 2...


Doom III

Doom III utilisera principalement des shader simples (courts et de type 0.5 à 1.1 pour donner un équivalent DirectX) et ne profitera pas vraiment des calculs haute précision. Cela ne veut bien entendu pas dire qu'il ne sera pas réussi graphiquement. Son modèle d'éclairage global ainsi que son utilisation massive du bump-mapping promettent des graphismes de très bonne qualité. Les GeForce FX affectionnent particulièrement les shader simples en précision de type DX8. Qui plus est, les unités supplémentaires de calcul Z des GeForce FX pourraient être utilisées pour accélérer (ou éviter de décélérer par rapport aux Radeon!) certaines passes de rendu. Mais ceci n'est bien entendu qu'une supposition car rien n'indique que ce sera le cas. Les Radeon devraient bien s'en sortir mais ne pas profiter des optimisations propriétaires pour les cartes NVIDIA et une partie de leurs capacités ne seront pas exploitées car inutiles dans Doom III. Au final, les GeForce FX devrait mener le bal dans Doom III, reste à voir dans quelles proportions.


Half-Life 2

Half-Life 2 est très différent de Doom III. Il n'utilisera pas de modèle d'éclairage global mais fera appel à des shader plus complexes. Pour qu'il puisse tourner sur un maximum de machines, sa qualité graphique pourra varier fortement, bien plus que ce qu'on ne peut voir habituellement. Il va s'en dire que la qualité maximale ne fonctionnera que sur des cartes haut de gamme. Les cartes d'ATI ont ici tout pour surpasser les cartes de NVIDIA qui sont bien moins performantes lorsqu'il s'agit de traiter des pixel shader complexes. Encore une fois, il reste à voir dans quelle proportion... Celle-ci dépendra avant tout de la quantité des pixels qui seront traités à l'aide de shader complexes.


Antialiasing et Half-Life 2

Récemment, une autre rumeur plus ou moins confirmée a fait son apparition : Half-Life 2 pourrait ne pas être compatible avec l'antialiasing actuel, mais les Radeon DX9 pourraient contourner le problème. Autrement dit, pas d'antialiasing sur les GeForce FX. Difficile de dire si le débarquement de cette rumeur va avant tout aider ATI à vendre des cartes ou plutôt aider NVIDIA à se servir des fans pour faire pression sur Valve. Certains n'hésitent d'ailleurs pas à critiquer ouvertement Valve sans réellement connaître les raisons de ce problème.

D'où vient-il ? Ce n'est pas très clair, vu qu'il n'y a rien d'officiel, mais il serait lié à la méthode de sélection des textures samples utilisée par l'antialiasing de type multisampling dont font usage les dernières Radeon et GeForce FX. Pour comprendre le problème il faut d'abord savoir comment fonctionne l'antialiasing et de quels impératifs il découle.

L'antialiasing de type supersampling consiste à calculer l'image dans une résolution supérieure et à la réduire par la suite. Il est maintenant abandonné car bien trop gourmands en ressources. Il nécessite en effet de calculer 2, 4, 6 ou 8 fois chaque pixel, ce qui assassine littéralement les performances.

L'anti-aliasing de type multisampling a été conçu pour éviter ce problème d'énorme perte de performances. Il consiste à ne calculer qu'une fois la couleur du pixel pour toutes les samples. A première vue, on peut se dire que ça n'a aucun intérêt car un pixel va devenir un gros carré identique. Mais si les samples ont exactement la même couleur, elles ont une valeur Z propre, ce qui permet de définir les arrêtes plus précisément. Autrement dit, il n'améliore pas du tout le filtrage des textures mais lisse simplement les arrêtes, ce qui est le but de l'antialiasing, le filtrage anisotrope étant lui chargé d'améliorer le filtrage.


De gauche à droite : l'image calculée, normalement vue à 200%, avec supersampling 4X et enfin avec multisampling 4X.


De gauche à droite : l'image affichée, normalement, avec supersampling 4X et enfin avec multisampling 4X.


Les 2 techniques ont des avantages et des inconvénients. L'antialiasing de type multisampling est aujourd'hui utilisé presque exclusivement étant donné qu'il ne consomme que très peu de fillrate. A l'opposé, les shader complexes en consomment énormément ! Le multisampling a donc un effet sur les performances presque négligeable dans une application qui utilise massivement les pixel shader.


Half-Life 2 utiliserait de grosses textures dans lesquelles sont assemblées plusieurs petites. Il y a plusieurs raisons possibles à cela :
  • Les performances peuvent être légèrement améliorées.

  • Des formes non standard de textures peuvent être envisagées plus facilement (par exemple 3 textures rectangulaires dans une texture carré "classiques").

  • Le moteur du jeu utiliserait ces grosses textures pour éviter la répétitivité des textures en sélectionnant de petits morceaux, à chaque fois différents, de cette grosse texture.

  • ...
  • Le problème est que l'antialiasing multisampling n'est pas trop copain avec ce type de textures. Pourquoi ? Comme expliqué plus haut, la couleur du pixel n'est calculée qu'une seule fois pour les 2, 4, 6 ou 8 samples qui vont former ce pixel final. Il a donc fallu choisir à quelle sample correspondrait la couleur. Par facilité et parce que ça donne le meilleur résultat en général, il a été fixé que la couleur ne serait pas calculée pour une sample spécifique, mais pour une autre sample imaginaire située en leur milieu. Le calcul de la couleur correspond donc au milieu du pixel, ce qui est le meilleur choix… sauf dans quelques cas particuliers. Dans certains de ces cas particuliers, la sample imaginaire peut se situer en dehors du polygone et ne plus faire appel à la bonne partie de la texture, ce qui amène des bugs graphiques. C'est ce qui se passerait dans Half-Life 2.


    Un exemple de ce que peut être un bug lié au multisampling.

    Grossièrement, il y a, à priori, 3 grandes solutions à ce problème :
  • Retoucher toutes les textures d'Half-Life 2, décomposer les grosses textures, retravailler tout le design des niveaux et supprimer ou modifier la technique destinée à éviter l'impression de répétitivité dans les textures. Ceci demanderait un travail considérable à Valve, ce qui est difficilement envisageable. Qui plus est, cette solution pourrait amoindrir la qualité graphique d'Half-Life 2 ce qui n'est pas souhaitable.

  • Les fabricants de cartes graphiques pourraient activer l'antialiasing supersampling dans leurs drivers en laissant une option générale ou spécifique à Half-Life 2. C'est malheureusement très peu probable étant donné que l'impact sur les performances serait énorme. D'autant plus qu'Half-Life 2 utilisera massivement les pixel shader. Un FSAA 4X de ce type demanderait 4x plus de puissance au niveau des pixel shader. Lorsque l'on sait que les GeForce FX sont déjà à genoux avec des shader complexes, il semble très peu probable que NVIDIA décide de les enterrer complètement avec du supersampling. Et ce n'est pas tout : NVIDIA utilise ses unités Z supplémentaires pour booster l'antialiasing multisampling. Ce ne serait bien entendu plus possible en supersampling, ce qui accentuerait encore plus la chute de performance. Bref, solution à éviter chez ATI et à bannir chez NVIDIA.

  • Si le standard veut que la couleur des samples soit calculée suivant leur milieu, ce n'est pas une obligation. Ainsi, si le hardware est prévu pour être suffisamment flexible au niveau de l'antialiasing, il suffit de définir une autre position dans les cas où le problème se pose. Les cartes ATI seraient capables de le faire mais en dehors des spécificités de DX9.0, cette possibilité devant intervenir seulement avec DX9.1 et les Pixel et Vertex Shader 3.0. Mais la possibilité existe et une astuce pourrait permettre d'outrepasser cette limitation de DirectX9.

  • Cette petite explication vous aura peut être permis de mieux comprendre le problème qui est en fait très technique et difficile à expliquer d'autant plus que le marketing et les préférences de certains pour ATI ou NVIDIA s'en mêlent. En réalité, il n'y a pas vraiment de responsable à ce problème qui ne vient ni de Valve ni d'ATI ou NVIDIA. Il provient juste de la technique du multisampling qui, si elle apporte un gain énorme en performances, exige une attention particulière dans certains cas particuliers. Point particuliers qui ont été "oubliés" pendant un temps mais qui vont ressurgir de plus en plus avec les moteurs graphiques modernes.


    D'un côté, les fans de NVIDIA et possesseurs de GeForce FX ne sont pas contents. Ils en veulent à Valve d'avoir utilisé une technologie qui pourrait ne pas marcher complètement sur leur GeForce FX. Nous leur répondrons malheureusement qu'ils devront s'y faire car dans le domaine légèrement différent des shader, s'il fallait contenter les GeForce FX, beaucoup de possibilités de DirectX 9 devraient être écartées… alors qu'elles fonctionnent sans problème chez la concurrence. Nous ajouterons cependant que NVIDIA fait bien son travail en faisant tout pour convaincre les développeurs de ne pas trop les utiliser (rien ne dit que ce ne sera pas le cas Half-Life 2 d'ailleurs), même s'ils développent leur jeu depuis très longtemps sur les Radeon 9700/9800. Car c'est bien là le problème : les développeurs disposent des Radeon depuis près d'un an alors que l'arrivée des GeForce FX est intervenue bien plus tard et que personne ne s'attendait à ce qu'elles aient des limitations par rapport aux cartes d'ATI. Autrement dit, NVIDIA fait tout pour minimiser ces situations embêtantes, mais elles risquent d'arriver de temps en temps.

    D'un autre côté, les fans d'ATI ne peuvent qu'être ravis par cette information/rumeur. ATI est trop souvent relégué au second plan dans le domaine des optimisations et des options spécifiques dans les jeux. En fait, ATI ne semble pas disposer (ou avoir envie d'utliser) des moyens de NVIDIA pour faire le forcing auprès des développeurs… ou plutôt auprès des éditeurs devrions-nous dire puisqu'il s'agit de partenariat marketing et non technique (les aides aux développeurs étant aussi développées chez ATI que NVIDIA). Marketing qui, ne nous le cachons pas, peut bien entendu imposer des directives techniques aux développeurs si les accords le spécifient. Quoi qu'il en soit, l'intrépide qui a acheté une Radeon 9700 Pro à sa sortie (faisant fi du marketing de NVIDIA et des fans de NVIDIA qui se moquaient de lui en prétextant une arrivée rapide d'un NV30 atomiseur de Radeon) peut aujourd'hui se féliciter de son choix !
    Mise à jour le Mardi, 10 Novembre 2009 20:23
     
    Note des utilisateurs: / 3
    MauvaisTrès bien