Ich mache RPG in OpenGl und ich muss einige Portale machen. Wie soll ich es rendern, wenn ich durch das Portal auf der anderen Seite sehen möchte?
Ich mache RPG in OpenGl und ich muss einige Portale machen. Wie soll ich es rendern, wenn ich durch das Portal auf der anderen Seite sehen möchte?
Antworten:
Sie haben zwei Szenen aus zwei Kameraperspektiven gerendert: eine im lokalen Raum und eine im Portalraum. Sie müssen einen Teil des letzteren dem ersteren überlagern. Um dies zu erreichen, benötigen Sie Kenntnisse über G-Puffer ( verzögerte Schattierung ). Ich schlage daher vor, dass Sie dort mit Ihrer Forschung beginnen.
Erster Shader-Durchgang: Erstellen Sie einen G-Puffer für Ihre lokale Szene. In Ihrem speziellen Fall verfügen Sie über einen Farbpuffer, mit dem die Silhouette des Portals aus lokaler Perspektive ausgeblendet werden kann. Es enthält eine Farbe (z. B. Weiß), die angibt, wo sich Ihre Portaloberfläche befindet, und alles andere im lokalen Bereich wird schwarz dargestellt. Diese Maske wird verwendet, damit Sie wissen, welche Pixel Ihrer gerenderten lokalen Szene als Fenster in den "Portalraum" betrachtet werden sollen.
Zweiter Shader-Durchgang: Rendern Sie Ihre Portalraumszene mit derselben Kameraausrichtung, jedoch mit einer Verschiebung der Kameraposition um denselben Vektor, der den Versatz der Kamera vom Portal im lokalen Raum beschreibt.
Dritter / letzter Shader-Durchgang: Verwenden Sie die Maske, um den Abschnitt der Portalszene auszuschneiden, den Sie in der lokalen Szene über die Portaloberfläche und im Fragment-Shader überlagern müssen.
HAFTUNGSAUSSCHLUSS Dies alles ist leichter gesagt als getan - der Einstieg in Multi-Pass-Rendering und G-Puffer ist eine beträchtliche Menge an Arbeit, wenn Sie dies noch nie zuvor getan haben - erwarten Sie mehrere lange Tage bis mehrere Wochen, abhängig von Ihrem Kenntnisstand und der verfügbaren Zeit und allgemeines Glück bei der Umsetzung. Beachten Sie auch, dass eine verzögerte Schattierung hohe Kosten verursacht und für bestimmte Mobiltelefone möglicherweise ungeeignet ist.