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