A dielectric's IOR is one number. A metal's IOR is two, both wavelength-dependent — which is exactly why gold doesn't have one single "correct" specular color. IOR dielektryka to jedna liczba. IOR metalu to dwie, obie zależne od długości fali — i to dlatego złoto nie ma jednego poprawnego koloru specularu.
A dielectric's Fresnel, from raytracing-book (Chapter 7), is computed from one real index of refraction — how many percent of the light bounces off when looking straight at the surface: Fresnel dielektryka z raytracing-book (Rozdział 7) liczy się z jednego, rzeczywistego współczynnika załamania — ile procent światła odbija się przy patrzeniu wprost na powierzchnię:
For most dielectrics you meet in lookdev, this number is practically constant across the whole visible spectrum — which is why the specular on a red plastic ball is white, not red (raytracing-book, Chapter 10). A dielectric's color comes entirely from its diffuse, from selective pigment absorption under the surface, never from the specular. Dla większości dielektryków spotykanych w lookdevie ta liczba jest praktycznie stała w całym widmie widzialnym — dlatego specular na czerwonej plastikowej kuli jest biały, nie czerwony (raytracing-book, Rozdział 10). Kolor dielektryka pochodzi wyłącznie z diffuse, z selektywnej absorpcji pigmentu pod powierzchnią, nie ze specularu.
| Material | IOR | R0 (Fresnel at 0°) |
|---|---|---|
| Water | 1.33 | 2.0% |
| Plastic / resin | 1.50 | 4.0% |
| Crown glass | 1.52 | 4.2% |
| Skin (tissue) | 1.33–1.40 | 2.0–2.8% |
| Diamond | 2.42 | 17.2% |
| Materiał | IOR | R0 (Fresnel przy 0°) |
|---|---|---|
| Woda | 1,33 | 2,0% |
| Plastik / żywica | 1,50 | 4,0% |
| Szkło koronowe | 1,52 | 4,2% |
| Skóra (tkanka) | 1,33–1,40 | 2,0–2,8% |
| Diament | 2,42 | 17,2% |
Ballpark values, IOR as a single real number — the full derivation of Schlick's formula is in raytracing-book, Chapter 7. Wartości orientacyjne, IOR jako pojedyncza liczba rzeczywista — dokładne wyprowadzenie wzoru Schlicka jest w raytracing-book, Rozdziale 7.
A metal doesn't have one IOR — it has a complex index of refraction, n + ik, where the real part n governs the same thing it does for a dielectric (the phase velocity of light in the medium), and the imaginary part k, the extinction coefficient, describes how fast the wave dies out just below the surface — for a metal, in practice, almost instantly, since light never really penetrates. Both parts, n(λ) and k(λ), vary strongly and independently with wavelength. This isn't a nuance you can skip: it's exactly this mechanism that makes gold yellow and silver nearly white. raytracing-book's Appendix AO derives why — a metal's free electrons respond to light like an oscillator with no resonant frequency, and a specific color (gold, copper) adds interband transitions on top, a purely quantum effect outside the simple classical model. Metal nie ma jednego IOR — ma zespolony współczynnik załamania, n + ik, gdzie część rzeczywista n steruje tym samym, czym u dielektryka (prędkością fazową światła w ośrodku), a część urojona k, współczynnik ekstynkcji, opisuje, jak szybko fala gaśnie tuż pod powierzchnią — u metalu w praktyce natychmiast, bo światło w ogóle nie wnika do wnętrza. Obie części, n(λ) i k(λ), zmieniają się silnie i niezależnie z długością fali. To nie jest niuans do pominięcia: to dokładnie ten mechanizm sprawia, że złoto jest żółte, a srebro prawie białe. Raytracing-book, Dodatek AO wyprowadza dlaczego — swobodne elektrony metalu reagują na światło jak oscylator bez częstości rezonansowej, a konkretny kolor (złoto, miedź) dokłada jeszcze przejścia międzypasmowe, efekt czysto kwantowy, poza prostym modelem klasycznym.
↓ raytracing-book, Appendix AO — why a metal's IOR is complex and wavelength-dependent↓ raytracing-book, Dodatek AO — dlaczego IOR metalu jest zespolony i zależny od λThe practical result: a metal's head-on reflectance (the equivalent of a dielectric's R0) is no longer one number, but an R, G, B triple — and that triple is exactly what you paint as a metal's specular color. Praktyczny skutek: reflektancja metalu przy patrzeniu wprost (odpowiednik R0 dielektryka) to już nie jedna liczba, tylko trójka R, G, B — i to właśnie ta trójka jest tym, co malujesz jako kolor specularu metalu.
| Metal | Reflectance R | G | B |
|---|---|---|---|
| Gold | 1.00 | 0.77 | 0.34 |
| Copper | 0.96 | 0.64 | 0.54 |
| Aluminum | 0.91 | 0.92 | 0.92 |
| Silver | 0.97 | 0.96 | 0.92 |
| Metal | Reflektancja R | G | B |
|---|---|---|---|
| Złoto | 1,00 | 0,77 | 0,34 |
| Miedź | 0,96 | 0,64 | 0,54 |
| Aluminium | 0,91 | 0,92 | 0,92 |
| Srebro | 0,97 | 0,96 | 0,92 |
Measured reflectance at 0° (looking straight on), linear space — a commonly cited starting set in production (among others, from Naty Hoffman's physically based shading courses). Aluminum and silver are nearly neutral — which is why they read as "silvery," while gold and copper clearly don't. Zmierzona reflektancja przy 0° (patrząc wprost), przestrzeń liniowa — powszechnie cytowany zestaw startowy w produkcji (m.in. z kursów Naty'ego Hoffmana o physically based shading). Aluminium i srebro są prawie neutralne — to dlatego wyglądają „srebrzyście”, a złoto i miedź wyraźnie nie.
Neither shader forces you to type in the real n and k. Arnold gives you a metalness slider: at 1 it tints the entire specular with the color from base_color and zeroes the diffuse — an approximation, not a true complex Fresnel, but close enough that most shots never show the difference. PxrSurface goes a step further and exposes two independent colors: Specular Face Color (head-on reflectance — exactly the triple from the table above) and Specular Edge Color (reflectance at grazing angle). These aren't two arbitrary sliders — they're a specific, well-known approximation (Schlick extended with "edge tint," Gulbrandsen 2014) that reproduces the complex-IOR Fresnel curve with two colors, faithfully enough for lookdev, without ever entering a single complex number.
Żaden z shaderów nie zmusza Cię do wpisywania prawdziwych n i k. Arnold daje suwak metalness: przy wartości 1 barwi cały specular kolorem z base_color i wygasza diffuse do zera — to aproksymacja, nie prawdziwy zespolony Fresnel, ale wystarczająco dobra, żeby w większości ujęć nie było widać różnicy. PxrSurface idzie o krok dalej i wystawia dwa niezależne kolory: Specular Face Color (reflektancja patrząc wprost — dokładnie ta trójka z tabeli wyżej) i Specular Edge Color (reflektancja pod kątem, przy grazing angle). To nie przypadkowe dwa suwaki — to konkretna, znana aproksymacja (Schlick rozszerzony o „edge tint”, Gulbrandsen 2014), która dwoma kolorami odtwarza krzywą Fresnela zespolonego IOR wystarczająco wiernie dla lookdevu, bez podawania ani jednej liczby zespolonej.
PxrSurface names this outright as modes: Artistic (the default — you paint Face/Edge Color and a Fresnel Exponent controlling how fast the transition happens, the closest feel to Arnold's own workflow) versus Physical (you enter the real Specular IOR and, for metals, an Extinction Coefficient — more accurate, but n/k numbers are hard to judge by eye). Pixar's own Arnold-to-PxrSurface converter exports to Physical mode, since it can compute exact IOR/extinction numbers programmatically from Arnold's values — but for manual work, Artistic remains the more practical choice, precisely because a human can judge a color, not a complex number. PxrSurface nazywa to wprost trybami: Artistic (domyślny — malujesz Face/Edge Color i Fresnel Exponent sterujący szybkością przejścia, najbliższe workflow'owi Arnolda) kontra Physical (wpisujesz prawdziwy Specular IOR i, dla metali, Extinction Coefficient — dokładniejsze, ale liczby n/k trudno wyczuć na oko). Oficjalny konwerter Pixara z Arnolda na PxrSurface eksportuje do trybu Physical, bo potrafi policzyć dokładne IOR/extinction programowo z wartości Arnolda — ale przy ręcznej pracy tryb Artistic jest praktyczniejszym wyborem, właśnie dlatego, że człowiek potrafi ocenić kolor, a nie liczbę zespoloną.
One slider, two routesTen sam suwak, dwa sposoby
One sphere, split down the middle. The left half is driven by Arnold's Metalness slider. The right half is driven by PxrSurface's Face Color, Edge Color and Diffuse Gain — all three computed from that same one number. Jedna kula, przecięta na pół. Lewa połówka sterowana suwakiem Metalness Arnolda. Prawa połówka sterowana Face Color, Edge Color i Diffuse Gain PxrSurface — wszystkie trzy wyliczone z tej samej jednej liczby.
With Diffuse Gain zeroed, the seam disappears at every Metalness value — matching those two colors and killing the diffuse is all that one Arnold slider ever did. Switch to "Left at 1" and the seam comes back: that extra brightness on the right is exactly the washed-out, plasticky metal described above — and the seam shows you exactly how much light shouldn't be there. Przy wyzerowanym Diffuse Gain szew znika przy każdej wartości Metalness — dopasowanie tych dwóch kolorów i wygaszenie diffuse to wszystko, co ten jeden suwak Arnolda kiedykolwiek robił. Przełącz na „zostawiony na 1”, a szew wraca: ta dodatkowa jasność po prawej to dokładnie ten wyprany, plastikowy metal, o którym mowa w tekście — a szew pokazuje dokładnie, ile światła nie powinno tam być.
This chapter dealt with one specular layer. Chapter 15 adds the layers above and below it — coat, sheen/fuzz and transmission — and shows that their order in the stack isn't cosmetic, it decides whether the material conserves energy at all. Ten rozdział zajął się jedną warstwą specularu. Rozdział 15 dokłada warstwy nad i pod nią — coat, sheen/fuzz i transmission — i pokazuje, że ich kolejność w stosie nie jest kosmetyczna, tylko decyduje o tym, czy materiał w ogóle zachowuje energię.