This is a great book for 3 reasons:
1) Abrash is actually a good writer. Sometimes, I read the beginnings of chapters just for the stories he tells.
2) It's full of algorithms. Sure, you probably won't be writing your own triangle rasterizer in assembly language, but the algorithms are still important to know. Besides, it has plenty of stuff that's pretty timeless (there is a boyer moore implementation in there).
3) Abrash's philosophy of optimization is the best there is.
Ot: how did they do that header in github-flavored markdown?
Github's preview mode doesn't render it correctly and I can't find anything about it in Github's docs.
Here's the source:
---
title: Michael Abrash's Graphics Programming Black Book, Special Edition
author: Michael Abrash
date: '1997-07-01'
identifier:
- scheme: ISBN
text: 1576101746
publisher: The Coriolis Group
category: 'Web and Software Development: Game Development,Web and Software Development:
Graphics and Multimedia Development'
chapter: '01'
pages: 004-019
---
I'm surprised that even turns out as well as it does. Those headers are for pandoc. I guess Github must have a Yaml extension to their Markdown renderer which is picking it up.
Maybe a tangent, but I'm surprised at the choice of Markdown for formatting an entire book. Is that common these days? I guess when your output format is basically "HTML chapter files containing reflowable, resizable text blocks, with UA-selected dimensions" (i.e. ePub), most of the page-based considerations of a language like TeX or SGML go out the window.
A question to anyone on here who has published a technical book, where at least one of the shipped formats was page-based (real paper, or just PDFs): did you, or your editor, do much proofing and fixing to get the content "pretty?" (No hanging lines, no rivers, etc.) If so, do you think your choice of working format affected how much work this was?
When I started on my E-Book about Open Sound Control (http://osc.justthebestparts.com/) I was using markdown and assorted home-rolled tools to convert that into both Web pages, epub, and PDF.
I found that I could not layout and formatting I wanted and when it came time to officially roll-out the release (a bundle of PDF, epub, and mobi) I opted for InDesign to avoid weird breaks and gaps.
The technology is not that relevant but there's still a lot to learn in how he approaches problems. In that respect, It's much more timeless than a typical technology focused book.
I've learned a lot about what to optimize how to go about it and when to optimize from reading his book and I use a lot of this insight even now when working on performance optimization for web applications.
Together with SICP, it's one of the books that influenced me the most.
Afaik even 4k demos are mostly shaders these days.
Only remaining place for software rendering seems to be the embedded world. But if you are trying to make quake-level graphics on an µc then ... you are being awesome :)
If it's not too much trouble, could you paste your error into an Issue on Github? I haven't done any testing on the Makefile, so it'd be good to get it fixed up if I've done anything stupid.
Maintainer here. Surprised but pleased to see this make it onto HN. I'm glad people find it useful!
I had a desire to read the book over Christmas, but found the PDFs really weren't very useful for reading on my Kindle (and the book being out of print meant it wasn't feasible or cost effective to acquire the paper version). As always, the perfectionist in me kicked in and I spent much longer than necessary converting it, so figured someone else might be interested in the fruits of my labour.
My book was second hand already so it is showing its age. I like it as a bit of an heirloom but the electronic copy is actually accessible. The original, you need a forklift to remove it from the shelf!
I don't think there's anything quite like Abrash's tome in breadth or all the other intangibles he eloquently wrote about (I mean the best optimizer is between your ears is worth a book in itself!)
While F&VD does a great job covering many different aspects of image generation, for this kind of work Real-Time Rending[1] is probably more useful. It is firmly grounded in a world of programmable GPUs (shaders & the like), and wastes little time talking about rendering techniques that are not relevant to modern graphics hardware.
Great! I had some fun with this, and learned why Mobi is so frowned on by ebook publishers. Glad it turned out ok though. I'm reading it on my Kindle at the moment too.