There is hardware acceleration in flash now, however it is not 3D, but rather 2(.5ish)D, and the CPU is left doing the real 3D geometry calculations while the graphics hardware does 2D rendering chores like texture mapping – and essentially idling. This results in 3D performance maxing out at the 1000’s of triangles per frame, far behind leading edge.
Adobe is remding this though in a near-term release of Flashplayer and to provide access to this new capability, the Molehill 3D API has been introduced. Adobe has provided an overview of the API and the results are simply a hundred-fold inprovement in 3D performance. This should make the Flashplayer version of Moore pleased. Oh and the best part? Adobe is collaborating with the 3D engine developers to get the tech into your favorite frameworks, like Away3D. Now if only it was 2007 and not 2011.
Moving between Flash and the Canvas object requires a bit of retro 1990’s thinking: Canvas does not have some of the productivity features that Flash has, like Objects and updates – it feels a bit like doing everything in flash using only bitmap objects. Grant and his team have put together a utility that adds this Flash- like functionality: EasleJS. Check it out and let me know how it works for you!
I have been working with the latest builds of Away3D (v3.6) optimized for FlashPlayer 10.1 in the browser environment, and wanted to compare performance of the non-hardware accelerated version (Flash 9 software rendered) using some new tablet hadrware.
The hardware here is a Samsung Galaxy Tab running Android 2.2 and Flash 10.1. Rendering about 600 polys, non-optimized (big) textures and a big skybox at full resolution drops the framerate, but the Snowbird flight sim demo otherwise works just fine. I’ll be updating this with the hardware accelerated versions of FP and Away3D and compare the results.
Platform cross-compatibility (transparency?) sure has its strengths. nice to develop once and deploy (almost) anywhere.
I live on at the top of the Big Hills in Ottawa (sort of SanFranSkatchewan height). It is a David Suzuki-approved pleasure to throw the 6speed in neutral and coasting down at a leisurely 40km/h , saving the world by getting 1.5L/100km mileage for at least a few hundred metres. That was until speedbumps were installed last week, changing the whole sweet situation.
Flash platform is like that hill – it can be efficient and fun when there are no speedbumps, and most of those are our own fault. Fortunately, optimization of your code can go a long, long way to speeding things up, and after reading Adobe’s latest revision of the Guide (PDF), you may feel a bit dirty knowing parts of your code could run 25-50% faster. The examples contain timer data, so you know just how much performance is enhanced. It’s a 15 minute read and well worth it, especially now that mobile apps set the baseline back to 1998 processor power again, and FlashPlayer 10.1 has some new tricks to take advantage of.
Still looking for more tips? Grant Skinner (Go, Edmonton!) has an excellent presentation here (Flash).A theme of his which I like (as does your mobile device) is being a Good System Citizen – be courteous, don’t hog, clean up after yourself and all those good common sense behaviours.
The scare this year has been that you, as a developer, would have to choose a platform and focus on it. Noone minds a bit of focus, but the fact that seemingly artificial barriers to re-use of code and effort were being introduced; the mobile platforms were making it necessary to choose a side, because learning all the platforms was a big reach. Blackberry, Android, iOS, Flash Platform, each with its own SDKs, IDEs, frameworks, and of course, time destroying tricks and gothas. But things are looking a little brighter:
I hope this doesn’t happen to you but I spent a good day figuring out that a corrupt DLL was the source of a persistance failure of the Adobe Flash Builder and Flash CS5 installers – they would fail to install the Microsoft Visual C redistributables VC90_ and VC80 such as “Microsoft_VC90_CRT_x86”, “Microsoft_VC90_ATL_x86”, or “Microsoft_VC90_MFC_x86.msi” . Here’s how it got fixed: