Neueste Meldungen
Tipps & AnleitungenUnreal Engine

Leitfaden zu Virtual Texturing in Unreal Engine: RVT und SVT

Unreal Engine bietet mit Runtime Virtual Texturing (RVT) und Streaming Virtual Texturing (SVT) zwei Verfahren, um den Speicherbedarf großer Texturen zu verwalten. Der Leitfaden behandelt die Auswahl des Verfahrens, die Umstellung von Materialien und die Performancekontrolle.

Architekturvisualisierung mit geschichteten Landschaftstexturen und einem modernen PavillonKI-Bild
Symbolbild, mit KI erzeugt.Bild: 3dsınıfı / FCA AI

Kurz gesagt

  1. RVT erzeugt Texturen zur Laufzeit auf der GPU und eignet sich für prozedurale oder geschichtete Materialien.
  2. SVT lädt nur die auf dem Bildschirm sichtbaren Bereiche von Texturen von der Festplatte als Tiles in den GPU-Speicher.
  3. Bei Materialien mit SVT-Texturen müssen Texture-Sample-Nodes einen passenden Virtual-Sampler-Typ verwenden.
  4. Die Kosten von Virtual Texturing lassen sich mit den Befehlen `stat virtualtexturing` und `stat virtualtexturememory` untersuchen.

Die offizielle Dokumentation von Epic Games zu Unreal Engine beschreibt Virtual Texturing als eine Möglichkeit, große Texturen zur Laufzeit mit geringerem und gleichmäßigerem Speicherbedarf zu verarbeiten. Das System umfasst zwei Verfahren: Runtime Virtual Texturing (RVT) und Streaming Virtual Texturing (SVT). Dieser Leitfaden erläutert die Einsatzbereiche beider Verfahren in der Architekturvisualisierung und in Echtzeitszenen, die Einbindung von SVT-Texturen in Materialien und die Performancekontrolle. Die Quelldokumentation nennt keine bestimmte Unreal-Engine-Version, für die die Angaben gelten.

1. RVT oder SVT? Die Wahl je nach Einsatzzweck

Bei RVT werden Texturdaten zur Laufzeit von der GPU erzeugt. In Epics Dokumentation wird dieses Verfahren als geeignet für prozedurale Texturen, geschichtete Materialien und den Einsatz komplexer Materialien in Landschaften beschrieben. Auch Landscape-Spline-Workflows, der Einsatz von Decals auf Meshes und das allgemeine Verblenden von Landschaften und Objekten zählen zu den Beispielen, bei denen RVT nützlich sein kann. Damit ist nicht gemeint, dass Decals direkt mit Landschaften oder Objekten verblendet werden.

SVT verwendet dagegen vorbereitete Texturen von der Festplatte. Das System unterteilt Textur-Mip-Stufen in Tiles fester Größe. Die GPU ermittelt, welche Bereiche für die auf dem Bildschirm sichtbaren Pixel benötigt werden, und lädt diese Tiles in den GPU-Speicher-Cache. Bei hochauflösenden Texturen werden somit nur die benötigten Bereiche berücksichtigt, statt auch unsichtbare Teile vollständig zu laden. SVT eignet sich für Daten, deren Erstellung zeitaufwendig ist, etwa Lightmaps und große, von Künstlern erstellte Texturen.

VerfahrenDatenflussIn der Dokumentation genannte Einsatzbereiche
RVTTexturdaten werden zur Laufzeit auf der GPU erzeugt.Prozedurale oder geschichtete Materialien, komplexe Landschaftsmaterialien
SVTTexturdaten werden von der Festplatte geladen; benötigte Tiles kommen in den Speicher.Lightmaps und große, detailreiche Texturen

2. SVT-Texturen und Materialien umstellen

Bei der Verwendung von SVT muss Virtual Texture Streaming im Texture Asset aktiviert sein. Außerdem müssen die Texture-Sample-Nodes in Materialien, die diese Textur abtasten, einen passenden Virtual-Sampler-Typ verwenden. Die Konvertierungsoption im Content Browser kann neben den ausgewählten Texturen auch Materialien in die Konvertierungsliste aufnehmen, die auf sie verweisen.

  1. Wählen Sie im Content Browser das Texture Asset aus, das Sie in SVT umwandeln möchten.

  2. Öffnen Sie per Rechtsklick auf das Asset die Option Convert to Virtual Texture.

  3. Prüfen Sie im Konvertierungsfenster die aufgeführten Texturen und die Materialien, die auf sie verweisen.

  4. Klicken Sie auf Ok, um die Konvertierung zu starten.

  5. Prüfen Sie anschließend, ob die Texture-Sample-Nodes in den betreffenden Materialien den korrekten Virtual-Sampler-Typ verwenden.

