3rd Edition now on Google Books

Naty just noticed that our latest edition is up on Google Books. It’s the usual deal, about 20% of the book is excerpted. Between this and Amazon’s Look Inside, a fair bit of the book is at your fingertips.

By the way, if you are the author of an out-of-print book, please do get it 100% up on Google Books, if you can. Even if it’s dated, it captures where the field was at a particular time – at the least you’re helping future archaeologists. First step is to get the rights back. Contact your publisher and ask. It’s not a high priority for any of them, but they usually have no reason to hold onto the rights and will freely return these, or so I’m told. After that, well, I’ve personally never done step two, but I’d hope it’s not an arduous process to get Google Books to list it. If anyone has experience in this area, please do speak up.

In other news, the Amazon Stock Market for our book had a sudden uptick. Interestingly, Barnes and Noble kicked its price up the same week. Just a coincidence, I’m sure. The May 10th uptick was no doubt due to Mother’s Day and the busy summer reading season; our book is a chick magnet when casually left out on your beach blanket.

SIGGRAPH 2010 Course Scheduling

One of the challenges of SIGGRAPH is doing it all. My own method is to take a sheet of lined paper (remember that stuff?) and make columns for the days, each line being a half hour. One whole sheet holds it all, vs. me dorking around with my Palm/phone/Touch/whatever, scrolling around to see what’s what. Old school, but it works great.

Anyway, Naty’s recent summary of courses didn’t have course times. Here goes, mostly for my own benefit, in time order. Bolded are the ones I personally plan to attend and why, FWIW:

Perceptually Motivated Graphics, Visualization, and 3D Displays – Sunday afternoon

Physically Based Shading Models in Film and Game Production – Sunday afternoon. Toss up for me between this and the previous course. Naty’s the only speaker for this one, so it’s tempting to go, just to see his head explode after lecturing for 3+ hours.

Stylized Rendering in Games – Monday morning. I’m particularly pumped for this one, having done NPR work this last year.

Recent Advances in Real-Time Collision and Proximity Computations for Games and Simulations – Monday afternoon

Color Enhancement and Rendering in Film and Game Production – Tuesday morning. Naty’s a speaker.

Filtered Importance Sampling for Production Rendering – Tuesday morning

An Introduction to 3D Spatial Interaction With Videogame Motion Controllers – Tuesday afternoon

Advances in Real-Time Rendering in 3D Graphics and Games – all Wednesday. Traditional course, usually quite good.

Volumetric Methods in Visual Effects – Wednesday morning

Gazing at Games: Using Eye Tracking to Control Virtual Characters – Wednesday afternoon

Beyond Programmable Shading – all Thursday. The DICE talk last year was amazing, the others were also worthwhile.

Advanced Techniques in Real-Time Hair Rendering and Simulation – Thursday morning

Global Illumination Across Industries – Thursday afternoon

The “Advances” course used to always be Monday. Which was terrible last year, as it was scheduled against the last day of the colocated HPG conference (not a problem this year, since HPG is in Europe alternate years). I suspect someone realized that putting Advances and Beyond next to each other, and alongside the exhibition floor days, was good for pulling in game devs. Anyway, looks to be a great set of courses, other than the risk of head explosion.

If you want something lighter to start with on Sunday, try Glassner’s “Processing for Visual Artists and Designers” course. The Processing language is easy to learn and fun for quick bit-twiddling or other 2D effects, with all the usual 2D primitives and mouse support (and much else) built in.

Voting Time!

If you’re an ACM member, this is a reminder that the ACM 2010 Council Election voting deadline is noon (EDT) on May 24th. So vote now. You’ll need the piece of paper mailed to you, along with your ACM membership number (find that here or look at the label of a CACM sent to you, if you don’t recall it). Voting itself takes a minute, tops. While you’re at it, vote in the ACM SIGGRAPH elections – deadline is June 4th. Who to vote for? Here’s Naty’s take. Disappointingly, very few candidates have responded so far to his questionnaire (a few candidates’ email addresses could not even be found, which is pretty sad).

I find voting theory fascinating, since there’s no perfect way to set up voting when there are more than two candidates, to name just one dilemma. I just noticed this book on Amazon, which I’ve put on reserve at the library – Poundstone’s books are usually entertaining.

ACM and SIGGRAPH Members – Vote for Open Access!

