HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jagregory
abrash-black-book
CSS2014–2026
jagregory / abrash-black-book

abrash-black-book

Markdown source for Michael Abrash's Graphics Programming Black Book

23Distinct people
28Mentions
0Explicit recommenders
4.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Markdown source for Michael Abrash's Graphics Programming Black Book

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year28 dated mentions

Observed mentions: 2014-01-30 10:44:59 UTC to 2026-08-07 07:33:26 UTC.

02462014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC615
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC211
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC413
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC413
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC413
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Michael Abrash's Graphics Programming Black Book This is the source for an ebook version of Michael Abrash's Black Book of Graphics Programming (Special Edition), originally published in 1997 and released online for free in 2001 (original link now broken, Internet Archive link). Reproduced with blessing of Michael Abrash, converted and maintained by James Gregory. The GitHub releases list has an EPUB and Mobi version available for download, and you can find a mirror of the HTML version at www.jagregory.com/abrash-black-book. How does this differ from the previously released versions? The book is now out of print, and hard to come by. Last time I checked, it was going for over $200 on eBay. The version which Michael and Dr. Dobbs released in 2001 was a collection of PDF files. That version is still available (original link now broken, Internet Archive link). However, the structure (multiple files) and the format (PDF) result in a poor user experience on an ebook reader or other mobile device. This version has been thoroughly cleaned of artifacts and condensed into something which can easily be converted into an ebook-friendly format. You can read this version online at GitHub, or download any of the EPUB or Mobi releases. You can clone the repository and generate your own version with pandoc if necessary. Contributing Changes are welcome, especially conversion-related ones. If you spot any problems while reading, please submit an issue and I'll correct it. Pull requests are always welcome. Some larger changes could be made to improve the content. I'd love to see some of the images converted to a vector representation so we can provide higher-resolution versions. Formulas and equations could be typeset with MathJax. Generating your own ebook You need to have the following software installed and on your PATH before you begin: pandoc version 2.0 or greater for Markdown to HTML and EPUB conversion. kindlegen for Epub to Mobi conversion. To generate an e-reader friendly version of the book, you can use make with one of the following options: html - build an HTML5 single-page version of the book epub - build an EPUB3 ebook mobi - build a Kindle-friendly Mobi all - do all of the above Once complete, there will be an out directory with a black-book.epub, a black-book.mobi and an html directory with a black-book.html file. Note: Generating a Mobi requires an EPUB to already exist. Also, Mobi generation can be slow because of compression. If you want a quick Mobi conversion you can just run kindlegen out/black-book.epub.
Read the full README on GitHub

What Hacker News says

