November, 2010

Nov 10

Entering SIGGRAPH submersion mode

As SIGGRAPH submission deadline is drawing closer, I might not respond to support requests / bug reports over the next 6 weeks. Please don’t be put off — Mitsuba development will pick up at the usual pace once the deadline is over, but for now I must concentrate my efforts on the submission.

Nov 10

Mitsuba 0.2.0 released

After a long stretch of time, I’m releasing a new version of Mitsuba. Reasons for the delay were numerous architectural changes within the renderer. Most of these will not be visible when using the application, but they should result in faster rendering performance. Here is a breakdown of the high-level changes:

  • The COLLADA importer is more robust and should handle most scenes (hm, this sounds familiar). Rather than generating hundreds of translated mesh files, the new version instead produces one single compressed file.
  • I’ve added an experimental plugin for Blender 2.5 integration, including a custom material designer. Since it depends on features which won’t be in Blender until the upcoming 2.56 release, it is currently necessary to compile Blender from SVN to use the plugin. Many thanks go to Doug Hammond for providing his excellent EF package, which the plugin uses extensively.
  • Jonas Pilo has contributed a very nice test scene, which is currently used as an interactive preview in the material designer of the Mitsuba Blender plugin (see this video for an example of what this looks like)
  • The KD-tree acceleration and construction code has been completely rewritten. The new code produces noticeably better trees and does so within a fraction of the time of the old version. It also scales to very large polygonal meshes (>30M triangles), whereas the previous implementation would quickly exhaust all available memory in such cases. (see this blog entry for details)
  • Instancing support was added, and there is limited (rigid) animation support for shapes.
  • Edgar has kindly contributed patches to compile Mitsuba using the Intel C++ compiler. Official windows 32-/64-bit builds now use this compiler, since it produces faster-running executables (in comparison to Visual Studio).
  • The XML schema of the scene description language is now less picky. Specifically, it is possible to specify properties and objects in an arbitrary order.
  • Standard UV texture mapping controls (offset, scale) are provided
  • Luminaire importance sampling is more flexible. The previous implementation sampled a light source proportional to its power, which was often exactly the wrong thing to do. In this release, the sampling weights can be manually specified.
  • There is partial support for rendering vast amounts of hair (partial because only the intersection shape is implemented at this point — no hair-specific scattering models have been added yet)
  • A PLY file loader based on libply (courtesy of Ares Lagae) was added
  • Vertex colors are now accessible within the renderer. This is implemented using a special “texture”, which forwards the color information to scattering models
  • Severe lock contention issues in the irradiance cache were fixed (these resulted in slow performance when rendering on many cores).
  • The loading dialog now contains a console, which shows what is happening while waiting for a large scene to load
  • The builtin environment map luminaire supports importance sampling (it did uniform sampling before – jikes!)
  • A bunch of materials and textures now have GLSL implementations so that they can be used in the interactive preview
  • The preview itself should be quite a bit faster due to optimizations in how geometry is passed to the GPU

As usual, a large number of bugs were also fixed. The documentation is still rather incomplete, but I’m working on it.

Nov 10

Build system changes

I’ve just committed a few build system-related changes, which should help to prevent some major headaches in the future. These changes require four (simple) steps from anyone who is currently building from source on either Windows or OSX:

  1. Update to the newest repository version (hg pull -u)
  2. Check out a copy of the ‘dependencies’ repository at and place it into the Mitsuba directory (e.g. C:\Mitsuba\dependencies), i.e.

    cd C:\mitsuba
    hg clone

  3. Replace your ‘’ file with a fresh copy from the ‘config’ directory. Note that a few more options exist now — specifically on Windows, the Intel C++ compiler is now supported (thanks, Edgar!).
  4. Remove the ‘mitsuba/tools’ directory (if it still exists after the last three steps).