Highlights
- Updated to Mitsuba 3.9.1 and Dr.Jit 1.5.0.
- This comes with many performance improvements.
- Added Metal backend support: Sionna RT is now GPU-accelerated on macOS.
- Added deterministic path generation to PathSolver, enabled via the deterministic flag (fixes NVlabs/sionna#1142).
- Made radio map diffraction deterministic through stable wedge ordering and storage (fixes NVlabs/sionna#1175).
- Updated radio-material models to ITU-R P.2040-4 (contributed by @jeertmans, #70).
- Reworked the diffraction model to follow the updated technical report.
Fixes and improvements
- Improved diffraction correctness:
- Applied the rough-surface reduction factor to all Fresnel coefficients used for diffraction.
- Fixed underweighted multi-transmitter diffraction maps.
- Fixed repeated material application after measurement-surface intersections.
- Fixed angular sampling weights and sampled-event probabilities.
- Fixed the diffraction matrix in RadioMaterial (contributed by @jeertmans, #68).
- Improved numerical stability near UTD and implicit-basis poles.
- Fixed planar radio-map geometry and energy calculations when map dimensions are not divisible by the cell size.
- Fixed Russian roulette and stop_threshold terminating rays at measurement-surface crossings.
- Fixed reverse-direction CIR/CFR Doppler calculations.
- Fixed normalized CFRs producing NaNs for zero-energy links.
- Fixed stale cached XPD Jones matrices after parameter traversal.
- Fixed sample_data.py behavior affecting material-parameter calibration.
- Added an option to disable mesh-cell area checks for radio maps.
- Fixed empty non-synthetic path sets losing polarization-pattern dimensions.
- Fixed
RadioMap.cdf()maximum-bin and zero-range handling. - Fixed cell-sampling APIs returning cell zero when no cell satisfies the constraints.
- Fixed
RadioMaterial.pdf()ignoring the scattered direction. - Fixed
Scene.edit(add=<dict>). - Improved validation and error reporting for solvers, radio maps, scenes, arrays, antenna patterns, and materials.
- Made tests deterministic and expanded coverage for electric fields, Jones vectors, diffraction, radio maps, scenes, cameras, antennas, and rendering.
- Made
EdgeHasherorder wedge endpoints on quantized coordinates. - Fixed
remove_mesh_duplicate_vertices()reading texture coordinates from meshes that have none. - Fixed
extend_scene_with_mesh()silently overwriting shapes with duplicate IDs. - Added validation of
BackscatteringPatternandDirectivePattern parameters. - Added validation and a well-defined single-point result to
fibonacci_lattice(). - Fixed
ITURadioMaterialrejecting an omitted thickness. - Changed
ITURadioMaterial.scattering_patternto a pattern name defaulting to Lambertian. - Simplified the Russian roulette implementation in the radio-map solver and removed dead code.
- Expanded test coverage for mesh mutation helpers.
- Make
look_at()deterministic forCamera,SceneObject, AndRadioDevicewhen the look-at direction matches z+. - Fixed coincident
look_at()targets producing NaN orientations. - Remove assumption about the implicit basis definition when evaluating antenna pattern and diffuse reflection Jones matrix.
- Make
theta_phi_from_unit_vec()deterministic when the input vector is at the pole. - Rendering and preview:
- Fixed invalid RGB color handling for radio materials and radio devices.
- Fixed camera construction with a zero orientation and
look_at. - Fixed rendering empty
Pathsobjects. - Fixed string-based transmitter selection for radio-map color bars.
- Fixed
Scene.render_to_file()skipping the sRGB conversion for TGA and BMP outputs. - Add missing rm_cmap argument to
Scene.render_to_file().
Documentation and tutorials
- Updated the EM primer to match the revised technical report.
- Fixed math-notation defects next to the diffraction equations in the EM primer.
- Fixed docstring drift across solvers, radio maps, scenes, scene objects, cameras, antenna patterns, radio devices, materials, utilities, and wedge metadata.
- Fixed unresolved Sphinx cross-references in the API pages.
- Fixed the normalization constant used in the custom scattering-pattern examples.
- Updated the custom-material guide to the current interaction-storage contract.
- Aligned validation error messages with the accepted parameter ranges.
- Restricted tutorial setup cells to installing sionna-rt on Colab when sionna itself is missing.
- Corrected API documentation, tutorials, type annotations, mathematical notation, and Sphinx references.