Tag Archives: books

I want this to be the best book ever

I just learned of a new book coming out: “Real-Time Shadows“, by an excellent group of researchers (a little more info here). I assume this book will be based on the authors’ 148-page “Casting Shadows in Real Time” course notes and related publications. This subject deserves its own book. There are enough interesting principles and so many variants and subtleties that I’m happy to hear this topic will get thorough coverage. Our book page is updated.

Looking around at other book-related resources, I noticed some interesting bits. John Vince’s “Geometry for Computer Graphics: Formulae, Examples and Proofs“, from 2005, has been reissued in a softcover edition. It’s pricey, as Springer books can be, and weighs in at just 364 pages, but it’s an information-packed volume. It’s a kind of book you rarely see now, one with a dense collection of formulae, like CRC Press used to specialize in. Google Books sample here. Some of it’s pretty tangential to computer graphics – normally I don’t need proofs about things like the opposite angles of a parallelogram being equal – but it’s fun to page through: “Someday I’d love to find a use for that coiled ring equation”. Whether you’ll ever need 1/100th of the information in this book depends on you. It seems like a good fit for demoscene programmers who want procedural functions and model generation, for example. Anyway, something to see if your university library has, just to page through and know it exists.

Speaking of geometric resources, I was sad to see the site geometryalgorithms.com appears to be defunct. What’s key to remember in such cases is that there’s the Wayback Machine. Just put in a dead URL and more times than not this site will have a copy. So the Geometry Algorithms site lives on here! Luckily, math doesn’t really rot, so the articles are still worthwhile. The bad news is that a few of the figures are missing.

For technical book authors, I ran across this interesting little tool: Detexify2. Draw the symbol you need, it will show you likely matches and what LaTeX you need. I’ve found it’s pretty accurate, though seemed to have problems with “not equals” half the time I drew that symbol as a test. Anyway, it’s probably no more efficient than just looking it up here or here, but is more fun.

Last resource for the (mothers’) day: so you want to explain the basics of computer graphics to your mom. Frédo Durand’s six page introduction is not a bad place to start. At the least, you can use the figures at the end to explain ideas.

Emerald, Jade, and ummm, Diopside?

Many moons ago when the world was young(er), Jim Arvo asked a few other graphics guys what we thought the next volume of “Graphics Gems” should be. After batting around “More Graphics Gems”, “Son of Graphics Gems”, “Revenge of the Graphics Gems” and other alternatives, he finally went with the consensus: number them, even though the first one is not numbered “1”. This is now the norm: GPU Gems, Game Programming Gems, Game Development Tools have all gone this route. The ShaderX/GPU Pro series(es) have gone with pushing the numeral up top, e.g., ShaderX3. Which I guess is officially read as “ShaderX cubed,” but of course everyone calls it “ShaderX Three.” Some have gone a different route, like the “Jim Blinn’s Corner” books were differentiated by the subtitles and by strikingly different cover colors.

Along the way there has been the occasional rough patch with book titles. For example, ShaderX2 is actually two very different books, “Introductions and Tutorials” and “Tips and Tricks.” The “Best of Game Programming Gems” book is excerpted from the first six books, leaving the seventh and eighth in a funny state – “what am I, chopped liver?” There seems to be a tiny hint that there will be a ninth volume, but there’s not a whiff of any call for participation elsewhere, e.g. not on the official series page.

I bring up this topic of naming because there’s now a new axis being developed: gem names. I noticed this a few months ago, and in updating the book page today, it’s official: the new GPU Computing Gems series truly is going with calling their first volume Emerald, the second volume Jade. Or is it vice versa? I honestly had to check.

I have to question this naming concept a bit, especially given the gems’ colors, but I guess the damage is done. “You know, the GPU Computing Gems book edited by Hwu, the one named after a green gem, with the green molecular structure on the cover, came out in 2011?” That accurately describes both volumes. When I first ran across this pair of books, I thought it was a bug or misprint, that there was only one book but with two slightly-different entries, sort of like “Harry Potter and the Philosopher’s/Sorceror’s Stone”. I’m not a marketing genius, but this naming scheme so far is not working for me. Which is a pity, as it does a disservice to the contributors by confusing the message. So, yes, there really are two different volumes, with Emerald out now and Jade coming out in August.

