5 ms·
Michael Abrash's Graphics Programming Black Book
- Who828 13y agoPDF, HTML(zipped) and the source code http://orangetide.com/graphics_programming_black_book/ http://orangetide.com/graphics_programming_black_book/
- laichzeit0 13y agoThis link now redirects to Amazon for some reason.
- laichzeit0 13y agoAh man this brings back memories. I have the book + cdrom sitting here on my bookshelf. I was 14 and just started learning to program with Turbo Pascal and assembler by reading Denthor's Tutorials on how to program Demos. My dad happened to be going on a business trip to the U.S. (we didn't have nice books like that in South Africa) and when he asked what I wanted I said "the Graphics Programming Black Book" not knowing how big and heavy that thing was and he had to lug it around with him. At the time I didn't understand much of it but I remember the evolution of him optimizing Boyer Moore string search left quite an impact. That and the anecdotes of him working with John Carmack at the time they were coding Quake I. Just browsing through the chapters makes me want to read the whole thing again.
- dicroce 13y agoI remember the Denthor tutorials! Downloaded from a BBS, learned the basics of graphics programming... Mode 13h... :) I emailed Denthor once and thanked him (shortly after I got my first job in '96).... I have the Black Book as well, good memories!
- comatose_kid 13y agoI implemented Bresenham's algorithm in ARM assembly on the gameboy advance based on reading his 'zen of graphics programming'. Great writer, the anecdotes at the beginning of each chapter really hooked me in.
- chiph 13y agoJack was my graphics professor. After taking his class, I realized that I was never going to be a guru in the subject. :( But I did learn that a v1.1 of a C compiler (Borland Turbo C) produced much slower code than the highly optimized Turbo Pascal, then at v4.0
- melling 13y agoThis was referenced in a HN article that I read in the past day. I checked out reviews and it seems like it's a bit dated. Many chapters are done in assembler, for example. Any recommendations on great books that cover OpenGL and game programming?
- Who828 13y agoWhile I agree it's dated in lot of ways but it is still a great read. I am not a game dev but I love to write performant code, it's just a personal satisfaction when I know my code is making the best use of the hardware. I think you should read the first chapter at least, on how he approaches code optimization, first by design and then by code. This book teaches you to think like a performance programmer like no other. In the first chapter he challenges assumptions, for example how lib C code is not really optimally written (its written for portability and general purposes) and you can easily write more efficient algorithm to do the same. The mindset of not being at mercy of the library is a powerful one, it inspires you to dig deeper and find out how things really work. Thus, you make the best choices for the problem in hand.
- melling 13y agoYep, I'm sure there are still great nuggets in the book. Unfortunately it looks like I'm not going to get my question answered about modern OpenGL books because everyone just jumps in and says that you should still read Abrash's book. John Carmack, for example, didn't write much of his games in assembler because he knew that he didn't have to. If you look at Doom, there wasn't a lot of assembler even back in the early 1990's. https://github.com/id-Software/DOOM https://github.com/id-Software/DOOM And according to Carmack, he liked working in C and OpenGL. http://rmitz.org/carmack.on.opengl.html http://rmitz.org/carmack.on.opengl.html "With OpenGL, you can get something working with simple, straightforward code, then if it is warranted, you can convert to display lists or vertex arrays for max performance (although the difference usually isn't that large). This is the right way of doing things -- like converting your crucial functions to assembly language after doing all your development in C." I actually have done some basic assembler so I do understatnd the benefits of keeping values in registers, etc. A lot of stuff really is architecture dependent, of course. ARM vs x86 will make a difference. Anyway, where's the best place to start these days? Personally, I'd like to do some iOS stuff, and perhaps keep the same code running on Android.
- mattschmulen 13y agobest technical writer .. brings back memories
- mattschmulen 13y agobest technical writer .. brings back memories
- polskibus 13y agoHere's the original DDJ link: http://www.drdobbs.com/parallel/graphics-programming-black-book/184404919 http://www.drdobbs.com/parallel/graphics-programming-black-b...
- kr0 13y agoI love the comparisons of program speed to Computer hardware available at the time of writing.
- binarycrusader 13y agoSee also, Abrash's "Ramblings in Realtime": http://www.bluesnews.com/abrash/ http://www.bluesnews.com/abrash/
- michael_abrash 13y agoThanks for the kind words, everyone - this brings back a lot of memories for me too. You know, I wrote everything in that book either late at night or on weekends, and I never really knew if it much mattered to anyone (feedback was a lot harder to come by in pre-Internet days); reading these comments goes a long way to making all that work worthwhile. Oh, and laichzeit0 - my apologies to your dad for the weight of the book. There have been a few times when I was lugging one around and wishing I had been more sparing with the words :) --Michael
- davidst 13y agoIt will never be outdated thanks to all the happy memories it holds for me. Thanks for writing it, Michael. It's one of a few books I will never part with.
- mortyseinfeld 13y agoThese days most devs would enjoy Abrash's awesome story telling ability over the intricacies of long forgotten x86 chip instructions for software rasterizers.
- EdSharkey 13y agoMichael wrote an article about quake once that described the inner loop optimization of the software renderer. I recall he was computing a dot product or something that was used over an 8 pixel span. The hack was that he started an fpu divide and then got useful work done on the integer pipeline without a stall, perfectly timing out when the fpu would have his value ready. What a brilliant hack. I recall the satisfaction of knowing so much secret knowledge. :)
- atesti 13y agoWhy is the page redirecting to Amazon now? Does anybody have a mirror?