Development news: many shader pipeline improvements, many 3DS/Wavefront etc. converters improvements, more

June 1, 2011
Lights with radius without shader rendering
Lights with radius with shader rendering
Horse model from 3DS file with bump map

Work on next view3dscene release continues. Some highlights from May:

  • Our Blender X3D exporter updated to latest Blender 2.57. Not much difference from upstream now, we just add a small fix and allow using our normalmap extensions.

  • Lights improvements:

    • Lights attenuation is correctly rendered in shader pipeline.
    • X3D light source "global" field is correctly supported now. (Previously, we were following VRML 97 spec, where directional lights are never global and point/spot lights are always global.)
    • Light radius is correctly and precisely (per-pixel) checked in shader pipeline. This allows to use light "radius" for much more dramatic effects, compare 2 screenshots from light_street_lights_radius demo (source model in demo models SVN).
  • Other shader pipeline improvements:

    • Shader programs are now correctly cached and shared between shapes. This results in much faster loading and less memory usage for shader pipeline.
    • Workarounded ATI fglrx bugs (on newer versions, >= Catalyst 10.10) for shadow maps and bump mapping (this one, and other). Again, fglrx wins the contest for the most buggy OpenGL driver.
    • Variance Shadow Maps restored for new shader rendering. Work much better now! (But still should be treated as experimental. You can try View->Shadow Maps->Variance Shadow Maps.)
  • Converters improvements:

    • Conversion of 3DS, GEO, Wavefront OBJ and MD3 reimplemented to produce X3D (instead of old VRML 1.0).
    • When loading 3DS and Wavefront OBJ, we try harder to find matching texture name: we search for texture filename ignoring case (useful if you're on case-sensitive file-system, like usually on Unix), we look inside textures/ subdirectory, we try to strip basename from filename in case it was absolute. If original texture filename was not found, but we found a suitable alternative, we use it (notifying you about this by a warning, so you know what going on — we used somewhat different texture filename).
    • We read normalmap (aka bumpmap) information from 3DS or Wavefront OBJ models. This is naturally converted to our bump mapping extensions for VRML/X3D.
  • VectorInterpolator extension implemented to animate MFFloat sets, for example to animate ElevationGrid.set_height. Simple demo.

You may also be interested in slides, in Polish, about our "compositing shaders" idea. Information in English is available here.

As usual, you can try everything by our snapshots.