Category Archives: Resources

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.

Seven Things for May 4th, 2011

Seven things:

  • There’s a post on speculative contacts by Paul Firth, a way of simplifying and stabilizing collision detection that has been used in Little Big Planet. Particularly nice is that demos are built into the page, so you can try the various methods out and see the problems and performance for yourself. This author has followed up with “Collision Detection for Dummies“, a great overview, and “Physics Engines for Dummies“, again with interactive demos.
  • The Gamedev Coder Diary has a worthwhile summary of the current state of deferred shading vs. deferred lighting (aka “light pre-pass”) techniques, discussing problems and strengths of each.
  • The CODE517E blog has had a number of good posts lately, including an article on deferred rendering myths, another on stable cascaded shadow maps, an accumulation-buffer-like way of making super-high resolution images for printing (with some worthwhile analysis of problems it engenders with mipmap sampling and with view shifting – fun to think about), an extensive rundown of programming languages for videogames, and a summary of tools he uses (quite the long list – I’m still working through those I hadn’t seen before).
  • On the topic of languages, Havok put together a page collecting the Lua tutorial talks at GDC 2011.
  • The Boeing 777 model (almost 400 million polygons) ray traced at interactive rates on a consumer-level PC, using CUDA. CentiLeo is an out-of-core GPU ray tracer, see this page for some of the slides from the (rather long) video. That said, don’t be fooled by the start of the video: those sequences are generated at 15 seconds a frame and played back at 60 FPS (so 500-1000x from being real-time). Still, the preview mode is indeed interactive, and the Boeing is a huge model. On the other end of things, here’s a fun demoscene ray trace. By the way, Ray Tracey’s blog is good for keeping up on new ray tracing videos and demos and other related topics.
  • A poster accepted to SIGGRAPH 2011 by Ohlarik and Cozzi gives a clever little method of properly drawing lines on surfaces for GIS applications. It converts lines to “walls”, then marks those pixels where there is a visibility change of the wall (i.e., one pixel of the wall is visible, a neighboring pixel is not), with a correction for terrain silhouette edges. One more trick for the bag.
  • More about the look and feel of games than the technical nerdy stuff I cover here, Topi Kauppinen’s blog pointed me to Susy Oliveira’s sculptures, which are pretty amusing (finally, perfect models for 3D web browsers). There have been similar works by other artists (e.g. Eric Testroete’s head), but the more the merrier.

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.

Seven Things for March 10th, 2011

I’m back from a NYC trip (highlight: went to the taping of the Jimmy Fallon show and saw Snooki & Laurie Anderson – now there’s a combo; if only they had collaborated) and a San Francisco trip (highlights: the Autodesk Gallery – open to the public Wednesday afternoons – plus the amusingly-large and glowing heatsink on a motherboard at the NVIDIA GDC reception). So, it’s time to write down seven other cool things.

  • A convincing translucency effect was presented at GDC by the DICE guys (there’s precomputation involved, but it looks wonderful); Johan Andersson has a rundown of other DICE presentations. Other presentation lists include ones from NVIDIA and Intel, which I need to chew through sometime soon.
  • Vincent Scheib has a quick GDC report, and a presentation on HTML 5 and other browser technologies (e.g. WebGL), with a particular interest in the handheld market. Vincent mentions the Unreal GDC demo, which is pretty amazing.
  • Intel has a nice shadows demo, showing the various tradeoffs with cascaded and exponential variance shadow maps. It compiled out of the box for me, and there’s lots to try out. My only disappointment was that Lauritzen et al.’s clever shadow tricks are not demonstrated in it! Their basic ideas center around the idea of a prepass of the scene. They get tight bounds on the near and far view planes by finding the min and max depths, and tighten the shadow maps’ frustums around the visible points. Simple and clever, large improvements in shadow quality in real scenes, and relatively easy to implement or add to existing systems. (thanks to Mauricio Vives)
  • Feed43: This is a nice little idea. It tracks any web page you want, and you specify what is considered a change to the page. When a change is detected, you’re given an RSS ping. Best part is, you can share any RSS feed created with everyone. Examples: Ke-Sen Huang’s great conference paper list, and The Ray Tracing News. If you make a good feed, let me know and I’ll pass it on here. (thanks to Iliyan Georgiev)
  • This one’s old, but it’s a great page and I found it worthwhile, a discussion of gamma correction and text rendering. The surprising conclusion is that gamma alone doesn’t work nicely for text (it does wonders for line antialiasing, as I hope you know: compare uncorrected vs. corrected). It turns out that things like TrueType’s hinting has been tuned such that antialiasing and gamma correction can be detrimental.
  • An interesting tidbit from the government report “Designing a Digital Future“: on page 71 is an interesting section. A sample quote: “performance gains due to improvements in algorithms have vastly exceeded even the dramatic performance gains due to increased processor speed.” They give a numerical algorithms example where hardware gave a 1000x gain, algorithms gave a 43000x gain, 43 times as much. (thanks to Morgan McGuire)
  • My Minecraft addiction has died down a fair bit (“just one more project…”), but I was happy to see Notch make a blog post with some technical chew, with more posts to come. He talks about a problem many apps are starting to run into, how to deal with precision problems when the terrain space is large. His solution for now, “it’s a feature!”, which actually kinda makes sense for Minecraft. He also starts to describe his procedural terrain generation algorithm.

SIGGRAPH 2011 Housing Reservations Open

Go get your reservation. Even if you think you have a 10% chance of going to SIGGRAPH 2011 this year, I recommend holding a room now. You can cancel the reservation later at no cost until July 21.

Me, I went with the Empire Landmark Hotel, as it was a good balance between price and distance (location also sounded good). The YWCA was very tempting, though – really, if you’re traveling alone (I’m with 2 others), it’s an incredible bargain ($99 a night) for a single person and has a noticeably higher rating than the Empire Landmark on TripAdvisor.

Oh, also, if you’re an interactive rendering type of person, don’t forget that HPG 2011 is colocated with SIGGRAPH 2011 and starts on August 5 (a Friday), so you might want to book from August 4th on. You can always carve off days from your reservation later. That said, choosing August 4th does trim down the available hotels a bit. For me, HPG is a must-attend; when it was colocated with SIGGRAPH in 2009 (it alternates between SIGGRAPH in North America and EGSR in Europe) I found it offered more relevant papers than all of SIGGRAPH itself.

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!