There is at last progress on bringing 3D to the web. For years, different companies have tried to solve this problem, but the solutions – often with proprietary browser plugins – were cumbersome and limited. With the creation of WebGL, there is finally a way forward.
Adobe Flash supports 3D since last year and the same applies for Microsoft Silverlight. Flash has a sizeable installed base and is truly platform-independent except for the Apple IOS platforms. The plugin suffers from performance issues on a certain platform like Linux. Silverlight is very much geared towards Windows and Mac OSX. The installed base is quite low, and Microsoft seems to have lost interest in moving Silverlight forward. They are currently repositioning it for Windows 8 mobile. The 3D engine is still immature and needs improvements. I expect that Microsoft will improve it for the next Windows Mobile version to enable gaming.
Performance wise both plugins are limited by their underlying technologies. Adobe cannot go beyond 50,000 polygons to achieve smooth animation and Silverlight is even more limited than Flash.
Another option is Java. Java has a mature openGL implementation called Jogl. It provides hardware accelerated 3D engine which is extremely powerful. The major issue for real 3D performance is the limited memory available to an applet. An applet can only use 64MB, and this effectively limits the polygon count to around 250,000. Another problem is that OpenGL support is buggy. On Windows OpenGL support is provided by the video card vendors, and the level of support varies per vendor. On other platforms – like Linux – it is the same story.
This year WebGL came to life with support from Google, Apple and Mozilla. It is build on top of the HTML5 canvas-element. It is managed through Khronos standardization group who are also responsible for managing the Collada 3D file format standard. Microsoft is sitting on the side lines without any support for WebGL in Internet Explorer.
WebGL suffers from the same problem as Java applets using Jogl and that are the buggy OpenGL implementations.
For compatibility reasons, the number of vertices are limited to 65k (16-bits) per mesh which is quite low. Fortunately multiple meshes are supported and scenes or models with up to 500k triangles stay interactive in the browser.
In the end, I am confident that WebGL will succeed. We finally have a 3D solution for the web. Now it is time to make use of it.
I would like to close with this extremely impressive demo from Google about the capabilities of WebGL.