VARIANCE · reduceNEE · every bounceMIS · balance/powerEXT OF · R.15–16
Dodatek B / Głębiej: Próbkowanie

Importance sampling i redukcja wariancji

Rozdział 15 dał Ci poprawny, ale naiwny estymator Monte Carlo. Te trzy techniki — importance sampling, next event estimation i multiple importance sampling — to różnica między szumiącym renderem po minucie i czystym po minucie. Żadna z nich nie zmienia wyniku; każda zmienia, jak szybko do niego dojdziesz.

TL;DR
Pass: Wariancja

Czemu niektóre próbki „liczą się” bardziej

Estymator z Rozdziału 15, L ≈ f·L_i·(N·L)/pdf, jest statystycznie poprawny przy próbkowaniu jednorodnym po hemisferze. Problem: jeśli f·L_i·cosθ jest silnie skoncentrowane (mały, jasny reflektor; wąski, wysoki-shininess lob specular z Rozdziału 11), większość jednorodnych próbek wypada tam, gdzie wkład jest bliski zeru, a od czasu do czasu jedna wypada w sam szczyt i wnosi ogromną wartość. Ta nierówność między próbkami — wariancja — to właśnie szum, który widzisz na ekranie.

Uniform.vs.importancesame hemisphere
JEDNORODNE IMPORTANCE SAMPLING
Ta sama liczba próbek — po lewej rozrzucone równo, po prawej skupione tam, gdzie i tak wnoszą najwięcej.
Pass: NEE

Next event estimation: nie czekaj na przypadek

Czysty path tracing z Rozdziału 15 liczy na to, że losowa ścieżka przypadkiem trafi w światło — dla małych, jasnych świateł to ten sam problem „igły w stogu siana” z Rozdziału 16. Next event estimation naprawia to najprostszym możliwym sposobem: w każdym punkcie odbicia, obok kontynuowania ścieżki próbką BRDF, wysyłasz też promień cienia (Rozdział 6) prosto do wylosowanego światła i dodajesz jego wkład bezpośrednio.

NEE.every.bounceshadow ray + brdf sample
próbka BRDF NEE: shadow ray do światła
Dwie techniki w każdym punkcie: kontynuacja ścieżki i bezpośrednia „próba” trafienia w światło.
Pass: MIS — dowód

Multiple importance sampling: dowód, nie tylko przepis

NEE świetnie radzi sobie z małymi, jasnymi światłami, ale słabo z bardzo błyszczącymi powierzchniami widzianymi pod dużym, rozmytym światłem — próbkowanie BRDF trafia tam lepiej. Żadna strategia nie jest zawsze najlepsza. MIS łączy próbki z obu strategii wagami — ale dlaczego to wciąż daje poprawny wynik, a nie tylko „rozsądny kompromis”? Dowód jest krótki i wart przejścia krok po kroku.

F = Σᵢ wᵢ(xᵢ)·f(xᵢ)/pᵢ(xᵢ), xᵢ ~ pᵢ
pod warunkiem: Σᵢ wᵢ(x) = 1 dla każdego x, gdzie choć jedno pᵢ(x)>0jedna próbka z każdej z n strategii; warunek na wagi jest jedynym wymogiem — nic więcej nie jest potrzebne do nieobciążoności
Dowód nieobciążoności — 5 linii
E[F] = Σᵢ E[wᵢ(Xᵢ)·f(Xᵢ)/pᵢ(Xᵢ)], gdzie Xᵢ~pᵢ
= Σᵢ ∫ wᵢ(x)·f(x)/pᵢ(x) · pᵢ(x) dx (definicja wartości oczekiwanej po pᵢ)
= Σᵢ ∫ wᵢ(x)·f(x) dx (pᵢ(x) się kasuje)
= ∫ f(x) · [Σᵢ wᵢ(x)] dx (zamiana kolejności sumy i całki)
= ∫ f(x) · 1 dx = I (warunek na wagi)
E[F] = I — nieobciążone dla KAŻDEGO wyboru wag spełniającego Σwᵢ(x)=1, nie tylko dla heurystyki potęgowej.
To znaczy, że wybór między heurystyką balansową (β=1) i potęgową (β=2, Rozdział wcześniejszy) nigdy nie wpływa na obciążenie — wpływa tylko na wariancję. To dwa różne pytania, często mylone.
Pass: MIS — symulacja

Dlaczego to działa: dwa scenariusze, trzy strategie

Dowód mówi „nieobciążone”, nie „lepsze”. Żeby zobaczyć realną korzyść, trzeba dwóch scenariuszy, w których każda pojedyncza strategia jest dobra w jednym, a katastrofalna w drugim — dokładnie sytuacja małego jasnego światła kontra dużego, rozmytego, z Rozdziału 16.

Ustawienie: dwie strategie, p1(x)=5x⁴ i p2(x)=1 (jednorodna), na [0,1]
Scenariusz A: f(x)=x⁸ (silnie skupione przy x=1 — jak małe, jasne światło). Prawdziwa całka I=1/9≈0,1111.
Scenariusz B: f(x)=1 (płaskie — jak duże, rozmyte światło widziane pod szerokim kątem). Prawdziwa całka I=1,0.
p1 jest „dobre” dla A (podobny kształt do f), p2 jest „dobre” dla B (idealnie płaskie, jak f w tym scenariuszu).
Wynik symulacji — 20 000 powtórzeń, wariancja estymatora
Scenariusz A (f=x⁸): p1-only var=0,00152 · p2-only var=0,02370 (15,6× gorzej niż p1) · MIS var=0,00361
Scenariusz B (f=1): p1-only var=354,24 (katastrofa) · p2-only var=≈0 (idealne trafienie) · MIS var=0,14725
MIS nigdy nie jest najlepsze — ale nigdy nie jest katastrofalne. To jest cała korzyść.
p1 samo w scenariuszu B jest 2400× gorsze niż MIS. Gdybyś nie wiedział z góry, w którym scenariuszu jesteś — a w realnej scenie nigdy nie wiesz — MIS jest jedynym bezpiecznym wyborem.
Variance.comparisonlog scale — real simulation
SCENARIUSZ A: f=x⁸ SCENARIUSZ B: f=1 p1: 0,0015 p2: 0,0237 MIS: 0,0036 p1: 354,2 p2: ≈0 MIS: 0,147
Skala logarytmiczna (bo różnice są rzędu tysięcy) — fioletowy słupek MIS nigdy nie jest ekstremalny.
Z praktyki

To nie jest zaawansowany przełącznik — to domyślne zachowanie Arnolda, RenderMana, Cyclesa, V-Raya i Redshifta. Ustawienia „Light Samples” / „Diffuse Samples” / „Specular Samples” w tych silnikach dosłownie kontrolują, ile próbek NEE i BRDF dostaje każda strategia, zanim MIS je połączy.

Słowniczek
Wariancja
Rozrzut wartości między próbkami; źródło widocznego szumu.
Importance sampling
Próbkowanie proporcjonalne do wielkości wkładu do wyniku.
Next event estimation (NEE)
Bezpośredni promień cienia do światła w każdym punkcie odbicia.
Multiple importance sampling (MIS)
Ważone połączenie kilku strategii próbkowania w jednym punkcie.
Heurystyka potęgowa / balansowa
Dwa konkretne, poprawne wybory wag MIS — różnią się wariancją, nie obciążeniem.
Warunek unormowania wag
Σᵢwᵢ(x)=1 — jedyny wymóg, żeby estymator MIS był nieobciążony.
Idź głębiej
Dodatek V — Estymatory i odwrotna CDF Dodatek Y — Environment lighting / HDRI