Journal Programmation 3D à travers les âges : les débuts (1992-1999)

Posté par  (site web personnel) . Licence CC By‑SA.
26
24
août
2025

Sommaire

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

Les origines : SGI (…-1992)

Au départ fut une société mythique nommée Silicon Graphics (SGI).

Silicon Graphics

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 -vidéo !), ils étaient depuis longtemps le partenaire historique de Pixar -bien avant que ces derniers ne soient officiellement reconnus comme des chads.

Silicon Graphics
"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. Anecdote : leur bureau était une implémentation de X11 équipée d'une version très "pimpée" du toolkit Motif (méconnaissable, regarde ç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é.

OpenGL

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

Doom

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 CPU x86 des PC ont la capacité de surclasser en 3D les GPU 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.

Doom

Voyez-vous, ceux-ci ne sont pas un studio de développement typique.

Déjà, ils sortent une version Linux de Doom 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, mais Id n'en veut pas et désire coder leur futur Quake en OpenGL.

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

Unreal Engine 1.1
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 s'engage à fournir une implémentation logicielle d'OpenGL (nommée OSMesa) 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 (ancêtre de notre X.Org).

Unreal Engine 1.1
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 😉)

  • # programmation 3D... de jeux

    Posté par  (site web personnel) . Évalué à 3 (+1/-0). Dernière modification le 24 août 2025 à 13:19.

    En lisant le titre « à travers les âges », je pensais que tu allais parler de modélisation 3D ;-) Bon, avec un démarrage en 1992, ça ne remonte pas si loin que ça :D

    Et c'est bien de prendre l'axe des jeux, déjà — le sujet étant vaste par ailleurs (Blender, Freecad, impression 3D éventuellement…). Rien qu'OpenGL / VRML / WebGL pourrait donner lieu à plus de 2-3 épisodes (sans te demander de trop divulgâcher la suite :p).
    Rester centré sur OpenGL me semble plus raisonnable     _o/

    En revanche, cela risque (encore) d'être un nourjal promu en dépêche ;-)

    • [^] # Re: programmation 3D... de jeux

      Posté par  (site web personnel) . Évalué à 3 (+1/-0). Dernière modification le 24 août 2025 à 14:35.

      C'est vrai que c'est un peu de l'hyperbole 😁.

      En fait SGI existait déjà 10 ans avant, et Pixar (sous sa forme "division de LucasArts") encore plus… mais il n'y aurait rien eu d'utilisable pour nous dans la micro-informatique, et je pense que par "les âges" j'ai un peu sous-entendu le début du nôtre, celui des ordis à la maison !

      Mon biais perso, tu l'as remarqué, a bien fait que ça citera parfois la modélisation MAIS restera centré sur le dév (d'où le titre, "Programmation")… là où je suis vraiment compétent quoi ;-).

      (bien que note, j'ai parfois les 2 casquettes : au départ je me contentais d'importer les modèles 3D -avec assimp p.ex.- et aujourd'hui je suis bien plus fréquemment dans Blender et UE. Cela dit je m'y considère pas plus doué qu'un autre :-p)

      • [^] # Re: programmation 3D... de jeux

        Posté par  (site web personnel) . Évalué à 3 (+1/-0).

        En fait SGI existait déjà 10 ans avant

        moui, ça j'ai croisé une station SGI/Irix en 1993 mais on utilisait le Bull DPX à côté un peu poussif pour le rendu 3D — en fil de fer, ça le faisait — et qui avait Euclid_(logiciel) pour faire de la CFAO.

        je pense que par "les âges" j'ai un peu sous-entendu le début du nôtre, celui des ordis à la maison !

        j'ai eu un Apple IIe en 1984, ça compte ? :p
        bon, c'est plutôt sur PC que j'ai fait de la 3D effectivement.

        mais oui, en 1992-93 j'avais un projet d'école en équipe de Raytracing sur stations HP-UX et j'avais un peu joué avec POV-Ray à l'époque sur mon PC.

        • [^] # Re: programmation 3D... de jeux

          Posté par  (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 24 août 2025 à 17:42.

          le Bull DPX à côté un peu poussif
          

          Oh bon sang, je découvre.
          Je trouve pas d'image d'Euclid, ça doit être niche. C'est je suppose plus proche de SolidWorks que de Blender (= ça gérait l'aspect "matériau/physique") ?

          (PS : à titre perso, le seul Bull que j'aie vu, c'était un mainframe et il était dur à déplacer)

          j'ai eu un Apple IIe en 1984, ça compte ? :p
          

          Nan :p
          C'est-à-dire que je compte pas Elite.
          Et même après, sur 16-bits par exemple, tu aurais pu avoir ce jeu-là, celui-là… ou même ce chef-d'oeuvre là.

          La différence, conceptuellement pour cet article, je dirais 2 critères :
          - il n'y a pas de GPU accélérateur dédié (aujourd'hui nous avons des GPU "combo" 2D/3D et même IA/etc, mais tu vois l'idée) ;
          - c'est soit rapide mais en fil de fer, soit texturé mais trop lent (3-5 FPS) pour être considéré fluide de nos jours.

  • # Environnement de bureau

    Posté par  (Mastodon) . Évalué à 3 (+1/-0).

    Pour la capture de Mandrakesoft 6.1, il pourrait être utile de préciser l'environnement :
    https://en.wikipedia.org/wiki/Common_Desktop_Environment

    C'est un environnement de bureau très répandu sur certains systèmes unix (solaris, aix, etc..) bieen que longtemps propriétaire.

    • [^] # Re: Environnement de bureau

      Posté par  (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 24 août 2025 à 17:25.

      La vache, je pensais pas que quelqu'un s'en rendrait compte… surtout aussi vite.
      Pour la peine, dédicace à toi 😉 :

      Mandrake-tkr

      (Mandrake 6 fournit en fait KDE 1, mais j'ai lancé ce bon vieux CDE -le vrai, le pur, l'Ancien- pour que ça aie l'air encore plus rétro !)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.