Rozdział 21 nauczył Cię liczyć niebo proceduralnie, wzorem. Ale najczęstsze źródło światła w prawdziwej produkcji to nie wzór — to zdjęcie panoramiczne. Ten dodatek pokazuje, jak jeden obraz staje się źródłem światła dla całej scenie.
W Rozdziale 15, gdy promień nie trafiał w żaden obiekt, po prostu kończył ścieżkę bez wkładu światła. Environment light zmienia to: kierunek promienia, który uciekł ze scenę, odpytuje panoramiczny obraz (HDRI — High Dynamic Range Image, żeby poprawnie reprezentować bardzo jasne słońce i bardzo ciemne cienie w jednym pliku) i zwraca jego wartość jako Le — tak, jakby całe niebo (albo cała otaczająca scena, nagrana w realnym studiu czy plenerze) było jednym, nieskończenie odległym światłem.
To odpytywanie panoramy na nowo przy każdym odbiciu ścieżki ma sens w path tracerze, który i tak liczy się minutami — ale nie w silniku renderującym 60 klatek na sekundę.
↓ Dodatek AF — jak silniki real-time robią to samo bez odpytywania panoramy co klatkęJednorodne próbkowanie kierunku (jak w podstawowym Rozdziale 15) działa źle, jeśli w HDRI jest mały, bardzo jasny obszar — widoczne słońce, okno, żarówka w kadrze zdjęcia panoramicznego. To dokładnie problem „igły w stogu siana” z Rozdziału 16, tylko teraz igła jest zaszyta w pikselach obrazu, nie w geometrii szkła.
Rozwiązanie: zbuduj rozkład prawdopodobieństwa proporcjonalny do jasności (luminancji) każdego piksela, i próbkuj dokładnie metodą odwrotnej CDF z Dodatku V — najpierw wybierz wiersz (skumulowana jasność wierszy), potem kolumnę w tym wierszu (skumulowana jasność pikseli w wierszu). To dwuwymiarowe rozszerzenie tej samej, jednej techniki.
„World Background” w Blenderze, „Skydome/HDRI light” w Arnoldzie i V-Rayu, „Env Light” w Unrealu — wszystkie robią dokładnie to. Format .hdr/.exr przechowuje pełny zakres jasności (stąd „HDR” — słońce może mieć wartość tysięcy, cień 0,01, bez utraty informacji, dokładnie jak scene-referred z Dodatku E). Jeśli render z HDRI jest wyjątkowo szumiący przy niskiej liczbie próbek, prawdopodobnie silnik nie ma włączonego (albo nie ma wcale) importance sampling po jasności obrazu — to pierwsze ustawienie do sprawdzenia.
Ostatni dodatek z tej rundy: pełny wzór funkcji fazowej Henyeya-Greensteina, nazwanej z imienia w Rozdziale 18, ale nigdy nie wypisanej.