Selectionnez un article :

Selectionnez une page :

Retro : 3DFX Voodoo 5 6000
VSA100 : Le coeur du monstre

Au coeur de la Voodoo 5 6000 se trouvent 4 puces VSA-100 dont les principales caractéristiques sont:

    - Fréquence de fonctionnement de 166MHz
    - Gravé en 0.25 microns
    - 14 millions de transistors
    - Interface AGP 4x et PCI
    - Jusqu'à 64MB de mémoire accessible en 128 bits par VSA-100
    - Fillrate de 333Mpixel/s en single texturing ou 166 Mpixel/s en dual texturing

Le VSA-100 (Voodoo Scalable Architecture) peut être vu comme une grosse mise à jour du processeur équipant la Voodoo 3 afin de revenir dans la course face à ATI ou nVidia. On peut citer par exemple la possibilité d'effectuer un rendu 32 bits ainsi que de gérer des textures de 2048x2048 pixels. A la fréquence de 166MHz la bande passante mémoire théorique par VSA-100 est donc de (128 bits *166*106 Hz)/8 bits = 2.67GB/sec. Certaines rares Voodoo 5 disposent également de processeurs VSA-101 (Daytona) qui est un VSA-100 gravé en 0.18 microns et permet par conséquent de dégager moins de chaleur.

 

  • Le SLI

Le SLI du VSA-100 n'a plus rien à voir avec ce que l'on a connu auparavant pour les Voodoo 2. En effet avec l'ancien système on était limité à 2 cartes car le rendu s'effectuait une ligne sur deux pour chaque carte. Le VSA-100 a été pensé dans le but de pouvoir être utilisé avec jusqu'à 32 de ses semblables. Voyons l'exemple de la Voodoo 5 5500:

 

 

Dans ce cas, nous nous trouvons dans une situation ou 2 VSA-100 sont connectés, l'un est maître et l'autre esclave. Tout d'abord il faut savoir que chaque puce dispose de sa propre mémoire, sur une Voodoo 5 5500 64MB on a en fait 2 VSA-100 disposant chacun de 32MB. Tentons d'en expliquer le fonctionnement:

  1. Le maître va se charger d'analyser l'image à rendre et de la découper en plusieurs zones de 1 à 128 lignes afin de la distribuer équitablement le travail aux deux processeurs.
  2. Le maître envoie les données que l'esclave doit traiter.
  3. L'esclave va effectuer le rendu de sa partie et renvoyer le résultat au maître.
  4. Les données des deux VSA-100 sont combinées dans le frame buffer du VSA-100 maître afin d'être affichées.

Nous n'avons malheureusement trouvé aucune documentation concernant la bande passante disponible entre les 2 VSA-100 bien qu'il soit très probable que ce soit également une liaison 128bits/166MHz pour des questions évidentes de design...

Il existe cependant certains problèmes intrinsèques à cette architecture, notamment le fait qu'une texture peut se retrouver en même temps dans la mémoire du VSA-100 maître et de l'esclave si les deux en ont besoin pour effectuer leur part de rendu. La bande passante mémoire n'est pas cumulable non plus car on ne peut pas dire que 2 VSA-100 ont une bande passante de 2* 2.67GB/sec. En outre, nous verrons plus tard que ce moyen de communication entre VSA-100 n'est valable *QUE* avec une solution à 2 puces, il faut avoir recours à un pont PCI-PCI externe dans les autres cas comme la Voodoo 5 6000.

 

  • Le FXT1

Une autre technologie apportée par le VSA-100 est la compression de textures FXT1. Cette méthode de compression a l'avantage d'être open source et par conséquent son code source est disponible pour tout le monde. Le FXT1 se distingue principalement du S3TC employé actuellement par la possibilité d'utiliser 4 algorithmes d'encodage par image alors que le S3TC (=DXTC) n'en utilise qu'un. La décompression de textures FXT1 est réalisée en hardware par le VSA-100. Cette compression n'a malheureusement jamais été intégrée par Microsoft dans DirectX ce qui n'a pas permis à cette technologie de décoller...certains jeux comme Serious Sam SE l'exploitent cependant.

 

 

L'avantages d'utiliser une compression est faciles à comprendre: augmenter le nombre de textures maximal pouvant être utilisées dans une scène car chaque texture occupe moins de mémoire ou son corollaire qui est d'utiliser des textures plus grandes tout en prenant moins de mémoire ou encore appliquer de multiples textures à un objet (bump mapping).

 

 

  • Le T-Buffer

Dès 1984 des gens de la division ordinateurs de Lucas Arts ont publié un document nommé "Distributed Ray Tracing" mettant le doigt sur les principaux artéfacts d'affichage (aliasing) présents dans le rendu vidéo. Suite a cela de nouvelles techniques de Ray Tracing ont été développées et ont permis une avance considérable dans la qualité des rendus. Le problème avec ces techniques est le fait qu'elles ne pouvaient pas être appliquées en temps réel. Une solution à ce problème a été trouvée en 1990 par les gens de SGI en publiant un document intitulé "The Accumulation Buffer: Hardware Support for High-Quality Rendering". Cet Accumulation Buffer est une mémoire permettant de stocker temporairement de multiples rendus d'une scène et donc d'y effectuer un traitement. Le T-Buffer de 3dfx en est directement dérivé.

