Quand on parle de cartes 3D des années nonante, un modèle revient souvent : la S3 Virge. La carte de S3 est souvent vue comme un décélérateur 3D, et il y a de bonnes raisons. Comme j’avais déjà joué au premier Tomb Raider avec d’autres cartes 3D, je me suis amusé un peu avec la version optimisée pour l’API de 3S, S3D.
Je commence par ça, d’ailleurs. Dans les années nonante, beaucoup de fabricants avaient leurs propres API. Direct3D est apparu seulement mi-1996, et la prise en charge d’OpenGL a été longtemps (très) compliquée sur les cartes 3D grand public. L’API professionnelle avait des avantages (ce qui explique que Quake l’utilise) mais les cartes grand public n’étaient pas optimisées. Dans la pratique, l’API à succès à l’époque était le Glide de 3dfx : l’API était simple, rapide et liée à des cartes qui avait du succès. Mais il y a aussi des API pour les cartes Matrox (avec parfois des jeux uniquement optimisés pour un modèle précis), nVidia (avec le NV1), ATi (CIF), PowerVR, etc. Vous trouverez une liste sur cette page ou dans ce sujet. À l’époque, Apple avait le Rave et S3 avait donc le S3D (et le MeTal un peu plus tard). Il y a une petite vingtaine de jeux optimisés pour l’API S3D. Certains titres sont des versions optimisées livrées en bundle avec les cartes de l’époque, d’autres passent par des patchs ou une prise en charge directe. Il y a une belle page sur les jeux optimisés S3D.
Je ne vais pas jouer à tous les jeux optimisés pour la puce de S3, et ctrl-alt-rees l’a déjà fait. J’ai juste profité de mon après-midi un jour pour lancer Tomb Raider, parce que c’est un jeu qui a des patchs pour différentes cartes graphiques. J’avais testé avec une carte graphique PowerVR PCX1, et elle permet de jouer en 640 x 480 à presque 60 fps et même en 1 024 x 768 à (presque) 30 fps (sans filtrage). Et avec la PCX2, c’est un peu plus rapide et avec du filtrage. Je n’ai jamais écrit spécifiquement sur Tomb Raider et les 3dfx, mais le jeu fonctionne en 640 x 480 à 30 fps. C’est plutôt fluide, mais un peu flou (le principal problème des premières 3dfx).
Bon, si vous avez envie de jouer au premier Tomb Raider, il peut s’acheter dans sa version moderne. Mais si vous avez envie des patchs pour de (nombreuses) cartes 3D, la version Gold contient les patchs et se trouve facilement. Pour la carte 3D, j’ai pris les pilotes qui sont là, mais je soupçonne le jeu d’accéder directement au matériel, sans réellement passer par les pilotes.
Les cartes S3 Virge
Avant de parler du résultat, il faut expliquer quelques biais sur la Virge de S3 (Video and Rendering Graphics Engine). C’est un composant développé fin 1995 par S3, l’équivalent d’une S3 Trio64 avec une accélération 3D. Dans la pratique, la carte est sortie mi-1996 (quand Microsoft a proposé son API Direct3D) et c’était plutôt un composant d’entrée de gamme. La carte est parfois mise en avant face aux premières 3dfx, mais il y a un bon six mois de décalage (la première Voodoo Graphics date de fin octobre 1996) et le prix n’était pas le même. On était vers 200 $ pour les premières cartes S3 Virge (et rapidement vers 100 $) et à 300 $ pour les premières 3dfx, qui nécessitaient une carte 2D. La différence paraît faible, mais en 1996 c’est énorme : à l’époque, une carte graphique est réellement obsolète en six mois dans certains cas. La S3 Virge (au moins la version de base, la 325) n’est donc vraiment pas une concurrente des Voodoo Graphics.
Le second point, c’est qu’il y a Virge… et Virge. On peut avoir plusieurs capacités pour la mémoire (2, 4 et 8 Mo) et plusieurs versions de la puce. La Virge de base (325) fonctionne en théorie à 55 MHz, la VX est moins rapide (~50 MHz) et a de la mémoire spécifique pratique pour ceux qui font de la 2D (de la VRAM) mais moins efficace en 3D. La seconde génération (moins de six mois plus tard) porte le nom de DX ou de GX et les cartes ont de la mémoire EDO plus rapide et même de la mémoire synchronisée (SDRAM ou SGRAM) sur les GX. Avec de la mémoire rapide (75 MHz ou plus), une Virge DX est donc significativement plus rapide qu’une Virge de base… mais c’est un peu la loterie en fonction des marques. C’est bien expliqué dans cet excellent article sur les cartes, mais les versions synchronisées sont paradoxalement plus lentes que les variantes EDO à cause de la gestion des textures. Il y a aussi des versions AGP ou pour les portables. Dans tous les cas, le résultat va dépendre en partie de la carte, et j’ai une Virge 325 cadencée à 50 MHz avec 4 Mo de RAM (et deux versions pour Mac), ce que j’ai vérifié avec PowerStrip.
Le même article explique aussi que la carte a été pensée pour de la 3D sans textures (en 1995) et donc que l’application de textures (et particulièrement de textures filtrées en bilinéaire) a un impact important sur les performances. Il explique qu’il faut 9 cycles pour gérer de la 3D avec un Z-Buffer, de la transparence et un filtrage bilinéaire, soit en gros 5 mégapixels/s. Et 5 mégapixels/s, ça permet au mieux environ 13 images/s en 640 x 480 dans un jeu de l’époque, ce qui est assez lent. Même sans filtrage, le gain est faible, et la seule solution pour aller plus vite est soit de descendre en définition, soit de mettre des polygones sans textures (par exemple pour le ciel). Un brouillard sans texture ou un cockpit qui cache une partie de l’écran permettent aussi d’aller un peu plus vite, en réduisant le nombre de polygones texturés.

