• The Problem

    • No single sampling strategy is optimal for all situations
    • BRDF sampling: great for specular surfaces, terrible for small lights
    • Light sampling (NEE): great for diffuse surfaces, terrible for specular
    • Naively combining both: double-counts contributions → biased result
    • MIS: combine multiple strategies optimally without bias

  • The Core Idea

    • Veach & Guibas 1995 — one of the most important papers in rendering
    • Each sample gets a weight based on how likely each strategy was to produce it
    • Strategies that are “better suited” to a sample get higher weight
    • Result: low variance everywhere, no double-counting

  • MIS Estimator

    • Have n sampling strategies with PDFs p_1, ..., p_n
    • Take n_i samples from strategy i
    • MIS estimator: Î = Σ_i (1/n_i) * Σ_j w_i(x_ij) * f(x_ij) / p_i(x_ij)
    • w_i(x) — MIS weight for strategy i at sample x
    • Must satisfy: Σ_i w_i(x) = 1 for all x where f(x) ≠ 0

  • Balance Heuristic

    • w_i(x) = (n_i * p_i(x)) / Σ_j (n_j * p_j(x))
    • Provably optimal in a certain sense (Veach 1997)
    • Simple to implement
    • For equal sample counts (n_i = 1): w_i(x) = p_i(x) / Σ_j p_j(x)

  • Power Heuristic (β=2)

    • w_i(x) = (n_i * p_i(x))^β / Σ_j (n_j * p_j(x))^β
    • With β = 2: w_i(x) = p_i(x)² / Σ_j p_j(x)² (for equal sample counts)
    • Usually better than balance heuristic in practice
    • Reduces variance by suppressing contributions from poorly-suited strategies
    • Veach showed β=2 is a good practical choice

  • MIS for NEE + BRDF Sampling

    • The most common use case in path tracing
    • Strategy 1: sample light source (NEE)
      • PDF: p_light(ω) — probability of sampling direction ω via light sampling
    • Strategy 2: sample BRDF
      • PDF: p_brdf(ω) — probability of sampling direction ω via BRDF sampling
    • MIS weights (power heuristic, β=2):
      • w_light = p_light² / (p_light² + p_brdf²)
      • w_brdf = p_brdf² / (p_light² + p_brdf²)
    • Combined estimator:

  • When MIS Helps Most

    • Specular surfaces near area lights
      • BRDF sampling: good (samples specular lobe)
      • Light sampling: bad (light is large, but BRDF is narrow)
      • MIS: correctly weights BRDF samples higher
    • Diffuse surfaces near small lights
      • BRDF sampling: bad (random hemisphere, rarely hits small light)
      • Light sampling: good (directly samples the light)
      • MIS: correctly weights light samples higher
    • Environment map lighting
      • BRDF sampling: good for specular
      • Environment map sampling: good for bright regions
      • MIS: combines both optimally

  • MIS for Multiple Light Sources

    • With N lights: sample one light, weight by p_light_i / Σ_j p_light_j
    • Or: sample all lights and apply MIS weights
    • PathTracer Learning - ReSTIR — handles many lights efficiently with MIS

  • Practical Notes

    • Always evaluate p_brdf at the NEE direction and p_light at the BRDF direction
    • If p_light = 0 for a BRDF sample (e.g., light is a point): w_brdf = 1
    • If p_brdf = 0 for a NEE sample (e.g., delta BRDF): w_nee = 1
    • Handle degenerate cases: avoid division by zero