PROBLEM · causticsBDPT · 2-sidedPHOTON MAP · k-d treeMIS · weighted
Rozdział 16 / Globalne oświetlenie

Bidirectional path tracing i photon mapping

Path tracing z Rozdziału 15 jest statystycznie poprawny — ale są sceny, w których zbiega się boleśnie wolno. Ten rozdział pyta: co, gdy losowe próbkowanie z kamery praktycznie nigdy nie znajduje drogi do światła?

TL;DR
Pass: Problem

Igła w stogu siana

Path tracing z Rozdziału 15 próbkuje kierunek według BRDF w każdym punkcie trafienia i liczy na to, że ścieżka trafi na światło. To działa świetnie dla dużych, rozproszonych świateł. Zawodzi dla kaustyk — światła skoncentrowanego przez szkło albo wodę w wąski snop — bo trafienie w to konkretne, wąskie okno kierunków przez czysty przypadek jest astronomicznie nieprawdopodobne.

Needle.in.haystackcaustic through glass
szkło kaustyka P 1 na milion prób
Pięć zwykłych próbek trafia w pustkę. Tylko jedna, bardzo konkretna, przechodzi przez szkło do światła.
Pass: BDPT

Bidirectional path tracing: budowanie z dwóch stron

Skoro trudno znaleźć drogę do światła z kamery, spróbuj też w drugą stronę: wystrzel ścieżkę ze światła, tak jak wystrzeliwałeś ją z kamery w Rozdziale 15 — te same odbicia, ta sama BRDF, tylko odwrócony start. Potem połącz oba końce w jedną kompletną ścieżkę światła, ważąc różne strategie łączenia tak, żeby wynik pozostał statystycznie poprawny (multiple importance sampling, MIS).

↓ Dodatek B — co to jest MIS, z dowodem
BDPT.connectioncamera path + light path
ścieżka z kamery ścieżka od światła połączenie
Dwie krótkie, łatwe do wylosowania ścieżki, połączone jednym odcinkiem — łatwiej niż jedna długa, trudna do trafienia.
Pass: Photon mapping

Photon mapping: najpierw rozsiej, potem zbieraj

Photon mapping idzie o krok dalej: w pierwszym przebiegu wystrzeliwuje mnóstwo „fotonów” ze świateł w scenę i zapisuje, gdzie wylądowały (w strukturze przestrzennej, zwykle k-d tree) — kaustyki tworzą się same, po prostu tam, gdzie geometria naturalnie skupia dużo fotonów. W drugim przebiegu, z kamery, w każdym punkcie trafienia zbierasz (gather) foton z najbliższego sąsiedztwa, żeby oszacować lokalną gęstość światła.

Photon.scatter.gather2-pass algorithm
gather radius szkło
Fotony gęstnieją tam, gdzie szkło je skupia — kaustyka „wyłania się” sama, bez próbkowania z kamery.
Z praktyki

To dlatego renderery produkcyjne (Arnold, RenderMan, V-Ray) mają osobne ustawienia „Caustics” — czysty path tracing z Rozdziału 15 zostawiony sam sobie potrzebowałby milionów próbek, żeby wygładzić kaustykę na dnie basenu; dedykowany photon mapping albo BDPT robi to w rozsądnym czasie.

Koszt: obie techniki są bardziej złożone implementacyjnie i pamięciowo niż prosty path tracing — photon mapping przechowuje całą mapę fotonów, BDPT liczy znacznie więcej strategii łączenia na próbkę. W praktyce większość scen renderuje się dobrze samym path tracingiem; te techniki włącza się tam, gdzie to naprawdę potrzebne.

Słowniczek
Kaustyka
Skoncentrowane światło przechodzące przez szkło/wodę, tworzące jasny wzór.
Bidirectional path tracing (BDPT)
Budowanie ścieżek z kamery i ze światła, łączonych pośrodku.
Multiple importance sampling (MIS)
Ważenie kilku strategii próbkowania, żeby żadna nie dominowała błędnie.
Photon mapping
Dwuprzebiegowy algorytm: rozsiew fotonów ze świateł, zbieranie z kamery.
Gather (zbieranie)
Szacowanie gęstości światła z fotonów w promieniu wokół punktu.
Idź głębiej
Dodatek B — Importance sampling, MIS (z dowodem) Dodatek W — Transformacja między rozkładami Dodatek Y — Environment lighting / HDRI Dodatek AN — MLT, ReSTIR i rekonstrukcja neuronowa