Mitsuba is a research-oriented rendering system in the style of PBRT, from which it derives much inspiration. It is written in portable C++, implements unbiased as well as biased techniques, and contains heavy optimizations targeted towards current CPU architectures. Mitsuba is extremely modular: it consists of a small set of core libraries and over 100 different plugins that implement functionality ranging from materials and light sources to complete rendering algorithms.

In comparison to other open source renderers, Mitsuba places a strong emphasis on experimental rendering techniques, such as path-based formulations of Metropolis Light Transport and volumetric modeling approaches. Thus, it may be of genuine interest to those who would like to experiment with such techniques that haven't yet found their way into mainstream renderers, and it also provides a solid foundation for research in this domain.

The renderer currently runs on Linux, MacOS X and Microsoft Windows and makes use of SSE2 optimizations on x86 and x86_64 platforms. So far, its main use has been as a testbed for algorithm development in computer graphics, but there are many other interesting applications.

Mitsuba comes with a command-line interface as well as a graphical frontend to interactively explore scenes. While navigating, a rough preview is shown that becomes increasingly accurate as soon as all movements are stopped. Once a viewpoint has been chosen, a wide range of rendering techniques can be used to generate images, and their parameters can be tuned from within the program.

 

Mitsuba instances can be merged into large clusters, which transparently distribute and jointly execute tasks assigned to them using only node-to-node communcation. It has successfully scaled to large-scale renderings that involved more than 1000 cores working on a single image. Most algorithms in Mitsuba are written using a generic parallelization layer, which can tap into this cluster-wide parallelism. The principle is that if any component of the renderer produces work that takes longer than a second or so, it at least ought to use all of the processing power it can get.

The renderer also tries to be very conservative in its use of memory, which allows it to handle large scenes (>30 million triangles) and multi-gigabyte heterogeneous volumes on consumer hardware.

 

Mitsuba supports the most commonly used scattering models: Lambertian surfaces, ideal dielectrics & mirrors as well as the the Phong & anisotropic Ward BRDFs. A range of microfacet models are also available, including rough glass, plastic & metal. Subsurface scattering can either be simulated using a BSSRDF approach, or more rigorously using volumetric light transport.

For volumes, the supported scattering models are isotropic, Henyey-Greenstein, Kajiya-Kay fiber scattering and micro-flakes.

 
 

A wide range of rendering techniques are available, including:

  • Ambient occlusion
  • Direct illumination
  • Monte-Carlo path tracer which solves the full Radiative Transfer Equation
  • Photon mapper with irradiance gradients
  • Adjoint particle tracer
  • Bidirectional path tracer
  • Instant Radiosity (hardware-accelerated)
  • Progressive Photon Mapper
  • Stochastic Progressive Photon Mapper
  • Path Space Metropolis Light Transport
  • Primary Sample Space Metropolis Light Transport
  • Energy redistribution path tracer

 
Mitsuba can compute global illumination solutions in scenes containing large isotropic or anisotropic participating media. The underlying volumes can be represented as sparse voxel octrees or as hierarchical grids, where grid cells are directly mapped from files into memory.
 
Mitsuba internally uses a O(n log n) SAH kd-tree compiler with support for primitive clipping (aka. perfect splits). The ray tracing core is built on Havran's fast traversal algorithm. On Intel platforms, it is possible to trace coherent rays packets using SSE2. Mitsuba supports analytic shapes such as cylinders and spheres and makes use of additional SSE2 accelerations when working with triangle meshes, which allows it to intersect up to 4 triangles at a time.
 
Data exchange with the major modeling packages is supported using the COLLADA file format. Mitsuba can read DAE files and convert them into its native XML-based file format. In the future, additional integration is planned, e.g. plugins for Maya and 3ds max.
 
Other features are:
  • Spectral rendering, black body radiation and dispersion
  • Customizable image reconstruction filters
  • High dynamic-range input/output using the OpenEXR format
  • Deterministic Quasi-Monte Carlo sampling
  • Adaptive integration
  • Depth of field