- There’s a new introductory book out, Foundations of 3D Computer Graphics, by Steven Gortler. I should get my copy tomorrow. Skimming through the first few chapters (you can see these on Amazon), the focus is definitely on solid theory, which I appreciate. I look forward to spending some quality time with it. (thanks, Pete)
- The acronym for the day is MOOC, Massive Open Online Course, a free course for anyone with a reasonable computer. Everybody’s doing it: Ravi Ramamoorthi with Foundations of Computer Graphics, I’m working on the course Interactive Rendering, John Owens and Dave Luebke are doing Introduction to Parallel Programming, etc.
- Sean Lilley has a great slideset summarizing the history of shadow algorithms for GPUs, made for this University of Pennsylvania class. Sean and others are currently working on a GigaVoxel and Sparse Textures project, blogging as they go. (thanks, Patrick)
- You’ve probably heard of the Valve Employee Handbook. This video gives a nice summary in just two minutes. Fascinating company structure! Sounds lovely and inspiring. But, telecommuting is out. (thanks, Jason)
- NGUI’s history: more about UI that “true” 3D graphics, but it’s for Unity. A pretty interesting tale! Moral, maybe: make libraries, not games (thanks, Renaldas)
- A WebGL demo from another universe. Note the value set on line 10. (thanks, marpi)
- This mask creeps me out. Instructions how to build one are here. (thanks, BoingBoing)
Second JCGT Paper is up for download
The second paper published by the Journal of Computer Graphics Techniques is up for download here, “The Compact YCoCg Frame Buffer” by Pavlos Mavridis and Georgios Papaioannou. Don’t worry, I won’t announce every paper as it goes by; if you want to know when a new paper is up, follow JCGT on Twitter.
Books: The Good, The Bad, and Some Third Category
Due to a long plane flight, this week I started reading up on WebGL in earnest, going beyond the various tutorials on the web. The two books recommended to me that I’ve started on (and skimmed through in their entirety – I need to sit down with each in front of a computer):
WebGL: Up and Running, by Tony Parisi, O’Reilly Press, August 2012. More info about the book here, including a sample. I recall Tony from way back in the days of VRML, he had one of the first viewers for that file format, so he’s been working in this area of 3D graphics for the web for a long time. This looks to be a good book if your goal is indeed to get something on the screen fast. It’s readable, and I appreciate his use of URLs to WebGL demos and resources and (properly credited) Wikimedia images. The code samples for the book are here on github.
It uses the popular three.js library to insulate you from the OpenGL ES roots of WebGL and hide its raw API nature. The author of three.js, Mr.doob (I don’t make these names up), notes that his work is “a lightweight 3D library with a very low level of complexity — in other words, for dummies”. Which is a fine thing, and I think I’ll be using it myself to teach introductory computer graphics. However, if you want to gaze at the occult pulsing mutation spawned of JavaScript + OpenGL ES + DOM + JSON + HTML 5, I mean, unleash the full power of WebGL itself, you’ll want to read the next book instead.
WebGL Beginner’s Guide, by Diego Cantor and Brandon Jones, Packt Publishing, June 2012 (code here). This is a pretty impressive book overall. The authors deal with WebGL directly, adding only the glMatrix library on github to make matrix manipulation easier (this is about as minimal as you can get). This book walks through much of what WebGL does (essentially, the same as OpenGL, of course), giving lots of code examples and worthwhile illustrations. Some example programs are quite nice, with useful user interfaces allowing you to twiddle values and see the effect. The book deals with more advanced topics towards the end, such as how to render offscreen and sample the results (their example is for performing picking). There are a few minor problems with layout on my iPad (a few illustrations don’t fit and there’s an awkward scrolling interface that doesn’t quite work), and some occasional lapses in grammar, but overall the book is fine. Occasionally the authors will get distracted by side topics, like a full derivation of why you use the inverse transpose of the matrix for transforming normals, or explaining a shader that does simple ray tracing. In general, however, the book works through the key areas of the WebGL API and warns you of potential problems along the way. WebGL itself exposes you directly to vertex and fragment shaders, so if you are planning to do some serious work in this area, this book is perhaps a better choice that Parisi’s (that said, three.js itself gives you easy access to shaders).
Personally, these two WebGL books were cheap enough on Kindle that I bought them both. The Beginner’s Guide in particular is a much better deal on Kindle – a third the physical book’s price. They’re actually better on Kindle, in that they’re in color; the physical books are printed with grayscale images. There are other books on WebGL, but these were the two recommended to me and they are both reasonable choices, depending on your goals. I would not recommend either if your primary goal is learning the fundamentals of computer graphics (though there’s a bit of that type of material in each). For learning WebGL itself and the basics of what it offers, both books are fine, with the “WebGL Beginner’s Guide” being aimed at the more “to the metal” programmer.
JavaScript: The Good Parts, by Douglas Crockford, O’Reilly Press, May 2008. If you use WebGL, you’ll have to know at least a bit about JavaScript. Patrick Cozzi mentioned this as a reasonable guide, along with other writings by the author. I’ve only started it, but it’s pretty amusing. The book’s approach is to indeed teach only the good parts about the language and not let you know how to use the bad parts. The author recommends only one of the dozens of books on JavaScript, JavaScript: The Definitive Guide. He feels the rest are, to quote, “quite awful.”
Update: I finished this book and thought it got better as it went along. It starts out a bit language-wonkish, too much about grammar. Skip that chapter. The most useful parts were the appendices, where he explains the various parts of JavaScript clearly and succinctly, calls out the dangerous and evil parts of the language, and explains how to steer clear of them. The author came up with JSLint, which checks your code for badness, but to be honest it’s way too a strict schoolmarm for me, hitting me on the knuckles whenever I put a left brace “{” on the wrong line. I recommend JSHint instead.
Enough on WebGL and JavaScript, my current interests. I’ll mention just two more books that I’ve only just glanced at and so can jump to conclusions.
Real-Time Graphics Rendering Engine (Advanced Topics in Science and Technology in China), by Hujun Bao and Wei Hua, Springer Publishing. Shame on you, Springer, for shame. A 300 page book for $169 is bad enough, but this one has a slap-dash translation that could probably have been done better by Google Translate. I’m judging only from the “Look Inside” text I can access on the Amazon listing, but I see things like a section labelled “Rending Modle” on page 5. This might be a fine book in its native Chinese, the bits of material I tried to read seemed sound enough, but the translation is, well, judge for yourself. Here’s the end of chapter summary, a section I picked at random:
“Real-time rendering is always formed as a pipeline composed of consequential data processing and graphics calculations to generate final rasterized images. In order to achieve amazing rendering effects as well as real-time performance, GPU techniques, especially shader techniques, are introduced to utilize programmable pipelines and the parallel computing structure. Virtual geometric 3D models are transformed to be located in a virtual scene by geometrical transformation matrices. Material and/or other visual properties are then attached to those geometrical models to compute visually pleasant rendering results. As the performance of real-time rendering applications is highly emphasized, tailored shading techniques and BRDF models are employed to achieve real-time rendering results with balanced visual effects.”
I feel terrible for these authors whose work has been so shabbily thrown between two covers.
However, there is certainly a worse book out there, and I have to give the full-sized cover from its Amazon listing, since I expect it to disappear any day now and I want to keep it as a memento.
Suck it, bizzatches, I got me my own book on Amazon. Yes, the title is my name, it’s ostensibly a biography; I’m not the author. I ran across it yesterday morning, and it almost made me laugh. Almost, because I hate these “books”. It’s clearly by the same people who came up with all those other automated offerings, VDM Publishing.
I’ve posted about this so-called publisher before, here and here. VDM now has a new imprint, “Cel Publishing” (one of seventy-nine!), I expect because the Alphascript and Betascript Publisher books are fast disappearing from Amazon’s catalog as the complaints and returns roll in. The short version is that this firm has a program that grabs a random Wikipedia page and follow links from it. Once there’s enough material for a book-sized book, it spits out the contents. Some human – in this case allegedly one “Iustinus Tim Avery” (anagram server’s first hit is “Autism University”) – slaps a cover on it and it’s put in the catalog, to be published on demand.
The most creative part of the process used to be the cover choice. In the past they were sometimes pretty amusing, but it looks like Cel Publishing has removed that fun part of the job for the “editor” and instead just uses random abstract patterns. I personally think of myself as more of a splash of chartreuse paint, but so be it. Also, the book is clearly underpriced at $38 for 60 pages. What did make me laugh is that there’s now a review of the book (thanks, Matt!).
“Advances in Real-Time Rendering in Games” talk slidesets are available
Like the title says: find the SIGGRAPH 2012 course presentations here, past the syllabus. Previous years can be found here, as usual.
WebGL Browser Editors
I asked Patrick Cozzi if he knew of any WebGL editors working in the browser. There turn out to be quite a few, each with their own focus:
- http://webglplayground.net/ – on the left is the code, on the right is the result. See the gallery for more examples, which tend towards 2D and artistic examples.
- http://glsl.heroku.com/ – code actually overlays the display itself. Here is a more 3D example.
- http://spidergl.org/meshade/index.html – more elaborate, shows separate shaders, model loading, and JSON and HTML generated. To run, click “Load” to load the given model, which you can interact with.
- http://www.shadertoy.com – allows playing with the pixel shader, essentially. Mostly about image deformations, often encountered in old Demo Scene programs.
- http://www.kickjs.org/example/shader_editor/shader_editor.html – for playing with a 3D object and trying out experiments with the vertex and pixel shaders in the GPU.
- http://cesium.agi.com/Cesium/Apps/Sandcastle/index.html – give it time to load (hey, it’s loading the whole world). It shows a quite elaborate development environment. They are using CodeMirror to do the in-browser editor. See their other demos here.
- http://jsfiddle.net/ – a more general tool for trying out JavaScript programs, not WebGL per se.
Enjoy! And let us know of any others you find.
Note: we’ve added a resource page for WebGL-related information.
Slides & Notes for “Advanced Lighting for Mobile” Talk
The slideset and notes for the SIGGRAPH 2012 talk “Advanced Lighting for Mobile”, given by Sam Martin of Geomerics, are up for download. Lots of interesting tidbits, useful even if you’re not programming for mobile devices.
SIGGRAPH 2012 Course Notes, so far
Edit: wow, this page has almost everything from SIGGRAPH 2012 (thanks, Sebastian, and especially Stephen Hill!).
Just two course notes links I happen to have, though I’m sure Naty has considerably more:
Beyond Programmable Shading – an interesting course as usual. The introductory talk by Aaron Lefohn points to the rise of the ComputeShader, and Johan Andersson’s “5 Major Challenges” talk gives a thorough overview of the graphics problems currently facing cutting-edge game developers such as DICE.
Unity: iOS and Android – Cross-Platform Challenges and Solutions – from the Mobile session, these are the slides from Renaldas Zioma’s presentation about what they found while moving Unity 3D to mobile devices. I liked this talk so much I asked to host it at our site. Here’s an introduction by Renaldas to the talk itself, with some surprising audience stats.
Eventually the course notes for Advances in Real-Time Rendering in 3D Graphics and Games should also be available.
“Shadows” book signing 3-4 pm on Wednesday
Andrew Woo and Pierre Poulin will be signing their new book “Shadow Algorithms Data Miner” at the CRC Press/AK Peters booth, #929, at SIGGRAPH, Wednesday, 3-4 pm.
SIGGRAPH schedule for your device
Dan Wexler pointed out this great page by skitten, which lets you quickly load up your Google Calendar with all SIGGRAPH events. Dan notes, “I’ve used these the past three years and they are fantastic”. Non-West-Coasters: don’t try to use these events for planning before SIGGRAPH, unless you go lock the time zone to West Coast times (or if you like to be three hours late for everything).
So if you want to thank Dan in person, see their talk, Intelligent Brush Strokes, around 4:20 pm Thursday, room 408A. Or virtually thank him by checking out the one-page abstract or the related, and brand-new, Glaze iPhad/iPone app.
JCGT Gathering at SIGGRAPH 2012
If you’re interested in the new open-access “Journal of Computer Graphics Techniques“, some of us editors, contributors, and other birds of a feather are informally meeting up at SIGGRAPH 2012. You’re welcome to come and chat (half the point of SIGGRAPH, amirite?):
Time: 5:30-6:30 pm Monday (just before this party in the same hotel)
Place: Marriott HQ hotel lobby, behind registration. This area:
Yes, this time conflicts with the Electronic Theater on Monday, etc., etc. – every time almost every day from 9 am to 8 pm on conflicts with something, and oddly no one wanted a 7 am meeting.
Morgan McGuire, the Editor-in-Chief of JCGT, won’t be attending SIGGRAPH, but has a great blog entry about JCGT’s progress and status. The whole post is worth reading, and I’ll repeat the last part here:
The answer comes in three parts. First, it isn’t that expensive to publish a graphics journal electronically. All of the writing, editing, and reviewing is done by volunteers and most of the software is free open source (LaTeX, BibTeX, Apache, MySQL, mod_xslt2, Emacs, Ubuntu, etc.). The board is unpaid, as is the case for most academic editorial positions. Graphics authors and editors are capable of producing professional-quality typesetting, layout, and diagrams on their own.
Second, Williams College has a grant from the Mellon Foundation to create digital archives to match the quality and reliability of the college’s substantial physical scholarly archives. Those physical archives are in rare books, visual art, scholarly journals, and congressional papers. I find the breadth and depth of those fascinating: the college’s holdings include original drafts of the US Declaration of Independence and Constitution, first editions of major scientific works such as Principia Mathematica, and paintings by major artists such as Picasso. The college is well-positioned to archive and conserve digital computer graphics papers and unlike a commercial publisher, an academic library has no agenda for those materials beyond preserving knowledge for all.
Third, the minor incidental costs of advertising, hosting, and legal are being picked up out of pocket by a few of us. Of of the financial contributions and dues I’ve given to graphics organizations, this was the one I was most pleased to make. We’re not accepting donations or seeking outside funding–that would subject us to bookkeeping overhead and legal requirements. If you want to support the journal, the best way to do so is to read it, write for it, and offer your services as a reviewer.
One other tidbit: the first paper accepted by JCGT has been downloaded over 10,000 times in four weeks. Clearly there’s a high curiosity factor for an inaugural article, but reaching this wide an audience is a good sign.