CFP: Game Development Tools 2

Passing this along, from Marwan Ansari. “Real” blogging again soon…

Now that the first volume of Game Development Tools has gone to the printers and will be available shortly, we invite you to submit a proposal for an  innovative article to be included in a forthcoming book, Game Development Tools 2, which will be edited by Marwan Y. Ansari and published by CRC Press/A. K. Peters. We expect to publish the volume in time for GDC 2012.

We are open to any tools articles that you feel would make a valuable contribution to this book.

Some topics that would be of interest include:

· Content Pipeline tools (creation, streamlining, management)

· Graphics/Rendering tools

· Profiling tools

· Collada import/export/inspection tools

· Sound tools

· In-Game debugging tools

· Memory management & analysis tools

· Console tools (single and cross platform)

· Mobile Device (phone/tablet) tools

This list is not meant to be exclusive and other topics are welcome.

The schedule for the book is as follows:

July 1         – All proposals in.

July 18th   – Authors are informed and begin writing articles.

Aug 19th   – First draft in to editor

Sept 16th   – Drafts sent back authors with notes for final draft.

Oct  15th   – Final articles in to editor

Dec 1st      – Final articles to publisher (A K Peters)

GDC 2012 – Book is released

Please send proposals using this form to: marwan at gamedevelopmenttools dot com.

Books at GDC

I haven’t listed out new(ish) books for awhile, so here are a bunch. If you’re at GDC, you can take a look at most of them in the exhibitors hall. There’s also a high-quality volume free for download (or pay $81.38, if you prefer), so read on.

Three that are hot off the press:

GPU Pro 2, Wolfgang Engel ed., AK Peters – The next in the series (which continues the ShaderX series), and it looks like there’s a fair bit of chew in there. See the approximate table of contents here. Me, I’m particularly interested in the MLAA article; there’s a preview, moview, and more here.

GPU Computing Gems, Emerald Edition, Wen-Mei W. Hwu ed., Morgan Kaufmann – the GPGPU topics covered are all over the map, and unfortunately the two reviews on Amazon are not positive, but I’d like to page through it nonetheless and see what it’s like. Table of contents and sample chapters here.

Game Engine Gems 2, Eric Lengyel ed., AK Peters – More nuts and bolts and about game engines in general, take a look at the table of contents here.

There are also a few other graphics-related books that have come out in the past year that we haven’t mentioned here yet:

Game Physics Pearls, Gino van den Bergen and Dirk Gregorius ed., AK Peters – I’m not a user of game physics so can’t really judge this one, but thought it nice that the book has a progression to it: there’s an introductory chapter about the field, then practical articles about collision detection and simulation of various types of physical phenomena.

Polygon Mesh Processing, Mario Botsch, Leif Kobbelt, Mark Pauly, Pierre Alliez, Bruno Levy, AK Peters – This is a serious overview of research done on mesh-related algorithms, starting with data structures and covering such topics as smoothing, simplification, mesh repair, and deformations.

The rest are not directly related to interactive rendering, but are books I’ve wanted to page through. They’re all from Springer, who doesn’t appear to be exhibiting at GDC this year, so I guess they’re mostly be for sampling online:

Computer Vision, Richard Szeliski, Springer – Written by an expert in the field, I’ve heard this is a good guide to the subject. Super cool thing: the final draft of this book is free for download on his website. Much of Chapter 3 looks like a good read for interactive rendering programmers.

Mathematics for Computer Graphics, John Vince, Springer – I like to see such books, and have heard this one’s pretty good. It certainly starts out from the basics, though some topics covered seem unrelated (at least to me) to graphics.

Production Rendering, Ian Stephenson ed., Springer – definitely not interactive rendering, but it sounded like an interesting collection of articles from seven experts in the field. The last chapter in particular, “Rendering Gems”, looks pretty chewy. Perversely, Amazon’s “Look Inside” does not show you all of the Table of Contents, but Google’s excerpt does. Update: this turns out to be an old volume from 2004 I hadn’t noticed before (Springer books are usually too expensive for me, so I don’t tend to track them), one that Amazon mistakenly lists as having come out in November 2010 – see the comments below.

