Tiled-Rasterisierung: der andere Rasterisierungspfad von LCC2
Die LCC2-Pipeline bietet zwei Rasterisierungsverfahren, die über die Eigenschaft Rasterizer am Actor gewählt werden: Das standardmäßige Pipeline nutzt die Rendering-Pipeline der Engine selbst, während Tiled einen vom Plugin umgesetzten, tile-basierten Compute-Pfad nutzt.
Tiled ist derzeit experimentell und gehört zur Pro Edition. Es wird erst wirksam, nachdem ein App Key registriert ist, siehe Editionen und Lizenzierung.
In den meisten dichten Szenen hebt es die Bildrate deutlich, aber der Gewinn hängt vom Bildinhalt und davon ab, wo der Engpass liegt. In manchen Szenen ist der Gewinn klein, in anderen gibt es überhaupt keine Änderung. Nach dem Aktivieren das Ergebnis durch Messen bestätigen, wie in Beurteilen, ob es hilft beschrieben. Nicht davon ausgehen, dass es immer schneller ist.
Hinweis: „Tile“ meint hier Tiles aus Bildschirmpixeln, was etwas anderes ist als das „Chunk-Rendering“ in Rendering, das Nodes nach Kamerasichtbarkeit lädt. Ersteres entscheidet, wie bereits im Grafikspeicher liegende Daten gezeichnet werden, Letzteres entscheidet, wie Daten in den Grafikspeicher gelangen. Beide sind unabhängig und können gleichzeitig aktiv sein.
Unterschiede zwischen den beiden Rasterisierungsverfahren
| Pipeline (Standard) | Tiled | |
|---|---|---|
| Rasterisierung | An die Rendering-Pipeline der Engine übergeben; jeder Splat wird zu einem Quad aufgespannt und die Engine füllt die Pixel | Eigener Compute-Dispatch des Plugins; sichtbare Splats werden zuerst in Bildschirm-Tiles einsortiert, dann Tile für Tile geshadet und komponiert |
| Sortierung | Eine globale Sortierung über alle sichtbaren Splats | Segmentierte Sortierung je Bildschirm-Tile; jedes Segment sortiert nur die Splats, die in dieses Tile fallen |
| Reifegrad | Der langjährige Standardpfad | Experimentell |
| Lizenzierung | In der kostenlosen Edition verfügbar | Pro Edition |
Der Gewinn kommt von zwei Stellen: Der Sortierbereich verengt sich von global auf ein einzelnes Bildschirm-Tile, und Pixel werden nur in den Tiles verarbeitet, die sie tatsächlich bedecken, was verschwendete Füllarbeit in überlappenden Bereichen einspart.
Der Gewinn ist daher an den Bildinhalt gebunden: Er ist deutlich, wenn die Splat-Dichte hoch und die Überlappung auf dem Bildschirm stark ist, und es gibt keine beobachtbare Änderung, wenn das Bild dünn besetzt ist oder der Engpass der Bildrate von Anfang an nicht bei Sortierung und Pixel-Füllung liegt.
Das visuelle Ergebnis ist in beiden Fällen identisch. Ein Wechsel von Rasterizer erfordert keine weiteren Parameteränderungen und beeinflusst weder das Laden der Daten noch LOD, Clipping-Volumen, Beleuchtung oder Farbeinstellungen.
Aktivieren
In der Kategorie XGrids des Details-Panels des Actors Rasterizer auf Tiled setzen. Die Eigenschaft liegt direkt hinter Render Mode und erscheint nur, wenn Render Mode auf 3DGS steht.
Den Setter aus Blueprint oder C++ aufrufen:
LCC2Component->SetRasterizer(ELCC2Rasterizer::Tiled);
Es gibt zwei Getter mit unterschiedlichem Zweck:
| Methode | Rückgabewert |
|---|---|
GetRasterizer() | Die im Panel gespeicherte Wahl |
GetEffectiveRasterizer() | Die tatsächlich wirksame Rasterisierung, mit angewendeter Lizenzprüfung |
GetEffectiveRasterizer() nutzen, um zu bestätigen, dass der Render-Pfad wirklich über Tiled läuft.
Beurteilen, ob es hilft
Weil der Gewinn nicht garantiert ist, vor und nach dem Wechsel messen. Das Verfahren entspricht dem Leitfaden zur Leistung:
- Die Testbedingungen festlegen: dieselbe Ansicht oder derselbe Kamerapfad, dieselbe Auflösung und dasselbe Screen Percentage, jeder andere Parameter unverändert.
- Zuerst einen Aufwärmdurchgang laufen lassen, damit die erste Shader-Kompilierung und der erste Datenträgerzugriff nicht in die Zahlen einfließen.
- Die GPU-Bildzeit unter
Pipelinemitstat unitals Basiswert festhalten. - Nur
Rasterizerändern und dieselbe Ansicht erneut messen. - Über einige repräsentative Ansichten hinweg wiederholen, besonders bei den Bildern mit den dichtesten Splats und der stärksten Überlappung.
Wenn die GPU-Bildzeit nicht sinkt, liegt der aktuelle Engpass außerhalb dessen, was dieser Pfad abdeckt. Dann Pipeline behalten und den eigentlichen Engpass mit dem Leitfaden zur Leistung weiter eingrenzen.
Geltungsbereich
| Punkt | Hinweise |
|---|---|
| Pipeline | Nur die LCC2-Pipeline. ALCCActor (.lcc) hat diese Eigenschaft nicht |
| Formate | .lcc2 / .sog / .spz / .ply funktionieren alle |
| Rendering-Modus | Nur der 3DGS-Modus. Der Punktwolkenmodus ignoriert die Eigenschaft und nutzt immer Pipeline |
| Engine und RHI | Derselbe Unterstützungsumfang wie beim Plugin selbst; D3D12 und Vulkan funktionieren beide |
| Mehrere Ansichten | VR-Stereo-Rendering, nDisplay, Splitscreen und SceneCapture werden alle unterstützt |
Verhalten ohne Lizenz
Rasterizer ohne registrierten App Key auf Tiled zu setzen, führt nicht zu einer Fehlermeldung oder zu einem Ladefehler. Der Render-Pfad fällt automatisch auf Pipeline zurück. Die im Panel gespeicherte Wahl wird nie überschrieben, sie wird also wirksam, sobald die Lizenz registriert ist, und muss nicht erneut gesetzt werden.
Um zu erkennen, ob Tiled wirklich genutzt wird, den Rückgabewert von GetEffectiveRasterizer() lesen: Beim Rückfall gibt er Pipeline zurück, während GetRasterizer() weiterhin Tiled zurückgibt.
Hinweis: Vor der Paketierung für eine Veröffentlichung prüfen, ob die Lizenz gültig ist, sonst folgt die Paketausgabe dem Verhalten der kostenlosen Edition und nutzt Pipeline.
Wann Pipeline beibehalten wird
- Der Punktwolken-Rendering-Modus ist im Einsatz. Die Eigenschaft hat dort keine Wirkung, es gibt also nichts zu setzen.
.lcc-Daten sind geladen. Die LCC-Pipeline hat diesen Pfad nicht.- Projekte der kostenlosen Edition.
Tiledfällt ohnehin zurück, der Standardwert ist daher klarer. - Die Messung zeigt keine Verbesserung der Bildzeit.
- Das Projekt ist in die Abnahmeprüfung eingetreten, wo ein experimenteller Pfad besser vermieden wird.
Tiled senkt die Kosten der Rendering-Stufe; es reduziert die Arbeit für Laden und Traversierung nicht. Liegt der Engpass auf der Seite des Datenladens, zuerst Laden und LOD mit dem Leitfaden zur Leistung angehen.