Le T-Buffer est sans doute ce qui a été le plus mis en avant sur le plan marketing lors de la sortie du VSA-100 et c'est en effet l'élément clé de cette puce. On voit ici à quel endroit vient se mettre cette mémoire tampon par rapport a une carte graphique qui en est dépourvu:

 

 

Ce T-Buffer permet de stocker plusieurs images légèrement différentes d'une même scène dans le but d'obtenir plusieurs effets visuels intéressants comme:

- Le FSAA (forme de spatial anti-aliasing): nous allons y revenir par la suite car c'est l'élément l'utilisation la plus intéressante du T-Buffer. Le but du full scene anti-aliasing est d'éviter d'avoir des effets d'escalier ou de pixel popping sur les images.

 


- Le motion blur (temporal anti-aliasing): cette technique permet de créer un effet de "flou" quand un objet se déplace, une traînée en quelque sorte. Le but est d'avoir un rendu du mouvement plus réaliste et par la même occasion améliorer l'impression de fluidité.

 


- Le depth of field blur (focal anti-aliasing): cet effet permet de simuler un effet de focalisation très couramment utilisé dans le cinéma. Il s'agit réellement de "faire le point" sur un objet comme avec un appareil photo. On le voit très clairement ci-dessous:

 

 


- Les soft shadows: cette fonction permet de générer des ombres réalistes sans coupure nette, elle permet de générer une zone de pénombre en quelque sorte et donc de mieux coller à la réalité.

- Les soft reflections: prenons le cas d'un crayon posé perpendiculairement sur une plaque en métal brossé. Dans la réalité la réflexion du crayon sur la plaque de métal est nette près de la zone de contact et devient de moins en moins nette lorsque l'on s'éloigne de la plaque. C'est exactement cet effet que permet de rendre cette fonction.

 

  • Le FSAA

Comme nous l'avons fait remarquer avant, le FSAA (Full Scene Anti Aliasing) est l'utilisation préférentielle du T-Buffer car cela permet d'augmenter la qualité globale des scènes rendues en éliminant les défauts de l'image. Il s'agit d'une forme avancée de spatial anti-aliasing.

Le défaut le plus commun est l'effet d'escalier que l'on voit très bien sur la figure ci-dessous:

 

 

L'autre défaut commun est le "pixel popping" qui se remarque par la disparition ou l'apparition soudaine de pixels quand un objet est en mouvement. Ceci apparaît quand les polygones à échantillonner sont plus petits qu'un pixel ou qu'ils se trouvent entre deux pixels et ne touchent pas une zone d'échantillonnage (les petits ronds sur le schéma). Il en résulte des apparitions et disparitions de lignes ou de points en fonction du mouvement.

 

 

Pour adresser ces problèmes, on fait de l'anti-aliasing. En théorie il n'est pas difficile de faire de l'AA: il faut analyser la couleur des pixels qui entourent celui posant problème et on en fait une moyenne pour l'affichage. En pratique pour "faire la moyenne" on effectue du super-sampling dont deux sous-ensembles sont l'over-sampling et le multi-sampling.

L'over-sampling est la technique utilisée par les cartes graphiques GeForce et Radeon et consiste à rendre une scène dans une résolution plus grande que celle voulue puis de la réduire en appliquant une méthode de filtrage (par exemple un bilinear filterning) avant l'affichage à l'écran. Ce type de rendu utilise un échantillonnage de type OGSS.

Le multi-sampling est la technique utilisée par la puce VSA-100 et consiste à rendre l'image à 2 ou 4 reprises dans le T-Buffer en les décalant à chaque fois un peu selon un échantillonnage de type RGSS.

 

 

On peut voir sur ce schéma que l'échantillonnage de type RGSS est identique à l'OGSS sauf que l'on a effectué une rotation de l'ordre de 20-30°. Ceci permet au RGSS d'offrir un meilleur anti-aliasing sur les lignes horizontales et verticales car on voit bien que des points d'échantillonnage sont pris de part et d'autre de ces axes. C'est justement aux défauts sur ces lignes verticales et horizontales auxquels l'oeil humain est le plus sensible, la qualité visuelle est donc théoriquement meilleure en RGSS. Ci-dessous on peut voir un exemple de rendu RGSS effectué par le VSA-100.

 

 

L'AA peut être utilisé avec n'importe quel jeu contrairement aux autres effets du T-Buffer car il n'est pas dépendant d'une implémentation software (ok, à part dans les drivers). Pour des informations plus avancées concernant les différentes méthodes d'AA, je vous conseille de lire ce document publié par Beyond3D qui est extrêmement intéressant pour peu qu'on prenne le temps de le lire.

Malgré ses nombreuses innovations, il manquait pourtant deux fonctionnalités de taille au VSA-100: pas de support pour le T&L ni pour les Pixel Shaders. A l'époque cela pouvait encore se justifier car bien peu de jeux utilisaient ces technologies, mais en regardant de nos jours on voit que ce choix était assez problématique.

Suite