Neural Two-Level Monte Carlo Real-Time Rendering

Karlsruhe Institute of Technology
Eurographics, 2025 - Computer Graphics Forum

Received ⭐"Best Paper Honorable Mention"


Teaser Main Image

Reference

PT [Unbiased]

Ours [Biased]

NRC [Biased]

Ours [Unbiased]

TLTR: We present Neural Incident Radiance Cache (NIRC) for efficient fully-fused neural network-based Global Illumination integration, combined with Two-Level Monte Carlo for unbiased results - achieving variance reduction and performance improvement better than previous methods.

Abstract

We introduce an efficient Two-Level Monte Carlo (subset of Multi-Level Monte Carlo, MLMC) estimator for real-time renderingof scenes with global illumination. Using MLMC we split the shading integral into two parts: the radiance cache integral andthe 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 tiny neural networks [MRNK21] as a building block, which is trained on thefly. The cache is designed to provide a fast and reasonable approximation of the incident radiance: an evaluation takes 2-25× less compute time than a path tracing sample. This enables us to estimate the radiance cache integral with a high number ofsamples and by this achieve faster convergence. For the residual error integral, we compute the difference between the NIRCpredictions and the unbiased path tracing simulation. Our method makes no assumptions about the geometry, materials, orlighting of a scene and has only few intuitive hyper-parameters. We provide a comprehensive comparative analysis in differentexperimental scenarios. Since the algorithm is trained in an on-line fashion, it demonstrates significant noise level reductioneven for dynamic scenes and can easily be combined with other noise reduction techniques

Note: Video compression reduces visible noise. For accurate noise reduction comparison, see the paper or download the high-quality video here.

We've already got NRC... why NIRC?


Method Overview

Our Neural Incident Radiance Cache (NIRC) learns incoming light from all directions in real-time, unlike NRC [MRNK21] which predicts outgoing light. This key difference enables several advantages:

  • ⚡Immediate cache invokation at primary surface w/o additional rays, but with BSDF properties preservation 🎨
  • ⚡Multiresolution neural hash-grid sampling costs amortized across all directional samples (~70% time of original NRC)
  • 🚀With inlined invokations performance scales directly with tensor-core compute rather than bandwidth, benefiting from the recent GPU-trends and low-precision TFLOPs

  • So, if many samples invoked, a NIRC's one is cheaper in 5-10x times compared to NRC's one on average.
    Performance Comparison
    Performance study with the Bistro Exterior scene rendered on an RTX 3080 at 1080p. Path-Tracing vs NRC vs NIRC (Ours) with a few low-level optimizations.
    On-the-fly NIRC visualization for an arbitrary point in the Sponza scene

    Scalability from tensor-core compute 💻

    Marked Cache Quality Reference
    Reference
    For more details and full context, see Figure 15 in the paper, as it doesn't always scale well for noisy scenes.
    2 Layers
    MSE: 0.56, 0.84ms
    4 Layers
    MSE: 0.27, 1.24ms
    6 Layers
    MSE: 0.14, 1.64ms
    Reference
    2 Layers
    MSE: 0.23, 0.84ms
    4 Layers
    MSE: 0.21, 1.24ms
    6 Layers
    MSE: 0.13, 1.64ms
    Reference
    All timings on RTX 3080

    🤔 Two-Level Monte Carlo?


    Unbiased Explanation

    We split the rendering estimator into two parts: the Cache-Based Estimator and the Residual Error Estimator that compensates for the bias of the first one. It's similar to Neural Control Variates (NCV) [MRKN20], but NIRC does not need to predict the integral itself ⟹ no neural network architectural constraints!

    So, we can use NIRC with no bias and get a reasonable cache quality in 10-20 frames vs 100-1000 for NCV. Yes, we need to integrate over directions... but it's just 0.5-1.5ms/sample at 1080p on a RTX 4080. !

    Cache-Based Estimator: \[ {\color{#A07B3F}{\hat{L}_{c}(x, \omega_{o})}} \approx \frac{1}{N_{c}} \sum_{i=1}^{N_{c}} \frac{L_{nirc}(x, \omega_{i}, \phi,\mathbf{w})f_{r}(x,\omega_{i},\omega_{o})\cos\theta_{i}}{p(\omega_{i})}\omega_{o}) \]
    Residual Error Estimator: \[ {\color{#2CA148}{\hat{L}_{r}(x, \omega_{o})}} \approx \frac{1}{N_{r}} \sum_{i=1}^{N_{r}} \frac{(L_{i}(x, \omega_{i})-L_{nirc}(x, \omega_{i}, \phi,\mathbf{w}))f_{r}(x,\omega_{i},\omega_{o})\cos\theta_{i}}{p(\omega_{i})} \]
    Unbiased Estimator: \[ \hat{L}_{o}(x, \omega_{o}) \approx L_{e}(x, \omega_{o}) + \hat{L}_{nee}(x, \omega_{o}) + {\color{#A07B3F}{\hat{L}_{c}(x, \omega_{o})}} + {\color{#2CA148}{\hat{L}_{r}(x, \omega_{o})}} \]

    So, does it mean that NIRC is better than NRC?

    Bistro Exterior
    Bias scene plot
    Indirect Bounces



    Our research shows that the choice between NIRC and NRC depends on your specific requirements. Here's a rule of thumb:

    • Zero-bias requirement: Use NIRC with Two-Level Monte Carlo. Note that this may increase variance in complex areas like dense foliage (🌳 trees, bushes, etc).
    • Performance maximization: Invoke NRC at \(x_i\) if it provides sufficient quality. Switch to NIRC if you encounter poor GI, material property preservation issues or visible hash-grid artifacts – NIRC will save you unnecessary ray bounces that NRC would require otherwise. If both methods fail, perform another bounce and repeat the logic for \(x_{i+1}\).

    NRC | NIRC - converged renders
    You can see how much less indirect rays you need to trace by employing NIRC if the render quality satisfies your requirements.

    BibTeX

    @article{https://doi.org/10.1111/cgf.70050,
          author = {Dereviannykh, Mikhail and Klepikov, Dmitrii and Hanika, Johannes and Dachsbacher, Carsten},
          title = {Neural Two-Level Monte Carlo Real-Time Rendering},
          journal = {Computer Graphics Forum},
          volume = {44},
          number = {2},
          pages = {e70050},
          keywords = {CCS Concepts, • Computing methodologies → Ray tracing, Neural networks},
          doi = {https://doi.org/10.1111/cgf.70050},
          url = {https://onlinelibrary.wiley.com/doi/abs/10.1111/cgf.70050},
          eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1111/cgf.70050},
          abstract = {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 tiny neural networks [MRNK21] 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–25 × 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 noise reduction techniques.}
          }