What is the goal of Mitsuba?

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.

Other design considerations are are:

Performance: One important goal of Mitsuba is to provide optimized implementations of the most commonly used rendering algorithms. By virtue of running on a shared foundation, comparisons between them can better highlight the merits and limitations of different approaches. This is in contrast to, say, comparing two completely different rendering products, where technical information on the underlying implementation is often intentionally not provided.

Robustness: In many cases, physically-based rendering packages force the user to model scenes with the underlying algorithm (specifically: its convergence behavior) in mind. For instance, glass windows are routinely replaced with light portals, photons must be manually guided to the relevant parts of a scene, and interactions with complex materials are taboo, since they cannot be importance sampled exactly. One focus of Mitsuba will be to develop path-space light transport algorithms, which handle such cases more gracefully.

Scalability: 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.

Usability: Mitsuba comes with a graphical user interface to interactively explore scenes. Once a suitable viewpoint has been found, it is straightforward to perform renderings using any of the implemented rendering techniques, while tweaking their parameters to find the most suitable settings. Experimental integration into Blender 2.5 is also available.

Mitsuba generates an error or crashes — what should I do?

Please fill out a report on the bug tracker. To be able to debug the issue, I will also need a zipped copy of your scene and all data files it references, as well as the mitsuba_*.log file, which should be in the same directory as the executables (on OSX, the log files are stored inside the application bundle).

I'm an artist and would like to support this project — what can I do to help?

I'm currently searching for artists, who would be willing to donate scenes for research purposes. I'm interested primarily in scenes, which are difficult to render, like interior scenes with complex lighting and materials. Please get in touch if this sounds like a possibility to you.

Why is it called Mitsuba?

I really like cooking Japanese food and happened to be making a dish with Mitsuba when I was searching for a suitable name :)

Why doesn't the renderer have <production feature X>

Mitsuba is a research-oriented renderer, hence it is missing many features which one would expect from production software (displacement mapping, various types of procedural textures..) Many of these would be quite easy to add, but they are currently not high on my wish-list. If you feel like implementing one of them, please read on.

Can I contribute to Mitsuba?

Certainly! I'm open to any collaborations; please get in touch.

How can I disable the 'Mitsuba' banner in output renderings?

Specify the parameter <boolean name="banner" value="false"/> to the film plugin.