Suggested Reading for Modern Rendering Pipelines?

Well, it's been a long time. I was going to do a uDevGames 2004 entry, but just didn't have the time to get any real work done on it. I got far enough to realize that I miss hacking out OpenGL code and that I never have gotten game/demo coding out of the back of my mind. I'd like to get back into it, but already have my web site and one project on my plate, not to mention working my life away at my real job.

Except for the week or two of Cocoa/OpenGL coding I did when getting started on my uDG 2004 entry, I haven't done any OpenGL programming in 3 or 4 years now. I originally taught myself OpenGL in high school when my family purchased a 233MHz G3 iMac (Bondi Blue; Rev. B; circa 1998) w/ATI Rage Pro (6MB VRAM) and continued development through my freshmen and early sophomore years of college on my 400MHz PowerBook G3 FireWire (a.k.a. Pismo; circa 2000) w/ATI Rage 128 Pro Mobility (8MB VRAM).

At the time I stopped game/demo coding, the high tech games were still Quake III Arena, Unreal Tournament, Deus Ex, Oni, and stuff like that, so that gives a good idea of what I was used to back then. Lots of BSPs, Oct-Trees, multitexturing, and the likes. WPI (where I went to college) actually had a preview of the ATI Radeon before it was officially shown off, which was damn cool, but I was slowing down at the time (too much distraction and illness).

As I'd like to get into this again, but won't have the chance to concentrate on it or get any code flowing for a long time, I'd like to atleast assimilate as much knowledge on the new methods as possible. Modern engines (UT2003/2004, Halo 2, Doom 3, etc.) are using vertex & pixel shaders wherever possible and are doing things quite differently than I'm used to thinking about. Future engines are such as Unreal Engine 3 and whetever Carmack has up his sleeves are taking that even further. I'm looking for good overviews of modern, real-time graphics engine pipeline layout and rendering methodologies, but am having some difficulties. I'll probably pick up a copy of the latest edition of the Red Book (I'm still using a 3rd Edition) and the OpenGL Shading Language Programming Guide (Orange Book?) for general reading, as well as digging out my Calculus, Linear Algebra, and Physics books, but what else is a good idea? How do all these new pieces of the puzzle fit together in these crazy new engines?

I'd love to hear any suggestions you all have for books, papers, articles, sites, or what-have-you, on the subject. I'll be trying to read this stuff over the next six-months or so. If I can get my head around this stuff I think it'll give me a decent knowledge to jump back in with.

OneSickCookie Wrote:Just a warning that none of this stuff is really relevant to the Mac yet, particularly not the orange book. Will it be relevant in 6 months? Only Apple knows... but some of us suspect not

I still recommend giving the orange book a read, I think it's a wonderful book. I also recommend 'The Cg Tutorial', even if you're not interested in Cg it provides a wealth of tutorials and insight into shader programming. In terms of what you can find online I find ShaderTech.com very helpful for their forum and links to tutorials.

Yeah, the orange book is a good read IMHO. It got me up to speed on what it's all about. Like others, though, I agree that it will be quite a while before it's useful -my crystal ball says maybe a year or two, but the api might work as soon as Tiger. A good book on 3D rendering theory is Tricks of the 3D Game Programming Gurus, if you can stand the pc orientation of it. It's all about software rendering, and it's laboriously long, but it's about as easy as they come for understanding the underlying concepts of the rendering pipeline. You'll need to understand 3d rendering principles to do shaders anyway so books like that are probably worth taking a glance at now. Here's a link on game engines if you haven't seen it already Game Engine Anatomy 101

I thank you all for your suggestions! I'll definitely try to pick up a copy of GPU gems as well as the orange book.

I'm aware that GLSL probably won't hit the Mac OS X for a while, but I also don't believe I'll really get to do much game/demo development anytime soon anyway. We can only hope that Apple gets it out the door as soon as possible for game developers' and Mac gamers' sakes (although well tested, of course)!

Game Engine Anatomy 101 is actually a nice review in one piece. At first glance it seemed a little too basic, but it actually helped organize my thoughts quite well!

Thanks again, all!

[EDIT]BTW - the rest of the links have proven to be very useful as well![/EDIT]

The reading is going quite well, so I wanted to thank you all again for your suggestions.

I'm sure glad that I started off my 3D graphics programming with a 68k Mac and a copy of Black Art of Macintosh Game Programming in hand, because it really gave me a hell of a lot better understanding of graphics pipelines. I'm seeing that things really haven't changed drastically, just minor enhancements for newer technologies like shaders.

I've been reading a bit on deferred shading, which looks like it's going to provide some very nice performance boosts for extremely complex lighting. Still, the rest of the rendering pipeline doesn't change all that much. You're just leaving out lighting from your regular pipeline and doing it all in final passes to rendering (some data is stored in the extra buffer space to make this possible, of course).

Still mulling over things like how to optimize texture & shader loads (is it better to sort by shader and then texture, or vice versa) and more. But I've got plenty of time to work things like that out. I just wish I would drop other projects and get back to coding!