D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE-Enumeration (d3d12.h)

Gibt den Typ des Kopiervorgangs an, der beim Aufrufen von CopyRaytracingAccelerationStructure ausgeführt wird.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
} ;

Konstanten

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Wert: 0
Kopieren Sie eine Beschleunigungsstruktur, während Sie alle möglicherweise vorhandenen selbstreferenziellen Zeiger korrigieren, sodass das Ziel eine eigenständige Kopie 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.

WICHTIG

Der Quellspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Wert: 0x1
Erzeugt eine funktional äquivalente Beschleunigungsstruktur zur Quelle im Ziel, ähnlich dem Klonmodus, passt aber auch das Ziel in einen potenziell kleineren und sicherlich nicht größeren 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 Flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION erstellt wurde, andernfalls werden die Ergebnisse nicht definiert.

Für das Komprimieren der Geometrie muss die gesamte Beschleunigungsstruktur erstellt werden, weshalb Sie zuerst die Struktur erstellen und dann komprimieren müssen.

WICHTIG

Der Quellspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Wert: 0x2
Das Ziel nimmt das in D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER beschriebene Layout an. Die für das Ziel erforderliche Größe kann vorab aus EmitRaytracingAccelerationStructurePostbuildInfo abgerufen werden.

Dieser Modus ist nur für Tools wie PIX vorgesehen, obwohl nichts eine App daran hindert, ihn zu verwenden. Die Ausgabe ist im Wesentlichen die Umkehrung eines Beschleunigungsstrukturbuilds. Diese Gesamtstruktur mit reicht für Tools/PIX aus, um der Anwendung ein visuelles Gefühl 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.

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 teilweise aufgrund der inhärenten Komplexität der Berichterstellung genau die gleiche Struktur, die konzeptionell codiert ist. Beispiel: Achsenbündige Begrenzungsfelder (AABBs), die für prozedurale Grundtypen zurückgegeben werden, können im Volume konservativer (größer) sein und sich sogar von der Anzahl unterscheiden, die sich tatsächlich in der Darstellung der Beschleunigungsstruktur befindet. Geometrien mit jeweils eigener Geometriebeschreibung werden in derselben Reihenfolge wie in der ursprünglichen Beschleunigung angezeigt, da die Indizierungsberechnungen für Shadertabellen davon abhängen.


WICHTIG

Der Quellspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Zustand D3D12_RESOURCE_STATE_UNORDERED_ACCESS befinden.

Dieser Modus ist nur zulässig, wenn der Entwicklermodus im Betriebssystem aktiviert ist.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Wert: 0x3
Ziel nimmt das in der Dokumentation für D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC beschriebene Layout und größe an, selbst eine Struktur, die mit einem Aufruf von EmitRaytracingAccelerationStructurePostbuildInfo generiert wurde.

In diesem Modus wird eine Beschleunigungsstruktur serialisiert, sodass eine App oder Tools sie zur späteren Wiederverwendung in einer Datei speichern kann, in der Regel auf einem anderen Gerät instance, per Deserialisierung.

Beim Serialisieren einer Beschleunigungsstruktur auf oberster 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 ausgedrückt: Die Reihenfolge der Serialisierung von Beschleunigungsstrukturen spielt keine Rolle.

WICHTIG

Der Quellspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden. Der Zielspeicher muss sich im Zustand D3D12_RESOURCE_STATE_UNORDERED_ACCESS befinden.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Wert: 0x4
Die Quelle muss eine serialisierte Beschleunigungsstruktur sein, wobei alle Zeiger direkt hinter dem Header festgelegt sind, um auf ihre neuen Speicherorte zu verweisen. Weitere Informationen finden Sie unter D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

Das Ziel erhält eine Beschleunigungsstruktur, die funktional der Beschleunigungsstruktur entspricht, die ursprünglich serialisiert wurde. Es spielt keine Rolle, in welcher Reihenfolge Beschleunigungsstrukturen auf oberster und unterer Ebene deserialisiert werden, solange bis eine Beschleunigungsstruktur der obersten Ebene für Raytracing- oder Beschleunigungsstrukturupdates verwendet wird, die untere Beschleunigungsstrukturen vorhanden sind, auf die verwiesen wird.

Die Deserialisierung kann nur auf derselben Geräte- und Treiberversion ausgeführt werden, auf der die Daten serialisiert wurden. Andernfalls sind die Ergebnisse nicht definiert.

Dieser Modus ist nur für Tools wie PIX vorgesehen, obwohl nichts die Verwendung einer App verhindert, aber dieser Modus ist nur zulässig, wenn der Entwicklermodus im Betriebssystem aktiviert ist. Dieser Kopiervorgang 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.


WICHTIG

Der Quellspeicher muss sich im Zustand D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE befinden. Der Zielspeicher muss sich im Zustand D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE befinden.

Anforderungen

   
Kopfzeile d3d12.h