Today I've tried
X3DOM. This is a way of doing WebGL while keeping HTML concepts onboard. I think Neo--- is already familiar with it, and I invite others to have a look on it.
You use it by defining a
scene graph using the
DOM tree-like structure. Similar in concept to SVG, unless that it is low level and in 3D : you have to handle yourself how shapes are drawn (eg. if you want curved edges, you may have to code them.
Maybe).
But was is important is that this approach make usage of current HTML APIs (DIVs, layers, HTML events, CSS theming and positioning..) straightforward, at the price of less freedom (t looks like support of shaders is quite limited for the moment). You work with shapes and paths, rather than on the pixel level.
I think such connection with HTML concepts is important in the design of a web interface. Otherwise you'd probably still have to write an equivalent high level interface for UI events on top of your 3D engine (eg. code a 3D graph traversing code for handling mouse clicks. In 3XDOM, you simply have to attach an onClick event to a DOM node, like a standard HTML button. it's really a time saver, and it rely on a well established API).
If you want fancy things, you can still merge CSS3 shadows, effects, gradients etc.. on top (or under) your 3D layer, control opacity, and transparents backgrounds - Examples of x3dom might not be very "color sexy", but I think this is more a matter of graphical and example page design that an engineering problem.
I've tested it on the latest stables versions of Chrome and Firefox 4. No glitches; this seems - finally - mature.
I've tried to embed it in a
Dijit widget, to simulate some real world integration issues / DOM manipulation / CSS conflicts. It seems to work (I wanted to do this test, because I had issues with Processing.JS+WebGL, by example. the canvas failed to render when put in some HTML UI containers).
Also, I was surprised to find it is quite fast (30-55fps on my 1.8Ghz laptop - other WebGL libraries tend to pump my battery), see the
examples.
Static 3D rendering is one thing, but the performance question for a real graph is still open, though. I know PhiloGL, SceneJS seems to play well on complex scenes.
But I don't know any benchmark for comparing WebGL libraries in term of FPS or features - only tests for browsers implementations. I think this largely depends on others factors like the layout algorithm and graph/ressource loading performance (data format and compression, server charge, bandwidth..)