
A technical article that implements a differentiable renderer using only PyTorch and explains how it works
This is a technical article in which I implemented a small differentiable renderer using only PyTorch, in order to understand how differentiable rendering works, and explained the process. I did not use existing libraries such as PyTorch3D or nvdiffrast, and the implementation is under 200 lines of code.
The renderer draws a triangle placed in 3D space by projecting it through a perspective camera. It then optimizes the camera orientation with gradient descent so that the rendered image approaches a target image. Because the test of whether a pixel is inside or outside the triangle is not differentiable as is, the article approximates it smoothly with a sigmoid function to make it differentiable.
The article is published on Zenn (in Japanese).