Jak właściwie połączyć terminy rozproszone i lustrzane?


18

O ile rozumiem, w BRDF termin Fresnela mówi nam o prawdopodobieństwie odbicia lub załamania fotonu po uderzeniu w powierzchnię.

Odbite fotony przyczynią się do określenia lustrzanego, a te załamane - do składnika rozproszonego. Dlatego, określając w sposób fizyczny udział światła w kolorze materiału, mam ochotę po prostu napisać:

// Assuming for example:
//   diffuse = dot(L, N);
//   specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0;
//   fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0);
color = lightIntensity * Lerp(diffuse * albedo, specular, fresnel);

Jednak nie sądzę, żebym kiedykolwiek widział to tak napisane. Widziałem, że określenie zwierciadlane jest ważone zgodnie z określeniem Fresnela, ale nie rozproszonym. W swoim szeroko cytowanym artykule na temat PBR Sébastien Lagarde stwierdza nawet, że użycie (1-fa) do ważenia terminu rozproszonego jest nieprawidłowe.

czego mi brakuje?
Z wielką radością przyjąłbym wyjaśnienie, które w oczywisty sposób podkreśla, dlaczego byłoby to nieprawidłowe.

Odpowiedzi:


14

Użycie dwóch terminów Fresnela jest poprawne w tym sensie, że każda dana ścieżka rozproszona przejdzie dwukrotnie przez powierzchnię. Jeśli rozwiązujesz dyfuzję, śledząc ścieżkę przez medium, dopóki nie odbije się ona ponownie, otrzymasz dwie (lub więcej) warunki Fresnela dla tej ścieżki, gdy wchodzi ona w interakcję z powierzchnią.

Jednak nie to robisz z rozproszonym BRDF. Rozproszony BRDF ma reprezentować średnią ze wszystkich możliwych ścieżek dyfuzji. W przypadku Lambertausa ta średnia jest modelowana jako równomierne odbicie i pojedyncza wartość albedo mierząca wewnętrzną utratę energii podczas dyfuzji, ale możliwe są bardziej skomplikowane modele. Co najważniejsze: rozproszony BRDF będzie już uwzględniał łączny efekt niektórych ścieżek odbijanych z powrotem do ośrodka w celu dalszego rozproszenia, a niektóre z nich natychmiast znikają. jest już „pieczone w” do BRDF¹ i nie trzeba czynnik go ponownie.1-faout

Pojęcie Lamberta nie obejmuje części energii, która jest tracona w wyniku odbicia, zanim światło dostanie się do ośrodka dyfuzji. Jest to zależne od widoku, ale zależy od precyzyjnego błyszczącego płata nad nim. Nie ma strat energii na interfejsie powierzchniowym (niemetalowym), więc wszystko, co nie zostanie odbite, zostanie załamane, co oznacza, że ​​tak naprawdę chcesz zintegrować całkowitą utratę energii na powierzchni we wszystkich kierunkach wychodzących, tj. .1-błyszczący_bsdf(w,na zewnątrz)rena zewnątrz

Możliwe jest wstępne obliczenie przybliżeń tej całki dla określonych BRDF. Wynik końcowy będzie ogólnie zależeć co najmniej od kierunku widoku, szorstkości materiału i IOR. Jako pierwsze przybliżenie można założyć, że błyszczący płat jest idealnie odbłyśnikiem. Daje to wagę , czyli dokładnie to, co najpierw zasugerowałeś.1-lśniącyrena zewnątrz=1-fajan

Dodatkowo należy zauważyć, że Lambertowskie BRDF to albedo podzielone przez i że cosinus oznacza miarę tłumienia przychodzącego światła na powierzchni; dotyczy to zarówno błyszczącego, jak i rozproszonego współczynnika odbicia.π

Z grubsza:

// Assuming for example:
//   diffuse = albedo / PI;
//   specular = my_favorite_glossy_brdf(in_dir, out_dir, roughness);
//   fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0);
//   total_surface_reflection = fresnel
color = lightIntensity * dot(L, N) * Lerp(diffuse, specular, total_surface_reflection);

fa


8

Podczas przeglądania, aby poprawnie napisać moje pytanie, znalazłem odpowiedź , która jest bardzo prosta.

Inny termin Fresnela również będzie się ważył, gdy fotony będą wydostawać się z materiału (a więc załamywane w powietrze) i staną się elementem rozproszonym. Zatem poprawnym czynnikiem dla terminu rozproszonego byłoby:

(1-fajan)(1-faout)

1
Papier Disney BRDF punkt 5.3 odnosi się do równania w swojej odpowiedzi, a następnie przechodzi do określenia innego modelu. Nie twierdzę, że to rozumiem, ponieważ właśnie rozpocząłem moją błyszczącą implementację BRDF!
PeteUK

Sądzę, że będzie to kontynuowane odtąd, gdzie światło, które jest odbijane wewnętrznie, uderzy w powierzchnię ponownie od wewnątrz, po przeciwnej stronie, a następnie znowu i znowu, za każdym razem, zmniejszając się, w nieskończoność: P (lub w sub hehe rozproszenia powierzchni)
Alan Wolfe

Jak obliczyć kolejny termin Fresnela?
plasmacel
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.