Quadric-Based Silhouette Sampling for Differentiable Rendering

Mariia Soroka,1,2 Christoph Peters,3,2 Steve Marschner1
1Cornell University, 2Intel, 3Delft University of Technology

ACM Transactions on Graphics (SIGGRAPH 2025)

teaser

We render the derivative w.r.t. horizontal translation of several objects observed through glossy reflections. In an equal-time comparison, we achieve much lower variance than prior work on edge sampling [Li et al. 2018]. Warped-area sampling [Bangaru et al. 2020] exhibits bias on reflections of branches and noise across object areas.

Abstract

Physically based differentiable rendering has established itself as key to inverse rendering, in which scenes are recovered from images through gradient-based optimization. Taking the derivative of the rendering equation is made difficult by the presence of discontinuities in the integrand at object silhouettes. To obtain correct derivatives w.r.t. changing geometry, accounting e.g. for changing penumbras or silhouettes in glossy reflections, differentiable renderers must compute an integral over these silhouettes. Prior work proposed importance sampling of silhouette edges for a given shading point. The main challenge is to efficiently reject parts of the mesh without silhouettes during sampling, which has been done using top-down traversal of a tree. Inaccuracies of this existing rejection procedure result in many samples with zero contribution. Thus, variance remains high and subsequent work has focused on alternatives such as area sampling or path space differentiable rendering. We propose an improved rejection test. It reduces variance substantially, which makes edge sampling in a unidirectional path tracer competitive again. Our rejection test relies on two approximations to the triangle planes of a mesh patch: A bounding box in dual space and dual quadrics. Additionally, we improve the heuristics used for stochastic traversal of the tree. We evaluate our method in a unidirectional path tracer and achieve drastic improvements over the original edge sampling and outperform methods based on area sampling.

Downloads and links

Paper
Source Code (coming soon)
Supplemental material (interactive viewer)

Acknowledgements

We would like to thank Peiyu Xu for providing the implementation of WAS (new), Nicolas Roussel for his help with the Mitsuba 3 codebase, and Anton Kaplanyan for his support of the project. The Hand (github.com/odedstein/meshes), Golden Star (skfb.ly/oU7Zq), Christmas ornaments (skfb.ly/oo7ro), and Nutcracker (skfb.ly/oAWCM) meshes are provided under the CC BY 4.0 license. This work was supported in part by the National Science Foundation under award #2212084.