28 sources
Quake was special for me, the first time I felt truly immersed in a world. I'd played doom/wolf, obviously, but being able to look down, and move in a 3d space just felt real in a way nothing had until then. Then the multiplayer - lived in the sticks had a 33.6k modem - ping times on a good day of 300ms. Even with all the limitations (and lack of any sort of predictive netcode) that was it, a very expensive (we paid by the minute for phone bills!), game! Later teamfortress came out from the guys at RMIT in Melbourne who later went on to Valve (Robin Walker/John Cook from memory) and TF set the bar for so much to come. I know a lot of folks recommend masters of doom for the atmosphere at ID during quake's difficult development, but actually Michael Abrash's graphics black book (free on github - https://github.com/jagregory/abrash-black-boo
Read the rest
k) is an even better companion, still a wonderfully readable book today, but captures the mindset of the development that we can take much from still. Indeed Abrash's anecdote about sliderule jockey's in the day of pocket calculators rings very true today as we grapple with the impact of AI on our work. How many of us can thank our careers to id for hooking us on computers and things like quakec and even quake2's game dll source and later full engine sources.
In Quake – 30th Anniversary Update
An interesting read into some of the insights that Carmack had which lead to the revolution that was Quake can be found in the "Ramblings in Realtime" articles[1] by Michael Abrash[2], who helped John develop Quake's 3D engine. Abrash wrote the rather famous "Graphics Programming Black Book", now available for free[3]. [1]: https://valvedev.info/archives/abrash/ [2]: https://en.wikipedia.org/wiki/Michael_Abrash [3]: https://github.com/jagregory/abrash-black-book
In Quake's lightning gun bug explained [video]
Read Michael Abrash's Graphics Programming Black Book for the story of how the original Quake came to life. You'll get an appreciation for John Carmack's ability to thoroughly research widely varying solutions to a problem, quickly create production-quality implementations of the promising ones, and even more quickly abandon the dead ends. The result is this almost boring, seemingly linear progression toward a final product that seems obvious in hindsight, yet it represents a leap forward the way Quake did in the mid-1990s compared to other FPSes at the time. I don't know of other public stories of individual engineers who can span both the very cutting edge of research and the practicalities of shipping real commercial software. https://github.com/jagregory/abrash-black-book
In John Carmack's new AGI company, Keen Technologies, has raised a $20M round
The 199os were a time when we tried all sorts of tricks to get the last bit of performance out of the hardware. One book which stands out is the one Michael Abrash wrote: Michael Abrash's "Graphics Programming Black Book" https://github.com/jagregory/abrash-black-book https://www.drdobbs.com/parallel/graphics-programming-black-... As CPU power, the number of cores, RAM sizes, HDD sizes, graphics card capabilities have increased, the developers are no longer as careful to squeeze out the performance.
In Ask HN: How were video games from the 90s so efficient?
Great achievement. One remark though, it sounds like the author does a lot of assumptions that something is better without actually benchmarking before and after. On those kind of projects, one should measure the impact of each step. Maybe the new version is only faster because it uses WebGL, maybe the WASM code is actually slower... Or is it the opposite? In my youth, I did a lot of x86 assembly programming. It's very easy to end up with a code slower that compiled high level languages. Here's an example: aligning memory buffers made a piece of code 50% faster (the bottleneck was memory bandwidth). That's a sort of optimization a compiler might (or might not) do for you. With ASM languages you have the control, so you're responsible for doing it. Michael Abrash's Black Book is a bible in term of approach to software optimization. It's ol
Read the rest
d but a nice read. Out of print, a free ebook is maintained here: https://github.com/jagregory/abrash-black-book
In Migrating a JavaScript Library from JavaScript to WebAssembly
Okay, I'll take a little time to brag. The word count challenge here got my interest at the time, so I whipped up an assembly language version of it and iterated several times, trying to figure out the value of switching different registers. In the end, I took second place: https://github.com/jagregory/abrash-black-book/blob/4028269f... However, there's an interesting story behind this story. David Stafford, who came in first, posted that he thought he had the fastest solution and bet $100 that nobody could beat it. I posted my code which was significantly faster, and David tweaked it further to eventually win the challenge. Like a true person of honor, he did pay the $100 and I cashed his check.
In Graphics Programming Black Book (1997)
Oh man - of all my 'nerd crushes' Michael is at the absolute top. I feel like he hasn't been risen up to the stature of John Carmack but if you look at the things he's shipped in his career (no less than Quake AND Windows NT) and at the sheer volume of content he produced during those halcyon days in the late 80s/90s when the PC emerged from dumb as rocks beige business box to premier gaming platform, he is a key figure. I was too young and grew up too remote to have access to his writings as they were written but as an older engineer going back over his Graphics Black Book, the Zen of Assembly books and his Dr Dobbs articles, there's a lot of lessons that you can learn that still have a lot of value today. Actually one of the best lessons - and most easily accessible - is in the first chapter of his graphics black book, he talks about t
Read the rest
he human element of optimisation, and that it is critical to optimise the right thing. He uses an example of a engineer he knew that in the era of early electronic calculators (still clunky and and slow, but getting faster all the time) honed his slide rule skills to wipe the floor with any desktop calculator operator. But he was spitting into the wind, it was clear calculators were getting faster and there was no more road with slide rules. Ultimately he wasted effort on a legacy technology rather than leveraging what was up and coming. In many ways this mirrored the PC, in its early days, it was slow, dumb and unwieldy, but it was improving at a rate of knots and eventually came to dominate. Both Michael's Black Book and Zen of Assembly are on Github and maintained as PDF, Epub and other formats. They aren't terribly applicable technologically to computing today but they are very readable and contain a lot of general purpose problem solving and optimisation tips that are as applicable today as they were then. https://github.com/jagregory/abrash-black-book There have been few technical writers emerge that match Michael Abrash and it makes me so happy he's still hacking away at interesting problems today. Shame he doesn't write as much as he did, but I'm sure he's busy trying to usher in the metaverse (snowcrash had a big influence on him)!
In Quake's 3-D Engine: The Big Picture by Michael Abrash (2000)
Heh, this reminds me of the Abrash quote about optimization mentioned a few days ago (from his black book): > We're so used to slow software that when a compile-and-link sequence that took two minutes on a PC takes just ten seconds on a 486 computer, we're ecstatic—when in truth we should be settling for nothing less than instantaneous response. (from https://github.com/jagregory/abrash-black-book/blob/master/s...) Personally i'm annoyed when my compile times take more than a few seconds :-P
In Generics in C without void* or macros – enabled by psychec

Showing the 15 most recent of 28 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.