Thursday, January 10, 2013

Get WebGL working on the Android Chrome Beta

[UPDATE: This whole process just got a lot easier! With the newest update you can now visit about:flags (or chrome://flags, take your pick) and click the link that says "Enable WebGL". Then restart the browser and you're done! Best of all? No root required!]

Today a new Chrome Beta was released to the Google Play store. While the current stable Chrome release is based on the relatively old and crusty Chrome 18, the beta is based on the Chrome 25 code base. It's a big step forward in a lot of aspects, but there's one very specific capability that was added that's of interest to readers of this blog: WebGL support!

Now don't get too excited, because it's not turned on out of the box and not everyone will be able to enable it, but if you're interested in doing some early testing of your WebGL app(s) it's now possible with a little bit of tinkering.

Tuesday, January 1, 2013

glMatrix 2.0 Released!

Hey, did you hear that it's a 2013 now? New years usually inspire resolutions, and one of mine is simple: Finish more of the projects that I start! To get off on the right foot in that regard, lets start off the year with a brand shiny new glMatrix 2.0!

So what's new in version 2?
  • The entire API has been reworked with an eye towards consistency and speed. This means that while it looks similar to the previous revision the new library is NOT backwards compatible with glMatrix 1.3.7. That's an unfortunate casualty of progress, but a necessary one to make sure the library isn't held back by mistakes made early on.
  • A much expanded suite of unit tests. We don't have full test coverage yet, but the new tests should at least help to ensure that we catch obvious regressions before they make it into the wild, and it can be expanded to cover new bugs as we find them
  • A new library structure and build process that integrates the new tests and will eventually make new releases a one-click operation.
  • More optimizations!
  • New functions at the request of the community!
  • A higher version number!
This new version has been in the works for a little while, and there's still some more updates that I'm planning on around the documentation and landing page, but I'm pretty happy with where the code is at, and the new version should allow the library to evolve more smoothly as feature requests and bug fixes roll in moving forward.

Of course, the new release isn't something that I can take credit for alone. There's plenty of thanks to go around to everyone that's contributed code, ideas, or even just opinions to get the library where it is now. In particular, thank you to:
And of course, glMatrix's co-author, who has been an invaluable source of support, feedback, and code: Colin MacKenzie IV (Otherwise known as sinisterchipmunk, which is the most awesome username ever!)

Happy new year, everyone, and happy coding!

Sunday, December 2, 2012

I will not be playing your game today

I've always considered myself to be a gamer. I've been fascinated with video games since I was very young and the NES was hot stuff. I would never think to describe myself as a "casual" gamer: I can still headshot you from half way across the map in Team Fortress 2 with ease. I've beaten multiple Final Fantasies, and will fervently argue that VI is the best in the series. I still chuckle if I ever hear someone say "Would you kindly...". I've always wanted to build games, which is why I started teaching myself graphics development in Junior High. Gaming has long been an important part of my life, and is a big part of why I'm in the career I am today. In every sense of the word I am a Gamer with a capitol 'G'!

Except, um... I've been playing a lot more Angry Birds and Cut the Rope lately than Dishonored or Borderlands. Actually, that's pretty much all I've been playing. I feel vaguely guilty about that: it's hard to claim that you're a "hardcore" gamer with a straight face when most of your gaming time is spent slicing fruit instead of shooting aliens. But, at least I've a good excuse! His name is James:


Yes, I've added "Daddy" to my resume. And, for those of you who have kids I don't need to explain that, especially at this age (2 Months) it's a full-time job.

Tuesday, October 2, 2012

OES_vertex_array_object extension

(Update: Demo should work on Windows now too with the latest Canary builds)

So believe it or not, since joining Google I've been doing more than just lounging around and enjoying the free food. This week my first feature landed in the Chrome source, which means it should be coming to a canary build near you soon! And it just so happens that the feature is question is, surprise surprise, a WebGL extension! OES_vertex_array_object, to be exact.

(Giving credit where it's due: Ben Vanik did the work to expose the extension to WebKit a while back, my contribution was wiring it up to Chrome's GPU pipeline.)

As is tradition we'll start off with a demo. If you're reading this near the posting date you'll have to have a Chrome Canary or Chromium build to see this in action:


Not exactly the most graphically impressive thing in the world, is it?

Thursday, September 13, 2012

Nexus 7 impressions

I picked up a Nexus 7 last weekend, partially because I am on the Chrome team now and want to contribute to the Android version, and partially because I really wanted an Android device to play with again. :) I've been using it pretty consistently over the last week and felt like it would be a good time to share my first impressions.

Sunday, September 2, 2012

New job and glMatrix 2.0

A bit of a life update here, for those that don't follow my Twitter feed there's a couple of things worth bringing up:

First up, I've left Motorola after the project I was working on was shut down. I'm sad to be leaving a truly great team, but when one door closes another blah blah... So now I'm a Google employee! I've joined the Chrome GPU team, and will working on the WebGL implementation! I officially started on August 27th, so this was my first week. Yes, that makes me a Noogler. :)

Thus far my experience has been that Google is a ridiculously awesome and just a tad bit overwhelming at first. There is a LOT to learn, both in terms of culture and code. Did you know that the Chrome code base is (to use a technical term) frikin' huge? It also take a long time to check out and a really long time to build.  That's going to take some getting used to after all my dallying in insta-refresh web development land.

Speaking of web development, with my new job what's going to happen with my WebGL hobby code? Hopefully not much, although I'll admit that it'll probably slow down a bit while I focus getting up to speed at the job that actually pays me. :) In any case, I will still be doing personal code, but "Building the Game" is taking another break. (Not that I was being terribly speedy with my updates anyway...)

There is at least one project that I'm actively working on, however: I've started on glMatrix 2.0. It's primarily an application of all the bits of feedback that have been given about the original library, along with an effort to clean up and standardize the API based on real-world use patterns that I've seen. It's still a work in progress at the moment, so anyone is welcome to chime in on the code that's been written thus far. I'm not sure when it'll be officially released, but I'm hoping sometime in the next couple of months.

So that's my little catch-up post! Till next time!
 

Friday, August 10, 2012

More GPU Tile map demos (Zelda)

I published these on Twitter and Google+ a little over a week ago, but felt they were worth posting on the blog as well!

So if you recall from my previous post I mentioned that the tile map technique allowed for really REALLY big maps. How big, exactly?

How about big enough to store the entire NES Legend of Zelda overworld...
and all of the dungeons...
and the second quest overworld...
and all of it's dungeons...
all in a single massive map!