Włos nie ma jednego koloru — ma dwa rozproszenia policzone osobno, a satyna świeci inaczej niż bawełna z powodu jednego parametru anizotropii.
PxrMarschnerHair z dosłownymi nazwami R/TT/TRT/GLINTS, i nowszy LamaHairChiang, reparametryzację tego samego modelu pod bardziej artystyczne suwaki.Włókno włosa to cienki, w przybliżeniu walcowaty, częściowo przezroczysty dielektryk: kutykula (przezroczyste, nachodzące na siebie łuski) otacza zabarwiony rdzeń. Światło trafiające w włókno rozdziela się na fizycznie różne ścieżki — model Marschnera (2003), na którym opierają się oba renderery, nazywa je wprost:
Zwykły BRDF potrafi opisać tylko odbicie od powierzchni — nie ma w nim miejsca na światło, które wnika w ośrodek, częściowo się w nim pochłania, i wraca gdzie indziej. To dokładnie ten sam strukturalny powód, dla którego skóra potrzebuje BSSRDF zamiast BRDF (Rozdziały 16–17) — różnica jest w geometrii problemu: rozpraszanie podpowierzchniowe skóry to dyfuzja po powierzchni trójwymiarowej, rozpraszanie włosa to transport wzdłuż jednowymiarowego przekroju włókna, stąd wyspecjalizowany model wielolobowy zamiast pełnego rozwiązania wolumetrycznego.
standard_hair (następca starszego hair, inny model, parametry się nie przenoszą) wystawia R/TT/TRT jako trzy oddzielnie sterowalne loby: Specular (R — pierwotne odbicie), Specular2 (TRT — drugi, barwny błysk), Transmission (TT — światło przechodzące przez włókno). Kolor da się ustawić dwiema drogami: wprost przez base_color (barwi wszystkie trzy loby jednakowo, jak farba/dye), albo fizycznie umotywowanym zestawem melaniny — melanin (0 = blond/białe, ~0,5 = brąz, 1 = czarne), melanin_redness (przesunięcie w stronę rudości) i melanin_randomize (losowa wariacja melaniny per włos, żeby uniknąć jednolitego, „plastikowego” koloru całej fryzury).
RenderMan ma w tej chwili dwa współistniejące shadery włosów, nie jeden. PxrMarschnerHair to bezpośrednia implementacja modelu Marschnera — dosłownie nazywa swoje parametry specularGainR, specularGainTRT, specularGainTT, nawet specularGainGLINTS (dodatkowy, wąski komponent połysku), plus specularConeAngle i specularEccentricity sterujące kształtem loba. Kolor nie siedzi bezpośrednio w tym node'zie — melanina trafia tam z osobnego node'a wzorca, PxrHairColor, którego wyjście zasila zarówno diffuseColor, jak i specularColor.
LamaHairChiang to nowszy, dziś rekomendowany do produkcji shader, oparty na reparametryzacji modelu Marschnera autorstwa Chianga i in. (2016, Disney Animation) — ten sam fizyczny model R/TT/TRT, ale przełożony na suwaki, które łatwiej stroić na oko, z poprawioną zbieżnością i bardziej „rurkowatą” (tube-like) odpowiedzią specularną bliższą temu, jak faktycznie zachowuje się cylindryczne włókno.
| Pojęcie | Arnold (standard_hair) | RenderMan |
|---|---|---|
| Odbicie od kutykuli (R) | Specular | PxrMarschnerHair: specularGainR |
| Transmisja przez rdzeń (TT) | Transmission | PxrMarschnerHair: specularGainTT |
| Drugi błysk (TRT) | Specular2 | PxrMarschnerHair: specularGainTRT |
| Kolor melaniny | melanin, melanin_redness | osobny node PxrHairColor |
| Shader produkcyjny „dziś” | standard_hair | LamaHairChiang (reparametryzacja Chianga 2016) |
Dwa różne zjawiska optyczne dają dwa różne „błyski” tkanin, i łatwo je pomylić. Sheen (Arnold: sheen, sheen_color, sheen_roughness) i Fuzz (PxrSurface, Rozdział 15) to miękka, rozproszona poświata pod kątem, przybliżająca zbiorowy efekt mnóstwa mikroskopijnych włókien sterczących z powierzchni — aksamit i kurz na tkaninie to podręcznikowe przypadki. To przybliżenie na poziomie BRDF, nie symulacja rzeczywistej geometrii włókien.
Kierunkowy, ostry pas błysku na satynie czy jedwabiu to zupełnie inny mechanizm: anizotropowy specular z Rozdziału 18, dokładnie ten sam specular_anisotropy/Anisotropy sterowany mapą przepływu tangenty, tylko podążającą za kierunkiem splotu tkaniny (osnowa/wątek) zamiast za rysami szczotkowania metalu. Bawełna zwykle nie ma żadnego z tych dwóch efektów w wyraźnej formie — pozostaje blisko czystego diffuse, może z odrobiną sheen od drobnych, sterczących włókien na powierzchni, bez śladu kierunkowej anizotropii, bo nie ma regularnego splotu, który mógłby ją wywołać.
LamaHairChiang.Włosy i tkaniny to detal, który w dużej mierze żyje w shaderze. Rozdział 20 przechodzi do detalu, który żyje w geometrii — displacement liczony w czasie renderu i budżet pamięci, który potrafi pochłonąć więcej niż cała reszta shota.