-- Includes everything that master Abrash has ever written about optimization and real-time graphics. -- Explains the intricacies of Intel CPU operation and other "black art" performance issues. -- Treats both 2D and 3D graphics in great detail, with an emphasis on speed.
This is an excellent book, and I really wish I had read it in the 90s. It's just very outdated now.
I wouldn't recommend reading it now. Almost all of the content of the book is now obsolete, as it spends the bulk of its pages explaining how to optimize code to run fast on 386/486s or Pentiums at the latest. It also assumes that 3D acceleration is future tech that doesn't yet exist (but correctly predicts that it will become major later).
It does have a few things that are still interesting. The most important one is just the general way of thinking about optimization, to not get stuck in a particular solution and step back and consider totally out-of-the-box solutions. And just try many different approaches, fully prepared to throw them away if they aren't any faster.
Where the book started getting relevant to me was starting from the chapter on BSP trees, somewhere around page 1094. Even after reading it, I still don't feel I totally get BSP trees, but at least I have an inkling of how they could be used for determining drawing order.
My favorite part of the book was the explanation on dot products in the 3D math chapter. I had never been satisfied with the comparison of dot product projections giving a kind of "shadow" of a vector onto another, and much preferred his explanation of thinking about it as one vector being the normal of a plane, and the dot product telling you how far along you have to slide that plane such that it includes the other vector.
There's also an interesting suggestion to think of 3D rotations as projections to the new axes.
The book was written while Abrash was working on the game Quake with John Carmack, so towards the end of the book you get a lot of interesting talk about the development of Quake, and can get a feeling of awe when he describes John Carmack's weekend coding bursts. It also details many techniques used in Quake.
This is the book I really would've wanted to get my hands on 15 years ago. I gradually builds up from CPU architecture (and how to get performance out of it), explains the inner workings of the VGA graphics subsystems at the team and only after halfway starts to actually do something with graphics, going from 2D slowly intro 3D reaching a climax with shading, BSPs and Quake, right before the era of OpenGL and right before 3dfx or even nvidia even became 'a thing'. And this in a world would having multiple devices with internet access at your fingertips.
Unfortunately the closer you go to the hardware, the lesser a text remains relevant if the underlying hardware becomes less relevant. The book contains elaborate listings of C and x86 assembler which I skimmed. Hence in 2024 the biggest added value (for me) is that this book puts a lot of things in its right historic context and truly builds up things from 'the foundations'.
If you're interested in some really good optimization advice, a lot of which is still relevant today, in the horrors of programming VGA, in 3D graphics, then this is the perfect book for you. There are some things in there I didn't find that interesting, but most of the things were nice to read.
And, the assembly might have changed to become almost unrecognizable and the compilers seem to be beating people at generating optimized code, but a lot of the explanations and how to find what you need to do still stand.
I never thought a book about assembly language programming could be intriguing and engrossing. This is a treasure of a book. (Although more than a little dated these days)