Neural Product Importance Sampling via Warp Composition

Joey Litalien, Miloš Hašan, Fujun Luan, Krishna Mullia, Iliyan Georgiev
9/12/2024
cs.CVcs.GR

No confident code implementation found for this paper.

Abstract

Achieving high efficiency in modern photorealistic rendering hinges on using Monte Carlo sampling distributions that closely approximate the illumination integral estimated for every pixel. Samples are typically generated from a set of simple distributions, each targeting a different factor in the integrand, which are combined via multiple importance sampling. The resulting mixture distribution can be far from the actual product of all factors, leading to sub-optimal variance even for direct-illumination estimation. We present a learning-based method that uses normalizing flows to efficiently importance sample illumination product integrals, e.g., the product of environment lighting and material terms. Our sampler composes a flow head warp with an emitter tail warp. The small conditional head warp is represented by a neural spline flow, while the large unconditional tail is discretized per environment map and its evaluation is instant. If the conditioning is low-dimensional, the head warp can be also discretized to achieve even better performance. We demonstrate variance reduction over prior methods on a range of applications comprising complex geometry, materials and illumination.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{litalien2024neural,
  title  = {Neural Product Importance Sampling via Warp Composition},
  author = {Joey Litalien and Miloš Hašan and Fujun Luan and Krishna Mullia and Iliyan Georgiev},
  year   = {2024},
  eprint = {2409.18974},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2409.18974v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2409.18974.svg)](https://codeofpaper.com/paper/2409.18974)

Discussion