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.


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.


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
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.