view3dscene 3.9.0: new renderer, GLSL attributes, multiple viewports. Also: "fundry", a way to donate to particular feature

February 6, 2011
GLSL demo "flutter" (from FreeWRL examples)
Wind turbine simulations, from SSB Wind Systems, with 4 viewports
Tremulous ATCS in VRML, with 2 viewports and frustum visualized in right viewport

We're proud to release a new version of view3dscene 3.9.0, our VRML/X3D (and other 3D models) browser. As usual, the new release is accompanied by new Kambi VRML game engine 2.4.0 (where all the magic actually happens) and new Kambi VRML test suite 2.11.0 releases.

  1. The main new feature of this release is a new modern renderer. It opens the door for pure shader rendering in the next release, which hopefully will blow your mind :) Features already implemented while improving the renderer:

    • GLSL attributes from VRML/X3D nodes: support for FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute nodes.
    • LocalFog support. This allows you to limit (or turn off) fog for particular shapes. Our volumetric fog extensions are available for this type of fog, as well as normal Fog.
    • FogCoordinate node support (explicit per-vertex fog intensities). Support details are here.
    • Bump mapping extensions support for every shape (including X3D triangle/quad sets/strips/fans).
    • ElevationGrid.creaseAngle is now working correctly (previously only all smooth or all flat normals were possible for ElevationGrid).
    • Loading GLSL shader source from data URI. For example, you can prefix inline shader source with line "data:text/plain,", which is a spec-conforming method of putting shader source inline (even though you can still omit it for our engine). See examples in our docs here, also the "GLSL Vertex Shader" example in FreeWRL examples.

    With the new renderer, you should enjoy better speed on many scenes — in some cases the improvement is large (although, admittedly, in some cases it's not really noticeable). If you're curious, some (not impressive, but also not bad) results are here.

    For programmers, a description of how the new renderer works is available in our documentation (section "Geometry Arrays"). You can grab it in PDF or other formats from here.

  2. Another new feature are multiple viewports. This was already implemented in our engine, now it's used in view3dscene. Just open any scene, and try the new Display -> 1/2/4 viewports menu items, and you will see what I mean. Hope you like this :) Remember that the main (upper-left) viewport is still the central one, for example it controls the headlight.

    Thanks to Jens van Schelve for suggesting this. A cool fact: the guys at SSB Wind Systems are using our view3dscene to visualize wind turbine simulations :) You can see a screenshot of their simulation output on the right.

  3. Other important new features / fixes:

  4. A new website feature is the possibility to donate money specifically for implementing a particular feature: go to fundry page for our engine. The fundry widget is available also on the Donate page.

  5. At the end: I decided to deprecate some of our old extensions. As far as I know noone used them, and they are rather useless in the light of new features:

    • Fog.alternative — useless, because all decent (even old) GPUs support EXT_fog_coord. And for ancient GPUs automatic fallback to the non-volumetric fog works well enough.
    • Material.fogImmune — useless, as newly implemented LocalFog node allows you to locally disable fog too. LocalFog also allows much more (like locally enable fog), and it's part of the X3D specification. So our poor Material.fogImmune extension has no place anymore.
    • Also, menu item to switch "Smooth Shading" is removed from view3dscene menu. Forcing flat shading on the whole scene seemed rather useless debug feature. You can always set IndexedFaceSet.creaseAngle = 0 in your files (in fact it's the default) to achieve the same effect.