Release notes

Being an experimental research framework, Mitsuba 3 does not strictly follow the Semantic Versioning convention. That said, we will strive to document breaking API changes in the release notes below.

Mitsuba 3.6.4

February 4, 2025

Mitsuba 3.6.3

January 29, 2025

  • Release was retracted

Mitsuba 3.6.2

January 16, 2025

  • Enable parallel scene loading by default in mitsuba CLI (regression) [338898d]

  • Improved bitmap construction in scalar variants [6af4d37]

Mitsuba 3.6.1

January 16, 2025

  • Improve robustness of parallel scene loading [8d48f58]

  • Fixes to mi.sample_tea_float [fd16fbe]

  • Support for complex numbers or quaternions in mi.ad.Adam optimizer [eff5bf6]

  • Improved error message when mi.load_dict fails [7db5401]

  • Add missing implementations for spot emitter (for AD) [9336491]

Mitsuba 3.6.0

November 25, 2024

This release comes with a major overhaul of some of the internal components of Mitsuba 3. Namely, the Python bindings are now created using nanobind and the just-in-time compiler Dr.Jit was updated to version 1.0.0.

These upgrades lead to the following:

  • Performance boost: 1.2x to 2x speedups depending on the JIT backend and scene size

  • Improved stubs: auto-completion and type-checking has been greatly improved

  • More variants on PyPI: thirteen variants are available in the pre-built wheels

Some breaking changes were made in this process. Please refer to the porting guide to get a comprehensive overview of these changes.

This release also includes a series of bug fixes, quality of life improvements and new features. Here’s a non-exhaustive list:

Mitsuba 3.5.2

June 5, 2024

Most likely the last release which uses pybind11.

  • OptiX scene clean-ups could segfault [03f5e13]

Mitsuba 3.5.1

June 5, 2024

  • Upgrade Dr.Jit to [v0.4.6]

  • More robust scene clean-up when using Embree [7bb672c]

  • Support for AOV fields in Python AD integrators [f3b427e]

  • Fix potential segfault during OptiX scene clean-up [0bcfc72]

  • Improve and fix Mesh PMF computations [ced7b22] .. [7d2951a]

  • Shape.parameters_grad_enabled now only applies to parameters that introduce visibility discontinuities [3013adb]

  • The measuredpolarized plugin is now supported in vectorized variants [68b3a5f]

  • Fix an issue where the constant plugin would not reuse kernels [deebe4c]

  • Minor changes to support Nvidia v555 drivers [19bf5a4]

  • Many numerical and performance improvements to the sdfgrid shape [455de40] .. [9e156bd]

Mitsuba 3.5.0

  • New projective sampling based integrators, see PR #997 for more details. Here’s a brief overview of some of the major or breaking changes:

    • New prb_projective and direct_projective integrators

    • New curve/shadow optimization tutorial

    • Removed reparameterizations

    • Can no longer differentiate instance, sdfgrid and Sensor’s positions

Mitsuba 3.4.1

December 11, 2023

  • Upgrade Dr.Jit to [v0.4.4]

    • Solved threading/concurrency issues which could break loading of large scenes or long running optimizations

  • Scene’s bounding box now gets updated on parameter changes [97d4b6a]

  • Python bindings for mi.lookup_ior [d598d79]

  • Fixes to mask BSDF when differentiated [ee87f1c]

  • Ray sampling is fixed when sample_border is used [c10b87b]

  • Rename OpenEXR shared library [9cc3bf4]

  • Handle phase function differentiation in prbvolpath [5f9eebd]

  • Fixes to linear retarder [8033a80]

  • Avoid copies to host when building 1D distributions [825f44f] .. [8f71fe9]

  • Fixes to linear retarder [8033a80]

  • Sensor’s prinicpal point is now exposed throught m̀i.traverse() [f59faa5]

  • Minor fixes to ptracer which could result in illegal memory accesses [3d902a4]

  • Other various minor bug fixes

Mitsuba 3.4.0

August 29, 2023

  • Upgrade Dr.Jit to v0.4.3

  • Add mi.variant_context(): a Python context manager for setting variants [96b219d]

  • Emitters may now define a sampling weight [9a5f4c0]

  • Fix bsplinecurve and linearcurve shading frames [3875f9a]

  • Add implementation of LargeSteps method for mesh optimizations (includes a new tutorial) [48e6428] .. [130ed55]

  • Support for spectral phase functions [c7d5c75]

  • Additional resource folders can now be specified in mi.load_dict() [66ea528]

  • BSDFs can expose their attributes through a generic eval_attribute method [cfc425a] .. [c345d70]

  • New sdfgrid shape: a signed distance field on a regular grid [272a5bf] .. [618da87]

  • Support for adjoint differentiation methods through the aov integrator [c9df8de] .. [bff5cf2]

  • Various fixes to prbvolpath [6d78f2e], [a946691] , [91b0b7e]

  • Curve shapes (bsplinecurve and linearcurve) always have back-face culling enabled [188b254] .. [01ea7ba]

  • Properties can now accept tensor objects, currenlty used in bitmap, sdfgrid and gridvolume [d030a3a]

  • New hair BSDF shading model [91fc8e6] .. [0b9b04a]

  • Improvements to the batch sensor (performance, documentation, bug fixes) [527ed22] .. [65e0444]

  • Many missing Python bindings were added

  • Other various minor bug fixes