I’m betting I’ve missed other new books, so let us know by adding a comment.

How to Make an Ebook

Here’s a short guide on creating decent ebooks from scans using Adobe Acrobat. This will not be of interest to 98% of you, but I want to record it somewhere for those of you who may do this in the future. It is written by Iliyan Georgiev, who made the recent PoDIS ebook. Comments are welcome, as usual.

The one piece of software you’ll need that can’t be downloaded for free is Adobe Acrobat, though even this application has a 30-day free trial.

1. Scan the pages of the book using a scanner (a digital camera is a good alternative).

2. Crop the scanned images (and split the pages, if you scanned two pages at once). It’s better for an ebook to have smaller page margins. Also, cropping removes black areas and other artifacts resulting from scanning. An excellent (JPEG-only) batch cropping tool for Windows is JPEGCrops. It has some disadvantages, however, so in practice it’s best to use JPEGCrops to estimate approximate cropping parameters (width, height, x-offset, y-offset) and XnView‘s batch processing mode for the actual cropping. Both applications are free and have portable versions.

3. Assemble all images into a PDF file. Adobe Acrobat has an option to combine multiple files into a single PDF. Use the highest quality settings for the creation.

4. (OPTIONAL) Rearrange/merge/delete pages. Acrobat has excellent tools to achieve these. This can be useful for books that are published in two volumes or for extending the book with additional information, such as errata listings, images, high quality cover pages, etc.

5. Manage blank pages. It might be tempting to delete blank pages inside the book. Such pages are always intentionally left blank by the publishers, as they are important for the printing order. This is particularly important for the first few pages, as well as for the chapters. Many books are created in such a way that all chapters start on an even/odd page, and the large majority have the inner pages typeset for being printed on a specific side (left/right). If you want to optimize the page count anyway, keep in mind how the book would appear when printed out (also using “2 pages per sheet” printing).

6. Number the pages. This is an often-overlooked, but very useful, option. Apart from the default page numbering, the PDF format supports logical page numbering. This can be used to synchronize the PDF page numbers with the actual book page numbers. This is very easy to do in Acrobat and should always be done. To do this, select the necessary pages, right click on them and choose “Number Pages…”.

7. Run OCR (optical character recognition) on the PDF. This is an extremely easy way to make your scanned pages searchable and the text copy/paste-able. Acrobat has a good and easy to use built-in OCR tool. You will find it in the Document menu (Tools pane in Acrobat X). Be sure to disable image resampling, as by default OCR will resample the images, which can easily increase the file size by a huge amount! Keep in mind that OCR is a compute-intensive process and can easily take a couple of hours for a larger book.

8. Optimize document. Acrobat has an option to optimize scanned documents. This runs some image-processing algorithms on the scanned images and compresses them aggressively when it detects text. This is a vital step to keep the size of the document low. It can reduce the file size by a factor of 20! It will also make the antialiasing to look better when pages are minified, if the resolution of the original scans is high enough. This process is also compute-intensive and can easily take an hour for a larger book.

9. (OPTIONAL) Reduce the file size further by using Acrobat’s other optimization options, from which the image downsampling is the most important.

At this point the most important steps are done and you can end here and go to sleep if you see the sunrise through the window. Go on if it’s only 4 AM.

10. (OPTIONAL) Setting the initial view. Open the document properties on the Initial View tab. Here, you can set the initial page, zoom level and which panes (e.g. the bookmarks pane, see below) should be active when the document is opened.

11. (OPTIONAL) Create a PDF table of contents (TOC). The PDF format has a useful (hierarchical) bookmarking feature with a dedicated Bookmarks pane which exists also in Adobe Reader. This feature can be used to reconstruct the book’s TOC for easy document navigation. One simple way to achieve this is the following:
11.a Go to the book’s Contents page, select the chapter title’s text and hit CTRL+B (or right click and choose to add a bookmark from the context menu). Repeat this for each chapter.
11.b Structure the created bookmarks. Rearrange the bookmarks to follow the order and structure of the book’s TOC.
11.c Link the bookmarks to pages. To do this, go over all pages of the book sequentially and every time a new chapter starts, right click on the corresponding bookmark and set the destination to the current page.

