3D in the browser seems to be becoming commonplace and now Adobe is planning to add something exciting and 3D to Flash. Is this just a yawn or is it a logical and necessary step?
Flash is to have a 3D rendering engine included in the next version.
And the very first thing to say is that this is not 3D as in having to wear red and green glasses as some news reports have claimed - due to misunderstanding and the desire to link it to the current 3D cinema boom. This is standard traditional 3D vector graphics as used in any 3D game without the need for special specs.
The fact that this is going to happen was released to the world as notifiation of a planned session - Flash Player 3D Future - at the forthcoming Adobe Max conference (in October) and no official announcement has yet been made. A blog post by Flash product manager Imbert Thbault confirmed that it really was going to be a 3D API.
Currently it is difficult to know if this is a publicity stunt aimed at getting programmers to attend Adobe Max or to hold their attention on the Flash environment.
Of course it has been possible to create 3D in Flash using add-on libraries, but a native rendering engine will make it easier and hence encourage programmers to make use of the facility. If it is to be as exciting as the promises make it sound. it will also have to be hardware accelerated and make good use of whatever GPU is available.
The latest release of Flash Player included some 3D enhancements such as 2D objects positioned in 3D space and now these can be seen as preparations for a full 3D implementation.
The truth is that Flash need to add 3D simply to keep up with what is going on in alternative technologies.
HTML 5 for example doesn't include a 3D rendering engine but WebGL is a separate standard which is often included in the same breath as HTML5 which does bring full 3D to the browser without a plug-in. As a result many are simply stating that HTML5 has 3D - it doesn't and browser support for WebGL is a separate issue to HTML5.
Silverlight - the Microsoft alternative to Flash - is currently also thin on 3D support. It has the same 3D effects that Flash Player 10 has. You can use it to create 3D looking objects from 2D objects. Of course like Flash as it supports 2D vector graphics you can add 3D drawing libraries but these are not hardware accelerated. Given that Silverlight's graphics are based on WPF which in turn is based on DirectX it would be fairly easy to add full 3D to Silverlight but this wouldn't be easy to extend to a platform independent option. Flash on the other is free to use OpenGL which is platform independent. It will be interesting to see how Microsoft reacts to the rush to 3D.
There is also the issue of security. Silverlight for example doesn't allow access to the GPU for bitmap effects but it does in out of browser apps. Of course allowing programmers to create custom shaders is more of a security hazard than simply allowing access to a standard 3D API but it might limit what can be done safely.
The real question is do we want 3D in the browser?
The only applications that need hardware accelerated 3D are games. The basic idea is that instead of buying a game and installing it on the desktop users will be able to get the same game experience from simply viewing a website. Of course the amount of code needed to create a game will mean that the user will have to download as much code as for a desktop game, albeit in the background.
Then we have the possibility of 3D in a mobile browser. Currently mobile hardware can do 3D with the help of a cut down version of OpenGL - OpenGL ES. This has at least demonstrated that mobile 3D is possible - but it isn't easy. Do users really want 3D immersive games on such tiny screens even if the processing power is there to do the job?
About the only real opening for mobile 3D is augmented reality where the ability to place 3D models in a live scene is a much less demanding application - this could be the killer app as far as mobile 3D is concerned.
At the moment Flash doesn't have much impact on the mobile world and its specifically banned from use on Apple's iOS devices - for reasons that don't really add up. Adding 3D might make it seem more attractive in the mobile context even if real application that make use of it are few and far between.
To find out what Adobe has in mind for Flex we will have to wait, but it is clear that adding 3D is an attempt to make the plug-in environment look more attractive in the face of various pressures on programmers to move to an alternative. A lot will depend on exactly what is on offer, how it is presented and, as a result, how easy it is to use to develop or port applications.
HTML 5 Rocks
We don't need no plug-ins! HTML 5 is enough
A better Flash
Silverlight Custom Bitmap Effects - Getting started