Skip to main content

DEODR

v0.1.17

C-based differentiable mesh renderer with both PyTorch and TensorFlow interfaces for 3D-from-2D optimization

DifferentiableRasterization
C/Python
BSD-2-Clause
Maintenance
CPU
Stars
200
Latest Release0.1.17
Release DateJun 2023
Contributors3
Forks30
At a Glance
Technique
Differentiable, Rasterization
Language
C/Python
License
BSD-2-Clause
Platforms
Linux
macOS
Windows
GPU Support
No
CPU Support
Yes
Scene Formats
OBJ, Programmatic
Output Formats
PNG
First Release
Jan 2020
Latest Release
0.1.17 — Jun 2023
Best For
CPU-based differentiable mesh rendering and 3D-from-2D optimization on machines without CUDA-capable GPUs, or when dual PyTorch/TensorFlow support is needed

Development Activity

200
Stars
0.1.17
2 years ago
3
Contributors
View on GitHub

Overview

Best for

CPU-based differentiable mesh rendering and 3D-from-2D optimization on machines without CUDA-capable GPUs, or when dual PyTorch/TensorFlow support is needed

Not ideal for

High-resolution or large-scale differentiable rendering where GPU acceleration is available — use PyTorch3D or nvdiffrast for production GPU workflows

Strengths

  • Only differentiable mesh renderer in the ecosystem that runs entirely on CPU — no CUDA or GPU required, making it accessible on Apple Silicon Macs, CI servers, and any hardware where NVIDIA GPUs are unavailable
  • Unique dual-framework support: the C core is wrapped for both PyTorch and TensorFlow, plus a pure NumPy/SciPy mode, allowing researchers to use their framework of choice without changing the rendering backend
  • Clean pip installation with no CUDA compilation step — eliminates the setup friction that plagues most differentiable rendering tools, where CUDA toolkit version mismatches are a common source of hours-long debugging
  • BSD-2-Clause license is maximally permissive, and the C core enables potential embedding in non-Python environments or lightweight edge deployment

Limitations

  • CPU-only rendering is orders of magnitude slower than GPU-based alternatives for high-resolution images or meshes exceeding tens of thousands of faces — not viable for large-scale training loops common in modern differentiable rendering research
  • Minimal shading model limited to Lambertian reflectance with directional lighting — no PBR materials, environment maps, or global illumination effects
  • Very small community with limited documentation, few tutorials, and no dedicated support channels — users must rely on the repository README and source code
  • Feature set is sparse compared to PyTorch3D or nvdiffrast — no support for point clouds, volumetric data, advanced material models, or multi-view rendering utilities
  • Edge-based occlusion handling may produce different gradient characteristics than soft rasterization or nvdiffrast's approach, which can affect optimization convergence in some scenarios

Background

DEODR (Differentiable Estimator of Optical properties through Differentiable Rendering) is a unique differentiable mesh renderer whose core is implemented in C rather than CUDA. Developed by Martin de La Gorce, it stands apart from every other differentiable renderer in the ecosystem by running entirely on CPU, making it the only option that works on machines without NVIDIA GPUs — including Apple Silicon Macs, CI servers without GPUs, and lightweight laptops.

The renderer supports triangle mesh rasterization with vertex colors and texture mapping, computing derivatives with respect to vertex positions, colors, texture, camera parameters, and lighting parameters. Its edge-based approach to handling occlusion boundaries differs from SoftRasterizer's probabilistic assignment and nvdiffrast's hardware-accelerated approach, offering a third perspective on the problem of differentiable visibility. DEODR's most distinctive feature beyond CPU portability is its dual-framework support: the C core is wrapped for both PyTorch and TensorFlow, plus a pure NumPy/SciPy mode for environments without deep learning frameworks. This three-way interface is unmatched by any other differentiable renderer.

The trade-off is performance — CPU rendering is significantly slower than GPU-based alternatives for large scenes — but for moderate-scale problems (meshes with fewer than 100K faces at moderate resolution), the hardware accessibility and framework flexibility are genuine advantages. DEODR is installable via pip with no CUDA compilation step, eliminating the setup friction that plagues most differentiable rendering tools. The BSD-2-Clause license is maximally permissive, and the C core enables potential embedding in non-Python environments.

Quick Start

pip install deodr

Community & Resources

Performance Benchmarks

No benchmark data available for DEODR yet.

Benchmarks will be added as more renderers are tested across our standard scene suite.

Learn about our methodology