Neural Two-Level Monte Carlo Real-Time Rendering

Mikhail Dereviannykh, Dmitrii Klepikov, Johannes Hanika, Carsten Dachsbacher
12/5/2024
cs.GRcs.AI

No official code found. Best implementation: Mishok43/IVD_NIRC (2 stars, last commit 2026-01-20).

Abstract

We introduce an efficient Two-Level Monte Carlo (subset of Multi-Level Monte Carlo, MLMC) estimator for real-time rendering of scenes with global illumination. Using MLMC we split the shading integral into two parts: the radiance cache integral and the residual error integral that compensates for the bias of the first one. For the first part, we developed the Neural Incident Radiance Cache (NIRC) leveraging the power of fully-fused tiny neural networks as a building block, which is trained on the fly. The cache is designed to provide a fast and reasonable approximation of the incident radiance: an evaluation takes 2-25x less compute time than a path tracing sample. This enables us to estimate the radiance cache integral with a high number of samples and by this achieve faster convergence. For the residual error integral, we compute the difference between the NIRC predictions and the unbiased path tracing simulation. Our method makes no assumptions about the geometry, materials, or lighting of a scene and has only few intuitive hyper-parameters. We provide a comprehensive comparative analysis in different experimental scenarios. Since the algorithm is trained in an on-line fashion, it demonstrates significant noise level reduction even for dynamic scenes and can easily be combined with other importance sampling schemes and noise reduction techniques.

View on arXivView PDF

Code Implementations(1)

Mishok43/IVD_NIRCCommunity74%

Neural Two-Level Monte Carlo Real-Time Rendering

22C, C++Jan 9, 20269 months ago

Similar Papers

Cite this paper

@article{dereviannykh2024neural,
  title  = {Neural Two-Level Monte Carlo Real-Time Rendering},
  author = {Mikhail Dereviannykh and Dmitrii Klepikov and Johannes Hanika and Carsten Dachsbacher},
  year   = {2024},
  eprint = {2412.04634},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2412.04634v1}
}

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/2412.04634.svg)](https://codeofpaper.com/paper/2412.04634)

Discussion