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
Quick Links#
Getting Started
Install RayD and run your first ray-mesh intersection
API Reference
Complete reference for Mesh, Scene, and all query types
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.