Die Textur lässt sich auch manuell umstellen. Öffnen Sie das Texture Asset und aktivieren Sie im Bereich Texture des Details-Panels die Option Virtual Texture Streaming. Danach können vorhandene Materialien, die diese Textur verwenden, ungültig werden. In den betreffenden Materialien muss der Texture-Sample-Node auf einen passenden Virtual-Sampler-Typ umgestellt werden. Im Beispiel der Dokumentation wird für eine virtuelle Farbtextur Virtual Color verwendet; der Sampler-Typ Color ist keine passende Zuordnung.

Wird eine virtuelle Textur in den Material Graph eingefügt, weist Unreal Engine automatisch den passenden Virtual-Sampler-Typ zu. Für Texture-Sample-Parameter, die in Material Instances verwendet werden sollen, ist jedoch der Sampler-Typ des Basismaterials wichtig: Abgeleitete Samples übernehmen den im Basismaterial festgelegten Typ. Einer Parameter-Sample-Position im Basismaterial, deren Typ nicht Virtual ist, kann keine virtuelle Textur zugewiesen werden.

3. UDIM und virtuelle Textur-Lightmaps

Unreal Engine kann Bilder, die dem UDIM-Namensschema entsprechen, als einzelnes Virtual Texture Asset importieren. Die Dateien müssen denselben Basisnamen und eine vierstellige Koordinatennummer haben. Das in der Dokumentation angegebene Format lautet:

Prompt
BaseName.####.[Support Image Format]

Die Datei MyTexture.1001.png veranlasst Unreal Engine beispielsweise dazu, nach weiteren Bildern mit demselben Basisnamen und anderen Koordinatennummern zu suchen. UDIM-Bilder können unterschiedliche Auflösungen haben. Im Beispiel der Quelle werden zwei Bilder mit 2048x2048 und zwei mit 128x128 in einer 2x2-Anordnung wie eine einzelne virtuelle Textur abgetastet. Dass die kleineren Bilder in dieser Anordnung eine größere Fläche ausfüllen, erhöht laut Quelle weder den Festplatten- noch den Laufzeitspeicherbedarf.

Um virtuelle Textur-Lightmaps zu aktivieren, öffnen Sie in den Project Settings den Pfad Engine › Rendering und verwenden Sie die Option Enable virtual texture lightmaps. Epic gibt an, dass diese Funktion die Qualität beim Erstellen von Lightmaps und die Streaming-Performance verbessern kann. Die Dokumentation erläutert außerdem die Konsolenvariablen r.IncludeNonVirtualTexturedLightmaps und r.VT.EnableLossyCompressLightmaps. Letztere aktiviert verlustbehaftete Kompression für virtuelle Textur-Lightmaps; laut Hinweis kann dies die Qualität der Lightmap-Texturen verringern.

4. Performance messen und häufige Fehler

Das Sampling virtueller Texturen ist aufwendiger als das Sampling herkömmlicher Texturen. Jedes Virtual-Texture-Sample im Material Graph erzeugt einen Lookup. Stacks von Samples mit denselben UVs und derselben Sampler Source können zusammengeführt werden; bis zu 8 Samples mit übereinstimmenden Bedingungen lassen sich in einem Stack bündeln. Bei unterschiedlichen UVs können die Stacks getrennt bleiben und zusätzliche Texturzugriffe verursachen.

Öffnen Sie die Konsole und führen Sie den folgenden Befehl aus, um die Kosten in der Szene zu untersuchen:

Prompt
stat virtualtexturing

Der Befehl zeigt die Kosten von Virtual Texturing in der Szene in Millisekunden sowie Zähler zu den Page Tables an. Für Speicherzähler:

Prompt
stat virtualtexturememory

Um das Mip-Ansichtsraster für Materialien mit SVT einzublenden:

