Σ · suma skończona∫ · suma ciągłaΩ · hemisferaMC · przybliżenie próbkami
Zanim zaczniesz

Podstawy matematyczne

Kilka rozdziałów dalej trafisz na wzory z Σ i ∫, które mogą wyglądać przytłaczająco, jeśli nie liczyłeś całek od lat (albo nigdy). Ta strona nie jest kursem analizy matematycznej — to piętnaście minut, które wystarczą, żeby te symbole przestały być magią i stały się tym, czym naprawdę są: bardzo prostą ideą, tylko zapisaną gęstym językiem.

TL;DR
Pass: Suma

Σ to tylko pętla

Zacznijmy od czegoś, co już znasz z Rozdziału 8: uśredniasz N próbek na piksel, żeby wygładzić krawędzie. Gdybyś to zapisał tak, jak zapisałbyś kod, wyglądałoby to tak:

wynik = (próbka_1 + próbka_2 + próbka_3 + ... + próbka_N) / N

Matematycy piszą dokładnie to samo krócej — zamiast wypisywać wszystkie składniki, piszą jeden ogólny wzór na „składnik numer i” i mówią, dla jakiego zakresu i go dodawać:

wynik = (1/N) · Σᵢ₌₁ᴺ próbkaᵢΣᵢ₌₁ᴺ czytaj: „zsumuj to, co następuje, dla i od 1 do N” — to dokładnie ta sama pętla for, tylko zapisana symbolem zamiast słowem kodu

To wszystko. Σ nie robi nic, czego nie robi zwykła pętla sumująca w kodzie — to skrót notacyjny, nie nowa operacja matematyczna. Zobaczysz ją w tej postaci w kilku miejscach książki (m.in. w składaniu modelu oświetlenia w Rozdziale 5 i w importance sampling w Dodatku B).

Pass: Całka

∫ to Σ dla listy, która nie ma końca

Σ dodaje skończoną listę — próbkę 1, 2, 3, ..., N. Ale niektóre pytania w renderingu nie mają skończonej listy do zsumowania. „Ile światła dociera do tego punktu ze wszystkich kierunków hemisfery nad nim?” — kierunków w hemisferze jest nieskończenie wiele, każdy nieskończenie „wąski”. Nie da się ich ponumerować od 1 do N i dodać jak próbek na piksel.

Całka to odpowiedź na dokładnie ten problem: sumowanie po zakresie ciągłym, nie liście dyskretnych elementów. Zamiast „dodaj wartość dla każdego i od 1 do N”, całka mówi „dodaj wkład z każdego nieskończenie małego kawałka zakresu”:

∫_Ω f(ω) dωΩ — cały zakres, po którym sumujemy (tu: hemisfera kierunków); ω — konkretny kierunek w tym zakresie; dω — jeden nieskończenie mały „kawałek” tego zakresu; f(ω) — wartość, którą sumujemy dla tego kawałka

Czytaj to dosłownie jak Σ z poprzedniej sekcji, tylko z trzema różnicami: indeks i zamienia się w ciągłą zmienną ω, zakres „od 1 do N” zamienia się w „cały obszar Ω”, a krok sumowania (dawniej po prostu „1 kolejny element”) zamienia się w dω — nieskończenie mały kawałek tego obszaru. To jest dokładnie to ∫_Ω ... dω_i, które zobaczysz w równaniu renderowania w Rozdziale 15 — i dokładnie dlatego ma przycisk „Wyjaśnij ten wzór” bezpośrednio pod sobą. Symbol pod całką nie zawsze nazywa się dosłownie ω — w Rozdziale 10 zobaczysz dokładnie tę samą ideę zapisaną jako dL (kąt bryłowy wokół konkretnego, już nazwanego kierunku L, zamiast ogólnego ω). Nazwa się zmienia, idea nie.

Pass: Jak to się liczy naprawdę

Renderer nie liczy całek — zgaduje je

Tu jest sedno, które łączy tę stronę z resztą książki: dla prawdziwej sceny nie istnieje wzór, który dałby dokładną wartość całki z poprzedniej sekcji — jest zbyt skomplikowana (zależy od geometrii, materiałów, świateł, wszystkiego naraz). Więc renderer robi coś sprytnego: przybliża całkę skończoną sumą losowych próbek — czyli wraca do Σ, tylko próbki są losowe, a nie kompletną listą.

Żeby to zobaczyć na liczbach: udawajmy, że hemisfera ma tylko 4 możliwe kierunki (w rzeczywistości jest ich nieskończenie wiele, ale zasada się nie zmienia), a każdy niesie inną ilość światła:

kierunek 1: wkład = 0,10   kierunek 2: wkład = 0,40   kierunek 3: wkład = 0,05   kierunek 4: wkład = 0,25średnia (czyli przybliżenie całki) = (0,10+0,40+0,05+0,25) / 4 = 0,20

Jedna próbka (np. tylko kierunek 2) dałaby 0,40 — daleko od prawdziwej średniej 0,20. Cztery próbki dają dokładnie 0,20. W prawdziwej scenie kierunków jest nieskończenie wiele, więc żadna skończona liczba próbek nie da wyniku idealnie dokładnego — ale im więcej próbek, tym bliżej. To jest dosłownie to, co dzieje się, gdy podnosisz „Samples” w Arnoldzie, Cyclesie czy V-Rayu: więcej próbek = przybliżenie całki bliższe prawdzie = mniej szumu na obrazie. Pełną wersję tej historii — dlaczego próbki są losowe, nie równomiernie rozstawione, i jak wybrać je mądrzej — znajdziesz w Rozdziale 15 i Dodatku B.

Ściągawka notacji
Σ
Suma po skończonej liście elementów.
∫
Suma po ciągłym zakresie — nieskończenie wiele nieskończenie małych wkładów.
Ω
Cała hemisfera kierunków nad punktem powierzchni.
ω (omega)
Jeden konkretny kierunek; dω — nieskończenie mały „kawałek” kierunku wokół niego. Czasem nazwana po tym, co reprezentuje — np. dL w Rozdziale 10.
Indeksy i / o / e
przychodzące (incoming) / wychodzące (outgoing) / emitowane (emitted) — np. L_i, L_o, L_e w Rozdziale 15.
α (alfa)
W tej książce prawie zawsze: roughness² — zobacz Rozdział 11.
θ (theta)
Kąt, najczęściej mierzony od normalnej powierzchni.
σ (sigma)
Współczynnik — np. ekstynkcji ośrodka w Rozdziale 18.
η (eta)
Stosunek współczynników załamania (IOR) dwóch materiałów — Rozdział 7.