Un exemple qui vient de là. Le cockpit réduit le nombre de polygones à calculer, le ciel est un polygone sans texture.
La décélération 3D
Dans de nombreux articles, vous verrez que la S3 Virge est un décélérateur 3D. C’est en partie lié au fait que la carte manque clairement de puissance, mais c’est aussi lié à un gros biais. Quand on teste parfois vingt ans ou trente ans après la sortie de la carte, on a rarement une configuration réellement équivalente à celle de l’époque. C’est d’ailleurs mon cas. Sur le premier Tomb Raider, c’est flagrant. Le jeu est sorti fin 1996 et donc une énorme majorité des joueurs avait probablement au mieux un Pentium à 133 MHz, éventuellement un des récents modèles 166 MHz (début 1996) ou 200 MHz (mi-1996). Les Pentium MMX sont sortis début 1997 à des prix élevés, et les Pentium II six mois plus tard (mi-1997). Maintenant, si vous regardez les gens qui testent des jeux de l’époque avec une S3 Virge, ils ont probablement – comme moi – des CPU bien plus rapides. Pour mes essais, j’ai un Pentium III Coppermine à 600 MHz, par exemple.
Le biais que ça induit, c’est que si les cartes sont dépendantes de la puissance du CPU… c’est aussi le cas du mode software. Il faut un processeur plus rapide que celui de l’époque pour réellement tirer parti d’une S3 Virge (a priori au moins un des premiers Pentium II) mais le processeur en question va aussi améliorer les performances du rendu software. Dans mon cas, c’est flagrant : le mode software en 320 x 200 sur un Pentium III à 600 MHz est assez correct et le rendu de la S3 Virge est lent parce qu’on atteint les limites de la carte. Si je testais avec un Pentium II à 233 MHz ou même un Pentium à 133 ou 166 MHz, la différence serait beaucoup moins importante, et probablement à l’avantage de la S3 Virge.
La carte est donc un décélérateur 3D dès que vous avez un CPU assez rapide pour un rendu en software correct, c’est une évidence. Mais ce n’est pas toujours le cas si vous avez un processeur de l’époque.
Le cas Tomb Raider
J’ai eu un peu de mal à capturer correctement les images. Ma carte d’acquisition VGA n’aime vraiment pas les timings du jeu, et même avec un OSSC et une carte d’acquisition HDMI, c’est moyen, j’ai une image bien trop sombre en 640 x 480 alors que c’est lisible sur l’écran que j’utilise. Je n’ai pas pu capturer en 512 x 384 d’ailleurs.
Le jeu dans sa version S3 me propose le 640 x 480, le 512 x 384 et le 320 x 200, avec dans tous les cas la possibilité d’activer (ou désactiver) le filtrage bilinéaire et la correction de la perspective (F3 et F4 dans le jeu). Un mot sur ça : c’est un des trucs que la PlayStation 1 ne fait pas, et c’est important dans les jeux. Sans cette correction, on se retrouve avec des textures qui sont alignées bizarrement dans certains cas. Ce n’est évidemment pas un problème en software, mais sur une carte 3D, c’est important. Pour le filtrage bilinéaire, on a le même problème que sur 3dfx, spécialement en basse définition : c’est flou. Sur la S3 Virge, ça ralentit aussi (un peu) le rendu.
Dans la pratique, j’ai environ 10 fps (au mieux) en 640 x 480 et entre 25 et 30 fps en 320 x 200, ce qui n’est vraiment pas glorieux. On peut le voir en pressant F2 dans la version accélérée (par sur la version software). Dans la vidéo, j’ai mis la première démo en software, puis en 320 x 200 avec les filtres, puis en 640 x 480. J’ai un peu augmenté la luminosité sur la partie accélérée.
Pour terminer, je posterais probablement un jour un article sur la version CIF (ATi) du jeu, mais si vous avez une Matrox Mystique 220 (idéalement une 4 Mo) ou une Rendition Verite, ça m’intéresse pour tester les autres patchs.


















