Cook-Torrance i GGX z Rozdziałów 10–11 to eleganckie, gładkie wzory — ale to wciąż tylko przybliżenie tego, co robią prawdziwe materiały. Ten dodatek pokazuje, skąd bierzemy dowód na to, jak bardzo (i gdzie) to przybliżenie się rozjeżdża z rzeczywistością — i dlaczego ten sam „Roughness = 0,3” może wyglądać zupełnie inaczej w dwóch różnych silnikach.
Cook-Torrance i GGX z Rozdziałów 10–11 to modele — matematyczne przybliżenia tego, jak zachowuje się światło na chropowatej powierzchni, wyprowadzone z uproszczonej fizyki mikrofasetek. Da się też zrobić coś zupełnie innego: wziąć prawdziwą próbkę materiału, umieścić ją w gonioreflektometrze (urządzenie obracające źródło światła i czujnik wokół próbki po tysiącach kombinacji kątów) i po prostu zmierzyć, ile światła wraca dla każdej pary kierunków L, V. Najbardziej znanym publicznym zbiorem takich pomiarów jest MERL BRDF Database — około 100 materiałów (metale, plastiki, tkaniny, farby), każdy zmierzony gęsto po kątach i zapisany jako tabela liczb, nie wzór.
Surowe dane z pomiaru miałyby cztery wymiary kątowe (kierunek L i kierunek V, każdy opisany dwoma kątami) — ogromna tabela. Rusinkiewicz (1998) pokazał, że dla materiałów izotropowych (takich, które wyglądają tak samo obrócone wokół swojej normalnej) dane da się przeparametryzować przez kąt half-vector θ_h (ten sam H z Rozdziału 5) i kąt różnicowy θ_d — w tej parametryzacji BRDF zmienia się bardzo powoli wzdłuż jednego z wymiarów, więc tabelę da się bez straty jakości skompresować drastycznie mocniej niż w surowych L,V.
Dla większości „zwykłych” materiałów — plastiku, farby, polerowanego metalu — GGX z Rozdziału 11 jest bardzo bliski temu, co pokazują zmierzone dane: gładki, symetryczny lob wokół kierunku idealnego odbicia. Problem zaczyna się przy materiałach o innej mikrostrukturze niż „losowo zorientowane mikrofasetki”. Klasyczny przykład to aksamit: włókna tkaniny stoją niemal prostopadle do powierzchni, więc światło wchodzące pod płytkim kątem odbija się głównie z powrotem w stronę, z której przyszło (retroreflection) — zupełnie inny kształt loba niż cokolwiek, co potrafi wyprodukować GGX, który zawsze ma szczyt przy idealnym odbiciu zwierciadlanym, nigdy przy powrocie do źródła.
To nie jest błąd GGX — to po prostu materiał spoza założeń, na których GGX został wyprowadzony (losowo zorientowane, nieprzezroczyste mikrofasetki). Stąd osobne, wyspecjalizowane modele „sheen” dla tkanin (m.in. w rozszerzeniu KHR_materials_sheen standardu glTF i w Principled BSDF), doklejane obok zwykłego GGX właśnie po to, żeby złapać ten dodatkowy garb.
Skoro dane zmierzone są dokładniejsze, dlaczego nie używać ich zawsze? Trzy powody, każdy praktyczny:
W praktyce dane zmierzone służą głównie jako punkt odniesienia — sprawdzasz nimi, jak bardzo Twój analityczny model się myli dla danej klasy materiałów, i albo akceptujesz różnicę, albo dokładasz wyspecjalizowany człon (jak sheen dla tkanin wyżej).
Rozdział 11 wprowadził α = roughness² — kwadrat, nie sam roughness, żeby slider czuł się bardziej liniowo percepcyjnie. To jedna, konkretna konwencja remapowania, nie fizyczne prawo. Równie ważny wzór D(H) da się podłączyć bezpośrednio pod α = roughness (bez kwadratu) — matematycznie to wciąż poprawna, energooszczędna BRDF, tylko inaczej wyskalowana. Problem: te dwie konwencje dają zupełnie inny wygląd przy tej samej liczbie na sliderze.
W praktyce dochodzi jeszcze druga oś rozjazdu: parametr „Specular” (nie mylić z roughness) bywa wystawiony jako bezpośredni IOR, jako F0 wprost (0–8% typowe dla dielektryków), albo jako skalar 0–1 przemnożony przez stały zakres (konwencja glTF/Disney: F0 = 0,08 · specular, więc domyślne specular=0,5 daje dokładnie F0≈0,04 z Rozdziału 11). Żadna z tych konwencji nie jest „poprawniejsza” — ale przenoszenie materiału między silnikami bez świadomości, która konwencja obowiązuje po drugiej stronie, jest jednym z najczęstszych źródeł „ten sam materiał wygląda inaczej po imporcie”.
Gdy przenosisz materiał między silnikami (albo porównujesz referencyjne zdjęcie z renderem), pierwsze pytanie do zadania nie brzmi „czy roughness jest za wysoki”, tylko „czy w ogóle porównuję jabłka z jabłkami” — sprawdź w dokumentacji obu narzędzi, jaką dokładnie konwencję remapowania roughness i jaką konwencję Specular/F0 stosują, zanim zaczniesz dostrajać liczby na oko.
Dodatek AC idzie w głąb tematu, który Dodatek A tylko musnął: co dokładnie dzieje się między warstwami materiału wielowarstwowego — nie tylko prosty clearcoat, ale pełna matematyka światła odbijającego się między warstwami.