D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS-Enumeration (d3d12.h)

Gibt Flags für den Build einer Raytracingbeschleunigungsstruktur an. Verwenden Sie einen Wert aus dieser Enumeration mit der D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS-Struktur , die Eingaben für den Buildvorgang der Beschleunigungsstruktur bereitstellt.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Konstanten

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Wert: 0
Für den Build der Beschleunigungsstruktur wurden keine Optionen angegeben.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Wert: 0x1
Erstellen Sie die Beschleunigungsstruktur so, dass sie zukünftige Updates unterstützt (über das Flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE), anstatt dass die App die Struktur vollständig neu erstellen muss. Diese Option kann zu einem höheren Arbeitsspeicherverbrauch, zu einer höheren Buildzeit und einer geringeren Raytracingleistung führen. Zukünftige Updates sollten jedoch schneller sein, als die entsprechende Beschleunigungsstruktur von Grund auf neu zu erstellen.

Dieses Flag kann nur für einen anfänglichen Beschleunigungsstrukturbuild oder für ein Update festgelegt werden, bei dem die angegebene Quellbeschleunigungsstruktur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Anders ausgedrückt: Nachdem eine Beschleunigungsstruktur ohne D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE erstellt wurde, können keine anderen Beschleunigungsstrukturen über Updates daraus erstellt werden.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Wert: 0x2
Ermöglicht die Option zum Komprimieren der Beschleunigungsstruktur durch Aufrufen von CopyRaytracingAccelerationStructure im kompakten Modus, der mit D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT angegeben wird.

Diese Option kann zu einem höheren Arbeitsspeicherverbrauch und zu höheren Buildzeiten führen. Nach der zukünftigen Komprimierung sollte die resultierende Beschleunigungsstruktur jedoch einen geringeren Speicherbedarf beanspruchen als das Erstellen der Beschleunigungsstruktur von Grund auf.

Dieses Flag ist mit allen anderen Flags kompatibel. Wenn im Rahmen einer Beschleunigungsstrukturaktualisierung angegeben, muss die Quellbeschleunigungsstruktur ebenfalls mit diesem Flag erstellt worden sein. Anders ausgedrückt: Nachdem eine Beschleunigungsstruktur ohne D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION erstellt wurde, können keine anderen Beschleunigungsstrukturen über Updates erstellt werden, die D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION angeben.



Die Angabe ALLOW_COMPACTION kann die Größe der Vorkomprimierungsbeschleunigungsstruktur erhöhen, anstatt ALLOW_COMPACTION nicht anzugeben.



Wenn vor dem endgültigen Komprimieren mehrere inkrementelle Builds ausgeführt werden, kann es zu redundanten Komprimierungsvorgängen kommen.


Die für die kompakte Beschleunigungsstruktur erforderliche Größe kann vor der Komprimierung über EmitRaytracingAccelerationStructurePostbuildInfo abgefragt werden. Unter D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC finden Sie weitere Informationen zu den Eigenschaften der Größe der komprimierten Beschleunigungsstruktur.

Hinweis Wenn D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE angegeben wird, gibt es bestimmte Informationen, die in der Beschleunigungsstruktur beibehalten werden müssen, und die Komprimierung hilft nur so viel. Wenn die Pipeline jedoch weiß, dass die Beschleunigungsstruktur nicht mehr aktualisiert wird, kann sie die Struktur kompakter gestalten. Einige Apps können von der zweimaligen Komprimierung profitieren – einmal nach dem ersten Build und erneut, nachdem die Beschleunigungsstruktur in einen statischen Zustand versetzt wurde, wenn dies der Fall ist.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Wert: 0x4
Erstellen Sie eine hochwertige Beschleunigungsstruktur, die die Raytracingleistung auf Kosten zusätzlicher Buildzeit maximiert. In der Regel nimmt die Implementierung das 2-3-fache der Buildzeit in Anspruch als die Standardeinstellung, um eine bessere Ablaufverfolgungsleistung zu erzielen.

Dieses Flag wird insbesondere für statische Geometrie empfohlen. Es ist mit allen anderen Flags mit Ausnahme von D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD kompatibel.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Wert: 0x8
Erstellen Sie eine Beschleunigungsstruktur mit niedrigerer Qualität, und handeln Sie die Raytracing-Leistung für die Buildgeschwindigkeit. In der Regel nimmt die Implementierung 1/2 bis 1/3 der Buildzeit in Anspruch als die Standardeinstellung, mit einem Leistungseinbußen bei der Ablaufverfolgung.

Dieses Flag ist mit allen anderen Flags kompatibel, mit Ausnahme von D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Wert: 0x10
Minimieren Sie die Menge an Arbeitsspeicher, die beim Build der Beschleunigungsstruktur verwendet wird, sowie die Größe des Ergebnisses. Diese Option kann zu höheren Buildzeiten und/oder Raytracingzeiten führen. Dies ist orthogonal für das flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION und die explizite Beschleunigungsstrukturkomprimierung, die es ermöglicht. Das Kombinieren der Flags kann sowohl die anfängliche Beschleunigungsstruktur als auch das Ergebnis der Komprimierung bedeuten, dass sie weniger Arbeitsspeicher benötigt.

Die Auswirkungen der Verwendung dieses Flags für einen Build spiegeln sich im Ergebnis des Aufrufs von GetRaytracingAccelerationStructurePrebuildInfo wider, bevor der Build ausgeführt wird, um die Speicheranforderungen für den Build abzurufen.

Dieses Flag ist mit allen anderen Flags kompatibel.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Wert: 0x20
Führen Sie eine Beschleunigungsstrukturaktualisierung aus, anstatt von Grund auf neu zu erstellen. Dies ist schneller als ein vollständiger Build, kann sich jedoch negativ auf die Raytracingleistung auswirken, insbesondere wenn sich die Positionen der zugrunde liegenden Objekte gegenüber dem ursprünglichen Build der Beschleunigungsstruktur vor Updates erheblich geändert haben.

Wenn die Adressen der Quell- und Zielbeschleunigungsstrukturen identisch sind, wird die Aktualisierung an Ort und Stelle durchgeführt. Alle anderen Überlappungen von Adressbereichen der Quelle und des Ziels sind ungültig. Für nicht überlappende Quell- und Ziele ist die Struktur der Quellbeschleunigung unverändert. Die Arbeitsspeicheranforderung für die Struktur der Ausgabebeschleunigung ist identisch mit der in der Eingabebeschleunigungsstruktur.

Die Struktur der Quellbeschleunigung muss mit D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE erstellt worden sein.

Dieses Flag ist mit allen anderen Flags kompatibel. Die anderen Flags müssen abgesehen von D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE und D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE mit den Flags in der Quellbeschleunigungsstruktur übereinstimmen.

Beschleunigungsstrukturupdates können in unbegrenzter Folge ausgeführt werden, solange die Quellbeschleunigungsstruktur mit D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE erstellt wurde und die Flags für den Updatebuild weiterhin D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE angeben.

Anforderungen

Anforderung Wert
Header d3d12.h