Physikalisch basiertes Rendern
Sie sind auf dem richtigen Weg, wenn Sie sagen: "Es versucht nachzuahmen, wie Licht im wirklichen Leben reflektiert wird. Das heißt, es wird normalerweise in zwei Komponenten aufgeteilt, spiegelnd und diffus, je nach Art des Materials."
Aber wir modellieren seit langer Zeit Materialien mit spiegelnden und diffusen Spielen und Computergrafiken. Der Trick ist, dass wir diese Dinge als völlig unabhängig behandelt haben - das Ändern der Spekularität hat das Diffuse nicht geändert:
Dies ist ein Beispiel für Phong-Schattierung aus dem Blender-Wiki . Sie können sehen, dass es zwei Parameter für Spiegelintensität und Spiegelhärte bietet, und diese Parameter ändern nur den weißlichen Teil der Reflexion. Die blaue diffuse Reflexion ändert sich überhaupt nicht.
Die Art und Weise, wie Spiele dies verwenden würden, ist, dass ein Künstler die Aufgabe hat, diese Werte für jedes Material von Hand abzustimmen, bis es "richtig aussieht". Da "Spiegelhärte" keine reale physikalische Eigenschaft von Materialien ist, die wir genau messen können, musste dies mit dem Auge erfolgen.
Diese Methode ist etwas spröde. Wenn Sie die Beleuchtung ändern (z. B. ein dynamisches Objekt, das sich durch verschiedene Bereiche bewegt, oder in einer Umgebung mit Tageszeit und Wetter), kann es auf subtile Weise falsch aussehen - zu hell oder zu dunkel -, da die Betrachtungsbedingungen nicht mit denen übereinstimmen diejenigen, auf die seine Spiegelparameter abgestimmt waren.
Geben Sie Physically-Based Rendering ein. Dies ist ein Versuch, unsere Materialbeschreibungen auf objektivere, messbare Eigenschaften realer Oberflächen zu gründen. Eine der offensichtlichsten Eigenschaften ist die Energieeinsparung - eine rauere Oberfläche streut das Licht diffus und eine glattere / metallischere Oberfläche reflektiert das Licht direkter, aber es ist derselbe Lichtpool, aus dem beide ziehen. Wenn andere Dinge gleich sind und ein Material glänzender wird, sollte die diffuse Komponente dunkler werden:
Dieses Beispiel stammt aus einem Marmoset-Artikel, in dem die ursprünglich von Syntac_ gemeinsam genutzte PBR erläutert wird
Physikalisch basiertes Rendern ist mehr als Energieeinsparung, aber dies ist wahrscheinlich das verräterischste Zeichen dafür, dass Sie mit einem physisch basierten System arbeiten.
Indem wir die Reflexionsmodelle so halten, wie Materialien im wirklichen Leben funktionieren, reduzieren wir den Bedarf an Fudge-Faktoren und Künstlersubjektivität, damit ein reales Material wie Holz, Beton oder Leder unter einer Vielzahl von Lichtbedingungen real aussieht .
Beachten Sie, dass eine andere Antwort dies als indirekte Beleuchtung durch Licht beschreibt, das von anderen Objekten in der Szene reflektiert wird. Während viele Beleuchtungssysteme, die physikalisch basierte Modelle verwenden, auch Werkzeuge zur Modellierung enthalten, ist dies normalerweise unter dem separaten Namen Global Illumination bekannt . Dies ist der Effekt, der eine Seite des diffusen Kopfes in diesem Bild grün erscheinen lässt, beleuchtet durch Licht, das von der grünen Wand reflektiert wird:
Bild aus diesem Artikel über globale Beleuchtung
Bildschirmreflexion
Während PBR versucht zu modellieren, wie das Material Licht reflektiert, versucht Screenspace Reflection zu erfassen, was reflektiert wird - was sollte ich speziell für eine glänzende, spiegelähnliche Oberfläche in der Reflexion sehen?
Auch dies ist eine relativ neue Rendering-Technik, die im Gegensatz zu den vorherigen Spielen wahrscheinlich am klarsten zu verstehen ist:
Umgedrehtes Rendern - üblich für Wasserflugzeuge oder flache Spiegel. Wir rendern buchstäblich die gesamte reflektierte Geometrie ein zweites Mal, gespiegelt über die Ebene der reflektierenden Oberfläche. Dies ergibt hochwertige Reflexionen (vollständige Details, Objekte, die mit der Oberfläche in Kontakt stehen, stimmen mit ihren Reflexionen überein), funktioniert jedoch nur für flache Oberflächen korrekt. Je welliger oder holpriger eine Oberfläche ist, desto weniger verhält sich dies wie echte Reflexionen, die auf komplexe Weise verzerren oder verschwimmen sollten.
Würfelkarten - Lassen Sie uns die Farbe speichern, die von jedem Sichtstrahl gesehen werden würde, der von seinem Mittelpunkt ausstrahlt. Durch dynamisches Rendern von Würfelkarten von ausgewählten Punkten in der Szene können wir abschätzen, welche Farbe von einer beliebig gekrümmten Oberfläche reflektiert werden soll. Das Problem hierbei ist, dass die Würfelkarte nur in ihrem Mittelpunkt vollständig korrekt ist. Da sich der Punkt, an dem wir die Reflexion simulieren, um die Szene bewegt, sollte eine Parallaxe auftreten, die in der Würfelkarte nicht vorhanden ist. Dies bedeutet, dass Objekte nicht dazu neigen, mit ihren Reflexionen übereinzustimmen.
Screen Space Reflection versucht, diese Einschränkungen zu beseitigen, indem die gerenderte Szene selbst als Quelle für Reflexionsinformationen verwendet wird. Es ray-Märsche einen reflektierten Blick Strahl, die Szene Tiefe mit, bis er etwas in der gerenderten Szene schneiden würde.
Hier ist eine Folie aus einer EA DICE-Präsentation über ihre Herangehensweise an Reflexionen in der Frostbite-Engine .
Dies bedeutet, dass wir (mit einigen intelligenten algorithmischen Arbeiten) Reflexionen mit angemessener Raytracing-ähnlicher Genauigkeit von beliebigen Oberflächen in Spielen erhalten können, wobei die Oberflächen in Kontakt, Verzerrung und Unschärfe korrekt ausgerichtet sind, solange der reflektierte Teil der Oberfläche sichtbar ist -screen (dh nicht offscreen oder von etwas anderem verdeckt). Wenn die Reflexion durch das Raymarchen nicht genau bestimmt werden kann, wird sie normalerweise mit nahe gelegenen Proben oder einer Fallback-Cubemap angenähert, die die Szene neben / hinter der Ansicht der Kamera darstellt.
Sie können in diesem Beispiel der Bildschirmreflexion sehen , dass der Eindruck sehr überzeugend sein kann, obwohl kleine Fehler erkennbar sind (siehe die Reflexion der Unterseiten der Würfel, die im gerenderten Rahmen nicht sichtbar sind und so benachbarte Pixel einfach verschmieren und wiederholen). oder die Löcher in der Reflexion des rechten grünen Vorhangs neben dem Blumentopf und am unteren Rand des Bildschirms, wo das Raymarchen nicht die richtigen reflektierten Pixel fand). Es ist üblich, diese Technik für mäßig glänzende / leicht raue Oberflächen zu verwenden, um gelegentliche Fehler weniger sichtbar zu machen.