Skip to main content

SoftRasterizer

vgit-2019

Differentiable mesh renderer using soft rasterization for gradient flow through occlusion boundaries

DifferentiableRasterization
Python/CUDA
MIT
Inactive
GPU: CUDA
Stars
1.3k
Latest Releasegit-2019
Release DateDec 2019
Contributors5
Forks210
At a Glance
Technique
Differentiable, Rasterization
Language
Python/CUDA
License
MIT
Platforms
Linux
GPU Support
Yes (CUDA)
CPU Support
No
Scene Formats
OBJ
Output Formats
Tensor, PNG
First Release
Apr 2019
Latest Release
git-2019 — Dec 2019
Best For
Understanding the foundations of differentiable mesh rendering and reproducing the original SoftRas paper results

Development Activity

1.3k
Stars
git-2019
6 years ago
5
Contributors
View on GitHub

Overview

Best for

Understanding the foundations of differentiable mesh rendering and reproducing the original SoftRas paper results

Not ideal for

Production differentiable rendering pipelines — use PyTorch3D or nvdiffrast instead, which offer better performance, broader features, and active maintenance

Strengths

  • Pioneered the soft rasterization approach to differentiable rendering — the foundational concept has been adopted by PyTorch3D, and the paper (NeurIPS 2019) is cited by over 500 subsequent works in differentiable rendering and 3D reconstruction
  • Clean, readable research code that maps directly to the paper's mathematical formulation, making it an excellent educational reference for understanding how differentiable rasterization works at a fundamental level
  • Supports both silhouette-based and shaded image supervision, enabling gradient-based mesh reconstruction from single or multi-view 2D images without 3D ground truth
  • MIT license allows unrestricted use in both academic research and commercial applications

Limitations

  • Research prototype with no ongoing maintenance — the repository has seen no updates since 2019, and compatibility with recent PyTorch and CUDA versions is not guaranteed
  • Limited shading model restricted to basic Phong shading — no PBR materials, environment maps, or advanced lighting, limiting the visual realism of rendered outputs
  • Performance has been significantly surpassed by PyTorch3D and nvdiffrast, which offer optimized CUDA kernels with hardware-accelerated rasterization
  • Requires NVIDIA CUDA-capable GPU with no CPU fallback, limiting accessibility on non-NVIDIA hardware
  • Supports only triangle meshes via OBJ loading — no point clouds, volumes, curves, or other geometry types

Background

SoftRasterizer (SoftRas) introduced the concept of soft rasterization for differentiable mesh rendering, enabling gradients to flow through the traditionally non-differentiable rasterization process. Published at NeurIPS 2019 by Shichen Liu, Tianye Li, Weikai Chen, and Hao Li from the University of Southern California and Pinscreen, it replaces the hard pixel-face assignment in standard rasterization with a probabilistic (soft) assignment based on a sigmoid-like aggregate function, making the entire rendering pipeline differentiable with respect to vertex positions, colors, and normals.

The core insight is elegant: by treating each triangle's influence on a pixel as a smooth probability rather than a binary occupancy, SoftRas enables gradient-based optimization of 3D mesh geometry from 2D image supervision. This was one of the earliest works to demonstrate end-to-end differentiable mesh rendering and directly influenced the design of PyTorch3D's differentiable rasterizer, nvdiffrast, and other subsequent systems in the differentiable rendering ecosystem.

As a research prototype, SoftRasterizer provides a clean, readable implementation that maps closely to the paper's mathematical formulation. It supports silhouette-based and shaded image supervision with basic Phong shading and per-vertex colors. The codebase remains widely cited (500+ papers) and serves as an important historical reference for understanding differentiable rendering, though production users are better served by more actively maintained tools like PyTorch3D or nvdiffrast that have adopted and extended its foundational ideas.

Quick Start

Visit the repository for installation instructions for SoftRasterizer.

View Repository

Community & Resources

Performance Benchmarks

No benchmark data available for SoftRasterizer yet.

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

Learn about our methodology