Long-time readers of this blog will be well aware of my position on ACM and Open Access. Although ACM is a non-profit organization which ostensibly has as its only mandate “the advancement of computing as a science and a profession”, the ACM Publications Board has been behaving like a rent-seeking publisher; bullying students working to provide valuable resources to the community, and lobbying the US Government against Open Access initiatives, all in the name of protecting their revenue streams.

I have witnessed an outpouring of anger from the computing community at these events, convincing me that I am not alone in believing that the ACM Publications Board (and by extension the ACM itself) has tragically lost its way, prioritizing its income over the good of computing as a science and a profession. In fighting Open Access they are on the wrong side of history; witness all the leading academic institutions who have come out in favor of the very government Open Access initiative which the ACM has opposed.

If you believe as I do, then now is the chance to make a difference! SIGGRAPH is holding elections now for three Director-at-Large positions, to be selected from five candidates; the deadline for the elections is June 4th. If you are an active SIGGRAPH member, you should have received instructions for voting by now; you can vote at this link. ACM is also holding general elections for various Council positions, including the President of the ACM; you can vote at this link. The deadline for the ACM General Council elections is May 24th.

For me, Open Access is the most important issue in these elections. But which candidates will fight for Open Access, and which for the status quo? Of all the SIGGRAPH candidates, only one has explicitly mentioned Open Access in their position statement (James O’Brien, as Eric pointed out in a recent post), and so far one of the ACM Council candidates have: Salil Vadhan’s statment is here: http://www.acm.org/acmelections/candidate10.

To arm voting ACM and SIGGRAPH members with information on the candidates positions, I have composed some questions regarding ACM’s copyright policy and Open Access, and put them up on a web page. I have sent these questions to all the candidates for these elections (except for the few which I have so far been unable to contact), and am posting the answers on the web page as they come in.

So far only two candidates for the SIGGRAPH election have answered; Mashhuda Glencross and James O’Brien. Both answers are Open-Access friendly. No candidates for the ACM Council have come forward yet. Keep following the questions web page, and make sure to use the information there to select candidates, and vote in both elections. Nothing will ever change unless we make our voices heard!

Questionable Answers

So how did you answer the quiz yesterday? To all that commented, thanks, I enjoyed reading your replies. I see these questions as possible differentiators; you might be able to tell something about someone depending on their answers. Just a theory, though, and I’m sure there will be any number of people who will disagree – I’d love to hear other ideas. Anyway, these questions I find fun to test out on people, and I hope more of you will post your or others’ answers. If someone does a serious test for correlations, awesome!

RGB or RYB? Well, of course it’s RGB if you’re in computer graphics at all. I find this an interesting question to ask anyone. I think this question used to be a differentiator for computer graphics person vs. everyone else. RYB is what we learnt in school, the subtractive primaries used for paints, while RGB are the additive primaries used for lights. But with general computer and screen knowledge increasing, and a growing number of artists using computer programs, maybe this one is more technophile vs. technophobe?

+Y or +Z? For me, this used to be computer artist vs. CAD user, and maybe still is. SGI and Wavefront were definitely +Y, using the same model and world space up as view space up. For architects the plan view is an X/Y 2D sort of thing, so +Z is then extruding the plan view into 3D. This is certainly how AutoCAD’s file format evolved, starting out in 2D. Update: more about this topic here.

Green-yellowish or red-orangish? Chartreuse is green-yellow. I think this one can differentiate men from women, excluding liqueur-drinkers and people from France. All women I asked have chosen the right answer, as it’s a fabric color; a majority of men have not (including me). Interestingly enough, Crayola got this one wrong originally, in 1972, later renaming their color atomic tangerine. For more pretty entertaining color/sex correlations, see this xkcd blog post. His post inspired me to write down these four differentiator questions I’ve tried over the years. True confession: I spelled “fuchsia” wrong, too. Fuch-sia? Really? Let’s make a t-shirt, now on sale, though I can’t imagine anyone buying one. Update: more on this critical question here.

Bottom row or right column? This used to be a differentiator for computer graphics vs. mathematically trained, though there are some subtleties there (not all fields of math use right column). Nowadays it might be more DirectX vs. OpenGL. A key thing to realize is that, in the memory itself, both DirectX and OpenGL store the translation vector in the 13th, 14th, and 15th spots in the list of 16 memory locations – after that, it’s just notation. My theory is that you imprint on whichever one you first used, sort of like vi vs. emacs back in the day. Here are responses from 1993 on Usenet to this religious question, archived at Steve Hollasch’s wonderful collection of ancient but still-valid knowledge. There are posts there from one of the authors of OpenGL and many other graphics people. My favorite passage, from Robin Forrest, “Steve Coons used row vectors for his influential early papers on transformations (University of Michigan Summer Courses in the mid 60’s). I asked him why in 1967 and he said it was because it was easier for the stenographer to type row vectors!” The oddest thing I’ve seen in this area was a book on ray tracing where the first row contained the translation vector. Self-taught is not always a plus.

