Wie viele Rendering-Durchgänge sind "normal"?

7

Ich habe John Chapmans Methode für SSAO implementiert (übrigens ein ausgezeichnetes Tutorial) und alles bis auf den letzten Teil abgeschlossen: Verwischen. Ich glaube, so sollte der gesamte Prozess aussehen:

  • Erster Durchgang: Rendern von Normalen und Tiefe für Texturen. (plus diffuse / spiegelnde Albedo und so)
  • Zweiter Durchgang: Szene ohne Umgebungsokklusion in Textur rendern, Umgebungsokklusion in eine andere Textur rendern.
  • Dritter Durchgang: Verwischen Sie die AO-Textur und multiplizieren Sie sie mit der Szenentextur, um das Endergebnis zu erhalten.

Wenn ich dann Blüte und Schärfentiefe implementieren wollte, würde ich dann noch einen Durchgang (oder zwei) benötigen ? Gehen moderne Spiele wirklich eine Menge Rendering-Pässe durch, um Effekte hinzuzufügen, oder fehlt mir etwas Offensichtliches? Eine Möglichkeit, die Anzahl der benötigten Durchgänge zu verringern?

Fehler
quelle

Antworten:

2

Ich würde sagen, 2-3 Durchgänge sind ziemlich normal. Ich vermute, 4 ist nicht ungewöhnlich.

Für Spiele mit Scheitelpunktbeleuchtung 1-2. Normalerweise geht nur die Albedo vorbei, dann der eine oder andere Nacheffekt.

Für Pixel beleuchtet wird 3+ die Norm sein. Der erste Durchgang ist G-Puffer, Z-Puffer, Oberflächennormalen und diffuse / Albedo-Informationen, wie Sie es beschreiben. Bausteine. Beim zweiten Durchgang versuchen wir, alle anderen Operationen anzupassen, aber in bestimmten Fällen - wie bei der Unschärfe der Schärfentiefe - kann es einfach unmöglich sein, die Notwendigkeit eines zusätzlichen Durchgangs nur für diesen Effekt zu beseitigen, da man in der Natur DoF in Betracht ziehen könnte Unschärfe ist ein Effekt, der durch die geringe Schärfentiefe der Augen erzeugt wird, die nur auftreten kann, nachdem alles Licht gefallen ist (was alle Durchgänge nach der ersten und vor der DoF-Unschärfe beschreibt) ... klar, eine Kamera mit langer Brennweite könnte dies tun Sehen Sie dieselbe Szene ohne Unschärfe. Der Effekt als solcher ist also ein Nachprozess auf die Aktualität der vollständig gerenderten Szene. Dies würde auch für Effekte wie Verzerrung durch Glas gelten.

Obwohl zusätzliche Durchläufe sicherlich mit Overhead verbunden sind, ist es meiner Meinung nach wichtiger, dass Sie kostspielige Vorgänge (besondere Bedingungen) in jedem Shader-Durchgang begrenzen.

Ingenieur
quelle
2

Normalerweise hat jeder Nachbearbeitungseffekt seinen eigenen Durchgang, es sei denn, die Effekte sind "organisch" gekoppelt und / oder einfach. Um beispielsweise eine alte Filmkamera zu simulieren, können Sie die Graustufen-, Sepia-, Rausch-, Kratz- und Vignettierungseffekte im selben Shader platzieren, da jeder Effekt ein einfacher Teil des Zieleffekts ist. Andererseits haben einige andere Effekte aufgrund der komplexeren Berechnungen, die für das Verwischen erforderlich sind, einen Post- oder Pre-Blur-Pass.

Es ist wichtig zu beachten, dass der Shader umso flexibler ist, je komplexer er ist. Aus Sicht der Code-Wartbarkeit ist es daher schlecht, einen Shader als seltsame Folge von Effekten zusammenzustellen. Darüber hinaus kann die Parallelität eines Shaders beschädigt werden, wenn viele Register verwendet werden (bei großen Shadern). Dies kann in einigen Fällen zu einer schlechten Leistung führen. Wenn das Mischen der Effekte auch zu einer größeren Divergenz der bedingten Zweige führt, kann der Leistungsverlust noch schlimmer sein.

dsilva.vinicius
quelle