12. (OPTIONAL) Create hyperlinks inside the document. The PDF format also supports hyperlinks which can perform actions (e.g. jump to a page or a web site) when clicked. Links can be either rectangles (drawn with a corresponding tool) or text. To create text links, select the text, right click on it and choose to crate a link. There are options to set the link’s appearance and behavior.

You’re done! You have the perfect ebook and you’re late for work!

Thanks, Iliyan!

In my post about PoDIS now being free, I asked for a volunteer to reformat the two PDFs into a nicer single file. Iliyan Georgiev, a PhD student at the University of Saarland, stepped up and took over. After a few iterations, with Andrew and me providing feedback, he’s made an excellent new version of “Principles of Digital Image Synthesis”. Download this new version from here (right-click and “Save link as…”).

This new version is much superior to the one on Google Books. It’s a single, searchable file (the Google Books version is just a scan without any OCR), it has a hyperlinked table of contents (actually, two of them), and has all errata folded into the text.

Along the way I learned a new trick from Iliyan: you can put PDFs (or any file type at all) into your Google Docs area and make them entirely public, which is how this version of the book is distributed. This is good news for all researchers: you can now host your publications in your own account. No hassling with the I.T. guys to get an account, no fuss if you move to another institution. Now no researcher needs to be held back by “it’s not company policy to give public web space” or other bureaucracy. Having a web site is nicer, but hosting in this way is free and simple. You can host up to a gigabyte for free.

How to Put a Book on Google Books

I asked Andrew Glassner to outline the process he went through to free up his book from his publisher and put it on Google Books. Here’s his reply. I hope this information will encourage anyone else who has authored a book that’s now out-of-print to spend a bit of time and effort to get it out to us all.


If you plan to release your book through Google Books, the most important thing is that you own and control the copyright. Most book publishing contracts state that when the book goes “out of print,” the rights revert to the author. This is usually not automatic: you have to ask the publisher for the rights, and they have to explicitly return them to you. I usually ask for a real, paper letter with a real, human signature on it that states the rights have been returned to me (I don’t know if an email version would carry the same official weight). This is a good time to ask them for any other physical or electronic documents they have for your book, from illustrations to PDFs and so on. They’re usually under no obligation to give you these, but often they’ll give you what they have.

You’ll also need control of at least some “Territorial Rights,” which are discussed below. It’s probably easiest to get the publisher to revert the copyright and territorial rights at the same time.

Note that it’s usually up to the publisher to determine if a book is “out of print” or not. Even if it’s many years old, and they’re not putting ink on paper any more, they may still formally consider the book to be in print. I suggest contacting your publisher and first inquiring if it’s out of print. If they say it isn’t, but you think it should be, ask them why. They might just not have gotten around to giving it that status. Be polite and professional and work with your publisher to establish the status of the book as clearly as possible. When it is out of print, ask to have copyright reverted back to you. If the publisher wants to retain some rights, offer an agreement whereby they revert the rights to you, but you then assign some rights back to them. For example, you might grant them non-exclusive electronic rights, so they can provide the book on their website.

Now that you own the copyright, create an account at the Google books partner program. If you already have a Google account (say with Gmail) you may be able to simply use that; I chose to create a new account. I don’t recall if Google asks you for payment information at this point or not. If you end up charging money for any of your books, Google has to report that income to the IRS (if you’re from outside the US, I don’t know how this works). Although I was planning to release my book for free, I set up my partnership through my one-man LLC. I don’t recall if I had to give them any kind of tax information (e.g., a Federal Taxpayer ID, which is the business equivalent of a Social Security Number) at this point or not.

Once your account is created, choose “Books”. Go to “Add Books” and enter your ISBN. Often, this is the bar code printed on the book. Another source is Amazon, which usually lists the ISBN on the book’s page. Some ISBNs are 10 digits, some are 13. Try all the versions you can find until you get one that Google recognizes as your book.

Click the question mark next to Territorial Rights, look over the options, and enter the rights that you control. Note that the publisher must explicitly relinquish those rights when they return the copyright to you. I don’t know the mechanics of this step, but Google must be checking with someone, somewhere to confirm that you own the rights. When I initially listed my book, I chose “all” for this field, and a few days later Google sent me a nice email stating I didn’t own these rights. I contacted my publisher and explained I was releasing the book through Google Books and needed to control the Territorial Rights (in addition to the copyright they’d already returned to me). They were very nice about it, and a few days later let me know it was done. I don’t know what they did, but it worked.