Thanks to all that commented; I’m glad to know I’m not the last person on earth putting my translations in the bottom row, where the gods intended them to be (that said, we use column major in our book, following most fields of math). If you have alternate theories as to What It All Means, post them. There are other questions out there with no correct answers, like left-handed vs. right-handed, but that particular one is somewhat ill-defined to ask. My own answer is right-handed for world space, left-handed for view matrices, usually, but I really don’t care, and then there’s upper left vs. lower left for the screen’s origin. Any other good questions out there?

Questionable Content

Here are a few questions, there are no right answers (except for the one with a right answer), and please choose the first answer that comes to you:

What are the primary colors?

A. Red, yellow, blue

B. Red, green, blue

You’re making a 3D model of some object. Which way is up in your world?

A. +Y

B. +Z

What color is chartreuse?

A. Green-yellowish

B. Red-orangish

You write out a 4×4 transform matrix to translate an object. You put the translation values:

A. in the bottom row

B. in the right column

All for now, my opinions and theories tomorrow (though feel free to comment before then).

Update: “answers” here.

SIGGRAPH 2010 Courses

This year, SIGGRAPH is making a very strong push to include more game and real-time content.  A lot of the programs are yet to be published, but the full list of courses is now up on the conference website, and many of them are of interest. The courses have always been the SIGGRAPH program with the most relevant material for film and game production; this year the game side is particularly strong. If you are doing game graphics, the courses by themselves are reason enough to attend the conference.

Full disclosure – I am organizing two of these courses, so my description of them may not be fully objective 🙂

The courses which are most directly relevant to game developers:

  1. Advances in Real-Time Rendering in 3D Graphics and Games – this full-day course, organized by Natasha Tatarchuk, has been a highlight of SIGGRAPH since it was first presented in 2006 (the name’s a bit clunky, though). Each year Natasha solicits top-notch game and real-time rendering content for her course. SSAO was first presented at this course, as were cascaded light volumes and many other important techniques. This year includes presentations from game powerhouses Bungie, Naughty Dog, Crytek, DICE, and Rockstar, among others.
  2. Beyond Programmable Shading – another very strong full-day course, now in its third year. Like Natasha’s course, this course includes brand-new material every year. Focusing on GPU compute APIs such as CUDA, DirectCompute and OpenCL, the presentations tend to skew towards GPU vendors but have also included some groundbreaking game developer talks on topics like sparse voxel octrees (by id software) and parallelism in graphics engines (DICE) . This year, besides the usual suspects (NVIDIA, AMD, Intel, Microsoft),  there will be a talk by Johan Andersson from DICE (he gave the parallelism talk last year and I can’t wait to hear what he’s been up to since), one from Kayvon Fatahalian from Stanford (who has been doing some fascinating research on GPU-accelerated micropolygon rendering), and finally one from Luca Fascione of Weta. Hopefully Luca will be talking about the GPU-accelerated PantaRay system he helped design to render the jungles in Avatar. PantaRay is used to precompute occlusion; a very game-like thing to do.
  3. Stylized Rendering in Games – in recent years, games have started to explore the universe of possible styles beyond photorealism. The course is organized by Morgan McGuire, who is also chairing this year’s NPAR conference, and includes presentations by the developers of some of the most prominent stylized games.
  4. Physically Based Shading Models in Film and Game Production – this is one of two courses I am organizing. This topic has fascinated me for years and was a major focus of my work on RTR3. Physically based shading is currently a hot topic in film production, making this a natural film-games crossover topic (my primary focus on the conference committee). I’ve been able to get speakers with really strong film production backgrounds, so I’m optimistic that this course will turn out well.
  5. Color Enhancement and Rendering in Film and Game Production – this is my other course. Most of my work in this area is more recent than the physical shader stuff so RTR3 doesn’t have as much material on it; perhaps I can remedy this in RTR4. Although this topic is well-established in film production (a field from which I’ve been able to get good speakers for this course as well), it is still an area of active development in games, as attested by the excellent GDC 2010 talk by John Hable.
  6. Global Illumination Across Industries – this is another film-games crossover course, with presentations by top people working on global illumination in both industries (the games side is represented by Illuminate Labs for precomputed GI and Crytek for dynamic GI).
  7. An Introduction to 3D Spatial Interaction With Videogame Motion Controllers – between Microsoft’s Project Natal, Sony’s Playstation Move, and the Wii MotionPlus, motion controllers are an extremely timely topic. The speakers include Richard Marks, the brains behind the Eyetoy, Playstation Eye and Playstation Move.
  8. Recent Advances in Real-Time Collision and Proximity Computations for Games and Simulations – this is an important area, and the speakers are leading researchers in the field. Among other topics, the course will cover the the collision detection systems in the PhysX and Bullet libraries.
  9. Advanced Techniques in Real-Time Hair Rendering and Simulation – while this topic is a bit more of a niche, it is of interest for many games and the speakers have done some of the leading work in this area.
  10. Volumetric Methods in Visual Effects – one of the main differences between game and film graphics is the amount and quality of atmospheric effects. Film VFX houses have been actively developing their own systems for modeling and rendering clouds, fog, fire, ocean spray, etc. This course includes a stellar cast of speakers from Digital Domain, Sony Pictures Imageworks, Rhythm & Hues, Side Effects (developers of Houdini), PDI/DreamWorks and Double Negative; anything these people don’t know about volumetric effects isn’t worth knowing. This course is likely to have lots of good ideas for stuff that isn’t possible in real-time yet, but will be in the near future.
  11. Filtered Importance Sampling for Production Rendering – another film rendering course which is likely to yield good medium- and long-term real-time ideas. Importance sampling is crucial for efficient, high-quality reflections from arbitrary BRDFs and lighting; it can be used with environment maps as well as ray tracing. Filtered importance sampling is a more general, correct, and expensive version of the common game trick of prefiltering cubemaps for glossy reflections. It has recently found wide use in film production, a topic about which the speakers (from major visual effects houses such as ILM, Image Movers Digital and MPC) are well-qualified to speak.
  12. Perceptually Motivated Graphics, Visualization, and 3D Displays – Understanding human visual perception and how it relates to graphics is important for knowing which corners can be safely cut and which ones will yield distracting artifacts; 3D displays are a timely topic for game developers as well, now that TV and console manufacturers are getting into the act.
  13. Gazing at Games: Using Eye Tracking to Control Virtual Characters – I’m not aware of any commercial games that use gaze tracking as an input method (the course is presented by academic researchers). If existing cameras such as Playstation Eye and Project Natal can track eyes with sufficient precision, this may be an important trend going forward, but if new equipment is needed this might not be relevant for a long time (if ever).