Mitsuba 3.3.0

April 25, 2023

  • Upgrade Dr.Jit to v0.4.2

  • Emitters’ members are opaque (fixes long JIT compilation times) [df940c1]

  • Sensors members are opaque (fixes long JIT compilation times) [c864e08]

  • Fix cylinder’s normals [d9ea8e8]

  • Fix next event estimation (NEE) in volume integrators

  • mi.xml.dict_to_xml now supports volumes [15d63df]

  • Allow extending AdjointIntegrator in Python [15d63df]

  • mi.load_dict() is parallel (by default) [bb672ed]

  • Upsampling routines now support box filters [64e2ab1]

  • The Mesh.write_ply() function writes s, t rather than u, v fields [fe4e448]

  • All shapes can hold Texture attributes which can be evaluated [f6ec944]

  • Radiative backpropagation style integrators use less memory [c1a9b8f]

  • New bsplinecurve and linearcurve shapes [e4c847f] .. [79eb026]

Mitsuba 3.2.1

February 22, 2023

  • Upgrade Dr.Jit to v0.4.1

  • Film plugins can now have error-compensated accumulation in JIT modes [afeefed]

  • Fix and add missing Python bindings for Endpoint/Emitter/Sensor [8f03c7d]

  • Numerically robust sphere-ray intersections [7d46e10] .. [0b483bf]

  • Fix parallel scene loading with Python plugins [93bb99b]

  • Various minor bug fixes

Mitsuba 3.2.0

January 6, 2023

  • Upgrade Dr.Jit to v0.4.0

    • Various bug fixes

    • Stability improvements (race conditions, invalid code generation)

    • Removed 4 billion variable limit

  • Add missing Python bindings for Shape and ShapePtr [bdce950]

  • Fix Python bindings for Scene [4cd5585]

  • Fix bug which would break the AD graph in spectral variants [f3ac81b]

  • Parallel scene loading in JIT variants [48c14a7] .. [187da96]

  • Fix sampling of hg PhaseFunction [10d3514]

  • Fix envmap updating in JIT variants [7bf132f]

  • Expose PhaseFunction of Medium objects through mi.traverse() [cca5791]

Mitsuba 3.1.1

November 25, 2022

  • Fixed maximum limits for OptiX kernel launches [a8e6989]

Mitsuba 3.1.0

New features

  • Enable ray tracing against two different scenes in a single kernel [df79cb3]

  • Make ShapeGroup traversable and updatable [e0871aa]

  • Enable differentiation of to_world in instance [54d2d3a]

  • Enable differentiation of to_world in sphere, rectangle, disk and cylinder [b5d8c5d] .. [b5d8c]

  • Enable differentiation of to_world in perspective and thinlens [ea513f7] .. [ea513f]

  • Add BSDF::eval_diffuse_reflectance() to most BSDF plugins [59af884]

  • Add mi.OptixDenoiser class for simple denoising in Python [5529318] .. [55293]

  • envmap plugin can be constructed from mi.Bitmap object [9389c8d]

Other improvements

  • Major performance improvements in cuda_* variants with new version of Dr.Jit

  • Deprecated samples_per_pass parameter [8ba8528]

  • Fix rendering progress bar on Windows [d8db806]

  • obj file parsing performance improvements on Windows [28660f3]

  • Fix mi.luminance() for monochromatic modes [61b9516]

  • Add bindings for PluginManager.create_object() [4ebf700]

  • Fix SceneParameters.update() unnecessary hash computation [f57e741]

  • Fix numerical instabilities with box filter splatting [2d89762]

  • Improve math::bisect algorithm [7ca09a3]

  • Fix syntax highlighting in documentation and tutorials [5aa2716]

  • Fix Optimizer.set_learning_rate for int values [53143db]

  • Various minor improvements to the Python typing stub generation [b7ef349] .. [ad72a53]

  • Minor improvements to the documentation

  • Various other minor fixes

Mitsuba 3.0.2

September 13, 2022

  • Change behavior of <spectrum ..> and <rgb ..> tag at scene loading for better consistency between *_rgb and *_spectral variants [f883834]

  • Polarization fixes [2709889], [06c2960]

  • Add PyTorch/Mitsuba interoperability tutorial using dr.wrap_ad()

  • Fix DLL loading crash when working with Mitsuba and PyTorch in Python [59d7b35]

  • Fix crash when evaluating Mitsuba ray tracing kernel from another thread in cuda mode. [cd0846f]

  • Add stubs for Float, ScalarFloat and other builtin types [8249179]

  • Plugins regular and blackbody have renamed parameters: wavelength_min, wavelength_max (previously lambda_min, lambda_max) [9d3487c]

  • Dr.Jit Python stubs are generated during local builds [4302caa8]

  • Minor improvements to the documentation

  • Various other minor fixes

Mitsuba 3.0.1

July 27, 2022

  • Various minor fixes in documentation

  • Added experimental batch sensor plugin [0986152]

  • Fix LD sampler for JIT modes [98a8ecb]

  • Prevent rebuilding of kernels for each sensor in an optimization [152352f]

  • Fix direction convention in tabphase plugin [49e40ba]

  • Create TLS module lookup cache for new threads [6f62749]

Mitsuba 3.0.0

July 20, 2022

  • Initial release