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.9.0

June 26, 2026

  • Metal GPU backend. Mitsuba now ships metal_* and metal_ad_* variants targeting Apple Silicon GPUs with full support for Dr.Jit just-in-time compilation and hardware-accelerated ray tracing. The ray tracing core of Mitsuba was redesigned and now uses an intermediate scene representation to unify the various backends. (commit b49450, building on PR #1874, contributed by Sebastien Speierer and Wenzel Jakob).

  • Performance improvements. Optimizations in Mitsuba and its dependencies (Dr.Jit, nanobind, nanothread) improve the system’s performance significantly. Tracing and compilation are now ~2× faster. Rendering performance also saw uplift depending on the used scene features.

    • Environment maps. The envmap emitter now uses GPU hardware texture units for lookups. The underlying mitsuba.Hierarchical2D0 class for importance sampling envmaps switched to a packed memory layout and now uses vector memory loads to pull in data more efficiently. Scenes using environment maps should render noticeably faster after this change. (commits 2ad8ea, 0179ad, df71f6).

    • The ImageBlock class used for sample accumulation now uses more efficient vector atomics. The effect is most significant for simple scenes, where sample accumulation was a bottleneck. (commits 2d016b, 2f61f9, contributed by Lovro Nuic).

    • 8-bit bitmap textures. The bitmap texture now leaves LDR images in 8-bit precision instead of casting them to half precision, which conserves memory and accelerates rendering. It uses the GPU’s texture units to fetch (and if needed, decode sRGB gamma from) stored values. (commit 56ec0f).

    • Faster tracing and code generation. A comprehensive optimization pass in Dr.Jit 1.4.0 made tracing/code generation and the Python bindings roughly twice as fast, and accelerated the @dr.freeze replay path by up to ~2.5×. The latter helps realtime rendering applications that freeze the computation needed to produce a frame. (Dr.Jit-Core PR #194; see the Dr.Jit changelog for the full list of contributing commits).

    • Faster function calls. Dr.Jit now generates much better code for indirect function calls in kernels (e.g. BSDF/emitter evaluation and sampling). It tightly packs call-related data into a joint buffer, loads it using vector memory loads, and passes arguments in registers on the LLVM backend. Compilation time of kernels that call a large set of instances was reduced as well. (PR #201, commit 83207d).

    • Faster Python bindings. The Python bindings are now faster thanks to improvements in nanobind 2.13, which added instance pooling to recycle short-lived objects (1.42× faster object construction), alongside a faster function dispatcher and up to ~58% faster nd-array exchange. Dr.Jit and Mitsuba allocate large numbers of temporary objects while tracing and benefit from this. (nanobind PRs #1366, #1374, #1375).

    • Faster Image I/O. JPEG encoding/decoding switched from the bundled libjpeg to libjpeg-turbo. This makes JPEG loading 2–6× faster. (commit c8a5fb).

  • The following improvements in Dr.Jit 1.4.0 are also noteworthy and were motivated by the needs of differentiable rendering workloads in Mitsuba.

  • New struct-jit dependency. The asmjit dependency and struct.cpp (a small JIT compiler for converting flat records between formats, with sRGB/color-space conversion, dithering, quantization, etc.) were replaced by the external struct-jit project. It uses a patch-based assembler that glues together precompiled machine-code fragments and supports both x86_64 and aarch64 (the old implementation only had a JIT for x86_64 and fell back to slow software emulation on ARM). Note: the data-structure conversion API changed; projects directly using the Struct API will need adaptations. (commit 06713c).

  • Performance:

    • Migrated texture consumers to the new array-returning dr::Texture eval* API (returns a Dr.Jit array by value instead of writing through a raw pointer). (commit 44f194).

  • Miscellaneous:

  • Bug fixes:

    • Fixed a regression that disabled parallel loading of leaf scene nodes. (commit 502a82, contributed by Delio Vicini).

    • Fixed side-effect processing. (commit b9440e, contributed by Delio Vicini).

    • Fixed integer overflow issues. (commit 575b6c, contributed by Thomas Auzinger).

    • Fixed the OptiX sdfgrid shape for non-cubical domains. (commit 64175b).

    • Fixed the command line executable for scalar variants. (commit a58d49, contributed by Nicolas Roussel).

    • ImageBlock now considers the active mask in scalar backends. (commit 5f9f84, contributed by Tobias Jüterbock).

    • Upgraded the bundled nanobind dependency. (commit 21279f).

    • Various compilation fixes for MSVC and GCC. (commits f57303, 25fcd8, 4bf6f1).

Mitsuba 3.8.0

February 23, 2026

  • Upgrade Dr.Jit to version 1.3.1. This release brings several important improvements and bug fixes:

    The remainder lists Mitsuba-specific additions.

  • Improvements:

    • New conditional 1D distributions (ConditionalRegular1D and ConditionalIrregular1D) for efficient conditional probability computations, including lazy CDF computation and a traversable interface. (PR #1725, contributed by Miguel Crespo).

    • The pplastic (polarized plastic) BSDF now supports spatially varying roughness and index of refraction through texture parameters. (PR #1843, contributed by Guillermo Enguita Lahoz).

    • Significant sunsky emitter optimizations: more efficient internal memory reads and a faster importance sampling strategy. (PRs #1768, #1800, contributed by Mattéo Santini).

    • Improved function freezing support across many Mitsuba components: ellipsoids/ellipsoidsmesh shapes, batch sensor, hdrfilm, and 1D/2D distribution classes. (PRs #1791, #1816, contributed).

    • Ellipsoids bounding box computation can now be done on the JIT backend, significantly speeding up scene setup. (PR #1838, contributed by Sebastien Speierer).

    • Added a JIT-enabled version of Mesh::build_directed_edges(). (PR #1760).

    • Parser optimization: avoid re-checking visited nodes for cycles during scene loading. (PR #1842, contributed by Vincent Leroy).

    • ShapeGroup now caches parameters_grad_enabled() to avoid repeated checks. (commit 925f36, contributed by Vincent Leroy).

    • Added wheels for Python 3.14 and Linux ARM (aarch64). (PR #1807, contributed by Merlin Nimier-David).

    • Updated minimum Python version to 3.9. (PR #1814, contributed by Delio Vicini).

    • Include child properties in Mesh::to_string() output. (PR #1811, contributed by OscarLin).

  • Bug fixes:

This list is not exhaustive:
  • Fixed multiple issues in the blendbsdf plugin: incorrect PDF in sample(), missing eval_null_transmission method, and incorrect sampling weight in both blendbsdf and blendphase. (PR #1681, contributed by Baptiste Nicolet).

  • Fixed Embree memory leak in scalar modes where acceleration data structures were not properly cleaned up. (PR #1767, contributed by Delio Vicini).

  • Fixed ray_intersect_triangle in Python returning None instead of the result from the C++ call. (PR #1780, contributed by Jérémy Riviere).

  • Fixed numerical issues in AD (PRB) integrators. (PR #1818, contributed by Christian Döring).

  • Fixed bitmap textures evaluating to 0 in CUDA double-precision variants, and similarly for sdfgrid. (commits e18c16, 54cc70).

  • Fixed hide_emitters to handle custom shapes. (commit 3f968c).

  • Restored resources feature in load_dict(). (PR #1829).

  • Fixed mesh not respecting explicitly provided normals (normals would be recomputed unconditionally). (PR #1762, contributed by Delio Vicini).

  • Added missing si.compute_uv_partials(ray) for AOV type duv_dy. (PR #1772, contributed by Sebastian Winberg).

  • Fixed handling of 3x3 transforms in Properties. (PR #1764).

  • Handle differentiation through aov when no AOVs carry gradients. (commit f235aa).

  • Fixed KDTree builds on MSVC. (commit 9e542b).

  • Fixed shapegroup.h compilation when no vectorized backend is available. (commit 85ae57).

  • Handle numpy scalars in Properties. (PR #1788).

  • Fixed __repr__ for Python-created meshes. (PR #1753, contributed by Delio Vicini).

  • Fixed build compatibility with newer CMake versions. (commit eb65b9).

Mitsuba 3.7.1

September 17, 2025

  • Upgrade Dr.Jit to version 1.2.0. This release brings several important improvements and several bug fixes:

    • Event API for fine-grained GPU kernel timing and synchronization, enabling better performance profiling.

    • Enhanced CUDA-OpenGL interoperability with simplified APIs for efficient data sharing between CUDA and OpenGL.

    • Register spilling to shared memory on CUDA backend, improving performance for complex kernels with high register pressure.

    • Memory view support for zero-copy data access from Python.

    The remainder lists Mitsuba-specific additions.

  • Improvements:

    • Improved bump and normal mapping with two important fixes for more robust and artifact-free rendering. Both the bumpmap and normalmap BSDFs now include: (1) Invalid normal flipping - ensures perturbed normals are always consistent with the geometric normal by flipping shading normals when needed, following the approach in Schüssler et al. 2017 [SchusslerHHD17]. (2) Microfacet-based shadowing - smooths shadow terminator artifacts using the shadowing function from Estevez et al. 2019 [ELS19]. Both features are enabled by default but can be disabled via the flip_invalid_normals and use_shadowing_function parameters for backwards compatibility. (commit e32d71, contributed by Delio Vicini).

    • Improved sunsky documentation. (PR #1743, contributed by Mattéo Santini).

    • Added support for vcalls of Texture. (commit 6b1603).

    • Added Python bindings for field<T> types. (PR #1736, contributed by Delio Vicini).

    • Allow multiple Python objects to refer to the same Object*. (PR #1740).

  • Bug fixes:

    • Fixed bug with unintentional reordering of channels when serializing and deserializing a Bitmap with more than 10 channels. (commit e84b18, contributed by Sebastian Winberg).

    • Fixed hide_emitters behavior for area emitters in path integrator and all other integrators. (commits 3c3bf1, 075513, c967a0).

    • Fixed KDTree reference counting and shutdown procedure. (commit 14c8c9).

    • Fixed compilation issues of the KDTree. (commit 65b381).

    • Prevent NaN values for normals of triangles with zero area. (PR #1733, contributed by Delio Vicini).

    • Prevent users updating the UniformSpectrum with a float of size different than 1. (PR #1722, contributed by Mattéo Santini).

    • Added Image manipulation tutorial back in the “How-to Guides”. (commit 465609, contributed by Baptiste Nicolet).

    • Add support for JIT-freeting to the sunsky classes. (commit f07f26).

Mitsuba 3.7.0

August 7, 2025

  • Upgrade Dr.Jit to version 1.1.0. The following list summarizes major new features added to Dr.Jit. See the Dr.Jit release notes for additional detail and various smaller features that are not listed here.

    The remainder lists Mitsuba-specific additions.

  • Function freezing. Using the previously mentioned @dr.freeze feature, it is now possible to freeze functions that call mi.render(). Rendering another view (e.g., from a different viewpoint or with a different material parameter) then merely launches the previously compiled kernels instead of tracing the rendering process again. This unlocks significant acceleration when repeatedly rendering complex scenes from Python (e.g., in optimization loops or real-time applications). Some related changes in Mitsuba were required to make this possible. (PRs #1477, #1602, #1642, contributed by Christian Döring).

  • AD integrators and moving geometry. All automatic differentiation integrators have been updated to correctly handle continuous derivative terms arising from moving geometry. In particular, the continuous (i.e., non-boundary) derivative of various integrators was missing partial derivative terms that could be required in certain geometry optimization applications. The updated integrators also run ~30% faster thanks to Shader Execution Reordering (SER). (PR #1680). We thank Markus Worchel, Ugo Pavo Finnendahl, and Marc Alexa for bringing this issue to our attention.

  • Gaussian splatting. Two new shape plugins support volumetric rendering applications based on 3D Gaussian splatting: ellipsoids is an anisotropic ellipsoid primitives using closed-form ray intersection, while ellipsoidsmesh uses a mesh-based representation. The volprim_rf_basic integrator documentation integrator renders emissive volumes based on them (PR #1464, contributed by Sebastien Speierer).

  • The new sunsky plugin implements Hosek-Wilkie models for the sun and sky, where sampling of the latter is based on Nick Vitsas and Konstantinos Vardis’ Truncated Gaussian Mixture Model. (PR #1473, #1461, #1491, contributed by Mattéo Santini).

  • Shader Execution Reordering (SER). The Scene.ray_intersect() and Scene.ray_intersect_preliminary() methods now accept a reorder parameter to trigger thread reordering on CUDA backends, which shuffles threads into coherent warps based on shape IDs. Performance improvements vary by scene complexity (ranging from 0.67x to 1.95x speedup). SER can be controlled globally via the scene’s allow_thread_reordering parameter or by disabling drjit.JitFlag.ShaderExecutionReordering. Most integrators have been updated to use SER by default. (PR #1623).

  • The performance of ray tracing kernels run through the CUDA/OptiX backend was significantly improved. Previously, several design decisions kept Mitsuba off the OptiX “fast path”, which is now fixed. (PRs #1561, #1563, #1568).

  • Mitsuba now targets the OptiX 8.0 ABI available on NVIDIA driver version 535 or newer. (PR #1480).

  • Bitmap textures now use half precision by default. (PR #1478.)

  • Improvements to the mitsuba.Shape interface. (PRs #1484, #1485).

  • The Mitsuba optimizers (e.g. Adam) were removed. They are now aliases to more sophisticated implementations in Dr.Jit. (Mitsuba PR #1569, Dr.Jit PR #345).

  • The Transform API became more relaxed—for example, Transform4f.scale() and Transform4f().scale() are now both equivalent ways of creating a transformation. This removes an API break introduced in Mitsuba version 3.6.0. (PR #1638).

  • Refactoring. The codebase underwent several major refactoring passes to remove technical debt:

    1. Removal of the legacy thread system and replacement with standard C++ constructs (PR #1622).

    2. Removal of the legacy object system and replacement with standard C++ constructs; rewrite of the mi.Properties and plugin loader implementations (PR #1630).

    3. Switched to a new parser and scene IR common to both XML and dictionary parsing; further work on mi.Properties (PRs #1669, #1676)

    4. Replaced Transform4f by specialized affine and perspective transformations. (PR #1679).

    5. Pass over the test suite to accelerate CI test runs (PR #1659)

    This is part of an ongoing effort to modernize and improve legacy Mitsuba code.

  • Added an API to easily read/write tensor files from Python and access them as Dr.Jit tensor instances in Python/C++ code (PR #1705).

  • The rawconstant texture plugin stores raw 1D/3D values without any color space conversion or spectral upsampling, useful when exact numerical values need to be preserved. (PR #1496, contributed by Merlin Nimier-David).

  • Various minor improvements and fixes. (PRs #1350, #1495, #1496, #1527, #1540, #1545, #1547, #1528, #1583, #1522, #1600, #1627, #1628, #1656, #1663, #1668, #1678, #1696, and #1702).

Mitsuba 3.6.4

February 4, 2025

  • Upgrade Dr.Jit to version 1.0.5.

  • Fix normalmap 1a4bea

  • Fallback mechanism for numerical issues in silhouette sampling ce4af8

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) 338898

  • Improved bitmap construction in scalar variants 6af4d3

Mitsuba 3.6.1

January 16, 2025

  • Improve robustness of parallel scene loading 8d48f5

  • Fixes to mi.sample_tea_float fd16fb

  • Support for complex numbers or quaternions in mi.ad.Adam optimizer eff5bf

  • Improved error message when mi.load_dict fails 7db540

  • Add missing implementations for spot emitter (for AD) 11b56f

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 96e0af

  • Callback system for variant changes #1367

  • MeshPtr for vectorized Mesh method calls #1319

  • Aliases for the ArrayX types of Dr.Jit 2e86e5

  • Fix attribute evaluation for twosided BSDFs 5508ee .. 7528d9

  • A new guide for using Mitsuba 3 in WSL 2

  • batch sensors expose their inner Sensor objects when traversed with mi.traverse() #1297

  • Python stubs improvements #1260 #1238

  • Updated 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 03f5e1

Mitsuba 3.5.1

June 5, 2024

  • Upgrade Dr.Jit to [v0.4.6]

  • More robust scene clean-up when using Embree 7bb672

  • Support for AOV fields in Python AD integrators f3b427

  • Fix potential segfault during OptiX scene clean-up 0bcfc7

  • Improve and fix Mesh PMF computations ced7b2 .. 7d2951

  • Shape.parameters_grad_enabled now only applies to parameters that introduce visibility discontinuities 3013ad

  • The measuredpolarized plugin is now supported in vectorized variants 68b3a5

  • Fix an issue where the constant plugin would not reuse kernels deebe4

  • Minor changes to support Nvidia v555 drivers 19bf5a

  • Many numerical and performance improvements to the sdfgrid shape 455de4 .. 9e156b

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 97d4b6

  • Python bindings for mi.lookup_ior d598d7

  • Fixes to mask BSDF when differentiated ee87f1

  • Ray sampling is fixed when sample_border is used c10b87

  • Rename OpenEXR shared library 9cc3bf

  • Handle phase function differentiation in prbvolpath 5f9eeb

  • Fixes to linear retarder 8033a8

  • Avoid copies to host when building 1D distributions 825f44 .. 8f71fe

  • Fixes to linear retarder 8033a8

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

  • Minor fixes to ptracer which could result in illegal memory accesses 3d902a

  • 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 96b219

  • Emitters may now define a sampling weight 9a5f4c

  • Fix bsplinecurve and linearcurve shading frames 3875f9

  • Add implementation of LargeSteps method for mesh optimizations (includes a new tutorial) 48e642 .. 130ed5

  • Support for spectral phase functions c7d5c7

  • Additional resource folders can now be specified in mi.load_dict() 66ea52

  • BSDFs can expose their attributes through a generic eval_attribute method cfc425 .. c345d7

  • New sdfgrid shape: a signed distance field on a regular grid 272a5b .. 618da8

  • Support for adjoint differentiation methods through the aov integrator c9df8d .. bff5cf

  • Various fixes to prbvolpath 6d78f2, a94669 , 91b0b7

  • Curve shapes (bsplinecurve and linearcurve) always have back-face culling enabled 188b25 .. 01ea7b

  • Properties can now accept tensor objects, currenlty used in bitmap, sdfgrid and gridvolume d030a3

  • New hair BSDF shading model 91fc8e .. 0b9b04

  • Improvements to the batch sensor (performance, documentation, bug fixes) 527ed2 .. 65e044

  • 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) df940c

  • Sensors members are opaque (fixes long JIT compilation times) c864e0

  • Fix cylinder’s normals d9ea8e

  • Fix next event estimation (NEE) in volume integrators

  • mi.xml.dict_to_xml now supports volumes 15d63d

  • Allow extending AdjointIntegrator in Python 15d63d

  • mi.load_dict() is parallel (by default) bb672e

  • Upsampling routines now support box filters 64e2ab

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

  • All shapes can hold Texture attributes which can be evaluated f6ec94

  • Radiative backpropagation style integrators use less memory c1a9b8

  • New bsplinecurve and linearcurve shapes e4c847 .. 79eb02

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 afeefe

  • Fix and add missing Python bindings for Endpoint/Emitter/Sensor 8f03c7

  • Numerically robust sphere-ray intersections 7d46e1 .. 0b483b

  • Fix parallel scene loading with Python plugins 93bb99

  • 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 bdce95

  • Fix Python bindings for Scene 4cd558

  • Fix bug which would break the AD graph in spectral variants f3ac81

  • Parallel scene loading in JIT variants 48c14a .. 187da9

  • Fix sampling of hg PhaseFunction 10d351

  • Fix envmap updating in JIT variants 7bf132

  • Expose PhaseFunction of Medium objects through mi.traverse() cca579

Mitsuba 3.1.1

November 25, 2022

  • Fixed maximum limits for OptiX kernel launches a8e698

Mitsuba 3.1.0

New features

  • Enable ray tracing against two different scenes in a single kernel df79cb

  • Make ShapeGroup traversable and updatable e0871a

  • Enable differentiation of to_world in instance 54d2d3

  • Enable differentiation of to_world in sphere, rectangle, disk and cylinder b5d8c5 .. b5d8c5

  • Enable differentiation of to_world in perspective and thinlens ea513f .. ea513f

  • Add BSDF::eval_diffuse_reflectance() to most BSDF plugins 59af88

  • Add mi.OptixDenoiser class for simple denoising in Python 552931 .. 552931

  • envmap plugin can be constructed from mi.Bitmap object 9389c8

Other improvements

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

  • Deprecated samples_per_pass parameter 8ba852

  • Fix rendering progress bar on Windows d8db80

  • obj file parsing performance improvements on Windows 28660f

  • Fix mi.luminance() for monochromatic modes 61b951

  • Add bindings for PluginManager.create_object() 4ebf70

  • Fix SceneParameters.update() unnecessary hash computation f57e74

  • Fix numerical instabilities with box filter splatting 2d8976

  • Improve math::bisect algorithm 7ca09a

  • Fix syntax highlighting in documentation and tutorials 5aa271

  • Fix Optimizer.set_learning_rate for int values 53143d

  • Various minor improvements to the Python typing stub generation b7ef34 .. ad72a5

  • 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 f88383

  • Polarization fixes 270988, 06c296

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

  • Fix DLL loading crash when working with Mitsuba and PyTorch in Python 59d7b3

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

  • Add stubs for Float, ScalarFloat and other builtin types 824917

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

  • Dr.Jit Python stubs are generated during local builds 4302ca

  • 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 098615

  • Fix LD sampler for JIT modes 98a8ec

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

  • Fix direction convention in tabphase plugin 49e40b

  • Create TLS module lookup cache for new threads 6f6274

Mitsuba 3.0.0

July 20, 2022

  • Initial release