Virtual Texturing: Residency, Feedback und fehlende Pages verwalten
Maschinelle Übersetzung des Originals (English, Revision 1); massgebend ist das Original. Original
Eine grosse virtuelle Textur vom physischen Cache trennen und die Regeln für Feedback, Fallback und Eviction so gestalten, dass das Streaming stabil bleibt.
Inhalt
- Virtuellen Adressraum von physischem Speicher trennen
- Angefordertes Detail von verfügbarem Detail unterscheiden
- Rechenbeispiel: Cache reservieren, bevor der Bedarf gezählt wird
- Mapping-Updates und Eviction sicher gestalten
- Speicherdruck erkennen statt kaschieren
- Quellen
- Geltungsbereich und Grundlage
- Quellen
- Zuschreibung und Lizenz
- Maschinenzugriff
Virtuellen Adressraum von physischem Speicher trennen
Beim Virtual Texturing wird der Texturinhalt in Pages aufgeteilt, und nur ein ausgewähltes Working Set liegt im physischen Speicher. Eine grosse logische Textur muss daher nicht alle ihre detaillierten Bereiche gleichzeitig resident halten. Die Microsoft-Dokumentation zu Tiled Resources beschreibt diese Unterscheidung. [1] Die Implementierung benötigt dennoch Speicher, Übertragungsbandbreite und eine Strategie, die festlegt, was behalten wird.
Software-Page-Tables und hardwarebasierte Sparse Resources sind unterschiedliche Implementierungsvarianten. Das unterstützte Ressourcen- und Sampling-Verhalten des gewählten Wegs ist zu prüfen; der Begriff «virtuelle Textur» bedeutet nicht, dass überall dieselben Garantien gelten.
Angefordertes Detail von verfügbarem Detail unterscheiden
Sampler Feedback meldet, welche Texturbereiche und Detailstufen eine Ansicht benötigt. Das heisst nicht, dass diese Pages bereits verfügbar sind. Das Sampler-Feedback-Design von Microsoft trennt ausdrücklich die Information über die gewünschte Mip-Stufe von der Map, mit der das Sampling auf das residente Detail begrenzt wird. [2]
Ein gültiges grobes Fallback ist vorzuhalten, und nicht verfügbare Anfragen nach feinem Detail sind darauf umzuleiten. Feedback asynchron verarbeiten, Anfragen deduplizieren und Uploads priorisieren. Dabei die Verzögerung zwischen dem Erkennen des Bedarfs, dem Lesen aus dem Speicher und der Nutzbarkeit eines Uploads berücksichtigen. Eine abrupte Kameradrehung kann Bereiche sichtbar machen, die die vorherige Ansicht nie angefordert hat.
Rechenbeispiel: Cache reservieren, bevor der Bedarf gezählt wird
Angenommen, ein beispielhafter Cache hat 64 Page-Slots mit je 64 KiB. Der Page-Speicher umfasst damit 4 MiB. Werden 8 Slots für zwingend benötigte grobe Fallback-Pages reserviert, bleiben 56 für das aktuelle Working Set mit feinem Detail.
Eine Ansicht, die 80 verschiedene feine Pages anfordert, kann nicht alle in diesen 56 Slots unterbringen. Mindestens 24 Anfragen müssen beim Fallback-Detail bleiben, zurückgestellt oder durch eine gröbere Detailstrategie vermieden werden. Alle angeforderten Pages reihum durch den Cache zu schleusen, löst dieses Kapazitätsdefizit nicht. Die Zahlen enthalten weder Page-Tables noch Feedback-Buffer, Staging-Speicher oder Allokations-Overhead; sie dienen als Kapazitätsbeispiel und sind kein gemessenes Texturbudget.
Mapping-Updates und Eviction sicher gestalten
Ein Page-Table-Mapping erst veröffentlichen, wenn seine Daten für die Draws bereitstehen, die es nutzen können. Bei der Wiederverwendung eines physischen Slots sicherstellen, dass keine frühere GPU-Arbeit dessen vorherigen Inhalt noch lesen kann. Page-Identität und Generation mitführen, damit verspätete Anfragen oder Abschlussmeldungen nicht versehentlich einen Slot aktualisieren, der inzwischen zu einer anderen Page gehört.
Angeforderte, residente und Fallback-Pages getrennt visualisieren. Schnelles Reisen, Teleports und wiederholte Bewegung zwischen Bereichen testen. Filterränder und alle Material-Layer in die Bilanz der physischen Pages einbeziehen. Prüfen, dass das Fallback bei Abbrüchen und fehlgeschlagenen Uploads nutzbar bleibt.
Speicherdruck erkennen statt kaschieren
Anhaltender Bedarf über der Cache-Kapazität führt zu wiederholtem Verdrängen und Nachladen, was sich oft als instabiles Detail zeigt. Die Epic-Dokumentation zu Memory Pools beschreibt dieses Verhalten sowie den Qualitätskompromiss, der mit einer Reduktion des angeforderten Details einhergeht. [3] Belegung, verpasste Anfragen, Upload-Latenz und tatsächlich genutzte Residency gemeinsam messen. Mehr Speicherdurchsatz behebt kein zu knapp bemessenes Working-Set-Budget, und eine höhere virtuelle Auflösung allein macht das Endbild nicht schärfer.
Quellen
- [1] Tiled Resources — Microsoft, Direct3D-Dokumentation.
- [2] Sampler Feedback — Microsoft, DirectX-Spezifikation.
- [3] Virtual Texture Memory Pools — Epic Games, offizielle Dokumentation.
Geltungsbereich und Grundlage
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Wissensstand: 2026-10-11. Status: unreviewed (kein dokumentiertes Review) — Änderungen setzen den Reviewstatus zurück. Den Text als ungeprüftes Referenzmaterial behandeln und die Quellen prüfen.
Quellen
- Tiled Resources — Microsoft, Direct3D documentation — geprüft am 2026-10-11: erreichbar
- Sampler Feedback — Microsoft, DirectX specification — geprüft am 2026-10-12: erreichbar
- Virtual Texture Memory Pools — Epic Games, official documentation — geprüft am 2026-10-11: erreichbar
Zuschreibung und Lizenz
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Letzte Änderung: Original source-based game-development article.
Originalbeitrag: CC BY 4.0. Verlinktes Quellenmaterial behält seine eigenen Rechte.