Dlaczego H (blinn) stosuje się zamiast R (phong) w cieniowaniu lustrzanym?


22

Nigdzie nie mogę znaleźć dobrego powodu. Wektor odbicia zastosowany w phong ma prostą podstawę w fizyce. Ale wektor połówkowy zastosowany w blinnie najwyraźniej nie ma racjonalnych podstaw i nie stanowi właściwego odzwierciedlenia. A jednak jest stosowany w każdej tak zwanej „fizycznie” funkcji cieniowania. Jeśli jest to dobra podstawa fizyczna, chciałbym wiedzieć.

To, co udało mi się znaleźć, to kilka powodów:

Jest szybszy - informacje na ten temat są mieszane, ale i tak byłby to świetny powód ... w 1998 roku.

Lepiej radzi sobie z kątami większymi niż 90 stopni - o ile mogę powiedzieć, jedynym powodem jest to, że termin phong został niewłaściwie użyty. Iloczyn iloczynu odbicia i widoku daje kąt od -1 do +1. Zwykle kąt ten jest zaciśnięty od 0 do 1, jest to bezpośrednia przyczyna problemu 90 stopni. Ponownie znormalizuj kąt zamiast go mocować, a uzyskasz pełne pokrycie 180 stopni. Nie wierzę, że prosta operacja x * 0,5 + 0,5 wymyka się światowi grafiki od 40 lat.

lepiej radzi sobie z krawędziami - „problem” krawędzi występuje również w rozwiązaniu Blinna, tylko w mniejszym stopniu. Główną przyczyną jest niewłaściwa symulacja oświetlenia obszaru na terminalu, która powinna być niezbędna dla każdego „fizycznego” modułu cieniującego. Ale nawet w prostszych sytuacjach funkcja sigmoidalna może poprawnie aproksymować miękką linię terminatora. Mnożenie wyrażenia Lambera jest nieprawidłowe, ponieważ niewłaściwie tłumi ono określenie lustrzane, może to spowodować anulowanie wyrażenia Fresnela i prowadzić do dalszych błędów.

Ma długie odbicia na krawędzi - Wydaje mi się, że chociaż odbicia anizotropowe mogą być realistyczne, blinn nie jest właściwym sposobem na ich wdrożenie, ponieważ pojawiają się tylko na brzegu. To tylko szczęśliwy zbieg okoliczności, że błąd w nazwie H wydaje się realistyczny.

Żaden z tych powodów nie jest zadowalający, chcę rozwiązać to szaleństwo.

Chcę wyjaśnić, że nie mówię o Blinn i Phong specjalnie , ale zamiast o składowych wektora H i R, które są wykorzystywane jako podstawa dla tych shaderów, jak również innych.

Odpowiedzi:


24

Dla idealnie odbijających powierzchni model Phong ma sens. Skąd jednak bierze się wartość nw (RV) ^ n modelu Phong do przybliżania szorstszych powierzchni? Gdzie jest teoria, że ​​musisz podnieść wynik iloczynu kropkowego do potęgi, z wyjątkiem tego, że wydaje się on empirycznie dawać właściwy wynik?

W przypadku modelu Blinna istnieje fizycznie oparta teoria mikropacet, która wspiera wszystkie elementy równania, a także istnieją empiryczne dowody, że model przybliża bliżej rzeczywiste powierzchnie (choć nie idealnie). Półwektor w modelu Blinna jest wykorzystywany jako dane wejściowe do funkcji rozkładu normalnego (NDF), która jest przybliżeniem rozkładu mikropacet wokół normalnej powierzchni jako funkcji chropowatości powierzchni. To znaczy, gdy wektor H wskazuje na normalny kierunek, wartość jest najwyższa, ponieważ większość mikropłatków wskazuje na ten kierunek, a prawdopodobieństwo jest odpowiednio zmniejszane, gdy zwiększa się kąt między wektorem normalnym a H.

Model Blinna nie jest jednak w żaden sposób doskonały i nie bierze na przykład określenia geometrii modelu mikropacetowego (tj. Cieniowania i maskowania mikropacetek, których znaczenie rośnie w kątach wypasu).


Nie mówię o konkretnej implementacji phonga, która faktycznie nie ma fizycznych podstaw. Ale nie widzę, w jaki sposób teoria mikrofacet wspiera H lepiej niż R jako podstawę dla wektora odbicia. Żaden model cieniowania nie jest obsługiwany empirycznie, każdy z nich nie potrafi odtworzyć prawdziwych materiałów zgodnie z „Eksperymentalną walidacją BRDF” z 2005 r. Wydaje mi się, że mikrofacety są modelowane phong za pomocą iloczynu R · V, który może służyć jako podstawa do bardziej fizycznie poprawnego podświetlenia poprzez funkcję zmiany mapowania lub rampę. Funkcja mocy jest po prostu najprostszym, najbardziej niepoprawnym mapowaniem.
BmB,

2
@BmB Nie, mikropacety nie są „modelowane w phong”, ale stosują rozkład prawdopodobieństwa mikrofacet zdefiniowanych za pomocą NDF, który jest „próbkowany” za pomocą wektora H. NDF jest zasadniczo symetryczny względem normy (izotropowej / anizotropowej), więc sensowne jest zastosowanie do niego wektora H. Powiedziałem tam, że dowody empiryczne Blinn model bardziej ściśle zbliżona do rzeczywistych materiałów świecie niż Phong.
JarkkoL,

