IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Comment DOOM et Wolfenstein affichaient leurs graphismes [Tutoriel]


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut Comment DOOM et Wolfenstein affichaient leurs graphismes
    Bonjour à tous,

    J'ai le plaisir de vous proposer un tutoriel écrit par Guy Grave, alias mewtow, sur le fonctionnement du rendu graphique des premiers jeux "3D" tels que DOOM et Wolfenstein.

    Bonne lecture.

    Lire le tutoriel
    Voir les autres cours et tutoriels de la rubrique Hardware
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Super intéressant.

    J'avais déjà suivit un tuto pour faire ça en mode brain off. Je ne faisais que suivre les instructions sans réfléchir.$*

    Cet article m'a fait comprendre beaucoup plus de choses. C'est passionnant à lire car très accessible

    Ceux qui ont pondu ces algos et pensé à tout ce joli bordel doivent être sacrément intelligent car même si les formules employées ne sont pas folles, il fallait y penser.


    Merci beaucoup !
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  3. #3
    Membre à l'essai
    Profil pro
    Developer
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut L'algorithme de calcul de racine carrée inverse
    Merci pour cet article très intéressant.

    Un fait amusant est de comprendre l'historique d'une optimisation particulière.
    A l'époque de Doom, les cartes graphiques n'offraient que des optimisations hardwares basiques et 2D : BitBlt (copies de rectangles), masquages ou gestion du pointeur de la souris. Pour le calcul en temps réel des graphiques le CPU principal du PC était le seul moyen de faire le rendu graphique en mode 3D (2D et demi on disait à l'époque ) et il était fortement mis à contribution.

    On voit dans l'article de Guy Grave (traduit par LittleWhite, merci encore) l'importance du calcul de l'inverse de la racine carrée pour savoir positionner les objets à l'écran, mais ce calcul, s'il était fait en flottants, aurait été beaucoup trop lent pour permettre l'affichage temps réel.
    Et l'astuce de génie a été de trouver un algorithme entier (sans flottants) qui réalise cette opération de manière très rapide (InvSqrt). Je ne reviens pas sur le détail de cet algorithme (qui tient du génie), mais il est intéressant qu'une étude a été faite en 2012 sur l'algorithme originel, et que la rétro-ingéniérie a permis de découvrir un petit bug dans une constante de l'algorithme. Ce qui explique pourquoi sur Doom, on voyait parfois une raie noire verticale.

    L'article s'appelle "A Brief History of InvSqrt", en anglais et très intéressant.

    Bonne lecture.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    Je tiens à préciser que je ne suis pas traducteur, simplement, j'ai (avec l'accord du génialissime Guy Grave) publié l'article sur Developpez.com.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 135
    Points
    10 135
    Par défaut
    A croire que y'avait beaucoup de génie a l'époque
    La 3d existait depuis un moment (meme sur Atari ST), je rappel que chez nous on a eu le droit a un excellent Alone in the Dark sorti en 1992 est programmer en full ASM (donc 1 ans avant doom) .
    Pour moi ce jeu est un vrai précurseur autant la technique de Doom a vite était oublier après , autant la technique de Alone in the Dark a perduré ( perso en 3d et Background Precalculer comme Resident Evil ou Final Fantasy).

    A la même époque au Japon sortais Ridge Racer en 1993 (sur une machine tournant sur du 240,000 polygons/second) , les ingénieurs ont fait du bon boulot

  6. #6
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 717
    Points : 741
    Points
    741
    Par défaut
    Citation Envoyé par richarno Voir le message
    Merci pour cet article très intéressant.

    Un fait amusant est de comprendre l'historique d'une optimisation particulière.
    A l'époque de Doom, les cartes graphiques n'offraient que des optimisations hardwares basiques et 2D : BitBlt (copies de rectangles), masquages ou gestion du pointeur de la souris. Pour le calcul en temps réel des graphiques le CPU principal du PC était le seul moyen de faire le rendu graphique en mode 3D (2D et demi on disait à l'époque ) et il était fortement mis à contribution.

    On voit dans l'article de Guy Grave (traduit par LittleWhite, merci encore) l'importance du calcul de l'inverse de la racine carrée pour savoir positionner les objets à l'écran, mais ce calcul, s'il était fait en flottants, aurait été beaucoup trop lent pour permettre l'affichage temps réel.
    Et l'astuce de génie a été de trouver un algorithme entier (sans flottants) qui réalise cette opération de manière très rapide (InvSqrt). Je ne reviens pas sur le détail de cet algorithme (qui tient du génie), mais il est intéressant qu'une étude a été faite en 2012 sur l'algorithme originel, et que la rétro-ingéniérie a permis de découvrir un petit bug dans une constante de l'algorithme. Ce qui explique pourquoi sur Doom, on voyait parfois une raie noire verticale.

    L'article s'appelle "A Brief History of InvSqrt", en anglais et très intéressant.

    Bonne lecture.
    En fait cet Algorithme revient au Grand Génie Isaac Newton, mais là où John Carmack a fait très fort c'est de trouver cette constante qui réduit les étapes de cet algorithme

  7. #7
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Pour aller plus loin, je recommande le livre "Zen of Graphics Programming" de Michael Abrash, qui explique en détail les algos de Doom et comment il a fait évoluer la technique jusqu'à Quake. C'est un peu rebutant au début (beaucoup d'assembleur mais on peut passer), mais super intéressant !

Discussions similaires

  1. [VBA-E] comment vider les noms de leur contenu?
    Par MAGUIN dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/01/2007, 15h22
  2. Comment remettre des scrollbar invisible à leurs positions d'origine
    Par avogadro dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/08/2006, 18h13
  3. comment lister les tables et leur identifiants
    Par jclyon dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 25/07/2006, 23h03
  4. Réponses: 4
    Dernier message: 13/12/2004, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo