RayD

Differentiable GPU ray geometry and multipath simulation primitives built on OptiX and Dr.Jit

Overview#

RayD is a Dr.Jit-native GPU library for differentiable ray geometry and multipath simulation. It exposes low-level scene, ray, edge, visibility, and reflection-path queries for building custom renderers, RF simulators, acoustic tools, and inverse-design systems.

RayD is not a full renderer. It does not provide materials, emitters, integrators, scene loading, or image I/O. It gives you the geometric primitives to build those yourself.

What It Provides#

  • Differentiable ray-mesh intersection via OptiX
  • Scene-level GPU acceleration with BVH build and sync
  • Nearest-edge queries through a scene-global edge BVH
  • Primary-edge sampling for edge-based gradient terms
  • Segment visibility and multipath reflection primitives
  • Dr.Jit arrays and Dr.Jit autodiff as the public Python API

When to Use RayD#

RayD is for users who need fast differentiable geometry queries but do not want a full rendering framework. If your workload is RF propagation, acoustics, sonar, visibility analysis, or custom wave simulation, RayD gives you direct control over ray-scene queries, edge queries, reflection paths, and geometry gradients.

If you need a complete radio propagation simulator built on top of RayD, see WiTwin Channel.

AD Convention#

RayD uses Dr.Jit for autodiff. The bare class name is always the non-AD variant (Ray, Intersection). The autodiff variant carries an AD suffix (RayAD, IntersectionAD). Most scene methods accept both and dispatch automatically based on the input type.