Changelog#

v0.6.0 (upcoming release)#

New features#

  • Upstream Mitsuba rebase: The base Mitsuba version is bumped from 3.7.1 to 3.9.1. The two-version leap bring major upgrades listed in the Mitsuba release notes. This, in particular, unlocks support for Python 3.14 and higher (PR #56).

  • eoheterogeneous medium: A new heterogeneous that replicates and extends the upstream heterogeneous medium. Introduces a separate bounding box parametrization that allows the medium to have a different bounding box to the underlying sigma_t volume bbox. In turns allows to exploit the wrap mechanism of the volume and implement periodic boundaries (PR #32).

  • particlephase phase function: A polarized phase function tabulated on an irregular grid of effective radius and effective variance, each grid entry carrying its own irregular cos(theta) discretization. At a query point, one of the 4 bracketing entries is picked, weighted by its bilinear blend weight, and sampled directly. (PR #35).

  • fisheye sensor: new circular fisheye camera. A film sample is mapped to its distance from the optical centre in image-circle radii, and the selected radial projection model turns that normalized radius into an angle theta from the optical axis. Supports using real calibration data for faithful emulation of real lenses. (PR #49).

Bug fixes#

  • multiphase phase: Guard the plugin from evaluating phase function with a weight equal to zero at the interaction point. Handle the case where all phase weights are zero at the interaction point. Use the blendphase parameter format convention.

  • ocean_legacy and ocean_grasp bsdf: Add bound checks to avoid nan values due to floating point precision errors. (PR #45).

Improvements#

  • Improve the DDIS (Detector Directional Importance Sampling) variance reduction technique by generating DDIS phase functions, envelopes of the max phase function used in a medium. Implemented by piecewise and eoheterogeneous media (PR #32).

  • Implement prediction-based splitting (PBS) and N-tuple local estimate (NLE) variance reduction methods, completing work on VROOM method support in the eovolpath integrator (PR #33).

  • Add an experimental implementation for periodic boundaries of extremum grid structures (PR #34).

  • Create a new custom scene traversal function which traverses all parents of a node, not just the first one. Combine it with Eradiate’s traversal function (PR #37).

  • Reduce divergence with upstream microfacet.h by remove the angle parameter and correlated computations. This can simply be achieved by rotating the input and output vectors. Optimize the LUT generation in ocean_legacy. (PR #47).

v0.5.0 (9th June 2026)#

This release is the first to feature a full list of changes. It also contains significant upgrades on our specific tooling and documentation, including a new, Eradiate-specific docs site deployed to Read The Docs.

We introduce a first, experimental implementation of variance reduction methods targeted toward cloudy scenes. All of these changes are subject to change in the few next versions.

New features#

  • eovolpath integrator: A new volumetric path tracer that replicates and extends the upstream volpath integrator. Introduces the DDIS (Detector Directional Importance Sampling) method for improved variance reduction in participating media, as well as residual ratio tracking for transmittance estimation during emitter sampling. (PR #25, #27)

  • Extremum plugin family: This new plugin family that provides majorant/minorant bounds for a medium, enabling distance sampling using local majorants rather than a global majorant. Three implementations are provided:

    • extremum_global — spatially invariant extremum.

    • extremum_grid — grid-based extremum tracking.

    • extremum_spherical — spherical-coordinates-based extremum tracking.

    (PR #24)

  • Stokes-moment integrator: This new integrator plugin combines the moment and stokes integrators into a single implementation which retrieves both the second moment and Stokes vector components of radiance samples simultaneously. This addresses a limitation that would constrain the nesting moment and stokes to a configuration that would not allow getting the second moment of all Stokes vector components (only the intensity). (PR #29)

Improvements#

  • Volume interface: Added a min() method to the Volume interface, propagated to VolumeGrid and Texture, as required by the extremum plugins. (PR #27)

  • Medium analytical transmittance API: Renamed sample_interaction_real to sample_interaction_analytical and eval_transmittance_pdf_real to eval_analytical_transmittance, which now return the full unpolarized spectrum. Reworked the piecewise medium to compute transmittance and PDF correctly in spectral mode, with new spectral unit tests. (PR #31)

Bug fixes#

  • tabphase_polarized: Fixed out-of-sync node handling that could produce incorrect results for polarized tabulated phase functions. (PR #26)

  • piecewise_volpath: Fixed the integrator to work with non-spectral media. (PR #31)