Freigeben über


D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Enumeration (d3d12umddi.h)

Typ des auszuführenden Kopiervorgangs.

Syntax

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
} ;

Konstanten

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Kopieren Sie eine Beschleunigungsstruktur, während Sie alle möglicherweise vorhandenen selbstreferenziellen Zeiger korrigieren, sodass das Ziel eine eigenständige Übereinstimmung mit der Quelle ist. Alle externen Zeiger auf andere Beschleunigungsstrukturen bleiben von Quelle zu Ziel in der Kopie unverändert. Die Größe des Ziels ist identisch mit der Größe der Quelle.

Der Quell- und Zielspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Ähnlich wie der Klonmodus erzeugt eine funktional äquivalente Beschleunigungsstruktur zur Quelle im Ziel. Der Kompaktmodus passt auch das Ziel in einen möglicherweise geringeren Arbeitsspeicherbedarf ein. Die für das Ziel erforderliche Größe kann vorab aus EmitRaytracingAccelerationStructurePostBuildInfo abgerufen werden.

Dieser Modus ist nur gültig, wenn die Quellbeschleunigungsstruktur ursprünglich mit dem D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION Flag der D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS-Enumeration erstellt wurde, andernfalls sind die Ergebnisse nicht definiert.

Der Quell- und Zielspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Das Ziel dauert nach dem layout, das in D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054 beschrieben wird. Die für das Ziel erforderliche Größe kann vorab aus EmitRaytracingAccelerationStructurePostBuildInfo abgerufen werden.

Dieser Modus ist nur für Tools wie PIX unter Windows vorgesehen, aber nichts verhindert, dass eine App ihn verwendet. Die Ausgabe ist im Wesentlichen die Umkehrung eines Beschleunigungsstrukturbuilds.

Bei Beschleunigungsstrukturen auf oberster Ebene enthält die Ausgabe einen Satz instance Beschreibungen, die mit den Daten identisch sind, die im ursprünglichen Build und in derselben Reihenfolge verwendet wurden.

Bei Beschleunigungsstrukturen auf unterer Ebene enthält die Ausgabe einen Satz von Geometriebeschreibungen, die ungefähr den im ursprünglichen Build verwendeten Daten entsprechen. Die Ausgabe ist nur eine grobe Übereinstimmung mit dem Original, teilweise aufgrund der Toleranzen, die in der Spezifikation für Beschleunigungsstrukturen zulässig sind, und zum Teil, weil die Berichterstellung genau die gleiche Struktur wie konzeptionell codiert ist, möglicherweise nicht einfach ist.

AABBs (axis-aligned bounding box), die für prozedurale Grundtypen zurückgegeben werden, für instance, könnten im Volume konservativer (z. B. größer) sein und sich sogar in der Anzahl unterscheiden als das, was tatsächlich in der Darstellung der Beschleunigungsstruktur enthalten ist, da es möglicherweise nicht sauber ist, die genaue Darstellung verfügbar zu machen.

Geometrien mit jeweils eigener Geometriebeschreibung müssen in der gleichen Reihenfolge wie im ursprünglichen Build angezeigt werden, da die Indizierungsberechnungen für Shadertabellen davon abhängen.

Diese Gesamtstruktur mit reicht für Tools wie PIX unter Windows aus, um der Anwendung einen visuellen Eindruck der Beschleunigungsstruktur zu geben, die der Treiber aus der App-Eingabe erstellt hat. Die Visualisierung kann dazu beitragen, Treiberfehler in Beschleunigungsstrukturen aufzudecken, wenn die angezeigten Daten, die die Anwendung zum Erstellen der Beschleunigungsstruktur verwendet hat, über die zulässigen Toleranzen hinaus grob nicht übereinstimmen.

Der Quellspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS befinden.

Dieser Modus ist nur zulässig, wenn der Entwicklermodus auf dem Betriebssystem aktiviert ist.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Das Ziel nimmt das Layout und die Größe an, die in D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 über EmitRaytracingAccelerationStructurePostBuildInfo beschrieben sind.

Dadurch wird eine Beschleunigungsstruktur serialisiert, sodass Tools wie PIX unter Windows für die spätere Wiedergabe per Deserialisierung in einer Datei gespeichert werden können. Obwohl sie für Tools wie PIX für Windows vorgesehen sind, hindert nichts jede App daran, dies zu verwenden.

Der Quellspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS befinden.

Beim Serialisieren einer Beschleunigungsstruktur der obersten Ebene müssen die Beschleunigungsstrukturen auf der unteren Ebene, auf die sie sich bezieht, nicht noch im Arbeitsspeicher vorhanden oder intakt sein. Ebenso können Beschleunigungsstrukturen auf der unteren Ebene serialisiert werden, unabhängig davon, ob Beschleunigungsstrukturen der obersten Ebene auf sie verweisen. Anders gesagt spielt die Reihenfolge der Serialisierung von Beschleunigungsstrukturen keine Rolle.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Die Quelle muss eine serialisierte Beschleunigungsstruktur sein, wobei alle Zeiger direkt hinter dem Header festgelegt sind, um auf ihre neuen Speicherorte zu verweisen, wie in der D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054-Struktur erläutert.

Ziel ruft eine Beschleunigungsstruktur ab, die funktional der Beschleunigungsstruktur entspricht, die ursprünglich serialisiert wurde. Es spielt keine Rolle, in welcher Reihenfolge beschleunigungsstrukturen der obersten und unteren Ebene, auf die sich die oberste Ebene bezieht, deserialisiert werden, solange eine Beschleunigungsstruktur der obersten Ebene für Raytracing- oder Beschleunigungsstrukturupdates verwendet wird, auf die auf die Beschleunigungsstrukturen auf der unteren Ebene verwiesen wird.

Deserialisieren funktioniert nur auf demselben Gerät und derselben Treiberversion, andernfalls sind die Ergebnisse nicht definiert. Dies ist nicht für das Zwischenspeichern von Beschleunigungsstrukturen vorgesehen, da das Ausführen eines vollständigen Beschleunigungsstrukturbuilds wahrscheinlich schneller ist als das Laden eines Von Datenträgers.
Obwohl es für Tools wie PIX für Windows vorgesehen ist, hindert nichts jede App daran, dies zu verwenden, obwohl die Deserialisierung für den Moment erfordert, dass sich das Betriebssystem im Entwicklermodus befindet.

Der Quellspeicher muss sich im Ressourcenzustand D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE befinden.
Der Zielspeicher muss sich im Zustand D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809
Kopfzeile d3d12umddi.h