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
Mitsuba 3.6.1¶
January 16, 2025
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:
Support for Embree’s robust intersection flag [96e0af2]
Callback system for variant changes #1367
MeshPtr
for vectorizedMesh
method calls #1319Aliases for the
ArrayX
types of Dr.Jit [2e86e5e]Fix attribute evaluation for
twosided
BSDFs [5508ee6] .. [7528d9f]batch
sensors expose their innerSensor
objects when traversed withmi.traverse()
#1297Updated wheel build process with new variants #1355
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
anddirect_projective
integratorsNew curve/shadow optimization tutorial
Removed reparameterizations
Can no longer differentiate
instance
,sdfgrid
andSensor
’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
andlinearcurve
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
andlinearcurve
) always have back-face culling enabled [188b254] .. [01ea7ba]Properties
can now accept tensor objects, currenlty used inbitmap
,sdfgrid
andgridvolume
[d030a3a]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 writess, t
rather thanu, v
fields [fe4e448]All shapes can hold
Texture
attributes which can be evaluated [f6ec944]Radiative backpropagation style integrators use less memory [c1a9b8f]
New
bsplinecurve
andlinearcurve
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
andShapePtr
[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
ofMedium
objects throughmi.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
ininstance
[54d2d3a]Enable differentiation of
to_world
insphere
,rectangle
,disk
andcylinder
[b5d8c5d] .. [b5d8c]Enable differentiation of
to_world
inperspective
andthinlens
[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 frommi.Bitmap
object [9389c8d]
Other improvements¶
Major performance improvements in
cuda_*
variants with new version of Dr.JitDeprecated
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
forint
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]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
andblackbody
have renamed parameters:wavelength_min
,wavelength_max
(previouslylambda_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