Although not as directly relevant, some of the other courses appear to be informative and fun, such as Andrew Glassner’s course about the Processing graphics programming language, and the course on how to Build Your Own 3D Display.

7 Things for May 2

7 things, with images for each as some quick eye candy – is it worth my adding these images?

  • Here’s a nice rundown of much of the graphical goodness (and badness, e.g. temporal antialiasing) of the Halo: Reach beta. It’s worth a skim just to get a sense of the state of the art in a wide range of areas. The motion blur video appears to not be available currently. (thanks, Mauricio)
  • Unlimited Detail Technology is a voxel-based renderer with an interesting history: it was developed by a self-taught hobbyist who once ran a supermarket chain. There’s been interest in voxels for awhile, e.g. Jon Olick’s SIGGRAPH presentation in 2008 (slides here). Voxel rendering reminds me of the CPU-side heightfield renderer used in Novalogic’s Comanche and Delta Force game series from 1992 on. Novalogic’s was a 2.5 D system using contour following, while the Unlimited Detail system is full 3D voxels. Looking at UD’s presentations, it seems like a form of 3D clipmapping, where the level of detail of the voxels needed are determined by distance. The look reminds me of dribble sand castles. The coolest part: no GPU needed, it’s all CPU. I can imagine 18 limitations to this system: animation/deformation, sharp-edges not possible, shading models have limitations, transparency doesn’t work, textures are difficult to apply, fuzzy objects can’t be rendered, etc. Still, fun to see and a fascinating option. (another thanks, Mauricio)
  • The Ruin Island demo was created by some students in France. Parallax occlusion mapping, depth of field, NPR toon rendering, motion blur, glow and bloom, and more – it’s a grab-bag of effects in OpenGL. What’s nice is that the source code is provided. (Geeks3D)
  • Norbert Nopper has a small set of standalone OpenGL 3.2 and GLSL 1.5 tutorial programs with code for various effects. (Morgan McGuire)
  • The demoscene demo agenda circling forth uses particle clouds for a beautiful look. Note that the links for the video and demo are just under the image at the top of the page.
  • The photorealistic Octane Renderer uses CUDA for acceleration. To try it out you’ll need a fairly up-to-date NVIDIA driver, the demosuite, and the executable. It’s actually pretty cool to see the frameless rendering in action, it’s quite interactive for their simple scenes. There’s golden thread rendering: the longer you sit, the better the image gets. (Geeks3D)
  • 3D printing with ice. (BoingBoing)

