Zaczęliśmy od pytania „jak to ma wyglądać”. Kończymy na zatwierdzonym looku, przechodząc raz jeszcze przez każdy rozdział tej książki na jednej, konkretnej scenie.
Pusta scena, pierwszy import assetu. Zanim ktokolwiek dotknie shadera, dwie decyzje muszą już być podjęte: w jakiej przestrzeni barw renderer liczy shading (Rozdział 3 — linear light workflow, working space ACEScg z Rozdziału 4), i przez jaki config OCIO przechodzi każdy odczyt tekstury i każdy podgląd na ekranie (Rozdział 6). To nie jest formalność do odhaczenia — jeśli working space jest źle ustawiony, żadna liczba z dalszych rozdziałów nie będzie znaczyć tego, co powinna znaczyć. Rozdział 2 tłumaczył dlaczego w ogóle to ma znaczenie: oko i ekran widzą jasność inaczej niż matematyka renderera ją liczy, i cała reszta książki bierze się z tej jednej różnicy. Rozdział 5 domyka ostatnią lukę — krzywe transferu, które tłumaczą liczbę zapisaną w pliku na liczbę liniową, zanim cokolwiek innego się zacznie.
Pierwszy podgląd sceny prawie nigdy nie wygląda dobrze od razu — nie dlatego, że materiały są źle zbudowane, tylko dlatego, że ekspozycja i kontrast review'u jeszcze nie są dostrojone. Tu wchodzi grading z Rozdziałów 7–9: offset, gain i gamma jako trzy niezależne operatory (Rozdział 7), ASC CDL jako wspólny język między DIT-em na planie a kolorystą w gradingu (Rozdział 8), ekspozycja liczona w stopach i kontrast liczony wokół pivotu, nie wokół zera (Rozdział 9). Rozdział 10 dokłada ostatni element — saturację, obrót barwy i białe wyważenie — operatory, które jako pierwsze świadomie patrzą na relację między kanałami R, G i B, a nie tylko na wartość każdego z osobna. Kluczowe rozróżnienie z tego aktu: grading na tym etapie poprawia to, jak patrzysz na scenę, nie to, z czego zbudowany jest materiał — to dwa różne pokrętła, i mylenie ich to najczęstszy błąd początkującego lookdev artysty.
Zanim którakolwiek mapa trafi do shadera kurtki, każdy plik tekstury musi mieć poprawnie ustawiony przełącznik kolor/dane z Rozdziału 11 — albedo skóry i wełny jest sRGB, ale roughness, normal i maska metalowego suwaka to surowe dane, których nie wolno dekodować jak koloru. Rozdział 12 dorzuca drugą, równie łatwą do przeoczenia pułapkę: 8-bitowa tekstura w przestrzeni liniowej potrafi rozpaść się na widoczne pasy w cieniach, zanim jeszcze trafi do renderera — dlatego niektóre kanały (displacement, promień SSS) muszą być float, a inne, jak proste albedo, mogą bezpiecznie zostać 8-bitowe.
Rozdział 13 dał wspólny słownik dla obu silników — aiStandardSurface i PxrSurface jako ten sam stos warstw pod dwiema różnymi nazwami. Skórzana kurtka to podręcznikowy dielektryk: niski, bezbarwny Fresnel na powierzchni plus kolorowy diffuse z pigmentu garbowanej skóry pod spodem (Rozdział 14). Mosiężny suwak to metal — zero diffuse, cały kolor w zespolonym IOR specularu, dlatego mosiądz ma swój charakterystyczny żółtawy odcień odbicia, a nie neutralnie srebrny. Nad samą skórą kurtki siada jeszcze cienka, błyszcząca warstwa wosku czy lakieru — coat z Rozdziału 15, ułożony nad bazowym BRDF-em we właściwej kolejności, żeby nie złamać zachowania energii w sposób, który zobaczysz dopiero na turntable'u pod ostrym światłem.
Odkryta skóra dłoni i twarzy to jedyne miejsce w tej scenie, gdzie potrzebny jest pełny aparat z Rozdziałów 16–17: promień SSS per kanał RGB w Arnoldzie albo diffuseMeanFreePath w RenderManie — dwie nazwy tej samej wielkości fizycznej, którą trzeba świadomie skalować do jednostek sceny, żeby dłoń nie wyglądała jak wosk albo jak plastik. Skóra to w dodatku nie jeden materiał, tylko stos warstw o różnej głębokości rozpraszania, z osobnym, cieńszym specularem na wierzchu i drobnymi niedoskonałościami (pieprzyki, pory), które muszą być nieregularne, żeby iluzja się nie rozsypała pod bliskim planem.
Rozdział 18 wraca do suwaka z bliska — szczotkowany metal ma kierunkowy, rozciągnięty błysk zamiast kołowego, bo roughness nie jest już jedną liczbą, tylko dwiema, wzdłuż i w poprzek rys szczotkowania. Szklane guziki płaszcza łamią to samo założenie transmisji co szkło w witrynie sklepu — potrzebują transmission_color i transmission_depth świadomie dobranych do grubości obiektu, nie domyślnej wartości. Wełniany szalik z Rozdziału 19 to sheen (Arnold) albo fuzz (RenderMan) — miękka, rozproszona poświata na krawędziach włókien, sterowana zupełnie innym parametrem niż specular reszty materiałów w scenie.
Szwy, ziarno skóry i drobne pofałdowania kurtki nigdy nie siedzą w geometrii bazowej — dochodzą displacementem z Rozdziału 20, obliczanym w czasie renderu z tekstury wysokościowej. To jest dokładnie to miejsce, gdzie pole, którego żaden preset nie zgadnie (padding albo bound, zależnie od silnika) trzeba wypełnić ręcznie — za mała wartość i detal zostaje ucięty na krawędzi bounding boxa, za duża i pamięć znika bez potrzeby.
Cała ta konstrukcja jest oceniana pod konkretnym, skalibrowanym rigiem HDRI (Rozdział 21) — inny rig ze studia, inny z zachmurzonego nieba, i to, co widać, zmienia się za każdym razem, mimo że shader się nie zmienił. Turntable z Rozdziału 22 to test, który wyłapuje materiał wyglądający świetnie z jednego kąta, a rozpadający się pod innym światłem — coat na kurtce albo anizotropia na suwaku to klasyczne kandydatury do niespodzianek przy obrocie. Kiedy coś w końcu wygląda źle — powiedzmy, specular na mosiężnym suwaku jest podejrzanie za jasny — pytanie z Rozdziału 23 nie brzmi „który suwak zmienić”, tylko „w którym AOV widać winowajcę”: rozbicie na diffuse/specular/coat/SSS mówi wprost, czy problem jest w Fresnelu metalu, w oświetleniu, czy w gradingu z Aktu II, do którego być może trzeba wrócić.
Ten sam asset trafia teraz do silnika — i to jest moment, w którym Część VIII przestaje być teorią. Fizyka się nie zmienia: mosiądz dalej jest metalem z zespolonym Fresnelem, skóra dalej jest dielektrykiem z pigmentem pod powierzchnią, dłonie dalej potrzebują rozproszenia podpowierzchniowego. Zmienia się budżet (Rozdział 24) — cała klatka ma 16,6 ms, a stały układ G-Buffera decyduje, które z warstw z Rozdziału 15 w ogóle mogą istnieć per piksel. Coat na kurtce, sheen na szaliku i anizotropia na suwaku, które w Arnoldzie były trzema lobami jednego shadera, w klasycznej ścieżce silnika są trzema różnymi modelami cieniowania, a w Substrate — trzema slabami z własnym budżetem bajtów na piksel (Rozdział 25).
Grading z Aktu II odnajduje się w Post Process Volume, pod etykietami Saturation, Contrast, Gamma, Gain i Offset — czyli w ASC CDL z Rozdziału 8, tyle że tym razem nałożonym na gotowy produkt, bez etapu, na którym ktokolwiek mógłby go jeszcze cofnąć (Rozdział 26). Zanim jednak którakolwiek z tych liczb zacznie cokolwiek znaczyć, trzeba wyłączyć auto-ekspozycję — inaczej przyciemnienie skóry kurtki i przyciemnienie całej sceny dają po adaptacji ten sam obraz. Tekstury, które w VFX były po prostu plikami, stają się blokami 4×4 w BC5, BC7 i BC4, a mapa roughness szalika bez korekty z mapy normalnych zacznie iskrzyć, gdy tylko postać odejdzie od kamery (Rozdział 27).
I na koniec zmienia się sam moment zatwierdzenia. W Akcie III look był zatwierdzany na turntablu, pod jednym rigiem. Tutaj gracz sam prowadzi kamerę, sam wybiera porę dnia i sam gra na nieskalibrowanym telewizorze — więc zatwierdza się nie klatkę, tylko zakres: kurtkę w południe i o zmierzchu, z bliska i dwa LOD-y dalej, na najwyższym i na najniższym presecie jakości. A jeśli silnik ma path tracer albo drugi, wierniejszy tryb renderowania (Rozdziały 25 i 28), to różnica między nim a widokiem realtime jest jedyną uczciwą listą tego, co ten look w rzeczywistości przybliża.
Dwadzieścia osiem rozdziałów, jedna kurtka, jeden suwak, jeden szalik i para dłoni — i każdy z nich przeszedł przez tę samą pętlę: linear light, grading, tekstury, warstwy shadera, ocena pod światłem, poprawka, jeszcze raz. To jest cała treść lookdevu jako dyscypliny: nie jednorazowa recepta, tylko powtarzalny proces, który działa identycznie niezależnie od tego, czy materiał na ekranie to skóra, mosiądz, wełna czy szkło — i, jak pokazała Część VIII, niezależnie od tego, czy renderer ma na jego policzenie dwadzieścia minut, czy szesnaście milisekund. Dodatki A–W czekają tam, gdzie ten epilog (i każdy rozdział przed nim) musiał zatrzymać się na wzorze i przykładzie koncepcyjnym, zamiast schodzić w pełne wyprowadzenie.