Upcoming Optimization Book

Eric Preisz has a book coming out in time for GDC, “Video Game Optimization.” I haven’t seen it yet, but judging by his article on optimization on Gamasutra, it should be pretty good—he knows what he’s talking about.

By the way, assuming you’re using Google Chrome for browsing (it’s what the cool kids use), I found AutoPager Chrome to be a nice little extension. Instead of needing to click at the end of every page of an article, it glues page after page into one long scroll.

SBIM-NPAR CFP

SBIM = Sketch-Based Interfaces and Modeling workshop
NPAR = Symposium on Non-Photorealistic Animation and Rendering
CFP = Call for Participation

SBIM-NPAR 2010 will be held June 7-10 in Annecy, France. The NPAR call for participation is up; due date is March 15th, but April 2nd for any SIGGRAPH rejections to be considered. In addition to research, they’re specifically looking to the games community for production papers on how game developers create their GUIs, editing tools, and NPR effects.

Every other year NPAR is held in Annecy, and it sounds lovely. In the evenings the Annecy International Animated Film Festival takes place—how perfect! Someday I’ll figure out a way to attend; until then, I can but dream.

Efficient Sparse Voxel Octrees

I mentioned this I3D 2010 paper in a blog post a while ago, but there was no preprint for it at the time.  Now the floodgates of information have been opened with the preprint, a video, and an extended paper all available on the first author’s website.  The source code has also been open-sourced with the Apache 2.0 license and posted on Google Code.

I’m not that familiar with previous work in the area, so I don’t know how it stacks up against e.g. Gigavoxels; if anyone has any insight please let me know.  One interesting detail from the paper was the way they enhance each cubical voxel with a pair of bounding planes, which they call contours.

They show that the data structure enables casting rays significantly faster than against a triangle model of equivalent complexity.  Unfortunately, it appears to still be slower than rendering the triangles the “old-fashioned way”.  The technique also requires post-filtering since it does not allow for filtering of color and normal information (which is effectively point-sampled).  Finally, building the data structure takes a fair bit of time, making this not particularly well-suited for dynamic scenes.

Made me laugh

I noticed Kirk & Hwu’s “Programming Massively Parallel Processors” book is back in stock at Amazon (and now with 2 mixed reviews), after being unavailable for a number of days. The part that made me laugh is Amazon’s ranking listing:

#1 in  BooksComputers & InternetHardwareMainframes & Minicomputers


If GPU computing isn’t the antithesis of mainframes and minicomputers, I’m not sure what is…

Visual Treats

I usually end each “7 Things” post with a lighter item. Having beaten through my backlog of resources, there are a bunch of visual links left over. So, here’s a post of pure fluffy desserts. All images are clickable for more information.

First, camels:

and zebras:

These are now a part of the “Too True to be Good” gallery.

3D fractals:

More information about these on Geeks3D.

Crayola’s Law is that the number of crayon colors doubles every 28 years:

I just plain liked this animated Sierpinski triangle someone used as a profile image (thanks, Evan):

Nice concept, the equations of art:

Here’s an art something (not embedded here, you actually have to click), but I don’t have the OCD needed to see the image hidden.

Perhaps not massively visual, but amazing nonetheless, various prime number calculators run using the Game of Life. Here’s the Mersenne prime generator:

I’m starting to believe everything can make a pixel. Here’s coffee:

And rice plants (thanks, Doug):

For a finish, here’s a history of 100 years of film VFX in five minutes:

Well, wait, there’s one more thing… Naty and I love the realistic CG in this piece, The Third & The Seventh. I’m not going to embed it here; follow the link and definitely watch it fullscreen. More amazing still, it’s the work of one guy, Alex Roman. The only elements that are not CG are the photographer, the pigeons, the time-lapsed sky and growing flowers, and the jet. There’s a compositing breakdown video of various scenes, showing the techniques used. That said, Naty likes it but for my tastes it’s pretty boring to watch for more than half a minute, as most CG demos are (jaded? Maybe; mostly, I just like plot).

