Mylić z implementacjami PBR

14

Odkrywam cudowny świat matematyki i uderzam w wielką ścianę z PBR i nazwami, więc mam kilka pytań: O ile rozumiem, BRDF opisuje, w jaki sposób materiał reaguje na światło (przychodzące światło bezpośrednie i odbicia). Ale w „Cook-Torrance” nic nie widzę o odbiciach, nie rozumiem, jak je integruję, więc otrzymuję jedynie rozproszone światło i odbicia.

Dużo czytałem o różnych „rozproszonych terminach”, takich jak „Oren-Nayar”, czy jest to część Cook-Torrance, jak inne „D” w nominatorze DFG? czy zastępuje to bez obliczeń lustrzanych?

Dużo czytałem o „GGX” z mojego blendera. Pomyślałem, że to jest coś, co robi rozmyte odbicie, ale wygląda na to, że się myliłem i teraz znajduję ten termin GGX w wielu różnych sytuacjach, na przykład w normalnych aspektach dystrybucja w tym samouczku

Krótko mówiąc, pytanie brzmi: w jaki sposób „Oren-Nayar”, „GGX” i „Cook-Torrance” są ze sobą powiązane (jeśli są) i jak zintegrować „odbicie vec3” w tym algorytmie?

Jak powiedziałem wcześniej, jestem nowicjuszem w matematyce, więc jeśli twoja odpowiedź brzmi „matematyka ciężka”, proszę napisz wersję glsl / hlsl swoich równań, to jest dla mnie znacznie łatwiejsze do zrozumienia, więc równoważność bardzo mi pomoże

PS: Rozumiem, że moje pytanie jest rozmyte, ale jest równie rozmyte, jak moje rozumienie tematu.

nowy w
źródło
1
Coś, co może ci pomóc, to że „lustrzany” oznacza „lustrzany”. Mówiąc o odbiciach lustrzanych i rozproszonych, lustra oznaczają odbicia lustrzane, które ludzie zwykle nazywają odbiciami. Diffuse to „rzeczy, które się zapalają”. Odbijają także światło, ale odbijają z wielu różnych kierunków, więc nie można rozpoznać obrazu. Skala między odbiciem lustrzanym i rozproszonym w rzeczywistych obiektach jest częścią tego, parametr „chropowatości” kontroli PBR.
Alan Wolfe
Możesz spróbować przeczytać oryginalny artykuł Cook-Torrance: inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - jeśli to możliwe, sprawdź też referencje wymienione na końcu (większość z nich to dostępny online). To zajmie trochę czasu, ale jest to pewny sposób, aby zrozumieć „dogłębnie”, co się dzieje.
wycierać

Odpowiedzi:

12

DFG pojawia się w rodzinie BRDF opartych na mikropacetach. Jest to po prostu iloczyn trzech terminów:

  • D: Dystrybucja mikrofiletów.
  • F: współczynnik Fresnela.
  • G: Tłumienie geometryczne między mikropacetami.

Kiedy ktoś mówi Cook-Torrance, zwykle ma na myśli mikrofacet BRDF, w którym rozkład (D) to Beckmann, co myślę, że na tym właśnie polegał oryginalny papier Cook-Torrance.

GGX to tak naprawdę inna dystrybucja (termin D). GTR jest kolejnym. Nazwy są często używane jako skrót oznaczający BRDF korzystający z tej dystrybucji.

Teraz wszystkie z nich zakładają odbicie mikropacetek (lub załamanie światła), stąd termin Fresnela. Jeśli podejmiesz podobny pomysł, ale użyjesz rozproszonych (lambertowskich) mikropacetek, otrzymasz Oren-Nayar BRDF. Wydaje mi się, że opiera się on na gaussowskim rozkładzie mikrofacet, ale nie znam szczegółów.

Olivier
źródło
okej, to trochę bardziej jasne, ale wciąż nie wyjaśnia, co mam zrobić z moim „odbiciem vec3 Colour”, który otrzymuję od ponownego uruchomienia promienia w raytracingu / marszu lub przy użyciu SSR / cubemap. To jest jak równania uwzględniające tylko światło punktowe / punktowe, ale bez pomysłu na oświetlenie obszarowe lub odbicia. Wydaje się również, że „lustro” odnosi się tylko do „białej kropki” zamiast refleksji, ponieważ nie ma to sensu = /
newin
@newin W modelu PBR lustrzane i refleksyjne to różne nazwy dla tej samej rzeczy. Jest to szczególne odbicie, gdy promień uderza w światło, odbicie, gdy uderza w inny obiekt (lub środowisko). Jeśli chodzi o twoje odbicie Kolor, zależy to od sposobu generowania promienia. Próbujesz bezpośredniego oświetlenia? Oświetlenie terenowe? Integrujesz BRDF z mapą środowiska? Spróbuj przeczytać Postępowe śledzenie ścieżki z jawnym próbkowaniem światła , istnieje długa odpowiedź, która może wyjaśnić kilka rzeczy na temat tego procesu.
Olivier
Więc jeśli dobrze rozumiem, że „odbicie odbicia koloru vec3” powinno być traktowane jak światło, a jeśli chcę, aby światło emitujące siatkę, powinno po prostu umieścić wartość> 1 w albedo i to wszystko? (Próbuję zintegrować PBR z innym scenariuszem. Pierwszy to raymarcher, w którym chcę siatki emitujące światło, drugi to silnik gry, który używa SSR i prawdopodobnie będzie używał mapowania kostek)
newin
Światło emitowane przez @newin jest właśnie dodawane do wszystkiego innego. Nie ma to związku z BRDF. Jeśli twoja siatka nie emituje światła, nie musisz nawet śledzić z niej żadnych dalszych promieni. Duże albedo wzmocni światło (fizycznie złe), a nie wytworzy je.
Olivier