Zwei Ideen, an die ich denke:
1) Die Szene wird in einen unsichtbaren Puffer gerendert, wobei Modelle mit niedriger Auflösung und niedriger Polygonzahl (oder sogar nur Begrenzungsvolumina wie Würfel oder Kugeln) verwendet werden. Der Puffer wird dann überprüft, um zu wissen, was sichtbar ist oder nicht. Vor dem Rendern der Szene mit niedriger Auflösung könnte ein gewisses Kegelstumpf-Keulen angewendet werden, um bereits so viele Objekte wie möglich zu entfernen.
2) Ein Werkzeug wird auf der statischen Karte ausgeführt und führt eine komplexe (und daher langsame) Strahlverfolgung durch, um für einige 3D-Positionen auf der Karte zu wissen, was sichtbar ist und was nicht. All diese Informationen werden dann auf eine effiziente Weise gespeichert, die später zur Laufzeit vom Benutzer verwendet werden kann (z. B. ein Octree). Diese Lösung funktioniert nur für statische Maschen (z. B. Gebäude), die keine Objekte verschieben.
Antworten:
Jovans Antwort ist großartig, wollte aber nur hinzufügen, dass es manchmal Hardwareunterstützung gibt, um die Frage zu stellen: "Hat diese Geometrie tatsächlich Pixel gerendert?" (Ihre Idee Nr. 1) Diese werden als Okklusionsabfragen bezeichnet - dies ist ein guter GPU Gems-Artikel darüber hier
Dies ist Ihrer Idee Nr. 1 ziemlich ähnlich, außer dass Sie keinen unsichtbaren Puffer benötigen und effizienter oder einfacher sein können, als den Puffer zu überprüfen. Der verlinkte Artikel leistet einen großartigen Beitrag zur Funktionsweise von Hardware-Okklusionsabfragen.
Die Unreal Engine nutzt Hardware-Okklusionsabfragen auf Plattformen, die sie unterstützen, sowie andere Techniken wie das Ermitteln von Ansichtsstumpf und die Vorausberechnung der verborgenen statischen Geometrie.
quelle
Diese Technik wird von Killzone verwendet und in der Präsentation " Practical Occlusion Culling" auf PS3 detailliert beschrieben . Sie nutzen auch Portale für den Innenbereich.
Bei großen Karten im Freien ist zu beachten, dass die Vereinfachung des Netzes genauso wichtig ist wie die Okklusionsauslese. Daher wird häufig eine Variation von Höhenfeldern mit Geometrie-Clipmapping verwendet. Hier ist ein gutes Papier , das auch das Keulen abdeckt. GPU Gems 2 hat eine Implementierung davon .
quelle
Mindestens die ersten beiden Quake-Spiele verwendeten Strategie 2; Ich weiß nicht, ob idTech-Motoren es noch verwenden. Die erreichbare Welt ist in konvexe Räume unterteilt, die in einer Baumdatenstruktur ("binäre Raumpartition") organisiert sind, und für jeden Knoten im Baum gibt es einen Bitvektor, der darstellt, welche anderen Knoten von diesem Knoten aus sichtbar sind ("potenziell sichtbare Menge").
quelle