If your interest wanes, skip to 8 minutes in (well, you can’t skip ahead with Vimeo; just let it load and come back later). Perhaps that’s the best way to appreciate the clip: play it as a loop and look at it now and then, in small doses. There’s a heavy hand with the focus/depth-of-field effect at times, but in one sense I do like seeing this effect overused: it’s like watching CPU cycles burn before my very eyes, knowing how much the algorithm costs. Last niggle (and I should probably be soundly thrashed with a riding crop for noting these things, but it stuck out for me): the wind turbines turn backwards. Quibbles aside, the images here are so much better than any I will ever make that I’m a total admirer of it on the “technical chops” and “incredible dedication” levels.

7 Things for February 10

  • The first three are from Geeks3D, which is a worthwhile site I frequently reference. First: some noise textures, in case you don’t feel like making some yourself.
  • Next, a night-vision filter in GLSL, developed with their GeeXLab tool for prototyping shaders.
  • Finally, PyOpenGL_Lab, which calls OpenGL from Python. Interpreted languages like Python are lovely in that there’s no compilation step, making experimentation much more rapid. If you’re a Perl person, there’s this module.
  • Daniel Rákos has an article about how to perform instance culling using the GPU, using OpenGL 3.2. The basic idea is to run the bounding volumes through the geometry shader for frustum culling and pipe out results as transform feedback, which is then used in a second pass for which instances to actually render. This type of technique has been done using DirectX (e.g., Froblins), Daniel shows how to do it in OpenGL and provides source.
  • Aras Pranckevičius has a worthwhile post on deferred rendering and mipmap bugs, along with some good follow-up comments.
  • John Ratcliff’s Code Suppository has lots of little handy graphics code tidbits and chunks. It’s moving here and here on Google Code, but the original page is much easier to skim.
  • Wolfgang Engel provides a nice little page of books and resources he recommends for upcoming graphics programmers, with some good follow-up comments. I hadn’t heard of the 3D Math Primer before. It gets high ratings on Amazon, and you can use Look Inside. Skimming it over, it does look like a good book, covering many topics with the space they deserve (vs. our sometimes quick zoom through them in our own book). Code snippets are also given throughout. The book mentions “The First Law of Computer Graphics,” but unfortunately the pages explaining it are blocked. Happily, I found it on Google Books: “If it looks right, it is right”. Whew, good, I honestly was concerned there was some law I had been breaking all these years.

… and I’m all caught up, my queue is empty! Well, there will be a special post tomorrow.

7 Things for February 9

Some news, and some olds.

  • HPG has a CFP. In slow motion,  this means the High Performance Graphics conference, June 25-27 in Saarbrucken, Germany, has a call for participation. Naty talked about this conference in his post two months ago; now the HPG website and CFP are up. In case you don’t recognize the conference’s name, this is the combination of the Graphics Hardware and Interactive Ray Tracing symposia. HPG was fantastic last year, with more useful (to me) papers than SIGGRAPH (where it was co-located). Potential submitters please note: because HPG 2010 is co-located with EGSR this year, the deadlines are very tight after SIGGRAPH notification and quite rigid. In other words, if your SIGGRAPH submission is rejected, you will have a very short time to revise and submit to HPG (i.e., by April 2nd).
  • NVIDIA has put up a list of talks at GDC in which it is participating, which will undoubtedly appear soon after on the web. In other NVIDIA news, there’s an interesting press release about NVIDIA and Avatar and how GPUs were used in precomputation of occlusion using ray tracing, for scenes with billions of polygons.
  • A handy tool for showing frame rate and capturing screenshots and video that is worth a mention again (it’s buried on the Resources page): FRAPS. It’s been around forever, continues to improve, and the basic version is free.
  • Crytek made an updated version of the famous Sponza model (used in many global illumination papers) available in OBJ and 3DS Max formats, along with textures. If you have the time, in theory 99 lines of code will make a picture for you.
  • Stefan Gustavson has a nice little demo of using distance fields for “perfect” text rendering. This type of technique has been used for a number of years in various games, such as Valve’s Team Fortress 2. The demo unfortunately falls apart when you rotate the scene off-axis, but otherwise is lovely.
  • SUBSTANCE is an application for making 3D evolutionary art. I really need more time on my hands to check this sort of tool out…
  • Theory for the day: we don’t have fur because our skin can show our emotions, which we pick up with our improved color perception.

New Books and Reworked Books Pages

