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