Graphics Programming Black Book by Michael Abrash(byte.com)
byte.com
Graphics Programming Black Book by Michael Abrash
http://www.byte.com/abrash/
10 comments
I ate this book up like candy when I had my first gig at a game development shop. It's absolutely fantastic. Especially enjoyable is the stuff about his work on Quake - which, IMHO, was one of the greatest technical achievements in software, ever. (Do you think you could render a 3D environment at 25 fps, all in software, on a Pentium 75?? Unbelievable...)
It's a great book - outdated for sure, but I learned a lot just reading how he approached the problems.
A nice throwback to when CPUs were simpler/more deterministic with respect to optimization.
A nice throwback to when CPUs were simpler/more deterministic with respect to optimization.
Book has been sitting on my shelf forever since I found it in a clearance bin. Now I'll actually (try to) read it!
Trying to go to their website using Camino (I realize that its working for Firefox and other more popular browsers, was just kind of surprised):
javax.servlet.ServletException: agent.filename property not set in config file at com.cmp.nucleus.servlet.NucleusServlet.init(NucleusServlet.java:895) at com.caucho.server.http.Application.createServlet(Application.java:3114) at com.caucho.server.http.Application.loadServlet(Application.java:3065) at com.caucho.server.http.QServletConfig.loadServlet(QServletConfig.java:435) at com.caucho.server.http.Application.getFilterChainServlet(Application.java:2809) at com.caucho.server.http.Application.buildFilterChain(Application.java:2765) at com.caucho.server.http.Invocation.service(Invocation.java:313) at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346) at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595)
javax.servlet.ServletException: agent.filename property not set in config file at com.cmp.nucleus.servlet.NucleusServlet.init(NucleusServlet.java:895) at com.caucho.server.http.Application.createServlet(Application.java:3114) at com.caucho.server.http.Application.loadServlet(Application.java:3065) at com.caucho.server.http.QServletConfig.loadServlet(QServletConfig.java:435) at com.caucho.server.http.Application.getFilterChainServlet(Application.java:2809) at com.caucho.server.http.Application.buildFilterChain(Application.java:2765) at com.caucho.server.http.Invocation.service(Invocation.java:313) at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346) at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595)
Well spotted - I just assumed that the server was having traffic problems as this link has been posted by Jeff Atwood at Coding Horror. It opens just fine in a FireFox IE tab of course.
Isn't working for me in these popular browsers you speak of, unless it's just a mac thing?
EDIT: A ha, it works now. Maybe it's a server load thing.
EDIT: A ha, it works now. Maybe it's a server load thing.
I got that on my first attempt (Opera 9.25/Linux), after hitting 'reload' once I got the page. Weird.
Sampling chapter one tells me that this is very well written and pertinent - if you don't get bogged down in the immediate issues of DOS calls. Performance is always going to be crucial for all but the most trivial (or unrepeated) tasks.
I quote from the chapter's conclusion
"This chapter has presented a quick step-by-step overview of the design process. I’m not claiming that this is the only way to create high-performance code; it’s just an approach that works for me. Create code however you want, but never forget that design matters more than detailed optimization. Never stop looking for inventive ways to boost performance-and never waste time speeding up code that doesn’t need to be sped up."
Spot On!