Flarg -- Daniel Wexler's Corner

Graphics Programming Books

Sunday, February 10, 2002

I love books. When I started programming I was about thirteen years old and a voracious reader. I still think that if you want to learn how to write renderers or other graphics applications, the best thing to do is read books and write code.

Click on the cover or title to purchase the book at Amazon.


Graphics Algorithms

If you know a bit about programming, and you are interested in learning about graphics algorithms, then I recommend getting one or more of the following books:


cover

3D Computer Graphics, 3rd Ed. by Alan Watt is a great textbook covering the math and algorithms necessary to implement a basic 3D renderer. It walks through the material needed to construct a classic 3D pipeline and even includes Pascal code at the end for a wireframe and Gouraud shaded Z-buffer renderer. It includes basic overviews of radiosity, optimization techniques, color spaces and monitor issues. It does not cover image processing, other than the basic filtering required for antialiaisng. It also does not go into detail on many advanced rendering techniques. All in all, a great first year course in 3D computer graphics.


cover

The Computer Image by Watt & Policarpo. This is a very broad text that covers a wider range of material than 3D Computer Graphics and generall in less detail. It is not as good if you really want to get down and start programming right away, but it is great if you want another book to read while implementing your renderer. In addition to basic 3D algorithms, this book also covers image processing and image vision, including reconstruction of information from 2D images, and many animation techniques. It also comes with a great CD that contains an amazing array of programs for Windows including warping, morphing, mesh optimization, octree ray tracing, particle simulation, ffts, bezier patches, Z-buffer rendering, a basic image processing program, and even some radiosity and global illumination renderers. I mean come on!


cover

If you want to write a ray tracer, then Realistic Ray Tracing by Peter Shirley is a great place to start. There are other books that contain more code, but ray tracing is easy enough that it is generally better to get a book that clearly describes the math and important algorithms.

Graphics Gems I-V



Advanced Graphics Topics

Once you get into graphics, there are a number of sources for more advanced information. Since this is such a young field, often you need to go directly to research literature.


cover

Probably the most complete text to day, Andrew Glassner's Principals of Digital Image Synthesis is expensive but worth it. If you have the money to get just one book for advanced graphics programming, this is it. All major concepts are delt with in depth and in a clear manner.


cover

Advanced RenderMan: Creating CGI for Motion Pictures is an important book to own since it describes the RenderMan standard for scene representation and shading language. There are a relatively large of renderers that support the RenderMan standard, and it is the de-facto standard for scene representation at most high-end production houses. (Only silly places like PDI and R&H seem interested in having their own proprietary renderers these days. :-) This book also covers "tricks of the trade" and basic cinematography, both of which are often more valuable than theory or hard work.


cover

Texturing & Modeling: A Procedural Approach, 2end Ed. by Ebert, Musgrave, Peachey, Perlin and Worley, is a great book to have once you have a working renderer. It provides fundamental techniques that you will use over and over again. It also includes a CD-ROM with a bunch of useful stuff.


cover

Michael Abrash's Graphics Programming Black Book is worth reading simply for the mindset inspired by the co-creator of the Quake engine. This book concentrates on optimization technique. It is largely focused on the Wintell architecture, but most of that can be safely skipped while concentrating on the methodology of optimization. For most programmers, this book may seem to get too far into assembly, but on the contrary, it is the high level optimization focus that makes this a worthwhile read -- or at least a skim.


cover

I haven't actually used much of the code in Georg Glaeser's Fast Algorithms for 3D-Graphics but I always thought I would. There are nice bits of code for pretty much every part of the basic 3D graphics pipeline. It certainly isn't a necessary book, but if you like grabbing code, this is a good place to start. It comes with a floppy disk with code, which, I suppose, dates this work.



Special Topics


cover

Radiosity: A Programmer's Perspective by Ian Ashdown is my favorite radiosity book. The primary thrust of the book is to present the code for a radiosity engine. The code is provided, and most of the discussion serves to help understand the code. It does not cover other global illumination concepts such as Monte Carlo techniques.


cover

Radiosity & Global Illumination is a more theoretical coverage of global illumination. It has less code, but covers more topics than A Programmer's Perspective. In addition to the fundamental radiosity technique, this book discusses issues with control and complexity, and Monte Carlo techniques. Along with Peter Shirley's book, this provides fairly good coverage of the theory and practice of ray tracing based global illumination algorithms.


cover

Jim Blinn's books, A Trip Down the Graphics Pipeline and Dirty Pixels are just great. One of the founding researchers into computer graphics, Jim Blinn passes on a wealth of knowledge through compilations of his column in IEEE Computer Graphics and Applications. Dr. Blinn has that great knack of describing difficult topics in visual terms that are easy for everyone to understand. He also has a great sense of humor. These books are both worth it. Get them and put them next to your bed.


cover

Andrew Glassner's Notebook: Recreational Computer Graphics follows in the vain of Jim Blinn's books by compiling a set of Dr. Glassner's columsn for IEEE CG&A. These columns generally focus on fun topics in computer graphics. They are interesting and diverting, but they don't provide as much practical information for writing renderers as most of the other books in this list.


cover

At some point, you will be asked about, or read about, Wavelets. Really, they aren't that big of a deal. Wavelets for Computer Graphics provides a thorough overview of the topic as it pertains to rendering. Get it if you are interested. Unless you are serious about radiosity or compression, it probably won't help you on a day-to-day basis, but it looks nice on the shelf.