• 1/3

The Status of WebGL in Relation to 3D Game Development

Posted by Christopher Diggins, 19 October 2011 8:00 pm

http://area.autodesk.com/blogs/chris/the_status_of_webgl_in_relation_to_3d_game_development

About WebGL

WebGL is a new open-standard for rendering 3D content in web clients developed by the Khronos group. Several major browser vendors are participating including Apple, Google, Opera, and Mozilla. The only major vendor absent from the working group is Microsoft. WebGL is a JavaScript API plus a shader language (GLSL) based on OpenGL ES 2.0.

If you want a demo of WebGL check out the new QuickShare web viewer on Autodesk Labs (http://quickshare.labs.autodesk.com/).

Existing WebGL Games

Currently there are a handful of WebGL games that I found on the Google chrome store via the Mandreel.com Showcase (http://www.mandreel.com/?page_id=1312).

Mandreel is a technology for porting applications (especially games) from iOS or Android to either HTML5 or Flash.

Technical Challenges for Game Developers

Florian Boesch wrote in a recent blog post some of the short term obstacles facing the development of 3D games using WebGL and HTML5: http://codeflow.org/entries/2011/sep/11/webgl-and-html5-challenges-for-the-future/. The point he brings up are:

  • Lack of true full-screen mode
  • Incomplete full-mouse capture
  • Lack of multiple render targets
  • No instanced drawing
  • No texture lookup in the vertex shader
  • Lack of floating point textures
  • Difficulty to changes drivers.

I urge you to read Florian's article, he does a good job of explaining the obstacles, why he thinks they are important, and what their status is.
 

WebGL Libraries

While WebGL is available is a high-level language, the API itself is very low-level, much like OpenGL. Therefore widespread usage in games development will depend largely on the availability of well-designed helper libraries (3D engines / scene graph libraries / etc.).

Some of the projects I have found for facilitating WebGL development are:

Most of these are relatively new frameworks, and have a lot of room for growth. The only offering from a major company is O3D from Google. However, this project appears to be abandoned as there have been no significant commits in several months. It was based on a separate API that was specific to a Chrome plug-in.  

GLGE (at least according to some) is one the more robust APIs and was used here at Autodesk to build the QuickShare viewer on Google labs (check out the source using the Chrome JavaScript Console). 

Competing Technologies

For web-based game development Flash 11 has a new GPU accelerated 3D library (Stage3D) and is quickly on its way to becoming entrenched with the support of a large number of sophisticated third party helper libraries (including Proscenium from Adobe labs), excellent tools, a more advanced language (ActionScript), at least in my opinion and the support of some established game engines (e.g. Unreal and soon Unity).

Silverlight 5 is also nearly out the door (currently in RC status) and has support for much of the XNA game development framework. XNA is a 3D game engine from Microsoft used to develop games for Windows Phone 7, PC, XBox 360. Not only is XNA coming to Silverlight to be run in the browser, but the rumors are that the rest of Silverlight is also going to the XBox 360 Console (see also here).

Comparing WebGL to Flash 11 and Silverlight 5

The following table provides various points of comparison between WebGL, Flash11 and Silverlight 5:

 

WebGL

Flash 11

Silverlight 5 (XNA)

Previous incarnation

First generation

Flash 10

Silverlight 4

Browser Support

All Except IE

All Except Metro-style IE 10

IE 10 in Dekstop Mode, Firefox and Chrome

iOS Support

No ***

Yes (via Air)

No

Console support

No

No

XBox 360

Windows 8 Metro Support

No

No (maybe Air?*)

No (should be easily ported? **)

Major supporters

Google, Apple,  Mozilla

Adobe

Microsoft

Programming Language

JavaScript + GLSL

ActionScript + AGAL

C#, VB .NET, F#, Jscript .NET + HLSL

Commercial 3D Game Engines

None

Flare3D (under development:Unity, Unreal Engine)

None

Freely Available APIs

O3D, GLGE, Three.js 

Proscenium, Alternativa3D, Away3D, Minko

XNA

Demo

Autodesk QuickShare
O3D Pool Demo
Quake 3 Level
Spore Creature Viewer

More demos … 

Nissan Juke Demo
Battle Punks

Tanki Online



More demos …

3D Physics Demo (unviewable from my computer configuration)




* I am only speculating that Adobe might port Air to Windows 8 since IE 10 in Metro mode won't support plug-ins (see also http://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx). From what I can tell from the WinRT API it seems to be technologically possible.

** I am speculating that Microsoft will make it as easy to port Silverlight applications to Metro as possible based on porting guide documentation (another example here) that I have seen.  

*** iOS 5 is in theory going to provide WebGL support for iAD developers only: https://www.khronos.org/webgl/public-mailing-list/archives/1106/msg00036.html.

Microsoft’s Lack of Support for WebGL

“Browser vendors are implementing WebGL as a way to get partial hardware acceleration after developers rewrite their code. With Internet Explorer 9, developers receive GPU-powered hardware acceleration without rewriting a single line of code which we feel is a better outcome.” - http://www.readwriteweb.com/hack/2011/04/internet-explorer-webgl-and-a.php

Microsoft is not part of the WebGL working group, and is not showing any support for the format. In Windows 8 they are pushing Direct3D 11 (see the Windows 8 Developer Preview Guide) as the way to build GPU accelerated 3D applications for both Metro-style and Windows-style apps.

Microsoft has also cited security concerns as a reason to not support WebGL. There is some debate as to the validity of these claims. However, the debate is not particular accurate since the security of WebGL is compared to ActiveX controls. One has to keep in mind that Microsoft is disallowing ActiveX controls in the new Metro mode of Windows 8. The security concerns of Microsoft are therefore probably valid.

My guess is that supporting WebGL would also be at odds with Microsoft’s obvious business interests to increase the proliferation of Direct3D since WebGL is based on OpenGL ES 2.0, but this is only speculation on my behalf. 

Since WebGL is not part of the HTML5 standard, there is no serious pressure on Microsoft to turn around and start supporting WebGL.

Possible Future Developments for Windows 8 Metro Applications

The following is some additional speculation about what could be future developments regarding how WebGL's could be used in Windows 8.

Standalone WebGL client for Windows 8 Metro - There is no apparent technical obstacle for Windows Metro 8 WebGL clients being built using the Google ANGLE library (http://code.google.com/p/angleproject/). ANGLE stands for “Almost Native Graphics Layer Engine” and allows Windows users to seamlessly run WebGL content.  To work in Metro it would just have to target Direct3D 11 instead of DirectX 9. 

WebGL Frameworks that work on IE without WebGL – It may be possible that WebGL frameworks like GLGE might be ported to work in IE without WebGL via creative JavaScript usage. This is what some applications already do like the 3DTin demo.

Conclusion

WebGL is definitely viable today as a 3D game technology at least when generated automatically from a tool like Mandreel.

Currently Flash is the dominant choice for developing 3D games in the browser and will likely continue for the short term.

Silverlight will soon be viable, but won’t likely be a popular option for web development with only 70% market penetration versus Flash’s 97% (http://www.riastats.com/). Note that Microsoft has not announced plans to support Silverlight in Windows 8 Metro mode.

While WebGL appears to be ahead of Silverlight and behind Flash in maturity for rendering and manipulating 3D content (based on the availability of 3D games) it has the distinct advantage that content doesn’t require any special plug-ins and the support of multiple vendors.

We'll see what the future holds!

2 Comments

Christopher Diggins

Posted 3 November 2011 12:55 pm

Thank you very much for clarifying my information SooW. I meant "freely available" when I said "open-source". I have fixed this and made your other recommended changes. Cheers!

spacefrog

Posted 22 December 2011 11:03 pm

Fits in here:

Unity just put a public preview (beta) of Unity 3.5 online. It includes the Flash exporter, meaning you can export a fully fledged 3d game to flash directly out of unity. This requires the latest Flash player , which inlcudes Stage3D (Molehill)

http://unity3d.com/unity/preview/

Add Your Comment

You must be logged in to post a comment.

Please only report comments that are spam or abusive.