Google will now ask if you have a PDF or physical book you can send them. I said I did not. They then said that they would let me know if and when they scanned the book in the future. They seem to say this even if they’ve already scanned the entire book. My understanding is that if they’ve scanned any of it, they’ve scanned all of it, even if they’re only displaying a few pages. So I figured that if I gave them some time, their database of scanned-in books would catch up with this request to scan in the book, and the full PDF would appear. That indeed happened about a week later.

At that point your book’s status will go to “Live”. At the far left of your book’s listing (just to the left of the ISBN) there’s a little pencil icon. Click on that. You can now control how much of the book is shown to viewers by choosing a level from the “Book Browsable” drop-down. If you choose 100%, then they will give you the chance to apply one of several different Creative Commons licenses. There’s a nice summary of them right there on the page. I chose “Attribution-Noncommercial,” so that I get credit for my work, nobody can re-sell it for profit, but other people can build upon it.

Let Google digest and process these changes.  They say it can take up to a few days.  Then your book should be ready to share with the world!

“Principles of Digital Image Synthesis” now free for download

Andrew Glassner released his two-volume book “Principles of Digital Image Synthesis” to be free for download from Google Books. This book is pretty amazing in its scope and depth. Published in 1995 by Morgan-Kaufmann Press, it provides an education in almost all the key scientific and mathematical concepts used in rendering. The human vision system and color, display systems (pre-LCD, though), signal processing, sampling and reconstruction, Monte Carlo integration, energy transport, BRDFs, and much more, in 1600 pages. I turned to it for some bits of theory for our first edition. Despite its age, it is a worthwhile volume, as the underlying science and math are still valid.

Update: get a nicer version of the PDF version of the book from Iliyan’s site, or from here. Read more about it here.

Unfortunately, Google Books doesn’t quite list the book correctly and makes it hard to find both volumes when searching. So, here are the direct links:

Just hit the PDF download link in the upper right corner of each page, prove you’re not a computer, and you’ll then have each volume. You’ll want to rename the PDFs, as Google Books calls each volume the same name, Principles_of_digital_image_synthesis.pdf. Volume 1’s PDF is 12.0 MB, Volume 2’s is 17.8 MB.

Finally, to get the errata for the book, go to the author’s page about the book.

Special bonus project: I just asked Andrew Glassner if it would be OK for someone with Acrobat or other editor to put both PDFs into a single PDF, and to fold in the errata. He said that would be great, and that he could provide a bit more new errata which is not on his webpage yet. Let me know if you’re interested in doing a good deed for the graphics community and I’ll coordinate any efforts. Update: looks like we’ve got a volunteer, and so I’m hoping a new PDF version will be available in a few days.

Two and a Half Books

I’ve learnt of two new books in the past few weeks, worth mentioning as books to check out at SIGGRAPH (or using Amazon’s “Look Inside”, of course):

iPhone 3D Programming: Developing Graphical Applications with OpenGL ES, by Philip Rideout, O’Reilly Press. A better title might have been “Programming OpenGL ES on the iPhone”, as it focuses on OpenGL ES more than on the iPhone per se. Which is fine; there are already lots of iPhone programming books, and almost none that are focused more on OpenGL ES itself (the only other OpenGL ES 2.0 book I know of is this one). The book is C++ oriented, with some Objective C as needed for glue. From my brief skim, this looks like a well-illustrated, readable guide that hits many different effects: reflection maps, skinning, antialiasing, etc. That said, I haven’t yet had the opportunity to program on any mobile devices, so can’t give an expert review. When I do give it a try, this looks like the book I’ll read first.

Update: A draft of this book is free on the web, see it here. It looks to be essentially the same as the published work (but with some hand-drawn figures), and is nicer in some ways, as the pages allow color images (always good for a graphics book).

