Zanim zaczniesz poprawiać kontrast na ekranie, warto wiedzieć, że Twoje oko już to robi sto razy szybciej — i dlaczego cała reszta książki bierze się z tej jednej różnicy.
Wyjdź w słoneczny dzień z ciemnego pomieszczenia i przez chwilę nic nie widzisz — za jasno. Wejdź do kina w środku seansu i przez chwilę nie widzisz wolnych miejsc — za ciemno. W obu przypadkach po kilkudziesięciu sekundach do kilkunastu minut widzisz normalnie. To nie jest metafora ani ciekawostka biologiczna — to dokładnie ten sam mechanizm, który sprawia, że plik tekstury zapisany „na oko” w Photoshopie wygląda inaczej niż powinien w linear light workflow renderera (Rozdział 3), i że ten sam materiał wygląda inaczej pod HDRI ze studia niż pod ostrym słońcem (Rozdział 21). Zanim zajmiemy się matematyką, która z tego wynika, warto zobaczyć problem u źródła.
Siatkówka ma dwa typy fotoreceptorów, czułe na zupełnie różne zakresy jasności. Pręciki (rods) działają w warunkach bardzo słabego światła (widzenie skotopowe, poniżej mniej więcej 0,01 cd/m² — światło gwiazd, ciemna noc) i nie rozróżniają kolorów. Czopki (cones) przejmują w warunkach dziennych (widzenie fotopowe, powyżej ok. 3–10 cd/m² — pokój, ulica, słońce) i to one dają kolor. Między nimi jest szeroka strefa mezopowa, w której działają oba typy naraz. Żaden pojedynczy typ receptora nie obejmuje całego zakresu, w jakim funkcjonujesz w ciągu dnia — obejmuje go dopiero przełączanie między nimi.
To przełączanie to adaptacja, i zachodzi na dwóch prędkościach. Źrenica reaguje w ułamku sekundy, zmieniając ilość światła wpadającego do oka nawet szesnastokrotnie — to najszybszy, ale też najsłabszy mechanizm. Prawdziwa siła adaptacji leży w samych fotoreceptorach: pigmenty światłoczułe (rodopsyna w pręcikach) zużywają się pod wpływem światła i muszą się photochemicznie zregenerować w ciemności — proces, który dla pełnej adaptacji do ciemności zajmuje nawet 20–30 minut, podczas gdy adaptacja do jasności po wyjściu z ciemnego pomieszczenia zachodzi w kilkanaście sekund. Efekt: w każdej pojedynczej chwili masz dostęp tylko do wycinka pełnego zakresu, jaki oko potrafi w ogóle obsłużyć — reszta wymaga czasu.
To, że oko adaptuje się do różnych poziomów jasności, to dopiero połowa historii. Druga połowa dotyczy tego, jak oko rozróżnia jasności w obrębie jednego zakresu, do którego jest akurat zaadaptowane — i tu wchodzi obserwacja znana jako prawo Webera-Fechnera: najmniejsza zauważalna różnica jasności (just-noticeable difference, JND) nie jest stałą liczbą, tylko stałym stosunkiem do jasności bazowej.
Konsekwencja jest bezpośrednia: przy jasności bazowej I = 10 (jednostki umowne) oko zauważy różnicę rzędu 0,1–0,2. Przy jasności bazowej I = 1000 ta sama bezwzględna różnica 0,1–0,2 jest kompletnie niewidoczna — dopiero różnica rzędu 10–20 (ten sam stosunek 1–2%) stanie się zauważalna. Innymi słowy: w ciemnych partiach obrazu oko wyłapuje bardzo drobne różnice jasności; w jasnych partiach ta sama drobna różnica jest niewidoczna, bo ginie w tle znacznie większego sygnału.
Scałkowanie tej zależności (Fechner, 1860) daje percepcję jasności w przybliżeniu proporcjonalną do logarytmu jasności fizycznej, nie do niej samej:
To jest właściwy powód, dla którego żaden format obrazu nie zapisuje jasności liniowo względem światła fizycznego. Gdyby 256 poziomów 8-bitowego pliku rozłożyć liniowo w fizycznej jasności od czerni do bieli, większość z nich trafiłaby w jasne partie, gdzie oko i tak nie odróżnia sąsiednich poziomów — a cienie, gdzie oko jest najczulsze, dostałyby ich zaledwie kilka, za mało, żeby uniknąć widocznych pasów (banding, Rozdział 12). Gamma i log (Rozdział 5) rozkładają te same 256 czy 1024 poziomy tak, żeby z grubsza odpowiadały krokom, które oko faktycznie rozróżnia — czyli w przybliżeniu równomiernie w skali logarytmicznej, nie liniowej.
Zanim mówić o zakresach liczbowo, potrzebna jest jednostka. W kolorystyce i fotografii tą jednostką jest stop — jeden stop to podwojenie (albo połowa) ilości światła. Stopy nie dodają się jak procenty, tylko jak potęgi dwójki: różnica dwóch stopów to nie „dwa razy większa różnica” niż jeden stop, tylko czterokrotna różnica jasności. Do tej jednostki wrócimy szczegółowo w Rozdziale 9 — tu wystarczy, żeby porównać cztery zakresy na wspólnej skali:
Ten rozdział nie pokazał jeszcze ani jednego node'a, ale ustawił trzy założenia, do których będzie wracać każdy kolejny rozdział:
Wiesz już, dlaczego percepcja i zapis obrazu są nieliniowe. Następny rozdział pokazuje drugą stronę tego samego medalu: dlaczego wzory, które renderer faktycznie liczy — Lambert, Fresnel, GGX — muszą działać na liczbach liniowych, i co się dosłownie psuje na obrazie, kiedy ktoś wrzuci do nich liczby zakodowane gamma.