Well if you heard something about Adobe Max 2010 and Flash then you probably heard about hardware 3D acceleration coming to Flash soon. Name of this project is Molehill, have no idea why it is called like that :) So here I decided to share various info I managed to find bout it so far and some guesstimations and speculations about it.

Before Adobe Max 2010

Honestly I wanted hardware accelerated 3D in Flash for years. I think it was something like 4 years and works of guys like flight404 were the reason. But that was fine untill came the time of superphones started by iPhone. At that stage a small phone in your hand could show better game graphics then gaming home machine with gigaflops power running Flash game. That was starting to become kind of shameful.

And then Unity3D started to gain momentum stealing Flash developers(especially game developers) but still Unity3D never was complete Flash replacement. It was specialized tool packing its own compromises. No it is really really impressive but I can’t say It really shined in place where it metered for me the most and it is Web. Why? Well many portals do not accept Unity in, Unity 3D penetration seems to be a small fraction of what Flash has and back then Unity3D seemed green(had bugs my self with it from time to time). I still was optimistic because hardware 3D was over weighting all those seemingly small problems like, bugs will be fixed, with such possibilities penetration will raise and accelerate and new version will introduce new needed features. But I still can’t say that time for Unity3D in the web has come… It clearly shows in Facebook games, Facebook allows them, I even played 3. I did not believe it at first but Unity 3D games virility and user retention is at least 3 times smaller then Flash games which means you loose 2/3 of possibly paying users and get more expansive graphics (which in that context is not that good). I still wonder why there is 0 successful Facebook Unity3D games. Another bad things that Unity3D seemed not to be a competitor to Flash that would push Adobe to compete in that market. Close to it but still not. (Notice I am not saying Unity3D is bad, it is fantastic technology and tool but where it really seemed to succeed is not in browser, and that’s where it meter most for me).

But then WebGL started to gain the momentum and I wrote what I think about WebGL then. At that point certainty started to grow in me that Adobe is left without options to introduce hardware accelerated 3D in Flash. But I guess here I was a captain oblivious or may be not. And now Adobe is in an hardware 3D arms race joining WebGL and Unity3D.

Announcement at Adobe Max 2010

If you read my impressions from Adobe Max 2010 Monday session you probably noticed that it was a spectacular finish of that session and that it was “OMG, at last!!!” moment for me :) It is interesting that just moments before they boasted about some 2D bitma based phone game being hardware accelerated and I was like “Meh” and then they just blow it some minutes later with this :)

Anyways few scraps of useful info from that session:

  • Alternativa 3D already have access to early builds of player to start playing with those new fascinating technologies and help to fine-tune them for real world uses.
  • Next is that this racing game was shown with open task manager that showed some 0-5% CPU load meaning that it completely run on GPU freeing CPU for other things ;)
  • There will be public beta available in first half of next year.
  • Here from some said things I feared a little that their API will impose things on developers that are not necessary

And that’s probably it.

More info after and during Adobe Max 2010

Some Flash 3D engine teams already work on next gen

Well bytearray.org was first that blog that mentioned that something like that will be announced on Adobe Max 2010 and after that session they started to collect a blog post with various videos showing projects that already use those new Molehill APIs.

Almost all of them are jaw dropping coming from world of Flash graphics.  So what can be seen from those videos:

  • After 10k of triangles in current Flash things shown there seems almost as an infinite leap in triangle/texture rendering count
  • As my boss pointed out there are hints to limitations too. Have you seen complex character animations there? Even best video showing those shows single character with some 10 animations at max. Same goes for Metro 2033 online where it just 5 differently scaled models with one animation. So it seems that Api will not allow calculating animation on GPU while flash will not be able to handle much on CPU side aether. Or so it seems.
  • Many popular 3D engine for Flash like Away 3D and Alternativa 3D already work on their next gen engines using this technologies.

Session talking about how really will this work

But those who saw Adobe Max 2010 session list probably noticed that separate hour ong session was dedicated to Flash 3D future. And here it is(sadly player is very bad with bothering advertisements that kick in from time to time and some glitches, painful to watch :( Sad fail Adobe…)

So here is a session from engineer working on Molehill and he covers wide range of things showing also how this will look in AS3 so we can get a pretty good impression on how it will be:

  • Vertexes, shaders and textures are uploaded to GPU memory and stay there.
  • Programs in form of assembly commands to manipulate above data can be uploaded and performed there too
  • There will be buffer. 3D content will be always as Flash background. You will be able to put stuff above it but not below it, kind of limits possibilities like you would not be able to make particle effects engine that would show up above interface but probably it is still possible, you just will need to draw background to the BitmapData and how it above I guess :) Slower though :(
  • Api itself uses OpenGL 1.3, DirectX 9, Open GL ES 2(Mobile) or software fallback depending on where it is run
  • Bytecode for use will feature 20 opcodes that will not include conditionals and loops for now(very sad, because of same limitation Pixel Bender blur filter takes 600 lines instead of 20)

Looks of it Adobe is making a low level API that imposes as less as possible on to developers from one side and makes them build ranges of their own tools for range of use cases where different compromises are appropriate. There will be limitations mostly aimed to guarantee that no meter what you do it will run everywhere Flash runs including mobile. And I think it is more good then bad even though it will limit possibilities.

When?

Well my guesstimation is spring 2012. Why? Well that’s because of usual Adobe release cycle. CS5 was released recently and we will need to wait another two years for CS6 and probably Flash 11 alone with which probably Molehill will be released. And may be it is not that bad, some of us who work with Adobe Flash products probably get a feel that Adobe products become rushed or something. New bugs and questionable solutions… Personally for me it feels as if Flash Authoring becomes worse with each release adding new features we don’t use that much while stability degrades.

What I plan to do

Because hardware 3D was not possible in browsers and because I was finding that 3D games on average suffer from limitations of our input and output devices(very masterfully avoided by some AAA games) I never dived deep in modern 3D graphics programming. Now I feel regret I did not do it at least a little to be more prepared for this. 3D graphics war in a browser is heating up and I feel my self naked in it :)

So I am thinking to go and start trying WebGL for now. Firstly I want to get to know shader programing as I know almost 0 about them. Also practicing/refreshing my 3D knowledge (transformation matrices , lightning models, texturing) is good as I am rpetty rusty at those even though I was learning them a little. And ofcourse checking OpenGL in form of WebGL. Also Molehill and WebGL should be similar which should allow me to start with Molehill faster later on and also getting chance to better compare WebGL and Molehill :)

So that’s it ;)