2025-08-24
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 du point de vue du lecteur, pour quoi faire ?
Car c'est vrai que si on fait un jeu ou une simulation 3D aujourd'hui… on va plutôt utiliser un moteur clés en main comme Godot, Unity ou Unreal Engine !
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 😉.
Au départ fut une société mythique nommée Silicon Graphics (SGI).

En plus d'avoir fourni une partie du matériel nécessaire pour le rendu des dinosaures de Jurassic Park, qui le lui a rendu en faisait explicitement apparaître une de ses machines dans une scène culte...
"C'est un système UNIX. Je connais ça !" (Jurassic Park, 1993)

...ils étaient depuis longtemps le partenaire historique de Pixar - bien avant que ces derniers ne soient officiellement reconnus comme des chads.
Les machines SGI coûtaient chacune le prix d'une Tesla, et tournaient sous un UNIX propriétaire nommé IRIX. Anecdote : leur environnement de bureau était une implémentation de X11 équipée d'une version très "pimpée" du toolkit Motif (méconnaissable, regardez ça).
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).
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.
La version OpenGL 1.0 (cf. spécification) n'aura pas d'emblée toutes les fonctions courantes, comme la compression de textures - qui arrivera en 1.1. Elle sera néanmoins une révolution.
En 1993, coup de tonnerre : Doom sort.

Le jeu d'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 CPUs x86 des PC ont la capacité de surclasser en 3D les GPUs de type "blitter" des machines centrées sur la 2D (comme l'Amiga).
Le CPU d'époque plafonne rapidement cependant, et des compétiteurs à SGI bourgeonnent pour ce nouveau marché gaming des GPUs : le leader 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 de jeux typique.
Déjà, ils sortent une version Linux de Doom dès 1994, alors que cet OS était encore couvert de peinture fraîche et inconnu des gamers.
Surtout, vu l'éreintant 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 alors sa propre API nommée Glide, mais Id n'en veut pas et désire coder leur futur jeu Quake en OpenGL.

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, 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, 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.

Bref, rapidement et malgré la promotion de Microsoft envers un DirectX/Direct3D pas encore sec, la popularité d'OpenGL s'établira par le feu.
Du côté Linux, le tout nouveau projet Mesa 3D s'engage à fournir une implémentation logicielle d'OpenGL (nommée OSMesa) et des points d'entrée afin que les fabricants de GPUs puissent la "surcharger" par des appels à leurs pilotes, ressortant à l'autre bout vers le système de fenêtrage XFree86 (ancêtre de notre X.Org).

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 😉)