Learning WebGL

Word is starting to get around so I might as well cop to it: as of today I have official taken over as Editor-in-Chief of Learning WebGL. While I fancy myself more a programmer than a journalist, I must say that the opportunity to guide this great site into the future was simply too good to pass up.

Giles Thomas created Learning WebGL in 2009, when WebGL was just getting going. Most browsers didn’t do WebGL yet, and if they did, they did it wrong or they all did it differently. There was no documentation, other than the specification, which is itself based on the public spec for OpenGL ES. To say that the spec is obscure and a tough read for any but the experience 3D graphics programmer would be an understatement. I’m a fairly experienced 3D programmer, and my first look at the spec back in 2010 was nerve wracking. So I googled, and found Learning WebGL.

Giles started the site as a way to teach himself WebGL programming. He wisely chose existing OpenGL tutorials as a starting point and built from there. In the four years since, he has created an awesome resource, the first stop of any programmer’s wanderings through the thicket of information that comprises WebGL development. If Learning WebGL didn’t exist, I’m not sure I could have written my book, or made sense of what Mr. Doob’s Three.js code was doing half of the time. (Open source is great, but unfortunately in this modern world, access to the source has become synonymous with no documentation.)

Giles has given the world a fantastic gift. I hope I am equal to the challenge of maintaining it.

For the “official story” of the site’s leadership change, you can read the press release here.

Web3D: The Next Generation

I believe the children are our future…

Last week I had the good fortune of speaking to a group of Carnegie Mellon students at the Entertainment Technology Center. ETC is a satellite program hosted at EA’s main offices in Redwood Shores, run by the legendary Carl Rosendahl of Antz and Shrek fame. Carl and his partner Jiyoung Lee have created a wonderful program with a gifted group of master’s students building interactive media and games.

I presented a crash course in WebGL, my typical fare of late, crammed into ninety minutes with too many demos. The talk was lively and interactive with a lot of Q&A. The students even sent me a list of interview questions beforehand; you can see the interview here and a student writeup here.

Overall, it was a great experience. What I think I loved most about it was that I was in a hater-free zone. Believe it or not, in 2013, I still run into the occasional pinhead who asks “Why would I need 3D?” These days I am able to promptly tag them as a 3tard and move on, but every once in a while it gets under my skin. So it was really refreshing to hang out with a few dozen twenty-somethings for whom this is not a question. It never comes up. These kids just get it. They’re ready to make stuff with WebGL already and are just looking for the best way to get going.It heartens me to know that I was in the presence of the multimedia developers of tomorrow.

Teach them well and let them lead the way!

Alias Ugly

WebGL just got beat hard with the ugly stick. As reported by Ken Russell of the Chrome team, there was a graphics driver issue on “some Mac OS hardware” that caused a nasty bug which corrupted memory. The culprit turned out to be antialiased rendering, that great technique for smoothing out jaggy lines along edges by blending adjacent pixels. The Chrome team decided to fix the bug by turning antialiasing off on all offending machines until Apple deals with a couple of bugs in their NVIDIA drivers. This sounds safe enough, and I can’t blame them. Better safe than sorry, especially when it comes to trashing computer memory.

Except that it turns out that when citing “some Mac OS hardware” Ken meant: “The affected machines are those with NVIDIA and Intel GPUs.” Um, that’s pretty much any Macbook. Including mine. Suddenly one day some awesome WebGL demos I wrote got visibly less awesome after Chrome auto-updated. Then I checked the same demos in Firefox and it turns out they followed suit and recently pushed a similar fix. The net result is that several of my previously beautiful projects now look shite. I am seriously bummed.

I could investigate one of several techniques for doing my own antialiased rendering via writing custom GLSL shaders. But that’s some R&D and work load I hadn’t been budgeting for. What would be much better is if Apple fixes this situation ASAP. Dean Jackson from Apple is on the case (thanks for the email replies Dino!) and I hope they fix it soon! If you’re having issues like I am, maybe add your voice to the chorus. The email archive for this thread contains info on the already-filed bug reports and an address for filing new bugs with Apple.

Just a heads-up for everyone who may have wondered why their WebGL got ugly overnight… meantime I am seriously considering (shudder) buying a new Windows laptop to show off my stuff. Somebody stop me.