April, 2012

Apr 12

Mitsuba 0.3.1 released

A new release of Mitsuba is available for download. This is the last stable release before version 0.4.0, which will introduce bidirectional features and a major overhaul of the system’s internals. It is mainly a bugfix release, which was necessary since a few rather serious problems had crept into version 0.3.0. Apart from bugfixes, there were also a couple of new features, and some announcements are to be made:
  • Reflectance models: The plastic, roughplastic, and roughcoating models have been completely overhauled. They are now reciprocal, and the rough variants support a texturable roughness.
  • Intersection shapes: For convenience, I’ve added two new intersection primitives: rectangle and disk. These do exactly what the name implies :).
  • Documentation: The documentation has seen further improvements and clarifications. While of course still far from complete, it’s getting a bit larger every day.
  • Wireframe texture: there is now a special texture that reveals the underlying mesh structure when attached to a triangle mesh.
  • Linear blend material: it’s now possible to interpolate between two arbitrary BSDFs based on a texture.
Two announcements:
  • Fluid solver: I’ve updated my homebrew fluid solver to generate volume data files that current versions of the renderer can handle. The download page also contains a new example scene with heterogeneous smoke generated by that program.
  • Forums: I’ve added forums to the bug tracker (link). You will need a valid tracker account to create forum posts.
The bugs resolved in version 0.3.1 are as follows:
  • Photon mapper: The photon mapper had some serious issues in the last release, which apparently didn’t keep people from using it :). These are now fixed, and it should run faster too.
  • Performance on Linux/x86_64: On Linux, the performance of the single precision exp and log math library functions is extremely poor when compiling for the x86_64 architecture. Why that happens (and is still the case in 2011) is a long and sad story. To circumvent this problem for now, Mitsuba will revert to the double precision functions on affected systems. This causes a noticeable performance improvement when rendering homogeneous or heterogeneous participating media.
  • Primitive clipping: When constructing the scene kd-tree with primitive clipping (a.k.a. “perfect splits”), some numerical issues caused holes to appear when the renderer was compiled in double precision. This likely never affected more than a handful people, since the default builds all use single precision.
  • Adaptive integrator: The adaptive integrator interacted badly with certain sub-integrators—this is now fixed.
  • Geometry instancing: Instanced analytic shapes (e.g. spheres, cylinders, ..) are now supported, and an error involving network rendering with instanced geometry is fixed.
  • Scene corruption: Fixed a serious issue that could destroy a scene file when saving from a cloned tab!
  • Multi-screen setups: On Windows, Mitsuba had occasional problems with multi-screen setups, where windows could disappear to a position that was not covered by any of the screens. The GUI is now aware of the screen configuration and tries to place windows more intelligently.
  • OBJ texture coordinates: textures applied to an OBJ mesh used to be vertically flipped. This is now fixed.
  • Hair intersection shape: the construction of the hair kd-tree used to take very long and has now been shortened considerably.
  • Texture lookups: Sean Bell found an off-by-one error that caused texture lookups with x=0 to wrap. This has been corrected in the new release.