PLIK · shot0100.####.exrKANAŁÓW · 24GŁĘBIA · 32-bit float
Rozdział 13 / Wymiana danych

OpenEXR i AOV: obraz, który niesie więcej niż piksel

Beauty pass to dopiero początek — jeden plik EXR potrafi nieść dziesiątki warstw, które kompozytor złoży w cokolwiek zechce, długo po renderze.

TL;DR

Rozdział 3 nazwał lighting i compositing sąsiednimi ogniwami łańcucha — lighting renderuje, comp składa finalny obraz. Można by pomyśleć, że to, co przechodzi między nimi, to po prostu gotowy obrazek. W praktyce niemal nigdy tak nie jest: to, co lighting publikuje, to plik niosący dziesiątki osobnych, edytowalnych składników tego obrazka naraz.

Etap: Dlaczego jeden obrazek nie wystarcza

Elastyczność bez ponownego renderu

Gdyby lighting oddawał kompozytorowi wyłącznie gotowy, spłaszczony obraz, każda prośba o „trochę mniej odbić" albo „cieplejszy cień" wymagałaby powrotu do renderu — kosztownego i wolnego kroku, którego pipeline stara się unikać wszędzie tam, gdzie się da. Rozwiązaniem jest renderowanie w passach (AOV, Arbitrary Output Variables): osobno zapisany diffuse, osobno specular, osobno odbicia, załamania, cienie, ambient occlusion, a do tego dane pomocnicze — wektory normalnych, głębia (Z), identyfikatory obiektów. Kompozytor dostaje te składniki osobno i może zmienić ich proporcje ręcznie, po fakcie, bez angażowania renderera po raz drugi.

Etap: Format zaprojektowany pod ten problem

OpenEXR: więcej niż RGB

Formaty takie jak JPEG czy PNG zakładają dokładnie trzy kanały koloru i ograniczony, ośmiobitowy zakres jasności — wystarczający do wyświetlenia gotowego zdjęcia, kompletnie niewystarczający do praktyk opisanych wyżej. OpenEXR, format opracowany przez ILM i udostępniony branży na przełomie tysiącleci (poznasz tę historię bliżej w Dodatku O), został zaprojektowany od zera pod inne założenia: dowolna liczba nazwanych kanałów w jednym pliku — nie tylko R, G, B, ale też diffuse.R, specular.G, N.x, Z — oraz pełny zakres jasności zapisany jako liczby zmiennoprzecinkowe, obejmujący zarówno najciemniejszy cień, jak i jasność słońca odbitego wprost w obiektyw, bez obcinania żadnego z nich.

EXR.channelsJeden plik, dziesiątki warstw
shot0100.exr RGB diffuse specular reflect shadow N / Z crypto suma wszystkich passów = beauty
Kompozytor waży i miesza te kanały ręcznie — a ich prosta suma odtwarza dokładnie to, co zobaczyłby w jednym, niepodzielonym renderze.
Etap: Suma passów = beauty

To nie zgadywanie, to dekompozycja

Kluczowa własność większości passów: są tak zdefiniowane fizycznie, że ich zwykłe zsumowanie odtwarza dokładnie obraz beauty — czyli to, co zobaczyłbyś, gdyby renderer w ogóle nie dzielił oświetlenia na składniki. Kompozytor nie zgaduje więc, jak przybliżyć finalny wygląd — rozkłada dokładny wynik renderu na edytowalne części, zmienia proporcje któregoś z nich, i wciąż ma gwarancję, że przy neutralnych ustawieniach dostanie z powrotem to samo, co lighting zatwierdził. To właśnie ta własność sprawia, że rozbicie na passy jest praktyczne, a nie tylko teoretycznie eleganckie.

Cała ta wielokanałowa sekwencja klatek trafia do compu dokładnie tym samym mechanizmem publikacji co każdy inny wynik pracy w tej książce (Rozdział 7) — jako wersjonowany, zarejestrowany w systemie śledzenia zestaw plików, nie jako pojedynczy obrazek wysłany mailem.

Słowniczek
AOV / pass
Osobno wyrenderowany, fizycznie znaczący składnik obrazu (diffuse, specular, cień…).
Channel (kanał)
Nazwana warstwa danych wewnątrz jednego pliku obrazu, niekoniecznie kolorystyczna (np. głębia).
Beauty
Główny, złożony obraz sceny — suma wszystkich passów przy neutralnych proporcjach.
OpenEXR
Format obrazu o dowolnej liczbie kanałów i pełnym zakresie jasności, stworzony przez ILM pod potrzeby VFX.