Prompt
r.VT.Borders 1

Schalten Sie das Raster nach der Überprüfung wieder aus:

Prompt
r.VT.Borders 0

Häufige Fehler

  • Den Sampler-Typ nicht korrigieren: Eine manuelle Umstellung kann Materialien ungültig machen. Prüfen Sie, ob in den Texture-Sample-Nodes der passende Virtual-Typ ausgewählt ist.

  • Virtuelle Texturen für kostenlos halten: Der Speichervorteil beseitigt nicht die Kosten des Samplings. Messen Sie die Szene mit den Statistikbefehlen.

  • Unterschiedliche UV-Verwendung übersehen: Stacks von Samples mit unterschiedlichen UVs lassen sich möglicherweise nicht zusammenführen; die Materialkosten können steigen.

  • Bildfehler nicht berücksichtigen: Bei verrauschten oder sehr detailreichen Texturen kann die Begrenzung der niedrig aufgelösten Mips Aliasing oder Moiré-Effekte verursachen. Das reaktive Laden von SVT kann außerdem dazu führen, dass einige Tiles erst während der Kamerabewegung nachgeladen werden und sichtbar erscheinen.

In Architektur-, Innenraum- und Archviz-Projekten kann RVT für Teams interessant sein, die mit prozeduralen Landschaften, geschichteten Oberflächen und Übergängen zwischen Objekten und Landschaften arbeiten. SVT kann bei Szenen mit großen Texturen, UDIM-Sets oder Lightmaps helfen, den Speicherbedarf zu verwalten. Prüfen Sie vor der Einführung in den Workflow die Materialkompatibilität, die GPU-Kosten und das Laden der Tiles bei bewegter Kamera. Da die Dokumentation keine Versionsangabe enthält, sollten Sie die Ergebnisse zusätzlich mit der verwendeten Unreal-Engine-Version überprüfen.

Quellen

2 Quellen
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/virtual-texturing-in-unreal-engine
Zusammenfassung
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/streaming-virtual-texturing-in-unreal-engine
Zusammenfassung

Quelltexte werden nicht neu veröffentlicht; kurze Zitate sind gekennzeichnet, der Rest ist eigene Zusammenfassung und Einordnung.

Die Einschätzung von 3dsınıfı
3dEinschätzung der Redaktion

Für Architektur- und Visualisierungsbüros in der Türkei kann Virtual Texturing bei großen Textursets und landschaftslastigen Szenen zur Speicherverwaltung beitragen. Das bedeutet jedoch nicht, dass jedes Projekt dadurch automatisch schneller gerendert wird: Die zusätzlichen Kosten des Samplings virtueller Texturen und die Auswirkungen unterschiedlicher UVs müssen berücksichtigt werden.

Am sichersten ist es, das Verfahren zunächst an einer repräsentativen Szene zu testen, bevor es auf das gesamte Projekt ausgeweitet wird. Nach der Umstellung sollten Materialkompatibilität, GPU-Speicherzähler, Bildqualität bei feinen Details und das Laden der Tiles bei Kamerabewegungen gemeinsam geprüft werden. Auch die Überprüfung des Verhaltens mit der verwendeten Unreal-Engine-Version sollte auf der Checkliste der Teams stehen.

Häufige Fragen

Worin besteht der Unterschied zwischen RVT und SVT in Unreal Engine?

RVT erzeugt Texturdaten zur Laufzeit auf der GPU. SVT lädt nur die sichtbaren Bereiche von Texturen auf der Festplatte als Tiles.

Wie werden SVT-Texturen in Materialien verwendet?

Für die Textur muss Virtual Texture Streaming aktiviert sein, und die Texture-Sample-Nodes im Material müssen einen passenden Virtual-Sampler-Typ verwenden. Das Konvertierungsmenü listet neben den Texturen auch Materialien auf, die auf sie verweisen.

Wie lässt sich die Performance virtueller Texturen in Unreal Engine messen?

`stat virtualtexturing` zeigt die Kosten der Szene und Zähler zu den Page Tables an. `stat virtualtexturememory` zeigt die Zähler für den Speicher virtueller Texturen in der Szene.

Kommentare und Forum sind auf Türkisch.Mitdiskutieren
+

Verwandte Meldungen