Release notes

What changed in each RayD release, newest first, from the project changelog.

RayD versions the rayd, rayd-drjit, and rayd-torch distributions together. Releases are tagged on GitHub and published to PyPI.

0.8.0#

Released 2026-07-30.

Added#

  • True mesh instancing: add_instance shares the source mesh's acceleration structure and gives each instance its own transform, shape id, and scene-global primitive ids. Instance transforms are differentiable and update without a rebuild. See Update geometry in place.
  • PyTorch: high-level reflection accumulation (Scene.accumulate_reflections) and EPC (Scene.trace_refl_epc, trace_refl_epc_field) APIs.
  • PyTorch: replicated multi-GPU execution (Scene(devices=[...])) now also covers diffraction paths, coherent diffraction, and reflection accumulation.
  • PyTorch: batched SDF grids (SdfGridBatch, MixedScene.add_sdf_batch).

Changed#

  • AD support is now reported per operation and per input domain, for VJP and JVP separately, in api_manifest()["derivatives"], replacing the backend-wide claim. See Differentiation.
  • PyTorch trace_refl_epc_field is explicitly forward-only until its Fresnel and polarization derivatives are implemented.
  • The rayd-torch wheel requires the PyTorch minor version it was built for: torch>=2.10,<2.11.
  • Broader single- and multi-GPU CI, Stable ABI checks, and release-artifact verification.

Fixed#

  • Restored the rayd.drjit._C type-stub layout.
  • PyTorch reflection material defaults now produce a nonzero physical field on a validated reflected path.

0.7.0#

Released 2026-07-23.

Added#

  • Automatic pure-CUDA ray-tracing fallback when OptiX is unavailable, with CUDA-fused visibility, reflection, diffraction, and multipath paths. See Backends.
  • Native RF layer-stack, transmission, scattering, penetration, and diffraction path families for C++ consumers, including source-lane diffraction path layouts (DfrPathLayout.SourceLane).
  • A validated source bundle for downstream CMake builds and a LibTorch Stable ABI slice tested with Torch 2.10 through 2.13.

Changed#

  • Wheels for Python 3.10 through 3.14 on Windows and manylinux_2_28, built with CUDA 12.8.
  • Prebuilt binaries contain native code for sm_70, sm_75, sm_80, sm_86, sm_87, sm_89, sm_90, sm_100, sm_101, and sm_120, plus compute_120 PTX.
  • The typed Torch integration API is stable; the legacy integration boundary is retired.

Fixed#

  • Finite-edge UTD continuation and gating near stationary-point and boundary transitions.
  • Races in CUDA eager queries and BVH memory, launch, and build robustness.
  • Consistency of reflection EPC, diffraction, and geometry adjoints between the Dr.Jit and Torch backends.

0.6.0#

Released 2026-07-10.

Added#

  • Explicit backend namespaces rayd.drjit and rayd.torch.
  • Separately installable rayd-drjit and rayd-torch distributions, plus the rayd meta-distribution that pins both to the same version.
  • A Torch-native C++/CUDA/OptiX backend with autograd, forward AD, torch.compile, geometry, visibility, reflection, diffraction, and EPC operations.
  • Shared native integration headers for source-linked CMake builds.

Changed#

  • rayd is a PEP 420 namespace and no longer picks or re-exports a default backend. Import rayd.drjit or rayd.torch explicitly.
  • The two backends share geometry and multipath contracts while keeping their own arrays, ownership, streams, and AD graphs.

Fixed#

  • Finite-edge coherent UTD keeps its endpoint continuation instead of cutting the field to zero when the stationary point lies outside the edge segment.
  • More robust OptiX pipeline creation, scene cache updates, accumulation, EPC bindings, and AD propagation in both backends.