D · anisotropicLAYERS · base+coatENERGY · compensatedEXT OF · R.10–11
Dodatek A / Głębiej: Materiały

Warianty materiałów PBR

Rozdziały 10–11 dały Ci izotropowy, jednowarstwowy, jednorazowo-rozproszony GGX. To fundament, ale trzy realne materiały — szczotkowany metal, lakier samochodowy, bardzo chropowaty metal — potrzebują trzech konkretnych rozszerzeń tego samego modelu.

TL;DR
Pass: Anizotropia

Gdy roughness ma kierunek

GGX z Rozdziału 11 zakłada jeden α — fasetki rozrzucone tak samo we wszystkie strony. Szczotkowany metal, satyna, płyta CD i włosy (Rozdział 20) mają fasetki wyrównane wzdłuż konkretnego kierunku — gładsze wzdłuż rys szczotkowania, chropowate w poprzek. Trzeba rozdzielić α na dwie wartości, jedną dla każdej osi lokalnej ramki (tangenta T, bitangenta B):

D(H) = 1 / ( π·αx·αy·( (H·T/αx)² + (H·B/αy)² + (H·N)² )² )αx, αy — roughness wzdłuż T i B; αx=αy sprowadza wzór z powrotem do izotropowego GGX z Rozdziału 11
Isotropic.vs.anisotropichighlight shape
IZOTROPOWY ANIZOTROPOWY T
Ten sam kąt padania światła — kołowy błysk kontra rozciągnięty wzdłuż tangenty T.
Pass: Clearcoat

Dwie warstwy, dwa Fresnele

Lakier samochodowy, polerowane drewno, skóra — mają przezroczystą warstwę nad materiałem bazowym. Światło najpierw trafia w tę warstwę: część odbija się od razu (własny, zwykle bardzo gładki specular), reszta wchodzi do bazy, gdzie dostaje pełny model materiału z Rozdziałów 10–11 (diffuse + specular bazy), i wychodzi z powrotem przez tę samą warstwę — drugi Fresnel przy wyjściu.

Clearcoat.cross-section2 layers, 2 fresnels
clearcoat materiał bazowy Fresnel #1 (coat) pełny BRDF bazy (R.10–11) Fresnel #2 (wyjście)
Praktyczny model nie śledzi tego w pełni fizycznie — po prostu dodaje drugi, gładki lob specular na wierzch.

Produkcyjne implementacje rzadko symulują to w pełni — zamiast tego po prostu dodają drugi, niezależny, zwykle bardzo niski-roughness lob specular na wierzch pełnego BRDF bazy, ważony własnym Fresnelem. Prostsze niż prawdziwa symulacja dwuwarstwowa, a wizualnie bardzo zbliżone.

Pass: Multi-scatter

Naprawianie utraty energii

GGX z Rozdziału 11 liczy tylko jedno odbicie od mikrofasetki. Przy wysokim roughness część światła, która trafia w fasetkę odwróconą "źle", w realu odbija się do sąsiedniej fasetki i odbija ponownie, aż w końcu dotrze do widza. Model jednorazowego rozproszenia tę energię po prostu gubi — bardzo chropowate metale wychodzą sztucznie ciemniejsze, niż powinny.

Energy.compensationKulla & Conty, 2017
SINGLE-SCATTER stracona energia MULTI-SCATTER dopłacone
Wysoki roughness, ten sam materiał — fioletowy pasek to energia, którą jednorazowe rozproszenie ukradło, a wielorazowe oddaje.

Metoda Kulli i Conty'ego (2017) szacuje tę brakującą energię analitycznie — z tabeli policzonej raz, offline, w funkcji roughness i kąta — i dodaje ją jako dodatkowy, miękki lob. Coraz więcej silników (Blender Cycles, Arnold, Unreal) robi to domyślnie, bez żadnego przełącznika po stronie artysty.

Z praktyki

„Anisotropy” i „Anisotropic Rotation” w Blenderze/Unrealu/Arnoldzie to αx/αy i orientacja T z tego rozdziału. „Clearcoat” i „Clearcoat Roughness” w Principled BSDF to dosłownie drugi lob z sekcji o lakierze. Multi-scatter najczęściej nie ma własnego slidera — po prostu jest domyślnie włączony w nowszych wersjach silników.

Słowniczek
Anizotropia
Roughness zależny od kierunku wzdłuż powierzchni.
Tangenta / bitangenta (T, B)
Dwie osie lokalnej ramki na powierzchni, prostopadłe do N.
Clearcoat
Druga, niezależna warstwa specular nad materiałem bazowym.
Multi-scatter GGX
Kompensacja energii utraconej przez model jednorazowego rozproszenia.
Idź głębiej
Dodatek AO — Oscylator elektronowy: dlaczego metal, szkło i pigment odpowiadają inaczej Dodatek AB — BRDF w praktyce: zmierzone dane i parametryzacja Dodatek AC — Warstwowe materiały: pełna matematyka Dodatek AD — Importance sampling dla BRDF