Renderowanie oparte na fizyce
Jesteś na dobrej drodze, kiedy mówisz „stara się naśladować sposób, w jaki światło odbija się w prawdziwym życiu, czyli zwykle dzieli się na dwa elementy, zwierciadlane i rozproszone w zależności od rodzaju materiału”.
Ale od dłuższego czasu modelujemy materiały z połyskiem i rozproszone w grach i grafice komputerowej. Sztuką jest to, że traktowaliśmy te rzeczy jako całkowicie niezależne - zmiana specularity nie zmieniła rozproszenia:
To jest przykład cieniowania Phong z wiki Blendera . Widać, że oferuje on dwa parametry intensywności i twardości, i parametry te zmieniają tylko białawą część odbicia. Niebieskie rozproszone odbicie w ogóle się nie zmienia.
Sposób, w jaki gry wykorzystałyby to, jest zadaniem artysty polegającym na ręcznym dostrajaniu tych wartości dla każdego materiału, dopóki „nie będzie wyglądał dobrze”. Ponieważ „twardość zwierciadlana” nie jest prawdziwą fizyczną właściwością materiałów, którą możemy dokładnie zmierzyć, musiało to zostać wykonane przez oko.
Ta metoda jest nieco krucha. Gdy zmienisz oświetlenie (powiedzmy, dynamiczny obiekt poruszający się po różnych obszarach lub w otoczeniu o porach dnia i pogody), może on wyglądać subtelnie źle - zbyt jasno lub zbyt ciemno - ponieważ warunki oglądania nie są takie same jak te, dla których jego parametry specjalne zostały dostrojone.
Wejdź w rendering fizyczny, który jest próbą ugruntowania naszych opisów materiałów w bardziej obiektywnych, mierzalnych właściwościach rzeczywistych powierzchni. Jedną z najbardziej widocznych właściwości jest oszczędność energii - szorstsza powierzchnia rozprasza światło rozproszone, a gładsza / bardziej metaliczna powierzchnia odbije światło bardziej bezpośrednio, ale jest to ta sama kula światła, z której oboje czerpią. Tak więc inne rzeczy są równe, gdy robimy materiał bardziej błyszczący, element rozproszony powinien stać się ciemniejszy:
Ten przykład pochodzi z artykułu Marmoset wyjaśniającego PBR pierwotnie udostępnionego przez Syntac_
Renderowanie oparte na fizyce to coś więcej niż oszczędzanie energii, ale jest to prawdopodobnie najbardziej znamienny znak, że pracujesz z systemem opartym na fizyce.
Utrzymując modele odbicia podobne do tego, jak materiały działają w prawdziwym życiu, zmniejszamy potrzebę kruszenia i subiektywności artystów, aby uzyskać rzeczywisty materiał, taki jak drewno, beton lub skóra, aby wyglądał naprawdę w różnych warunkach oświetleniowych.
Zauważ, że inna odpowiedź opisała to w kategoriach pośredniego oświetlenia od światła odbijającego się od innych obiektów na scenie. Podczas gdy wiele systemów oświetleniowych wykorzystujących modele oparte na fizyce zawiera również narzędzia do modelowania tego, zwykle jest to znane pod osobną nazwą Global Illumination . Jest to efekt, który powoduje, że jedna strona rozproszonej głowicy na tym obrazie wydaje się zielona, oświetlona światłem odbijającym się od zielonej ściany:
Zdjęcie z tego artykułu na temat globalnego oświetlenia
Odbicie obszaru ekranu
Podczas gdy PBR próbuje modelować, w jaki sposób materiał odbija światło, Screenspace Reflection próbuje uchwycić to, co jest odbijane - w szczególności dla błyszczącej, lustrzanej powierzchni, co powinienem zobaczyć w odbiciu?
Ponownie jest to stosunkowo nowa technika renderowania, która prawdopodobnie jest najłatwiejsza do zrozumienia, w przeciwieństwie do wcześniejszych gier:
Odwrócone renderowanie - wspólne dla płaszczyzn wodnych lub płaskich luster, dosłownie renderujemy całą odbitą geometrię po raz drugi w lustrze na płaszczyźnie powierzchni odbijającej. Daje to wysokiej jakości odbicia (pełne detale, przedmioty mające kontakt z powierzchnią wyrównują się z ich odbiciami), ale działa poprawnie tylko na płaskich powierzchniach. Im bardziej falista lub wyboista jest powierzchnia, tym mniej zachowuje się jak prawdziwe odbicia, które powinny zniekształcać lub rozmywać się w złożony sposób.
Mapy kostek - przechowujmy kolor, który byłby widoczny na każdym promieniu widzenia promieniującym z ich punktu środkowego. Dynamicznie renderując mapy sześcianów z wybranych punktów na scenie, możemy oszacować, jaki kolor powinien zostać odbity na dowolnej zakrzywionej powierzchni. Problem polega na tym, że mapa kostki jest całkowicie poprawna tylko w punkcie środkowym - ponieważ w miejscu, w którym symulujemy odbicie, porusza się po scenie, powinna ona zobaczyć paralaksę, której nie ma na mapie kostki. Oznacza to, że obiekty nie mają tendencji do ustawiania się w linii ze swoimi odbiciami.
Odbicie przestrzeni ekranu próbuje rozwiązać te ograniczenia, wykorzystując samą renderowaną scenę jako źródło informacji o odbiciu. To ray-marsze odbity ray widok, używając głębi sceny, w aż to przecinają się coś w renderowane sceny.
Oto slajd z prezentacji EA DICE na temat ich podejścia do odbić w silniku Frostbite .
Oznacza to (przy pewnej inteligentnej pracy algorytmicznej), że możemy uzyskać odbicia z rozsądną dokładnością przypominającą raytracing z dowolnych powierzchni w grach, mając prawidłowe wyrównanie powierzchni w kontakcie, zniekształceń i rozmycia, pod warunkiem, że widoczna jest odbita część powierzchni -screen (tzn. nie poza ekranem lub zasłonięty przez coś innego). Tam, gdzie odbicie nie może być dokładnie określone przez mechanizm rymowania, zwykle jest ono przybliżane za pomocą pobliskich próbek lub odwróconej mapy kubańskiej przedstawiającej scenę obok / za kamerą.
W tym przykładzie odbicia przestrzeni ekranu wrażenie może być bardzo przekonujące, choć zauważalne są małe błędy (zobacz odbicie spodu kostek, które nie są widoczne w renderowanej ramce, a więc po prostu rozmazuj i powtórz sąsiednie piksele, lub dziury w odbiciu prawej zielonej kurtyny obok doniczki i na dole ekranu, w których rymarching nie znalazł odpowiednich odbitych pikseli). Często stosuje się tę technikę w przypadku średnio błyszczących / lekko szorstkich powierzchni, aby od czasu do czasu błąd był mniej widoczny.