TensorRay is a physics-based differenetiable renderer written in C++17/CUDA and running on the GPU. It is based on the theoretical framework introduced in the paper titled “Path-Space Differentiable Rendering”.
TensorRay is light-weight (compared to other modern renderers like Mitsuba 2) yet powerful (similar to PSDR-CUDA), offering the following features:
1. Vectorized computation: TensorRay uses a CUDA-based meta-programming framework to perform vectorized computations and automatic differentiation (including both forward-mode and reserve-mode AD) on the GPU using CUDA 11.5 and Jitify for just-in-time (JIT) compilation.
2. Fast GPU-based ray tracing: TensorRay uses OptiX 7.4 that leverages RTX ray tracing on modern NVIDIA graphics hardware.
3. Fast and unbiased gradients: TensorRay implements state-of-the-art algorithms that produce unbiased gradient estimates with respect to arbitrary scene parameters (e.g., object geometry and spatially varying reflectance).
4. Python bindings: TensorRay provides fine-grained Python bindings using pybind11 and can be easily integrated into Python-based scripts and learning pipelines.
This project was created at NVIDIA by Cheng Zhang and Edward Liu.
Significant features and/or improvements to the code were contributed by Lifan Wu, Kai Yan, and Shuang Zhao.