Light & Skin Interactions: Simulations for Computer Graphics Applications, by Gladimir V. G. Baranoski and Aravind Krishnaswamy, Morgan-Kaufmann Press. This one’s out of my league as a casual skim. Paging through and seeing “the eumelanin absorption coefficient is given by…” and “Scattering in either the stratum corneum or epidermis…” shows me how little I know of the world in general. Anyway, interesting to see a whole book about this critical type of material. Searching through it, there’s minimal coverage of, for example, d’Eon and Luebke’s work, so I can’t say it has much direct application to interactive computer graphics at this point.

That’s all for the real books…

The half a book (at best): Game GPU Graphics Gems: Real-Time Rendering The Redux (aka GGGG:RTRTR), by anyone who wants to edit it. When I “edited” the quasi-book Another Introduction to Ray Tracing a few months ago, I thought back then that I’d start another book for SIGGRAPH. Like the first stunning collection, this was an hour of work gathering Wikipedia articles (hardest part was choosing a cover). There are plenty more articles to gather about interactive rendering, and you’re most welcome to add any good ones you find to this book, make your own, etc. – it’s a wiki page, after all. More seriously, I like having a single, tight page of links to Wikipedia articles about interactive rendering, vs. wandering around and haphazardly seeing what’s there.

“Video Game Optimization” – a good book

I had the chance to spend some quality time with Preisz & Garney’s recent book “Video Game Optimization” a few weeks back, as I was trapped in a 14 hour plane flight. I hardly spent all that time with it, though I probably should have spent more. Instead, “Shutter Island” and “It’s Complicated” (with bad audio) are four hours out of my life I’ll never get back.

This book goes from soup to nuts on the topic: types of optimization, how to set and achieve goals, discussion of specific tools (VTune, PIX, PerfHUD, etc.), where bottlenecks can occur and how to test for them, and in-depth coverage of CPU and GPU issues. Graphics and engine performance are the focus, including multicore and networking optimization, plus a chapter on consoles and another on managed languages. Some of the information is in the “obvious if you’ve done it before” category, but critical knowledge if you haven’t, e.g., the first thing to do when optimizing is to create some good benchmark tests and lay down the baselines.

There are many specific tips, such as turning on the DirectX Debug runtime and seeing if any bugs are found. Even if your application appears to run fine with problems flagged, the fact that they’re being flagged is a sign of lost performance (the API has to recover from your problem) or possible bugs. I hadn’t really considered that aspect (“code works even with the warnings, why fix it?”), so plan to go back to work with renewed vigor in eliminating these when seen.

I also liked reading about how various optimizing compilers work nowadays. The main takeaway for me was to not worry about little syntactic tricks any more, most modern optimizers are good enough to make the code quite fast.

There’s very little in this book with which I can find fault. I tested a few terms against the index. About the only lack I found was for the “small batch problem“,  where it pays to merge small static meshes into a single large mesh when possible. This topic does turn out to be covered (Chapter 8), but the index has nothing under “batch”, “batching”, “small batch”, etc. There is also no index entry for “mesh”. So the index, while present (and 12 pages long), does have at least one hole I could detect. There are other little index mismatches, like “NVIDIA PerfHUD Tool” and “NvPerfHud Tool” being separate entries, with different pages listed. Typo-wise, I found one small error on page 123, first line should say “stack” instead of “heap”, I believe.

Executive summary: it’s a worthwhile book for just about anyone interested in optimization. These guys are veteran experts in this field, and the book gives specific advice and practical tips in many areas. A huge range of topics are covered, the authors like to run various experiments and show where problems can occur (sometimes the cases are a bit pathological, but still interesting), and there are lots of bits of information to mull over. Long and short, recommended if you want to know about this subject.

To learn more: first, look inside the book on Amazon. We mentioned here before Eric Preisz’s worthwhile article on videogame optimization on Gamasutra. A very early outline of the book appears on vertexbuffer.com. For me, it’s great to see that this is a passion for the first author – that comes through loud and clear in this book. I’ve added it to our recommended books section.

One little update: Carmack’s inverse sqrt trick, mentioned in the book on page 155, is dated for the PC. According to Ian Ameline, “It has been obsolete since the Pentium 3 came out with SSE. The rsqrtss/rsqrtps instructions are faster still and have better and more predictable accuracy. Rsqrtss + one iteration of Newton/Raphson gives 22 (of 23) bits of accuracy, guaranteed.”