„Ile trójkątów mogę sobie pozwolić?” to źle postawione pytanie. Ray tracing ma dwa zupełnie różne budżety kosztu geometrii — jeden rośnie zaskakująco wolno, drugi zaskakująco szybko. Ten dodatek rozdziela je.
Rozdział 13 pokazał, że dobre BVH zamienia test O(n) na O(log n) na promień. To ma konkretną, policzalną konsekwencję: zwiększenie sceny z 1000 do 10 milionów trójkątów — 10 000 razy więcej geometrii — head głębokość drzewa z ~10 do ~23 poziomów. Nie 10 000 razy więcej pracy. Odczuwalnie więcej, ale nieproporcjonalnie mało.
To dobra wiadomość dla trawersowania. Zła wiadomość: budowa tego drzewa (Rozdział 13/Dodatek C) i jego rozmiar w pamięci rosną dużo szybciej — z grubsza liniowo do proporcjonalnie-do-n-log-n, nie logarytmicznie. Dla sceny animowanej, przebudowywanej co klatkę, to właśnie budowa, nie trawersowanie, zwykle najpierw uderza w limit czasu klatki.
Displacement i adaptacyjna subdywizja (Rozdział 4 rozszerzony) potrafią zamienić skromną siatkę kontrolną w miliardy mikro-trójkątów w momencie renderu — mapa wysokości nakładana na płaską płaszczyznę może wygenerować więcej geometrii niż cała reszta sceny razem wzięta. To właśnie ustawienia „dicing rate” / „subdivision iterations” w Arnoldzie i RenderManie kontrolują ten kompromis: więcej szczegółu kontra większe, droższe BVH.
Rozdział 17 pokazał, że instancing pozwala tysiącom kopii dzielić jedną siatkę i jedno BVH. To realnie oszczędza pamięć i czas budowy. Nie oszczędza jednak pracy trawersowania — każda widoczna instancja wciąż wymaga własnego testu ray-AABB (Rozdział 13) i, jeśli trafiona, własnego zejścia w dzielone BVH. Las z 10 000 identycznych drzew jest tani w pamięci, ale niekoniecznie tani w czasie renderu, jeśli promień musi sprawdzić większość z nich.
Kiedy render zwalnia po dodaniu detalu, sprawdź, co faktycznie wzrosło: jeśli to czas „Building BVH” / „Updating Acceleration Structure” w logu renderu — to budowa, jednorazowy koszt na klatkę, poprawiany przez lepszy SAH albo cache’owanie BVH dla statycznej geometrii. Jeśli to czas samego renderu przy tej samej liczbie próbek — to prawdziwe trawersowanie, i warto sprawdzić, czy naprawdę tyle instancji jest widocznych, czy część można zredukować proxy/LOD-em pod GI.
Dodatek J przenosi to samo pytanie na drugą stronę równania: nie geometria, którą promień trafia, a sieć shaderów, którą musi policzyć w tym punkcie.