3D on the web – WebGL to the rescue

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.

There are a host of solutions to bring 3D to the web. There are straightforward solutions like animated GIFs of prerendered 3D images or a little more advanced like javascript animated JPG or PNG images with limited interaction with the 3D model. These solutions are extremely well supported with most browsers – even mobile ones. A notable example is the 3DNP (3D No Plugin).

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.
In short, WebGL exposes OpenGL calls to the javascript engine and uses the HTML renderer to show the result. This enables far better integration with web applications, and this is already shown by online 3D editors like 3DTin and Tinkercad.
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.

To me WebGL is a significant move forward in making 3D possible on the internet via a browser using an open standard. It has all the conditions to be a success. The biggest challenge is to keep WebGL secure. It exposes direct hardware calls to javascript, and it depends on the filtering techniques of the browser javascript engine to make it secure.
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.