Merci pour cet article.
Je ne peux m’empêcher de raconter une anecdote personnelle :o
Mon père a toujours adoré Tomb Raider depuis le premier qu’il a acheté sur PC, en rendu software.
Je me suis bien moqué de lui avec ma version PS1 qui était plus jolie MAIS (il faudra que je lui demande s’il l’avait fait exprès) il est arrivé un jour avec une carte accélératrice 3D et le TR1 fourni avec.
Là, j’ai littéralement eu la mâchoire qui s’est décrochée lorsque j’ai vu le résultat !!
Et pourtant, si je me souviens bien, ce n’était qu’une Rendition Verite V1000 mais ça devait être du 640*480 avec filtrage bilinéaire et autres effets de l’époque et ça m’avait scotché.
Il y avait bien sûr du texture mapping et dans mon souvenir, c’était du 60 images par seconde
Ah ben sur Tomb Raider, la 3dfx ça changeait la vie oui (et la Rendition aussi)
Moi j’étais ado et j’avais un pentium 75 Olivetti courageusement overclocké à 90Mhz. Tomb raider ramait pas mal, injouable à moins d’avoir l’image soit de la taille d’un timbre poste, soit en plein écran avec une résolution déplorable. Puis un jour j’ai acheté la 1ere Matrox Mystique mais je n’ai pas réussi à faire fonctionner le jeu qui plantait dès le lancement. Peut-être un an plus tard, j’ai réalisé qu’il fallait activer la fonction « PCI bus master » dans mon BIOS, et ça s’est enfin mis à fonctionner. Et là… une claque, j’avais l’impression que mon ordinateur était devenu un monstre, la résolution était correcte et le jeu glissait tout seul à une trentaine de fps, on était au dessus de la qualité de la PS1 qui semblait à l’époque une référence inatteignable pour un vulgaire PC. J’étais fier de ma petite carte achetée 1005 francs avenue Daumesnil à Paris. C’est d’ailleurs de mémoire le jeu où la différence était la plus notable, dans les quelques autres ce n’était pas si flagrant. Cette carte ne gérait hélas pas la transparence « alpha », on le voyait dans certains petits détails. J’ai toujours la carte en version 220 4Mo et peut-être aussi l’originale, je peux me prêter à quelques tests si nécessaire.