Was bringt die Software-Rasterisierung in modernen Game-Engines?

9

Ich nehme dieses Quartal an einem Computergrafikkurs teil. In einem unserer Laborprojekte geht es um Software-Rasterisierung.

Jetzt plane ich den Projektvorschlag und denke darüber nach, wie ich ihn für andere Leute in der zeitgenössischen Spieleentwicklung nützlich machen kann.

Nach einer kurzen Suche lernte ich eine Technik namens Software Occlusion Culling. Es führt eine Software-Rasterung für Puffer mit verschiedenen Auflösungen durch. Und wir können die Okklusion mithilfe der hierarchischen z-Puffer abfragen.

Meine Frage : Was nutzt die Software-Rasterisierung in modernen Game-Engines neben dem Software Occlusion Culling?

TheBusyTypist
quelle

Antworten:

4

Meines Wissens ist Software Occlusion Culling (das Sie bereits erwähnt haben) so ziemlich das einzige, wofür ein Software-Rasterizer noch verwendet werden würde. Procworld verwendet eine ähnliche Technik, um seine riesigen Voxelumgebungen anzuzeigen.

Die meisten anderen Culling-Methoden wie das Frustum-Culling funktionieren zwar auf der CPU, aber um an dem Beispiel festzuhalten, erfolgt der Test gegen das Frustum auf Objektebene, wahrscheinlich mit einem achsenausgerichteten Begrenzungsrahmen (AABB). Dieser Kreuzungstest ist viel einfacher als die Verwendung eines vollständigen Software-Rasters.

In bestimmten Fällen kann die Software-Rasterung zum Auswählen von Objekten mit der Maus verwendet werden. In Spiel-Engines wird dies häufig mithilfe einer Physik-Engine und einer Strahlendreieck-Kollision mit einem vereinfachten Netz gelöst.

Da die CPU während des Wartens auf die GPU in modernen interaktiven 3D-Anwendungen im Leerlauf ist, könnte man denken, dass es vorteilhaft sein könnte, diese Leerlaufzyklen zum Rendern auf der CPU mit einem Software-Rasterizer zu verwenden. Das Problem hier ist neben dem schrecklich komplexen und verworrenen Rendering oft die Bandbreite. Auf der CPU gerenderte Bilder müssen vor der Anzeige auf die GPU übertragen werden, wodurch der Vorteil möglicherweise aufgehoben wird.

David Kuri
quelle
0

Spiele mit dem Konzept "Nebel des Krieges" haben oft ein Sichtbarkeitsraster, um den Zustand des Kriegsnebels an jedem Ort zu definieren. Rasterisierung wird manchmal verwendet, um den Nebel des Kriegszustands für bestimmte Formen im Raster zu ändern.

Verwenden Sie beispielsweise eine Fähigkeit, die einen Kreis auf der Karte mit einem bestimmten Radius anzeigt, oder etwas, das ein Quadrat anzeigt.

Nicht ausschließlich mit Grafiken verbunden, aber definitiv eine Verwendung der Rasterung in modernen Spielen und eine Technik, die in RTSs verwendet wird.

Andere gitterbasierte Daten in Spielen könnten für ähnliche Situationen eine Rasterisierung verwenden.

Alan Wolfe
quelle
-2

Rasterisierung ist ein großes Thema mit vielen Teilen und ich bin kein Engine-Programmierer, aber ich werde mein Bestes geben, um einen Überblick zu geben (dies wird weit von einer vollständigen Liste entfernt sein!).

Einige sehr einfache Dinge auf niedrigem Niveau sind:

  • Frustrum-Culling: Wirft alles außerhalb des Frustrums der Kamera weg (stellen Sie es sich als Betrachtungsbereich der Kamera vor).
  • Keulen der Rückseite: Werfen Sie jedes Polygon weg, das nicht auf die Kamera gerichtet ist.
  • Maleralgorithmus: Zeichnen Sie Objekte in der Reihenfolge ihres Abstands zur Kamera, beginnen Sie mit weit entfernten Objekten und gehen Sie dann zur Kamera.

Weitere fortgeschrittene Dinge, die in Spielen verwendet werden, sind Dinge wie:

  • Tesselation : Eigentlich ziemlich ähnlich wie LOD (siehe unten), aber jetzt haben die neuesten DirectX-Versionen die Tesselation eingeführt, die eine automatische Netzteilung oder -reduzierung ermöglicht. Dies erhöht die Grafikleistung erheblich, da Sie Polys erhalten können, wenn Sie sie benötigen, und sie entfernen können, wenn Sie sie nicht mehr möchten.
  • LOD : Ein Detaillierungsgradsystem ersetzt das Netz eines Objekts basierend auf dem Abstand zwischen Objekt und Kamera. Zum Beispiel hat Ihr Charakter drei Maschen: eine mit 10.000, eine mit 5.000 und eine mit 1.000 Polys. Wenn Sie direkt vor ihm bleiben, wird das hochauflösende Netz (10.000 Polys) angezeigt. Wenn Sie sich entfernen, wird der Charakter nach 100 m durch das mittlere Netz und nach weiteren 100 m durch das niedrig auflösende Netz ersetzt. Anstatt das Netz zu ersetzen, können Sie es reduzieren, dies wäre jedoch komplexer zu codieren.
  • binäre Raumpartitionen : Der Raum ist in zwei Volumes unterteilt. Dies wird wiederholt, bis Sie Ihr Ziel erreicht haben, z. B. bis das Feld nur noch Polys enthält, die auf dem Bildschirm gezeichnet werden sollen
  • Portale und Zellen : (auch bekannt als Portal Culling) wird in Innenszenen und / oder Ego-Shootern verwendet. Die Szene ist in Zellen (z. B. Räume eines Gebäudes) unterteilt, die mit Wurfportalen (z. B. Türen) verbunden sind. Sie können Portale so einstellen, dass sie offen und geschlossen sind.

Angenommen, Sie haben ein grundlegendes Verständnis der Grafik-Pipeline, habe ich versucht, mich auf die Rasterisierung zu konzentrieren. Sie können auch einen Blick auf Beleuchtung und Beschattung oder andere Dinge werfen.

Dazu gehören nur einige mögliche Technologien, die Sie in Ihr Projekt aufnehmen können. Da ich bei Stackexchange nicht genug Ruf habe, kann ich nicht viele Links bereitstellen, aber all das finden Sie in Google :)

Micha Grandel
quelle
2
Die Frage betrifft die Software-Rasterung (sprich: CPU). Einige der Informationen, die Sie gegeben haben, beziehen sich auf die Rasterung im Allgemeinen, einige Techniken - in meinem Buch - haben überhaupt nichts mit Rasterisierung zu tun. Könnten Sie bitte in Ihrer Antwort klarstellen, wie die Techniken Software-Rasterisierung verwenden oder davon profitieren?
David Kuri