DODATEK · GSTRUKTURA · DAGEXT OF · Rozdział 7
Dodatek G / Głębiej: Publikacja

Cache'owanie i grafy zależności w pipeline

Kiedy zmienia się jeden asset niskiego poziomu, pipeline musi wiedzieć dokładnie, co przebudować, a czego nie ruszać — dokładnie ten sam problem, który rozwiązuje make.

TL;DR

Rozdział 3 zwrócił uwagę, że zmiana płynie „w dół rzeki" — poprawka wprowadzona wysoko w łańcuchu dotyka wszystkiego, co niżej już z niej korzysta. Ten dodatek pokazuje, jak pipeline faktycznie śledzi, co dokładnie jest „niżej", żeby po zmianie jednego materiału nie trzeba było zgadywać, które sto pięćdziesiąt shotów wymaga ponownego przeliczenia.

Etap: Ten sam problem co Make

Graf zależności, nie lista plików

Programiści rozwiązują strukturalnie identyczny problem od dekad: narzędzia budujące (Make, Ninja, Bazel) modelują projekt jako graf skierowany bez cykli (DAG) — węzły to pliki źródłowe i wynikowe, krawędzie to zależności („ten plik .o zależy od tego pliku .c"). Pipeline VFX robi dokładnie to samo, tylko węzłami są opublikowane wersje (Rozdział 7): cache Alembic zależy od riga, który zależy od modelu; render shotu zależy od cache'u FX, który zależy od cache'u animacji. Krawędzie tego grafu to relacje referencji poznane w Rozdziałach 10 i 11.

Etap: Propagacja brudu

Jedna zmiana, precyzyjnie wyznaczony zasięg

Kiedy węzeł grafu dostaje nową wersję — publikacja poprawionego materiału postaci — wszystko, co od niego transytywnie zależy, zostaje oznaczone jako dirty (brudne): najpierw bezpośredni odbiorca (surfacing tej postaci), potem wszystko, co zależy od niego (każdy shot, w którym ta postać się pojawia), i tak dalej w dół grafu. Węzły, które nie leżą na żadnej ścieżce od zmienionego elementu — inny asset, inny shot — zostają nietknięte, mimo że renderowały się w tym samym showcie tego samego dnia.

Dep.graphJedna zmiana, precyzyjny zasięg
material_v3 (zmieniony) hero_char surfacing shot0100 lighting shot0400 lighting prop_car surfacing shot0200 lighting amber = dirty, wymaga przebudowy · szare = poza zasięgiem zmiany
Etap: Kto to widzi

Raport, nie cicha automatyzacja

Kuszące byłoby zbudować system, który automatycznie przebudowuje wszystko, co dirty, bez pytania nikogo — ale to ryzykowne przy operacjach kosztownych obliczeniowo, jak pełna symulacja FX. Dojrzały pipeline zamiast tego prezentuje supervisorowi albo Pipeline TD (Rozdział 21) listę tego, co dirty — „te czterdzieści shotów wymaga ponownego cache'u FX, bo zależą od zaktualizowanego riga ubrania" — zostawiając decyzję o tym, co faktycznie przeliczyć i kiedy, człowiekowi. To ta sama zasada, co unikanie cichej automatyzacji z Rozdziału 18: przewidywalność ważniejsza niż wygoda.