We’ve been reworking our books page to take longer to download, I mean, to be more visually interesting and readable. Honestly, the old one was a dense, hard to view pile of book titles. Just adding whitespace between titles is a plus. We’ve also added one book to the recommended list, Eric Lengyel’s math book. Anyway, go check it out. On our main resources page we’ve put all the free books online into one section.

There are some new books coming out that look interesting. For those of you going to GDC, there should be some worthwhile offerings to check out on the floor.

The Programming Massively Parallel Processors book by Kirk (Chief Scientist at NVIDIA) and Hwu (professor at U. of Illinois) is out by now, as of 3 days ago, and is currently sold out on Amazon. It’s undoubtedly derived from the course they co-taught at Illinois. CUDA and Tesla are the keywords here. Hwu’s current course lectures are here and here; I don’t know how they compare to the book, but these newer (non-Kirk) lectures seem more general. I look forward to learning more about this volume—if you have it, please do leave a comment (or better yet, a review on Amazon).

Wolfgang Engel and all have a new book out, GPU Pro. He’s using a new publisher, so it does not have the ShaderX name, but effectively is ShaderX 8. Finally, the book is color throughout vs. previous ShaderX’s. I’ve skimmed some of the articles, and it’s in the same vein as others in the series: a range from practical advice to wild ideas. I can just about guarantee that professional interactive graphics programmers will find something of interest—I found about 5 articles off the bat I want to read through, and plenty of others I should at least skim. More info at the blog for this book.

Game Programming Gems 8 adds to this long-lived series. I haven’t seen it yet, so no comments; Adam Lake’s blog may give updates on status, contents, etc. This series has slowly drifted to including much more non-graphical material over the years. Understandable, but Adam’s someone I think as a graphics guy, so I’m selfishly hoping for more graphics and less the other stuff. My view on collection books like ShaderX and this is simple: an hour of a programmer’s time is about the same as the cost of a book, so if the book saves an hour, it’s paid for itself. Of course, there’s the time cost of reading the articles of interest, but still…

Second editions have been announced for Physically Based Rendering Techniques and High Dynamic Range Imaging. PBRT is more offline rendering oriented, but is a great book because it takes a stand; the authors say what they do for a real system and why they made that choice, vs. listing all possible techniques. It also presents about the longest literate programming presentation published. I have a short review of the first edition. The HDRI book is nice in that it pulls together the various research articles out there into one place, with a coherent thread to it all. The second edition’s new material is described on its Amazon page.

7 Things for February 8

I use a LIFO stack for these link collections, so we’re starting to get into older news. Olds? Still good stuff, though.

  • I hadn’t noticed this set of notes before from Valve, “Post Processing in the Orange Box.” It’s about sRGB (think, gamma correction), tone mapping (think, rescaling using the histogram), and motion blur (think, types of blur). Interesting that a variable frame rate combined with blur made people sick. They’d also turn blur off if a single frame was taking too long. (from Morgan)
  • Wolfgang Engel has posted DirectX 11 and DirectX 10 pipeline overview charts. In a similar vein, Mark Kilgard has a talk about the changes from OpenGL 1.0 to 3.2 with some worthwhile data flow diagrams and other material.
  • openSourceVFX.org is a catalog of open source projects that are particularly suited for film visual effects and animation work. It is maintained by professionals in the field, so the resources listed are those known to actually be used and production-worthy. (thanks, Larry)
  • Here’s another PhysX demo, of water—a little jelly-like (good spray is hard, since it’s so fine-grained), but pretty amazing to see happen at interactive rates.
  • One resource I didn’t recall for my blog entry about tools for teaching about graphics and game creation: Kodu, from Microsoft. For grade schoolers, it uses a visual language. Surprisingly, it’s in 3D, with a funky chiclet terrain system. For still more tools, check the comments on the original blog entry—some great additions there. (pointed out by Mark DeLoura)
  • Another interesting graphics programming tool is NodeBox 2, now in beta. It uses a node graph-based approached, see some examples here.
  • The story of Duke Nukem in Wired is just fascinating. We all like to tell and listen to stories, so it’s hard to know how true any narrative is, but this one seems reasonably on the mark. A little balance is provided by Raphael van Lierop.