Halo: Reach motion blur:

Unlimited Detail voxel image:

Ruin Island demo:

OpenGL 3.2 Nopper demo image:

agenda circling forth:

Octane Rendering, after 2 merged frames (interactive update) and after 5685 frames (a few minutes):

3D ice printing:

Another Introduction to Ray Tracing

I was waiting around a bit for my younger son’s doctor’s appointment this morning, so I decided to edit a book. I finished it just now, it’s called Another Introduction to Ray Tracing. It’s 471 pages in book form. You can download it for free, or order a paperback copy from PediaPress for $22.84 plus shipping. I won’t earn a dime from it, but since it took me less than two hours to make, no problem.

So what’s happening here? Due to investigating Alphascript and Betascript publishing a month ago, reporting it on Slashdot, and following up on a lot of great comments, I learnt a number of interesting tidbits. Here’s a rundown.

First, VDM Publishing itself is sort of a vanity press, but with no cost to the author. It seeks out authors of PhD theses and similar, asking for permission to publish. This is not all that unreasonable: because the works are only published on demand, the authors do not have to pay anything, they even get a few hardcopies for free. Here’s an example from our field that I reported on in February. That said, it’s mostly a win for VDM Publishing, who charge steep prices for the resulting works. Such not-quite-books mix in with other books on Amazon. It takes a bit of searching to realize that the work is a thesis and likely could be downloaded for free. A bit misleading, perhaps, but not all that horrifying. Caveat Emptor.

VDM Publishing also has an imprint called LAP, Lambert Academic Press, which does the same thing, publishing theses such as this one by Nasim Sedaghat. With a little Googling you can find Nasim, and then find the related paper for free.

VDM’s imprints Alphascript and Betascript Publishing I’ve already described, they’re little more than random repackagers of Wikipedia articles. Here’s an example book. I posted one-star reviews for a few of these books on Amazon; what’s funny is that the owner of the firm actually responded to my criticism (with a one-size-fits-all response in slightly broken English).

Four weeks ago Alphascript had 38,909 and Betascript 18,289 books listed on Amazon. To my surprise they now have 39,817 and 18,295 books, a total increase of only (only!) 914 new books – looks like they’re slowing down. They’ll have to work hard to catch up with Philip M. Parker’s 107,182 books or his publishing firm ICON Group International, with 473,668 books. The New York Times has an interesting article about this guy.

Betascript Publishing has two books found on Amazon related to ray tracing: Ray Tracing (Graphics) and Rasterization (which includes a section on ray tracing). The ray tracing book is 88 pages long and $46, more than 50 cents a page. My book, at $22.84 for 471 pages, is less than a nickel a page. So my new book’s better per pound. I actually worked a little compiling my book, making logical groupings, picking relevant articles, creating chapter headings, the whole nine yards (never did figure out how to make a cover from an existing Wikipedia image, though). The exercise showed me the limits of Wikipedia as a book-making resource: the individual articles are fine for what they are, some are wonderful, and editing them in a somewhat logical flow has some merit. However, there’s no coherence to the final product and there are large gaps between one article and the next. How to generate rays for a given camera? Sorry, not in my book.

Still, it was great to learn of PediaPress and the ability to make my own Wikipedia book for free. Poking around their site, I even found a book on 3D computer graphics, called 3D Computer Graphics (catchy, neh?). Seeing others making books, I decided to share my own, so now it’s official. Mind you, I haven’t actually read through my book, nor even really checked the flow of articles – no time for that. I mostly grouped by subject and title after identifying likely pages. That said, I do like having a PDF file of all these articles that I can search through.

Obviously authors are not about to be replaced by Betascript books any time soon. If you want to read a real introduction to the topic, a book like Ray Tracing from the Ground Up might serve you better, even if it is a whole dime a page. This cost/benefit ratio for a good book is something I’ll never get over, that books are sold at prices that are equivalent to the cost for just an hour or two for a computer programmer’s time and yet yield so much in the right hands.