Odbicie, które nie leży wzdłuż wektora odbicia, nie jest idealnym odbiciem lustrzanym. Produkt punktowy wytwarza wartość współczynnika odbicia dla kątów, które nie są idealne. Koniecznie muszą być one wytwarzane przez mikrofacety. Produkt kropkowy modeluje zatem mikrofacety. Prosta kropka tworzy rozkład liniowy. Ale rozkład można modelować dowolną funkcją z R równie dobrze jak H. To nie tłumaczy nic na temat poprawności H nad R.
BmB

1
@BmB Sugeruję przeczytanie na temat teorii mikrofacet, a konkretnie na temat części NDF, aby zrozumieć tę koncepcję. To pomoże ci uzyskać odpowiedź na twoje pytanie.
JarkkoL,

1
Powinieneś otworzyć nowe pytanie na temat mikrofaketów i NDF, ponieważ jest wiele rzeczy, których nie rozumiesz na temat tych pojęć, a komentarze nie są właściwym miejscem do ich wyjaśnienia.
JarkkoL

6

Właściwie myślę, że sam wymieniłeś powody, dla których Blinn jest domyślny w stosunku do Phong.

Każdy wymieniony przez ciebie powód to obszar, w którym Blinn okazuje się lepszy od Phonga.

Podsumowując, wszystko to prowadzi do tego, że Blinn jest lepszym domyślnym przeciwnikiem niż Phong.

Czy Blinn jest idealny? Czy to jest lepsze niż Phong?

Nie.

Ale jest to rozsądna wartość domyślna. Możesz zamienić Phong na Blinn w dowolnym renderze / shaderze, który napiszesz.


Zgadzam się, to jest dokładnie to. Żaden model nie jest idealny. Przybliżenie Blinna było wówczas przede wszystkim optymalizacją wydajności, ponieważ obliczenie kąta połówkowego jest znacznie tańsze. Okazało się, że przez większość czasu też wygląda lepiej.
Damon

-2

Odkryłem przyczynę zastosowania wektora H. Niestety nie jest to sposób, w jaki jest stosowany w większości modeli cieniowania, co można następnie uznać za nieprawidłowe.

W przypadku fizycznego zacienienia światło odbite musi być zgodne z równaniami Fresnela. (Większość shaderów „opartych na fizyce” tego nie robi) Mikropacety muszą również przestrzegać równań Fresnela, które zależą od kąta padania światła, a także od współczynnika załamania interfejsu, aby uzyskać poprawny wynik.

Zgodnie z prawem odbicia kąt padania musi być odzwierciedlony z kątem odbicia wzdłuż normalnej powierzchni. Aby promień światła uderzył w kamerę - jak wiemy - musiała zostać odbita od światła - w którym znamy kierunek. Zatem normalna powierzchnia musi przez dedukcję być osią lustra dla tych dwóch kierunków. To daje nam połowę wektora H, który jest pomiędzy nimi. Obliczane przez znormalizowanie sumy obu.

Teraz, obliczając kąt między kierunkiem światła L a wektorem połowy H, uzyskujemy kąt padania dla odbicia zwierciadlanego mikrofaceta i możemy go poprawnie tłumić za pomocą terminu Fresnela.

Zwróć uwagę, że kierunek widoku jest równy R dla tego mikrofacetu, H nie jest określeniem odbicia. Blinn, Cook, Torrance i Sparrow mogą go ssać. Phong i Fresnel mieli rację.


Termin Fresnela jest częścią równania BRDF mikropacety, a indywidualny mikrofacet nie bierze tego pod uwagę, ponieważ są one modelowane jako doskonałe reflektory. Nie obliczasz również kąta między wektorami L i H, ale wektorami N i H. Powinno to dać ci wskazówkę, dlaczego używa się H. Potrzebujesz nieco więcej wiedzy na ten temat, aby stwierdzić, kto miał rację, czy „więcej racji”;)
JarkkoL

Mikrofacet materiału ma takie same właściwości jak materiał. Dlatego też mikropacet niedoskonałego odbłyśnika nie może sam być idealnym odbłyśnikiem. Twoja logika jest niewłaściwa i nieprzydatna. N kropka H nie ma znaczenia fizycznego.
BmB

4
Nie, nie tak działa model mikrofacet. Moja logika jest doskonale uzasadniona, ponieważ każdy, kto rozumie nawet podstawy modelu mikrofacetowego, może to potwierdzić. Każdy mikropacet jest doskonałym odbłyśnikiem (tzn. Optycznie płaskim), a niedoskonałe odbicie materiału wynika z wariancji normalnych mikropacetek określonych przez NDF. Wasza wytrwałość w przeciwstawianiu się doskonale uzasadnionym poradom jest dość zabawna;)
JarkkoL,

Nie dałeś żadnej rady, wszystko, co zrobiłeś, to uparcie twierdzić, że masz rację i nic nie popierasz, i rzucając obelgami. H jest normą dla mikrofacet, a nie odbiciem. Odbicie można obliczyć za pomocą normalnej. Podstawowa fizyka nie zgadza się z tobą.
BmB
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.