URL: https://linuxfr.org/users/tarnyko/journaux/programmation-3d-a-travers-les-ages-les-debuts-1992-1999 Title: Programmation 3D à travers les âges : les débuts (1992-1999) Authors: Tarnyko Date: 2025年08月24日T10:42:42+02:00 License: CC By-SA Tags: 3d, opengl, mesa, x11, culture_unix, moteur3d et gpu Score: 65 Salut 'nal, Aujourd'hui j'ai envie de me lancer dans quelque chose de plus ambitieux que d'habitude : une série-tutoriel sur le **développement 3D**, qui partirait des années 90 pour arriver à nos jours. En tant que développeur C/C++ ayant un fort historique là-dedans, ça me tanne depuis longtemps d'en parler... mais de ton point de vue, pour quoi faire ? Car c'est vrai que si tu fais un jeu ou une simulation 3D aujourd'hui... tu vas plutôt utiliser un moteur clés en main comme [Godot](https://godotengine.org/), [Unity](https://unity.com/) ou [Unreal Engine](https://www.unrealengine.com/) ! Cependant sans le _background_ que je vais t'exposer, tu serais incapable de faire des choix éclairés sur les enjeux et techniques de fond : le support des différents OS et plate-formes, l'évolution des GPUs parallèle à la complexification des APIs, la compréhension de ton _pipeline_ et tes _shaders_ (termes consacrés = anglais oblige !), etc... Mais d'abord je ferai "juste" un historique pas trop long ; la première démo suivra vite 😉. Les origines : SGI (...-1992) =========== Au départ fut une société mythique nommée **Silicon Graphics** (_[SGI](https://fr.wikipedia.org/wiki/Silicon_Graphics)_).  En plus d'avoir fourni une partie du matériel nécessaire pour le rendu des dinosaures de [Jurassic Park](https://fr.wikipedia.org/wiki/Jurassic_Park) (qui le lui a rendu en faisait explicitement apparaître une de ses [machines](https://yunes.informatique.univ-paris-diderot.fr/raw/divers/scrapyard/indigo.html) dans une [scène culte](https://www.youtube.com/watch?v=dxIPcbmo1_U) -_vidéo_ !), ils étaient depuis longtemps le partenaire historique de [Pixar](https://pixar.fandom.com/wiki/Pixar_Image_Computer) -bien avant que ces derniers ne soient officiellement reconnus comme des _chads_.  _"C'est un système UNIX. Je connais ça !" (Jurassic Park, 1993)_ Les machines SGI coûtaient chacune le prix d'une Tesla, et tournaient sur un UNIX propriétaire nommé _[IRIX](https://fr.wikipedia.org/wiki/IRIX)_. Anecdote : leur bureau était une implémentation de [X11](https://fr.wikipedia.org/wiki/X_Window_System) équipée d'une version très "pimpée" du toolkit [Motif](https://fr.wikipedia.org/wiki/Motif_(biblioth%C3%A8que_graphique)) (méconnaissable, [regarde ça](https://docs.maxxinteractive.com/books/user-experience-ux/page/file-manager)). Surtout, elles étaient dédiées à la modélisation 3D, et leurs cartes graphiques étaient manipulées par une API nommée la **IRIS Graphics Library** (_[IRIS GL](https://en.wikipedia.org/wiki/IRIS_GL)_). Au début des années 90, la puissance des micro-ordinateurs explose et l'écart les séparant de leurs très coûteuses "stations de travail" se réduit à grande vitesse. L'apparition de compétiteurs agiles en milieu de gamme fait réaliser à SGI l'importance d'établir un standard qui, espèrent-ils, dirigera les développeurs vers leur implémentation de référence (et leurs machines) en priorité.  Ils retirent d'IRIS GL les éléments propres au système de fenêtrage d'IRIX, et standardisent en **1992** sa portion de dessin pur sous le nom d'**OpenGL**. Les années jeu PC (1993-1999) =========== Le rôle déterminant d'id Software ----------- En **1993**, coup de tonnerre : **Doom** sort (_[vidéo](https://www.youtube.com/watch?v=YJB0gfP-GRY&t=12s)_).  Le jeu d'[id Software]( https://fr.wikipedia.org/wiki/Id_Software) succède à _Wolfenstein 3D_ et est le premier "fast FPS" du monde. Il est rapide, provocateur, addictif et graphiquement révolutionnaire. Surtout, il prouve que les CPU x86 des PC ont la capacité de surclasser en 3D les GPU de type "[blitter](https://fr.wikipedia.org/wiki/Blitter)" des machines centrées sur la 2D (comme l'[Amiga](https://fr.wikipedia.org/wiki/Amiga)). Le CPU d'époque plafonne rapidement cependant, et des compétiteurs à SGI bourgeonnent pour ce nouveau marché _gaming_ des GPUs : le leader [3dfx](https://fr.wikipedia.org/wiki/3dfx) avec ses Voodoo, NVIDIA et ses Riva TNT... chacun avec son API propriétaire. _Plot twist_ : SGI ne leur survivra au final pas et s'éteindra lentement. Mais c'est là qu'**id Software** va à nouveau intervenir.  Voyez-vous, ceux-ci ne sont pas un studio de développement typique. Déjà, ils sortent une [version Linux de Doom](https://www.linux.co.cr/free-unix-os/review/1994/0909-a.html) dès **1994**, alors que notre OS favori était encore couvert de peinture fraîche et inconnu des _gamers_. Surtout, vu l'immense travail de portage de Doom sur consoles, et alors qu'ils travaillent déjà sur son successeur ; le sujet du multi-plateformes les titille furieusement. 3dfx proposait sa propre API nommée [Glide](https://github.com/Danaozhong/3dfx-Glide-API), mais Id n'en veut pas et désire coder leur futur _Quake_ en **OpenGL**.  _Quake (1996) en rendu logiciel et accéléré MiniGL sur 3dfx Voodoo 1_ De manière surprenante, 3dfx (qui désirait s'acoquiner le marché du gaming) coopère et leur demande : "_OK. Bon. C'est quoi la portion d'OpenGL que vous prévoyez d'utiliser dans votre jeu ?_". Un travail commun s'engage et débouche la sortie de **[MiniGL](https://en.wikipedia.org/wiki/MiniGL)**, un _wrapper_ d'environ 30% de l'API OpenGL vers Glide, que 3dfx autorise gracieusement Id à livrer avec **Quake**. MiniGL se révèle très performant, et comme id Software vend désormais son moteur à d'autres développeurs, se retrouvera non seulement dans Quake mais aussi _Half-Life_, son mod _Counter-Strike_, _Daikatana_, _Heretic_, _Hexen_,...  _Half-Life (1998) et son driver MiniGL hérité de Quake_ D'autres fabricants, comme PowerVR avec ses Kyro, fourniront vite leur propre implémentation de MiniGL pour faire tourner les jeux du moment. Le moteur concurrent **[Unreal](https://www.unrealengine.com/)**, réputé pour ses grands extérieurs et d'abord centré sur Glide, finira par le supporter en 1998 -alors que 3dfx a du mal à sortir la Voodoo 3 et s'étiole. _Unreal Tournament_ et le mythique _Deus Ex_ sortiront ainsi avec un bon support d'OpenGL dans la version 1.1 du moteur d'Epic.  _Le driver OpenGL d'Unreal Tournament (1999)_ Bref, rapidement et malgré la promotion de Microsoft envers un DirectX/Direct3D pas encore sec, la popularité d'OpenGL s'établira par le feu. Linux, Mesa et les débuts en open source ----------- Du côté Linux, le tout nouveau projet [**Mesa** 3D](https://mesa3d.org/) s'engage à fournir une implémentation logicielle d'OpenGL (nommée [OSMesa](https://mesa-docs.readthedocs.io/en/latest/osmesa.html)) et des points d'entrée afin que les fabricants de GPU puissent la "surcharger" par des appels à leurs pilotes, ressortant à l'autre bout vers le système de fenêtrage [XFree86](https://www.xfree86.org/) (ancêtre de notre [X.Org](https://en.wikipedia.org/wiki/X.Org_Server)).  _Démo "glxgears" sur Linux Mandrake 6.1 (1999)_ Un driver graphique Linux à cette époque se trouve en 2 ou 3 parties, contre 2 aujourd'hui. On retient juste qu'il est possible pour le couple noyau/serveur X11 d'initialiser le GPU, et pour Mesa de charger un module dialoguant ledit serveur X11. La boucle était bouclée ! ------------ _(dans l'article suivant, je passerai à la pratique, avec notre premier exemple C utilisant OpenGL 1.1 -et sentant bon l'ultime saison de DBZ 😉)_